diff --git a/backend/secfit/comments/views.py b/backend/secfit/comments/views.py index b74d0f208c9bcf06ee49817541d47742767f0b7d..1300f90569e5c47002e0a95c648d4206b2e0bcfd 100644 --- a/backend/secfit/comments/views.py +++ b/backend/secfit/comments/views.py @@ -1,50 +1,48 @@ -from django.shortcuts import render -from rest_framework import generics, mixins +"""Comments views.""" +from django.db.models import Q +from rest_framework import generics, mixins, permissions +from rest_framework.filters import OrderingFilter + from comments.models import Comment, Like -from rest_framework import permissions from comments.permissions import IsCommentVisibleToUser -from workouts.permissions import IsOwner, IsReadOnly from comments.serializers import CommentSerializer, LikeSerializer -from django.db.models import Q -from rest_framework.filters import OrderingFilter +from workouts.permissions import IsOwner, IsReadOnly + -# Create your views here. class CommentList( mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView ): - # queryset = Comment.objects.all() + """List all comments, or create a new comment.""" serializer_class = CommentSerializer permission_classes = [permissions.IsAuthenticated] filter_backends = [OrderingFilter] ordering_fields = ["timestamp"] def get(self, request, *args, **kwargs): + """Get a list of all comments.""" return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """Create a new comment.""" return self.create(request, *args, **kwargs) def perform_create(self, serializer): + """Create a new comment.""" serializer.save(owner=self.request.user) def get_queryset(self): + """Get the queryset for the list of comments.""" workout_pk = self.kwargs.get("pk") - qs = Comment.objects.none() + queryset = Comment.objects.none() if workout_pk: - qs = Comment.objects.filter(workout=workout_pk) + queryset = Comment.objects.filter(workout=workout_pk) elif self.request.user: - """A comment should be visible to the requesting user if any of the following hold: - - The comment is on a public visibility workout - - The comment was written by the user - - The comment is on a coach visibility workout and the user is the workout owner's coach - - The comment is on a workout owned by the user - """ # The code below is kind of duplicate of the one in ./permissions.py # We should replace it with a better solution. # Or maybe not. - - qs = Comment.objects.filter( + + queryset = Comment.objects.filter( Q(workout__visibility="PU") | Q(owner=self.request.user) | ( @@ -54,15 +52,16 @@ class CommentList( | Q(workout__owner=self.request.user) ).distinct() - return qs + return queryset + -# Details of comment class CommentDetail( mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Retrieve, update or delete a comment instance.""" queryset = Comment.objects.all() serializer_class = CommentSerializer permission_classes = [ @@ -70,50 +69,60 @@ class CommentDetail( ] def get(self, request, *args, **kwargs): + """Get a comment instance.""" return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """Update a comment instance.""" return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """Delete a comment instance.""" return self.destroy(request, *args, **kwargs) -# List of likes class LikeList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): + """List all likes, or create a new like.""" serializer_class = LikeSerializer permission_classes = [permissions.IsAuthenticated] def get(self, request, *args, **kwargs): + """Get a list of all likes.""" return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """Create a new like.""" return self.create(request, *args, **kwargs) def perform_create(self, serializer): + """Create a new like.""" serializer.save(owner=self.request.user) def get_queryset(self): + """Get the queryset for the list of likes.""" return Like.objects.filter(owner=self.request.user) -# Details of like class LikeDetail( mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Retrieve, update or delete a like instance.""" queryset = Like.objects.all() serializer_class = LikeSerializer permission_classes = [permissions.IsAuthenticated] _Detail = [] def get(self, request, *args, **kwargs): + """Get a like instance.""" return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """Update a like instance.""" return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """Delete a like instance.""" return self.destroy(request, *args, **kwargs) diff --git a/backend/secfit/media/workouts/31/Screenshot_2022-04-06_at_02.41.20.png b/backend/secfit/media/workouts/31/Screenshot_2022-04-06_at_02.41.20.png new file mode 100644 index 0000000000000000000000000000000000000000..1dfa5ec61d3255674985a7a305b3531ed7d3daf9 Binary files /dev/null and b/backend/secfit/media/workouts/31/Screenshot_2022-04-06_at_02.41.20.png differ diff --git a/backend/secfit/setup.cfg b/backend/secfit/setup.cfg new file mode 100644 index 0000000000000000000000000000000000000000..32c32bf1be14bd79946ff0980c3a2a19fecea4bb --- /dev/null +++ b/backend/secfit/setup.cfg @@ -0,0 +1,24 @@ +[flake8] +ignore = E203, E266, E501, W503 +max-line-length = 88 +max-complexity = 18 +select = B,C,E,F,W,T4 + +[pylint] +max-line-length = 88 + +[pylint.messages_control] +disable = C0330, C0326, C0301 + +# [isort] +# src_paths = ["backend"] +# multi_line_output=3 +# include_trailing_comma=True +# force_grid_wrap=0 +# use_parentheses=True +# line_length=88 + +# [tool:pytest] +# testpaths=tests +# DJANGO_SETTINGS_MODULE = config.settings.dev +# python_files = tests.py test_*.py *_tests.py \ No newline at end of file diff --git a/backend/secfit/users/admin.py b/backend/secfit/users/admin.py index fc0af23c4473e29bcc06045aebfdd0d21989d22d..48d97fca56e41e2bda838a6a1e113755e3792042 100644 --- a/backend/secfit/users/admin.py +++ b/backend/secfit/users/admin.py @@ -1,17 +1,18 @@ +"""Admin model for User""" from django.contrib import admin -from django.contrib.auth.admin import UserAdmin -from .models import Offer, AthleteFile from django.contrib.auth import get_user_model -from .forms import CustomUserChangeForm, CustomUserCreationForm +from django.contrib.auth.admin import UserAdmin -# Register your models here. +from .forms import CustomUserChangeForm, CustomUserCreationForm +from .models import AthleteFile, Offer class CustomUserAdmin(UserAdmin): + """Custom user admin model.""" + add_form = CustomUserCreationForm form = CustomUserChangeForm model = get_user_model() - # list_display = UserAdmin.list_display + ('coach',) fieldsets = UserAdmin.fieldsets + ((None, {"fields": ("coach",)}),) add_fieldsets = UserAdmin.add_fieldsets + ((None, {"fields": ("coach",)}),) diff --git a/backend/secfit/users/urls.py b/backend/secfit/users/urls.py index 507c27008e8b0997e486945a27bfe3afc55d89de..2a6820b1e4a5160d9d36fa83faf9d283ce154a71 100644 --- a/backend/secfit/users/urls.py +++ b/backend/secfit/users/urls.py @@ -1,6 +1,7 @@ -from django.urls import path, include +"""URL for User model.""" +from django.urls import path + from users import views -from rest_framework.urlpatterns import format_suffix_patterns urlpatterns = [ path("api/users/", views.UserList.as_view(), name="user-list"), diff --git a/backend/secfit/users/views.py b/backend/secfit/users/views.py index f5efef5c2ce82566ab380cecad344e3143c31813..42907ebcb2d7ccec1afbbcabca41f9039399e4ed 100644 --- a/backend/secfit/users/views.py +++ b/backend/secfit/users/views.py @@ -1,51 +1,60 @@ -import django -from rest_framework import mixins, generics -from workouts.mixins import CreateListModelMixin -from rest_framework import permissions +"""Views for the users app.""" +from django.contrib.auth import get_user_model +from django.db.models import Q +from rest_framework import generics, mixins, permissions +from rest_framework.parsers import FormParser, MultiPartParser +from rest_framework.permissions import ( + IsAuthenticatedOrReadOnly, +) + +from users.models import AthleteFile, Offer +from users.permissions import IsAthlete, IsCoach, IsCurrentUser from users.serializers import ( - UserSerializer, - OfferSerializer, AthleteFileSerializer, - UserPutSerializer, + OfferSerializer, UserGetSerializer, + UserPutSerializer, + UserSerializer, ) -from rest_framework.permissions import ( - AllowAny, - IsAdminUser, - IsAuthenticated, - IsAuthenticatedOrReadOnly, -) -from users.models import Offer, AthleteFile -from django.contrib.auth import get_user_model -from django.db.models import Q -from django.shortcuts import get_object_or_404 -from rest_framework.parsers import MultiPartParser, FormParser -from users.permissions import IsCurrentUser, IsAthlete, IsCoach +from workouts.mixins import CreateListModelMixin from workouts.permissions import IsOwner, IsReadOnly -# Create your views here. + class UserList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): + """List all users, or create a new user.""" + serializer_class = UserSerializer users = [] admins = [] def get(self, request, *args, **kwargs): + """Get a list of all users. + + If the user is an admin, return all users. + If the user is a coach, return all users that are athletes. + If the user is an athlete, return all users that are athletes. + """ + self.serializer_class = UserGetSerializer return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """Create a new user.""" + return self.create(request, *args, **kwargs) def get_queryset(self): - qs = get_user_model().objects.all() + """Get the queryset for the list of users.""" + + queryset = get_user_model().objects.all() if self.request.user: # Return the currently logged in user status = self.request.query_params.get("user", None) if status and status == "current": - qs = get_user_model().objects.filter(pk=self.request.user.pk) + queryset = get_user_model().objects.filter(pk=self.request.user.pk) - return qs + return queryset class UserDetail( @@ -54,12 +63,16 @@ class UserDetail( mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Retrieve, update or delete a user instance.""" + lookup_field_options = ["pk", "username"] serializer_class = UserSerializer queryset = get_user_model().objects.all() permission_classes = [permissions.IsAuthenticated & (IsCurrentUser | IsReadOnly)] def get_object(self): + """Get the object for the detail view.""" + for field in self.lookup_field_options: if field in self.kwargs: self.lookup_field = field @@ -68,63 +81,76 @@ class UserDetail( return super().get_object() def get(self, request, *args, **kwargs): + """Get a user instance.""" + self.serializer_class = UserGetSerializer return self.retrieve(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """Delete a user instance.""" + return self.destroy(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """Update a user instance.""" + self.serializer_class = UserPutSerializer return self.update(request, *args, **kwargs) def patch(self, request, *args, **kwargs): + """Update a user instance.""" + return self.partial_update(request, *args, **kwargs) class OfferList( mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView ): + """List all offers, or create a new offer.""" + permission_classes = [IsAuthenticatedOrReadOnly] serializer_class = OfferSerializer def get(self, request, *args, **kwargs): + """Get a list of all offers.""" return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """Create a new offer.""" return self.create(request, *args, **kwargs) def perform_create(self, serializer): + """Set the owner of the offer.""" serializer.save(owner=self.request.user) def get_queryset(self): - qs = Offer.objects.none() + """Get the queryset for the list of offers.""" result = Offer.objects.none() if self.request.user: - qs = Offer.objects.filter( + queryset = Offer.objects.filter( Q(owner=self.request.user) | Q(recipient=self.request.user) ).distinct() - qp = self.request.query_params - u = self.request.user + query_parameters = self.request.query_params + user = self.request.user # filtering by status (if provided) - s = qp.get("status", None) - if s is not None and self.request is not None: - qs = qs.filter(status=s) - if qp.get("status", None) is None: - qs = Offer.objects.filter(Q(owner=u)).distinct() + status = query_parameters.get("status", None) + if status is not None and self.request is not None: + queryset = queryset.filter(status=status) + if query_parameters.get("status", None) is None: + queryset = Offer.objects.filter(Q(owner=user)).distinct() # filtering by category (sent or received) - c = qp.get("category", None) - if c is not None and qp is not None: - if c == "sent": - qs = qs.filter(owner=u) - elif c == "received": - qs = qs.filter(recipient=u) - return qs - else: - return result + category = query_parameters.get("category", None) + if category is not None and query_parameters is not None: + if category == "sent": + queryset = queryset.filter(owner=user) + elif category == "received": + queryset = queryset.filter(recipient=user) + return queryset + + return result class OfferDetail( @@ -133,20 +159,26 @@ class OfferDetail( mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Retrieve, update or delete a offer instance.""" + permission_classes = [IsAuthenticatedOrReadOnly] queryset = Offer.objects.all() serializer_class = OfferSerializer def get(self, request, *args, **kwargs): + """Get a offer instance.""" return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """Update a offer instance.""" return self.update(request, *args, **kwargs) def patch(self, request, *args, **kwargs): + """Update a offer instance.""" return self.partial_update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """Delete a offer instance.""" return self.destroy(request, *args, **kwargs) @@ -156,29 +188,35 @@ class AthleteFileList( CreateListModelMixin, generics.GenericAPIView, ): + """List all athlete files, or create a new athlete file.""" + queryset = AthleteFile.objects.all() serializer_class = AthleteFileSerializer permission_classes = [permissions.IsAuthenticated & (IsAthlete | IsCoach)] parser_classes = [MultiPartParser, FormParser] def get(self, request, *args, **kwargs): + """Get a list of all athlete files.""" return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """Create a new athlete file.""" return self.create(request, *args, **kwargs) def perform_create(self, serializer): + """Set the owner of the athlete file.""" serializer.save(owner=self.request.user) def get_queryset(self): - qs = AthleteFile.objects.none() + """Get the queryset for the list of athlete files.""" + queryset = AthleteFile.objects.none() if self.request.user: - qs = AthleteFile.objects.filter( + queryset = AthleteFile.objects.filter( Q(athlete=self.request.user) | Q(owner=self.request.user) ).distinct() - return qs + return queryset class AthleteFileDetail( @@ -187,12 +225,16 @@ class AthleteFileDetail( mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Retrieve, update or delete a athlete file instance.""" + queryset = AthleteFile.objects.all() serializer_class = AthleteFileSerializer permission_classes = [permissions.IsAuthenticated & (IsAthlete | IsOwner)] def get(self, request, *args, **kwargs): + """Get a athlete file instance.""" return self.retrieve(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """Delete a athlete file instance.""" return self.destroy(request, *args, **kwargs) diff --git a/backend/secfit/workouts/migrations/0003_rememberme.py b/backend/secfit/workouts/migrations/0003_rememberme.py index 0f1e9ac4743d0acd3134e412aed5916fdcc6b7b6..06479495e6fb2f1047855ecc6decb2df3a2aee3f 100644 --- a/backend/secfit/workouts/migrations/0003_rememberme.py +++ b/backend/secfit/workouts/migrations/0003_rememberme.py @@ -6,15 +6,23 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('workouts', '0002_auto_20200910_0222'), + ("workouts", "0002_auto_20200910_0222"), ] operations = [ migrations.CreateModel( - name='RememberMe', + name="RememberMe", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('remember_me', models.CharField(max_length=500)), + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("remember_me", models.CharField(max_length=500)), ], ), ] diff --git a/backend/secfit/workouts/migrations/0004_auto_20211020_0950.py b/backend/secfit/workouts/migrations/0004_auto_20211020_0950.py index 2d83c6037c048480abd0f1c9d8f522101b7e9061..7cb3966974e3d064d71b0c53b5a21be7d773b762 100644 --- a/backend/secfit/workouts/migrations/0004_auto_20211020_0950.py +++ b/backend/secfit/workouts/migrations/0004_auto_20211020_0950.py @@ -6,23 +6,23 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('workouts', '0003_rememberme'), + ("workouts", "0003_rememberme"), ] operations = [ migrations.AddField( - model_name='exercise', - name='calories', + model_name="exercise", + name="calories", field=models.IntegerField(default=0), ), migrations.AddField( - model_name='exercise', - name='duration', + model_name="exercise", + name="duration", field=models.IntegerField(default=0), ), migrations.AddField( - model_name='exercise', - name='muscleGroup', - field=models.TextField(default='Legs'), + model_name="exercise", + name="muscleGroup", + field=models.TextField(default="Legs"), ), ] diff --git a/backend/secfit/workouts/models.py b/backend/secfit/workouts/models.py index 6556b274994bd73edc042542ae65826be90c02fc..dc5c0d7e0f0fe8d5f53e6f2adba9219a3c226135 100644 --- a/backend/secfit/workouts/models.py +++ b/backend/secfit/workouts/models.py @@ -2,27 +2,9 @@ log workouts (Workout), which contain instances (ExerciseInstance) of various type of exercises (Exercise). The user can also upload files (WorkoutFile) . """ -import os -from django.db import models -from django.core.files.storage import FileSystemStorage -from django.conf import settings from django.contrib.auth import get_user_model - - -class OverwriteStorage(FileSystemStorage): - """Filesystem storage for overwriting files. Currently unused.""" - - def get_available_name(self, name, max_length=None): - """https://djangosnippets.org/snippets/976/ - Returns a filename that's free on the target storage system, and - available for new content to be written to. - - Args: - name (str): Name of the file - max_length (int, optional): Maximum length of a file name. Defaults to None. - """ - if self.exists(name): - os.remove(os.path.join(settings.MEDIA_ROOT, name)) +from django.core.files.storage import FileSystemStorage +from django.db import models # Create your models here. @@ -64,7 +46,13 @@ class Workout(models.Model): # Retrieve average rating for workout on demand @property def average_rating(self): - return Workout.objects.filter(comments__workout=self.id).aggregate(average_rating=models.Avg('comments__rating'))['average_rating'] + """ + Returns: + float: Average rating of workout + """ + return Workout.objects.filter(comments__workout=self.id).aggregate( + average_rating=models.Avg("comments__rating") + )["average_rating"] class Meta: ordering = ["-date"] @@ -76,7 +64,8 @@ class Workout(models.Model): class Exercise(models.Model): """Django model for an exercise type that users can create. - Each exercise instance must have an exercise type, e.g., Pushups, Crunches, or Lunges. + Each exercise instance must have an exercise type, e.g., Pushups, Crunches, or + Lunges. Attributes: name: Name of the exercise type @@ -109,7 +98,8 @@ class ExerciseInstance(models.Model): workout: The workout associated with this exercise instance exercise: The exercise type of this instance sets: The number of sets the owner will perform/performed - number: The number of repetitions in each set the owner will perform/performed + number: The number of repetitions in each set the owner will + perform/performed """ workout = models.ForeignKey( diff --git a/backend/secfit/workouts/serializers.py b/backend/secfit/workouts/serializers.py index 9b424264f346609d66e9fe20897053b6dfa51eb7..1a8dbddc83574e787fafcaa1dd9b4d92bf9d6ccb 100644 --- a/backend/secfit/workouts/serializers.py +++ b/backend/secfit/workouts/serializers.py @@ -2,7 +2,8 @@ """ from rest_framework import serializers from rest_framework.serializers import HyperlinkedRelatedField -from workouts.models import Workout, Exercise, ExerciseInstance, WorkoutFile, RememberMe + +from workouts.models import Exercise, ExerciseInstance, RememberMe, Workout, WorkoutFile class ExerciseInstanceSerializer(serializers.HyperlinkedModelSerializer): @@ -133,10 +134,15 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer): instance.save() # Handle ExerciseInstances + self.handle_exercise_instance(exercise_instances, exercise_instances_data, instance) + + # Handle WorkoutFiles + self.handle_workout_files(validated_data, instance) - # This updates existing exercise instances without adding or deleting object. - # zip() will yield n 2-tuples, where n is - # min(len(exercise_instance), len(exercise_instance_data)) + return instance + + def handle_exercise_instance(self, exercise_instances, exercise_instances_data, instance): + """Handles updating ExerciseInstances.""" for exercise_instance, exercise_instance_data in zip( exercise_instances.all(), exercise_instances_data ): @@ -163,8 +169,8 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer): for i in range(len(exercise_instances_data), len(exercise_instances.all())): exercise_instances.all()[i].delete() - # Handle WorkoutFiles - + def handle_workout_files(self, validated_data, instance): + """Handles updating WorkoutFiles.""" if "files" in validated_data: files_data = validated_data.pop("files") files = instance.files @@ -185,9 +191,8 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer): for i in range(len(files_data), len(files.all())): files.all()[i].delete() - return instance - - def get_owner_username(self, obj): + @classmethod + def get_owner_username(cls, obj): """Returns the owning user's username Args: @@ -214,7 +219,17 @@ class ExerciseSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Exercise - fields = ["url", "id", "name", "description", "duration", "calories", "muscleGroup", "unit", "instances"] + fields = [ + "url", + "id", + "name", + "description", + "duration", + "calories", + "muscleGroup", + "unit", + "instances", + ] class RememberMeSerializer(serializers.HyperlinkedModelSerializer): diff --git a/backend/secfit/workouts/tests.py b/backend/secfit/workouts/tests.py index 46a00990df17c33af986debbaa2825ed38869ef4..884361a1967cefd61256d33e7bd6a0cc976bbb8e 100644 --- a/backend/secfit/workouts/tests.py +++ b/backend/secfit/workouts/tests.py @@ -14,7 +14,6 @@ from comments.models import Comment class UserPermissionTest(TestCase): - def setUp(self): self.coach_attr = { @@ -42,33 +41,39 @@ class UserPermissionTest(TestCase): } self.athlete = User.objects.create(**self.athlete_attr) - self.public_workout = Workout.objects.create(name='public_workout', - date=timezone.now(), - notes='text', - owner=self.athlete, - visibility="PU") - self.coach_workout = Workout.objects.create(name='coach_workout', - date=timezone.now(), - notes='text', - owner=self.athlete, - visibility="CO") - - self.comment_public = Comment.objects.create(owner=self.athlete, - workout=self.public_workout, - content='content') - self.comment_coach = Comment.objects.create(owner=self.athlete, - workout=self.coach_workout, - content='content') + self.public_workout = Workout.objects.create( + name="public_workout", + date=timezone.now(), + notes="text", + owner=self.athlete, + visibility="PU", + ) + self.coach_workout = Workout.objects.create( + name="coach_workout", + date=timezone.now(), + notes="text", + owner=self.athlete, + visibility="CO", + ) + + self.comment_public = Comment.objects.create( + owner=self.athlete, workout=self.public_workout, content="content" + ) + self.comment_coach = Comment.objects.create( + owner=self.athlete, workout=self.coach_workout, content="content" + ) # Set up base request self.factory = APIRequestFactory() - self.request = self.factory.post('', None) + self.request = self.factory.post("", None) # Instantiate permission objects self.is_owner = ps.IsOwner() self.is_owner_of_workout = ps.IsOwnerOfWorkout() self.is_coach_and_visible_to_coach = ps.IsCoachAndVisibleToCoach() - self.is_coach_of_workout_and_visible_to_coach = ps.IsCoachOfWorkoutAndVisibleToCoach() + self.is_coach_of_workout_and_visible_to_coach = ( + ps.IsCoachOfWorkoutAndVisibleToCoach() + ) self.is_public = ps.IsPublic() self.is_workout_public = ps.IsWorkoutPublic() self.is_read_only = ps.IsReadOnly() @@ -76,71 +81,119 @@ class UserPermissionTest(TestCase): def test_is_owner_true(self): # Assert that owner has permission self.request.user = self.athlete - self.assertTrue(self.is_owner.has_object_permission(request=self.request, view=None, obj=self.public_workout)) + self.assertTrue( + self.is_owner.has_object_permission( + request=self.request, view=None, obj=self.public_workout + ) + ) def test_is_owner_false(self): # Assert that a non owner does not have permission self.request.user = self.coach - self.assertFalse(self.is_owner.has_object_permission(request=self.request, view=None, obj=self.public_workout)) + self.assertFalse( + self.is_owner.has_object_permission( + request=self.request, view=None, obj=self.public_workout + ) + ) def test_is_owner_of_workout_has_permission_true_owner(self): # Check that requesting user is owner of new object - data = {'workout': '1/1/1/1'} - request = self.factory.post('', {'workout': self.public_workout}) + data = {"workout": "1/1/1/1"} + request = self.factory.post("", {"workout": self.public_workout}) request.data = data request.user = self.athlete - self.assertTrue(self.is_owner_of_workout.has_permission(request=request, view=None)) + self.assertTrue( + self.is_owner_of_workout.has_permission(request=request, view=None) + ) def test_is_owner_of_workout_has_permission_no_workout(self): # Check that requesting user is owner of new object data = {} - request = self.factory.post('', {'workout': self.public_workout}) + request = self.factory.post("", {"workout": self.public_workout}) request.data = data request.user = self.athlete - self.assertFalse(self.is_owner_of_workout.has_permission(request=request, view=None)) + self.assertFalse( + self.is_owner_of_workout.has_permission(request=request, view=None) + ) def test_is_owner_of_workout_has_permission_get(self): # Check that requesting user is owner of new object - request = self.factory.get('', {'workout': self.public_workout}) - self.assertTrue(self.is_owner_of_workout.has_permission(request=request, view=None)) - + request = self.factory.get("", {"workout": self.public_workout}) + self.assertTrue( + self.is_owner_of_workout.has_permission(request=request, view=None) + ) def test_is_owner_of_workout_has_object_permission(self): # Check that requesting user is owner of new object self.request.user = self.athlete - self.assertTrue(self.is_owner_of_workout.has_object_permission(request=self.request, view=None, obj=self.comment_public)) + self.assertTrue( + self.is_owner_of_workout.has_object_permission( + request=self.request, view=None, obj=self.comment_public + ) + ) def test_is_coach_and_visible_to_coach_public_workout(self): # Assert that owner's coach can view workout: Public visibilty self.request.user = self.coach - self.assertTrue(self.is_coach_and_visible_to_coach.has_object_permission(request=self.request, view=None, obj=self.public_workout)) - - + self.assertTrue( + self.is_coach_and_visible_to_coach.has_object_permission( + request=self.request, view=None, obj=self.public_workout + ) + ) + def test_is_coach_and_visible_to_coach_coach_workout(self): # Assert that owner's coach can view workout: Coach visbility self.request.user = self.coach - self.assertTrue(self.is_coach_and_visible_to_coach.has_object_permission(request=self.request, view=None, obj=self.coach_workout)) - + self.assertTrue( + self.is_coach_and_visible_to_coach.has_object_permission( + request=self.request, view=None, obj=self.coach_workout + ) + ) + def test_is_coach_of_workout_and_visible_to_coach_publiic(self): # Assert that coach has permission to view workout from comment: public visibilty self.request.user = self.coach - self.assertTrue(self.is_coach_of_workout_and_visible_to_coach.has_object_permission(request=self.request, view=None, obj=self.comment_public)) + self.assertTrue( + self.is_coach_of_workout_and_visible_to_coach.has_object_permission( + request=self.request, view=None, obj=self.comment_public + ) + ) def test_is_coach_of_workout_and_visible_to_coach_publiic(self): # Assert that coach has permission to view workout from comment: public visibilty self.request.user = self.coach - self.assertTrue(self.is_coach_of_workout_and_visible_to_coach.has_object_permission(request=self.request, view=None, obj=self.comment_coach)) + self.assertTrue( + self.is_coach_of_workout_and_visible_to_coach.has_object_permission( + request=self.request, view=None, obj=self.comment_coach + ) + ) def test_is_public(self): - self.assertTrue(self.is_public.has_object_permission(request=self.request, view=None, obj=self.public_workout)) + self.assertTrue( + self.is_public.has_object_permission( + request=self.request, view=None, obj=self.public_workout + ) + ) def test_is_workout_public(self): - self.assertTrue(self.is_workout_public.has_object_permission(request=self.request, view=None, obj=self.comment_public)) + self.assertTrue( + self.is_workout_public.has_object_permission( + request=self.request, view=None, obj=self.comment_public + ) + ) def test_is_read_only_post(self): - self.request = self.factory.post('', None) - self.assertFalse(self.is_read_only.has_object_permission(request=self.request, view=None, obj=None)) + self.request = self.factory.post("", None) + self.assertFalse( + self.is_read_only.has_object_permission( + request=self.request, view=None, obj=None + ) + ) def test_is_read_only_get(self): - self.request = self.factory.get('', None) - self.assertTrue(self.is_read_only.has_object_permission(request=self.request, view=None, obj=None)) + self.request = self.factory.get("", None) + self.assertTrue( + self.is_read_only.has_object_permission( + request=self.request, view=None, obj=None + ) + ) diff --git a/backend/secfit/workouts/urls.py b/backend/secfit/workouts/urls.py index 7c46a3f1ff311edc25dd455bb85780c1a1644738..430e65eac81a8b425dd476342a3005a153276326 100644 --- a/backend/secfit/workouts/urls.py +++ b/backend/secfit/workouts/urls.py @@ -9,7 +9,7 @@ from rest_framework_simplejwt.views import ( # This is a bit messy and will need to change urlpatterns = format_suffix_patterns( [ - path("", views.api_root), + # path("", views.api_root), path("api/workouts/", views.WorkoutList.as_view(), name="workout-list"), path( "api/workouts//", diff --git a/backend/secfit/workouts/views.py b/backend/secfit/workouts/views.py index efddf40454376b23d233f9fe2cecaf9da43fddb8..e48d81e25fb82abc40b2ffeede9464ec3d9b90fe 100644 --- a/backend/secfit/workouts/views.py +++ b/backend/secfit/workouts/views.py @@ -1,80 +1,73 @@ """Contains views for the workouts application. These are mostly class-based views. """ -from rest_framework import generics, mixins -from rest_framework import permissions +import base64 +import pickle +from collections import namedtuple -from rest_framework.parsers import ( - JSONParser, -) -from rest_framework.decorators import api_view -from rest_framework.response import Response -from rest_framework.reverse import reverse +from django.core.exceptions import PermissionDenied +from django.core.signing import Signer from django.db.models import Q -from rest_framework import filters +from rest_framework import filters, generics, mixins, permissions +from rest_framework.parsers import JSONParser +from rest_framework.response import Response +from rest_framework_simplejwt.tokens import RefreshToken + +from workouts.mixins import CreateListModelMixin +from workouts.models import Exercise, ExerciseInstance, Workout, WorkoutFile from workouts.parsers import MultipartJsonParser from workouts.permissions import ( - IsOwner, IsCoachAndVisibleToCoach, - IsOwnerOfWorkout, IsCoachOfWorkoutAndVisibleToCoach, - IsReadOnly, + IsOwner, + IsOwnerOfWorkout, IsPublic, + IsReadOnly, IsWorkoutPublic, ) -from workouts.mixins import CreateListModelMixin -from workouts.models import Workout, Exercise, ExerciseInstance, WorkoutFile -from workouts.serializers import WorkoutSerializer, ExerciseSerializer -from workouts.serializers import RememberMeSerializer -from workouts.serializers import ExerciseInstanceSerializer, WorkoutFileSerializer -from django.core.exceptions import PermissionDenied -from rest_framework_simplejwt.tokens import RefreshToken -from rest_framework.response import Response -import json -from collections import namedtuple -import base64, pickle -from django.core.signing import Signer +from workouts.serializers import ( + ExerciseInstanceSerializer, + ExerciseSerializer, + RememberMeSerializer, + WorkoutFileSerializer, + WorkoutSerializer, +) -@api_view(["GET"]) -def api_root(request, format=None): - return Response( - { - "users": reverse("user-list", request=request, format=format), - "workouts": reverse("workout-list", request=request, format=format), - "exercises": reverse("exercise-list", request=request, format=format), - "exercise-instances": reverse( - "exercise-instance-list", request=request, format=format - ), - "workout-files": reverse( - "workout-file-list", request=request, format=format - ), - "comments": reverse("comment-list", request=request, format=format), - "likes": reverse("like-list", request=request, format=format), - } - ) - - -# Allow users to save a persistent session in their browser class RememberMe( mixins.ListModelMixin, mixins.CreateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView, ): + """ + This view allows users to save a persistent session in their browser. + """ serializer_class = RememberMeSerializer def get(self, request): - if request.user.is_authenticated == False: + """ + Get the current user's remember me cookie. + """ + + if not request.user.is_authenticated: raise PermissionDenied - else: - return Response({"remember_me": self.rememberme()}) + return Response({"remember_me": self.rememberme()}) def post(self, request): - cookieObject = namedtuple("Cookies", request.COOKIES.keys())( + """ + Create a new remember me cookie. + + This is a bit of a hack, but it works. + + The user is signed in, but the remember me cookie is not. + + The user is then redirected to this view, which creates a new remember me cookie. + """ + cookie_object = namedtuple("Cookies", request.COOKIES.keys())( *request.COOKIES.values() ) - user = self.get_user(cookieObject) + user = self.get_user(cookie_object) refresh = RefreshToken.for_user(user) return Response( { @@ -83,19 +76,45 @@ class RememberMe( } ) - def get_user(self, cookieObject): - decode = base64.b64decode(cookieObject.remember_me) + def get_user(self, cookie_object): + """ + Get the user from the remember me cookie. + + Args: + cookieObject (namedtuple): The namedtuple of the remember me cookie. + + Returns: + User: The user from the remember me cookie. + """ + decode = base64.b64decode(cookie_object.remember_me) user, sign = pickle.loads(decode) # Validate signature if sign == self.sign_user(user): return user + return None def rememberme(self): + """ + Get the current user's remember me cookie. + + Returns: + str: The current user's remember me cookie. + """ creds = [self.request.user, self.sign_user(str(self.request.user))] return base64.b64encode(pickle.dumps(creds)) - def sign_user(self, username): + @classmethod + def sign_user(cls, username): + """ + Sign the user's username. + + Args: + username (str): The username to sign. + + Returns: + str: The signed username. + """ signer = Signer() signed_user = signer.sign(username) return signed_user @@ -122,27 +141,61 @@ class WorkoutList( ordering_fields = ["name", "date", "owner__username"] def get(self, request, *args, **kwargs): + """ + Get a list of all workouts. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """ + Create a new workout. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.create(request, *args, **kwargs) def perform_create(self, serializer): + """ + Override the default perform_create method to set the owner of the workout. + + Args: + serializer (WorkoutSerializer): The serializer for the workout. + """ serializer.save(owner=self.request.user) def get_queryset(self): - qs = Workout.objects.none() + """ + Get the queryset for the workout list. + + Returns: + QuerySet: The queryset for the workout list. + """ + queryset = Workout.objects.none() if self.request.user: # A workout should be visible to the requesting user if any of the following hold: # - The workout has public visibility # - The owner of the workout is the requesting user # - The workout has coach visibility and the requesting user is the owner's coach - qs = Workout.objects.filter( + queryset = Workout.objects.filter( Q(visibility="PU") | (Q(visibility="CO") & Q(owner__coach=self.request.user)) ).distinct() - return qs + return queryset class WorkoutDetail( @@ -165,12 +218,45 @@ class WorkoutDetail( parser_classes = [MultipartJsonParser, JSONParser] def get(self, request, *args, **kwargs): + """ + Get the details of a workout. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """ + Update the details of a workout. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """ + Delete a workout. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.destroy(request, *args, **kwargs) @@ -188,9 +274,31 @@ class ExerciseList( permission_classes = [permissions.IsAuthenticated] def get(self, request, *args, **kwargs): + """ + Get a list of all exercises. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """ + Create a new exercise. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.create(request, *args, **kwargs) @@ -210,15 +318,59 @@ class ExerciseDetail( permission_classes = [permissions.IsAuthenticated] def get(self, request, *args, **kwargs): + """ + Get the details of an exercise. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """ + Update the details of an exercise. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.update(request, *args, **kwargs) def patch(self, request, *args, **kwargs): + """ + Update the details of an exercise. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.partial_update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """ + Delete an exercise. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.destroy(request, *args, **kwargs) @@ -228,21 +380,51 @@ class ExerciseInstanceList( CreateListModelMixin, generics.GenericAPIView, ): - """Class defining the web response for the creation""" + """Class defining the web response for the creation + + HTTP methods: GET, POST""" serializer_class = ExerciseInstanceSerializer permission_classes = [permissions.IsAuthenticated & IsOwnerOfWorkout] def get(self, request, *args, **kwargs): + """ + Get a list of all exercise instances. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """ + Create a new exercise instance. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.create(request, *args, **kwargs) def get_queryset(self): - qs = ExerciseInstance.objects.none() + """ + Get the queryset for the list of exercise instances. + + Returns: + QuerySet: The queryset. + """ + queryset = ExerciseInstance.objects.none() if self.request.user: - qs = ExerciseInstance.objects.filter( + queryset = ExerciseInstance.objects.filter( Q(workout__owner=self.request.user) | ( (Q(workout__visibility="CO") | Q(workout__visibility="PU")) @@ -250,7 +432,7 @@ class ExerciseInstanceList( ) ).distinct() - return qs + return queryset class ExerciseInstanceDetail( @@ -259,6 +441,10 @@ class ExerciseInstanceDetail( mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Class defining the web response for the details of an individual Exercise + instance. + + HTTP methods: GET, PUT, PATCH, DELETE""" serializer_class = ExerciseInstanceSerializer permission_classes = [ permissions.IsAuthenticated @@ -269,15 +455,59 @@ class ExerciseInstanceDetail( ] def get(self, request, *args, **kwargs): + """ + Get the details of an exercise instance. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): + """ + Update the details of an exercise instance. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.update(request, *args, **kwargs) def patch(self, request, *args, **kwargs): + """ + Update the details of an exercise instance. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.partial_update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """ + Delete an exercise instance. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.destroy(request, *args, **kwargs) @@ -287,6 +517,9 @@ class WorkoutFileList( CreateListModelMixin, generics.GenericAPIView, ): + """Class defining the web response for the creation + + HTTP methods: GET, POST""" queryset = WorkoutFile.objects.all() serializer_class = WorkoutFileSerializer @@ -294,18 +527,55 @@ class WorkoutFileList( parser_classes = [MultipartJsonParser, JSONParser] def get(self, request, *args, **kwargs): + """ + Get a list of all workout files. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): + """ + Create a new workout file. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.create(request, *args, **kwargs) def perform_create(self, serializer): + """ + Perform the creation of a workout file. + + Args: + serializer (WorkoutFileSerializer): The serializer. + + Returns: + WorkoutFile: The workout file. + """ serializer.save(owner=self.request.user) def get_queryset(self): - qs = WorkoutFile.objects.none() + """ + Get the queryset for the list of workout files. + + Returns: + QuerySet: The queryset. + """ + queryset = WorkoutFile.objects.none() if self.request.user: - qs = WorkoutFile.objects.filter( + queryset = WorkoutFile.objects.filter( Q(owner=self.request.user) | Q(workout__owner=self.request.user) | ( @@ -314,7 +584,7 @@ class WorkoutFileList( ) ).distinct() - return qs + return queryset class WorkoutFileDetail( @@ -323,6 +593,10 @@ class WorkoutFileDetail( mixins.DestroyModelMixin, generics.GenericAPIView, ): + """Class defining the web response for the details of an individual Workout + file. + + HTTP methods: GET, PUT, PATCH, DELETE""" queryset = WorkoutFile.objects.all() serializer_class = WorkoutFileSerializer @@ -336,7 +610,29 @@ class WorkoutFileDetail( ] def get(self, request, *args, **kwargs): + """ + Get the details of an workout file. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.retrieve(request, *args, **kwargs) def delete(self, request, *args, **kwargs): + """ + Delete an workout file. + + Args: + request (Request): The HTTP request. + *args: Variable length argument list. + **kwargs: Arbitrary keyword arguments. + + Returns: + Response: The HTTP response. + """ return self.destroy(request, *args, **kwargs) diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/AUTHORS b/backend/venv/Lib/site-packages/Django-3.1.dist-info/AUTHORS deleted file mode 100644 index bcf23acb169b8fce6965578cf58e56765e38b828..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/AUTHORS +++ /dev/null @@ -1,979 +0,0 @@ -Django was originally created in late 2003 at World Online, the Web division -of the Lawrence Journal-World newspaper in Lawrence, Kansas. - -Here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- -people who have submitted patches, reported bugs, added translations, helped -answer newbie questions, and generally made Django that much better: - - Aaron Cannon - Aaron Swartz - Aaron T. Myers - Abeer Upadhyay - Abhijeet Viswa - Abhinav Patil - Abhishek Gautam - Adam Allred - Adam Bogdał - Adam Donaghy - Adam Johnson - Adam Malinowski - Adam Vandenberg - Adiyat Mubarak - Adnan Umer - Adrian Holovaty - Adrien Lemaire - Afonso Fernández Nogueira - AgarFu - Ahmad Alhashemi - Ahmad Al-Ibrahim - Ahmed Eltawela - ajs - Akash Agrawal - Akis Kesoglou - Aksel Ethem - Akshesh Doshi - alang@bright-green.com - Alasdair Nicol - Albert Wang - Alcides Fonseca - Aldian Fazrihady - Aleksandra Sendecka - Aleksi Häkli - Alexander Dutton - Alexander Myodov - Alexandr Tatarinov - Alex Aktsipetrov - Alex Becker - Alex Couper - Alex Dedul - Alex Gaynor - Alex Hill - Alex Ogier - Alex Robbins - Alexey Boriskin - Alexey Tsivunin - Aljosa Mohorovic - Amit Chakradeo - Amit Ramon - Amit Upadhyay - A. Murat Eren - Ana Belen Sarabia - Ana Krivokapic - Andi Albrecht - André Ericson - Andrei Kulakov - Andreas - Andreas Mock - Andreas Pelme - Andrés Torres Marroquín - Andrew Brehaut - Andrew Clark - Andrew Durdin - Andrew Godwin - Andrew Pinkham - Andrews Medina - Andriy Sokolovskiy - Andy Dustman - Andy Gayton - andy@jadedplanet.net - Anssi Kääriäinen - ant9000@netwise.it - Anthony Briggs - Anton Samarchyan - Antoni Aloy - Antonio Cavedoni - Antonis Christofides - Antti Haapala - Antti Kaihola - Anubhav Joshi - Aram Dulyan - arien - Armin Ronacher - Aron Podrigal - Artem Gnilov - Arthur - Arthur Koziel - Arthur Rio - Arvis Bickovskis - Aryeh Leib Taurog - A S Alam - Asif Saif Uddin - atlithorn - Audrey Roy - av0000@mail.ru - Axel Haustant - Aymeric Augustin - Bahadır Kandemir - Baishampayan Ghose - Baptiste Mispelon - Barry Pederson - Bartolome Sanchez Salado - Bartosz Grabski - Bashar Al-Abdulhadi - Bastian Kleineidam - Batiste Bieler - Batman - Batuhan Taskaya - Baurzhan Ismagulov - Ben Dean Kawamura - Ben Firshman - Ben Godfrey - Benjamin Wohlwend - Ben Khoo - Ben Slavin - Ben Sturmfels - Berker Peksag - Bernd Schlapsi - Bernhard Essl - berto - Bill Fenner - Bjørn Stabell - Bo Marchman - Bogdan Mateescu - Bojan Mihelac - Bouke Haarsma - Božidar Benko - Brad Melin - Brandon Chinn - Brant Harris - Brendan Hayward - Brendan Quinn - Brenton Simpson - Brett Cannon - Brett Hoerner - Brian Beck - Brian Fabian Crain - Brian Harring - Brian Ray - Brian Rosner - Bruce Kroeze - Bruno Alla - Bruno Renié - brut.alll@gmail.com - Bryan Chow - Bryan Veloso - bthomas - btoll@bestweb.net - C8E - Caio Ariede - Calvin Spealman - Cameron Curry - Cameron Knight (ckknight) - Can Burak Çilingir - Can Sarıgöl - Carl Meyer - Carles Pina i Estany - Carlos Eduardo de Paula - Carlos Matías de la Torre - Carlton Gibson - cedric@terramater.net - Chad Whitman - ChaosKCW - Charlie Leifer - charly.wilhelm@gmail.com - Chason Chaffin - Cheng Zhang - Chris Adams - Chris Beaven - Chris Bennett - Chris Cahoon - Chris Chamberlin - Chris Jerdonek - Chris Jones - Chris Lamb - Chris Streeter - Christian Barcenas - Christian Metts - Christian Oudard - Christian Tanzer - Christoffer Sjöbergsson - Christophe Pettus - Christopher Adams - Christopher Babiak - Christopher Lenz - Christoph Mędrela - Chris Wagner - Chris Wesseling - Chris Wilson - Claude Paroz - Clint Ecker - colin@owlfish.com - Colin Wood - Collin Anderson - Collin Grady - Colton Hicks - Craig Blaszczyk - crankycoder@gmail.com - Curtis Maloney (FunkyBob) - dackze+django@gmail.com - Dagur Páll Ammendrup - Dane Springmeyer - Dan Fairs - Daniel Alves Barbosa de Oliveira Vaz - Daniel Duan - Daniele Procida - Daniel Greenfeld - dAniel hAhler - Daniel Jilg - Daniel Lindsley - Daniel Poelzleithner - Daniel Pyrathon - Daniel Roseman - Daniel Tao - Daniel Wiesmann - Danilo Bargen - Dan Johnson - Dan Palmer - Dan Poirier - Dan Stephenson - Dan Watson - dave@thebarproject.com - David Ascher - David Avsajanishvili - David Blewett - David Brenneman - David Cramer - David Danier - David Eklund - David Foster - David Gouldin - david@kazserve.org - David Krauth - David Larlet - David Reynolds - David Sanders - David Schein - David Tulig - David Wobrock - Davide Ceretti - Deep L. Sukhwani - Deepak Thukral - Denis Kuzmichyov - Dennis Schwertel - Derek Willis - Deric Crago - deric@monowerks.com - Deryck Hodge - Dimitris Glezos - Dirk Datzert - Dirk Eschler - Dmitri Fedortchenko - Dmitry Jemerov - dne@mayonnaise.net - Dolan Antenucci - Donald Harvey - Donald Stufft - Don Spaulding - Doug Beck - Doug Napoleone - dready - dusk@woofle.net - Dustyn Gibson - Ed Morley - eibaan@gmail.com - elky - Emmanuelle Delescolle - Emil Stenström - enlight - Enrico - Eric Boersma - Eric Brandwein - Eric Floehr - Eric Florenzano - Eric Holscher - Eric Moritz - Eric Palakovich Carr - Erik Karulf - Erik Romijn - eriks@win.tue.nl - Erwin Junge - Esdras Beleza - Espen Grindhaug - Eugene Lazutkin - Evan Grim - Fabrice Aneche - Farhaan Bukhsh - favo@exoweb.net - fdr - Federico Capoano - Felipe Lee - Filip Noetzel - Filip Wasilewski - Finn Gruwier Larsen - Flávio Juvenal da Silva Junior - flavio.curella@gmail.com - Florian Apolloner - Florian Moussous - Fran Hrženjak - Francisco Albarran Cristobal - Francisco Couzo - François Freitag - Frank Tegtmeyer - Frank Wierzbicki - Frank Wiles - František Malina - Fraser Nevett - Gabriel Grant - Gabriel Hurley - gandalf@owca.info - Garry Lawrence - Garry Polley - Garth Kidd - Gary Wilson - Gasper Koren - Gasper Zejn - Gavin Wahl - Ge Hanbin - geber@datacollect.com - Geert Vanderkelen - George Karpenkov - George Song - George Vilches - Georg "Hugo" Bauer - Georgi Stanojevski - Gerardo Orozco - Gil Gonçalves - Girish Kumar - Gisle Aas - Glenn Maynard - glin@seznam.cz - GomoX - Gonzalo Saavedra - Gopal Narayanan - Graham Carlyle - Grant Jenks - Greg Chapple - Gregor Allensworth - Gregor Müllegger - Grigory Fateyev - Grzegorz Ślusarek - Guilherme Mesquita Gondim - Guillaume Pannatier - Gustavo Picon - hambaloney - Hang Park - Hannes Ljungberg - Hannes Struß - Hasan Ramezani - Hawkeye - Helen Sherwood-Taylor - Henrique Romano - Henry Dang - Hidde Bultsma - Himanshu Chauhan - hipertracker@gmail.com - Hiroki Kiyohara - Honza Král - Horst Gutmann - Hugo Osvaldo Barrera - HyukJin Jang - Hyun Mi Ae - Iacopo Spalletti - Ian A Wilson - Ian Clelland - Ian G. Kelly - Ian Holsman - Ian Lee - Ibon - Idan Gazit - Idan Melamed - Ifedapo Olarewaju - Igor Kolar - Illia Volochii - Ilya Semenov - Ingo Klöcker - I.S. van Oostveen - ivan.chelubeev@gmail.com - Ivan Sagalaev (Maniac) - Jaap Roes - Jack Moffitt - Jacob Burch - Jacob Green - Jacob Kaplan-Moss - Jakub Paczkowski - Jakub Wilk - Jakub Wiśniowski - james_027@yahoo.com - James Aylett - James Bennett - James Murty - James Tauber - James Timmins - James Turk - James Wheare - Jannis Leidel - Janos Guljas - Jan Pazdziora - Jan Rademaker - Jarek Głowacki - Jarek Zgoda - Jason Davies (Esaj) - Jason Huggins - Jason McBrayer - jason.sidabras@gmail.com - Jason Yan - Javier Mansilla - Jay Parlar - Jay Welborn - Jay Wineinger - J. Clifford Dyer - jcrasta@gmail.com - jdetaeye - Jeff Anderson - Jeff Balogh - Jeff Hui - Jeffrey Gelens - Jeff Triplett - Jeffrey Yancey - Jens Diemer - Jens Page - Jensen Cochran - Jeong-Min Lee - Jérémie Blaser - Jeremy Bowman - Jeremy Carbaugh - Jeremy Dunck - Jeremy Lainé - Jesse Young - Jezeniel Zapanta - jhenry - Jim Dalton - Jimmy Song - Jiri Barton - Joachim Jablon - Joao Oliveira - Joao Pedro Silva - Joe Heck - Joel Bohman - Joel Heenan - Joel Watts - Joe Topjian - Johan C. Stöver - Johann Queuniet - john@calixto.net - John D'Agostino - John D'Ambrosio - John Huddleston - John Moses - John Paulett - John Shaffer - Jökull Sólberg Auðunsson - Jon Dufresne - Jonas Haag - Jonatas C. D. - Jonathan Buchanan - Jonathan Daugherty (cygnus) - Jonathan Feignberg - Jonathan Slenders - Jordan Dimov - Jordi J. Tablada - Jorge Bastida - Jorge Gajon - José Tomás Tocino García - Josef Rousek - Joseph Kocherhans - Josh Smeaton - Joshua Cannon - Joshua Ginsberg - Jozko Skrablin - J. Pablo Fernandez - jpellerin@gmail.com - Juan Catalano - Juan Manuel Caicedo - Juan Pedro Fisanotti - Julia Elman - Julia Matsieva - Julian Bez - Julien Phalip - Junyoung Choi - junzhang.jn@gmail.com - Jure Cuhalev - Justin Bronn - Justine Tunney - Justin Lilly - Justin Michalicek - Justin Myles Holmes - Jyrki Pulliainen - Kadesarin Sanjek - Karderio - Karen Tracey - Karol Sikora - Katherine “Kati” Michel - Kathryn Killebrew - Katie Miller - Keith Bussell - Kenneth Love - Kent Hauser - Kevin Grinberg - Kevin Kubasik - Kevin McConnell - Kieran Holland - kilian - Kim Joon Hwan 김준환 - Klaas van Schelven - knox - konrad@gwu.edu - Kowito Charoenratchatabhan - Krišjānis Vaiders - krzysiek.pawlik@silvermedia.pl - Krzysztof Jurewicz - Krzysztof Kulewski - kurtiss@meetro.com - Lakin Wecker - Lars Yencken - Lau Bech Lauritzen - Laurent Luce - Laurent Rahuel - lcordier@point45.com - Leah Culver - Leandra Finger - Lee Reilly - Lee Sanghyuck - Leo "hylje" Honkanen - Leo Shklovskii - Leo Soto - lerouxb@gmail.com - Lex Berezhny - Liang Feng - limodou - Lincoln Smith - Liu Yijie <007gzs@gmail.com> - Loek van Gent - Loïc Bistuer - Lowe Thiderman - Luan Pablo - Lucas Connors - Luciano Ramalho - Ludvig Ericson - Luis C. Berrocal - Łukasz Langa - Łukasz Rekucki - Luke Granger-Brown - Luke Plant - Maciej Fijalkowski - Maciej Wiśniowski - Mads Jensen - Makoto Tsuyuki - Malcolm Tredinnick - Manuel Saelices - Manuzhai - Marc Aymerich Gubern - Marc Egli - Marcel Telka - Marc Fargas - Marc Garcia - Marcin Wróbel - Marc Remolt - Marc Tamlyn - Marc-Aurèle Brothier - Marian Andre - Marijn Vriens - Mario Gonzalez - Mariusz Felisiak - Mark Biggers - Mark Gensler - mark@junklight.com - Mark Lavin - Mark Sandstrom - Markus Amalthea Magnuson - Markus Holtermann - Marten Kenbeek - Marti Raudsepp - martin.glueck@gmail.com - Martin Green - Martin Kosír - Martin Mahner - Martin Maney - Martin von Gagern - Mart Sõmermaa - Marty Alchin - Masashi Shibata - masonsimon+django@gmail.com - Massimiliano Ravelli - Massimo Scamarcia - Mathieu Agopian - Matías Bordese - Matt Boersma - Matt Croydon - Matt Deacalion Stevens - Matt Dennenbaum - Matthew Flanagan - Matthew Schinckel - Matthew Somerville - Matthew Tretter - Matthew Wilkes - Matthias Kestenholz - Matthias Pronk - Matt Hoskins - Matt McClanahan - Matt Riggott - Matt Robenolt - Mattia Larentis - Mattia Procopio - Mattias Loverot - mattycakes@gmail.com - Max Burstein - Max Derkachev - Maxime Lorant - Maxime Turcotte - Maximilian Merz - Maximillian Dornseif - mccutchen@gmail.com - Meir Kriheli - Michael S. Brown - Michael Hall - Michael Josephson - Michael Manfre - michael.mcewan@gmail.com - Michael Placentra II - Michael Radziej - Michael Sanders - Michael Schwarz - Michael Sinov - Michael Thornhill - Michal Chruszcz - michal@plovarna.cz - Michał Modzelewski - Mihai Damian - Mihai Preda - Mikaël Barbero - Mike Axiak - Mike Grouchy - Mike Malone - Mike Richardson - Mike Wiacek - Mikhail Korobov - Mikko Hellsing - Mikołaj Siedlarek - milkomeda - Milton Waddams - mitakummaa@gmail.com - mmarshall - Moayad Mardini - Morgan Aubert - Moritz Sichert - Morten Bagai - msaelices - msundstr - Mushtaq Ali - Mykola Zamkovoi - Nadège Michel - Nagy Károly - Nasimul Haque - Nasir Hussain - Natalia Bidart - Nate Bragg - Nathan Gaberel - Neal Norwitz - Nebojša Dorđević - Ned Batchelder - Nena Kojadin - Niall Dalton - Niall Kelly - Nick Efford - Nick Lane - Nick Pope - Nick Presta - Nick Sandford - Nick Sarbicki - Niclas Olofsson - Nicola Larosa - Nicolas Lara - Nicolas Noé - Niran Babalola - Nis Jørgensen - Nowell Strite - Nuno Mariz - oggie rob - oggy - Oliver Beattie - Oliver Rutherfurd - Olivier Sels - Olivier Tabone - Orestis Markou - Orne Brocaar - Oscar Ramirez - Ossama M. Khayat - Owen Griffiths - Pablo Martín - Panos Laganakos - Paolo Melchiorre - Pascal Hartig - Pascal Varet - Patrik Sletmo - Paul Bissex - Paul Collier - Paul Collins - Paul Donohue - Paul Lanier - Paul McLanahan - Paul McMillan - Paulo Poiati - Paulo Scardine - Paul Smith - Pavel Kulikov - pavithran s - Pavlo Kapyshin - permonik@mesias.brnonet.cz - Petar Marić - Pete Crosier - peter@mymart.com - Peter Sheats - Peter van Kampen - Peter Zsoldos - Pete Shinners - Petr Marhoun - pgross@thoughtworks.com - phaedo - phil.h.smith@gmail.com - Philip Lindborg - Philippe Raoult - phil@produxion.net - Piotr Jakimiak - Piotr Lewandowski - plisk - polpak@yahoo.com - pradeep.gowda@gmail.com - Preston Holmes - Preston Timmons - Priyansh Saxena - Przemysław Buczkowski - Przemysław Suliga - Rachel Tobin - Rachel Willmer - Radek Švarz - Raffaele Salmaso - Rajesh Dhawan - Ramez Ashraf - Ramin Farajpour Cami - Ramiro Morales - Ramon Saraiva - Ram Rachum - Randy Barlow - Raphaël Barrois - Raphael Michel - Raúl Cumplido - Rebecca Smith - Remco Wendt - Renaud Parent - Renbi Yu - Reza Mohammadi - rhettg@gmail.com - Ricardo Javier Cárdenes Medina - ricardojbarrios@gmail.com - Riccardo Di Virgilio - Riccardo Magliocchetti - Richard Davies - Richard House - Rick Wagner - Rigel Di Scala - Robert Coup - Robert Myers - Roberto Aguilar - Robert Rock Howard - Robert Wittams - Rob Golding-Day - Rob Hudson - Rob Nguyen - Robin Munn - Rodrigo Pinheiro Marques de Araújo - Romain Garrigues - Ronny Haryanto - Ross Poulton - Rozza - Rudolph Froger - Rudy Mutter - Rune Rønde Laursen - Russell Cloran - Russell Keith-Magee - Russ Webber - Ryan Hall - ryankanno - Ryan Kelly - Ryan Niemeyer - Ryan Petrello - Ryan Rubin - Ryno Mathee - Sachin Jat - Sage M. Abdullah - Sam Newman - Sander Dijkhuis - Sanket Saurav - Sanyam Khurana - Sarthak Mehrish - schwank@gmail.com - Scot Hacker - Scott Barr - Scott Fitsimones - Scott Pashley - scott@staplefish.com - Sean Brant - Sebastian Hillig - Sebastian Spiegel - Segyo Myung - Selwin Ong - Sengtha Chay - Senko Rašić - serbaut@gmail.com - Sergei Maertens - Sergey Fedoseev - Sergey Kolosov - Seth Hill - Shai Berger - Shannon -jj Behrens - Shawn Milochik - Silvan Spross - Simeon Visser - Simon Blanchard - Simon Charette - Simon Greenhill - Simon Litchfield - Simon Meers - Simon Williams - Simon Willison - Sjoerd Job Postmus - Slawek Mikula - sloonz - smurf@smurf.noris.de - sopel - Srinivas Reddy Thatiparthy - Stanislas Guerra - Stanislaus Madueke - Stanislav Karpov - starrynight - Stefan R. Filipek - Stefane Fermgier - Stefano Rivera - Stéphane Raimbault - Stephan Jaekel - Stephen Burrows - Steven L. Smith (fvox13) - Steven Noorbergen (Xaroth) - Stuart Langridge - Subhav Gautam - Sujay S Kumar - Sune Kirkeby - Sung-Jin Hong - SuperJared - Susan Tan - Sutrisno Efendi - Swaroop C H - Szilveszter Farkas - Taavi Teska - Tai Lee - Takashi Matsuo - Tareque Hossain - Taylor Mitchell - Terry Huang - thebjorn - Thejaswi Puthraya - Thijs van Dien - Thom Wiggers - Thomas Chaumeny - Thomas Güttler - Thomas Kerpe - Thomas Sorrel - Thomas Steinacher - Thomas Stromberg - Thomas Tanner - tibimicu@gmx.net - Tim Allen - Tim Givois - Tim Graham - Tim Heap - Tim Saylor - Tobias Kunze - Tobias McNulty - tobias@neuyork.de - Todd O'Bryan - Tom Carrick - Tom Christie - Tom Forbes - Tom Insam - Tom Tobin - Tomáš Ehrlich - Tomáš Kopeček - Tome Cvitan - Tomek Paczkowski - Tomer Chachamu - Tommy Beadle - Tore Lundqvist - torne-django@wolfpuppy.org.uk - Travis Cline - Travis Pinney - Travis Swicegood - Travis Terry - Trevor Caira - Trey Long - tstromberg@google.com - tt@gurgle.no - Tyler Tarabula - Tyson Clugg - Tyson Tate - Unai Zalakain - Valentina Mukhamedzhanova - valtron - Vasiliy Stavenko - Vasil Vangelovski - Vibhu Agarwal - Victor Andrée - viestards.lists@gmail.com - Viktor Danyliuk - Ville Säävuori - Vinay Karanam - Vinay Sajip - Vincent Foley - Vinny Do - Vitaly Babiy - Vladimir Kuzma - Vlado - Vsevolod Solovyov - Vytis Banaitis - wam-djangobug@wamber.net - Wang Chun - Warren Smith - Waylan Limberg - Wiktor Kołodziej - Wiley Kestner - Wiliam Alves de Souza - Will Ayd - William Schwartz - Will Hardy - Wilson Miner - Wim Glenn - wojtek - Xavier Francisco - Xia Kai - Yann Fouillat - Yann Malet - Yasushi Masuda - ye7cakf02@sneakemail.com - ymasuda@ethercube.com - Yoong Kang Lim - Yusuke Miyazaki - Zac Hatfield-Dodds - Zachary Voase - Zach Liu - Zach Thompson - Zain Memon - Zak Johnson - Žan Anderle - Zbigniew Siciarz - zegor - Zeynel Özdemir - Zlatko Mašek - zriv - - -A big THANK YOU goes to: - - Rob Curley and Ralph Gage for letting us open-source Django. - - Frank Wiles for making excellent arguments for open-sourcing, and for - his sage sysadmin advice. - - Ian Bicking for convincing Adrian to ditch code generation. - - Mark Pilgrim for "Dive Into Python" (https://www.diveinto.org/python3/). - - Guido van Rossum for creating Python. diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/INSTALLER b/backend/venv/Lib/site-packages/Django-3.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e38a32041e49332e5e81c2d363dc418d68..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/LICENSE b/backend/venv/Lib/site-packages/Django-3.1.dist-info/LICENSE deleted file mode 100644 index 5f4f225dd282aa7e4361ec3c2750bbbaaed8ab1f..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Django Software Foundation and individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of Django nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/LICENSE.python b/backend/venv/Lib/site-packages/Django-3.1.dist-info/LICENSE.python deleted file mode 100644 index 8e1c618235ae37f49d5de7d7b80e3f5f7a1eb39e..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/LICENSE.python +++ /dev/null @@ -1,265 +0,0 @@ -Django is licensed under the three-clause BSD license; see the file -LICENSE for details. - -Django includes code from the Python standard library, which is licensed under -the Python license, a permissive open source license. The copyright and license -is included below for compliance with Python's terms. - ----------------------------------------------------------------------- - -Copyright (c) 2001-present Python Software Foundation; All Rights Reserved - -A. HISTORY OF THE SOFTWARE -========================== - -Python was created in the early 1990s by Guido van Rossum at Stichting -Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands -as a successor of a language called ABC. Guido remains Python's -principal author, although it includes many contributions from others. - -In 1995, Guido continued his work on Python at the Corporation for -National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) -in Reston, Virginia where he released several versions of the -software. - -In May 2000, Guido and the Python core development team moved to -BeOpen.com to form the BeOpen PythonLabs team. In October of the same -year, the PythonLabs team moved to Digital Creations, which became -Zope Corporation. In 2001, the Python Software Foundation (PSF, see -https://www.python.org/psf/) was formed, a non-profit organization -created specifically to own Python-related Intellectual Property. -Zope Corporation was a sponsoring member of the PSF. - -All Python releases are Open Source (see http://www.opensource.org for -the Open Source Definition). Historically, most, but not all, Python -releases have also been GPL-compatible; the table below summarizes -the various releases. - - Release Derived Year Owner GPL- - from compatible? (1) - - 0.9.0 thru 1.2 1991-1995 CWI yes - 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes - 1.6 1.5.2 2000 CNRI no - 2.0 1.6 2000 BeOpen.com no - 1.6.1 1.6 2001 CNRI yes (2) - 2.1 2.0+1.6.1 2001 PSF no - 2.0.1 2.0+1.6.1 2001 PSF yes - 2.1.1 2.1+2.0.1 2001 PSF yes - 2.1.2 2.1.1 2002 PSF yes - 2.1.3 2.1.2 2002 PSF yes - 2.2 and above 2.1.1 2001-now PSF yes - -Footnotes: - -(1) GPL-compatible doesn't mean that we're distributing Python under - the GPL. All Python licenses, unlike the GPL, let you distribute - a modified version without making your changes open source. The - GPL-compatible licenses make it possible to combine Python with - other software that is released under the GPL; the others don't. - -(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, - because its license has a choice of law clause. According to - CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 - is "not incompatible" with the GPL. - -Thanks to the many outside volunteers who have worked under Guido's -direction to make these releases possible. - - -B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON -=============================================================== - -PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 --------------------------------------------- - -1. This LICENSE AGREEMENT is between the Python Software Foundation -("PSF"), and the Individual or Organization ("Licensee") accessing and -otherwise using this software ("Python") in source or binary form and -its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, PSF hereby -grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, -analyze, test, perform and/or display publicly, prepare derivative works, -distribute, and otherwise use Python alone or in any derivative version, -provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; -All Rights Reserved" are retained in Python alone or in any derivative version -prepared by Licensee. - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python. - -4. PSF is making Python available to Licensee on an "AS IS" -basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. Nothing in this License Agreement shall be deemed to create any -relationship of agency, partnership, or joint venture between PSF and -Licensee. This License Agreement does not grant permission to use PSF -trademarks or trade name in a trademark sense to endorse or promote -products or services of Licensee, or any third party. - -8. By copying, installing or otherwise using Python, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. - - -BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 -------------------------------------------- - -BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 - -1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an -office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the -Individual or Organization ("Licensee") accessing and otherwise using -this software in source or binary form and its associated -documentation ("the Software"). - -2. Subject to the terms and conditions of this BeOpen Python License -Agreement, BeOpen hereby grants Licensee a non-exclusive, -royalty-free, world-wide license to reproduce, analyze, test, perform -and/or display publicly, prepare derivative works, distribute, and -otherwise use the Software alone or in any derivative version, -provided, however, that the BeOpen Python License is retained in the -Software, alone or in any derivative version prepared by Licensee. - -3. BeOpen is making the Software available to Licensee on an "AS IS" -basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE -SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS -AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY -DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -5. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -6. This License Agreement shall be governed by and interpreted in all -respects by the law of the State of California, excluding conflict of -law provisions. Nothing in this License Agreement shall be deemed to -create any relationship of agency, partnership, or joint venture -between BeOpen and Licensee. This License Agreement does not grant -permission to use BeOpen trademarks or trade names in a trademark -sense to endorse or promote products or services of Licensee, or any -third party. As an exception, the "BeOpen Python" logos available at -http://www.pythonlabs.com/logos.html may be used according to the -permissions granted on that web page. - -7. By copying, installing or otherwise using the software, Licensee -agrees to be bound by the terms and conditions of this License -Agreement. - - -CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 ---------------------------------------- - -1. This LICENSE AGREEMENT is between the Corporation for National -Research Initiatives, having an office at 1895 Preston White Drive, -Reston, VA 20191 ("CNRI"), and the Individual or Organization -("Licensee") accessing and otherwise using Python 1.6.1 software in -source or binary form and its associated documentation. - -2. Subject to the terms and conditions of this License Agreement, CNRI -hereby grants Licensee a nonexclusive, royalty-free, world-wide -license to reproduce, analyze, test, perform and/or display publicly, -prepare derivative works, distribute, and otherwise use Python 1.6.1 -alone or in any derivative version, provided, however, that CNRI's -License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) -1995-2001 Corporation for National Research Initiatives; All Rights -Reserved" are retained in Python 1.6.1 alone or in any derivative -version prepared by Licensee. Alternately, in lieu of CNRI's License -Agreement, Licensee may substitute the following text (omitting the -quotes): "Python 1.6.1 is made available subject to the terms and -conditions in CNRI's License Agreement. This Agreement together with -Python 1.6.1 may be located on the Internet using the following -unique, persistent identifier (known as a handle): 1895.22/1013. This -Agreement may also be obtained from a proxy server on the Internet -using the following URL: http://hdl.handle.net/1895.22/1013". - -3. In the event Licensee prepares a derivative work that is based on -or incorporates Python 1.6.1 or any part thereof, and wants to make -the derivative work available to others as provided herein, then -Licensee hereby agrees to include in any such work a brief summary of -the changes made to Python 1.6.1. - -4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" -basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR -IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND -DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS -FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT -INFRINGE ANY THIRD PARTY RIGHTS. - -5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON -1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS -A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, -OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - -6. This License Agreement will automatically terminate upon a material -breach of its terms and conditions. - -7. This License Agreement shall be governed by the federal -intellectual property law of the United States, including without -limitation the federal copyright law, and, to the extent such -U.S. federal law does not apply, by the law of the Commonwealth of -Virginia, excluding Virginia's conflict of law provisions. -Notwithstanding the foregoing, with regard to derivative works based -on Python 1.6.1 that incorporate non-separable material that was -previously distributed under the GNU General Public License (GPL), the -law of the Commonwealth of Virginia shall govern this License -Agreement only as to issues arising under or with respect to -Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this -License Agreement shall be deemed to create any relationship of -agency, partnership, or joint venture between CNRI and Licensee. This -License Agreement does not grant permission to use CNRI trademarks or -trade name in a trademark sense to endorse or promote products or -services of Licensee, or any third party. - -8. By clicking on the "ACCEPT" button where indicated, or by copying, -installing or otherwise using Python 1.6.1, Licensee agrees to be -bound by the terms and conditions of this License Agreement. - - ACCEPT - - -CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 --------------------------------------------------- - -Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, -The Netherlands. All rights reserved. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Stichting Mathematisch -Centrum or CWI not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE -FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT -OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/METADATA b/backend/venv/Lib/site-packages/Django-3.1.dist-info/METADATA deleted file mode 100644 index 1461f229af303516418d3d616131cef31888aeaa..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/METADATA +++ /dev/null @@ -1,89 +0,0 @@ -Metadata-Version: 2.1 -Name: Django -Version: 3.1 -Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design. -Home-page: https://www.djangoproject.com/ -Author: Django Software Foundation -Author-email: foundation@djangoproject.com -License: BSD-3-Clause -Project-URL: Documentation, https://docs.djangoproject.com/ -Project-URL: Release notes, https://docs.djangoproject.com/en/stable/releases/ -Project-URL: Funding, https://www.djangoproject.com/fundraising/ -Project-URL: Source, https://github.com/django/django -Project-URL: Tracker, https://code.djangoproject.com/ -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Framework :: Django -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Topic :: Internet :: WWW/HTTP -Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content -Classifier: Topic :: Internet :: WWW/HTTP :: WSGI -Classifier: Topic :: Software Development :: Libraries :: Application Frameworks -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=3.6 -Requires-Dist: asgiref (~=3.2.10) -Requires-Dist: pytz -Requires-Dist: sqlparse (>=0.2.2) -Provides-Extra: argon2 -Requires-Dist: argon2-cffi (>=16.1.0) ; extra == 'argon2' -Provides-Extra: bcrypt -Requires-Dist: bcrypt ; extra == 'bcrypt' - -====== -Django -====== - -Django is a high-level Python Web framework that encourages rapid development -and clean, pragmatic design. Thanks for checking it out. - -All documentation is in the "``docs``" directory and online at -https://docs.djangoproject.com/en/stable/. If you're just getting started, -here's how we recommend you read the docs: - -* First, read ``docs/intro/install.txt`` for instructions on installing Django. - -* Next, work through the tutorials in order (``docs/intro/tutorial01.txt``, - ``docs/intro/tutorial02.txt``, etc.). - -* If you want to set up an actual deployment server, read - ``docs/howto/deployment/index.txt`` for instructions. - -* You'll probably want to read through the topical guides (in ``docs/topics``) - next; from there you can jump to the HOWTOs (in ``docs/howto``) for specific - problems, and check out the reference (``docs/ref``) for gory details. - -* See ``docs/README`` for instructions on building an HTML version of the docs. - -Docs are updated rigorously. If you find any problems in the docs, or think -they should be clarified in any way, please take 30 seconds to fill out a -ticket here: https://code.djangoproject.com/newticket - -To get more help: - -* Join the ``#django`` channel on irc.freenode.net. Lots of helpful people hang - out there. See https://freenode.net/kb/answer/chat if you're new to IRC. - -* Join the django-users mailing list, or read the archives, at - https://groups.google.com/group/django-users. - -To contribute to Django: - -* Check out https://docs.djangoproject.com/en/dev/internals/contributing/ for - information about getting involved. - -To run Django's test suite: - -* Follow the instructions in the "Unit tests" section of - ``docs/internals/contributing/writing-code/unit-tests.txt``, published online at - https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests - - diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/RECORD b/backend/venv/Lib/site-packages/Django-3.1.dist-info/RECORD deleted file mode 100644 index 09f0a07ec5cdae03bea00b4d0e0ae9990cc77871..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/RECORD +++ /dev/null @@ -1,4347 +0,0 @@ -../../Scripts/__pycache__/django-admin.cpython-38.pyc,, -../../Scripts/django-admin.exe,sha256=qnQQLz3FBq_XFeZlZCqDZf5a_lXo-LZ8UtJYF-vQTJU,106433 -../../Scripts/django-admin.py,sha256=Pn4NyuLiOfbJedriyzMlXOSYwIoYB34w6oxCk80WMqE,643 -Django-3.1.dist-info/AUTHORS,sha256=bC1VuJR0wReGC4DGRTE48d8uTCTYs7hgtjNMi5i_FGc,37701 -Django-3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Django-3.1.dist-info/LICENSE,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552 -Django-3.1.dist-info/LICENSE.python,sha256=KGS1UtMEsSD14oP7_VTQphIi5e4tJ_dmgieAi2_og3A,13227 -Django-3.1.dist-info/METADATA,sha256=h2JrMZUs3hPfNoa7v6BWTa6JCChxXrNahSsfvOlBptQ,3644 -Django-3.1.dist-info/RECORD,, -Django-3.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -Django-3.1.dist-info/WHEEL,sha256=U88EhGIw8Sj2_phqajeu_EAi3RAo8-C6zV3REsWbWbs,92 -Django-3.1.dist-info/entry_points.txt,sha256=daYW_s0r8Z5eiRi_bNU6vodHqVUXQWzm-DHFOQHTV2Q,83 -Django-3.1.dist-info/top_level.txt,sha256=V_goijg9tfO20ox_7os6CcnPvmBavbxu46LpJiNLwjA,7 -django/__init__.py,sha256=fc4MQwHDTYGvBHYwjgQh6l1EibsRh5mkqrdhztXAC38,799 -django/__main__.py,sha256=9a5To1vQXqf2Jg_eh8nLvIc0GXmDjEXv4jE1QZEqBFk,211 -django/__pycache__/__init__.cpython-38.pyc,, -django/__pycache__/__main__.cpython-38.pyc,, -django/__pycache__/shortcuts.cpython-38.pyc,, -django/apps/__init__.py,sha256=t0F4yceU4SbybMeWBvpuE6RsGaENmQCVbNSdSuXiEMs,90 -django/apps/__pycache__/__init__.cpython-38.pyc,, -django/apps/__pycache__/config.cpython-38.pyc,, -django/apps/__pycache__/registry.cpython-38.pyc,, -django/apps/config.py,sha256=dqjIZ6ib8qPSJbGyyV7oTAQkg_WktfYx_kVos90mKbI,8708 -django/apps/registry.py,sha256=0eWzy63WRGYEvM2x5jHNsmMDXvxcHY4xHbsSB_5Opas,17512 -django/bin/__pycache__/django-admin.cpython-38.pyc,, -django/bin/django-admin.py,sha256=jrlSFh4UnmMJLqRJNdJKgA_2nm24FYIEUBM0kL2RV8s,656 -django/conf/__init__.py,sha256=DHqMtOz72hws_IxUg234sfVYSZXGR5BResQAUneBmPs,10656 -django/conf/__pycache__/__init__.cpython-38.pyc,, -django/conf/__pycache__/global_settings.cpython-38.pyc,, -django/conf/app_template/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/app_template/admin.py-tpl,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63 -django/conf/app_template/apps.py-tpl,sha256=lZ1k1B3K5ntPWSn-CSd0cvDuijeoQE43wztE0tXyeMQ,114 -django/conf/app_template/migrations/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/app_template/models.py-tpl,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57 -django/conf/app_template/tests.py-tpl,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60 -django/conf/app_template/views.py-tpl,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63 -django/conf/global_settings.py,sha256=fG_fXipKjN5ODG3Gq-CdwDzHufj3h14jXltAem1Gf2Q,22658 -django/conf/locale/__init__.py,sha256=p8Y9IkNAxKfnaUwQ1OFUkWIciMjd1XmuDXm1EkYPuYY,13451 -django/conf/locale/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/af/LC_MESSAGES/django.mo,sha256=3KYsjZe0UVNs12pbY1C71twF3KuIQAnLD6yyFPxG0CM,21840 -django/conf/locale/af/LC_MESSAGES/django.po,sha256=v1ebpND1kYlrQFEWhYwCq-Zbe1ujvf3xYqcmUBDmvZk,26530 -django/conf/locale/ar/LC_MESSAGES/django.mo,sha256=QO9CMIzKOV56Mve13lc3KvkbLTQXNDxizLNsYzQWs78,35328 -django/conf/locale/ar/LC_MESSAGES/django.po,sha256=wtuLy6Ty3XdTicasSbv_2TZXM75KUQCFt3oXad_iiD0,38269 -django/conf/locale/ar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ar/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ar/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ar/formats.py,sha256=nm5cnBh1YYjwD4eydBZ5AoknwN54piwrpB25ijpDT-o,696 -django/conf/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=1LjYIo3qTIliodHd4Mm7Gmh2tzuZRZzc6s0zohGsiNU,35409 -django/conf/locale/ar_DZ/LC_MESSAGES/django.po,sha256=a5lRnz_D4NgsMxCnU_lxE8JsQb3VEfXQ3xIXgH-VQrI,38151 -django/conf/locale/ar_DZ/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ar_DZ/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ar_DZ/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ar_DZ/formats.py,sha256=qYoVLwXYkSbP13DGt8xHaNzru9v-7rhl_vUrpdz3Aos,907 -django/conf/locale/ast/LC_MESSAGES/django.mo,sha256=XSStt50HP-49AJ8wFcnbn55SLncJCsS2lx_4UwK-h-8,15579 -django/conf/locale/ast/LC_MESSAGES/django.po,sha256=7qZUb5JjfrWLqtXPRjpNOMNycbcsEYpNO-oYmazLTk4,23675 -django/conf/locale/az/LC_MESSAGES/django.mo,sha256=lsm6IvKmBmUxUCqVW3RowQxKXd6TPzwGKGw7jeO5FX0,27170 -django/conf/locale/az/LC_MESSAGES/django.po,sha256=yO6Qd6eTX9Z9JRVAynpwlZNz8Q8VFgNEkjw8-v9A-Ck,29059 -django/conf/locale/az/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/az/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/az/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/az/formats.py,sha256=Nk4qQqSl5CVtmA2sPA2WQAm12JZowENXH3TjiMxFZuk,1105 -django/conf/locale/be/LC_MESSAGES/django.mo,sha256=X1pJgJpw9oKz9KcZm__XqHEWJOV0xcNDKDnPHZ2x-zI,36053 -django/conf/locale/be/LC_MESSAGES/django.po,sha256=0SzhqeDH3FTgqUFeHbJj_N8MY1mN2bu46mUSZGkd2JI,38428 -django/conf/locale/bg/LC_MESSAGES/django.mo,sha256=CEeXFNvizpLjS7RcTeiohGJN_s6YqpPn8JUMwjb6lHY,23422 -django/conf/locale/bg/LC_MESSAGES/django.po,sha256=4YwzvFO8IBWjWbMIMBMZBa9HnbJHWoI24zD1cWhl1tI,30133 -django/conf/locale/bg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/bg/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/bg/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/bg/formats.py,sha256=iC9zYHKphMaSnluBZfYvH1kV5aDyl3ycsqVjxOoqfOY,705 -django/conf/locale/bn/LC_MESSAGES/django.mo,sha256=sB0RIFrGS11Z8dx5829oOFw55vuO4vty3W4oVzIEe8Q,16660 -django/conf/locale/bn/LC_MESSAGES/django.po,sha256=rF9vML3LDOqXkmK6R_VF3tQaFEoZI7besJAPx5qHNM0,26877 -django/conf/locale/bn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/bn/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/bn/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/bn/formats.py,sha256=INeNl0xlt9B-YJTkcdC2kSpJLly9d5AKT60GMyS-Bm4,964 -django/conf/locale/br/LC_MESSAGES/django.mo,sha256=lTdZNxvMgfKvAPfGVi0cKtlKK50mipozyK5-8yi22_4,14107 -django/conf/locale/br/LC_MESSAGES/django.po,sha256=0FLEdwwpjKSzcwwmZ7tG_OaQbZn8WQ0LdJXPDf6cUl0,24055 -django/conf/locale/bs/LC_MESSAGES/django.mo,sha256=Xa5QAbsHIdLkyG4nhLCD4UHdCngrw5Oh120abCNdWlA,10824 -django/conf/locale/bs/LC_MESSAGES/django.po,sha256=IB-2VvrQKUivAMLMpQo1LGRAxw3kj-7kB6ckPai0fug,22070 -django/conf/locale/bs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/bs/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/bs/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/bs/formats.py,sha256=NltIKZw0-WnZW0QY2D2EqqdctUyNc8FEARZ1RRYKtHo,705 -django/conf/locale/ca/LC_MESSAGES/django.mo,sha256=9RaSVgL7-567kx_8eYF6TEAuQA8bN4_WpcLSxjvkDV4,27023 -django/conf/locale/ca/LC_MESSAGES/django.po,sha256=8xpXWi070UeQ7eQzAWDCuVUT81b6O8jenXFzVZHlqGg,29386 -django/conf/locale/ca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ca/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ca/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ca/formats.py,sha256=rQJTIIy-DNSu0mASIoXLHWpS8rVar64zkJ-NTM1VMTM,951 -django/conf/locale/cs/LC_MESSAGES/django.mo,sha256=tfSDkvHcCouR32fPtVLbASKex8SyPjpWnXHOgPNYJ00,28954 -django/conf/locale/cs/LC_MESSAGES/django.po,sha256=rhJ-S8NG7kwZ8SDbPvvLwhhqpU2uhtNNYYUEG5CrwJs,31558 -django/conf/locale/cs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/cs/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/cs/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/cs/formats.py,sha256=SdYIul8ycV5SOzm1gCYmZLqYfZnlxqPbPFW8KuwevnM,1549 -django/conf/locale/cy/LC_MESSAGES/django.mo,sha256=s7mf895rsoiqrPrXpyWg2k85rN8umYB2aTExWMTux7s,18319 -django/conf/locale/cy/LC_MESSAGES/django.po,sha256=S-1PVWWVgYmugHoYUlmTFAzKCpI81n9MIAhkETbpUoo,25758 -django/conf/locale/cy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/cy/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/cy/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/cy/formats.py,sha256=Rg9qe-bsk7MXrSfQyDOHOsa9m0qey18nqocar93GuF4,1594 -django/conf/locale/da/LC_MESSAGES/django.mo,sha256=hLPWq5n55KATqCgWxksi67HlyEFxy0Mfk-_8jA4N7uk,26751 -django/conf/locale/da/LC_MESSAGES/django.po,sha256=m13HiaEFwyY5XZTfM_bovCIRxqtT7L6VsZT0XRcOaYk,28935 -django/conf/locale/da/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/da/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/da/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/da/formats.py,sha256=jquE6tLj9nOxcGtH_326w57sH9BKhP4BKtPz6eCi4k8,941 -django/conf/locale/de/LC_MESSAGES/django.mo,sha256=mJi5sIz8AXi5UG37KwF3ZeuqyCM4wAKXZ6qTeDgauTU,28125 -django/conf/locale/de/LC_MESSAGES/django.po,sha256=G_HkvboL5tJNlY3b-B3k0UXvXIPLz_2tJX5zJZCMqko,30312 -django/conf/locale/de/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/de/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/de/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/de/formats.py,sha256=cboIdd5DucaqpBdqckaZG6rEhu-OYubCNzrq-qYx0Uo,992 -django/conf/locale/de_CH/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/de_CH/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/de_CH/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/de_CH/formats.py,sha256=5lLsOvaCPtpJh-dlv9Ag75MeecDBeTyCJWJeHyt9oBA,1336 -django/conf/locale/dsb/LC_MESSAGES/django.mo,sha256=1I8ERqJyZO7J0Ul6fN_hgbxJwIeijf-LlshP3NvnALE,29482 -django/conf/locale/dsb/LC_MESSAGES/django.po,sha256=-ZBXFr_Q43KCTI07mvwvNEYD0PpJ_APGoHBtsjXi97E,31754 -django/conf/locale/el/LC_MESSAGES/django.mo,sha256=0s3haoOvNv89_-eypEed6GNJLnlTs7d-PZOF-XCB1Hg,26805 -django/conf/locale/el/LC_MESSAGES/django.po,sha256=T9bh5i35dma3C2TOQxfO21vpfR8OIgzzKzf6L7iU54w,32398 -django/conf/locale/el/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/el/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/el/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/el/formats.py,sha256=w_3KgU9IKNr7BUQw81drogSqEyK8Zw8W0O73EGiRxIw,1257 -django/conf/locale/en/LC_MESSAGES/django.mo,sha256=mVpSj1AoAdDdW3zPZIg5ZDsDbkSUQUMACg_BbWHGFig,356 -django/conf/locale/en/LC_MESSAGES/django.po,sha256=k8scUVAX1Rvyjcq1FadGCBG36MvPQHsr-XU6tEy4K8Y,29161 -django/conf/locale/en/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/en/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/en/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/en/formats.py,sha256=sr2fzOex-HRdvbYTr_bUiZFSQWyPpN2y5eq_h6zyceQ,1620 -django/conf/locale/en_AU/LC_MESSAGES/django.mo,sha256=js3_n3k5hOtU15__AYZ7pFtpfubIeoXZlav05O27sNg,15223 -django/conf/locale/en_AU/LC_MESSAGES/django.po,sha256=lvkcp457FspF5rNwHKY4RndXCdcjaRVygndWRsdKm4M,23302 -django/conf/locale/en_AU/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/en_AU/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/en_AU/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/en_AU/formats.py,sha256=q_a1ONYb130Lb5XIAbkbFRO_qgRk71tDi2grqiClAhw,1889 -django/conf/locale/en_GB/LC_MESSAGES/django.mo,sha256=jSIe44HYGfzQlPtUZ8tWK2vCYM9GqCKs-CxLURn4e1o,12108 -django/conf/locale/en_GB/LC_MESSAGES/django.po,sha256=PTXvOpkxgZFRoyiqftEAuMrFcYRLfLDd6w0K8crN8j4,22140 -django/conf/locale/en_GB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/en_GB/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/en_GB/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/en_GB/formats.py,sha256=vJUVE_XIGGcwvGiO6tl2oNNzKSz1KjYOc8HnSvqhokg,1889 -django/conf/locale/eo/LC_MESSAGES/django.mo,sha256=bxU_9NOlTR6Y5lF31RzX8otmOmJ_haJSm_VA7ox-m2s,20345 -django/conf/locale/eo/LC_MESSAGES/django.po,sha256=D1OnehULWo53ynakFoFLSDJ6-G20QWJNFDPRnicO1E8,25725 -django/conf/locale/eo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/eo/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/eo/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/eo/formats.py,sha256=MTipqX6SDmgmGbY9gVTMdthz2lvF_caBNgzWDxYVt50,2162 -django/conf/locale/es/LC_MESSAGES/django.mo,sha256=MOR1aTJk6KYXp_TGUup7SRSUNUZNRbjizqOHBp9hRIU,21096 -django/conf/locale/es/LC_MESSAGES/django.po,sha256=vszFbW_OzqyTm8uA2RwcQGwEvKJ6C6Xai0dK76c4cBM,27335 -django/conf/locale/es/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/es/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/es/formats.py,sha256=Z-aM3Z7h7Fjk2SAWKhnUYiuKbHpc7nZZ3-wnelK0NwI,949 -django/conf/locale/es_AR/LC_MESSAGES/django.mo,sha256=NA7l1jW0K6sB6rkt_lzYuXxxxTYVKV9dGRdgaRV6u4I,27837 -django/conf/locale/es_AR/LC_MESSAGES/django.po,sha256=fXf-IRuf4zw5zuqV1_GmV1ic2kOd6I5-ZzO_w9ZKAqU,29842 -django/conf/locale/es_AR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_AR/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/es_AR/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/es_AR/formats.py,sha256=wY64-6a2hajRveIgJLpkKES_v-QejkkgExdnnJdYN1E,935 -django/conf/locale/es_CO/LC_MESSAGES/django.mo,sha256=ehUwvqz9InObH3fGnOLuBwivRTVMJriZmJzXcJHsfjc,18079 -django/conf/locale/es_CO/LC_MESSAGES/django.po,sha256=XRgn56QENxEixlyix3v4ZSTSjo4vn8fze8smkrv_gc4,25107 -django/conf/locale/es_CO/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_CO/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/es_CO/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/es_CO/formats.py,sha256=kvTsKSaK7oDWK6a-SeO3V3e__64SjtDBMWoq0ouVDJ4,700 -django/conf/locale/es_MX/LC_MESSAGES/django.mo,sha256=TLNwa9mcfepZqvKH4Xz2URNnKkAxc4Xs_QiwWrJZfuc,14677 -django/conf/locale/es_MX/LC_MESSAGES/django.po,sha256=0loQLEyEIgqNF8mQ3ZZKfOREOfK_l90ANCvu5mMdBKQ,23643 -django/conf/locale/es_MX/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_MX/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/es_MX/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/es_MX/formats.py,sha256=tny9CPrJJV5qRJ_myuiQ8fMfg3fnNtv3q6aOSxLdK0E,799 -django/conf/locale/es_NI/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_NI/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/es_NI/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/es_NI/formats.py,sha256=QMfHoEWcpR_8yLaE66w5UjmPjtgTAU7Yli8JHgSxGRI,740 -django/conf/locale/es_PR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/es_PR/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/es_PR/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/es_PR/formats.py,sha256=mYKWumkfGElGDL92G0nO_loBoSOOFKs0ktsI3--nlLQ,671 -django/conf/locale/es_VE/LC_MESSAGES/django.mo,sha256=h-h1D_Kr-LI_DyUJuIG4Zbu1HcLWTM1s5X515EYLXO8,18840 -django/conf/locale/es_VE/LC_MESSAGES/django.po,sha256=Xj38imu4Yw-Mugwge5CqAqWlcnRWnAKpVBPuL06Twjs,25494 -django/conf/locale/et/LC_MESSAGES/django.mo,sha256=FPAzZ-EAOHrkrCvybgURJ7VgRAhnhUT3qG2DR3S857A,26861 -django/conf/locale/et/LC_MESSAGES/django.po,sha256=bLRkirLcAQLdVSWD1h6wCi2TUE-0KGzzzdFykIH63po,29059 -django/conf/locale/et/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/et/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/et/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/et/formats.py,sha256=kD0IrKxW4AlMhS6fUEXUtyPWfsdLuBzdDHiEmdfzadQ,707 -django/conf/locale/eu/LC_MESSAGES/django.mo,sha256=l07msMSyWE5fXmpWA4jp2NiKKG1ej3u017HiiimXYGs,20737 -django/conf/locale/eu/LC_MESSAGES/django.po,sha256=BIJfur2Wiu4t0W6byiOxrtpmBL71klxHGMnko-O87Ro,26140 -django/conf/locale/eu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/eu/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/eu/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/eu/formats.py,sha256=R-Ex1e1CoDDIul2LGuhXH5-ZBsiRpTerqxqRAmB8gFM,749 -django/conf/locale/fa/LC_MESSAGES/django.mo,sha256=uDP0sNUbnqhRHqewGEUFl52X0MR8IuDs5a76ZGnYAY0,31631 -django/conf/locale/fa/LC_MESSAGES/django.po,sha256=h-Zr8cen35dz2Ln1aFmYDue_hEdMb7NGAF1HIE3aGNc,34126 -django/conf/locale/fa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fa/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/fa/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/fa/formats.py,sha256=RCDlj-iiAS7MVgWwOFSvQ_-QROhBm-7d8OP6QhkcGZw,722 -django/conf/locale/fi/LC_MESSAGES/django.mo,sha256=viTrM0ADENZR4_Y23NVhNUTQQhBUbpee1gLj5zYrtc8,26719 -django/conf/locale/fi/LC_MESSAGES/django.po,sha256=OQcsYcDQGUcfj3upbSj1zpoR8WZ8AIECIuS7NviAazA,28829 -django/conf/locale/fi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fi/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/fi/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/fi/formats.py,sha256=j0LGmhPEQWf6rpShWVu5Vk-C7PaZrjZNpYzQf0HPAGA,1241 -django/conf/locale/fr/LC_MESSAGES/django.mo,sha256=cArVE_JGFylNC-OWW_413YW8wdWYP0sxdA8q6tpen_0,28377 -django/conf/locale/fr/LC_MESSAGES/django.po,sha256=pKv-rowathPrPR80qHYUwA9Ka44Yr3_8RbVS9wq8Mkg,30557 -django/conf/locale/fr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fr/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/fr/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/fr/formats.py,sha256=3cj753pnN0YY-EUjyCIkiSAnpHpoE02eNB9UCtd2d88,1286 -django/conf/locale/fy/LC_MESSAGES/django.mo,sha256=9P7zoJtaYHfXly8d6zBoqkxLM98dO8uI6nmWtsGu-lM,2286 -django/conf/locale/fy/LC_MESSAGES/django.po,sha256=jveK-2MjopbqC9jWcrYbttIb4DUmFyW1_-0tYaD6R0I,19684 -django/conf/locale/fy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/fy/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/fy/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/fy/formats.py,sha256=mJXj1dHUnO883PYWPwuI07CNbjmnfBTQVRXZMg2hmOk,658 -django/conf/locale/ga/LC_MESSAGES/django.mo,sha256=abQpDgeTUIdZzldVuZLZiBOgf1s2YVSyrvEhxwl0GK8,14025 -django/conf/locale/ga/LC_MESSAGES/django.po,sha256=rppcWQVozZdsbl7Gud6KnJo6yDB8T0xH6hvIiLFi_zA,24343 -django/conf/locale/ga/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ga/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ga/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ga/formats.py,sha256=Kotsp4o-6XvJ1sQrxIaab3qEW2k4oyPdJhcqvlgbGnU,682 -django/conf/locale/gd/LC_MESSAGES/django.mo,sha256=EcPtHahWVl2locL8_S7j0m_AYIcHUAuyRAuyt-ImMmI,30071 -django/conf/locale/gd/LC_MESSAGES/django.po,sha256=ODcoe7qHwVYlTmwGWzmN0hx6JwwtioLLRAC_CElf-m4,32441 -django/conf/locale/gd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/gd/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/gd/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/gd/formats.py,sha256=tWbR1bTImiH457bq3pEyqdr4H2ONUdhOv2rZ2cYUdC8,715 -django/conf/locale/gl/LC_MESSAGES/django.mo,sha256=utB99vnkb5SLff8K0i3gFI8Nu_eirBxDEpFKbZ_voPY,14253 -django/conf/locale/gl/LC_MESSAGES/django.po,sha256=rvhCJsURGjM2ekm6NBjY5crVGc5lrQv2qpHj35dM3qc,23336 -django/conf/locale/gl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/gl/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/gl/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/gl/formats.py,sha256=Tr41ECf7XNn4iekgPGUSKI6-lDkcHj1SaHno5gPa5hw,757 -django/conf/locale/he/LC_MESSAGES/django.mo,sha256=h1yJEVG6RPx4Qt-D7GNVYZ7orT3tj72Ou6WjGC2ptFI,24599 -django/conf/locale/he/LC_MESSAGES/django.po,sha256=xzQP1QbnOrMlYBn15cZ7n6NUtKs57K_HLBxCFTpJKn4,29996 -django/conf/locale/he/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/he/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/he/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/he/formats.py,sha256=-3Yt81fQFRo7ZwRpwTdTTDLLtbMdGSyC5n5RWcnqINU,712 -django/conf/locale/hi/LC_MESSAGES/django.mo,sha256=Zi72xDA1RVm3S5Y9_tRA52_wke8PlvomklvUJBXwiF0,17619 -django/conf/locale/hi/LC_MESSAGES/django.po,sha256=R_DRspzGYZ5XxXS4OvpVD4EEVZ9LY3NzrfzD2LbXqIg,27594 -django/conf/locale/hi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hi/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/hi/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/hi/formats.py,sha256=dBY0JvWinGeNiDy4ZrnrtPaZQdwU7JugkzHE22C-M0A,684 -django/conf/locale/hr/LC_MESSAGES/django.mo,sha256=HP4PCb-i1yYsl5eqCamg5s3qBxZpS_aXDDKZ4Hlbbcc,19457 -django/conf/locale/hr/LC_MESSAGES/django.po,sha256=qeVJgKiAv5dKR2msD2iokSOApZozB3Gp0xqzC09jnvs,26329 -django/conf/locale/hr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hr/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/hr/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/hr/formats.py,sha256=raeIndCpFhC146U_RnfVZPgBzqyHSEYRmWytkuYXvsY,1802 -django/conf/locale/hsb/LC_MESSAGES/django.mo,sha256=2EIq5zZ9r51R_HmLA-qkXuaK_EX5RMncotQ_aImv0zo,29151 -django/conf/locale/hsb/LC_MESSAGES/django.po,sha256=pK8JDHotB8FtQ5XgOVF-oNKaSh7FELTSyBkuEEojvoY,31395 -django/conf/locale/hu/LC_MESSAGES/django.mo,sha256=Ff2nkbTDAM1TyoExy_RrIWfVnP2vui4maBOPkNa1Tz4,28150 -django/conf/locale/hu/LC_MESSAGES/django.po,sha256=VWzRTIJq9LEbs1Mw2gZJNYgGuBj_TVx4W7HRozYlDP0,30435 -django/conf/locale/hu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/hu/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/hu/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/hu/formats.py,sha256=weO4ndGVlEDNDLKYi2YRtCeyxoUj2kSrYYPO_cV1I7Q,1008 -django/conf/locale/hy/LC_MESSAGES/django.mo,sha256=KfmTnB-3ZUKDHeNgLiego2Af0WZoHTuNKss3zE-_XOE,22207 -django/conf/locale/hy/LC_MESSAGES/django.po,sha256=kNKlJ5NqZmeTnnxdqhmU3kXiqT9t8MgAFgxM2V09AIc,28833 -django/conf/locale/ia/LC_MESSAGES/django.mo,sha256=drP4pBfkeaVUGO2tAB6r-IUu2cvDQiOWUJfPqsA0iEo,18430 -django/conf/locale/ia/LC_MESSAGES/django.po,sha256=VKowp9naiGfou8TrMutWPoUob-tDFB6W99yswHInNcw,24900 -django/conf/locale/id/LC_MESSAGES/django.mo,sha256=TumauWgn_bfPXoRncaFSU8Nd2v2yjyARohDEuQbjuxk,26351 -django/conf/locale/id/LC_MESSAGES/django.po,sha256=eMSszj_Tb_skzp1uzzMMg-lUD2nygpi4lfMDk9y33Gg,28402 -django/conf/locale/id/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/id/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/id/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/id/formats.py,sha256=1nQp6j9Vfn7RQLsGV1bGdrLpgouo_ePnLnRXpOfNjD8,1920 -django/conf/locale/ig/LC_MESSAGES/django.mo,sha256=tAZG5GKhEbrUCJtLrUxzmrROe1RxOhep8w-RR7DaDYo,27188 -django/conf/locale/ig/LC_MESSAGES/django.po,sha256=DB_I4JXKMY4M7PdAeIsdqnLSFpq6ImkGPCuY82rNBpY,28931 -django/conf/locale/ig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ig/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ig/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ig/formats.py,sha256=x9zavr9_4PcNhy3CslobP2vYY4eEyjHavNFYIQtMu_Q,1161 -django/conf/locale/io/LC_MESSAGES/django.mo,sha256=uI78C7Qkytf3g1A6kVWiri_CbS55jReO2XmRfLTeNs0,14317 -django/conf/locale/io/LC_MESSAGES/django.po,sha256=FyN4ZTfNPV5TagM8NEhRts8y_FhehIPPouh_MfslnWY,23124 -django/conf/locale/is/LC_MESSAGES/django.mo,sha256=maGVBXO0fgqWsPbW76d27KpZ7HWwJc3QYFlMiWp_-uk,25331 -django/conf/locale/is/LC_MESSAGES/django.po,sha256=MSXrykvaFIMMp07dGV656mwl4hvoapq42ltNtvvWlrI,28802 -django/conf/locale/is/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/is/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/is/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/is/formats.py,sha256=4BbmtZUfTOsQ818Qi6NEZ54QUwd2I8H2wbnaTe0Df74,688 -django/conf/locale/it/LC_MESSAGES/django.mo,sha256=cneOmXRVlavM4qFrTl8rQkwkDd-NmR0ZdPQaCEK2hP4,27181 -django/conf/locale/it/LC_MESSAGES/django.po,sha256=DS22B1bhZMO3Jm6238vdgt48HEf_Qe8YJpkknRaRfAo,29706 -django/conf/locale/it/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/it/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/it/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/it/formats.py,sha256=BZvSU2pEB_5L3onVxeUXmASHn7HihVmNxNgubOTkMF4,1801 -django/conf/locale/ja/LC_MESSAGES/django.mo,sha256=3sDJ_Y4RunXAjPPj0NNb_B75aT8DI4bb9yygXo6i6_s,29358 -django/conf/locale/ja/LC_MESSAGES/django.po,sha256=gzCSyYMMgm-ZbReIegT8uSBTVhu7THVqYvNwfdIaIyY,31753 -django/conf/locale/ja/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ja/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ja/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ja/formats.py,sha256=V6eTbaEUuWeJr-2NEAdQr08diKzOlFox1DbugC5xHpk,729 -django/conf/locale/ka/LC_MESSAGES/django.mo,sha256=4e8at-KNaxYJKIJd8r6iPrYhEdnaJ1qtPw-QHPMh-Sc,24759 -django/conf/locale/ka/LC_MESSAGES/django.po,sha256=pIgaLU6hXgVQ2WJp1DTFoubI7zHOUkkKMddwV3PTdt8,32088 -django/conf/locale/ka/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ka/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ka/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ka/formats.py,sha256=5QZHpBvZ91i_hjfv_aoI6tq1EuSNp6Oq_wqmrJlrJjg,1897 -django/conf/locale/kab/LC_MESSAGES/django.mo,sha256=x5Kyq2Uf3XNlQP06--4lT8Q1MacA096hZbyMJRrHYIc,7139 -django/conf/locale/kab/LC_MESSAGES/django.po,sha256=DsFL3IzidcAnPoAWIfIbGJ6Teop1yKPBRALeLYrdiFA,20221 -django/conf/locale/kk/LC_MESSAGES/django.mo,sha256=krjcDvA5bu591zcP76bWp2mD2FL1VUl7wutaZjgD668,13148 -django/conf/locale/kk/LC_MESSAGES/django.po,sha256=RgM4kzn46ZjkSDHMAsyOoUg7GdxGiZ-vaEOdf7k0c5A,23933 -django/conf/locale/km/LC_MESSAGES/django.mo,sha256=kEvhZlH7lkY1DUIHTHhFVQzOMAPd_-QMItXTYX0j1xY,7223 -django/conf/locale/km/LC_MESSAGES/django.po,sha256=QgRxEiJMopO14drcmeSG6XEXQpiAyfQN0Ot6eH4gca8,21999 -django/conf/locale/km/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/km/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/km/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/km/formats.py,sha256=o0v-vZQaH-v-7ttAc0H0tSWAQPYQlxHDm0tvLzuPJfw,750 -django/conf/locale/kn/LC_MESSAGES/django.mo,sha256=fQ7AD5tUiV_PZFBxUjNPQN79dWBJKqfoYwRdrOaQjU4,17515 -django/conf/locale/kn/LC_MESSAGES/django.po,sha256=fS4Z7L4NGVQ6ipZ7lMHAqAopTBP0KkOc-eBK0IYdbBE,28133 -django/conf/locale/kn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/kn/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/kn/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/kn/formats.py,sha256=FK0SWt0_88-SJkA1xz01sKOkAce5ZEyF-F0HUlO5N4k,680 -django/conf/locale/ko/LC_MESSAGES/django.mo,sha256=90B0gq7bHX3aKFcA2g2kDYaZ4r4DN3ISuSSfdxdjVEk,28042 -django/conf/locale/ko/LC_MESSAGES/django.po,sha256=8fdsBZa5QWvYJWqDHyzSwnMdUgW1IHs7P9q4idlcF0U,30518 -django/conf/locale/ko/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ko/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ko/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ko/formats.py,sha256=XTtpMsB_y_rRjsBoEV3ZXl77MLnlh0tcW0vj1o0I_WM,2125 -django/conf/locale/ky/LC_MESSAGES/django.mo,sha256=vqClhD-m9-q4wtJNhk_yldY9I5nV9fk_knQUMoQqhxw,31241 -django/conf/locale/ky/LC_MESSAGES/django.po,sha256=c8PWH-YSCUhorkgNk4fe5B-QUGD-0Kx7KwXJ21ddz4A,32934 -django/conf/locale/ky/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ky/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ky/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ky/formats.py,sha256=EtnZLr0bi2-yShgyfOIseNVRUtWQEp1-0N5FW5gQv4s,1220 -django/conf/locale/lb/LC_MESSAGES/django.mo,sha256=tQSJLQUeD5iUt-eA2EsHuyYqsCSYFtbGdryATxisZsc,8008 -django/conf/locale/lb/LC_MESSAGES/django.po,sha256=GkKPLO3zfGTNync-xoYTf0vZ2GUSAotAjfPSP01SDMU,20622 -django/conf/locale/lt/LC_MESSAGES/django.mo,sha256=VWrkGGbkN_1UKH9QJcPqKVSRIY2JSJjK23B7oXQqpcA,22750 -django/conf/locale/lt/LC_MESSAGES/django.po,sha256=GDdmsy8FopCM8_VTQKoeGWB918aCT1su4VZktAbnmqA,28534 -django/conf/locale/lt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/lt/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/lt/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/lt/formats.py,sha256=tEP5X-VHEikeb7BBkWoW4uuJQw6_OfVh5l_x_hKoGGU,1679 -django/conf/locale/lv/LC_MESSAGES/django.mo,sha256=uOSvBE4T8OlUlblnL5eMznsMyzR3nUxiXrOZV7RZ8ww,28134 -django/conf/locale/lv/LC_MESSAGES/django.po,sha256=D7rhzEwFNwXglsrYA-me0aYGmJQ1FSxqPVEc522FJRk,30522 -django/conf/locale/lv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/lv/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/lv/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/lv/formats.py,sha256=72AwivAdil7DNTMeaZTRAHXt04PuN6gkw4uDeODlIpM,1755 -django/conf/locale/mk/LC_MESSAGES/django.mo,sha256=cHNERALIwiuMXcQmajHtzzEdo9O3ut82d03kvZURn50,23041 -django/conf/locale/mk/LC_MESSAGES/django.po,sha256=6ValPJeAYumnyUrJ-Rf0pOkWMhHoGE-kN_dfS8Oh2EE,29816 -django/conf/locale/mk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/mk/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/mk/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/mk/formats.py,sha256=8FUX0RYKaUN3_9g9JcGCl-W7q4_U-rUwgSDd5B6F7zE,1493 -django/conf/locale/ml/LC_MESSAGES/django.mo,sha256=NTiGRfaWimmV1bxyqzDeN6fqxxtiobN9MbRVeo1qWYg,32498 -django/conf/locale/ml/LC_MESSAGES/django.po,sha256=gvHg9YKgEp2W6sFKYtdp8eU0ZnHues_rw4LnilkAdmQ,38035 -django/conf/locale/ml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ml/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ml/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ml/formats.py,sha256=sr2fzOex-HRdvbYTr_bUiZFSQWyPpN2y5eq_h6zyceQ,1620 -django/conf/locale/mn/LC_MESSAGES/django.mo,sha256=sd860BHXfgAjDzU3CiwO3JirA8S83nSr4Vy3QUpXHyU,24783 -django/conf/locale/mn/LC_MESSAGES/django.po,sha256=VBgXVee15TTorC7zwYFwmHM4qgpYy11yclv_u7UTNwA,30004 -django/conf/locale/mn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/mn/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/mn/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/mn/formats.py,sha256=ET9fum7iEOCGRt9E-tWXjvHHvr9YmAR5UxmEHXjJsTc,676 -django/conf/locale/mr/LC_MESSAGES/django.mo,sha256=aERpEBdJtkSwBj6zOtiKDaXuFzepi8_IwvPPHi8QtGU,1591 -django/conf/locale/mr/LC_MESSAGES/django.po,sha256=GFtk4tVQVi8b7N7KEhoNubVw_PV08pyRvcGOP270s1Q,19401 -django/conf/locale/my/LC_MESSAGES/django.mo,sha256=SjYOewwnVim3-GrANk2RNanOjo6Hy2omw0qnpkMzTlM,2589 -django/conf/locale/my/LC_MESSAGES/django.po,sha256=b_QSKXc3lS2Xzb45yVYVg307uZNaAnA0eoXX2ZmNiT0,19684 -django/conf/locale/nb/LC_MESSAGES/django.mo,sha256=tOIoVkMjvfb1GNQQFQLVeyKTM9QtePu7Fuc3m8jaiCw,26204 -django/conf/locale/nb/LC_MESSAGES/django.po,sha256=10Ta_ztB4B4C_szXFuKBdktxiYdf3Ve6AdUvrrHKZLw,28448 -django/conf/locale/nb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/nb/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/nb/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/nb/formats.py,sha256=gfpEc1o0dLP11NK8miHV-jDMLxWzGvxYv8eayXbkbwM,1571 -django/conf/locale/ne/LC_MESSAGES/django.mo,sha256=BcK8z38SNWDXXWVWUmOyHEzwk2xHEeaW2t7JwrxehKM,27248 -django/conf/locale/ne/LC_MESSAGES/django.po,sha256=_Kj_i2zMb7JLU7EN7Z7JcUn89YgonJf6agSFCjXa49w,33369 -django/conf/locale/nl/LC_MESSAGES/django.mo,sha256=yIiuxrpS6L0qVxm11jnXphVICeyer7Dp-LwSmfb1omQ,27117 -django/conf/locale/nl/LC_MESSAGES/django.po,sha256=S-T7QOXjAJoJz2Vsb1uWQi0h69y9bWdeG9LnYrvmkQ4,29653 -django/conf/locale/nl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/nl/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/nl/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/nl/formats.py,sha256=2z34kqQeiIUg5P4Yme0sHw5r65GkO_iTsxpXhBZBcqM,4095 -django/conf/locale/nn/LC_MESSAGES/django.mo,sha256=8CoLejnImo9TMbt-CR7NK8WAbX3wm89AgZOuPn-werQ,13212 -django/conf/locale/nn/LC_MESSAGES/django.po,sha256=AWPfAtzROtcEjxr0YWGTcNBWF7qnyF3wxhGkLiBIQ5k,22582 -django/conf/locale/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/nn/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/nn/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/nn/formats.py,sha256=gfpEc1o0dLP11NK8miHV-jDMLxWzGvxYv8eayXbkbwM,1571 -django/conf/locale/os/LC_MESSAGES/django.mo,sha256=LBpf_dyfBnvGOvthpn5-oJuFiSNHrgiVHBzJBR-FxOw,17994 -django/conf/locale/os/LC_MESSAGES/django.po,sha256=WYlAnNYwGFnH76Elnnth6YP2TWA-fEtvV5UinnNj7AA,26278 -django/conf/locale/pa/LC_MESSAGES/django.mo,sha256=H1hCnQzcq0EiSEaayT6t9H-WgONO5V4Cf7l25H2930M,11253 -django/conf/locale/pa/LC_MESSAGES/django.po,sha256=26ifUdCX9fOiXfWvgMkOXlsvS6h6nNskZcIBoASJec4,23013 -django/conf/locale/pl/LC_MESSAGES/django.mo,sha256=kKhmPiiv4Azyp5iQ5KrT1GYgrPnLFDhE-844bwsGXM0,29515 -django/conf/locale/pl/LC_MESSAGES/django.po,sha256=6eVHJOqC-cB7Lz0P8evDO3-vTYCBwTDco2dDjBl5sWQ,33024 -django/conf/locale/pl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/pl/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/pl/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/pl/formats.py,sha256=6aBumG-WeA7mWnDlfoP0_VadHiBZdYXCvPwT6JG2md8,1038 -django/conf/locale/pt/LC_MESSAGES/django.mo,sha256=nlj_L7Z2FkXs1w6wCGGseuZ_U-IecnlfYRtG5jPkGrs,20657 -django/conf/locale/pt/LC_MESSAGES/django.po,sha256=ETTedbjU2J4FLi2QDHNN8C7zlAsvLWNUlYzkEV1WB6s,26224 -django/conf/locale/pt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/pt/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/pt/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/pt/formats.py,sha256=LeVTwDFRHkY9786T-lZx-iKOHTPiFReAiUPYdbrDcmI,1522 -django/conf/locale/pt_BR/LC_MESSAGES/django.mo,sha256=xr4qqMU2aQnCzUzZTYhKap-C_a2G0GCyyD9ADFCjrlk,26879 -django/conf/locale/pt_BR/LC_MESSAGES/django.po,sha256=DnDqTy4jV8uRG-6KqfLKu_Dqspt0vLBxuzaGEcA8l4I,30340 -django/conf/locale/pt_BR/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/pt_BR/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/pt_BR/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/pt_BR/formats.py,sha256=YvB8w7UVjacsAQgbSY76tQTX-W3pucfeAGPFIHwWcBo,1283 -django/conf/locale/ro/LC_MESSAGES/django.mo,sha256=IMUybfJat0koxf_jSv6urQQuiHlldUhjrqo3FR303WA,22141 -django/conf/locale/ro/LC_MESSAGES/django.po,sha256=mdMWVR6kXJwUSxul2bpu3IoWom6kWDiES6Iw5ziynj0,27499 -django/conf/locale/ro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ro/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ro/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ro/formats.py,sha256=hpxpg6HcFGX5HFpypZ-GA4GkAsXCWuivMHLyyV1U2Rw,928 -django/conf/locale/ru/LC_MESSAGES/django.mo,sha256=hcOOvE3etglSQaeXSfBWqbrehuh3lmZFe-KdIp3Y_Dc,37556 -django/conf/locale/ru/LC_MESSAGES/django.po,sha256=YPgQU89uSq2ydGg9mAdbZ_RKRBRtMrnsnDB9RDP3Mw4,40614 -django/conf/locale/ru/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ru/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ru/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ru/formats.py,sha256=o9xwvKn2hIshuaZ4nea4Ecx-jBhxTzPDLg2W-gygkLw,1116 -django/conf/locale/sk/LC_MESSAGES/django.mo,sha256=M3eLAQW6d4N8fgIeg9L5rcuMFjUbM4Y02YqIbbQRqCE,22177 -django/conf/locale/sk/LC_MESSAGES/django.po,sha256=g4-ioagq5vYN_Te90XqVTCU8hNiN-akD-vH9X7K7r6A,27943 -django/conf/locale/sk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sk/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/sk/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/sk/formats.py,sha256=YXxNfnkRJvAei2la5L-9m1IplCOouo3Jhxn0YKpSZ0w,1064 -django/conf/locale/sl/LC_MESSAGES/django.mo,sha256=uaPbjsAAam_SrzenHjeHgTC3Pxn6BEecXgnDY9HOzwg,21921 -django/conf/locale/sl/LC_MESSAGES/django.po,sha256=MZ8Lz3dN5JSxw7l8bFRN0ozeW4Sue0jnRURm2zpOcuI,27860 -django/conf/locale/sl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sl/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/sl/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/sl/formats.py,sha256=iIH0ZrXpUEDQ1NvzND-e-UGAHiM8d4NDha8o9U1YPFY,1798 -django/conf/locale/sq/LC_MESSAGES/django.mo,sha256=N2T903FEIbqK32jnNC0i-fuCTbDO-eDaeEycWoQY-tw,27528 -django/conf/locale/sq/LC_MESSAGES/django.po,sha256=x9SjC2huOVlGG9LHKPX4kQIj3liP-_BACWucl1UrBX4,29741 -django/conf/locale/sq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sq/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/sq/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/sq/formats.py,sha256=X7IXRLlVWmlgNSa2TSvshv8Vhtjfv0V1Okg0adqVl3o,688 -django/conf/locale/sr/LC_MESSAGES/django.mo,sha256=DfrIpRYYwX-WMonyb5ZxPVGEx-tPnZph865JGtlbBi4,33665 -django/conf/locale/sr/LC_MESSAGES/django.po,sha256=I6N4KsxsHiA5pq9TgAYvgywNWpFvODqtlQwyqlcm4vg,35981 -django/conf/locale/sr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sr/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/sr/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/sr/formats.py,sha256=1v-fbUFCpU1mjwQJX8-qZMFYUU0-d-9w_uFJ7NgMweY,1754 -django/conf/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=GU7eUMfTg9dhnEu3j-JLR9ODD9WV-UXqQ_1Htn559fg,20081 -django/conf/locale/sr_Latn/LC_MESSAGES/django.po,sha256=yGYjQHnOSn82EHRIyGHS_l54IK0bJ4I_sx1sP4xP-zY,26192 -django/conf/locale/sr_Latn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sr_Latn/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/sr_Latn/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/sr_Latn/formats.py,sha256=1v-fbUFCpU1mjwQJX8-qZMFYUU0-d-9w_uFJ7NgMweY,1754 -django/conf/locale/sv/LC_MESSAGES/django.mo,sha256=UEnIZt9DYHRzPDsISXQkRLxMUmB42jUTe3EDWDZ1vRo,20646 -django/conf/locale/sv/LC_MESSAGES/django.po,sha256=6ZfuM8tUmG7trlqgRX-IEjneRpd9ZJdhoKmbM2n_-VQ,26135 -django/conf/locale/sv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/sv/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/sv/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/sv/formats.py,sha256=46MJnftY5MjzTqgvNfBTV-nVAkbY--8NbXtiLFhT_Lg,1374 -django/conf/locale/sw/LC_MESSAGES/django.mo,sha256=aUmIVLANgSCTK5Lq8QZPEKWjZWnsnBvm_-ZUcih3J6g,13534 -django/conf/locale/sw/LC_MESSAGES/django.po,sha256=GOE6greXZoLhpccsfPZjE6lR3G4vpK230EnIOdjsgPk,22698 -django/conf/locale/ta/LC_MESSAGES/django.mo,sha256=WeM8tElbcmL11P_D60y5oHKtDxUNWZM9UNgXe1CsRQ4,7094 -django/conf/locale/ta/LC_MESSAGES/django.po,sha256=kgHTFqysEMj1hqktLr-bnL1NRM715zTpiwhelqC232s,22329 -django/conf/locale/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/ta/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/ta/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/ta/formats.py,sha256=LbLmzaXdmz4UbzNCbINYOJLggyU1ytxWAME3iHVt9NY,682 -django/conf/locale/te/LC_MESSAGES/django.mo,sha256=Sk45kPC4capgRdW5ImOKYEVxiBjHXsosNyhVIDtHLBc,13259 -django/conf/locale/te/LC_MESSAGES/django.po,sha256=IQxpGTpsKUtBGN1P-KdGwvE7ojNCqKqPXEvYD3qT5A4,25378 -django/conf/locale/te/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/te/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/te/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/te/formats.py,sha256=aSddq7fhlOce3zBLdTNDQA5L_gfAhsmKRCuyQ8O5TyY,680 -django/conf/locale/tg/LC_MESSAGES/django.mo,sha256=ePzS2pD84CTkHBaiaMyXBxiizxfFBjHdsGH7hCt5p_4,28497 -django/conf/locale/tg/LC_MESSAGES/django.po,sha256=oSKu3YT3griCrDLPqptZmHcuviI99wvlfX6I6nLJnDk,33351 -django/conf/locale/tg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/tg/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/tg/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/tg/formats.py,sha256=wM47-gl6N2XbknMIUAvNmqxNyso6bNnwU11RzoLK3RM,1202 -django/conf/locale/th/LC_MESSAGES/django.mo,sha256=SJeeJWbdF-Lae5BendxlyMKqx5zdDmh3GCQa8ER5FyY,18629 -django/conf/locale/th/LC_MESSAGES/django.po,sha256=K4ITjzHLq6DyTxgMAfu3CoGxrTd3aG2J6-ZxQj2KG1U,27507 -django/conf/locale/th/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/th/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/th/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/th/formats.py,sha256=vBGsPtMZkJZN0gVcX3eCDVE3KHsjJJ94EW2_9tCT0W4,1072 -django/conf/locale/tk/LC_MESSAGES/django.mo,sha256=CWOvY9t2CRQeOofzlKPYDf_BB-d8xf7wjkorFQR2Rwo,27149 -django/conf/locale/tk/LC_MESSAGES/django.po,sha256=S-tW8FJohP4mMoyV9kfuqvvbKSpi9Xr6I6hxIajf-Og,29143 -django/conf/locale/tk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/tk/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/tk/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/tk/formats.py,sha256=wM47-gl6N2XbknMIUAvNmqxNyso6bNnwU11RzoLK3RM,1202 -django/conf/locale/tr/LC_MESSAGES/django.mo,sha256=UQxQByV9iA795tI6l7xxG7VTdYmVpVDz8SAEN4nvfIU,27815 -django/conf/locale/tr/LC_MESSAGES/django.po,sha256=JeYJKlUvVD0rCHQm1Z_U9_6c4wep4cCMeITdmylAtkI,30164 -django/conf/locale/tr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/tr/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/tr/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/tr/formats.py,sha256=bzEkWCwULHmwyMHqN-1ACBn6Lr8VbvoL9TuvO4KInVI,1032 -django/conf/locale/tt/LC_MESSAGES/django.mo,sha256=r554DvdPjD_S8hBRjW8ehccEjEk8h7czQsp46FZZ_Do,14500 -django/conf/locale/tt/LC_MESSAGES/django.po,sha256=W8QgEAH7yXNmjWoF-UeqyVAu5jEMHZ5MXE60e5sawJc,24793 -django/conf/locale/udm/LC_MESSAGES/django.mo,sha256=cIf0i3TjY-yORRAcSev3mIsdGYT49jioTHZtTLYAEyc,12822 -django/conf/locale/udm/LC_MESSAGES/django.po,sha256=n9Az_8M8O5y16yE3iWmK20R9F9VoKBh3jR3iKwMgFlY,23113 -django/conf/locale/uk/LC_MESSAGES/django.mo,sha256=5eq_PnXRxEED_cYxneFTZ_GZuJX6X1zi07kZCQ_JBjc,28305 -django/conf/locale/uk/LC_MESSAGES/django.po,sha256=201SVYSNPZfKeET5embqBDUjyKQLkYdaXhSUWXTuA-E,34264 -django/conf/locale/uk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/uk/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/uk/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/uk/formats.py,sha256=R4i56pYlss2Ui6zyDT5OvwFZq0SBIxzf4hsyzmnip5U,1268 -django/conf/locale/ur/LC_MESSAGES/django.mo,sha256=M6R2DYFRBvcVRAsgVxVOLvH3e8v14b2mJs650UlUb2I,12291 -django/conf/locale/ur/LC_MESSAGES/django.po,sha256=Lr0DXaPqWtCFAxn10BQ0vlvZIMNRvCg_QJQxAC01eWk,23479 -django/conf/locale/uz/LC_MESSAGES/django.mo,sha256=c8eHLqubZqScsU8LjGK-j2uAGeWzHCSmCy-tYu9x_FA,27466 -django/conf/locale/uz/LC_MESSAGES/django.po,sha256=TxmmhZCC1zrAgo0xM0JQKywju0XBd1BujMKZ9HtOLKY,29376 -django/conf/locale/uz/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/uz/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/uz/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/uz/formats.py,sha256=VJC2U61827xc8v7XTv3eKfySbZUHL34KpCmQyWMKRQ0,1199 -django/conf/locale/vi/LC_MESSAGES/django.mo,sha256=TMsBzDnf9kZndozqVUnEKtKxfH2N1ajLdrm8hJ4HkYI,17396 -django/conf/locale/vi/LC_MESSAGES/django.po,sha256=tL2rvgunvaN_yqpPSBYAKImFDaFaeqbnpEw_egI11Lo,25342 -django/conf/locale/vi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/vi/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/vi/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/vi/formats.py,sha256=H_lZwBQUKUWjtoN0oZOxXw0SsoNWnXg3pKADPYX3RrI,762 -django/conf/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=KJlLI4Cj46JzmoUnOSBr6439VaKZeHZXQzQ-BtGjBcw,25899 -django/conf/locale/zh_Hans/LC_MESSAGES/django.po,sha256=hYPhfBXukT7jJDOZh__ce5GZNT3k26lgrRN7Q2KY5us,28598 -django/conf/locale/zh_Hans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/zh_Hans/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/zh_Hans/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/zh_Hans/formats.py,sha256=U-1yJketLR187TFCBAzgUCt0UlZNvCxoLgBkYhZz2Ts,1745 -django/conf/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=1U3cID-BpV09p0sgYryzJCCApQYVlCtb4fJ5IPB8wtc,19560 -django/conf/locale/zh_Hant/LC_MESSAGES/django.po,sha256=buHXYy_UKFoGW8xz6PNrSwbMx-p8gwmPRgdWGBYwT2U,24939 -django/conf/locale/zh_Hant/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/locale/zh_Hant/__pycache__/__init__.cpython-38.pyc,, -django/conf/locale/zh_Hant/__pycache__/formats.cpython-38.pyc,, -django/conf/locale/zh_Hant/formats.py,sha256=U-1yJketLR187TFCBAzgUCt0UlZNvCxoLgBkYhZz2Ts,1745 -django/conf/project_template/manage.py-tpl,sha256=JDuGG02670bELmn3XLUSxHFZ8VFhqZTT_oN9VbT5Acc,674 -django/conf/project_template/project_name/__init__.py-tpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/conf/project_template/project_name/asgi.py-tpl,sha256=q_6Jo5tLy6ba-S7pLs3YTK7byxSBmU0oYylYJlNvwHI,428 -django/conf/project_template/project_name/settings.py-tpl,sha256=TPVXfKhDXzT4oXv_zJTFX1p2LCACEqV_09hg9GCuO0U,3195 -django/conf/project_template/project_name/urls.py-tpl,sha256=vrokVPIRgYajr3Osw2_D1gCndrJ-waGU3tkpnzhWync,775 -django/conf/project_template/project_name/wsgi.py-tpl,sha256=OCfjjCsdEeXPkJgFIrMml_FURt7msovNUPnjzb401fs,428 -django/conf/urls/__init__.py,sha256=kHy9_mgebuUHAbAMFrFJ1badWEJvbeZH_YMZA1FC_zQ,656 -django/conf/urls/__pycache__/__init__.cpython-38.pyc,, -django/conf/urls/__pycache__/i18n.cpython-38.pyc,, -django/conf/urls/__pycache__/static.cpython-38.pyc,, -django/conf/urls/i18n.py,sha256=TG_09WedGtcOhijJtDxxcQkcOU15Dikq0NkLGVvwvCI,1184 -django/conf/urls/static.py,sha256=WHZ7JNbBEQVshD0-sdImvAW635uV-msIyP2VYntzrPk,886 -django/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/__pycache__/__init__.cpython-38.pyc,, -django/contrib/admin/__init__.py,sha256=bCfh_odjqF7M6XGgRJciYlwNwEdbW6TFXVMYH-OJRMg,1090 -django/contrib/admin/__pycache__/__init__.cpython-38.pyc,, -django/contrib/admin/__pycache__/actions.cpython-38.pyc,, -django/contrib/admin/__pycache__/apps.cpython-38.pyc,, -django/contrib/admin/__pycache__/checks.cpython-38.pyc,, -django/contrib/admin/__pycache__/decorators.cpython-38.pyc,, -django/contrib/admin/__pycache__/exceptions.cpython-38.pyc,, -django/contrib/admin/__pycache__/filters.cpython-38.pyc,, -django/contrib/admin/__pycache__/forms.cpython-38.pyc,, -django/contrib/admin/__pycache__/helpers.cpython-38.pyc,, -django/contrib/admin/__pycache__/models.cpython-38.pyc,, -django/contrib/admin/__pycache__/options.cpython-38.pyc,, -django/contrib/admin/__pycache__/sites.cpython-38.pyc,, -django/contrib/admin/__pycache__/tests.cpython-38.pyc,, -django/contrib/admin/__pycache__/utils.cpython-38.pyc,, -django/contrib/admin/__pycache__/widgets.cpython-38.pyc,, -django/contrib/admin/actions.py,sha256=S7p0NpRADNwhPidrN3rKN_LCJaFCKHXX9wcJyVpplsw,3018 -django/contrib/admin/apps.py,sha256=p0EKbVZEU82JyEKrGA5lIY6uPCWgJGzyJM_kij-Juvg,766 -django/contrib/admin/checks.py,sha256=qcYCi2Nkp5nGAyHK-DA082Eovw1MFiPvXWZee4qiJtY,45423 -django/contrib/admin/decorators.py,sha256=jQS6FQ2PxaqGYTYNa4jdx-qSVPV9Uf5bRhbC9PF0BMM,969 -django/contrib/admin/exceptions.py,sha256=lWAupa8HTBROgZbDeYS1n_vOl_85dcmPhDwz0-Ke1ug,331 -django/contrib/admin/filters.py,sha256=T6wtE6En9nJrmVVXFprsDEMkU7-CCRyEuuZmGW7cGPE,19534 -django/contrib/admin/forms.py,sha256=uJth9S0kX0yijCg6uvbcV4fil5bAoJsZmoKWmvg31tA,1021 -django/contrib/admin/helpers.py,sha256=y6fzSTlqVkz1YHVRArdYG2t7tSWbnMOV0MvjCX61l8c,15538 -django/contrib/admin/locale/af/LC_MESSAGES/django.mo,sha256=3VNfQp5JaJy4XRqxM7Uu9uKHDihJCvKXYhdWPXOofc8,16216 -django/contrib/admin/locale/af/LC_MESSAGES/django.po,sha256=R2ix5AnK5X35wnhjT38K85JgwewQkmwrYwyVx4YqikQ,17667 -django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo,sha256=dmctO7tPkPwdbpp-tVmZrR0QLZekrJ1aE3rnm6vvUQM,4477 -django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po,sha256=1wwspqp0rsSupVes7zjYLyNT_wY4lFefqhpXH5wBdJM,4955 -django/contrib/admin/locale/am/LC_MESSAGES/django.mo,sha256=UOwMxYH1r5AEBpu-P9zxHazk3kwI4CtsPosGIYtl6Hs,8309 -django/contrib/admin/locale/am/LC_MESSAGES/django.po,sha256=NmsIZoBEQwyBIqbKjkwCJ2_iMHnMKB87atoT0iuNXrw,14651 -django/contrib/admin/locale/ar/LC_MESSAGES/django.mo,sha256=e1TPsXhFUpNGLgdsOdF3VJgX4fqozB3jGhDLAY-DiOk,19693 -django/contrib/admin/locale/ar/LC_MESSAGES/django.po,sha256=5Kw2JgaC7H6UNoblB2ZmHrFCsS_KkT0Z8kLooogSk78,21173 -django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo,sha256=5G1bV_2YhASuQqUgYY6mQDoV3zcJlRx70iPqDUxcCbU,5843 -django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po,sha256=BMi2aVzpeJtSIbpB0Ivhbj5WaKgNlrpQquYRqFcWpl8,6502 -django/contrib/admin/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=IJlPu_ROkcvVEyTej2un1WMuCueOYBMYNxAmTCK7NbU,19657 -django/contrib/admin/locale/ar_DZ/LC_MESSAGES/django.po,sha256=qEHImGRyP-cOeA66387z9glbIhUEeliq-dI-iLhuweM,21027 -django/contrib/admin/locale/ar_DZ/LC_MESSAGES/djangojs.mo,sha256=bNJysHeUsNaSg2BgFh9r4FEnRAee9w6DNN4OvfQfYnc,5721 -django/contrib/admin/locale/ar_DZ/LC_MESSAGES/djangojs.po,sha256=dGIamisxnWLYkxJOsJQLqXTy9zC3B6Tn3gtPKlRiMBQ,6302 -django/contrib/admin/locale/ast/LC_MESSAGES/django.mo,sha256=3uffu2zPbQ1rExUsG_ambggq854Vy8HbullkCYdazA4,2476 -django/contrib/admin/locale/ast/LC_MESSAGES/django.po,sha256=wCWFh9viYUhTGOX0mW3fpN2z0kdE6b7IaA-A5zzb3Yo,11676 -django/contrib/admin/locale/ast/LC_MESSAGES/djangojs.mo,sha256=kiG-lzQidkXER5s_6POO1G91mcAv9VAkAXI25jdYBLE,2137 -django/contrib/admin/locale/ast/LC_MESSAGES/djangojs.po,sha256=s4s6aHocTlzGcFi0p7cFGTi3K8AgoPvFCv7-Hji6At0,4085 -django/contrib/admin/locale/az/LC_MESSAGES/django.mo,sha256=pOABf7ef6c4Apn3e0YE0bm-GJzXfKUsBYL7iUK5NdQs,14807 -django/contrib/admin/locale/az/LC_MESSAGES/django.po,sha256=ZQVARobZ9XzSbP9HLDV8DhmQpe08ExhoTj5RBpFu__g,17299 -django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo,sha256=3P3iKDFi9G1iMmxTVHWol1FgczmMl4gYHRoBT5W3fYw,4598 -django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po,sha256=BpFkIKu93AVAYKPnCKSPswCIAm8L2909oh6NJSZJLu8,5125 -django/contrib/admin/locale/be/LC_MESSAGES/django.mo,sha256=CBomfJ6N52rJdkbZPuuyODMPPS7AJZnC4vUS8Qt_D5k,21096 -django/contrib/admin/locale/be/LC_MESSAGES/django.po,sha256=9nPIJ5aw1i4cTn_LN706sTnNWNngFt_1HArzCU3pE3M,22364 -django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo,sha256=vOaMe-sc-0hHcxlb9Sk8o8yqZCfDgI0Ml3YbbskL7eI,5908 -django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po,sha256=h8ARmq2hTCt_D5SSmycOX21-9SbOVWKda1gUUkeloN0,6463 -django/contrib/admin/locale/bg/LC_MESSAGES/django.mo,sha256=iJzYciumvR_r42WmC3yjTdiWrQmS94p_x0gTWvV9lOc,20070 -django/contrib/admin/locale/bg/LC_MESSAGES/django.po,sha256=9ouezfohVViX6NFG57IFXTzcuMSvAafd6NKncMFJBds,21493 -django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo,sha256=TGNzP1smzgZmo5-s4VKD1E-nWTMtCSjp_hco1a0j4BQ,5565 -django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po,sha256=5uiQqnTyz0R-1vJTHqY0opwnQhMfgPoB-PxOkGpxNwk,6016 -django/contrib/admin/locale/bn/LC_MESSAGES/django.mo,sha256=fKmzDwzLp0Qlv4bvWscf0evanPRAXwR04B6IeJ7wGSw,15247 -django/contrib/admin/locale/bn/LC_MESSAGES/django.po,sha256=-go1WtUozfqbnKlUQr-jNnvEXf98eIZjq-C8KjRJ6NA,19812 -django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo,sha256=t_OiMyPMsR2IdH65qfD9qvQfpWbwFueNuY72XSed2Io,2313 -django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po,sha256=iFwEJi4k3ULklCq9eQNUhKVblivQPJIoC_6lbyEkotY,4576 -django/contrib/admin/locale/br/LC_MESSAGES/django.mo,sha256=yCuMwrrEB_H44UsnKwY0E87sLpect_AMo0GdBjMZRPs,6489 -django/contrib/admin/locale/br/LC_MESSAGES/django.po,sha256=WMU_sN0ENWgyEbKOm8uVQfTQh9sabvKihtSdMt4XQBM,13717 -django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo,sha256=n7Yx2k9sAVSNtdY-2Ao6VFsnsx4aiExZ3TF_DnnrKU0,1658 -django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po,sha256=gjg-VapbI9n_827CqNYhbtIQ8W9UcMmMObCsxCzReUU,4108 -django/contrib/admin/locale/bs/LC_MESSAGES/django.mo,sha256=44D550fxiO59Pczu5HZ6gvWEClsfmMuaxQWbA4lCW2M,8845 -django/contrib/admin/locale/bs/LC_MESSAGES/django.po,sha256=FrieR1JB4ssdWwYitJVpZO-odzPBKrW4ZsGK9LA595I,14317 -django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo,sha256=SupUK-RLDcqJkpLEsOVjgZOWBRKQMALZLRXGEnA623M,1183 -django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po,sha256=TOtcfw-Spn5Y8Yugv2OlPoaZ5DRwJjRIl-YKiyU092U,3831 -django/contrib/admin/locale/ca/LC_MESSAGES/django.mo,sha256=e1DVPxIYOO1kmf0AyuPfX0btv6_JA_DJkKdpsnymSXU,17166 -django/contrib/admin/locale/ca/LC_MESSAGES/django.po,sha256=37uCdR4zi4ycQhWeFanVNz8RwmU9Bkg4JXRmxrXJIgM,18760 -django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo,sha256=xEkD4j5aPzRddlLC8W3aCZ7ah5RHC-MKTgFXI2uTPTI,4519 -django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po,sha256=CLxLUlg5GUQyWa-SC-8QpKdmdcpuzJl6TXHNRlO2s_E,5098 -django/contrib/admin/locale/cs/LC_MESSAGES/django.mo,sha256=kdfKK6BUnysuDqKyv6REMmzA-_BgYy2BpXmieYVzSQY,17448 -django/contrib/admin/locale/cs/LC_MESSAGES/django.po,sha256=K7ZZGmEP9X8Vq1mir6VZHfaZS_4IcMuk0ZJI0uaX1QM,18941 -django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo,sha256=jnqU3fbLPR1Y0m665xzHoW2KCy9tBIjcAr4Zo-dg9TA,5054 -django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po,sha256=Pi3MW6zNs1cBxy9t0yC7i9oSKyKJzbVaLV4b3s-_z6s,5713 -django/contrib/admin/locale/cy/LC_MESSAGES/django.mo,sha256=7ifUyqraN1n0hbyTVb_UjRIG1jdn1HcwehugHBiQvHs,12521 -django/contrib/admin/locale/cy/LC_MESSAGES/django.po,sha256=bS_gUoKklZwd3Vs0YlRTt24-k5ure5ObTu-b5nB5qCA,15918 -django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo,sha256=fOCA1fXEmJw_QaXEISLkuBhaMnEmP1ssP9lhqdCCC3c,3801 -django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po,sha256=OVcS-3tlMJS_T58qnZbWLGczHwFyAjbuWr35YwuxAVM,5082 -django/contrib/admin/locale/da/LC_MESSAGES/django.mo,sha256=jTtKti7NsWwvMyDA_sD8EWFjWopp7pUaSc4B8Imk2GE,16680 -django/contrib/admin/locale/da/LC_MESSAGES/django.po,sha256=kBfGE2OfUXd-Q8UALsQDErpiwxeaQX0lP4d9FIvyBTM,18093 -django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo,sha256=9dScUYZLinHdHS9gmAKtxrYADJ71nL0uNFBb70u5y8Y,4484 -django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po,sha256=Vtu1bQ2UapC7VLudYBZOCyfN6G7hlW5vnx3f_yMvsA4,5137 -django/contrib/admin/locale/de/LC_MESSAGES/django.mo,sha256=Bf2WUKVyn8BpytW_v41pp4V-GtqvgeJ-12zB5pX5j7k,17517 -django/contrib/admin/locale/de/LC_MESSAGES/django.po,sha256=nXHESFCYsDtz_fwX3zhAGr6xzIlSOB6aDaVv3mloqoA,19021 -django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo,sha256=b_NzGtn_jeOUkPH_BweWuRtsT1Hts2AEDP-byynEB1I,4591 -django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po,sha256=usHJodylqb3QltvaYYfyhUeP9-OpLoAXUE3lRKTQD2w,5198 -django/contrib/admin/locale/dsb/LC_MESSAGES/django.mo,sha256=xxvchve6F4k4rgc5N8hlOotmv3-2y9kx-FQn-7506vY,17570 -django/contrib/admin/locale/dsb/LC_MESSAGES/django.po,sha256=74YowJk3U5JApK8luxJ32HFoj6RTuVsoi4yg6kf2i_U,18784 -django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.mo,sha256=vAX2cKOL01m_x1OnYxds-1SGNb4HJy0zKqmGReVbl5M,4983 -django/contrib/admin/locale/dsb/LC_MESSAGES/djangojs.po,sha256=ZInnSKY1PDbhBmydAjEl4jyu0fGrdzCcMt6J-yDt-AU,5503 -django/contrib/admin/locale/el/LC_MESSAGES/django.mo,sha256=7pnFzsUwA3Z3AdqccRmr2K6A2hfrhNGsvtFJFI0uOZU,23088 -django/contrib/admin/locale/el/LC_MESSAGES/django.po,sha256=vnMzGKYAAgZqo03IdyEJQv1jAMPIlQ2INh3P7cR2HDc,24662 -django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo,sha256=vfha6S1wDTxgteeprHdCY6j1SnSWDdbC67aoks7TVFw,5888 -django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po,sha256=GJQytMIHNrJeWWnpaoGud4M6aiJCtJ7csyXzmfS6GZs,6560 -django/contrib/admin/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admin/locale/en/LC_MESSAGES/django.po,sha256=FBxWjpNd8-k_q6UZ8fAKM6xNRKBRyiBFvb2deXR4x0o,23545 -django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po,sha256=yKHSTaV8gWsU8bcWZCSvJTJiQp91CFVagCDoTn5hwq0,6607 -django/contrib/admin/locale/en_AU/LC_MESSAGES/django.mo,sha256=DVjhYEbArfdAQLuE0YAG99eWxa9_eNEz2o9A6X6MrEY,2894 -django/contrib/admin/locale/en_AU/LC_MESSAGES/django.po,sha256=CO7AV-NmmmwnXyBIybSfNZLdXiavphWsd9LNZQNqDL4,11800 -django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.mo,sha256=LWNYXUicANYZeiNx4mb6pFpjnsaggPTxTBCbNKxPtFw,1714 -django/contrib/admin/locale/en_AU/LC_MESSAGES/djangojs.po,sha256=UZk0oHToRtHzlviraFzWcZlpVAOk_W2oq4NquxevQoE,3966 -django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo,sha256=pFkTMRDDj76WA91wtGPjUB7Pq2PN7IJEC54Tewobrlc,11159 -django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po,sha256=REUJMGLGRyDMkqh4kJdYXO9R0Y6CULFVumJ_P3a0nv0,15313 -django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo,sha256=hW325c2HlYIIdvNE308c935_IaDu7_qeP-NlwPnklhQ,3147 -django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po,sha256=Ol5j1-BLbtSIDgbcC0o7tg_uHImcjJQmkA4-kSmZY9o,4581 -django/contrib/admin/locale/eo/LC_MESSAGES/django.mo,sha256=Kq-XFhLK56KXwDE2r2x93w9JVFSxgXqCU_XKb38DxhU,16252 -django/contrib/admin/locale/eo/LC_MESSAGES/django.po,sha256=Yr37pm5u1xEb9vuUucJmbs9aPErpog9AP9nIr8GQpBU,17752 -django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo,sha256=I1Ue345qSHPmJpX4yiYgomQ8vMgshRt1S1D_ZVJWf7g,4452 -django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po,sha256=BdSRWCYCDxLxtbcPSfRdAMGoTRWOWaxRGpdCIm-3HA0,5040 -django/contrib/admin/locale/es/LC_MESSAGES/django.mo,sha256=xuKy1h77UlayYqn_G4JjJVb1Vy6nVUtiUmdy6MT544Q,17223 -django/contrib/admin/locale/es/LC_MESSAGES/django.po,sha256=YKlRrWfJ1-N_8U9kvLVF9umIfFTtBvw-EpPFsJBITWA,19165 -django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo,sha256=44RpmIC1vT7OGz4ubSAzoiU8OysfLsnueZcIqdF6gjQ,4627 -django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po,sha256=t2Jn5RZo7e-UzqVwgBAejuBceWCidWjXvd--cWEq6rI,5302 -django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo,sha256=qzOoMSod6ZNk-BhoiAgHyjUxTFk7Emef05A-4blJfEc,17592 -django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po,sha256=M_kTd6Nj7Oo-Uco3NwnZ7YlLC9BjFX1JUecCKIvODLY,18906 -django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo,sha256=zkJyZPZclEnVAPjH9Hqz77QnRlWm7wcUQIQY_qlRofo,4795 -django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po,sha256=7TcKxpkuQ3TiOP6tWyzZYu1CvJ_800xT4CmSE9PEe5M,5299 -django/contrib/admin/locale/es_CO/LC_MESSAGES/django.mo,sha256=0k8kSiwIawYCa-Lao0uetNPLUzd4m_me3tCAVBvgcSw,15156 -django/contrib/admin/locale/es_CO/LC_MESSAGES/django.po,sha256=4T_syIsVY-nyvn5gEAtfN-ejPrJSUpNT2dmzufxaBsE,17782 -django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.mo,sha256=PLS10KgX10kxyy7MUkiyLjqhMzRgkAFGPmzugx9AGfs,3895 -django/contrib/admin/locale/es_CO/LC_MESSAGES/djangojs.po,sha256=Y4bkC8vkJE6kqLbN8t56dR5670B06sB2fbtVzmQygK8,5176 -django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo,sha256=oZQndBnTu5o0IwQIZCKjTtS5MGhRgsDipzQuIniRgSE,11628 -django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po,sha256=oFhdB2JtS8zCPK5Zf9KFbm-B1M1u83nO5p0rfaVkL78,16138 -django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo,sha256=2w3CMJFBugP8xMOmXsDU82xUm8cWGRUGZQX5XjiTCpM,3380 -django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po,sha256=OP9cBsdCf3zZAXiKBMJPvY1AHwC_WE1k2vKlzVCtUec,4761 -django/contrib/admin/locale/es_VE/LC_MESSAGES/django.mo,sha256=himCORjsM-U3QMYoURSRbVv09i0P7-cfVh26aQgGnKg,16837 -django/contrib/admin/locale/es_VE/LC_MESSAGES/django.po,sha256=mlmaSYIHpa-Vp3f3NJfdt2RXB88CVZRoPEMfl-tccr0,18144 -django/contrib/admin/locale/es_VE/LC_MESSAGES/djangojs.mo,sha256=Zy-Hj_Mr2FiMiGGrZyssN7GZJrbxRj3_yKQFZKR36Ro,4635 -django/contrib/admin/locale/es_VE/LC_MESSAGES/djangojs.po,sha256=RI8CIdewjL3bAivniMOl7lA9tD7caP4zEo2WK71cX7c,5151 -django/contrib/admin/locale/et/LC_MESSAGES/django.mo,sha256=EcFbCw_IpbvbXdbcK4N7qgWQ03qeWwuR0nLJH4WgDWY,16466 -django/contrib/admin/locale/et/LC_MESSAGES/django.po,sha256=d39wVKjXOgDdTRghgELR0xcU-ZhENTmQqCkFtSwcP04,17911 -django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo,sha256=zz5w0acrz8cIa7YWLhkAk9MRu0WYbBPiXP9fpu8MFHM,4347 -django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po,sha256=mpTcyrvIhSwpz8LtZ7AR-R30RWMXVeMXYyJh4NvQRzw,4971 -django/contrib/admin/locale/eu/LC_MESSAGES/django.mo,sha256=sutek-yBmp0yA673dBWQLg11138KCcAn9cBdfl_oVJw,16336 -django/contrib/admin/locale/eu/LC_MESSAGES/django.po,sha256=uR2eY8Y6gS95UYOpd-OjjwFzOVfGCl3QOuWnH3QFCr4,17702 -django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo,sha256=bZHiuTFj8MNrO3AntBAY5iUhmCa6LSluGLYw504RKWg,4522 -django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po,sha256=eMpM70UTWIiCDigCgYVOZ9JKQ2IidYZxYcUWunvG8js,5051 -django/contrib/admin/locale/fa/LC_MESSAGES/django.mo,sha256=sf4By8eUwoXQLf20Bg_xbeeBziWQCJJHD6qSPCNI2l8,19770 -django/contrib/admin/locale/fa/LC_MESSAGES/django.po,sha256=AdPkTplO72E7NU4wvTmPNQfmwrPiHSIMPkcd4OS53n0,21261 -django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo,sha256=Rk8aJ5fq_iiwK_aome26hrryRTV3k9JTXuFWMNLhqFI,5356 -django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po,sha256=8CqgjfrlucH1E1xuXyjv7AfjInwaxLTDwPofhKfmXZI,6088 -django/contrib/admin/locale/fi/LC_MESSAGES/django.mo,sha256=IYKZxP-pH_AoPgkHZrEwKW_KUuzdhHG2NEj91SMnnOk,11797 -django/contrib/admin/locale/fi/LC_MESSAGES/django.po,sha256=sRO13UMW_2UwamfW07OZwX8G1nF9Q3oNEEYgvAx2CO4,15931 -django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo,sha256=ez7WTtE6OE878kSxqXniDOQY-wdURYEfxYQXBQJTVpg,4561 -django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po,sha256=rquknGvUFlWNLcrOc1wwhAPn63PZA48qBN8oWiINiQ0,5045 -django/contrib/admin/locale/fr/LC_MESSAGES/django.mo,sha256=zUUmfY9uaLKnQV_CvZH6zGtWSnzKw7MKCOP8_djFnx8,18325 -django/contrib/admin/locale/fr/LC_MESSAGES/django.po,sha256=-r7PYAjE_LBOF8qJZ6OeT3XSBU05P1tCe0Nu-z42QAU,19613 -django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo,sha256=mRR-ysg0oBpRux5MAt7zc7ZSv7GA7c-fIEXziNU4zBc,4707 -django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po,sha256=oFoFZxmABt_pwH7GJjbDo3sK0Wac_XDizdzXGpXnHbU,5246 -django/contrib/admin/locale/fy/LC_MESSAGES/django.mo,sha256=mWnHXGJUtiewo1F0bsuJCE_YBh7-Ak9gjTpwjOAv-HI,476 -django/contrib/admin/locale/fy/LC_MESSAGES/django.po,sha256=oSKEF_DInUC42Xzhw9HiTobJjE2fLNI1VE5_p6rqnCE,10499 -django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/admin/locale/fy/LC_MESSAGES/djangojs.po,sha256=efBDCcu43j4SRxN8duO5Yfe7NlpcM88kUPzz-qOkC04,2864 -django/contrib/admin/locale/ga/LC_MESSAGES/django.mo,sha256=cIOjVge5KC37U6g-0MMaP5p8N0XJxzK6oJqWNUw9jfI,15075 -django/contrib/admin/locale/ga/LC_MESSAGES/django.po,sha256=Qx1D0cEGIIPnO10I_83IfU3faEYpp0lm-KHg48lJMxE,17687 -django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo,sha256=G-9VfhiMcooTbAI1IMvbvUwj_h_ttNyxGS89nIgrpw4,5247 -django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po,sha256=DsDMYhm5PEpFBBGepf2iRD0qCkh2r45Y4tIHzFtjJAo,5920 -django/contrib/admin/locale/gd/LC_MESSAGES/django.mo,sha256=yurDs4pCJEvvC-Qd7V4O3evtHuQUU4-eKtPwBqm2HAI,18466 -django/contrib/admin/locale/gd/LC_MESSAGES/django.po,sha256=RqVgPVuB3y6ULy3lTxee1_9cRv3mn8uWcyoWl_UG97o,19765 -django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.mo,sha256=GwtvzwSO_lE6yHEdZLNl3Vzxk0E8KAjhJyIn6aSyc0s,5304 -django/contrib/admin/locale/gd/LC_MESSAGES/djangojs.po,sha256=RJv2lrB2UamHczIbCzzLBnEWodMLqgNX9ihofmL6XRo,5809 -django/contrib/admin/locale/gl/LC_MESSAGES/django.mo,sha256=_9JW7LdCw2on4M1oz3Iyl_VMrhrw_0oVIQl4h_rCX6g,13246 -django/contrib/admin/locale/gl/LC_MESSAGES/django.po,sha256=xqdcVwIX5zPxq471crW0yxcOYcbZVaRwKiKx-MAGiqk,16436 -django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo,sha256=YkT7l3U9ffSGqXmu6S41Ex0r7tbK-0BKH5lS6O8PAGs,3279 -django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po,sha256=EDccOpm1mpT8mVRvu5LBsq8nao50oP1V7aKEnuRmtF8,4803 -django/contrib/admin/locale/he/LC_MESSAGES/django.mo,sha256=vq46ZBK67ZmRBQaY9oP_5rTKzXGDIfYWEs_zM1eR_Nw,18109 -django/contrib/admin/locale/he/LC_MESSAGES/django.po,sha256=eVzhoSXRetzNkVi7BGIN3t6MjEf-I-DUiG3n1-4AOKA,19428 -django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo,sha256=14LdNNgLoQTtB49gWUMp32cywmgMRIwizD19p3CAgE4,5157 -django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po,sha256=rUeEfJBwQNNSrkxCpjPu3tKD2sc8DrBto4QOdUiuuY0,5737 -django/contrib/admin/locale/hi/LC_MESSAGES/django.mo,sha256=EogCHT8iAURSuE34kZ0kwEIoz5VjgUQUG2eAIqDxReU,18457 -django/contrib/admin/locale/hi/LC_MESSAGES/django.po,sha256=NcTFbFyHhWOIieUpzIVL7aSDWZ8ZNmfnv5gcxhON1zc,21770 -django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo,sha256=yCUHDS17dQDKcAbqCg5q8ualaUgaa9qndORgM-tLCIw,4893 -django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po,sha256=U9rb5tPMICK50bRyTl40lvn-tvh6xL_6o7xIPkzfKi0,6378 -django/contrib/admin/locale/hr/LC_MESSAGES/django.mo,sha256=3TR3uFcd0pnkDi551WaB9IyKX1aOazH7USxqc0lA0KQ,14702 -django/contrib/admin/locale/hr/LC_MESSAGES/django.po,sha256=qcW7tvZoWZIR8l-nMRexGDD8VlrOD7l5Fah6-ecilMk,17378 -django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo,sha256=KR34lviGYh1esCkPE9xcDE1pQ_q-RxK1R2LPjnG553w,3360 -django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po,sha256=w7AqbYcLtu88R3KIKKKXyRt2gwBBBnr-ulxONWbw01I,4870 -django/contrib/admin/locale/hsb/LC_MESSAGES/django.mo,sha256=xdFfD6IiKou_-oWJDKZt-L-FoxaYFXcqbh0LJ2tlXhQ,17310 -django/contrib/admin/locale/hsb/LC_MESSAGES/django.po,sha256=sBWUnTFK-d6ZAtmfk_RqyoreuXLZYeteOt75vvDl-bc,18520 -django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.mo,sha256=Mro-TJwfn6LHKeIqvnnGBdVkvdsRbbjEMAcoQIo_1GI,5054 -django/contrib/admin/locale/hsb/LC_MESSAGES/djangojs.po,sha256=fegO96m0wa0n1Ja88-muf0YysGJXDQycwIRXpkj2OVo,5577 -django/contrib/admin/locale/hu/LC_MESSAGES/django.mo,sha256=O_QBDJcYI_rVYvXdI3go3YA2Y1u-NOuKOwshF6Ic7bs,17427 -django/contrib/admin/locale/hu/LC_MESSAGES/django.po,sha256=Gt0lw5n8KxK0ReE0HWrMjPFOXxVGZxxZ3YX4MiV9z1M,18962 -django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo,sha256=xzo6FcJjANVElfNogDZqvwPVnOFGGz-Q-p2obLql3aQ,4501 -django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po,sha256=0bTOc4UDZITrTRcQ1trL3_u1rsITvnfBpM251zNTwzk,5119 -django/contrib/admin/locale/hy/LC_MESSAGES/django.mo,sha256=Dcx9cOsYBfbgQgoAQoLhn_cG1d2sKGV6dag4DwnUTaY,18274 -django/contrib/admin/locale/hy/LC_MESSAGES/django.po,sha256=CnQlRZ_DUILMIqVEgUTT2sufAseEKJHHjWsYr_LAqi8,20771 -django/contrib/admin/locale/hy/LC_MESSAGES/djangojs.mo,sha256=ttfGmyEN0-3bM-WmfCge2lG8inubMPOzFXfZrfX9sfw,5636 -django/contrib/admin/locale/hy/LC_MESSAGES/djangojs.po,sha256=jf94wzUOMQaKSBR-77aijQXfdRAqiYSeAQopiT_8Obc,6046 -django/contrib/admin/locale/ia/LC_MESSAGES/django.mo,sha256=SRKlr8RqW8FQhzMsXdA9HNqttO3hc0xf4QdQJd4Dy8c,11278 -django/contrib/admin/locale/ia/LC_MESSAGES/django.po,sha256=pBQLQsMinRNh0UzIHBy3qEW0etUWMhFALu4-h-woFyE,15337 -django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo,sha256=28MiqUf-0-p3PIaongqgPQp2F3D54MLAujPslVACAls,3177 -django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po,sha256=CauoEc8Fiowa8k6K-f9N8fQDle40qsgtXdNPDHBiudQ,4567 -django/contrib/admin/locale/id/LC_MESSAGES/django.mo,sha256=h21lPTonOu1Qp4BIJQ-dy8mr3rHAbyS79t1BFz2naeY,16276 -django/contrib/admin/locale/id/LC_MESSAGES/django.po,sha256=d_EJWjK5wvo764pURlXKEqBcADbY-lKN6Rg3P_wPXA8,17743 -django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo,sha256=IsrbImLKoye0KHfaJ1ddPh2TXtvcuoq5aRskTAUwRhE,4407 -django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po,sha256=o7zQcSD2QkF_DVwHOKS4jxZi7atLPsQQIoG_szM4xFg,4915 -django/contrib/admin/locale/io/LC_MESSAGES/django.mo,sha256=URiYZQZpROBedC-AkpVo0q3Tz78VfkmwN1W7j6jYpMo,12624 -django/contrib/admin/locale/io/LC_MESSAGES/django.po,sha256=y0WXY7v_9ff-ZbFasj33loG-xWlFO8ttvCB6YPyF7FQ,15562 -django/contrib/admin/locale/io/LC_MESSAGES/djangojs.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 -django/contrib/admin/locale/io/LC_MESSAGES/djangojs.po,sha256=WLh40q6yDs-8ZG1hpz6kfMQDXuUzOZa7cqtEPDywxG4,2852 -django/contrib/admin/locale/is/LC_MESSAGES/django.mo,sha256=csD3bmz3iQgLLdSqCKOmY_d893147TvDumrpRVoRTY0,16804 -django/contrib/admin/locale/is/LC_MESSAGES/django.po,sha256=tXgb3ARXP5tPa5iEYwwiHscDGfjS5JgIV2BsUX8OnjE,18222 -django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo,sha256=VcJvjwOJ8FgYiGRWVD1sPi-yuhFMR19ejIewhOQyP84,4554 -django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po,sha256=lpbOnRlgNaESvPfojZskcAn4HNnsFfYK9rxV8D6ucQg,5150 -django/contrib/admin/locale/it/LC_MESSAGES/django.mo,sha256=7HRWy7l-f2g0CAGoX23M506h6eUeXeXGx5rgu7U_m38,17130 -django/contrib/admin/locale/it/LC_MESSAGES/django.po,sha256=qCuj2K9vBci9JB77tRjOWErirQgjIWDLu7Hbz473QO8,18790 -django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo,sha256=x93xOwcZbUHgCKt6RKY7poXo83oiQx3kvenngFJNiYg,4520 -django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po,sha256=tGk1FK4w7uhDZR5DJw7MD5E8ypA7f3hCeChVoOIHOO8,5243 -django/contrib/admin/locale/ja/LC_MESSAGES/django.mo,sha256=pOXCZ6PJr6kAZiD02i0YWAnvsu7AGJKHCohN2NJ8IHc,18128 -django/contrib/admin/locale/ja/LC_MESSAGES/django.po,sha256=j9222d0SOHv8Eao2jx87t9dBzb629_mgijq2V0d-nUw,19685 -django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo,sha256=e1psnvl2PWI9RpwDRY0UV5cqn_jhz_ms6OlKUQnEBt0,4688 -django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po,sha256=5-4GlF-p7REuRaMvRGBTuTMJW6slZLqdR-UrEEEJjtA,5098 -django/contrib/admin/locale/ka/LC_MESSAGES/django.mo,sha256=M3FBRrXFFa87DlUi0HDD_n7a_0IYElQAOafJoIH_i60,20101 -django/contrib/admin/locale/ka/LC_MESSAGES/django.po,sha256=abkt7pw4Kc-Y74ZCpAk_VpFWIkr7trseCtQdM6IUYpQ,23527 -django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo,sha256=GlPU3qUavvU0FXPfvCl-8KboYhDOmMsKM-tv14NqOac,5516 -django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po,sha256=jDpB9c_edcLoFPHFIogOSPrFkssOjIdxtCA_lum8UCs,6762 -django/contrib/admin/locale/kab/LC_MESSAGES/django.mo,sha256=9QKEWgr8YQV17OJ14rMusgV8b79ZgOOsX4aIFMZrEto,3531 -django/contrib/admin/locale/kab/LC_MESSAGES/django.po,sha256=cSOG_HqsNE4tA5YYDd6txMFoUul8d5UKvk77ZhaqOK0,11711 -django/contrib/admin/locale/kab/LC_MESSAGES/djangojs.mo,sha256=nqwZHJdtjHUSFDJmC0nPNyvWcAdcoRcN3f-4XPIItvs,1844 -django/contrib/admin/locale/kab/LC_MESSAGES/djangojs.po,sha256=tF3RH22p2E236Cv6lpIWQxtuPFeWOvJ-Ery3vBUv6co,3713 -django/contrib/admin/locale/kk/LC_MESSAGES/django.mo,sha256=f2WU3e7dOz0XXHFFe0gnCm1MAPCJ9sva2OUnWYTHOJg,12845 -django/contrib/admin/locale/kk/LC_MESSAGES/django.po,sha256=D1vF3nqANT46f17Gc2D2iGCKyysHAyEmv9nBei6NRA4,17837 -django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo,sha256=cBxp5pFJYUF2-zXxPVBIG06UNq6XAeZ72uRLwGeLbiE,2387 -django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po,sha256=Y30fcDpi31Fn7DU7JGqROAiZY76iumoiW9qGAgPCCbU,4459 -django/contrib/admin/locale/km/LC_MESSAGES/django.mo,sha256=eOe9EcFPzAWrTjbGUr-m6RAz2TryC-qHKbqRP337lPY,10403 -django/contrib/admin/locale/km/LC_MESSAGES/django.po,sha256=RSxy5vY2sgC43h-9sl6eomkFvxClvH_Ka4lFiwTvc2I,17103 -django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo,sha256=Ja8PIXmw6FMREHZhhBtGrr3nRKQF_rVjgLasGPnU95w,1334 -django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po,sha256=LH4h4toEgpVBb9yjw7d9JQ8sdU0WIZD-M025JNlLXAU,3846 -django/contrib/admin/locale/kn/LC_MESSAGES/django.mo,sha256=955iPq05ru6tm_iPFVMebxwvZMtEa5_7GaFG1mPt6HU,9203 -django/contrib/admin/locale/kn/LC_MESSAGES/django.po,sha256=xMGtsVCItMTs18xdFQHELdVZKCwTNNyKfb8n1ARcFws,16053 -django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo,sha256=dHzxizjDQWiZeRfBqnVFcK1yk1-M5p1KOfQ1ya9TMVU,1872 -django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po,sha256=MqRj6ozyr1e9-qNORUTJXNahe6SL3ee3OveSm3efV4g,4214 -django/contrib/admin/locale/ko/LC_MESSAGES/django.mo,sha256=txTRsSlY_2izM9QBeACq4nJHbXVcNPqM9_n71uHSLi0,17779 -django/contrib/admin/locale/ko/LC_MESSAGES/django.po,sha256=QHaJCsRUImunshPsJEhEJV-Ky97oIRs8QvaE-6ikZEA,19515 -django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo,sha256=StaaunOE52Uo9MgCvyTQpgKhicFsHlXktYSZAOn7u_Y,4462 -django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po,sha256=Tv1_SxJW_5y2tXMNVom5MxxTVt-sYiXvf5QMFloiJD4,5080 -django/contrib/admin/locale/ky/LC_MESSAGES/django.mo,sha256=g75TWW4A1Z_9DvgAlAyhNldHf44TBdg2jVoM3U0tK5Y,19915 -django/contrib/admin/locale/ky/LC_MESSAGES/django.po,sha256=zHHcUHMTgSCoA_TwmjUByeEgDiZmfGNsPxSos0EpC2o,21152 -django/contrib/admin/locale/ky/LC_MESSAGES/djangojs.mo,sha256=B20oPp0maOI-wDFkFPQaEjvwSjGWCSGq0LYcFvQD5wE,5238 -django/contrib/admin/locale/ky/LC_MESSAGES/djangojs.po,sha256=Cu3uuipGh-uzTugzd1b0J6pPApLR5O4qJpJgrE57WKw,5705 -django/contrib/admin/locale/lb/LC_MESSAGES/django.mo,sha256=8GGM2sYG6GQTQwQFJ7lbg7w32SvqgSzNRZIUi9dIe6M,913 -django/contrib/admin/locale/lb/LC_MESSAGES/django.po,sha256=PZ3sL-HvghnlIdrdPovNJP6wDrdDMSYp_M1ok6dodrw,11078 -django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po,sha256=fiMelo6K0_RITx8b9k26X1R86Ck2daQXm86FLJpzt20,2862 -django/contrib/admin/locale/lt/LC_MESSAGES/django.mo,sha256=SpaNUiaGtDlX5qngVj0dWdqNLSin8EOXXyBvRM9AnKg,17033 -django/contrib/admin/locale/lt/LC_MESSAGES/django.po,sha256=tHnRrSNG2ENVduP0sOffCIYQUn69O6zIev3Bb7PjKb0,18497 -django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo,sha256=vZtnYQupzdTjVHnWrtjkC2QKNpsca5yrpb4SDuFx0_0,5183 -django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po,sha256=dMjFClA0mh5g0aNFTyHC8nbYxwmFD0-j-7gCKD8NFnw,5864 -django/contrib/admin/locale/lv/LC_MESSAGES/django.mo,sha256=X8X5_tms9JliGku_YG-z21TnB6WLhVkxUx4fI3UPfyY,16880 -django/contrib/admin/locale/lv/LC_MESSAGES/django.po,sha256=ky9VntKirOLFY-TG_Mx4VsE691ZEreihW0BlgY2NYzc,18290 -django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo,sha256=tJchRk78g3QS7OZCqY3Z934hPhS_igGMQ_HneschNAM,4875 -django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po,sha256=1a-Erfgt-n4QDQCDUDM0-aKFSxG5XCUGNgYsXCZL4Fs,5472 -django/contrib/admin/locale/mk/LC_MESSAGES/django.mo,sha256=AKTJbZ-w8TBsv9R7lyWGmzrkVg-nWGDHtZdHTC9KoyM,15194 -django/contrib/admin/locale/mk/LC_MESSAGES/django.po,sha256=85M2DfBMEAzjYCKPH4vJFcSmGEXG7IsCXJUoFDS6BVE,19095 -django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo,sha256=ZyQQ49zqs8GiS73XBaSd5l3Rh3vOA0glMpX98GH6nhU,5633 -django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po,sha256=bWph0TVgwC-Fmlof8_4SiR21uCFm9rftp59AMZ3WIYA,6188 -django/contrib/admin/locale/ml/LC_MESSAGES/django.mo,sha256=4Y1KAip3NNsoRc9Zz3k0YFLzes3DNRFvAXWSTBivXDk,20830 -django/contrib/admin/locale/ml/LC_MESSAGES/django.po,sha256=jL9i3kmOnoKYDq2RiF90WCc55KeA8EBN9dmPHjuUfmo,24532 -django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo,sha256=COohY0mAHAOkv1eNzLkaGZy8mimXzcDK1EgRd3tTB_E,6200 -django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po,sha256=NvN0sF_w5tkc3bND4lBtCHsIDLkwqdEPo-8wi2MTQ14,7128 -django/contrib/admin/locale/mn/LC_MESSAGES/django.mo,sha256=tsi1Lc7qcDD5dTjMQKy-9Hq-V2Akzyi994QY8wVaqNk,20545 -django/contrib/admin/locale/mn/LC_MESSAGES/django.po,sha256=T9WZQ5k0M9_pLCf5A-fDFIXKgN9fRisfsoZNnm4u-jk,21954 -django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo,sha256=H7fIPdWTK3_iuC0WRBJdfXN8zO77p7-IzTviEUVQJ2U,5228 -django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po,sha256=vJIqqVG34Zd7q8-MhTgZcXTtl6gukOSb6egt70AOyAc,5757 -django/contrib/admin/locale/mr/LC_MESSAGES/django.mo,sha256=UAxGnGliid2PTx6SMgIuHVfbCcqVvcwC4FQUWtDuSTc,468 -django/contrib/admin/locale/mr/LC_MESSAGES/django.po,sha256=TNARpu8Pfmu9fGOLUP0bRwqqDdyFmlh9rWjFspboTyc,10491 -django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/admin/locale/mr/LC_MESSAGES/djangojs.po,sha256=uGe9kH2mwrab97Ue77oggJBlrpzZNckKGRUMU1vaigs,2856 -django/contrib/admin/locale/my/LC_MESSAGES/django.mo,sha256=xvlgM0vdYxZuA7kPQR7LhrLzgmyVCHAvqaqvFhKX9wY,3677 -django/contrib/admin/locale/my/LC_MESSAGES/django.po,sha256=zdUCYcyq2-vKudkYvFcjk95YUtbMDDSKQHCysmQ-Pvc,12522 -django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo,sha256=1fS9FfWi8b9NJKm3DBKETmuffsrTX-_OHo9fkCCXzpg,3268 -django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po,sha256=-z1j108uoswi9YZfh3vSIswLXu1iUKgDXNdZNEA0yrA,5062 -django/contrib/admin/locale/nb/LC_MESSAGES/django.mo,sha256=c06Q7_N34REyesPRaHjED_lezwVc-q0h9WySCsgAHGc,16071 -django/contrib/admin/locale/nb/LC_MESSAGES/django.po,sha256=OQ9e8oxh8jTkJ-boMucuQp2aBYBX95WPSTznfJIMhEk,17509 -django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo,sha256=M9-bGaylF_ZgF9PN_IcNSlwmJASh9UCp-XTt70OI-GE,4375 -django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po,sha256=RfP3ay2dJ7jIVoOw923KR9yJUGKs6SBQiiprgB-rFJ0,4915 -django/contrib/admin/locale/ne/LC_MESSAGES/django.mo,sha256=r01XjvWuPnnyQ8RXqK4-LsyFKA4WAFl5WNJ1g-UFIvk,15882 -django/contrib/admin/locale/ne/LC_MESSAGES/django.po,sha256=UNTRvBq1FpftJJpveiyC7VHxctbxhnrbC1ybDRYj-MA,20221 -django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo,sha256=mJdtpLT9k4vDbN9fk2fOeiy4q720B3pLD3OjLbAjmUI,5362 -django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po,sha256=N91RciTV1m7e8-6Ihod5U2xR9K0vrLoFnyXjn2ta098,6458 -django/contrib/admin/locale/nl/LC_MESSAGES/django.mo,sha256=ndq_k6QUL6hwc9iuI-rlPbML_-HdcUslCXLRxiV10yw,17070 -django/contrib/admin/locale/nl/LC_MESSAGES/django.po,sha256=SaTkp0m6wEbwl79Q3Lj6vICGw61HI5Um4_8Bs2hfhg0,18768 -django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo,sha256=yHX5iQjKqqrIxl_K-AQkBMFNQ8YmgdUxAJVkOEfWDE4,4592 -django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po,sha256=B9y-TjAFtDgnX7RcPlWWgCqdOUzWY5EWV-buuXtP468,5457 -django/contrib/admin/locale/nn/LC_MESSAGES/django.mo,sha256=zKIlvBLMvoqrXO90TqPJcdTEXkVweUWpz6ynsWeg8mU,10943 -django/contrib/admin/locale/nn/LC_MESSAGES/django.po,sha256=-CFana0-PPFwv1jcdyjYuLK2OYOPva-xxMjlVhvsoCw,14999 -django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo,sha256=A7MT59BoyOSiM7W0phx8LLKQyH4Q8AEu6jUsBjUBOoE,3120 -django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po,sha256=tCXUV4F6FhMa-K0SBw9lQ0U2KY5kcMpGzT7jzKSvceo,4578 -django/contrib/admin/locale/os/LC_MESSAGES/django.mo,sha256=c51PwfOeLU2YcVNEEPCK6kG4ZyNc79jUFLuNopmsRR8,14978 -django/contrib/admin/locale/os/LC_MESSAGES/django.po,sha256=yugDw7iziHto6s6ATNDK4yuG6FN6yJUvYKhrGxvKmcY,18188 -django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo,sha256=0gMkAyO4Zi85e9qRuMYmxm6JV98WvyRffOKbBVJ_fLQ,3806 -django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po,sha256=skiTlhgUEN8uKk7ihl2z-Rxr1ZXqu5qV4wB4q9qXVq0,5208 -django/contrib/admin/locale/pa/LC_MESSAGES/django.mo,sha256=n31qIjOVaJRpib4VU4EHZRua3tBnBM6t_ukH9Aj37GM,10185 -django/contrib/admin/locale/pa/LC_MESSAGES/django.po,sha256=MR6ZOTypay-qCvafn0J0rZF06rOsWz771CLDD1qvISE,16446 -django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo,sha256=vdEMaVBuJtK1bnECgbqd_dS06PcmN7cgdv0hKGH5UKA,1207 -django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po,sha256=xU8tchSEH3MCLFSu4-71oVCR8pliKmILqFevM13IQ5M,3717 -django/contrib/admin/locale/pl/LC_MESSAGES/django.mo,sha256=vo3ARq9WcECb6vWNxGZnW7dPqiVA_0PvKMtrnXkmEMk,17455 -django/contrib/admin/locale/pl/LC_MESSAGES/django.po,sha256=N9L7bPkZgEaYqTjs-CYq3H_uxUVndAVgXYLn7N5SgPw,19282 -django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo,sha256=7zqp_j1vQXpGKRIXtEQpktgjxZi47f0nDq5Cj4WQsDs,5073 -django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po,sha256=9VUJf4yZiK2QqwrKBOsm3eBn6cpVsfGVFCuVLAKWWr8,5907 -django/contrib/admin/locale/pt/LC_MESSAGES/django.mo,sha256=MTFRTfUKot-0r-h7qtggPe8l_q0JPAzVF9GzdtB9600,16912 -django/contrib/admin/locale/pt/LC_MESSAGES/django.po,sha256=gzRkbl35HZ-88mlA1Bdj1Y-CUJ752pZKCUIG-NNw2os,18436 -django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo,sha256=D6-8QwX6lsACkEcYXq1tK_4W2q_NMc6g5lZQJDZRFHw,4579 -django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po,sha256=__a9WBgO_o0suf2xvMhyRk_Wkg2tfqNHmJOM5YF86sk,5118 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo,sha256=LfXmUY-G3Qad4aZbT5pt9dzw8WcWZuVmGZ1t5B3bv50,16956 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po,sha256=OvV4D3o9u27gVg-iCX35H93C8GzfajUvaf6HtpK8D2Q,19236 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo,sha256=a7KPhFtcwVa7PX1XK1cgF3HOOcRSkT-XYSiRCFyFQFQ,4619 -django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po,sha256=ENE4HAsUNcYJq2KvLrfBOLuxr1chEyEi39OSlaQU98g,5256 -django/contrib/admin/locale/ro/LC_MESSAGES/django.mo,sha256=vkDRRqbQXemsY69kUYonzahIeafWAoIWEJ85aS33Hk8,14387 -django/contrib/admin/locale/ro/LC_MESSAGES/django.po,sha256=fyO2ylCXWZqU3GgHnZJtZfr5tssHMv8RUfkJFKhlvt0,17365 -django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo,sha256=voEqSN3JUgJM9vumLxE_QNPV7kA0XOoTktN7E7AYV6o,4639 -django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po,sha256=SO7FAqNnuvIDfZ_tsWRiwSv91mHx5NZHyR2VnmoYBWY,5429 -django/contrib/admin/locale/ru/LC_MESSAGES/django.mo,sha256=QJ6L9257dATWvsiBLc9QLn886vKaaEIFWglBBG5zWJo,22080 -django/contrib/admin/locale/ru/LC_MESSAGES/django.po,sha256=GFDQeIY3pDT7CbKCttBkz81AzUE1ztaUUCLd62Il_vg,23779 -django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo,sha256=gYF-k1TcK9lZBCwMmxnaVLqD4rjVNHTYK6tRQX-QDm0,6524 -django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po,sha256=ePiQixWraXo_GEBzu6-l5mLJ3zt_SJEK3loMo96tUeQ,7447 -django/contrib/admin/locale/sk/LC_MESSAGES/django.mo,sha256=sLMYAOOz90NPuWJJyQdA_pbK31-mdrtsL68d8Xd7Bps,16288 -django/contrib/admin/locale/sk/LC_MESSAGES/django.po,sha256=PDyJDjKEHPc_-y55W_FimqaHVTLDUey4-XHfqn8feAU,18228 -django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo,sha256=0FifzbnJmubmNNUsePBcbM2MwExXmtnt699xtY2_uzo,4677 -django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po,sha256=F9lWj_7Ir6-VBYosrtbQnkxHR_tOVFO1V3VUnvfWNeI,5382 -django/contrib/admin/locale/sl/LC_MESSAGES/django.mo,sha256=iqcg1DYwwDVacRAKJ3QR4fTmKQhRGXU4WkwYco9ASaA,16136 -django/contrib/admin/locale/sl/LC_MESSAGES/django.po,sha256=VeIJDh1PojyUy-4AdPcVezbQ-XVWqp04vFE_u3KU2tU,17508 -django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo,sha256=0jqGv5lgcfyxh9pdnB0Nt7e0bF2G0nO-iVWJjKwyZqI,4724 -django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po,sha256=1DEs7obfCCf-hNM2nIkMizcRcq1KoLBvngMaXLlozUo,5269 -django/contrib/admin/locale/sq/LC_MESSAGES/django.mo,sha256=uyn8IzRKrCUsVMgkkKiv8QFqtNC9c9nVr6Uw6E7sdrc,17324 -django/contrib/admin/locale/sq/LC_MESSAGES/django.po,sha256=nFyndUnCwyAgsPWMlM_fTcQlOO2q2NOeMMFNOjnglDc,18640 -django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo,sha256=y02QplhGai4DzXtHZ2O9H-IGZJmKk6wgoGIR_ujC8gw,4563 -django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po,sha256=CajHKg5KBJMns2iIz6Lf2RNFe0XCFlqJgxeCL9Uq-I8,5126 -django/contrib/admin/locale/sr/LC_MESSAGES/django.mo,sha256=7OEFKgKl8bhP5sYQQ3GWGuof8fgFUvWI16fjZLL-X4A,20855 -django/contrib/admin/locale/sr/LC_MESSAGES/django.po,sha256=TRKZvSIH8dDUsq8AQsneQmcsDndxUFftOq9jzgCOTdg,22213 -django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo,sha256=No_O4m32WrmnovKZ7CgusTPZOiMRDvMusQNS9FAg_pg,5221 -django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po,sha256=lj1TZE6I5YK0KUBD7ZVGMLV97sYwlIIwZjC5WQyxSyE,5729 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=8wcRn4O2WYMFJal760MvjtSPBNoDgHAEYtedg8CC7Ao,12383 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po,sha256=N4fPEJTtUrQnc8q1MioPZ2a7E55YXrE-JvfAcWZubfA,16150 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo,sha256=GxyIGHkAtSwuAnIgnjBlO6t_w589LloYIQw4zB-QiGM,4337 -django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po,sha256=GyBQ4gDVdhcmwbYod5MFhO-c8XVhv5eHyA6hyxOz_ZA,4862 -django/contrib/admin/locale/sv/LC_MESSAGES/django.mo,sha256=jW8NONkrEqE5RRnXiPWsOM2gK3DUXBX4XAQmmN5PLwk,16453 -django/contrib/admin/locale/sv/LC_MESSAGES/django.po,sha256=l1L93L3z8gcrtjJAHn2MpTVVjXdLnSbQ4sCI-odgVbI,18018 -django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo,sha256=D7Bo8rFeCT6daVSdjr8QWdmDpN5UYdFnwviV3zZW0_o,4500 -django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po,sha256=qdD922JzhXE5WK54ZYtgq9uL80n1tum0q5tEo1kHBqY,5182 -django/contrib/admin/locale/sw/LC_MESSAGES/django.mo,sha256=Mtj7jvbugkVTj0qyJ_AMokWEa2btJNSG2XrhpY0U1Mc,14353 -django/contrib/admin/locale/sw/LC_MESSAGES/django.po,sha256=ElU-s0MgtNKF_aXdo-uugBnuJIDzHqMmy1ToMDQhuD0,16419 -django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo,sha256=p0pi6-Zg-qsDVMDjNHO4aav3GfJ3tKKhy6MK7mPtC50,3647 -django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po,sha256=lZFP7Po4BM_QMTj-SXGlew1hqyJApZxu0lxMP-YduHI,4809 -django/contrib/admin/locale/ta/LC_MESSAGES/django.mo,sha256=ZdtNRZLRqquwMk7mE0XmTzEjTno9Zni3mV6j4DXL4nI,10179 -django/contrib/admin/locale/ta/LC_MESSAGES/django.po,sha256=D0TCLM4FFF7K9NqUGXNFE2KfoEzx5IHcJQ6-dYQi2Eg,16881 -django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo,sha256=2-37FOw9Bge0ahIRxFajzxvMkAZL2zBiQFaELmqyhhY,1379 -django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po,sha256=Qs-D7N3ZVzpZVxXtMWKOzJfSmu_Mk9pge5W15f21ihI,3930 -django/contrib/admin/locale/te/LC_MESSAGES/django.mo,sha256=aIAG0Ey4154R2wa-vNe2x8X4fz2L958zRmTpCaXZzds,10590 -django/contrib/admin/locale/te/LC_MESSAGES/django.po,sha256=-zJYrDNmIs5fp37VsG4EAOVefgbBNl75c-Pp3RGBDAM,16941 -django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo,sha256=VozLzWQwrY-USvin5XyVPtUUKEmCr0dxaWC6J14BReo,1362 -django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po,sha256=HI8IfXqJf4I6i-XZB8ELGyp5ZNr-oi5hW9h7n_8XSaQ,3919 -django/contrib/admin/locale/tg/LC_MESSAGES/django.mo,sha256=gJfgsEn9doTT0erBK77OBDi7_0O7Rb6PF9tRPacliXU,15463 -django/contrib/admin/locale/tg/LC_MESSAGES/django.po,sha256=Wkx7Hk2a9OzZymgrt9N91OL9K5HZXTbpPBXMhyE0pjI,19550 -django/contrib/admin/locale/tg/LC_MESSAGES/djangojs.mo,sha256=SEaBcnnKupXbTKCJchkSu_dYFBBvOTAOQSZNbCYUuHE,5154 -django/contrib/admin/locale/tg/LC_MESSAGES/djangojs.po,sha256=CfUjLtwMmz1h_MLE7c4UYv05ZTz_SOclyKKWmVEP9Jg,5978 -django/contrib/admin/locale/th/LC_MESSAGES/django.mo,sha256=EVlUISdKOvNkGMG4nbQFzSn5p7d8c9zOGpXwoHsHNlY,16394 -django/contrib/admin/locale/th/LC_MESSAGES/django.po,sha256=OqhGCZ87VX-WKdC2EQ8A8WeXdWXu9mj6k8mG9RLZMpM,20187 -django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo,sha256=ukj5tyDor9COi5BT9oRLucO2wVTI6jZWclOM-wNpXHM,6250 -django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po,sha256=3L5VU3BNcmfiqzrAWK0tvRRVOtgR8Ceg9YIxL54RGBc,6771 -django/contrib/admin/locale/tr/LC_MESSAGES/django.mo,sha256=lIH6Rxbni7csB5cHmZwmHQnpxa1SCwPr_8nAPFR9WJY,17266 -django/contrib/admin/locale/tr/LC_MESSAGES/django.po,sha256=GAm62Lh7u0T1aiNI5BjidNzOKTCHOiGAca8eAIgKvPE,18789 -django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo,sha256=-JOjx27dXogxyCjINedRgDH-sPB-dQBZPTe0ZUPcbgs,4505 -django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po,sha256=marxQc6dPy1mUoYyTA2pq25tclWCnOa663lmQUzL5xY,5076 -django/contrib/admin/locale/tt/LC_MESSAGES/django.mo,sha256=ObJ8zwVLhFsS6XZK_36AkNRCeznoJJwLTMh4_LLGPAA,12952 -django/contrib/admin/locale/tt/LC_MESSAGES/django.po,sha256=VDjg5nDrLqRGXpxCyQudEC_n-6kTCIYsOl3izt1Eblc,17329 -django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo,sha256=Sz5qnMHWfLXjaCIHxQNrwac4c0w4oeAAQubn5R7KL84,2607 -django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po,sha256=_Uh3yH_RXVB3PP75RFztvSzVykVq0SQjy9QtTnyH3Qk,4541 -django/contrib/admin/locale/udm/LC_MESSAGES/django.mo,sha256=2Q_lfocM7OEjFKebqNR24ZBqUiIee7Lm1rmS5tPGdZA,622 -django/contrib/admin/locale/udm/LC_MESSAGES/django.po,sha256=L4TgEk2Fm2mtKqhZroE6k_gfz1VC-_dXe39CiJvaOPE,10496 -django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po,sha256=ZLYr0yHdMYAl7Z7ipNSNjRFIMNYmzIjT7PsKNMT6XVk,2811 -django/contrib/admin/locale/uk/LC_MESSAGES/django.mo,sha256=Wc1E8kLHTeu0GRg1vkj_kataySFcnrVk_oCLYMUpa6M,20988 -django/contrib/admin/locale/uk/LC_MESSAGES/django.po,sha256=n7NqZajp0dDWD9r5o1Aot8pQski1gtp6eZziqHg0gEU,22827 -django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo,sha256=YL-bL4CeoOsvcXKY30FsakS6A8kG0egbvDf2yYdFfU8,5930 -django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po,sha256=lKHsuFkzp8_evIKm8mVyZKIf99EIo8BsLYkIiyN29UY,6654 -django/contrib/admin/locale/ur/LC_MESSAGES/django.mo,sha256=HvyjnSeLhUf1JVDy759V_TI7ygZfLaMhLnoCBJxhH_s,13106 -django/contrib/admin/locale/ur/LC_MESSAGES/django.po,sha256=BFxxLbHs-UZWEmbvtWJNA7xeuvO9wDc32H2ysKZQvF4,17531 -django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo,sha256=eYN9Q9KKTV2W0UuqRc-gg7y42yFAvJP8avMeZM-W7mw,2678 -django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po,sha256=Nj-6L6axLrqA0RHUQbidNAT33sXYfVdGcX4egVua-Pk,4646 -django/contrib/admin/locale/uz/LC_MESSAGES/django.mo,sha256=NamB-o6uawT2c2FKO8A9u2I-GPOpW4jp4p7mbH3idzM,3645 -django/contrib/admin/locale/uz/LC_MESSAGES/django.po,sha256=ooURQ-uVQm4QDd8b6ErkeCtv6wsfCfRxjetaoY0JiEU,12516 -django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.mo,sha256=LhMWp7foVSN65gP4RqFGzkLlSaEfqVQ8kW16X-5kJVs,4517 -django/contrib/admin/locale/uz/LC_MESSAGES/djangojs.po,sha256=-YpHNtdwmKeavDSVZZMUsNQ9MirfhNS_Kzox72FatS4,4950 -django/contrib/admin/locale/vi/LC_MESSAGES/django.mo,sha256=nkSrBQaktbMGWr8IMNoPoOVQBAIR1GJF13BvKLu2CeM,14860 -django/contrib/admin/locale/vi/LC_MESSAGES/django.po,sha256=FxcEsnT3-FvPXjnHp9y51jFPILUgSx27egwtwU_wbS0,17847 -django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo,sha256=M_wqHg1NO-I7xfY-mMZ29BqUAqGzlizgJ3_DIGBWOUc,3733 -django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po,sha256=d3YtQhNuCqtfMO3u5-6zoNhhGBNYkoUhTrxz7I3PRkQ,5018 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=56-H0WYV2ijPKeF8ZxERuYVuBpH4Q3ICG9z4uWY-6zo,15776 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/django.po,sha256=mqMbpW7tmtdIz2RQw7lAesQLhI_NF1_3Lmdlh9pAyQg,17748 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.mo,sha256=i3PW5SngxTBfjMTLBq55-AbY1bC8uqhoXJ_9cWSZxQs,4189 -django/contrib/admin/locale/zh_Hans/LC_MESSAGES/djangojs.po,sha256=jgmuWUwyCO1UckgXSjmdX4ut4hAvrkxl0iKqDGaIrVc,5000 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=kEKX-cQPRFCNkiqNs1BnyzEvJQF-EzA814ASnYPFMsw,15152 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/django.po,sha256=iH3w7Xt_MelkZefKi8F0yAWN6QGdQCJBz8VaFY4maUg,16531 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.mo,sha256=yFwS8aTJUAG5lN4tYLCxx-FLfTsiOxXrCEhlIA-9vcs,4230 -django/contrib/admin/locale/zh_Hant/LC_MESSAGES/djangojs.po,sha256=C4Yk5yuYcmaovVs_CS8YFYY2iS4RGi0oNaUpTm7akeU,4724 -django/contrib/admin/migrations/0001_initial.py,sha256=9EuqU1zlIQtP_U2z1orVgxGvIhZ57df9S3GhpDhNWgM,1892 -django/contrib/admin/migrations/0002_logentry_remove_auto_add.py,sha256=_7XFWubtQ7NG0eQ02MqtxXQmjBmYc6Od5rwcAiT1aCs,554 -django/contrib/admin/migrations/0003_logentry_add_action_flag_choices.py,sha256=UCS9mPrkhZ5YL_9RMSrgA7uWDTzvLzqSLq_LSXVXimM,539 -django/contrib/admin/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-38.pyc,, -django/contrib/admin/migrations/__pycache__/0003_logentry_add_action_flag_choices.cpython-38.pyc,, -django/contrib/admin/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/admin/models.py,sha256=qqwq3V_KqV4_WJIYqKjIQnVxZZnIPzyHBDhnMg101Ho,5672 -django/contrib/admin/options.py,sha256=cwFVNcQBzjGvlVDW9auQ8t4dwQ9O11_csNuqWF7wWUM,92817 -django/contrib/admin/sites.py,sha256=xtPgdE0kk_Spc2wkFDeUeSzkjabJi6C3yaSlsqsTRWw,21067 -django/contrib/admin/static/admin/css/autocomplete.css,sha256=MGqRzeZ1idtUnRM7MnEHw7ClmOVe_Uo7SdLoudapNMU,8440 -django/contrib/admin/static/admin/css/base.css,sha256=oSENYSu7GnAozJuUT0bkGLgKQDLgWmC8ue3hAtfSb34,16307 -django/contrib/admin/static/admin/css/changelists.css,sha256=oar6yydSZDxYZCMKReyhu153wGmo65ojxBi7gN-sAoo,6284 -django/contrib/admin/static/admin/css/dashboard.css,sha256=i2OcDTa1R_bO6aBTZ66-aRlTXl0l4sjeHfasUrfzjd0,380 -django/contrib/admin/static/admin/css/fonts.css,sha256=SnBl3KjeUZqRmZw3F0iNm1YpqFhjrNC_fNN0H2TkuYc,423 -django/contrib/admin/static/admin/css/forms.css,sha256=3TH6k3ktBtwxdOOS_fDcU_VUnB4YyfG_HKmfcmlfm3A,8399 -django/contrib/admin/static/admin/css/login.css,sha256=zA6PkXB2FP0gzI8JytuyMYK6BMB_jHYyop24cgU2GAg,1185 -django/contrib/admin/static/admin/css/nav_sidebar.css,sha256=XEhjS3-o1amWWOHnJFRr2LzX80gMpfvWjMdJkbiN0M0,1789 -django/contrib/admin/static/admin/css/responsive.css,sha256=WJGLzeJhIBoW17HtZZouS2be6u8Yl4rjQc3LiYxLjEg,18617 -django/contrib/admin/static/admin/css/responsive_rtl.css,sha256=0vIypxOLPJ6bWO0S7UfhyBWC_7z8FFNlJ8SeR77Uo9M,1882 -django/contrib/admin/static/admin/css/rtl.css,sha256=HSuIVTK3pn0tVyVrY2QEg9a-zfFO0EdY5Ty1LISZ9RM,3700 -django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md,sha256=TuDLxRNwr941hlKg-XeXIFNyntV4tqQvXioDfRFPCzk,1124 -django/contrib/admin/static/admin/css/vendor/select2/select2.css,sha256=kalgQ55Pfy9YBkT-4yYYd5N8Iobe-iWeBuzP7LjVO0o,17358 -django/contrib/admin/static/admin/css/vendor/select2/select2.min.css,sha256=FdatTf20PQr_rWg-cAKfl6j4_IY3oohFAJ7gVC3M34E,14966 -django/contrib/admin/static/admin/css/widgets.css,sha256=zdUCrmj046F4ELEP6pQLvrrrtiro0s3SWiH9s8WwGm4,10592 -django/contrib/admin/static/admin/fonts/LICENSE.txt,sha256=Pd-b5cKP4n2tFDpdx27qJSIq0d1ok0oEcGTlbtL6QMU,11560 -django/contrib/admin/static/admin/fonts/README.txt,sha256=E4rvl9Y9cvKx2wpkrgQZjhaKfRhEUG8pNLCoZoBq-rE,214 -django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff,sha256=sXZ6DD5d-zpQCe_uREX_FdY2LpKFRh4Xve0Ybx6UVvA,86184 -django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff,sha256=GIJzScf-vUuNAaqQfGfqm4ARJCB4MmskcDl4RU_fNRo,85692 -django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff,sha256=munWVF19fYI_ipQBDbd8Gg_3Hjcei7FY3xy5g5UWJQc,85876 -django/contrib/admin/static/admin/img/LICENSE,sha256=0RT6_zSIwWwxmzI13EH5AjnT1j2YU3MwM9j3U19cAAQ,1081 -django/contrib/admin/static/admin/img/README.txt,sha256=XqN5MlT1SIi6sdnYnKJrOiJ6h9lTIejT7nLSY-Y74pk,319 -django/contrib/admin/static/admin/img/calendar-icons.svg,sha256=gbMu26nfxZphlqKFcVOXpcv5zhv5x_Qm_P4ba0Ze84I,1094 -django/contrib/admin/static/admin/img/gis/move_vertex_off.svg,sha256=ou-ppUNyy5QZCKFYlcrzGBwEEiTDX5mmJvM8rpwC5DM,1129 -django/contrib/admin/static/admin/img/gis/move_vertex_on.svg,sha256=DgmcezWDms_3VhgqgYUGn-RGFHyScBP0MeX8PwHy_nE,1129 -django/contrib/admin/static/admin/img/icon-addlink.svg,sha256=kBtPJJ3qeQPWeNftvprZiR51NYaZ2n_ZwJatY9-Zx1Q,331 -django/contrib/admin/static/admin/img/icon-alert.svg,sha256=aXtd9PA66tccls-TJfyECQrmdWrj8ROWKC0tJKa7twA,504 -django/contrib/admin/static/admin/img/icon-calendar.svg,sha256=_bcF7a_R94UpOfLf-R0plVobNUeeTto9UMiUIHBcSHY,1086 -django/contrib/admin/static/admin/img/icon-changelink.svg,sha256=clM2ew94bwVa2xQ6bvfKx8xLtk0i-u5AybNlyP8k-UM,380 -django/contrib/admin/static/admin/img/icon-clock.svg,sha256=k55Yv6R6-TyS8hlL3Kye0IMNihgORFjoJjHY21vtpEA,677 -django/contrib/admin/static/admin/img/icon-deletelink.svg,sha256=06XOHo5y59UfNBtO8jMBHQqmXt8UmohlSMloUuZ6d0A,392 -django/contrib/admin/static/admin/img/icon-no.svg,sha256=QqBaTrrp3KhYJxLYB5E-0cn_s4A_Y8PImYdWjfQSM-c,560 -django/contrib/admin/static/admin/img/icon-unknown-alt.svg,sha256=LyL9oJtR0U49kGHYKMxmmm1vAw3qsfXR7uzZH76sZ_g,655 -django/contrib/admin/static/admin/img/icon-unknown.svg,sha256=ePcXlyi7cob_IcJOpZ66uiymyFgMPHl8p9iEn_eE3fc,655 -django/contrib/admin/static/admin/img/icon-viewlink.svg,sha256=NL7fcy7mQOQ91sRzxoVRLfzWzXBRU59cFANOrGOwWM0,581 -django/contrib/admin/static/admin/img/icon-yes.svg,sha256=_H4JqLywJ-NxoPLqSqk9aGJcxEdZwtSFua1TuI9kIcM,436 -django/contrib/admin/static/admin/img/inline-delete.svg,sha256=Ni1z8eDYBOveVDqtoaGyEMWG5Mdnt9dniiuBWTlnr5Y,560 -django/contrib/admin/static/admin/img/search.svg,sha256=HgvLPNT7FfgYvmbt1Al1yhXgmzYHzMg8BuDLnU9qpMU,458 -django/contrib/admin/static/admin/img/selector-icons.svg,sha256=0RJyrulJ_UR9aYP7Wbvs5jYayBVhLoXR26zawNMZ0JQ,3291 -django/contrib/admin/static/admin/img/sorting-icons.svg,sha256=cCvcp4i3MAr-mo8LE_h8ZRu3LD7Ma9BtpK-p24O3lVA,1097 -django/contrib/admin/static/admin/img/tooltag-add.svg,sha256=fTZCouGMJC6Qq2xlqw_h9fFodVtLmDMrpmZacGVJYZQ,331 -django/contrib/admin/static/admin/img/tooltag-arrowright.svg,sha256=GIAqy_4Oor9cDMNC2fSaEGh-3gqScvqREaULnix3wHc,280 -django/contrib/admin/static/admin/js/SelectBox.js,sha256=hNoyjjk97t_o5Z7ZttqH3gPsbyGgojQR-FfzE02INrI,4257 -django/contrib/admin/static/admin/js/SelectFilter2.js,sha256=Nkgyinav9IBHIkJf8zCfAwArDZnY2Jbji2847SByUoU,12350 -django/contrib/admin/static/admin/js/actions.js,sha256=yOG2FkbKUCwPxB74LT2malK-7Rh514fLl9UZwd0RWvg,6783 -django/contrib/admin/static/admin/js/actions.min.js,sha256=ODZEAXLpzp0PHcfibtia-bBrn07k4Sg7a005Q1EGIVA,3237 -django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js,sha256=vqjI_mFJ4x7hgezEPEYZAX0zUwt6RI91Mc9_mr4juQs,19750 -django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js,sha256=ukCLO-_ftyymc2hveCrDvIk0C-OlWR74IjY6_wVFmlA,6078 -django/contrib/admin/static/admin/js/autocomplete.js,sha256=VmXi-25debLtf_cTnShThbZ5ZTJAyf0H2xiKXif1qN4,1127 -django/contrib/admin/static/admin/js/calendar.js,sha256=YkgymeVyqvI8OiZFBUvv7dSNhQYvVk2KshhLxdkckUY,7788 -django/contrib/admin/static/admin/js/cancel.js,sha256=YAc0VFGCDpTvvKqlVWEblphw4ZAyrrn4lA-DVfDEYSY,857 -django/contrib/admin/static/admin/js/change_form.js,sha256=zOTeORCq1i9XXV_saSBBDOXbou5UtZvxYFpVPqxQ02Q,606 -django/contrib/admin/static/admin/js/collapse.js,sha256=UONBUueHwsm5SMlG0Ufp4mlqdgu7UGimU6psKzpxbuE,1803 -django/contrib/admin/static/admin/js/collapse.min.js,sha256=Ehp3VOkwSIyPgMbNIXrsriOEykt-tUKChsgL5a8uevs,906 -django/contrib/admin/static/admin/js/core.js,sha256=FrbsB4KwKDk_lbGrAh2hNMJ5ZV9ApYNMKccvRhQkYLk,5418 -django/contrib/admin/static/admin/js/inlines.js,sha256=dSEFix4uxQPiv4U8WDt3JTWuczG4yc9kCdemKxt4V6Q,15225 -django/contrib/admin/static/admin/js/inlines.min.js,sha256=Ubkp1x-i_WS7qMLp0JX9BquofhnTGYVp1Xn3LP4jzhQ,5301 -django/contrib/admin/static/admin/js/jquery.init.js,sha256=uM_Kf7EOBMipcCmuQHbyubQkycleSWDCS8-c3WevFW0,347 -django/contrib/admin/static/admin/js/nav_sidebar.js,sha256=Ufbx1cSAoDA8ovlBg6VPSdDArY_-fRzt_YnQ-snuSHk,1360 -django/contrib/admin/static/admin/js/popup_response.js,sha256=H4ppG14jfrxB1XF5xZp5SS8PapYuYou5H7uwYjHd7eI,551 -django/contrib/admin/static/admin/js/prepopulate.js,sha256=UYkWrHNK1-OWp1a5IWZdg0udfo_dcR-jKSn5AlxxqgU,1531 -django/contrib/admin/static/admin/js/prepopulate.min.js,sha256=KWlXLa71ZJaVA-igy1N9XUhAotjfV80Crp_vS_JIf1U,388 -django/contrib/admin/static/admin/js/prepopulate_init.js,sha256=JdhYQLmheJU2wK3xAelyDN5VVesDXT9XU_xwRnKhlKA,492 -django/contrib/admin/static/admin/js/urlify.js,sha256=AQ-o15_pwn4BSCDwFjScCVlm0D-aU7wNlGDXzsNiMRE,8632 -django/contrib/admin/static/admin/js/vendor/jquery/LICENSE.txt,sha256=H_YDEY79sxN5lWfLSkCFlJVDhPQIQ8pvKcWW9bH4kH0,1095 -django/contrib/admin/static/admin/js/vendor/jquery/jquery.js,sha256=QWo7LDvxbWT2tbbQ97B53yJnYU3WhH_C8ycbRAkjPDc,287630 -django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js,sha256=9_aliU8dGd2tb6OSsuzixeV4y_faTqgFtohetphbbj0,89476 -django/contrib/admin/static/admin/js/vendor/select2/LICENSE.md,sha256=TuDLxRNwr941hlKg-XeXIFNyntV4tqQvXioDfRFPCzk,1124 -django/contrib/admin/static/admin/js/vendor/select2/i18n/af.js,sha256=IpI3uo19fo77jMtN5R3peoP0OriN-nQfPY2J4fufd8g,866 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js,sha256=zxQ3peSnbVIfrH1Ndjx4DrHDsmbpqu6mfeylVWFM5mY,905 -django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js,sha256=N_KU7ftojf2HgvJRlpP8KqG6hKIbqigYN3K0YH_ctuQ,721 -django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js,sha256=5Z6IlHmuk_6IdZdAVvdigXnlj7IOaKXtcjuI0n0FmYQ,968 -django/contrib/admin/static/admin/js/vendor/select2/i18n/bn.js,sha256=wdQbgaxZ47TyGlwvso7GOjpmTXUKaWzvVUr_oCRemEE,1291 -django/contrib/admin/static/admin/js/vendor/select2/i18n/bs.js,sha256=g56kWSu9Rxyh_rarLSDa_8nrdqL51JqZai4QQx20jwQ,965 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js,sha256=DSyyAXJUI0wTp_TbFhLNGrgvgRsGWeV3IafxYUGBggM,900 -django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js,sha256=t_8OWVi6Yy29Kabqs_l1sM2SSrjUAgZTwbTX_m0MCL8,1292 -django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js,sha256=tF2mvzFYSWYOU3Yktl3G93pCkf-V9gonCxk7hcA5J1o,828 -django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js,sha256=5bspfcihMp8yXDwfcqvC_nV3QTbtBuQDmR3c7UPQtFw,866 -django/contrib/admin/static/admin/js/vendor/select2/i18n/dsb.js,sha256=KtP2xNoP75oWnobUrS7Ep_BOFPzcMNDt0wyPnkbIF_Q,1017 -django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js,sha256=IdvD8eY_KpX9fdHvld3OMvQfYsnaoJjDeVkgbIemfn8,1182 -django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js,sha256=C66AO-KOXNuXEWwhwfjYBFa3gGcIzsPFHQAZ9qSh3Go,844 -django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js,sha256=IhZaIy8ufTduO2-vBrivswMCjlPk7vrk4P81pD6B0SM,922 -django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js,sha256=LgLgdOkKjc63svxP1Ua7A0ze1L6Wrv0X6np-8iRD5zw,801 -django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js,sha256=rLmtP7bA_atkNIj81l_riTM7fi5CXxVrFBHFyddO-Hw,868 -django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js,sha256=fqZkE9e8tt2rZ7OrDGPiOsTNdj3S2r0CjbddVUBDeMA,1023 -django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js,sha256=KVGirhGGNee_iIpMGLX5EzH_UkNe-FOPC_0484G-QQ0,803 -django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js,sha256=aj0q2rdJN47BRBc9LqvsgxkuPOcWAbZsUFUlbguwdY0,924 -django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js,sha256=HSJafI85yKp4WzjFPT5_3eZ_-XQDYPzzf4BWmu6uXHk,924 -django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js,sha256=DIPRKHw0NkDuUtLNGdTnYZcoCiN3ustHY-UMmw34V_s,984 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js,sha256=m6ZqiKZ_jzwzVFgC8vkYiwy4lH5fJEMV-LTPVO2Wu40,1175 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js,sha256=NclTlDTiNFX1y0W1Llj10-ZIoXUYd7vDXqyeUJ7v3B4,852 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hsb.js,sha256=FTLszcrGaelTW66WV50u_rS6HV0SZxQ6Vhpi2tngC6M,1018 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js,sha256=3PdUk0SpHY-H-h62womw4AyyRMujlGc6_oxW-L1WyOs,831 -django/contrib/admin/static/admin/js/vendor/select2/i18n/hy.js,sha256=BLh0fntrwtwNwlQoiwLkdQOVyNXHdmRpL28p-W5FsDg,1028 -django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js,sha256=fGJ--Aw70Ppzk3EgLjF1V_QvqD2q_ufXjnQIIyZqYgc,768 -django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js,sha256=gn0ddIqTnJX4wk-tWC5gFORJs1dkgIH9MOwLljBuQK0,807 -django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js,sha256=kGxtapwhRFj3u_IhY_7zWZhKgR5CrZmmasT5w-aoXRM,897 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js,sha256=tZ4sqdx_SEcJbiW5-coHDV8FVmElJRA3Z822EFHkjLM,862 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ka.js,sha256=DH6VrnVdR8SX6kso2tzqnJqs32uCpBNyvP9Kxs3ssjI,1195 -django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js,sha256=x9hyjennc1i0oeYrFUHQnYHakXpv7WD7MSF-c9AaTjg,1088 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js,sha256=ImmB9v7g2ZKEmPFUQeXrL723VEjbiEW3YelxeqHEgHc,855 -django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js,sha256=ZT-45ibVwdWnTyo-TqsqW2NjIp9zw4xs5So78KMb_s8,944 -django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js,sha256=hHpEK4eYSoJj_fvA2wl8QSuJluNxh-Tvp6UZm-ZYaeE,900 -django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js,sha256=PSpxrnBpL4SSs9Tb0qdWD7umUIyIoR2V1fpqRQvCXcA,1038 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js,sha256=NCz4RntkJZf8YDDC1TFBvK-nkn-D-cGNy7wohqqaQD4,811 -django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js,sha256=eduKCG76J3iIPrUekCDCq741rnG4xD7TU3E7Lib7sPE,778 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ne.js,sha256=QQjDPQE6GDKXS5cxq2JRjk3MGDvjg3Izex71Zhonbj8,1357 -django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js,sha256=JctLfTpLQ5UFXtyAmgbCvSPUtW0fy1mE7oNYcMI90bI,904 -django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js,sha256=6gEuKYnJdf8cbPERsw-mtdcgdByUJuLf1QUH0aSajMo,947 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ps.js,sha256=4J4sZtSavxr1vZdxmnub2J0H0qr1S8WnNsTehfdfq4M,1049 -django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js,sha256=0DFe1Hu9fEDSXgpjPOQrA6Eq0rGb15NRbsGh1U4vEr0,876 -django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js,sha256=L5jqz8zc5BF8ukrhpI2vvGrNR34X7482dckX-IUuUpA,878 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js,sha256=Aadb6LV0u2L2mCOgyX2cYZ6xI5sDT9OI3V7HwuueivM,938 -django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js,sha256=bV6emVCE9lY0LzbVN87WKAAAFLUT3kKqEzn641pJ29o,1171 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js,sha256=MnbUcP6pInuBzTW_L_wmXY8gPLGCOcKyzQHthFkImZo,1306 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sl.js,sha256=LPIKwp9gp_WcUc4UaVt_cySlNL5_lmfZlt0bgtwnkFk,925 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sq.js,sha256=oIxJLYLtK0vG2g3s5jsGLn4lHuDgSodxYAWL0ByHRHo,903 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js,sha256=BoT2KdiceZGgxhESRz3W2J_7CFYqWyZyov2YktUo_2w,1109 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js,sha256=7EELYXwb0tISsuvL6eorxzTviMK-oedSvZvEZCMloGU,980 -django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js,sha256=c6nqUmitKs4_6AlYDviCe6HqLyOHqot2IrvJRGjj1JE,786 -django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js,sha256=saDPLk-2dq5ftKCvW1wddkJOg-mXA-GUoPPVOlSZrIY,1074 -django/contrib/admin/static/admin/js/vendor/select2/i18n/tk.js,sha256=mUEGlb-9nQHvzcTYI-1kjsB7JsPRGpLxWbjrJ8URthU,771 -django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js,sha256=dDz8iSp07vbx9gciIqz56wmc2TLHj5v8o6es75vzmZU,775 -django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js,sha256=MixhFDvdRda-wj-TjrN018s7R7E34aQhRjz4baxrdKw,1156 -django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js,sha256=mwTeySsUAgqu_IA6hvFzMyhcSIM1zGhNYKq8G7X_tpM,796 -django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js,sha256=olAdvPQ5qsN9IZuxAKgDVQM-blexUnWTDTXUtiorygI,768 -django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js,sha256=DnDBG9ywBOfxVb2VXg71xBR_tECPAxw7QLhZOXiJ4fo,707 -django/contrib/admin/static/admin/js/vendor/select2/select2.full.js,sha256=ugZkER5OAEGzCwwb_4MvhBKE5Gvmc0S59MKn-dooZaI,173566 -django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js,sha256=XG_auAy4aieWldzMImofrFDiySK-pwJC7aoo9St7rS0,79212 -django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE.txt,sha256=xnYLh4GL4QG4S1G_JWwF_AR18rY9KmrwD3kxq7PTZNw,1103 -django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js,sha256=rtvcVZex5zUbQQpBDEwPXetC28nAEksnAblw2Flt9tA,232381 -django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js,sha256=e2iDfG6V1sfGUB92i5yNqQamsMCc8An0SFzoo3vbylg,125266 -django/contrib/admin/templates/admin/404.html,sha256=zyawWu1I9IxDGBRsks6-DgtLUGDDYOKHfj9YQqPl0AA,282 -django/contrib/admin/templates/admin/500.html,sha256=rZNmFXr9POnc9TdZwD06qkY8h2W5K05vCyssrIzbZGE,551 -django/contrib/admin/templates/admin/actions.html,sha256=P4nfxM6n16V-LbM1TNHtDuBGOarvSbEgmAtfqn8p-k8,1224 -django/contrib/admin/templates/admin/app_index.html,sha256=X-ISFsSrON8osoS93ywjM11MLGhrcx-U0o6tJfpWRqY,389 -django/contrib/admin/templates/admin/app_list.html,sha256=Zg5jM2ehz66QsuxYIghQ0OyqDjhDMnvLoNeduulP7Ng,1686 -django/contrib/admin/templates/admin/auth/user/add_form.html,sha256=5DL3UbNWW2rTvWrpMsxy5XcVNT6_uYv8DjDZZksiVKQ,320 -django/contrib/admin/templates/admin/auth/user/change_password.html,sha256=iXApep52lKi_XvM8cMrMBRQPOsVaRvXWx83m5w-B1T8,2372 -django/contrib/admin/templates/admin/base.html,sha256=flYvdeb7QveFAHZfLaINx6LhfJ052J1lfHVPPcIRpC4,4233 -django/contrib/admin/templates/admin/base_site.html,sha256=1v0vGrcN4FNEIF_VBiQE6yf2HPdkKhag2_v0AUsaGmM,316 -django/contrib/admin/templates/admin/change_form.html,sha256=f58vbrT4Wv_nzYtV7ohffAOEFw8y91mnaGlemtsOGa8,3051 -django/contrib/admin/templates/admin/change_form_object_tools.html,sha256=C0l0BJF2HuSjIvtY-Yr-ByZ9dePFRrTc-MR-OVJD-AI,403 -django/contrib/admin/templates/admin/change_list.html,sha256=Y1_QoACK8ZVbZFEWT9P60jIuOitBKBiKPknBEyfpd-Y,3184 -django/contrib/admin/templates/admin/change_list_object_tools.html,sha256=-AX0bYTxDsdLtEpAEK3RFpY89tdvVChMAWPYBLqPn48,378 -django/contrib/admin/templates/admin/change_list_results.html,sha256=kQo0p2g014wZJjxF6-UsCLqZxnlt0yTthr2g9PNwJ78,1551 -django/contrib/admin/templates/admin/date_hierarchy.html,sha256=I9Nj9WJb3JM_9ZBHrg4xIFku_a59U-KoqO5yuSaqVJQ,518 -django/contrib/admin/templates/admin/delete_confirmation.html,sha256=GfcMpSIo6Xy4QWX1_oNYilY7c1C8FKSbGWiWfw61VlY,2426 -django/contrib/admin/templates/admin/delete_selected_confirmation.html,sha256=i2sUDTPuSlJqOh_JMKx5VsxOpZC9W5zD94R2XpiNPBk,2341 -django/contrib/admin/templates/admin/edit_inline/stacked.html,sha256=BdE_TyQ5bGsSaVeRhvQRpUohQTeCEAHph4piHhdVBDE,2412 -django/contrib/admin/templates/admin/edit_inline/tabular.html,sha256=WAvSLlj0E-F-t0kCyb3_iUHk84fo1ItCQdn4bcQ3d4I,4332 -django/contrib/admin/templates/admin/filter.html,sha256=V1sWCmJMSvBC_GzTtJkNWn-FfdzPpcBySERTVH5i8HY,338 -django/contrib/admin/templates/admin/includes/fieldset.html,sha256=DgcBbVUfkho33IMZGEg42Xr9P5y3ZAefFzqkxf74v1Q,1787 -django/contrib/admin/templates/admin/includes/object_delete_summary.html,sha256=OC7VhKQiczmi01Gt_3jyemelerSNrGyDiWghUK6xKEI,192 -django/contrib/admin/templates/admin/index.html,sha256=IJV2pH-Xi8rYmR1TzckraJ3A2fSjzejV6Dpk-oPqCEA,1861 -django/contrib/admin/templates/admin/invalid_setup.html,sha256=F5FS3o7S3l4idPrX29OKlM_azYmCRKzFdYjV_jpTqhE,447 -django/contrib/admin/templates/admin/login.html,sha256=yhk3veXIvM_efQLL4NcjfYWxZKqqAct3hPS6mYaWBJ0,1912 -django/contrib/admin/templates/admin/nav_sidebar.html,sha256=qiY63xZShKRxfthryuWXz8moXxwLTXbcpwlidOApC94,253 -django/contrib/admin/templates/admin/object_history.html,sha256=hr_yKkciaPU-ljl3XM_87c2q0076YhAQXHy7buayLIc,1472 -django/contrib/admin/templates/admin/pagination.html,sha256=OBvC2HWFaH3wIuk6gzKSyCli51NTaW8vnJFyBOpNo_8,549 -django/contrib/admin/templates/admin/popup_response.html,sha256=Lj8dfQrg1XWdA-52uNtWJ9hwBI98Wt2spSMkO4YBjEk,327 -django/contrib/admin/templates/admin/prepopulated_fields_js.html,sha256=vVRsVT_TxUddTdKI7ADfIbwg5Mog4XVQwoBWlivEjRc,214 -django/contrib/admin/templates/admin/search_form.html,sha256=Ea8OEGFRyiTpkqdeWGyQ0mVWK0tuHXVndnO77xmjBYg,1044 -django/contrib/admin/templates/admin/submit_line.html,sha256=DgxKlyJ2b8o5NVWzE47yt_2X-xnbobKjdIVK2Y7jXBU,1052 -django/contrib/admin/templates/admin/widgets/clearable_file_input.html,sha256=NWjHNdkTZMAxU5HWXrOQCReeAO5A6PXBDRWO8S9gSGI,618 -django/contrib/admin/templates/admin/widgets/foreign_key_raw_id.html,sha256=Sp46OiJ5ViQMXfSaug4UkqIiXbiGdlQ8GNEhA8kVLUo,341 -django/contrib/admin/templates/admin/widgets/many_to_many_raw_id.html,sha256=w18JMKnPKrw6QyqIXBcdPs3YJlTRtHK5HGxj0lVkMlY,54 -django/contrib/admin/templates/admin/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html,sha256=LN8EMnad8qnyi2HIbOes3DkdbGkEsX4R4szGf_KByGM,1490 -django/contrib/admin/templates/admin/widgets/split_datetime.html,sha256=BQ9XNv3eqtvNqZZGW38VBM2Nan-5PBxokbo2Fm_wwCQ,238 -django/contrib/admin/templates/admin/widgets/url.html,sha256=Tf7PwdoKAiimfmDTVbWzRVxxUeyfhF0OlsuiOZ1tHgI,218 -django/contrib/admin/templates/registration/logged_out.html,sha256=CUO9snYMIOwRkd0j-Uk75xNyio7s_YezY9hnXZFt4QU,425 -django/contrib/admin/templates/registration/password_change_done.html,sha256=zCTCWnP78iaEYskE5yBtZtNNMQghgOW2gPpJZoQO04k,695 -django/contrib/admin/templates/registration/password_change_form.html,sha256=MHiHswn0AXxry9tH_TtiQCTDy13t2Ku0OSi4m2hPGvE,2084 -django/contrib/admin/templates/registration/password_reset_complete.html,sha256=W4qKfUgCVGpjqm350rbT3u1KJI1Ycjv7ExDhcsvQBeU,521 -django/contrib/admin/templates/registration/password_reset_confirm.html,sha256=8tHabvZL0eWDOewt1XJ9aWmiiyyAgn0YZSScsVcHSqY,1397 -django/contrib/admin/templates/registration/password_reset_done.html,sha256=znv0UHigbU5CxzBbHGwzctrAmElCTDqtqcovuXW86l0,691 -django/contrib/admin/templates/registration/password_reset_email.html,sha256=rqaoGa900-rsUasaGYP2W9nBd6KOGZTyc1PsGTFozHo,612 -django/contrib/admin/templates/registration/password_reset_form.html,sha256=9JU_KLBty9YmPpxtA07u_gRX7mkdrp1wftDJ0-2EQI4,988 -django/contrib/admin/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/templatetags/__pycache__/__init__.cpython-38.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_list.cpython-38.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_modify.cpython-38.pyc,, -django/contrib/admin/templatetags/__pycache__/admin_urls.cpython-38.pyc,, -django/contrib/admin/templatetags/__pycache__/base.cpython-38.pyc,, -django/contrib/admin/templatetags/__pycache__/log.cpython-38.pyc,, -django/contrib/admin/templatetags/admin_list.py,sha256=BZZYykMK12VDN10PniqZ4lzowL7wMav2loC_1aEarJI,18574 -django/contrib/admin/templatetags/admin_modify.py,sha256=KFbvwVixlzFuXEnZx1MVu77_7ZhV9B94JPR8MnHiVw8,4399 -django/contrib/admin/templatetags/admin_urls.py,sha256=b_RxDLR7yLBTMe-_ylzO-m0R3ITq3ZP_pnddRyM_Nos,1791 -django/contrib/admin/templatetags/base.py,sha256=mCcrwBWbgutR3tpaduRKNG3ShTu5Yl0Tjba5O5Rp5hU,1318 -django/contrib/admin/templatetags/log.py,sha256=mxV6mvfVJo0qRCelkjRBNWfrurLABhZvGQlcp5Bn4IU,2079 -django/contrib/admin/tests.py,sha256=OZggadS3ej92dvnnUZux1JhXNfqO1Wg86R9jjFHMu9o,7594 -django/contrib/admin/utils.py,sha256=BIIkf4eefQBThlM2BLcqRPuJUNuZNtpUTRor83Bo2bE,19747 -django/contrib/admin/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/admin/views/__pycache__/__init__.cpython-38.pyc,, -django/contrib/admin/views/__pycache__/autocomplete.cpython-38.pyc,, -django/contrib/admin/views/__pycache__/decorators.cpython-38.pyc,, -django/contrib/admin/views/__pycache__/main.cpython-38.pyc,, -django/contrib/admin/views/autocomplete.py,sha256=jlHKUvRt08x5GjluQ-t67x3qXoevrNVjAsx8bax0b5g,1904 -django/contrib/admin/views/decorators.py,sha256=J4wYcyaFr_-xY1ANl6QF4cFhOupRvjjmBotN0FshVYg,658 -django/contrib/admin/views/main.py,sha256=kwBQ6wkQN3BIfIBLbQpZL5Eb1QZdVVYJiARtk3jwT4o,22916 -django/contrib/admin/widgets.py,sha256=_pDNLzNHkaEXYphpy-p8xjzDDHb0aU5AXBWBQdqPAdE,17006 -django/contrib/admindocs/__init__.py,sha256=oY-eBzAOwpf5g222-vlH5BWHpDzpkj_DW7_XGDj7zgI,69 -django/contrib/admindocs/__pycache__/__init__.cpython-38.pyc,, -django/contrib/admindocs/__pycache__/apps.cpython-38.pyc,, -django/contrib/admindocs/__pycache__/middleware.cpython-38.pyc,, -django/contrib/admindocs/__pycache__/urls.cpython-38.pyc,, -django/contrib/admindocs/__pycache__/utils.cpython-38.pyc,, -django/contrib/admindocs/__pycache__/views.cpython-38.pyc,, -django/contrib/admindocs/apps.py,sha256=rV3aWVevgI6o8_9WY0yQ62O5CSMRRZrVwZFt1gpfKk0,216 -django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo,sha256=RnpPLulXkAXe6s5TmlkNbHWyK5R-0nGlOv-3TOFT_JU,702 -django/contrib/admindocs/locale/af/LC_MESSAGES/django.po,sha256=18HnMLlT8NzeujAJRPHGmwkKesl9Uy8Fllt3AP_lYgw,4608 -django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo,sha256=Gt6tFwPvlcMaOYZYGgKOFJBqF-TUoEm4tr4Ff3LYjUQ,7421 -django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po,sha256=eO8WOK-lHFS0YaxjvW3M_gqwaWVrJbCpQm0MMmT_tdI,8025 -django/contrib/admindocs/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=JfZf3pQPepUkAqcWj4XEKHGVg59E8U4sHI7wXxZ1F9Q,7445 -django/contrib/admindocs/locale/ar_DZ/LC_MESSAGES/django.po,sha256=fQLd1eOQppL7PFnjqDYq1cEJchxzNxi5ALOldU_68XA,7942 -django/contrib/admindocs/locale/ast/LC_MESSAGES/django.mo,sha256=d4u-2zZXnnueWm9CLSnt4TRWgZk2NMlrA6gaytJ2gdU,715 -django/contrib/admindocs/locale/ast/LC_MESSAGES/django.po,sha256=TUkc-Hm4h1kD0NKyndteW97jH6bWcJMFXUuw2Bd62qo,4578 -django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo,sha256=yWjmqVrGit7XjELYepZ9R48eOKma5Wau2RkkSSiJrgc,1687 -django/contrib/admindocs/locale/az/LC_MESSAGES/django.po,sha256=wGdq-g4u8ssHHvODJB-knjZdrP6noxRW9APn_kmOz7w,4993 -django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo,sha256=13T7uz8-xzRmaTNpB6Heu22WIl8KO2vTitm1EHZDr7k,8161 -django/contrib/admindocs/locale/be/LC_MESSAGES/django.po,sha256=mABAxE4F5vW5HcHhJexcJ394-hAT4EU0MCE6O_83zFs,8721 -django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo,sha256=n9GdBZljKJBmfups8Zt82lpHgEWvonacXztOS6qbAjM,7837 -django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po,sha256=SrmOtJ6nOi3lrgEwr-s76jYzN7lZs05dbEwh9OFxFHU,8692 -django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo,sha256=NOKVcE8id9G1OctSly4C5lm64CgEF8dohX-Pdyt4kCM,3794 -django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po,sha256=6M7LjIEjvDTjyraxz70On_TIsgqJPLW7omQ0Fz_zyfQ,6266 -django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo,sha256=UsPTado4ZNJM_arSMXyuBGsKN-bCHXQZdFbh0GB3dtg,1571 -django/contrib/admindocs/locale/br/LC_MESSAGES/django.po,sha256=SHOxPSgozJbOkm8u5LQJ9VmL58ZSBmlxfOVw1fAGl2s,5139 -django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo,sha256=clvhu0z3IF5Nt0tZ85hOt4M37pnGEWeIYumE20vLpsI,1730 -django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po,sha256=1-OrVWFqLpeXQFfh7JNjJtvWjVww7iB2s96dcSgLy90,5042 -django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo,sha256=0elCZBJul-zx5ofeQ7vu7hVYb5JEl5jo5vgSiKp2HOY,6661 -django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po,sha256=5owS4x9uNL5ZMbh38DFL9GpVZ3MzUtXEv8o7bJTDy7Q,7402 -django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo,sha256=ok-p0uXqy0I-nx0fKiVN1vqt4bq2psqP8KEpUHXEfds,6618 -django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po,sha256=cP2RDrCHb72nUmm5NNYHXrRid4HqC7EOR5Q2fokD_P0,7221 -django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo,sha256=sYeCCq0CMrFWjT6rKtmFrpC09OEFpYLSI3vu9WtpVTY,5401 -django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po,sha256=GhdikiXtx8Aea459uifQtBjHuTlyUeiKu0_rR_mDKyg,6512 -django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo,sha256=B4rF2QWO8lfQjjWDCVtUbwM6Ey7ks_bZHvrp4yRzwYk,6435 -django/contrib/admindocs/locale/da/LC_MESSAGES/django.po,sha256=mWlc9TNZO8YItwpJHxHuFzLZK3RLTYbulrDABgoOpvI,7077 -django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo,sha256=tsaEPab2JJpJRq7hYbPK9Ulh_gK9rkbMXrsadyAqK1g,6561 -django/contrib/admindocs/locale/de/LC_MESSAGES/django.po,sha256=6g8iEaTVsrXYctYRM4LUqhUSaQ65ZNvz7pPLERA98x0,7125 -django/contrib/admindocs/locale/dsb/LC_MESSAGES/django.mo,sha256=T_jTzvIiB_jo8S7-W5U8WPWLuII9NIYdlgfqQIFne40,6805 -django/contrib/admindocs/locale/dsb/LC_MESSAGES/django.po,sha256=gkE1B74QAsMdfREpPIFBf1mei2L4W_zLFyg7vyjIMkU,7325 -django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo,sha256=dJy15irtJqzPFc_yHS3LTeXYmPu0-bIlyrDPfbE5pSE,8598 -django/contrib/admindocs/locale/el/LC_MESSAGES/django.po,sha256=82wcERwp7_v3l66v3GKdlT-lVGhwGs8DK0184SbV3zk,9259 -django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/admindocs/locale/en/LC_MESSAGES/django.po,sha256=krsJxXU6ST_081sGrrghisx_nQ5xZtpImUxTvL68ad8,10686 -django/contrib/admindocs/locale/en_AU/LC_MESSAGES/django.mo,sha256=BQ54LF9Tx88m-pG_QVz_nm_vqvoy6pVJzL8urSO4l1Q,486 -django/contrib/admindocs/locale/en_AU/LC_MESSAGES/django.po,sha256=ho7s1uKEs9FGooyZBurvSjvFz1gDSX6R4G2ZKpF1c9Q,5070 -django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo,sha256=xKGbswq1kuWCbn4zCgUQUb58fEGlICIOr00oSdCgtU4,1821 -django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po,sha256=No09XHkzYVFBgZqo7bPlJk6QD9heE0oaI3JmnrU_p24,4992 -django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo,sha256=cwozZwZY0TylDQe7JguENqwGIqVhq0PCHK0htOixhsA,6391 -django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po,sha256=WvbW_97wH7tBCbQqzDi0sr4hbsL74V621Bn7lFrMQ4U,6879 -django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo,sha256=OYjdorHASk8cvZfzh4S1tzsB8ukZZQqEP8CJ8ZZD_-w,6673 -django/contrib/admindocs/locale/es/LC_MESSAGES/django.po,sha256=0d-YNcIC4QxJ4c0J62mqCjz7CbrgZZx1J_E4t7PPk7M,7516 -django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo,sha256=8zlwejIMQwbC5NiLsf7lRkewsvO9u3fC5jmYZ71OukU,6656 -django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po,sha256=d7YyXquK8QLZEhAXIqDTvJHvScC7CU7XyKrHL9MVgx0,7250 -django/contrib/admindocs/locale/es_CO/LC_MESSAGES/django.mo,sha256=KFjQyWtSxH_kTdSJ-kNUDAFt3qVZI_3Tlpg2pdkvJfs,6476 -django/contrib/admindocs/locale/es_CO/LC_MESSAGES/django.po,sha256=dwrTVjYmueLiVPu2yiJ_fkFF8ZeRntABoVND5H2WIRI,7038 -django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo,sha256=3hZiFFVO8J9cC624LUt4lBweqmpgdksRtvt2TLq5Jqs,1853 -django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po,sha256=gNmx1QTbmyMxP3ftGXGWJH_sVGThiSe_VNKkd7M9jOY,5043 -django/contrib/admindocs/locale/es_VE/LC_MESSAGES/django.mo,sha256=sMwJ7t5GqPF496w-PvBYUneZ9uSwmi5jP-sWulhc6BM,6663 -django/contrib/admindocs/locale/es_VE/LC_MESSAGES/django.po,sha256=ZOcE0f95Q6uD9SelK6bQlKtS2c3JX9QxNYCihPdlM5o,7201 -django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo,sha256=KwJDXghEgvQTDs7Tp2FM0EUedEtB2hvtd1D7neBFHB0,6380 -django/contrib/admindocs/locale/et/LC_MESSAGES/django.po,sha256=EDiJDtGgj7WwVhu0IlfV4HRrbHVxvElljF2Lt8GpI8Y,7062 -django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo,sha256=WHgK7vGaqjO4MwjBkWz2Y3ABPXCqfnwSGelazRhOiuo,6479 -django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po,sha256=718XgJN7UQcHgE9ku0VyFp7Frs-cvmCTO1o-xS5kpqc,7099 -django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo,sha256=5LnONa6ZHXFffSvhtIHOc-nnbltpgasyeZK8nUkoyIs,7533 -django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po,sha256=LqY_cJ3KiQ_SbRvn1gffAv4-8N64cpWuoMsJ53dm3UQ,8199 -django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo,sha256=-iPQyWSVn46CF-huqytiomENda1cM0VGAnnVRlwlezQ,6413 -django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po,sha256=AG_WPvp2-c8mQy_Gp4tUACvqN-ACKbr-jxMKb86ilKQ,6945 -django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo,sha256=suc16e51gGbi9t-J_JbCbJptu9FxBvCMdhYIdTd_fcE,6753 -django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po,sha256=-nb8hy4BNoP52I6QTsWT4VpzxkuhRd5qCAi4tdNIqNs,7322 -django/contrib/admindocs/locale/fy/LC_MESSAGES/django.mo,sha256=_xVO-FkPPoTla_R0CzktpRuafD9fuIP_G5N-Q08PxNg,476 -django/contrib/admindocs/locale/fy/LC_MESSAGES/django.po,sha256=b3CRH9bSUl_jjb9s51RlvFXp3bmsmuxTfN_MTmIIVNA,5060 -django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo,sha256=PkY5sLKd7gEIE2IkuuNJXP5RmjC-D4OODRv6KCCUDX8,1940 -django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po,sha256=-l6VME96KR1KKNACVu7oHzlhCrnkC1PaJQyskOUqOvk,5211 -django/contrib/admindocs/locale/gd/LC_MESSAGES/django.mo,sha256=1cfTNUgFPK9zGj6r6y7jGGiHcW9QpCq5XAb5yvAawiU,6939 -django/contrib/admindocs/locale/gd/LC_MESSAGES/django.po,sha256=nUKSAF7cI9pjxV4qLswYMrPWUsD__rNRtD-j-Ir8efg,7476 -django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo,sha256=CYtHrSyH_Lw0YxmmmndEnMPU-cw5TMr-8NHUjz6v7JM,2265 -django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po,sha256=0S2CJju3EIiEp6kqJIn0Jl1IyRAg2-5ovYMOW0YRtVA,5188 -django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo,sha256=mWWnjeFI5eoi-al_VB03RT-7LtP7VvdUKh9EJufU-9E,7006 -django/contrib/admindocs/locale/he/LC_MESSAGES/django.po,sha256=O1shu9ypDpw9zk4_2xyVnTRX6ivw6SpXbNet-xJHedg,7505 -django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo,sha256=sZhObIxqrmFu5Y-ZOQC0JGM3ly4IVFr02yqOOOHnDag,2297 -django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po,sha256=X6UfEc6q0BeaxVP_C4priFt8irhh-YGOUUzNQyVnEYY,5506 -django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo,sha256=fMsayjODNoCdbpBAk9GHtIUaGJGFz4sD9qYrguj-BQA,2550 -django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po,sha256=qi2IB-fBkGovlEz2JAQRUNE54MDdf5gjNJWXM-dIG1s,5403 -django/contrib/admindocs/locale/hsb/LC_MESSAGES/django.mo,sha256=2-rS1sZ-IVX4MuRcV_8VNo1zRaZ7fatK6S0tOwPu2fo,6768 -django/contrib/admindocs/locale/hsb/LC_MESSAGES/django.po,sha256=rhB59Jq6A18aQ2IpX5UTLJyYp5p-Dew_IUadFd9fGSo,7291 -django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo,sha256=RbMTzsBSOD-KNkptea6qQDOLv8tMzpb3f1sF3DyjSPI,6663 -django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po,sha256=AbegfB3hV6AZuRXrKWuq30BL-goagusBUJ1xC1jzG7A,7282 -django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo,sha256=KklX2loobVtA6PqHOZHwF1_A9YeVGlqORinHW09iupI,1860 -django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po,sha256=Z7btOCeARREgdH4CIJlVob_f89r2M9j55IDtTLtgWJU,5028 -django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo,sha256=55ze7c7MwxHf27I9Q6n9h--pczff43TWeUiMPjRw2zY,6337 -django/contrib/admindocs/locale/id/LC_MESSAGES/django.po,sha256=N7NrFJdFTpiIjKDPWMpa1FyOVpxdqZ9QChzOVbws6kE,7027 -django/contrib/admindocs/locale/io/LC_MESSAGES/django.mo,sha256=5t9Vurrh6hGqKohwsZIoveGeYCsUvRBRMz9M7k9XYY8,464 -django/contrib/admindocs/locale/io/LC_MESSAGES/django.po,sha256=SVZZEmaS1WbXFRlLLGg5bzUe09pXR23TeJtHUbhyl0w,5048 -django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo,sha256=pEr-_MJi4D-WpNyFaQe3tVKVLq_9V-a4eIF18B3Qyko,1828 -django/contrib/admindocs/locale/is/LC_MESSAGES/django.po,sha256=-mD5fFnL6xUqeW4MITzm8Lvx6KXq4C9DGsEM9kDluZ8,5045 -django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo,sha256=sQhq6CTX_y_qJHazR_-Sbk3CSvoLnJkgWBBBPEcH620,6450 -django/contrib/admindocs/locale/it/LC_MESSAGES/django.po,sha256=Qqorb6Rh44h-RdEqNTq2wRvbwR6lof3a1DEX88hZkmU,7163 -django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo,sha256=fvLD_Av1hMhX5qkdCz4SZGJeGDJrFp6r_JSplXHqzq8,7365 -django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po,sha256=jZttM5OSRfMdvN6x9pdVkrcgzYCKgi_lL5UfkhIHPok,8009 -django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo,sha256=w2cHLI1O3pVt43H-h71cnNcjNNvDC8y9uMYxZ_XDBtg,4446 -django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po,sha256=omKVSzNA3evF5Mk_Ud6utHql-Do7s9xDzCVQGQA0pSg,6800 -django/contrib/admindocs/locale/kab/LC_MESSAGES/django.mo,sha256=XTuWnZOdXhCFXEW4Hp0zFtUtAF0wJHaFpQqoDUTWYGw,1289 -django/contrib/admindocs/locale/kab/LC_MESSAGES/django.po,sha256=lQWewMZncWUvGhpkgU_rtwWHcgAyvhIkrDfjFu1l-d8,4716 -django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo,sha256=mmhLzn9lo4ff_LmlIW3zZuhE77LoSUfpaMMMi3oyi38,1587 -django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po,sha256=72sxLw-QDSFnsH8kuzeQcV5jx7Hf1xisBmxI8XqSCYw,5090 -django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo,sha256=Fff1K0qzialXE_tLiGM_iO5kh8eAmQhPZ0h-eB9iNOU,1476 -django/contrib/admindocs/locale/km/LC_MESSAGES/django.po,sha256=E_CaaYc4GqOPgPh2t7iuo0Uf4HSQQFWAoxSOCG-uEGU,4998 -django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo,sha256=lisxE1zzW-Spdm7hIzXxDAfS7bM-RdrAG_mQVwz9WMU,1656 -django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po,sha256=fbiHUPdw_iXrOvgiIvPTJI3WPLD_T77VBfhqW6gjq1c,5178 -django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo,sha256=SZynW9hR503fzQCXSSeYvwwZChBF7ff3iHGMESh4ayA,6592 -django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po,sha256=E81VE22vrKjgxDthgxOIO3sxgTVmNf-gZMba9Qcr9yY,7352 -django/contrib/admindocs/locale/ky/LC_MESSAGES/django.mo,sha256=9oD9-bDP7jqfWfrYuEEgY7KE5g0U3oLdILTs250SjhQ,7968 -django/contrib/admindocs/locale/ky/LC_MESSAGES/django.po,sha256=1_mobCRQupacSa4bSQ-Ub9pExoSj85syZUEAttHmdXo,8539 -django/contrib/admindocs/locale/lb/LC_MESSAGES/django.mo,sha256=N0hKFuAdDIq5clRKZirGh4_YDLsxi1PSX3DVe_CZe4k,474 -django/contrib/admindocs/locale/lb/LC_MESSAGES/django.po,sha256=B46-wRHMKUMcbvMCdojOCxqIVL5qVEh4Czo20Qgz6oU,5058 -django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo,sha256=KOnpaVeomKJIHcVLrkeRVnaqQHzFdYM_wXZbbqxWs4g,6741 -django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po,sha256=-uzCS8193VCZPyhO8VOi11HijtBG9CWVKStFBZSXfI4,7444 -django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo,sha256=mLEsWg3Oxk_r_Vz6CHrhx8oPQ4KzjA-rRxxDUwXUnSs,6448 -django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po,sha256=GjMKrHb-tgZpy6P9WmykioWoC6eubfWWVFB1b-Zdw4w,7079 -django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo,sha256=8H9IpRASM7O2-Ql1doVgM9c4ybZ2KcfnJr12PpprgP4,8290 -django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po,sha256=Uew7tEljjgmslgfYJOP9JF9ELp6NbhkZG_v50CZgBg8,8929 -django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo,sha256=bm4tYwcaT8XyPcEW1PNZUqHJIds9CAq3qX_T1-iD4k4,6865 -django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po,sha256=yNINX5M7JMTbYnFqQGetKGIXqOjGJtbN2DmIW9BKQ_c,8811 -django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo,sha256=KqdcvSpqmjRfA8M4nGB9Cnu9Auj4pTu9aH07XtCep3I,7607 -django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po,sha256=PGhlnzDKyAIRzaPCbNujpxSpf_JaOG66LK_NMlnZy6I,8316 -django/contrib/admindocs/locale/mr/LC_MESSAGES/django.mo,sha256=LDGC7YRyVBU50W-iH0MuESunlRXrNfNjwjXRCBdfFVg,468 -django/contrib/admindocs/locale/mr/LC_MESSAGES/django.po,sha256=5cUgPltXyS2Z0kIKF5ER8f5DuBhwmAINJQyfHj652d0,5052 -django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo,sha256=AsdUmou0FjCiML3QOeXMdbHiaSt2GdGMcEKRJFonLOQ,1721 -django/contrib/admindocs/locale/my/LC_MESSAGES/django.po,sha256=c75V-PprKrWzgrHbfrZOpm00U_zZRzxAUr2U_j8MF4w,5189 -django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo,sha256=W5bS2lOxmciyWQh6dqEh14KIxeb7vxmJ5fxjbmgfd-U,6311 -django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po,sha256=OKLCn_vPpoI63ZxvcjXqBGqRVsjaVcmBTKtGYSV7Ges,6963 -django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo,sha256=fWPAUZOX9qrDIxGhVVouJCVDWEQLybZ129wGYymuS-c,2571 -django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po,sha256=wb8pCm141YfGSHVW84FnAvsKt5KnKvzNyzGcPr-Wots,5802 -django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo,sha256=nZwZekyuJi9U8WhJHasdQ05O1Qky8kJzj3i6c4lj3rw,6463 -django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po,sha256=aP59hIiCQwGCKyHnoJXYJIChzYMbNFlb2IotTX4WBwU,7188 -django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo,sha256=Dx-A4dlDEoOKrtvis1mWfvwA2Urj-QAiKNmBy--v0oY,1662 -django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po,sha256=VAHAyol0YEaHd0TaGxaQuVUIR72QB3VUnB1ARtr-AWw,4974 -django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo,sha256=zSQBgSj4jSu5Km0itNgDtbkb1SbxzRvQeZ5M9sXHI8k,2044 -django/contrib/admindocs/locale/os/LC_MESSAGES/django.po,sha256=hZlMmmqfbGmoiElGbJg7Fp791ZuOpRFrSu09xBXt6z4,5215 -django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo,sha256=yFeO0eZIksXeDhAl3CrnkL1CF7PHz1PII2kIxGA0opQ,1275 -django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po,sha256=DA5LFFLOXHIJIqrrnj9k_rqL-wr63RYX_i-IJFhBuc0,4900 -django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo,sha256=qsj4xq56xSY9uehc4yEKLY6eCy8ouLLVhtR1F5wczKs,6617 -django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po,sha256=vP7encvqv_hUIxA5UR-SaeyGOSyEoMkHuAcv1p70klc,7461 -django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo,sha256=WcXhSlbGdJgVMvydkPYYee7iOQ9SYdrLkquzgIBhVWU,6566 -django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po,sha256=J98Hxa-ApyzRevBwcAldK9bRYbkn5DFw3Z5P7SMEwx0,7191 -django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5vgEK-oGEZ_HfvWFSGV9HdSQXhP-y7MzBXjiz--AkkY,6595 -django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po,sha256=KyaDPsHl3WV6V5ty_MD1JdmrNju1puJTEPOusNKsAzI,7492 -django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo,sha256=9K8Sapn6sOg1wtt2mxn7u0cnqPjEHH70qjwM-XMPzNA,6755 -django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po,sha256=b4AsPjWBYHQeThAtLP_TH4pJitwidtoPNkJ7dowUuRg,7476 -django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo,sha256=jW3cwiFyeUvRpbrI6KBquKJZQuosLz4JmgcLKDKijNA,8513 -django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po,sha256=Unc-3ip4ZPWKa8aRTUQ12jh8ae0c8TRSLUO5OH6XOFQ,9237 -django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo,sha256=Y9vQluxcGX9liYofnZb80iwgrdLs9WneKHX4-JX4evY,6644 -django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po,sha256=X9eNfQfHj-SBIEUq5beCU3l5hpVPgv5ktn7GHT__2Qc,7337 -django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo,sha256=FMg_s9ZpeRD42OsSF9bpe8pRQ7wP7-a9WWnaVliqXpU,6508 -django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po,sha256=JWO_WZAwBpXw-4FoB7rkWXGhi9aEVq1tH2fOC69rcgg,7105 -django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo,sha256=wsEQkUiModpe_gQC7aUMLiMPndXwbYJ_YxDd4hoSYG4,6542 -django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po,sha256=zTrVM6nqjeD80RoqOKKYCrPrzgR0wWFecPvhLn7-BTs,7096 -django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo,sha256=PyE8DXRYELzSs4RWh1jeADXOPrDEN3k-nLr8sbM1Ssw,3672 -django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po,sha256=ri7v9WHXORY-3Dl-YDKGsCFfQzH-a5y8t1vT6yziIyo,6108 -django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=au90IT43VR162L2jEsYqhRpso2dvOjpCPSCFiglokTc,1932 -django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po,sha256=tJ4tHLJj0tDaVZba3WIkI0kg95_jEYWTmqXD0rFb6T8,5140 -django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo,sha256=FsErCRG8EAsZB7DhFxnvU_GeAv9gy5VC0gOYgV7-teA,6417 -django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po,sha256=1sPLsQ6XXpmeIvqtKTFrsYpD39tg1ijy37iaBEmsq5Y,7042 -django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo,sha256=pyJfGL7UdPrJAVlCB3YimXxTjTfEkoZQWX-CSpDkcWc,1808 -django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po,sha256=SIywrLX1UGx4OiPxoxUYelmQ1YaY2LMa3dxynGQpHp8,4929 -django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo,sha256=8SjQ9eGGyaZGhkuDoZTdtYKuqcVyEtWrJuSabvNRUVM,1675 -django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po,sha256=k593yzVqpSQOsdpuF-rdsSLwKQU8S_QFMRpZXww__1A,5194 -django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo,sha256=eAzNpYRy_G1erCcKDAMnJC4809ITRHvJjO3vpyAC_mk,1684 -django/contrib/admindocs/locale/te/LC_MESSAGES/django.po,sha256=oDg_J8JxepFKIe5m6lDKVC4YWQ_gDLibgNyQ3508VOM,5204 -django/contrib/admindocs/locale/tg/LC_MESSAGES/django.mo,sha256=jSMmwS6F_ChDAZDyTZxRa3YuxkXWlO-M16osP2NLRc0,7731 -django/contrib/admindocs/locale/tg/LC_MESSAGES/django.po,sha256=mewOHgRsFydk0d5IY3jy3rOWa6uHdatlSIvFNZFONsc,8441 -django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo,sha256=bHK49r45Q1nX4qv0a0jtDja9swKbDHHJVLa3gM13Cb4,2167 -django/contrib/admindocs/locale/th/LC_MESSAGES/django.po,sha256=_GMgPrD8Zs0lPKQOMlBmVu1I59yXSV42kfkrHzeiehY,5372 -django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo,sha256=BHI6snNVjIk_lB3rkySECcLe5iOSojQuDIZ3udSnAIQ,6659 -django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po,sha256=aKRTEYTRTg1RTSIcXBlvy0RGXmdkqCOcRF9TamUH0EA,7307 -django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo,sha256=pQmAQOPbrBVzBqtoQ0dsFWFwC6LxA5mQZ9QPqL6pSFw,1869 -django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po,sha256=NCLv7sSwvEficUOSoMJlHGqjgjYvrvm2V3j1Gkviw80,5181 -django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo,sha256=hwDLYgadsKrQEPi9HiuMWF6jiiYUSy4y-7PVNJMaNpY,618 -django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po,sha256=29fpfn4p8KxxrBdg4QB0GW_l8genZVV0kYi50zO-qKs,5099 -django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo,sha256=8LrLmRaZCxJL76RqROdH49rLsvq2TVuMTfuhsp8Wfjg,8449 -django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po,sha256=uxziDeiYiDJ6TVk_fiquHe-6pxrGBtgK8ZRIn92KuJQ,9279 -django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo,sha256=VNg9o_7M0Z2LC0n3_-iwF3zYmncRJHaFqqpxuPmMq84,1836 -django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po,sha256=QTg85c4Z13hMN_PnhjaLX3wx6TU4SH4hPTzNBfNVaMU,5148 -django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo,sha256=F6dyo00yeyUND_w1Ocm9SL_MUdXb60QQpmAQPto53IU,1306 -django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po,sha256=JrVKjT848Y1cS4tpH-eRivFNwM-cUs886UEhY2FkTPw,4836 -django/contrib/admindocs/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=-L0FlYPyzwDVRJEIkDmZ9SyV6mMXKbCfHIE_CIUORxM,6081 -django/contrib/admindocs/locale/zh_Hans/LC_MESSAGES/django.po,sha256=f6XMkNBTSs_5YFr-jvTXjSlqePjDf6ns_oDfgLC3ZlY,6800 -django/contrib/admindocs/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=7c2QywaTzF_GX8T2PUknQ_PN5s0Cx37_cO-walIg8mk,4725 -django/contrib/admindocs/locale/zh_Hant/LC_MESSAGES/django.po,sha256=uX-3zu8RQdntg__qYBweKtcuBgLsXPUYApf4bQx9eSU,6153 -django/contrib/admindocs/middleware.py,sha256=G9zA_mOiBAPE--yGBPTsXcea-DWyzlRYDisObqYXW8Y,1217 -django/contrib/admindocs/templates/admin_doc/bookmarklets.html,sha256=PnfojSYh6lJA03UPjWbvxci64CNPQmrhJhycdyqlT5U,1281 -django/contrib/admindocs/templates/admin_doc/index.html,sha256=o710lPn-AHBJfKSUS6x1eUjAOZYRO9dbnuq_Cg7HEiY,1369 -django/contrib/admindocs/templates/admin_doc/missing_docutils.html,sha256=pITw1xanpMNj-6YTGh8-3mfsKbytrgQhDlzjMhiBHts,784 -django/contrib/admindocs/templates/admin_doc/model_detail.html,sha256=0O5-Kxf8RNyZ_slYJ1kq26HmKoarGMkf0S27fqhrFYE,1880 -django/contrib/admindocs/templates/admin_doc/model_index.html,sha256=7fgybgDWYcWZaDPgf25DxFkdxtnrqnpLem7iVmPQmLk,1346 -django/contrib/admindocs/templates/admin_doc/template_detail.html,sha256=C_shsOpJiW0Rngv8ZSXi12dgoepUUCqU3dPdaq9Bmio,1049 -django/contrib/admindocs/templates/admin_doc/template_filter_index.html,sha256=U2HBVHXtgCqUp9hLuOMVqCxBbXyYMMgAORG8fziN7uc,1775 -django/contrib/admindocs/templates/admin_doc/template_tag_index.html,sha256=S4U-G05yi1YIlFEv-HG20bDiq4rhdiZCgebhVBzNzdY,1731 -django/contrib/admindocs/templates/admin_doc/view_detail.html,sha256=u2rjpM0cLlHxSY-Na7wxqnv76zaGf0P1FgdnHl9XqdQ,928 -django/contrib/admindocs/templates/admin_doc/view_index.html,sha256=ZLfmxMkVlPYETRFnjLmU3bagve4ZvY1Xzsya1Lntgkw,1734 -django/contrib/admindocs/urls.py,sha256=zdHaV60yJMjuLqO9xU0H-j7hz1PmSsepEWZA2GH-eI0,1310 -django/contrib/admindocs/utils.py,sha256=tCEGbV5-NyO6qkLIXjl-MX8kT9BgfWkiJuzgkfO1Mso,7735 -django/contrib/admindocs/views.py,sha256=ihtscs5Mnbme1dBl3pXdDXNDe6C2WBzqAN-GuuihSCw,16561 -django/contrib/auth/__init__.py,sha256=ZzbfJMVCaDD1ypyT6EUPZX0QiFPuUBfZCf_wCnAd2tQ,8056 -django/contrib/auth/__pycache__/__init__.cpython-38.pyc,, -django/contrib/auth/__pycache__/admin.cpython-38.pyc,, -django/contrib/auth/__pycache__/apps.cpython-38.pyc,, -django/contrib/auth/__pycache__/backends.cpython-38.pyc,, -django/contrib/auth/__pycache__/base_user.cpython-38.pyc,, -django/contrib/auth/__pycache__/checks.cpython-38.pyc,, -django/contrib/auth/__pycache__/context_processors.cpython-38.pyc,, -django/contrib/auth/__pycache__/decorators.cpython-38.pyc,, -django/contrib/auth/__pycache__/forms.cpython-38.pyc,, -django/contrib/auth/__pycache__/hashers.cpython-38.pyc,, -django/contrib/auth/__pycache__/middleware.cpython-38.pyc,, -django/contrib/auth/__pycache__/mixins.cpython-38.pyc,, -django/contrib/auth/__pycache__/models.cpython-38.pyc,, -django/contrib/auth/__pycache__/password_validation.cpython-38.pyc,, -django/contrib/auth/__pycache__/signals.cpython-38.pyc,, -django/contrib/auth/__pycache__/tokens.cpython-38.pyc,, -django/contrib/auth/__pycache__/urls.cpython-38.pyc,, -django/contrib/auth/__pycache__/validators.cpython-38.pyc,, -django/contrib/auth/__pycache__/views.cpython-38.pyc,, -django/contrib/auth/admin.py,sha256=YbVtoNYWSkoLWKePeJ0Pl6u6wrhaoxeS8dTd3n7hXws,8607 -django/contrib/auth/apps.py,sha256=NGdy1h4yrogCn9YZOkhnO7LcVFHZAS60j-Bb7-Rz17A,1168 -django/contrib/auth/backends.py,sha256=fvm2NFyd90CSCzv66G7RA8x5zszGu2u_0YnHhB_JlpY,8584 -django/contrib/auth/base_user.py,sha256=cfEtOcBOBiIU_WZ3yrXU0RbJEQRg0IxEoLUosf_gsVU,4995 -django/contrib/auth/checks.py,sha256=bfPEfMd1PH-K6H1aMIzXBDWaWRC-7YnnoeF8IF4Xsvc,8139 -django/contrib/auth/common-passwords.txt.gz,sha256=CnCdMuzzpa5EVwTpCqtO7-x3CIPsy47PWWw7GUT9C5M,81355 -django/contrib/auth/context_processors.py,sha256=Vb91feuKV9a3BBgR0hrrGmZvVPw0JyYgeA_mRX9QK1c,1822 -django/contrib/auth/decorators.py,sha256=2iowUAGrkZBzaX_Wf0UkUbd0po00UCxtdFQxXj1HIyo,2892 -django/contrib/auth/forms.py,sha256=9XAWo0AZB74-kXjtmwlYOUhjDiy-F6DxHkDS53W4fnc,16339 -django/contrib/auth/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/auth/handlers/__pycache__/__init__.cpython-38.pyc,, -django/contrib/auth/handlers/__pycache__/modwsgi.cpython-38.pyc,, -django/contrib/auth/handlers/modwsgi.py,sha256=bTXKVMezywsn1KA2MVyDWeHvTNa2KrwIxn2olH7o_5I,1248 -django/contrib/auth/hashers.py,sha256=jQ6LrRvXu9CpiqAYdEJZvsF48f9DKM1HagvGRPMGIHI,22139 -django/contrib/auth/locale/af/LC_MESSAGES/django.mo,sha256=UKEGdzrpTwNnuhPcejOS-682hL88yV83xh-55dMZzyg,7392 -django/contrib/auth/locale/af/LC_MESSAGES/django.po,sha256=GFM0MbuRB9axSqvFQzZXhyeZF9JTKqoMMdfNEgNQVFY,7618 -django/contrib/auth/locale/ar/LC_MESSAGES/django.mo,sha256=XKjM5Jn83udiZh9re-nzOYDSNwaNeRA1ImR4nU38uSQ,9883 -django/contrib/auth/locale/ar/LC_MESSAGES/django.po,sha256=EBJw0OmfbYCjtsuwRQnd1lItGBw4Pha0ohmAAXadEyE,10347 -django/contrib/auth/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=s6EoUozLpEw-OT2WllVMl8SwKrkBmIWgGO9qbG80xsQ,10167 -django/contrib/auth/locale/ar_DZ/LC_MESSAGES/django.po,sha256=P7GHKRC3hZiyVtbfzVGTcY81FuAGf0LFUgR6TZSEwfY,10494 -django/contrib/auth/locale/ast/LC_MESSAGES/django.mo,sha256=Pt3gYY3j8Eroo4lAEmf-LR6u9U56mpE3vqLhjR4Uq-o,2250 -django/contrib/auth/locale/ast/LC_MESSAGES/django.po,sha256=Kiq4s8d1HnYpo3DQGlgUl3bOkxmgGW8CvGp9AbryRk8,5440 -django/contrib/auth/locale/az/LC_MESSAGES/django.mo,sha256=h1bem16bDuYOFR7NEGt2b3ssLOXMHqeWmnZtlni4e9g,7448 -django/contrib/auth/locale/az/LC_MESSAGES/django.po,sha256=euNyhutfYGtuMhUHpGJrLVXnlhPEGkJOV4d_gEJn5no,7735 -django/contrib/auth/locale/be/LC_MESSAGES/django.mo,sha256=SgSeUlTJuQ4-YZj7h6WltiuUVcYldlBcVdlynQ4bT80,9976 -django/contrib/auth/locale/be/LC_MESSAGES/django.po,sha256=LFiM8UDOCw2AY_GAL3Sbwrah_Umg32Q5phkbvjV8UlE,10299 -django/contrib/auth/locale/bg/LC_MESSAGES/django.mo,sha256=ZwwXfAeWM92GObhxU6zzGu36KJUpkGOuEeprRMu5mZc,8751 -django/contrib/auth/locale/bg/LC_MESSAGES/django.po,sha256=_a2hoIiJRbvW3ymKAkAp-UZNk5AiUy5HqPBBby74Jew,9492 -django/contrib/auth/locale/bn/LC_MESSAGES/django.mo,sha256=cJSawQn3rNh2I57zK9vRi0r1xc598Wr26AyHh6D50ZQ,5455 -django/contrib/auth/locale/bn/LC_MESSAGES/django.po,sha256=5Vqd4n9ab98IMev4GHLxpO7f4r9nnhC3Nfx27HQNd8s,7671 -django/contrib/auth/locale/br/LC_MESSAGES/django.mo,sha256=nxLj88BBhT3Hudev1S_BRC8P6Jv7eoR8b6CHGt5eoPo,1436 -django/contrib/auth/locale/br/LC_MESSAGES/django.po,sha256=rFo68wfXMyju633KCAhg0Jcb3GVm3rk4opFQqI89d6Y,5433 -django/contrib/auth/locale/bs/LC_MESSAGES/django.mo,sha256=1i1CxyXwfskDZtItZQuEpZFlV3cpIo6Ls7Ocs0X3VTA,2963 -django/contrib/auth/locale/bs/LC_MESSAGES/django.po,sha256=C5CQ5vqjuLscWSKHVu0niGzmhxX0y-pf_eiuEr-ZmGU,5793 -django/contrib/auth/locale/ca/LC_MESSAGES/django.mo,sha256=Z-X0g_6qZpzzryBYS8yUX64ux3kaPb44G5ABd-k4C68,7616 -django/contrib/auth/locale/ca/LC_MESSAGES/django.po,sha256=MTOV5IKVcPlgaoOreoM5TxCJ-vWCGXJtEU8NlO4TCDA,8090 -django/contrib/auth/locale/cs/LC_MESSAGES/django.mo,sha256=cEcRFsiAyI8OOUf9_hpOg4VuhbDUDExaxjFgma7YrQs,7774 -django/contrib/auth/locale/cs/LC_MESSAGES/django.po,sha256=o8_TvjDtm3rCx2iUzop5KVeaPDl49-CjKhL_8M4eTqQ,8226 -django/contrib/auth/locale/cy/LC_MESSAGES/django.mo,sha256=lSfCwEVteW4PDaiGKPDxnSnlDUcGMkPfsxIluExZar0,4338 -django/contrib/auth/locale/cy/LC_MESSAGES/django.po,sha256=-LPAKGXNzB77lVHfCRmFlH3SUaLgOXk_YxfC0BomcEs,6353 -django/contrib/auth/locale/da/LC_MESSAGES/django.mo,sha256=321FuiFJg-xSrNri8oPSLKLU4OPqQBQBxd_w_tRFUQI,7418 -django/contrib/auth/locale/da/LC_MESSAGES/django.po,sha256=jv5xZta-NXpaJNdwpMapg3QCUy0-KwVrDx2JeMH7Bok,7811 -django/contrib/auth/locale/de/LC_MESSAGES/django.mo,sha256=b7ZXlKTff2vYkY7ldkQVD6SX-36KgWBW8VsuP4m8bSY,7477 -django/contrib/auth/locale/de/LC_MESSAGES/django.po,sha256=W9MRGmYgNk5n-nMd6SKfL3kQ-YjsUh_vOZ818CR10Tw,7938 -django/contrib/auth/locale/dsb/LC_MESSAGES/django.mo,sha256=iYj_y2xE4yetsuFgDAfpr5iQgyVCfJL4x5qPIuVPCO0,8081 -django/contrib/auth/locale/dsb/LC_MESSAGES/django.po,sha256=657tWjp8Wowyib_uQh2tFULEETaavrI9zqgmkKq2TCw,8381 -django/contrib/auth/locale/el/LC_MESSAGES/django.mo,sha256=tfjgL-_ZACj_GjsfR7jw1PTjxovgR51-LSo5ngtRX-U,10150 -django/contrib/auth/locale/el/LC_MESSAGES/django.po,sha256=IXkrUAGvMZrQTUb6DpdgftRkWg4aKy9vwyO6i-ajsjU,10753 -django/contrib/auth/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/auth/locale/en/LC_MESSAGES/django.po,sha256=cPtY1qLoggZk3h9DztguWtUaLkeE4uQr3yVQfBesyh8,8012 -django/contrib/auth/locale/en_AU/LC_MESSAGES/django.mo,sha256=74v8gY8VcSrDgsPDaIMET5frCvtzgLE8oHgX1xNWUvw,3650 -django/contrib/auth/locale/en_AU/LC_MESSAGES/django.po,sha256=lg-LFEeZXxGsNNZ656ePDvAAncjuy0LKuQxUFvQCUJk,5921 -django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo,sha256=p57gDaYVvgEk1x80Hq4Pn2SZbsp9ly3XrJ5Ttlt2yOE,3179 -django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po,sha256=-yDflw5-81VOlyqkmLJN17FRuwDrhYXItFUJwx2aqpE,5787 -django/contrib/auth/locale/eo/LC_MESSAGES/django.mo,sha256=4deiZv4tbjsp2HHn3O5DAidWPpI8gfhpoLbw9Mq_0a4,7347 -django/contrib/auth/locale/eo/LC_MESSAGES/django.po,sha256=KpeJqyXFj1ns0beDaXamNC6P7Rdq0Qff9i8rfHFKQug,7671 -django/contrib/auth/locale/es/LC_MESSAGES/django.mo,sha256=sllga8P8uO2q4uhJ-MvZkF8plnPE7C4ONmLlRkn5yTU,7700 -django/contrib/auth/locale/es/LC_MESSAGES/django.po,sha256=0uVF9tqBpAfGynT8y-GfvHDJ5yxgSqxnRkLD-6EYa6M,8396 -django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo,sha256=ow-0zlgfVDS_IAr6OLoPqXdVrFGo02EZCPf3Hw3JGyQ,7890 -django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po,sha256=c0z6f_s47yZ1UyaUY7dTr9S_v5dj6mL2YyuhK0qWBOs,8162 -django/contrib/auth/locale/es_CO/LC_MESSAGES/django.mo,sha256=K5VaKTyeV_WoKsLR1x8ZG4VQmk3azj6ZM8Phqjs81So,6529 -django/contrib/auth/locale/es_CO/LC_MESSAGES/django.po,sha256=qJywTaYi7TmeMB1sjwsiwG8GXtxAOaOX0voj7lLVZRw,7703 -django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo,sha256=dCav1yN5q3bU4PvXZd_NxHQ8cZ9KqQCiNoe4Xi8seoY,7822 -django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po,sha256=_4un21ALfFsFaqpLrkE2_I18iEfJlcAnd_X8YChfdWo,8210 -django/contrib/auth/locale/es_VE/LC_MESSAGES/django.mo,sha256=GwpZytNHtK7Y9dqQKDiVi4SfA1AtPlk824_k7awqrdI,7415 -django/contrib/auth/locale/es_VE/LC_MESSAGES/django.po,sha256=G3mSCo_XGRUfOAKUeP_UNfWVzDPpbQrVYQt8Hv3VZVM,7824 -django/contrib/auth/locale/et/LC_MESSAGES/django.mo,sha256=yilio-iPwr09MPHPgrDLQ-G5d2xNg1o75lcv5-yzcM4,7393 -django/contrib/auth/locale/et/LC_MESSAGES/django.po,sha256=OvUyjbna_KS-bI4PUUHagS-JuwtB7G0J1__MtFGxB-M,7886 -django/contrib/auth/locale/eu/LC_MESSAGES/django.mo,sha256=K0AoFJGJJSnD1IzYqCY9qB4HZHwx-F7QaDTAGehyo7w,7396 -django/contrib/auth/locale/eu/LC_MESSAGES/django.po,sha256=y9BAASQYTTYfoTKWFVQUYs5-zPlminfJ6C5ZORD6g-s,7749 -django/contrib/auth/locale/fa/LC_MESSAGES/django.mo,sha256=7oQ_0XxUniTEDAGKLXODgouH80NdkDANKBQ749gLkok,8963 -django/contrib/auth/locale/fa/LC_MESSAGES/django.po,sha256=OUGU1vy0hLFb8Bv8V6gykbOB9Qw2Gk1MVMR7aHXS4FU,9362 -django/contrib/auth/locale/fi/LC_MESSAGES/django.mo,sha256=OPQ9WRAp6F6TERy-r62D0hNDPQcmH2zGFlEqZab3keY,7492 -django/contrib/auth/locale/fi/LC_MESSAGES/django.po,sha256=bhwFsyeQtr_dCu3QU8EuyyVnHegU-78AfXp0ptCWcV0,7848 -django/contrib/auth/locale/fr/LC_MESSAGES/django.mo,sha256=CiCGqwKFoJnWDqi7QgHcLEkayZTA9JZX3SWCsIBxTK8,8105 -django/contrib/auth/locale/fr/LC_MESSAGES/django.po,sha256=Kij98WD0TShBZdMYXmjINji3SuCmKTafmxUL8-JLJt0,8481 -django/contrib/auth/locale/fy/LC_MESSAGES/django.mo,sha256=95N-77SHF0AzQEer5LuBKu5n5oWf3pbH6_hQGvDrlP4,476 -django/contrib/auth/locale/fy/LC_MESSAGES/django.po,sha256=8XOzOFx-WerF7whzTie03hgO-dkbUFZneyrpZtat5JY,3704 -django/contrib/auth/locale/ga/LC_MESSAGES/django.mo,sha256=Nd02Ed9ACCY6JCCSwtiWl3DTODLFFu9Mq6JVlr5YbYk,3572 -django/contrib/auth/locale/ga/LC_MESSAGES/django.po,sha256=FQJMR5DosuKqo4vvF0NAQnjfqbH54MSzqL2-4BO4-uM,6127 -django/contrib/auth/locale/gd/LC_MESSAGES/django.mo,sha256=-GSChZnB8t2BR6KoF-ZU2qlvfXNq5fAbomOBdoefEZE,8687 -django/contrib/auth/locale/gd/LC_MESSAGES/django.po,sha256=SN-QSmEG04qXHwoIzBgMjHEkqYqFQeJ7OvFXg496A6c,9044 -django/contrib/auth/locale/gl/LC_MESSAGES/django.mo,sha256=ZqVb1YCn_0_HyVtb_rnxmn0BSYAuKTVTFNHf2gftt5c,4022 -django/contrib/auth/locale/gl/LC_MESSAGES/django.po,sha256=YN_7iJTGc1Kh5llxHnwqq1kZmdQVMUMv1bkti30fMCI,6371 -django/contrib/auth/locale/he/LC_MESSAGES/django.mo,sha256=MeI7B43KSAIZL7_qxceKnnFKnyoUVYeZDRkGWabrclw,8606 -django/contrib/auth/locale/he/LC_MESSAGES/django.po,sha256=aDJlOsxyGpm-t6BydtqPMDB9lPcBCie8a1IfW_Ennvc,9012 -django/contrib/auth/locale/hi/LC_MESSAGES/django.mo,sha256=7CxV1H37hMbgKIhnAWx-aJmipLRosJe1qg8BH2CABfw,5364 -django/contrib/auth/locale/hi/LC_MESSAGES/django.po,sha256=DU5YM6r1kd5fo40yqFXzEaNh42ezFQFQ-0dmVqkaKQ0,7769 -django/contrib/auth/locale/hr/LC_MESSAGES/django.mo,sha256=GEap3QClwCkuwQZKJE7qOZl93RRxmyyvTTnOTYaAWUo,5894 -django/contrib/auth/locale/hr/LC_MESSAGES/django.po,sha256=ALftoYSaI1U90RNDEvnaFATbw1SL0m8fNXAyl6DkSvo,7355 -django/contrib/auth/locale/hsb/LC_MESSAGES/django.mo,sha256=EPvlwd_NX7HEYa9exou0QWR501uyNr8_3tRMz-l1_FA,7922 -django/contrib/auth/locale/hsb/LC_MESSAGES/django.po,sha256=oylGjyfqTtyTJGRpBEI3xfN5MFzgklZ5FtNVe54ugKM,8213 -django/contrib/auth/locale/hu/LC_MESSAGES/django.mo,sha256=TLGY7EaLD12NHYM1hQlqb4D4BM0T68jv8yhECOHIgcA,7655 -django/contrib/auth/locale/hu/LC_MESSAGES/django.po,sha256=E51MM5qqplgrOSrh60bfz-EvyL91Ik3kL3YJOK-dqzk,8040 -django/contrib/auth/locale/hy/LC_MESSAGES/django.mo,sha256=zoLe0EqIH8HQYC5XAWd8b8mA2DpbmDSEBsF-WIKX_OQ,8001 -django/contrib/auth/locale/hy/LC_MESSAGES/django.po,sha256=wIWLbz6f0n44ZcjEbZZsgoWTpzXRGND15hudr_DQ3l0,8787 -django/contrib/auth/locale/ia/LC_MESSAGES/django.mo,sha256=oTzOm7fRjn79_pU9zy6D_Ehex5FK7hjQYe4soeHhRkk,3314 -django/contrib/auth/locale/ia/LC_MESSAGES/django.po,sha256=LzJOXjj1Fa61zk3v2d-aWS48eva2S0b0jJ9r5CqiFDY,5881 -django/contrib/auth/locale/id/LC_MESSAGES/django.mo,sha256=gCVLTVK24TVnaaeb3JAqQ9Wzt0Cad0FLcCBr0gD76kU,7170 -django/contrib/auth/locale/id/LC_MESSAGES/django.po,sha256=0bxsUqjQMA2qCjBkx1Q62v007ow3S5J3UgcV2ll9sL4,7589 -django/contrib/auth/locale/io/LC_MESSAGES/django.mo,sha256=YwAS3aWljAGXWcBhGU_GLVuGJbHJnGY8kUCE89CPdks,464 -django/contrib/auth/locale/io/LC_MESSAGES/django.po,sha256=W36JXuA1HQ72LspixRxeuvxogVxtk7ZBbT0VWI38_oM,3692 -django/contrib/auth/locale/is/LC_MESSAGES/django.mo,sha256=0PBYGqQKJaAG9m2jmJUzcqRVPc16hCe2euECMCrNGgI,7509 -django/contrib/auth/locale/is/LC_MESSAGES/django.po,sha256=o6dQ8WMuPCw4brSzKUU3j8PYhkLBO7XQ3M7RlsIw-VY,7905 -django/contrib/auth/locale/it/LC_MESSAGES/django.mo,sha256=dI8wYt63mrZ02kL3r1XVY-AIussOMwQyvWBfefM4Zw0,7539 -django/contrib/auth/locale/it/LC_MESSAGES/django.po,sha256=wnIrW0RSky6QG7hrmof8Ow3-4YLouN6izMC2kik-PHA,8069 -django/contrib/auth/locale/ja/LC_MESSAGES/django.mo,sha256=qzCIy4-2ZpAPjeiBJWcrvcOCP6YyJl7CwdJtI8kn4P4,8024 -django/contrib/auth/locale/ja/LC_MESSAGES/django.po,sha256=l-txD5McDJSjRIG5t3XFWjaezvy0gmnGl3SUUVwumDg,8376 -django/contrib/auth/locale/ka/LC_MESSAGES/django.mo,sha256=0QWYd58Dz5Az3OfZo7wV3o-QCre2oc5dgEPu0rnLVJI,10625 -django/contrib/auth/locale/ka/LC_MESSAGES/django.po,sha256=oCtz7gS4--mhv7biS1rIh43I4v1UpZX4DKdrB-xZ2RA,11217 -django/contrib/auth/locale/kab/LC_MESSAGES/django.mo,sha256=9qKeQ-gDByoOdSxDpSbLaM4uSP5sIi7qlTn8tJidVDs,2982 -django/contrib/auth/locale/kab/LC_MESSAGES/django.po,sha256=8cq5_rjRXPzTvn1jPo6H_Jcrv6IXkWr8n9fTPvghsS8,5670 -django/contrib/auth/locale/kk/LC_MESSAGES/django.mo,sha256=RJablrXpRba6YVB_8ACSt2q_BjmxrHQZzX6RxMJImlA,3542 -django/contrib/auth/locale/kk/LC_MESSAGES/django.po,sha256=OebwPN9iWBvjDu0P2gQyBbShvIFxFIqCw8DpKuti3xk,6360 -django/contrib/auth/locale/km/LC_MESSAGES/django.mo,sha256=FahcwnCgzEamtWcDEPOiJ4KpXCIHbnSowfSRdRQ2F9U,2609 -django/contrib/auth/locale/km/LC_MESSAGES/django.po,sha256=lvRHHIkClbt_8-9Yn0xY57dMxcS72z4sUkxLb4cohP0,5973 -django/contrib/auth/locale/kn/LC_MESSAGES/django.mo,sha256=u0YygqGJYljBZwI9rm0rRk_DdgaBEMA1etL-Lk-7Mls,4024 -django/contrib/auth/locale/kn/LC_MESSAGES/django.po,sha256=HKQ1t2yhh9OwsqvMft337VpPmi8KU8PhF2M8gKOdtXw,6951 -django/contrib/auth/locale/ko/LC_MESSAGES/django.mo,sha256=eeIHHuqWmYIKdg4Awtzuiq73nJYGZGL912jDSKdK0tc,7578 -django/contrib/auth/locale/ko/LC_MESSAGES/django.po,sha256=ch1Eoy8J5B7wu35yvYPz5mhuXYzIxDocvVEsuICpv0M,8308 -django/contrib/auth/locale/ky/LC_MESSAGES/django.mo,sha256=fkRH2MlIvLbMGPWoey5LcT5CNK6CXjqnS2pftsnPnYc,8862 -django/contrib/auth/locale/ky/LC_MESSAGES/django.po,sha256=DxYSM23dbYT0oI1qkE5si5CngC2FHR3YX8EBVr3TzOI,9109 -django/contrib/auth/locale/lb/LC_MESSAGES/django.mo,sha256=OFhpMA1ZXhrs5fwZPO5IjubvWDiju4wfwWiV94SFkiA,474 -django/contrib/auth/locale/lb/LC_MESSAGES/django.po,sha256=dOfY9HjTfMQ0nkRYumw_3ZaywbUrTgT-oTXAnrRyfxo,3702 -django/contrib/auth/locale/lt/LC_MESSAGES/django.mo,sha256=-nlZHl7w__TsFUmBb5pQV_XJtKGsi9kzP6CBZXkfM8M,8146 -django/contrib/auth/locale/lt/LC_MESSAGES/django.po,sha256=-rdhB6eroSSemsdZkG1Jl4CruNZc_7dj4m5IVoyRBUQ,8620 -django/contrib/auth/locale/lv/LC_MESSAGES/django.mo,sha256=MeaR3wk2dhEJl0ib7sfLomLmO14r1dDDf9UCGkzgUtA,7582 -django/contrib/auth/locale/lv/LC_MESSAGES/django.po,sha256=o-lm18LyXAna2tVM4BX2aLYdLKsr59m_VWImsYaSvN8,7970 -django/contrib/auth/locale/mk/LC_MESSAGES/django.mo,sha256=XS9dslnD_YBeD07P8WQkss1gT7GIV-qLiCx4i5_Vd_k,9235 -django/contrib/auth/locale/mk/LC_MESSAGES/django.po,sha256=QOLgcwHub9Uo318P2z6sp69MI8syIIWCcr4VOom9vfs,9799 -django/contrib/auth/locale/ml/LC_MESSAGES/django.mo,sha256=UEaqq7nnGvcZ8vqFicLiuqsuEUhEjd2FpWfyzy2HqdU,12611 -django/contrib/auth/locale/ml/LC_MESSAGES/django.po,sha256=xBROIwJb5h2LmyBLAafZ2tUlPVTAOcMgt-olq5XnPT8,13107 -django/contrib/auth/locale/mn/LC_MESSAGES/django.mo,sha256=hBYT0p3LcvIKKPtIn2NzPk_2di9L8jYrUt9j3TcVvaY,9403 -django/contrib/auth/locale/mn/LC_MESSAGES/django.po,sha256=R3wAEwnefEHZsma8J-XOn4XlLtuWYKDPLwJ99DUYmvE,9913 -django/contrib/auth/locale/mr/LC_MESSAGES/django.mo,sha256=zGuqUTqcWZZn8lZY56lf5tB0_lELn7Dd0Gj78wwO5T4,468 -django/contrib/auth/locale/mr/LC_MESSAGES/django.po,sha256=yLW9WuaBHqdp9PXoDEw7c05Vt0oOtlks5TS8oxYPAO8,3696 -django/contrib/auth/locale/my/LC_MESSAGES/django.mo,sha256=gYzFJKi15RbphgG1IHbJF3yGz3P2D9vaPoHZpA7LoH8,1026 -django/contrib/auth/locale/my/LC_MESSAGES/django.po,sha256=lH5mrq-MyY8gvrNkH2_20rkjFnbviq23wIUqIjPIgFI,5130 -django/contrib/auth/locale/nb/LC_MESSAGES/django.mo,sha256=T6aK_x_t3c0uoALxmraqrK4--Ln5vTUMPb2m7iuR9bM,7191 -django/contrib/auth/locale/nb/LC_MESSAGES/django.po,sha256=jwECmnO6m_sk9O3PXnmEnh3FC9LJKVdSliRZ8nNPNLY,7585 -django/contrib/auth/locale/ne/LC_MESSAGES/django.mo,sha256=pq8dEr1ugF5ldwkCDHOq5sXaXV31InbLHYyXU56U_Ao,7722 -django/contrib/auth/locale/ne/LC_MESSAGES/django.po,sha256=bV-uWvT1ViEejrbRbVTtwC2cZVD2yX-KaESxKBnxeRI,8902 -django/contrib/auth/locale/nl/LC_MESSAGES/django.mo,sha256=g29u9ZMWBkbkWw6jA0UU74pMCAh9s-Gb9Ft3zi9aNn4,7451 -django/contrib/auth/locale/nl/LC_MESSAGES/django.po,sha256=U9JaMXlbuY9Lvu2pUK6x5vSD5m7ROaKt2P2rbBTDZ30,8176 -django/contrib/auth/locale/nn/LC_MESSAGES/django.mo,sha256=020nmL8b1yQL0ZyrDAdr0ZOsEGmNxvUpp9ISPBOVI8U,2801 -django/contrib/auth/locale/nn/LC_MESSAGES/django.po,sha256=SKgBiBM1llWFIvVjWRR0r2i3O8VcAdWe-PUhxckqmbE,5590 -django/contrib/auth/locale/os/LC_MESSAGES/django.mo,sha256=DVsYGz-31nofEjZla4YhM5L7qoBnQaYnZ4TBki03AI4,4434 -django/contrib/auth/locale/os/LC_MESSAGES/django.po,sha256=Akc1qelQWRA1DE6xseoK_zsY7SFI8SpiVflsSTUhQLw,6715 -django/contrib/auth/locale/pa/LC_MESSAGES/django.mo,sha256=PeOLukzQ_CZjWBa5FGVyBEysat4Gwv40xGMS29UKRww,3666 -django/contrib/auth/locale/pa/LC_MESSAGES/django.po,sha256=7ts9PUSuvfXGRLpfyVirJLDtsQcsVWFXDepVKUVlmtc,6476 -django/contrib/auth/locale/pl/LC_MESSAGES/django.mo,sha256=aFiv3R2tRWOKs2UOBg9s35wbYnOIxgLCEfr8fIJbIEw,7908 -django/contrib/auth/locale/pl/LC_MESSAGES/django.po,sha256=pHr8LAF2bobzBHnteZrNS_NL5pbzn-LW4uhWff5UGwA,8619 -django/contrib/auth/locale/pt/LC_MESSAGES/django.mo,sha256=oyKCSXRo55UiO3-JKcodMUnK7fuOuQxQrXcU7XkWidA,7756 -django/contrib/auth/locale/pt/LC_MESSAGES/django.po,sha256=tEazw0kctJ3BaP21IblsMhno6qooOGW54zwende522Q,8128 -django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5oeVsEZTpuSXrh05QhaMDtgh-Lju6HdE8QROe-_uV_0,7546 -django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po,sha256=IFe28giz1RoK9IPKbXi4kJj8PYKqHvEtFuYGuBmGitY,8521 -django/contrib/auth/locale/ro/LC_MESSAGES/django.mo,sha256=GD04tb5R6nEeD6ZMAcZghVhXwr8en1omw0c6BxnyHas,7777 -django/contrib/auth/locale/ro/LC_MESSAGES/django.po,sha256=YfkFuPrMwAR50k6lfOYeBbMosEbvXGWwMBD8B7p_2ZA,8298 -django/contrib/auth/locale/ru/LC_MESSAGES/django.mo,sha256=CTaAUHtlzBBBxou_jkmyww7Op7-OHvNZCjxgct4LW0Y,10277 -django/contrib/auth/locale/ru/LC_MESSAGES/django.po,sha256=mm0SFL2KQlHNKEzFRC2VZa0OslYTODK3vH8Rlpu97Nc,10829 -django/contrib/auth/locale/sk/LC_MESSAGES/django.mo,sha256=hJ_ep7FCbG4DVZawMfx4GjOPcJc4ruFSki8bkYn2l2Y,7838 -django/contrib/auth/locale/sk/LC_MESSAGES/django.po,sha256=NOYdZ3dv3Vtl-5vOwJH26Rthl-5nn4JrXgnm3i-d0bY,8199 -django/contrib/auth/locale/sl/LC_MESSAGES/django.mo,sha256=UAzD5UAqHBdiCMIPjZdouGt14xoHuo5EXDctNSDTEJk,7552 -django/contrib/auth/locale/sl/LC_MESSAGES/django.po,sha256=tUqZLZJegGLteWOQiDwFRUGayBB2j9qATmL6SMgEhb8,7943 -django/contrib/auth/locale/sq/LC_MESSAGES/django.mo,sha256=3bm81rsRuQmV_1mD9JrAwSjRIDUlsb3lPmBxRNHfz8w,7813 -django/contrib/auth/locale/sq/LC_MESSAGES/django.po,sha256=BWfyT4qg1jMoDGwmpLq4uPHJ1hJXLHI7gyo4BnzVHZI,8128 -django/contrib/auth/locale/sr/LC_MESSAGES/django.mo,sha256=yVXEIE4iXPxxwIBp5H6P5tCPUoBaFdHYD5D6gIDAI5I,9698 -django/contrib/auth/locale/sr/LC_MESSAGES/django.po,sha256=-MA4QO64bs3Hk7k4h7hvv2njyib_o6gIvTz0jofLGTo,10019 -django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=hwAo5ishpZZ9kb9WHrSMHdxmWV9afdxOHgVEwWqb4VE,3293 -django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po,sha256=qccS0IkO-JT504Y2uVGY5nPYfN8EA_58I9z492iQHKI,5934 -django/contrib/auth/locale/sv/LC_MESSAGES/django.mo,sha256=gdDygCzmJZghqebC_Za9BqVjy2EHS9UgrWhi0Lm5rC0,7447 -django/contrib/auth/locale/sv/LC_MESSAGES/django.po,sha256=4csJy-CtwoOYh_tN7qk6yt_A7FICPwJfgHh8gqFyiZA,7970 -django/contrib/auth/locale/sw/LC_MESSAGES/django.mo,sha256=I_lEsKuMGm07X1vM3-ReGDx2j09PGLkWcG0onC8q1uQ,5029 -django/contrib/auth/locale/sw/LC_MESSAGES/django.po,sha256=TiZS5mh0oN0e6dFEdh-FK81Vk-tdv35ngJ-EbM1yX80,6455 -django/contrib/auth/locale/ta/LC_MESSAGES/django.mo,sha256=T1t5CKEb8hIumvbOtai-z4LKj2et8sX-PgBMd0B3zuA,2679 -django/contrib/auth/locale/ta/LC_MESSAGES/django.po,sha256=X8UDNmk02X9q1leNV1qWWwPNakhvNd45mCKkQ8EpZQQ,6069 -django/contrib/auth/locale/te/LC_MESSAGES/django.mo,sha256=i9hG4thA0P-Hc-S2oX7GufWFDO4Y_LF4RcdQ22cbLyE,2955 -django/contrib/auth/locale/te/LC_MESSAGES/django.po,sha256=txND8Izv2oEjSlcsx3q6l5fEUqsS-zv-sjVVILB1Bmc,6267 -django/contrib/auth/locale/tg/LC_MESSAGES/django.mo,sha256=MwdyYwC4ILX4MFsqCy46NNfPKLbW1GzRhFxMV0uIbLI,7932 -django/contrib/auth/locale/tg/LC_MESSAGES/django.po,sha256=miOPNThjHZODwjXMbON8PTMQhaCGJ0Gy6FZr6Jcj4J8,8938 -django/contrib/auth/locale/th/LC_MESSAGES/django.mo,sha256=zRpZ2xM5JEQoHtfXm2_XYdhe2FtaqH-hULJadLJ1MHU,6013 -django/contrib/auth/locale/th/LC_MESSAGES/django.po,sha256=Yhh_AQS_aM_9f_yHNNSu_3THbrU-gOoMpfiDKhkaSHo,7914 -django/contrib/auth/locale/tk/LC_MESSAGES/django.mo,sha256=AqCIDe-6QrLMN3CNbMZsfrL0KxnQ3zuZwN8KvFmwRhE,7343 -django/contrib/auth/locale/tk/LC_MESSAGES/django.po,sha256=LpVXh4T0ZS3EzbIpJud8Dlms0Bu1vWf6c0JqkpoD8q8,7605 -django/contrib/auth/locale/tr/LC_MESSAGES/django.mo,sha256=eUyLW78fT2I_evDYrkLPYMkTEo6dugmiHW9rr_eyysc,7447 -django/contrib/auth/locale/tr/LC_MESSAGES/django.po,sha256=lZn4_C__EhzLMH-Y2X7Bb0QLsrqGq0qOj0GjpgR6wIo,8040 -django/contrib/auth/locale/tt/LC_MESSAGES/django.mo,sha256=g4pTk8QLQFCOkU29RZvR1wOd1hkOZe_o5GV9Cg5u8N4,1371 -django/contrib/auth/locale/tt/LC_MESSAGES/django.po,sha256=owkJ7iPT-zJYkuKLykfWsw8j7O8hbgzVTOD0DVv956E,5222 -django/contrib/auth/locale/udm/LC_MESSAGES/django.mo,sha256=zey19UQmS79AJFxHGrOziExPDDpJ1AbUegbCRm0x0hM,462 -django/contrib/auth/locale/udm/LC_MESSAGES/django.po,sha256=gLVgaMGg0GA3Tey1_nWIjV1lnM7czLC0XR9NFBgL2Zk,3690 -django/contrib/auth/locale/uk/LC_MESSAGES/django.mo,sha256=YEqVD82aG8LuY3WZ-q2p65M2nbgSOawv5xwHyvnsTQY,10079 -django/contrib/auth/locale/uk/LC_MESSAGES/django.po,sha256=tLWzzj6dbLutVkE5KZSWuFbQLwT2HSXLxfcz6t5XhBE,10688 -django/contrib/auth/locale/ur/LC_MESSAGES/django.mo,sha256=rippTNHoh49W19c4HDUF8G5Yo3SknL3C87Afu8YXxzA,698 -django/contrib/auth/locale/ur/LC_MESSAGES/django.po,sha256=gwSd8noEwbcvDE1Q4ZsrftvoWMwhw1J15gvdtK6E9ns,4925 -django/contrib/auth/locale/uz/LC_MESSAGES/django.mo,sha256=bDkhpvduocjekq6eZiuEfWJqnIt5hQmxxoIMhLQWzqM,2549 -django/contrib/auth/locale/uz/LC_MESSAGES/django.po,sha256=tPp8tRZwSMQCQ9AyAeUDtnRfmOk54UQMwok3HH8VNSQ,5742 -django/contrib/auth/locale/vi/LC_MESSAGES/django.mo,sha256=4YOb_ZbCI90UB01DpNsBAe6qqrc3P209Bz22FSVqvog,4703 -django/contrib/auth/locale/vi/LC_MESSAGES/django.po,sha256=1YjTrGYr04j9GtG8w0c7v71pHjHU8mHzT7tChroyfaw,6723 -django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=641K8I8SS1-SpD0q1YxaIQk_pQqRgB0oN7L6LHuM7yk,6753 -django/contrib/auth/locale/zh_Hans/LC_MESSAGES/django.po,sha256=Qn463Tzchv4tkbjbUcO-6mZyXJjM8e19DRZMA5FlkEE,7398 -django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=yQ5Gllu4hXzuBpBNAgtJaBMVivJeXUUlpfDS4CT1wg4,6728 -django/contrib/auth/locale/zh_Hant/LC_MESSAGES/django.po,sha256=Rw18_ZEtobUhmj2oF544zdQ6Vrac0T9UI9RJO4plOdc,7145 -django/contrib/auth/management/__init__.py,sha256=9Dk5PxHrfnpYOloPc1ClI7KMLKIZtLB-eKGhd3cftm8,4938 -django/contrib/auth/management/__pycache__/__init__.cpython-38.pyc,, -django/contrib/auth/management/commands/__pycache__/changepassword.cpython-38.pyc,, -django/contrib/auth/management/commands/__pycache__/createsuperuser.cpython-38.pyc,, -django/contrib/auth/management/commands/changepassword.py,sha256=a2-qnd6ukL010OYJK03eHJLD0VUUXJsNcXWJlRHrKi4,2544 -django/contrib/auth/management/commands/createsuperuser.py,sha256=kvxsLYssHdE0NIcK27r0YNhGKphiGK1C69H27Ak3KNs,11440 -django/contrib/auth/middleware.py,sha256=uM_M3pXiyfjwWQFJRYdT1tsWm4R8wrq34Oks1FKcWck,5310 -django/contrib/auth/migrations/0001_initial.py,sha256=q5UGhGKIHnJD9gJOfnhHDVp3NWpH-NUMAD1mUIBGZ_U,4960 -django/contrib/auth/migrations/0002_alter_permission_name_max_length.py,sha256=xSlhMiUbrVCPMOwmwVNAUgYjZih3t-ieALNm7rQ1OI0,347 -django/contrib/auth/migrations/0003_alter_user_email_max_length.py,sha256=bPcpCTPAJV2NgrwEa6WFfxkhbPmj5J-EqU1HM3RXtq0,389 -django/contrib/auth/migrations/0004_alter_user_username_opts.py,sha256=aN0oHoA5q2bKpJN8SnI8T9GNtTBKzLRFozL87tNh8_I,785 -django/contrib/auth/migrations/0005_alter_user_last_login_null.py,sha256=0s9ZPGWNP9HT7TmXAuChMLLwL1Ml5SdQwNs9qfy5dN4,381 -django/contrib/auth/migrations/0006_require_contenttypes_0002.py,sha256=_S7o_MhU0lAnPhDEt0kh1sBmpCLXW88VBuATERiMBlk,370 -django/contrib/auth/migrations/0007_alter_validators_add_error_messages.py,sha256=JeJpm_jyu2CbBckw4xJt0DlwQ4SDg2fyHqduRLZ1HFI,740 -django/contrib/auth/migrations/0008_alter_user_username_max_length.py,sha256=KpeVuknt_7WErQO_WLDSCMg1sJkXCXjNQ5I4u_l99kc,752 -django/contrib/auth/migrations/0009_alter_user_last_name_max_length.py,sha256=rwLs5SDzFJsDKtCfyMP6XueUPHiRvRMein3wXMzHeDk,386 -django/contrib/auth/migrations/0010_alter_group_name_max_length.py,sha256=JQ2cqUnTooqDKlZ5LcXQDbQld9xQmC3up5_wCWn1LFg,379 -django/contrib/auth/migrations/0011_update_proxy_permissions.py,sha256=uSc1MAiLarJWy_SuoFAYrgUBoaTALUJ3Qq9Svqv5tZ0,2795 -django/contrib/auth/migrations/0012_alter_user_first_name_max_length.py,sha256=b_Xd1QsaC5Gc4kuJ-fQ5zKdheVkj4Yd6Asmno8iNkKM,382 -django/contrib/auth/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/auth/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0002_alter_permission_name_max_length.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0003_alter_user_email_max_length.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0004_alter_user_username_opts.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0005_alter_user_last_login_null.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0006_require_contenttypes_0002.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0010_alter_group_name_max_length.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0011_update_proxy_permissions.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/0012_alter_user_first_name_max_length.cpython-38.pyc,, -django/contrib/auth/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/auth/mixins.py,sha256=vLjOdOKpVIpg2XbxdvhlVC5TsvF4d5IdGQnGKQze4lg,3845 -django/contrib/auth/models.py,sha256=3gQGkMEPHwGTNo2aOYLAzQSfmnZ2wTWo20JQ4idlLz8,15543 -django/contrib/auth/password_validation.py,sha256=TmYFwRDF_hkFM-LpZOOCk1a-TvQ9U3RBdTkOFXVljYM,7577 -django/contrib/auth/signals.py,sha256=BFks70O0Y8s6p1fr8SCD4-yk2kjucv7HwTcdRUzVDFM,118 -django/contrib/auth/templates/auth/widgets/read_only_password_hash.html,sha256=cMrG-iMsrVQ6Qd6T_Xz21b6WIWhXxaIwgNDW2NpDpuM,185 -django/contrib/auth/templates/registration/password_reset_subject.txt,sha256=-TZcy_r0vArBgdPK7feeUY6mr9EkYwy7esQ62_onbBk,132 -django/contrib/auth/tokens.py,sha256=m0bfWzXfLsYEfi7m-pVmre0i212PDdeF1KcNUxOajeU,4057 -django/contrib/auth/urls.py,sha256=6M54eTFdCFEqW0pzzKND4R5-8S9JrzoPcaVt0qA3JXc,1054 -django/contrib/auth/validators.py,sha256=4SU1JF5Dc4A3WTbdc45PxGusO8r6rgztgG5oEb_JhKw,687 -django/contrib/auth/views.py,sha256=b48oMCGgdg2wg131_uobg_7mqnl_bksLyO3CosbwqrE,13466 -django/contrib/contenttypes/__init__.py,sha256=OVcoCHYF9hFs-AnFfg2tjmdetuqx9-Zhi9pdGPAgwH4,75 -django/contrib/contenttypes/__pycache__/__init__.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/admin.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/apps.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/checks.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/fields.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/forms.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/models.cpython-38.pyc,, -django/contrib/contenttypes/__pycache__/views.cpython-38.pyc,, -django/contrib/contenttypes/admin.py,sha256=QeElFtZgIUzCWa1QfLhb9rpb-XZSY-xalx-RNAN5CoQ,5104 -django/contrib/contenttypes/apps.py,sha256=lVmnJW7DgIc42uc0V5vZL8qxnsnVijQmgelhs3nybIE,797 -django/contrib/contenttypes/checks.py,sha256=ooW997jE1y5goWgO3dzc7tfJt5Z4tJPWRRSG1P1-AcU,1234 -django/contrib/contenttypes/fields.py,sha256=PEECGVoHX6sifV39G_gxbgQc51EMR8upYoZoOlwjFcI,27434 -django/contrib/contenttypes/forms.py,sha256=95tGX_F2KkIjoBTFQcdvraypLz6Fj3LdCLOHx-8gCrQ,3615 -django/contrib/contenttypes/locale/af/LC_MESSAGES/django.mo,sha256=93nlniPFfVcxfBCs_PsLtMKrJ2BqpcofPRNYYTTlels,1070 -django/contrib/contenttypes/locale/af/LC_MESSAGES/django.po,sha256=SY04sW55-xpO_qBjv8pHoN7eqB2C5q_9CxQguMz7Q94,1244 -django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo,sha256=2t3y_6wxi0khsYi6s9ZyJwjRB8bnRT1PKvazWOKhJcQ,1271 -django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po,sha256=t6M3XYQLotNMFCjzB8aWFXnlRI8fU744YZvAoFdScQY,1634 -django/contrib/contenttypes/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=upFxoSvOvdmqCvC5irRV_8yYpFidanHfRk6i3tPrFAc,1233 -django/contrib/contenttypes/locale/ar_DZ/LC_MESSAGES/django.po,sha256=jUg-4BVi0arx5v-osaUDAfM6cQgaBh7mE8Mr8aVTp5A,1447 -django/contrib/contenttypes/locale/ast/LC_MESSAGES/django.mo,sha256=y88CPGGbwTVRmZYIipCNIWkn4OuzuxEk2QCYsBhc7RY,643 -django/contrib/contenttypes/locale/ast/LC_MESSAGES/django.po,sha256=H-qMo5ikva84ycnlmBT4XXEWhzMIw-r7J_zuqxo3wu4,1088 -django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo,sha256=VTQ2qQ7aoZYUVl2yht2DbYzj2acs71Szqz7iZyySAqI,1065 -django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po,sha256=9NcmP1jMQPfjPraoXui6iqJn3z3f3uG1RYN7K5-_-dU,1359 -django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo,sha256=Kp1TpXX1v0IgGp9HZxleXJ6y5ZvMZ6AqJrSIVcDs7xA,1353 -django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po,sha256=Oy5QXZBmBM_OYLT5OeXJQzTBCHXBp8NVMYuKmr_TUm0,1615 -django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo,sha256=yVH2saAhE3bVtamkCeIBDQuJpn2awfF2M7ISujswiRU,1267 -django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po,sha256=YdzC82ifG-pPY5Iy4mXIBj9Qq583g37OqZir-jpbUpc,1576 -django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo,sha256=2Z1GL6c1ukKQCMcls7R0_n4eNdH3YOXZSR8nCct7SLI,1201 -django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po,sha256=PLjnppx0FxfGBQMuWVjo0N4sW2QYc2DAEMK6ziGWUc8,1491 -django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo,sha256=kAlOemlwBvCdktgYoV-4NpC7XFDaIue_XN7GJYzDu88,1419 -django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po,sha256=BQmHVQqOc6xJWJLeAo49rl_Ogfv-lFtx18mj82jT_to,1613 -django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo,sha256=klj9n7AKBkTf7pIa9m9b-itsy4UlbYPnHiuvSLcFZXY,700 -django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po,sha256=pmJaMBLWbYtYFFXYBvPEvwXkTPdjQDv2WkFI5jNGmTI,1151 -django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo,sha256=uYq1BXdw1AXjnLusUQfN7ox1ld6siiy41C8yKVTry7Q,1095 -django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po,sha256=-dsOzvzVzEPVvA9lYsIP-782BbtJxGRo-OHtS3fIjmU,1403 -django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo,sha256=QexBQDuGdMFhVBtA9XWUs2geFBROcxyzdU_IBUGQ7x4,1108 -django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po,sha256=8pdPwZmpGOeSZjILGLZEAzqvmmV69ogpkh0c3tukT2g,1410 -django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo,sha256=2QyCWeXFyymoFu0Jz1iVFgOIdLtt4N1rCZATZAwiH-8,1159 -django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po,sha256=ZWDxQTHJcw1UYav1C3MX08wCFrSeJNNI2mKjzRVd6H0,1385 -django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo,sha256=EyancRrTWxM6KTpLq65gIQB0sO_PLtVr1ESN2v1pSNU,1038 -django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po,sha256=J09u3IjLgv4g77Kea_WQAhevHb8DskGU-nVxyucYf_0,1349 -django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo,sha256=MGUZ4Gw8rSFjBO2OfFX9ooGGpJYwAapgNkc-GdBMXa0,1055 -django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po,sha256=T5ucSqa6VyfUcoN6nFWBtjUkrSrz7wxr8t0NGTBrWow,1308 -django/contrib/contenttypes/locale/dsb/LC_MESSAGES/django.mo,sha256=QpdSZObmfb-DQZb3Oh6I1bFRnaPorXMznNZMyVIM7Hc,1132 -django/contrib/contenttypes/locale/dsb/LC_MESSAGES/django.po,sha256=_tNajamEnnf9FEjI-XBRraKjJVilwvpv2TBf9PAzPxw,1355 -django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo,sha256=1ySEbSEzhH1lDjHQK9Kv59PMA3ZPdqY8EJe6xEQejIM,1286 -django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po,sha256=8rlMKE5SCLTtm1myjLFBtbEIFyuRmSrL9HS2PA7gneQ,1643 -django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po,sha256=BRgOISCCJb4TU0dNxG4eeQJFe-aIe7U3GKLPip03d_Q,1110 -django/contrib/contenttypes/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/contenttypes/locale/en_AU/LC_MESSAGES/django.po,sha256=wmxyIJtz628AbsxgkB-MjdImcIJWhcW7NV3tWbDpedg,1001 -django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo,sha256=_uM-jg43W7Pz8RQhMcR_o15wRkDaYD8aRcl2_NFGoNs,1053 -django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po,sha256=SyzwSvqAgKF8BEhXYh4598GYP583OK2GUXH1lc4iDMk,1298 -django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo,sha256=MFC-mQeWLeFry7d2EXeAf2G47YRLLKFhenGLCwo5O9A,1087 -django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po,sha256=BgQ7lRtsjD-XHaNvlHMu9AxCCqx38XdOCG4zYpKgDn4,1279 -django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo,sha256=rG5-Lt7Mutoa42O_5I2rjcQ5p0rnA2T-cDMbgxaJsYU,1142 -django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po,sha256=iR5eAl6d6Ol2Ufd9hQWfau8vNG0pPKvSgTToqvGMGK8,1417 -django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo,sha256=WkHABVDmtKidPyo6zaYGVGrgXpe6tZ69EkxaIBu6mtg,1084 -django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po,sha256=yVSu_fJSKwS4zTlRud9iDochIaY0zOPILF59biVfkeY,1337 -django/contrib/contenttypes/locale/es_CO/LC_MESSAGES/django.mo,sha256=aACo1rOrgs_BYK3AWzXEljCdAc4bC3BXpyXrwE4lzAs,1158 -django/contrib/contenttypes/locale/es_CO/LC_MESSAGES/django.po,sha256=vemhoL-sESessGmIlHoRvtWICqF2aO05WvcGesUZBRM,1338 -django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo,sha256=vD9rSUAZC_rgkwiOOsrrra07Gnx7yEpNHI96tr8xD3U,840 -django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po,sha256=tLgjAi9Z1kZloJFVQuUdAvyiJy1J-5QHfoWmxbqQZCc,1237 -django/contrib/contenttypes/locale/es_VE/LC_MESSAGES/django.mo,sha256=TVGDydYVg_jGfnYghk_cUFjCCtpGchuoTB4Vf0XJPYk,1152 -django/contrib/contenttypes/locale/es_VE/LC_MESSAGES/django.po,sha256=vJW37vuKYb_KpXBPmoNSqtNstFgCDlKmw-8iOoSCenU,1342 -django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo,sha256=TE84lZl6EP54-pgmv275jiTOW0vIsnsGU97qmtxMEVg,1028 -django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po,sha256=KO9fhmRCx25VeHNDGXVNhoFx3VFH-6PSLVXZJ6ohOSA,1368 -django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo,sha256=K0f1cXEhfg_djPzgCL9wC0iHGWF_JGIhWGFL0Y970g0,1077 -django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po,sha256=sSuVV0o8MeWN6BxlaeKcjKA3h4H29fCo1kKEtkczEp4,1344 -django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo,sha256=hW3A3_9b-NlLS4u6qDnPS1dmNdn1UJCt-nihXvnXywI,1130 -django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po,sha256=TPiYsGGN-j-VD--Rentx1p-IcrNJYoYxrxDO_5xeZHI,1471 -django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo,sha256=yZNZ0btS15XQPW5sGVQWqUbQ3_ZIGD0JjgMcz2-_xgU,1073 -django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po,sha256=LTt_nF73_BxrerGmK4ly__1PeesGNpWlH3CSLETMvuI,1316 -django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo,sha256=CTOu_JOAQeC72VX5z9cg8Bn3HtZsdgbtjA7XKcy681o,1078 -django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po,sha256=6LArEWoBpdaJa7UPcyv4HJKD3YoKUxrwGQGd16bi9DM,1379 -django/contrib/contenttypes/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/contenttypes/locale/fy/LC_MESSAGES/django.po,sha256=SB07aEGG7n4oX_5rqHB6OnjpK_K0KwFM7YxaWYNpB_4,991 -django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo,sha256=GYQYfYWbgwL3nQJR5d7XGjc5KeYYXsB0yRQJz7zxd_k,1097 -django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po,sha256=byvw9sQ9VLVjS7Au81LcNpxOzwA29_4Al9nB1ZyV2b4,1408 -django/contrib/contenttypes/locale/gd/LC_MESSAGES/django.mo,sha256=dQz7j45qlY3M1rL2fCVdPnuHMUdUcJ0K6cKgRD7Js2w,1154 -django/contrib/contenttypes/locale/gd/LC_MESSAGES/django.po,sha256=_hwx9XqeX5QYRFtDpEYkChswn8WMdYTQlbzL1LjREbY,1368 -django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo,sha256=gMDLuxVazSNvwLmi5AqJEsxugmDVLk8DlxseHRRoQoc,1072 -django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po,sha256=hFPL2GH-o6XN0SKu5kqgiEaGT8lKnbi_zmlUNCn3Obg,1364 -django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo,sha256=X-91PCG5ftulkyc3zTnczlWQ62zM7-47EJkE7S__CtI,1256 -django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po,sha256=NDEa2I5p29YJCEXdvmA6fyDyXTgdJsuLGeB95KPGbP8,1477 -django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo,sha256=KAZuQMKOvIPj3a7GrNJE3yhT70O2abCEF2GOsbwTE5A,1321 -django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po,sha256=PcsNgu2YmT0biklhwOF_nSvoGTvWVKw2IsBxIwSVAtI,1577 -django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo,sha256=DbOUA8ks3phsEwQvethkwZ9-ymrd36aQ6mP7OnGdpjU,1167 -django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po,sha256=722KxvayO6YXByAmO4gfsfzyVbT-HqqrLYQsr02KDc8,1445 -django/contrib/contenttypes/locale/hsb/LC_MESSAGES/django.mo,sha256=tPtv_lIzCPIUjGkAYalnNIUxVUQFE3MShhVXTnfVx3Q,1106 -django/contrib/contenttypes/locale/hsb/LC_MESSAGES/django.po,sha256=rbI3G8ARG7DF7uEe82SYCfotBnKTRJJ641bGhjdptTQ,1329 -django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo,sha256=2nsylOwBIDOnkUjE2GYU-JRvgs_zxent7q3_PuscdXk,1102 -django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po,sha256=Dzcf94ZSvJtyNW9EUKpmyNJ1uZbXPvc7dIxCccZrDYc,1427 -django/contrib/contenttypes/locale/hy/LC_MESSAGES/django.mo,sha256=hKOErB5dzj44ThQ1_nZHak2-aXZlwMoxYcDWmPb3Xo8,1290 -django/contrib/contenttypes/locale/hy/LC_MESSAGES/django.po,sha256=UeGzaghsEt9Lt5DsEzRb9KCbuphWUQwLayt4AN194ao,1421 -django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo,sha256=3yDFJFxh16B2WigXeJxZV9vOyRxnjZ4MAUq3T_-PHGs,1079 -django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po,sha256=4JsXrJxsMVVu9Y6OuFrwMV5L4Dglh9XJ5sp9CHDGHaA,1288 -django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo,sha256=4-6RBAvrtA1PY3LNxMrgwzBLZE0ZKwWaXa7SmtmAIyk,1031 -django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po,sha256=xdxEOgfta1kaXyQAngmmbL8wDQzJU6boC9HdbmoM1iI,1424 -django/contrib/contenttypes/locale/io/LC_MESSAGES/django.mo,sha256=3SSRXx4tYiMUc00LZ9kGHuvTgaWpsICEf5G208CEqgg,1051 -django/contrib/contenttypes/locale/io/LC_MESSAGES/django.po,sha256=1ku9WPcenn47DOF05HL2eRqghZeRYfklo2huYUrkeJ0,1266 -django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo,sha256=ZYWbT4qeaco8h_J9SGF2Bs7Rdu3auZ969xZ0RQ_03go,1049 -django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po,sha256=iNdghSbBVPZmfrHu52hRG8vHMgGUfOjLqie09fYcuso,1360 -django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo,sha256=GSP0BJc3bGLoNS0tnhiz_5dtSh5NXCrBiZbnwEhWbpk,1075 -django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po,sha256=njEgvhDwWOc-CsGBDz1_mtEsXx2aTU6cP3jZzcLkkYk,1457 -django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo,sha256=tVH6RvZ5tXz56lEM3aoJtFp5PKsSR-XXpi8ZNCHjiFw,1211 -django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po,sha256=5_-Uo7Ia3X9gAWm2f72ezQnNr_pQzf6Ax4AUutULuZU,1534 -django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo,sha256=1_yGL68sK0QG_mhwFAVdksiDlB57_1W5QkL7NGGE5L0,1429 -django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po,sha256=fr8rGQDWgUQSv-ZjXhSAR5P_zWLhQ7bq1cHLKIzY4bY,1649 -django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo,sha256=SNY0vydwLyR2ExofAHjmg1A2ykoLI7vU5Ryq-QFu5Gs,627 -django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po,sha256=PU-NAl6xUEeGV0jvJx9siVBTZIzHywL7oKc4DgUjNkc,1130 -django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo,sha256=BXifukxf48Lr0t0V3Y0GJUMhD1KiHN1wwbueoK0MW1A,678 -django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po,sha256=fTPlBbnaNbLZxjzJutGvqe33t6dWsEKiHQYaw27m7KQ,1123 -django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo,sha256=a4sDGaiyiWn-1jFozYI4vdAvuHXrs8gbZErP_SAUk9Y,714 -django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po,sha256=QDD_q_loZtGRlhmaqgNDtJ_5AjVFQ8fSmypvaWLOwp4,1162 -django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo,sha256=myRfFxf2oKcbpmCboongTsL72RTM95nEmAC938M-ckE,1089 -django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po,sha256=uui_LhgGTrW0uo4p-oKr4JUzhjvkLbFCqRVLNMrptzY,1383 -django/contrib/contenttypes/locale/ky/LC_MESSAGES/django.mo,sha256=ULoIe36zGKPZZs113CenA6J9HviYcBOKagXrPGxyBUI,1182 -django/contrib/contenttypes/locale/ky/LC_MESSAGES/django.po,sha256=FnW5uO8OrTYqbvoRuZ6gnCD6CHnuLjN00s2Jo1HX1NE,1465 -django/contrib/contenttypes/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/contenttypes/locale/lb/LC_MESSAGES/django.po,sha256=dwVKpCRYmXTD9h69v5ivkZe-yFtvdZNZ3VfuyIl4olY,989 -django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo,sha256=HucsRl-eqfxw6ESTuXvl7IGjPGYSI9dxM5lMly_P1sc,1215 -django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po,sha256=odzYqHprxKFIrR8TzdxA4WeeMK0W0Nvn2gAVuzAsEqI,1488 -django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo,sha256=nWfy7jv2VSsKYT6yhk_xqxjk1TlppJfsQcurC40CeTs,1065 -django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po,sha256=pHlbzgRpIJumDMp2rh1EKrxFBg_DRcvLLgkQ3mi_L0s,1356 -django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo,sha256=KTFZWm0F4S6lmi1FX76YKOyJqIZN5cTsiTBI_D4ADHs,1258 -django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po,sha256=mQZosS90S-Bil6-EoGjs9BDWYlvOF6mtUDZ8h9NxEdE,1534 -django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo,sha256=rtmLWfuxJED-1KuqkUT8F5CU1KGJP0Of718n2Gl_gI0,1378 -django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po,sha256=Z-kL9X9CD7rYfa4Uoykye2UgCNQlgyql0HTv1eUXAf4,1634 -django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo,sha256=J6kKYjUOsQxptNXDcCaY4d3dHJio4HRibRk3qfwO6Xc,1225 -django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po,sha256=x8aRJH2WQvMBBWlQt3T3vpV4yHeZXLmRTT1U0at4ZIk,1525 -django/contrib/contenttypes/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/contenttypes/locale/mr/LC_MESSAGES/django.po,sha256=FgZKD9E-By0NztUnBM4llpR59K0MJSIMZIrJYGKDqpc,983 -django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo,sha256=YYa2PFe9iJygqL-LZclfpgR6rBmIvx61JRpBkKS6Hrs,1554 -django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po,sha256=6F3nXd9mBc-msMchkC8OwAHME1x1O90xrsZp7xmynpU,1732 -django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo,sha256=EHU9Lm49U7WilR5u-Lq0Fg8ChR_OzOce4UyPlkZ6Zs4,1031 -django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po,sha256=lbktPYsJudrhe4vxnauzpzN9eNwyoVs0ZmZSdkwjkOk,1403 -django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo,sha256=-zZAn5cex4PkScoZVqS74PUMThJJuovZSk3WUKZ8hnw,1344 -django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po,sha256=1ZCUkulQ9Gxb50yMKFKWaTJli2SinBeNj0KpXkKpsNE,1519 -django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo,sha256=aXDHgg891TyTiMWNcbNaahfZQ2hqtl5yTkx5gNRocMU,1040 -django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po,sha256=zDJ_vyQxhP0mP06U-e4p6Uj6v1g863s8oaxc0JIAMjg,1396 -django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo,sha256=jfxiglKOxjX2xdbLDnJhujJiGcbDJv3NDcUUCWrZmuU,1054 -django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po,sha256=c1sz3ssHULL1c5gpbEOy4Xo2Nh0_2ar_Zg4nECouM4k,1299 -django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo,sha256=QV533Wu-UpjV3XiCe83jlz7XGuwgRviV0ggoeMaIOIY,1116 -django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po,sha256=UZahnxo8z6oWJfEz4JNHGng0EAifXYtJupB6lx0JB60,1334 -django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo,sha256=qacd7eywof8rvJpstNfEmbHgvDiQ9gmkcyG7gfato8s,697 -django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po,sha256=Kq2NTzdbgq8Q9jLLgV-ZJaSRj43D1dDHcRIgNnJXu-s,1145 -django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo,sha256=J5sC36QwKLvrMB4adsojhuw2kYuEckHz6eoTrZwYcnI,1208 -django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po,sha256=gxP59PjlIHKSiYZcbgIY4PUZSoKYx4YKCpm4W4Gj22g,1577 -django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo,sha256=MjyyKlA75YtEG9m6hm0GxKhU-cF3m1PA_j63BuIPPlE,1125 -django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po,sha256=X2Rec6LXIqPa9AVqF4J2mzYrwfls1BdUfN8XOe0zkdQ,1379 -django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo,sha256=dNyjcuuOHAJQpbjSY3o7FImhmDGpIEuSyOvlxmSIOI8,1112 -django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po,sha256=-Vl4bmkjnmEeJ8S8F1nYf6HgXrnKe0K93dl-MhwRjEM,1446 -django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo,sha256=sCthDD10v7GY2cui9Jj9HK8cofVEg2WERCm6aktOM-4,1142 -django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po,sha256=n-BPEfua0Gd6FN0rsP7qAlTGbQEZ14NnDMA8jI2844Y,1407 -django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo,sha256=OSf206SFmVLULHmwVhTaRhWTQtyDKsxe03gIzuvAUnY,1345 -django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po,sha256=xHyJYD66r8We3iN5Hqo69syWkjhz4zM7X9BWPIiI6mU,1718 -django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo,sha256=Wkcfu7VTpa6IMqGHUH6Rra42ydbyyaLnMa6wg137E7o,1104 -django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po,sha256=oFmpjsUP8WXXd6TpObHcnM-mstebPAB4wCjsluH5EFc,1398 -django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo,sha256=sMML-ubI_9YdKptzeri1du8FOdKcEzJbe4Tt0J4ePFI,1147 -django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po,sha256=0zxiyzRWWDNVpNNLlcwl-OLh5sLukma1vm-kYrGHYrE,1392 -django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo,sha256=jYDQH3OpY4Vx9hp6ISFMI88uxBa2GDQK0BkLGm8Qulk,1066 -django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po,sha256=JIvguXVOFpQ3MRqRXHpxlg8_YhEzCsZBBMdpekYTxlk,1322 -django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo,sha256=GUXj97VN15HdY7XMy5jmMLEu13juD3To5NsztcoyPGs,1204 -django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po,sha256=T1w_EeB6yT-PXr7mrwzqu270linf_KY3_ZCgl4wfLAQ,1535 -django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=m2plistrI8O-ztAs5HmDYXG8N_wChaDfXFev0GYWVys,1102 -django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po,sha256=lJrhLPDbJAcXgBPco-_lfUXqs31imj_vGwE5p1EXZjk,1390 -django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo,sha256=I5bmwlJ8jVHoJW6-uGZ6r8FRIEVdg3xQseenfnhKkpg,1066 -django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po,sha256=KybZ8wY7r_ZU0beG8plP36ba8CEMKa3MTWwbL_Sf8zg,1331 -django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo,sha256=XLPle0JYPPkmm5xpJRmWztMTF1_3a2ZubWE4ur2sav8,563 -django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po,sha256=jRc8Eh6VuWgqc4kM-rxjbVE3yV9uip6mOJLdD6yxGLM,1009 -django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo,sha256=L3eF4z9QSmIPqzEWrNk8-2uLteQUMsuxiD9VZyRuSfo,678 -django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po,sha256=iDb9lRU_-YPmO5tEQeXEZeGeFe-wVZy4k444sp_vTgw,1123 -django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo,sha256=S_UF_mZbYfScD6Z36aB-kwtTflTeX3Wt4k7z_pEcOV8,690 -django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po,sha256=aAGMMoJPg_pF9_rCNZmda5A_TvDCvQfYEL64Xdoa4jo,1135 -django/contrib/contenttypes/locale/tg/LC_MESSAGES/django.mo,sha256=dkLic6fD2EMzrB7m7MQazaGLoJ_pBw55O4nYZc5UYEs,864 -django/contrib/contenttypes/locale/tg/LC_MESSAGES/django.po,sha256=1nv1cVJewfr44gbQh1Szzy3DT4Y9Dy7rUgAZ81otJQs,1232 -django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo,sha256=qilt-uZMvt0uw-zFz7-eCmkGEx3XYz7NNo9Xbq3s7uI,1186 -django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po,sha256=42F34fNEn_3yQKBBJnCLttNeyktuLVpilhMyepOd6dg,1444 -django/contrib/contenttypes/locale/tk/LC_MESSAGES/django.mo,sha256=0fuA3E487-pceoGpX9vMCwSnCItN_pbLUIUzzcrAGOE,1068 -django/contrib/contenttypes/locale/tk/LC_MESSAGES/django.po,sha256=pS8wX9dzxys3q8Vvz3PyoVJYqplXhNuAqfq7Dsb07fw,1283 -django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo,sha256=gKg2FCxs2fHpDB1U6gh9xrP7mOpYG65pB4CNmdPYiDg,1057 -django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po,sha256=8M7-d8Kd36LCY2ysOh10VDsHW6j8QrXCsps5_B1KOKU,1348 -django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo,sha256=_LQ1N04FgosdDLUYXJOEqpCB2Mg92q95cBRgYPi1MyY,659 -django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po,sha256=L7wMMpxGnpQiKd_mjv2bJpE2iqCJ8XwiXK0IN4EHSbM,1110 -django/contrib/contenttypes/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/contenttypes/locale/udm/LC_MESSAGES/django.po,sha256=YVyej0nAhhEf7knk4vCeRQhmSQeGZLhMPPXyIyWObnM,977 -django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo,sha256=LK_0RNZeRjH6l6F3IS_FfyGrnjjst__pSU-7SIfqMV4,1382 -django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po,sha256=hckQ42e_T3As0Yq_1yLwU3pX5wpcBdZyd7h2uin3bhw,1707 -django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo,sha256=OJs_EmDBps-9a_KjFJnrS8IqtJfd25LaSWeyG8u8UfI,671 -django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po,sha256=f0FnsaAM_qrBuCXzLnkBrW5uFfVc6pUh7S-qp4918Ng,1122 -django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo,sha256=kGYgEI1gHkyU4y_73mBJN1hlKC2JujVXMg6iCdWncDg,1155 -django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po,sha256=RIDUgsElfRF8bvBdUKtshizuMnupdMGAM896s7qZKD4,1439 -django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=RviK0bqLZzPrZ46xUpc0f8IKkw3JLtsrt0gNA74Ypj0,1015 -django/contrib/contenttypes/locale/zh_Hans/LC_MESSAGES/django.po,sha256=vSKJDEQ_ANTj3-W8BFJd9u_QGdTMF12iS15rVgeujOs,1380 -django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=NMumOJ9dPX-7YjQH5Obm4Yj0-lnGXJmCMN5DGbsLQG4,1046 -django/contrib/contenttypes/locale/zh_Hant/LC_MESSAGES/django.po,sha256=7WIqYRpcs986MjUsegqIido5k6HG8d3FVvkrOQCRVCI,1338 -django/contrib/contenttypes/management/__init__.py,sha256=TXx5LvsBtM-750d_ImI4zpHKrXmsfVVXSgOxwecW11Y,4850 -django/contrib/contenttypes/management/__pycache__/__init__.cpython-38.pyc,, -django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-38.pyc,, -django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py,sha256=1wDE5cS2qIPc8qq6QeyhxKAPLXWFLIqajCnJuzaLhmY,3838 -django/contrib/contenttypes/migrations/0001_initial.py,sha256=o3bVVr-O_eUNiloAC1z-JIHDoCJQ4ifdA-6DhdVUrp8,1157 -django/contrib/contenttypes/migrations/0002_remove_content_type_name.py,sha256=4h1AUWSWAvwfEMAaopJZce-yNj1AVpCYFAk2E-Ur-wM,1103 -django/contrib/contenttypes/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/contenttypes/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/contenttypes/migrations/__pycache__/0002_remove_content_type_name.cpython-38.pyc,, -django/contrib/contenttypes/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/contenttypes/models.py,sha256=kkLMgaQGfqBKEV-d7SKlU8Hik6dvu0uGBARADFmylN0,6662 -django/contrib/contenttypes/views.py,sha256=fnoup7g6T17YpfCkffdWehuaWlo-KPAZj0p7kkk7v1E,3549 -django/contrib/flatpages/__init__.py,sha256=pa6Mmr3sfZ2KBkXHAvYIw_haRx8tSqTNZluUKg5zQCk,69 -django/contrib/flatpages/__pycache__/__init__.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/admin.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/apps.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/forms.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/middleware.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/models.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/sitemaps.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/urls.cpython-38.pyc,, -django/contrib/flatpages/__pycache__/views.cpython-38.pyc,, -django/contrib/flatpages/admin.py,sha256=m_TsFRA36bunPrg2dSdxDJpWLfJkiaVmE3kcYAO9trY,654 -django/contrib/flatpages/apps.py,sha256=EMKrGuulQwqXlcGKRvmISVaiqSNVwwUetEeEo3PTjxA,198 -django/contrib/flatpages/forms.py,sha256=XOqw37h_Itd4CU4qDk0K03Ql7y6oMkr-sC6Oj52YHZg,2420 -django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo,sha256=c0XEKXJYgpy2snfmWFPQqeYeVla1F5s_wXIBaioiyPc,2297 -django/contrib/flatpages/locale/af/LC_MESSAGES/django.po,sha256=_psp14JfICDxrKx_mKF0uLnItkJPkCNMvrNOyE35nFw,2428 -django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo,sha256=dBHaqsaKH9QOIZ0h2lIDph8l9Bv2UAcD-Hr9TAxj8Ac,2636 -django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po,sha256=-0ZdfA-sDU8fOucgT2Ow1iM3QnRMuQeslMOSwYhAH9M,2958 -django/contrib/flatpages/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=jp6sS05alESJ4-SbEIf574UPVcbllAd_J-FW802lGyk,2637 -django/contrib/flatpages/locale/ar_DZ/LC_MESSAGES/django.po,sha256=yezpjWcROwloS08TEMo9oPXDKS1mfFE9NYI66FUuLaA,2799 -django/contrib/flatpages/locale/ast/LC_MESSAGES/django.mo,sha256=4SEsEE2hIZJwQUNs8jDgN6qVynnUYJUIE4w-usHKA6M,924 -django/contrib/flatpages/locale/ast/LC_MESSAGES/django.po,sha256=5UlyS59bVo1lccM6ZgdYSgHe9NLt_WeOdXX-swLKubU,1746 -django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo,sha256=6ID6KejChxQzsUT4wevUAjd9u7Ly21mfJ22dgbitNN4,2373 -django/contrib/flatpages/locale/az/LC_MESSAGES/django.po,sha256=v7tkbuUUqkbUzXoOOWxS75TpvuMESqoZAEXDXisfbiA,2679 -django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo,sha256=mOQlbfwwIZiwWCrFStwag2irCwsGYsXIn6wZDsPRvyA,2978 -django/contrib/flatpages/locale/be/LC_MESSAGES/django.po,sha256=wlIfhun5Jd6gxbkmmYPSIy_tzPVmSu4CjMwPzBNnvpo,3161 -django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo,sha256=p3RZmS9PAqdlAmbc7UswSoG0t1eeuXYDp1WZ3mWfFow,2569 -django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po,sha256=DqRp9KTLxks9tNEXs2g_jvIp7dI92jXLkKNDNyLhHac,2779 -django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo,sha256=2oK2Rm0UtAI7QFRwpUR5aE3-fOltE6kTilsTbah737Y,2988 -django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po,sha256=QrbX69iqXOD6oByLcgPkD1QzAkfthpfTjezIFQ-6kVg,3172 -django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo,sha256=SKbykdilX_NcpkVi_lHF8LouB2G49ZAzdF09xw49ERc,2433 -django/contrib/flatpages/locale/br/LC_MESSAGES/django.po,sha256=O_mwrHIiEwV4oB1gZ7Yua4nVKRgyIf3j5UtedZWAtwk,2783 -django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo,sha256=bd7ID7OsEhp57JRw_TXoTwsVQNkFYiR_sxSkgi4WvZU,1782 -django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po,sha256=IyFvI5mL_qesEjf6NO1nNQbRHhCAZQm0UhIpmGjrSwQ,2233 -django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo,sha256=GcMVbg4i5zKCd2Su7oN30WVJN7Q9K7FsFifgTB8jDPI,2237 -django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po,sha256=-aJHSbWPVyNha_uF6R35Q6yn4-Hse3jTInr9jtaxKOI,2631 -django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo,sha256=8nwep22P86bMCbW7sj4n0BMGl_XaJIJV0fjnVp-_dqY,2340 -django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po,sha256=1agUeRthwpam1UvZY4vRnZtLLbiop75IEXb6ul_e3mg,2611 -django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo,sha256=zr_2vsDZsrby3U8AmvlJMU3q1U_4IrrTmz6oS29OWtQ,2163 -django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po,sha256=E_NC_wtuhWKYKB3YvYGB9ccJgKI3AfIZlB2HpXSyOsk,2370 -django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo,sha256=nALoI50EvFPa4f3HTuaHUHATF1zHMjo4v5zcHj4n6sA,2277 -django/contrib/flatpages/locale/da/LC_MESSAGES/django.po,sha256=j4dpnreB7LWdZO7Drj7E9zBwFx_Leuj7ZLyEPi-ccAQ,2583 -django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo,sha256=I4CHFzjYM_Wd-vuIYOMf8E58ntOgkLmgOAg35Chdz3s,2373 -django/contrib/flatpages/locale/de/LC_MESSAGES/django.po,sha256=P6tPVPumP9JwBIv-XXi1QQYJyj1PY3OWoM4yOAmgTRE,2592 -django/contrib/flatpages/locale/dsb/LC_MESSAGES/django.mo,sha256=oTILSe5teHa9XTYWoamstpyPu02yb_xo8S0AtkP7WP8,2391 -django/contrib/flatpages/locale/dsb/LC_MESSAGES/django.po,sha256=1xD2aH5alerranvee6QLZqgxDVXxHThXCHR4kOJAV48,2576 -django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo,sha256=WxBbtlMvLwH2e7KUP7RcrxgEHP4DC9MKiO_KLCuFbmc,2870 -django/contrib/flatpages/locale/el/LC_MESSAGES/django.po,sha256=oIgwZoftZQVOrfsTDdL8iN9CpPN7UdmkCfpFOJoNHt0,3141 -django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/flatpages/locale/en/LC_MESSAGES/django.po,sha256=0bNWKiu-1MkHFJ_UWrCLhp9ENr-pHzBz1lkhBkkrhJM,2169 -django/contrib/flatpages/locale/en_AU/LC_MESSAGES/django.mo,sha256=cuifXT2XlF4c_bR6ECRhlraSZyA7q4ZLhUgwvW73miw,486 -django/contrib/flatpages/locale/en_AU/LC_MESSAGES/django.po,sha256=ZMAJRrjovd_cdWvzkuEiJ-9ZU9rqRTwoA3x8uY2khcs,1533 -django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo,sha256=7zyXYOsqFkUGxclW-VPPxrQTZKDuiYQ7MQJy4m8FClo,1989 -django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po,sha256=oHrBd6lVnO7-SdnO-Taa7iIyiqp_q2mQZjkuuU3Qa_s,2232 -django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo,sha256=EiyCzj22pdY0PboTmlaPgZdwRiuGuevHHzJcgU96su0,2295 -django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po,sha256=WXTOk4Al2MlbfgWcHqBcwiY8HEzjVynds_3o-XJqhfg,2578 -django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo,sha256=aglISA-piajtIN46RnR2cBSV7tECsiLuXkpEqdGe9Bk,2293 -django/contrib/flatpages/locale/es/LC_MESSAGES/django.po,sha256=mvQNUGNYQQR_-T0UOAB5UpabocGNbn4kUk4mL0SOPVs,2674 -django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo,sha256=bUnFDa5vpxl27kn2ojTbNaCmwRkBCH-z9zKXAvXe3Z0,2275 -django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po,sha256=vEg3wjL_7Ee-PK4FZTaGRCXFscthkoH9szJ7H01K8w8,2487 -django/contrib/flatpages/locale/es_CO/LC_MESSAGES/django.mo,sha256=jt8wzeYky5AEnoNuAv8W4nGgd45XsMbpEdRuLnptr3U,2140 -django/contrib/flatpages/locale/es_CO/LC_MESSAGES/django.po,sha256=xrbAayPoxT7yksXOGPb-0Nc-4g14UmWANaKTD4ItAFA,2366 -django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo,sha256=Y5IOKRzooJHIhJzD9q4PKOe39Z4Rrdz8dBKuvmGkqWU,2062 -django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po,sha256=Y-EXhw-jISttA9FGMz7gY_kB-hQ3wEyKEaOc2gu2hKQ,2246 -django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo,sha256=EI6WskepXUmbwCPBNFKqLGNcWFVZIbvXayOHxOCLZKo,2187 -django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po,sha256=ipG6a0A2d0Pyum8GcknA-aNExVLjSyuUqbgHM9VdRQo,2393 -django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo,sha256=zriqETEWD-DDPiNzXgAzgEhjvPAaTo7KBosyvBebyc0,2233 -django/contrib/flatpages/locale/et/LC_MESSAGES/django.po,sha256=tMuITUlzy6LKJh3X3CxssFpTQogg8OaGHlKExzjwyOI,2525 -django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo,sha256=FoKazUkuPpDgsEEI6Gm-xnZYVHtxILiy6Yzvnu8y-L0,2244 -django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po,sha256=POPFB5Jd8sE9Z_ivYSdnet14u-aaXneTUNDMuOrJy00,2478 -django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo,sha256=Zc-OsiwBJYrvVY6tefxec0VC97uD8__foLTLT_V0rCY,2459 -django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po,sha256=H48bg8qlnzAQn22fEYZbYV_PhTiTao7KAezN5BekDyE,2717 -django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo,sha256=K_-A8ccHnFcWnViuPAKR7IxhcG0YWNG7iCKYOxxXgMg,2127 -django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po,sha256=-Ik04K4va6HcOoG8bWukAsHThf3IWREZGeRzewYfC7o,2366 -django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo,sha256=ZqD4O3_Ny8p5i6_RVHlANCnPiowMd19Qi_LOPfTHav4,2430 -django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po,sha256=liAoOgT2CfpANL_rYzyzsET1MhsM19o7wA2GBnoDvMA,2745 -django/contrib/flatpages/locale/fy/LC_MESSAGES/django.mo,sha256=DRsFoZKo36F34XaiQg_0KUOr3NS_MG3UHptzOI4uEAU,476 -django/contrib/flatpages/locale/fy/LC_MESSAGES/django.po,sha256=9JIrRVsPL1m0NPN6uHiaAYxJXHp5IghZmQhVSkGo5g8,1523 -django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo,sha256=KKvDhZULHQ4JQ_31ltLkk88H2BKUbBXDQFSvdKFqjn8,2191 -django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po,sha256=Yat7oU2XPQFQ8vhNq1nJFAlX2rqfxz4mjpU5TcnaYO8,2400 -django/contrib/flatpages/locale/gd/LC_MESSAGES/django.mo,sha256=KbaTL8kF9AxDBLDQWlxcP5hZ4zWnbkvY0l2xRKZ9Dg0,2469 -django/contrib/flatpages/locale/gd/LC_MESSAGES/django.po,sha256=DVY_1R0AhIaI1qXIeRej3XSHMtlimeKNUwzFjc4OmwA,2664 -django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo,sha256=VXyPsc6cXB97dJJFGfD8Oh2lYpn8TFYjIOeFUQeYpVU,2039 -django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po,sha256=MzE7lepmRu60wy9gn6Wxx-LtKIO9JwScSdJ3SyLRU9s,2366 -django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo,sha256=3IzEeNWqOl9OA3eD1wGYtj9mNjBiqrb9ZstkyTL_l-w,2548 -django/contrib/flatpages/locale/he/LC_MESSAGES/django.po,sha256=JVNRxTOdAHlpyC3Ctw0i1nj0sFMbBQSete8quWAA-Q4,2777 -django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo,sha256=w29ukoF48C7iJ6nE045YoWi7Zcrgu_oXoxT-r6gcQy8,2770 -django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po,sha256=nXq5y1FqMGVhpXpQVdV3uU5JcUtBc2BIrf-n__C2q30,3055 -django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo,sha256=Mt4gpBuUXvcBl8K714ls4PimHQqee82jFxY1BEAYQOE,2188 -django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po,sha256=ZbUMJY6a-os-xDmcDCJNrN4-YqRe9b_zJ4V5gt2wlGI,2421 -django/contrib/flatpages/locale/hsb/LC_MESSAGES/django.mo,sha256=Pk44puT-3LxzNdGYxMALWpFdw6j6W0G-dWwAfv8sopI,2361 -django/contrib/flatpages/locale/hsb/LC_MESSAGES/django.po,sha256=mhnBXgZSK19E4JU8p2qzqyZqozSzltK-3iY5glr9WG8,2538 -django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo,sha256=rZxICk460iWBubNq53g9j2JfKIw2W7OqyPG5ylGE92s,2363 -django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po,sha256=DDP7OLBkNbWXr-wiulmQgG461qAubJ8VrfCCXbyPk2g,2700 -django/contrib/flatpages/locale/hy/LC_MESSAGES/django.mo,sha256=qocNtyLcQpjmGqQ130VGjJo-ruaOCtfmZehS9If_hWk,2536 -django/contrib/flatpages/locale/hy/LC_MESSAGES/django.po,sha256=WD8ohMnsaUGQItyqQmS46d76tKgzhQ17X_tGevqULO0,2619 -django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo,sha256=bochtCPlc268n0WLF0bJtUUT-XveZLPOZPQUetnOWfU,500 -django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po,sha256=gOJ850e8sFcjR2G79zGn3_0-9-KSy591i7ketBRFjyw,1543 -django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo,sha256=2kRHbcmfo09pIEuBb8q5AOkgC0sISJrAG37Rb5F0vts,2222 -django/contrib/flatpages/locale/id/LC_MESSAGES/django.po,sha256=1avfX88CkKMh2AjzN7dxRwj9pgohIBgKE0aXB_shZfc,2496 -django/contrib/flatpages/locale/io/LC_MESSAGES/django.mo,sha256=N8R9dXw_cnBSbZtwRbX6Tzw5XMr_ZdRkn0UmsQFDTi4,464 -django/contrib/flatpages/locale/io/LC_MESSAGES/django.po,sha256=_pJveonUOmMu3T6WS-tV1OFh-8egW0o7vU3i5YqgChA,1511 -django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo,sha256=lFtP1N5CN-x2aMtBNpB6j5HsZYZIZYRm6Y-22gNe1Ek,2229 -django/contrib/flatpages/locale/is/LC_MESSAGES/django.po,sha256=9e132zDa-n6IZxB8jO5H8I0Wr7ubYxrFEMBYj2W49vI,2490 -django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo,sha256=9yAXdShHd8EWeOTsT0PmIISVjK2lL6JIm_8lTxEsy8U,2223 -django/contrib/flatpages/locale/it/LC_MESSAGES/django.po,sha256=Ko-sUAu_OMYLthLSp6bffQTb6dK19tPvR-GD0rE3_Xw,2531 -django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo,sha256=Qax3t7FFRonMrszVEeiyQNMtYyWQB3dmOeeIklEmhAg,2469 -django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po,sha256=N6PBvnXLEWELKTx8nHm5KwydDuFFKq5pn6AIHsBSM5M,2848 -django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo,sha256=R4OSbZ-lGxMdeJYsaXVXpo6-KSZWeKPuErKmEsUvEQE,3022 -django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po,sha256=YCVnkX9uayvAQjYy_2jS7fYb36meoMJTKSc2lfoUbeM,3301 -django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo,sha256=lMPryzUQr21Uy-NAGQhuIZjHz-4LfBHE_zxEc2_UPaw,2438 -django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po,sha256=3y9PbPw-Q8wM7tCq6u3KeYUT6pfTqcQwlNlSxpAXMxQ,2763 -django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo,sha256=FYRfhNSqBtavYb10sHZNfB-xwLwdZEfVEzX116nBs-k,1942 -django/contrib/flatpages/locale/km/LC_MESSAGES/django.po,sha256=d2AfbR78U0rJqbFmJQvwiBl_QvYIeSwsPKEnfYM4JZA,2471 -django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo,sha256=n5HCZEPYN_YIVCXrgA1qhxvfhZtDbhfiannJy5EkHkI,1902 -django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po,sha256=o9xnLjwDw7L49Mkyr8C6aQZ13Yq5MYx1JYXEtcIsiWU,2437 -django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo,sha256=M-IInVdIH24ORarb-KgY60tEorJZgrThDfJQOxW-S0c,2304 -django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po,sha256=DjAtWVAN_fwOvZb-7CUSLtO8WN0Sr08z3jQLNqZ98wY,2746 -django/contrib/flatpages/locale/ky/LC_MESSAGES/django.mo,sha256=WmdWR6dRgmJ-nqSzFDUETypf373fj62igDVHC4ww7hQ,2667 -django/contrib/flatpages/locale/ky/LC_MESSAGES/django.po,sha256=0XDF6CjQTGkuaHADytG95lpFRVndlf_136q0lrQiU1U,2907 -django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo,sha256=Wkvlh5L_7CopayfNM5Z_xahmyVje1nYOBfQJyqucI_0,502 -django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po,sha256=gGeTuniu3ZZ835t9HR-UtwCcd2s_Yr7ihIUm3jgQ7Y0,1545 -django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo,sha256=es6xV6X1twtqhIMkV-MByA7KZ5SoVsrx5Qh8BuzJS0Q,2506 -django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po,sha256=T__44veTC_u4hpPvkLekDOWfntXYAMzCd5bffRtGxWA,2779 -django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo,sha256=RJbVUR8qS8iLL3dD5x1TOau4hcdscHUJBfxge3p3dsM,2359 -django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po,sha256=M6GT6S-5-7__RtSbJ9oqkIlxfU3FIWMlGAQ03NEfcKo,2610 -django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo,sha256=55H8w6fB-B-RYlKKkGw3fg2m-djxUoEp_XpupK-ZL70,2699 -django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po,sha256=OhHJ5OVWb0jvNaOB3wip9tSIZ1yaPPLkfQR--uUEyUI,2989 -django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo,sha256=VMMeOujp5fiLzrrbDeH24O2qKBPUkvI_YTSPH-LQjZc,3549 -django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po,sha256=KR2CGnZ1sVuRzSGaPj5IlspoAkVuVEdf48XsAzt1se0,3851 -django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo,sha256=tqwROY6D-bJ4gbDQIowKXfuLIIdCWksGwecL2sj_wco,2776 -django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po,sha256=jqiBpFLXlptDyU4F8ZWbP61S4APSPh0-nuTpNOejA6c,3003 -django/contrib/flatpages/locale/mr/LC_MESSAGES/django.mo,sha256=GvSfsp0Op7st6Ifd8zp8Cj4tTHoFMltQb4p64pebrqI,468 -django/contrib/flatpages/locale/mr/LC_MESSAGES/django.po,sha256=sayU0AfVaSFpBj0dT32Ri55LRafQFUHLi03K06kI7gc,1515 -django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo,sha256=OcbiA7tJPkyt_WNrqyvoFjHt7WL7tMGHV06AZSxzkho,507 -django/contrib/flatpages/locale/my/LC_MESSAGES/django.po,sha256=EPWE566Vn7tax0PYUKq93vtydvmt-A4ooIau9Cwcdfc,1550 -django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo,sha256=L_XICESZ0nywkk1dn6RqzdUbFTcR92ju-zHCT1g3iEg,2208 -django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po,sha256=ZtcBVD0UqIcsU8iLu5a2wnHLqu5WRLLboVFye2IuQew,2576 -django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo,sha256=gDZKhcku1NVlSs5ZPPupc7RI8HOF7ex0R4Rs8tMmrYE,1500 -django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po,sha256=GWlzsDaMsJkOvw2TidJOEf1Fvxx9WxGdGAtfZIHkHwk,2178 -django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo,sha256=_yV_-SYYjpbo-rOHp8NlRzVHFPOSrfS-ndHOEJ9JP3Y,2231 -django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po,sha256=xUuxx2b4ZTCA-1RIdoMqykLgjLLkmpO4ur1Vh93IITU,2669 -django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo,sha256=A50zQJ-0YYPjPCeeEa-gwqA2N5eON13YW8SJZvtJBZc,1693 -django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po,sha256=H5hnBsH3sUdlPkMjxiqNnh8izcrTSAs6o-ywlNCTKtw,2119 -django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo,sha256=cXGTA5M229UFsgc7hEiI9vI9SEBrNQ8d3A0XrtazO6w,2329 -django/contrib/flatpages/locale/os/LC_MESSAGES/django.po,sha256=m-qoTiKePeFviKGH1rJRjZRH-doJ2Fe4DcZ6W52rG8s,2546 -django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo,sha256=69_ZsZ4nWlQ0krS6Mx3oL6c4sP5W9mx-yAmOhZOnjPU,903 -django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po,sha256=N6gkoRXP5MefEnjywzRiE3aeU6kHQ0TUG6IGdLV7uww,1780 -django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo,sha256=5M5-d-TOx2WHlD6BCw9BYIU6bYrSR0Wlem89ih5k3Pc,2448 -django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po,sha256=oKeeo-vNfPaCYVUbufrJZGk0vsgzAE0kLQOTF5qHAK4,2793 -django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo,sha256=xD2pWdS3XMg7gAqBrUBmCEXFsOzEs0Npe8AJnlpueRY,2115 -django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po,sha256=-K2jipPUWjXpfSPq3upnC_bvtaRAeOw0OLRFv03HWFY,2326 -django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo,sha256=nVAvOdDJM-568sc_GG9o-PMj_7_HLfttnZNGdzkwqRA,2301 -django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po,sha256=HbWFiV6IjjLqpUA_GwpYIgB-BraT3xz7u4S6X8GCt2w,2904 -django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo,sha256=oS3MXuRh2USyLOMrMH0WfMSFpgBcZWfrbCrovYgbONo,2337 -django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po,sha256=UNKGNSZKS92pJDjxKDLqVUW87DKCWP4_Q51xS16IZl0,2632 -django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo,sha256=AACtHEQuytEohUZVgk-o33O7rJTFAluq22VJOw5JqII,2934 -django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po,sha256=H6JOPAXNxji1oni9kfga_hNZevodStpEl0O6cDnZ148,3312 -django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo,sha256=f_qbUdkwYKzg3DQT5x-ab883NUWF80gNMc7yekFctPM,2145 -django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po,sha256=OD_E2Z-nElhfFcsnuK8Y3r341OXjLON2CoWjNJfHIt8,2482 -django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo,sha256=MBjwhw6wppQUl0Lb_rShXZj_Sq-JLSkdYU5Xhi0OtYY,2173 -django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po,sha256=6zbOXzkLTsdWRKAhuLzBVBc53n6MQKpvOeHw4cRrAlc,2400 -django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo,sha256=Jv2sebdAM6CfiLzgi1b7rHo5hp-6_BFeeMQ4_BwYpjk,2328 -django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po,sha256=Xm87FbWaQ1JGhhGx8uvtqwUltkTkwk5Oysagu8qIPUA,2548 -django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo,sha256=p--v7bpD8Pp6zeP3cdh8fnfC8g2nuhbzGJTdN9eoE58,2770 -django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po,sha256=jxcyMN2Qh_osmo4Jf_6QUC2vW3KVKt1BupDWMMZyAXA,3071 -django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=3N4mGacnZj0tI5tFniLqC2LQCPSopDEM1SGaw5N1bsw,2328 -django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po,sha256=od7r3dPbZ7tRAJUW80Oe-nm_tHcmIiG6b2OZMsFg53s,2589 -django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo,sha256=ATOsOiNTLlCDWZO630xUUdnXfs7YW4nuqy9wUVOfzmU,2288 -django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po,sha256=4bhfJNUKc1K1Z8IWSB9_YQVk_Gy3q4ZhkhfDS9FKaaw,2562 -django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo,sha256=Lhf99AGmazKJHzWk2tkGrMInoYOq0mtdCd8SGblnVCQ,1537 -django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po,sha256=cos3eahuznpTfTdl1Vj_07fCOSYE8C9CRYHCBLYZrVw,1991 -django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo,sha256=nNuoOX-FPAmTvM79o7colM4C7TtBroTFxYtETPPatcQ,1945 -django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po,sha256=XE4SndPZPLf1yXGl5xQSb0uor4OE8CKJ0EIXBRDA3qU,2474 -django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo,sha256=bMxhDMTQc_WseqoeqJMCSNy71o4U5tJZYgD2G0p-jD0,1238 -django/contrib/flatpages/locale/te/LC_MESSAGES/django.po,sha256=tmUWOrAZ98B9T6Cai8AgLCfb_rLeoPVGjDTgdsMOY1Y,2000 -django/contrib/flatpages/locale/tg/LC_MESSAGES/django.mo,sha256=gpzjf_LxwWX6yUrcUfNepK1LGez6yvnuYhmfULDPZ6E,2064 -django/contrib/flatpages/locale/tg/LC_MESSAGES/django.po,sha256=lZFLes8BWdJ-VbczHFDWCSKhKg0qmmk10hTjKcBNr5o,2572 -django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo,sha256=mct17_099pUn0aGuHu8AlZG6UqdKDpYLojqGYDLRXRg,2698 -django/contrib/flatpages/locale/th/LC_MESSAGES/django.po,sha256=PEcRx5AtXrDZvlNGWFH-0arroD8nZbutdJBe8_I02ag,2941 -django/contrib/flatpages/locale/tk/LC_MESSAGES/django.mo,sha256=5iVSzjcnJLfdAnrI1yOKua_OfHmgUu6ydixKkvayrzQ,753 -django/contrib/flatpages/locale/tk/LC_MESSAGES/django.po,sha256=0VK0Ju55wTvmYXqS9hPKLJXyTtTz9Z8mv_qw66ck5gg,1824 -django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo,sha256=pPNGylfG8S0iBI4ONZbky3V2Q5AG-M1njp27tFrhhZc,2290 -django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po,sha256=0ULZu3Plp8H9zdirHy3MSduJ_QRdpoaaivf3bL9MCwA,2588 -django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo,sha256=9RfCKyn0ZNYsqLvFNmY18xVMl7wnmDq5uXscrsFfupk,2007 -django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po,sha256=SUwalSl8JWI9tuDswmnGT8SjuWR3DQGND9roNxJtH1o,2402 -django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo,sha256=7KhzWgskBlHmi-v61Ax9fjc3NBwHB17WppdNMuz-rEc,490 -django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po,sha256=zidjP05Hx1OpXGqWEmF2cg9SFxASM4loOV85uW7zV5U,1533 -django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo,sha256=4LPDGENnexeg6awO1IHjau7CTZ0Y1EIkeXMspY9gj1Q,2962 -django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po,sha256=15bRsN4P6kkY08RXROnl7aT63tWsRO1xNwdH-6Qlzcw,3289 -django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo,sha256=Li4gVdFoNOskGKAKiNuse6B2sz6ePGqGvZu7aGXMNy0,1976 -django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po,sha256=hDasKiKrYov9YaNIHIpoooJo0Bzba___IuN2Hl6ofSc,2371 -django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo,sha256=FsFUi96oGTWGlZwM4qSMpuL1M2TAxsW51qO70TrybSM,1035 -django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po,sha256=ITX3MWd7nlWPxTCoNPl22_OMLTt0rfvajGvTVwo0QC8,1900 -django/contrib/flatpages/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=UTCQr9t2wSj6dYLK1ftpF8-pZ25dAMYLRE2wEUQva-o,2124 -django/contrib/flatpages/locale/zh_Hans/LC_MESSAGES/django.po,sha256=loi9RvOnrgFs4qp8FW4RGis7wgDzBBXuwha5pFfLRxY,2533 -django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=Y5nDMQ3prLJ6OHuQEeEqjDLBC9_L-4XHDGJSLNoCgqg,2200 -django/contrib/flatpages/locale/zh_Hant/LC_MESSAGES/django.po,sha256=6dKCSJpw_8gnunfTY86_apXdH5Pqe0kKYSVaqRtOIh0,2475 -django/contrib/flatpages/middleware.py,sha256=aXeOeOkUmpdkGOyqZnkR-l1VrDQ161RWIWa3WPBhGac,784 -django/contrib/flatpages/migrations/0001_initial.py,sha256=7lhJRTsJCQrf_jyKbg9VXcyjPIWJSqLir-WgKQjJcl8,1719 -django/contrib/flatpages/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/flatpages/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/flatpages/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/flatpages/models.py,sha256=_CeWgWjhuD_y8FgMKpv9kvgolNz1on3DH0NkvJnwlOM,1742 -django/contrib/flatpages/sitemaps.py,sha256=0WGMLfr61H5aVX1inE4X_BJhx2b_lw4LKMO4OQGiDX4,554 -django/contrib/flatpages/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/flatpages/templatetags/__pycache__/__init__.cpython-38.pyc,, -django/contrib/flatpages/templatetags/__pycache__/flatpages.cpython-38.pyc,, -django/contrib/flatpages/templatetags/flatpages.py,sha256=q0wsGQqXHhSCH4_UR-wHkj_pJsxBOo_liODBT_BZcTc,3561 -django/contrib/flatpages/urls.py,sha256=v_bP8Axlf0XLgb2kJVdEPDqW8WY7RkwSwm7_BH_0eWE,179 -django/contrib/flatpages/views.py,sha256=ywkDuZHZwu_kZx6frjAFt7MAB3mo6-mLicyByw13EfY,2723 -django/contrib/gis/__init__.py,sha256=GTSQJbKqQkNiljWZylYy_ofRICJeqIkfqmnC9ZdxZ2I,57 -django/contrib/gis/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/__pycache__/apps.cpython-38.pyc,, -django/contrib/gis/__pycache__/feeds.cpython-38.pyc,, -django/contrib/gis/__pycache__/geometry.cpython-38.pyc,, -django/contrib/gis/__pycache__/measure.cpython-38.pyc,, -django/contrib/gis/__pycache__/ptr.cpython-38.pyc,, -django/contrib/gis/__pycache__/shortcuts.cpython-38.pyc,, -django/contrib/gis/__pycache__/views.cpython-38.pyc,, -django/contrib/gis/admin/__init__.py,sha256=Hni2JCw5ihVuor2HupxDffokiBOG11tu74EcKhiO89w,486 -django/contrib/gis/admin/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/admin/__pycache__/options.cpython-38.pyc,, -django/contrib/gis/admin/__pycache__/widgets.cpython-38.pyc,, -django/contrib/gis/admin/options.py,sha256=z4UrI7Pzb73FsT2WgIMX9zsMG_Hg6g89vkkvgKPHOz8,5145 -django/contrib/gis/admin/widgets.py,sha256=_X3Li-k9q0m7soBvu0Vu3jwwmODZWTx9A3IswYKeXLM,4720 -django/contrib/gis/apps.py,sha256=YkIbEk4rWlbN0zZru2uewGsLzqWsMDl7yqA4g_5pT10,341 -django/contrib/gis/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/__pycache__/utils.cpython-38.pyc,, -django/contrib/gis/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/base/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/base/__pycache__/adapter.cpython-38.pyc,, -django/contrib/gis/db/backends/base/__pycache__/features.cpython-38.pyc,, -django/contrib/gis/db/backends/base/__pycache__/models.cpython-38.pyc,, -django/contrib/gis/db/backends/base/__pycache__/operations.cpython-38.pyc,, -django/contrib/gis/db/backends/base/adapter.py,sha256=zBcccriBRK9JowhREgLKirkWllHzir0Hw3BkC3koAZs,481 -django/contrib/gis/db/backends/base/features.py,sha256=LD5DTxV8t-NhHJogQrkyRfl_T3VgtypGLUvLoY0Ioy4,3370 -django/contrib/gis/db/backends/base/models.py,sha256=vkDweNsExmKWkHNSae9G6P-fT-SMdIgHZ85i31ihXg0,3962 -django/contrib/gis/db/backends/base/operations.py,sha256=_6tp_lz5Iv2Zvl90h4Z5YhwElquLW-oL2qJvZ42XAdE,6355 -django/contrib/gis/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/mysql/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/features.cpython-38.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/introspection.cpython-38.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/operations.cpython-38.pyc,, -django/contrib/gis/db/backends/mysql/__pycache__/schema.cpython-38.pyc,, -django/contrib/gis/db/backends/mysql/base.py,sha256=rz8tnvXJlY4V6liWxYshuxQE-uTNuKSBogCz_GtXoaY,507 -django/contrib/gis/db/backends/mysql/features.py,sha256=CDZbLeMgcGRdqwRtyup7V9cL_j_YpyCzOdIBy0Cn1Z0,919 -django/contrib/gis/db/backends/mysql/introspection.py,sha256=QuoJOaHeTxqr0eju8HWA5AmzGYpC15Kt9U5uCNxJWHA,1834 -django/contrib/gis/db/backends/mysql/operations.py,sha256=RKFLyjBpuNQ2lzzrcSBG0SxaYRhCLuSBLwV0VFuoO-k,3928 -django/contrib/gis/db/backends/mysql/schema.py,sha256=B86TeF5hvlmLzgY7TFZGTKaIzVbK87ByPmjhNz83JTA,2976 -django/contrib/gis/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/oracle/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/adapter.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/features.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/introspection.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/models.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/operations.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/__pycache__/schema.cpython-38.pyc,, -django/contrib/gis/db/backends/oracle/adapter.py,sha256=GYINCIekUWRsloAnOIdaXJJKEtbK2n_7ti9qF93h3kc,1508 -django/contrib/gis/db/backends/oracle/base.py,sha256=NQYlEvE4ioobvMd7u2WC7vMtDiRq_KtilGprD6qfJCo,516 -django/contrib/gis/db/backends/oracle/features.py,sha256=deYDVaXK22Hx_LsrN8eTnh-u0vNMG3nrLV-fLtzavKU,463 -django/contrib/gis/db/backends/oracle/introspection.py,sha256=EfGUexqpa3yDX3IQ4PVx9AjVX8qY9djZtFLwdiqyNL8,1889 -django/contrib/gis/db/backends/oracle/models.py,sha256=pT32f_A1FRYwO5hWMigX7PU_ojpRmIhdUlhOqdz2R9k,2084 -django/contrib/gis/db/backends/oracle/operations.py,sha256=hLlmamy0yOebgFsmqZZm_4uiY445id-zx-f0d4yeRJc,8418 -django/contrib/gis/db/backends/oracle/schema.py,sha256=EJOTAG4rPrnOMAWmwecnVwFSwmJOjZS5R_p48NybDi0,3909 -django/contrib/gis/db/backends/postgis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/postgis/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/adapter.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/const.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/features.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/introspection.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/models.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/operations.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/pgraster.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/__pycache__/schema.cpython-38.pyc,, -django/contrib/gis/db/backends/postgis/adapter.py,sha256=jDa5X2uIj6qRpgJ8DUfEkWBZETMifyxqDtnkA73kUu8,2117 -django/contrib/gis/db/backends/postgis/base.py,sha256=sFCNoMHRzd-a_MRc9hv-tyVHEODmGveyIopbP6CTPCg,937 -django/contrib/gis/db/backends/postgis/const.py,sha256=CMe_bpzcOcYakC3mu64EKfF2HgRxBT4yhoRX6zg3O_k,1967 -django/contrib/gis/db/backends/postgis/features.py,sha256=iBZqX6o1YBrmw5pSUYeft-ga6FGa05J-9ADFNsRtLgk,422 -django/contrib/gis/db/backends/postgis/introspection.py,sha256=htz45PonMVDsdiSLsQJg4xOlysaXdaXdyjiDNJxm6WI,2977 -django/contrib/gis/db/backends/postgis/models.py,sha256=tKiRZzO6p2YJnPbPXReMlFcAiFij-C_H_6w8FHhLqxk,2000 -django/contrib/gis/db/backends/postgis/operations.py,sha256=GgLB6_LMaPS8rQBgQ9dXye1Adlv4TJiv-_nlXdOBlzs,15801 -django/contrib/gis/db/backends/postgis/pgraster.py,sha256=nVS1pSMQFKffKcJNNvHMWDX8HxcYRIWG4RvK9fiwbH8,4558 -django/contrib/gis/db/backends/postgis/schema.py,sha256=g6jCw42pusahUc84Dw52QjnQpiSPTPYJlhjxGnfREHs,2864 -django/contrib/gis/db/backends/spatialite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/db/backends/spatialite/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/adapter.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/client.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/features.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/introspection.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/models.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/operations.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/__pycache__/schema.cpython-38.pyc,, -django/contrib/gis/db/backends/spatialite/adapter.py,sha256=y74p_UEgLtoYjNZEi72mwcJOh_b-MzJ7sZd68WJXBiY,317 -django/contrib/gis/db/backends/spatialite/base.py,sha256=pg7m0arvmnwOsDJo-Mj9NudCclRMThEhQzDBjQWQLNI,3011 -django/contrib/gis/db/backends/spatialite/client.py,sha256=NsqD2vAnfjqn_FbQnCQeAqbGyZf9oa6gl7EPsMTPf8c,138 -django/contrib/gis/db/backends/spatialite/features.py,sha256=HeeWFDRGxkgfTQ_ryzEKzRxJPnf5BJVs0ifYs8SEIXU,449 -django/contrib/gis/db/backends/spatialite/introspection.py,sha256=NQ2T3GsDYBrbTiVzjWPp_RElKMP-qNxUiGEnOFZTSrg,3076 -django/contrib/gis/db/backends/spatialite/models.py,sha256=iiodcKYWAMIz_xrJagr-1nbiiO2YJY_Q0vt_0uyaD54,1928 -django/contrib/gis/db/backends/spatialite/operations.py,sha256=OJEZUY4NN6hFj0htFDcCgtGQMS8cEIbXaSjxo3yxr0k,7806 -django/contrib/gis/db/backends/spatialite/schema.py,sha256=3frdcgpgK7h92LDKF_kxx2LYIRTPxyEO9eE3gZESWHA,6797 -django/contrib/gis/db/backends/utils.py,sha256=y4q0N0oDplot6dZQIFnjGPqVsTiGyLTmEMt5-xj-2b4,784 -django/contrib/gis/db/models/__init__.py,sha256=BR3kQAefIv4O1NksiVCUShwlSO4OCNoUGan6dCRGIyU,817 -django/contrib/gis/db/models/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/models/__pycache__/aggregates.cpython-38.pyc,, -django/contrib/gis/db/models/__pycache__/fields.cpython-38.pyc,, -django/contrib/gis/db/models/__pycache__/functions.cpython-38.pyc,, -django/contrib/gis/db/models/__pycache__/lookups.cpython-38.pyc,, -django/contrib/gis/db/models/__pycache__/proxy.cpython-38.pyc,, -django/contrib/gis/db/models/aggregates.py,sha256=dGTRWMPhKO94XNf8U8VDoiwuYWOtaxQEYXhumCCdHqM,2832 -django/contrib/gis/db/models/fields.py,sha256=3MpJlbnYHtLfxBnSbZ9UdTfQsRxed3xdVh44yaTaGDU,13748 -django/contrib/gis/db/models/functions.py,sha256=FkIYsjdRJbOowdH-xxf7JfyP4kBw4KpP3cFqM6_XcNU,17408 -django/contrib/gis/db/models/lookups.py,sha256=3zvAOFS0qy3vr5ZGWk5Vq8so5yPPgrLwTJoJHCDzXfU,11491 -django/contrib/gis/db/models/proxy.py,sha256=BSZoCQ1IG8n_M6dSOdF3wAzIHfMElSVnIGu8ZWj1-_0,3122 -django/contrib/gis/db/models/sql/__init__.py,sha256=oYJYL-5DAO-DIcpIQ7Jmeq_cuKapRB83V1KLVIs_5iU,139 -django/contrib/gis/db/models/sql/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/db/models/sql/__pycache__/conversion.cpython-38.pyc,, -django/contrib/gis/db/models/sql/conversion.py,sha256=gG1mTUWb33YK_Uf1ZJRg5MRhkCTLtgajD3xxi7thODA,2400 -django/contrib/gis/feeds.py,sha256=43TmSa40LR3LguE4VDeBThJZgO_rbtfrT5Y6DQ7RBiQ,5732 -django/contrib/gis/forms/__init__.py,sha256=fREam1OSkDWr9ugUMNZMFn8Y9TufpRCn3Glj14DTMbQ,298 -django/contrib/gis/forms/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/forms/__pycache__/fields.cpython-38.pyc,, -django/contrib/gis/forms/__pycache__/widgets.cpython-38.pyc,, -django/contrib/gis/forms/fields.py,sha256=JbFJe78zJIH51_Kku9F8pnpYyJlOcgfw4Las112eVIs,4487 -django/contrib/gis/forms/widgets.py,sha256=J8EMJkmHrGkZVqf6ktIwZbO8lYmg63CJQbUYILVsVNc,3739 -django/contrib/gis/gdal/LICENSE,sha256=VwoEWoNyts1qAOMOuv6OPo38Cn_j1O8sxfFtQZ62Ous,1526 -django/contrib/gis/gdal/__init__.py,sha256=UCuq9p1azua2uui6zycmyhwiRYtvyhX0UzZ0pu5z364,1793 -django/contrib/gis/gdal/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/datasource.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/driver.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/envelope.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/error.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/feature.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/field.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/geometries.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/geomtype.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/layer.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/libgdal.cpython-38.pyc,, -django/contrib/gis/gdal/__pycache__/srs.cpython-38.pyc,, -django/contrib/gis/gdal/base.py,sha256=yymyL0vZRMBfiFUzrehvaeaunIxMH5ucGjPRfKj-rAo,181 -django/contrib/gis/gdal/datasource.py,sha256=xY5noWAHNAXWvb_QfzkqQRCUpTbxrJ0bhlBTtgO_gnc,4490 -django/contrib/gis/gdal/driver.py,sha256=E7Jj4z3z--WC2Idm5GvYtDGGErdtm1tAqzN8Lil-yRg,3264 -django/contrib/gis/gdal/envelope.py,sha256=lL13BYlaEyxDNkCJCPnFZk13eyRb9pOkOOrAdP16Qtw,6970 -django/contrib/gis/gdal/error.py,sha256=yv9yvtBPjLWRqQHlzglF-gLDW-nR7zF_F5xsej_oBx4,1576 -django/contrib/gis/gdal/feature.py,sha256=KYGyQYNWXrEJm2I0eIG1Kcd7WTOZWiC-asIjF5DmO9I,3926 -django/contrib/gis/gdal/field.py,sha256=AerdJ9sLeru9Z39PEtTAXp14vabMcwX_LIZjg0EyDAE,6626 -django/contrib/gis/gdal/geometries.py,sha256=2AOuNXJblzVZuwpj9D8yr6vJGCPclo5jNJ8nfa-7B2Y,23871 -django/contrib/gis/gdal/geomtype.py,sha256=hCHfxQsecBakIZUDZwEkECdH7dg3CdF4Y_kAFYkW9Og,3071 -django/contrib/gis/gdal/layer.py,sha256=2PPP3lpmljIA-KcuN1FI5dNQPkELR3eyPmarP2KYfYk,8527 -django/contrib/gis/gdal/libgdal.py,sha256=X5volIPZym0PXjMlDyHhzpBneSgjnpKLcjKkxdlGIt0,3384 -django/contrib/gis/gdal/prototypes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/gdal/prototypes/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/ds.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/errcheck.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/generation.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/geom.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/raster.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/__pycache__/srs.cpython-38.pyc,, -django/contrib/gis/gdal/prototypes/ds.py,sha256=GnxQ4229MOZ5NQjJTtmCcstxGPH6HhUd9AsCWsih6_s,4586 -django/contrib/gis/gdal/prototypes/errcheck.py,sha256=ckjyqcZtrVZctrw-HvQb1isDavhUAblLqKuno9U4upw,4137 -django/contrib/gis/gdal/prototypes/generation.py,sha256=9UdPSqWR28AsUG7HDdHMRG2nI1-iKr1ru1V998uifP8,4867 -django/contrib/gis/gdal/prototypes/geom.py,sha256=ELRO7bR8RxO3HIuxtitr06yhsG4DxYTlRsTa6NenTqI,4946 -django/contrib/gis/gdal/prototypes/raster.py,sha256=zPIc-Vahtau1XQTADqxQNtzcAv6LunbhVHkWkMOEWKo,5690 -django/contrib/gis/gdal/prototypes/srs.py,sha256=R1ZUVFbrSULaaV8igO2g0tTKraibKk6aL2rC4JeSs74,3687 -django/contrib/gis/gdal/raster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/gdal/raster/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/gdal/raster/__pycache__/band.cpython-38.pyc,, -django/contrib/gis/gdal/raster/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/gdal/raster/__pycache__/const.cpython-38.pyc,, -django/contrib/gis/gdal/raster/__pycache__/source.cpython-38.pyc,, -django/contrib/gis/gdal/raster/band.py,sha256=dRikGQ6-cKCgOj3bjRSnIKd196FGRGM2Ee9BtPQGVk0,8247 -django/contrib/gis/gdal/raster/base.py,sha256=WLdZNgRlGAT6kyIXz5bBhPbpNY53ImxQkSeVLyv4Ohc,2861 -django/contrib/gis/gdal/raster/const.py,sha256=uPk8859YSREMtiQtXGkVOhISmgsF6gXP7JUfufQDXII,2891 -django/contrib/gis/gdal/raster/source.py,sha256=cYnqu3aSXncGAB7HaAPFlZRQk-9scTVOJYshpnmZmhI,16922 -django/contrib/gis/gdal/srs.py,sha256=fHVqlKU0DcCsA7e4yqRIUxAoz5BiZDpragE1yVsc6LA,12609 -django/contrib/gis/geoip2/__init__.py,sha256=uIUWQyMsbSrYL-oVqFsmhqQkYGrh7pHLIVvIM3W_EG4,822 -django/contrib/gis/geoip2/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/geoip2/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/geoip2/__pycache__/resources.cpython-38.pyc,, -django/contrib/gis/geoip2/base.py,sha256=yx8gZUBCkrVurux06tuJhnXsamzj7hg0iiGFYmfu0yE,8976 -django/contrib/gis/geoip2/resources.py,sha256=u39vbZzNV5bQKS0nKb0VbHsSRm3m69r29bZwpNbNs3Y,819 -django/contrib/gis/geometry.py,sha256=hA1SQGzGfTyV7A5kaBuxCzwkqZNAYz0kqZMaz3E1zIQ,662 -django/contrib/gis/geos/LICENSE,sha256=CL8kt1USOK4yUpUkVCWxyuua0PQvni0wPHs1NQJjIEU,1530 -django/contrib/gis/geos/__init__.py,sha256=DXFaljVp6gf-E0XAbfO1JnYjPYSDfGZQ2VLtGYBcUZQ,648 -django/contrib/gis/geos/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/base.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/collections.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/coordseq.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/error.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/factory.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/geometry.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/io.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/libgeos.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/linestring.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/mutable_list.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/point.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/polygon.cpython-38.pyc,, -django/contrib/gis/geos/__pycache__/prepared.cpython-38.pyc,, -django/contrib/gis/geos/base.py,sha256=NdlFg5l9akvDp87aqzh9dk0A3ZH2TI3cOq10mmmuHBk,181 -django/contrib/gis/geos/collections.py,sha256=yUMj02Akhu1BN9zpaPMSaoyfpRJWi282kkY_R6MF-kY,3895 -django/contrib/gis/geos/coordseq.py,sha256=kJEdoM6L_TW5SZYAgTivMnZbFRRm1ojf_2ycxjF7Ks0,7232 -django/contrib/gis/geos/error.py,sha256=r3SNTnwDBI6HtuyL3mQ_iEEeKlOqqqdkHnhNoUkMohw,104 -django/contrib/gis/geos/factory.py,sha256=f6u2m1AtmYYHk_KrIC9fxt7VGsJokJVoSWEx-DkPWx0,961 -django/contrib/gis/geos/geometry.py,sha256=Jc53mvIQmtEivjh9n9gqv9dVSlOQw8hD9V95CLWgTg8,25522 -django/contrib/gis/geos/io.py,sha256=Om5DBSlttixUc3WQAGZDhzPdb5JTe82728oImIj_l3k,787 -django/contrib/gis/geos/libgeos.py,sha256=dmktmuklfnViT3m3qQEwssEzOkCqyNDyg5ajuUw9HCM,4999 -django/contrib/gis/geos/linestring.py,sha256=mZnjmJQ3IUtwR8oKZsReTJ5nqZjLBv0cJqqoAlBfSvw,6293 -django/contrib/gis/geos/mutable_list.py,sha256=8uJ_9r48AlIIDzYaUb_qAD0eYslek9yvAX9ICdCmh5A,10131 -django/contrib/gis/geos/point.py,sha256=_5UI0cfAax9Q8_UuQeO25E3XhuS8PEVwkeZ2dgO0yQM,4757 -django/contrib/gis/geos/polygon.py,sha256=nAJFsaBXbIM9ZA_gSxVB_3WNXJHwakmhlxN_VzKs4WQ,6664 -django/contrib/gis/geos/prepared.py,sha256=rJf35HOTxPrrk_yA-YR9bQlL_pPDKecuhwZlcww8lxY,1575 -django/contrib/gis/geos/prototypes/__init__.py,sha256=gJo1iIH3eOITX_p20QqbWqOPAPps6fnhWQ8jPMzGMAY,1236 -django/contrib/gis/geos/prototypes/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/coordseq.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/errcheck.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/geom.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/io.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/misc.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/predicates.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/prepared.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/threadsafe.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/__pycache__/topology.cpython-38.pyc,, -django/contrib/gis/geos/prototypes/coordseq.py,sha256=aBm_yTkis2ZloQeHqimjbMGYDkhEvv0FzeQGH3pVuqc,3103 -django/contrib/gis/geos/prototypes/errcheck.py,sha256=YTUBFoHU5pZOAamBPgogFymDswgnMr1_KL59sZfInYo,2654 -django/contrib/gis/geos/prototypes/geom.py,sha256=zKB1r_-6faLyq8OL4qJdM-lbMMpw8NKYYl8L9tCesBQ,3074 -django/contrib/gis/geos/prototypes/io.py,sha256=V2SlUEniZGfVnj_9r17XneT7w-OoCUpkL_sumKIhLbU,11229 -django/contrib/gis/geos/prototypes/misc.py,sha256=7Xwk0HG__JtPt6wJD-ieMkD-7KxpnofYrHSk6NEUeJo,1161 -django/contrib/gis/geos/prototypes/predicates.py,sha256=Ya06ir7LZQBSUypB05iv9gpvZowOSLIKa4fhCnhZuYY,1587 -django/contrib/gis/geos/prototypes/prepared.py,sha256=SC7g9_vvsW_ty7LKqlMzJfF9v3EvsJX9-j3kpSeCRfY,1184 -django/contrib/gis/geos/prototypes/threadsafe.py,sha256=Ll_TmpfJhRTmWV5dgKJx_Dh67ay1pa-SdlH558NRPw4,2309 -django/contrib/gis/geos/prototypes/topology.py,sha256=wd0OxkUQiMNioDXpJdRc1h9swsZ2CeOgqMvHxqJFY5s,2256 -django/contrib/gis/locale/af/LC_MESSAGES/django.mo,sha256=TN3GddZjlqXnhK8UKLlMoMIXNw2szzj7BeRjoKjsR5c,470 -django/contrib/gis/locale/af/LC_MESSAGES/django.po,sha256=XPdXaQsZ6yDPxF3jVMEI4bli_5jrEawoO-8DHMk8Q_A,1478 -django/contrib/gis/locale/ar/LC_MESSAGES/django.mo,sha256=5LCO903yJTtRVaaujBrmwMx8f8iLa3ihasgmj8te9eg,2301 -django/contrib/gis/locale/ar/LC_MESSAGES/django.po,sha256=pfUyK0VYgY0VC2_LvWZvG_EEIWa0OqIUfhiPT2Uov3Q,2569 -django/contrib/gis/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=1e2lutVEjsa5vErMdjS6gaBbOLPTVIpDv15rax-wvKg,2403 -django/contrib/gis/locale/ar_DZ/LC_MESSAGES/django.po,sha256=dizXM36w-rUtI7Dv2mSoJDR5ouVR6Ar7zqjywX3xKr0,2555 -django/contrib/gis/locale/ast/LC_MESSAGES/django.mo,sha256=8o0Us4wR14bdv1M5oBeczYC4oW5uKnycWrj1-lMIqV4,850 -django/contrib/gis/locale/ast/LC_MESSAGES/django.po,sha256=0beyFcBkBOUNvPP45iqewTNv2ExvCPvDYwpafCJY5QM,1684 -django/contrib/gis/locale/az/LC_MESSAGES/django.mo,sha256=liiZOQ712WIdLolC8_uIHY6G4QPJ_sYhp5CfwxTXEv0,1976 -django/contrib/gis/locale/az/LC_MESSAGES/django.po,sha256=kUxBJdYhLZNnAO3IWKy4R3ijTZBiG-OFMg2wrZ7Jh28,2172 -django/contrib/gis/locale/be/LC_MESSAGES/django.mo,sha256=4B6F3HmhZmk1eLi42Bw90aipUHF4mT-Zlmsi0aKojHg,2445 -django/contrib/gis/locale/be/LC_MESSAGES/django.po,sha256=4QgQvhlM_O4N_8uikD7RASkS898vov-qT_FkQMhg4cE,2654 -django/contrib/gis/locale/bg/LC_MESSAGES/django.mo,sha256=1A5wo7PLz0uWsNMHv_affxjNnBsY3UQNz7zHszu56do,2452 -django/contrib/gis/locale/bg/LC_MESSAGES/django.po,sha256=5Onup09U6w85AFWvjs2QKnYXoMhnnw9u4eUlIa5QoXU,2670 -django/contrib/gis/locale/bn/LC_MESSAGES/django.mo,sha256=7oNsr_vHQfsanyP-o1FG8jZTSBK8jB3eK2fA9AqNOx4,1070 -django/contrib/gis/locale/bn/LC_MESSAGES/django.po,sha256=PTa9EFZdqfznUH7si3Rq3zp1kNkTOnn2HRTEYXQSOdM,1929 -django/contrib/gis/locale/br/LC_MESSAGES/django.mo,sha256=xN8hOvJi_gDlpdC5_lghXuX6yCBYDPfD_SQLjcvq8gU,1614 -django/contrib/gis/locale/br/LC_MESSAGES/django.po,sha256=LQw3Tp_ymJ_x7mJ6g4SOr6aP00bejkjuaxfFFRZnmaQ,2220 -django/contrib/gis/locale/bs/LC_MESSAGES/django.mo,sha256=9EdKtZkY0FX2NlX_q0tIxXD-Di0SNQJZk3jo7cend0A,1308 -django/contrib/gis/locale/bs/LC_MESSAGES/django.po,sha256=eu_qF8dbmlDiRKGNIz80XtIunrF8QIOcy8O28X02GvQ,1905 -django/contrib/gis/locale/ca/LC_MESSAGES/django.mo,sha256=nPWtfc4Fbm2uaY-gCASaye9CxzOYIfjG8mDTQGvn2As,2007 -django/contrib/gis/locale/ca/LC_MESSAGES/django.po,sha256=pPMDNc3hAWsbC_BM4UNmziX2Bq7vs6bHbNqVkEvCSic,2359 -django/contrib/gis/locale/cs/LC_MESSAGES/django.mo,sha256=V7MNXNsOaZ3x1G6LqYu6KJn6zeiFQCZKvF7Xk4J0fkg,2071 -django/contrib/gis/locale/cs/LC_MESSAGES/django.po,sha256=mPkcIWtWRILisD6jOlBpPV7CKYJjhTaBcRLf7OqifdM,2321 -django/contrib/gis/locale/cy/LC_MESSAGES/django.mo,sha256=vUG_wzZaMumPwIlKwuN7GFcS9gnE5rpflxoA_MPM_po,1430 -django/contrib/gis/locale/cy/LC_MESSAGES/django.po,sha256=_QjXT6cySUXrjtHaJ3046z-5PoXkCqtOhvA7MCZsXxk,1900 -django/contrib/gis/locale/da/LC_MESSAGES/django.mo,sha256=kH8GcLFe-XvmznQbiY5Ce2-Iz4uKJUfF4Be0yY13AEs,1894 -django/contrib/gis/locale/da/LC_MESSAGES/django.po,sha256=JOVTWeTnSUASbupCd2Fo0IY_veJb6XKDhyKFu6M2J_8,2179 -django/contrib/gis/locale/de/LC_MESSAGES/django.mo,sha256=1PBxHsFHDrbkCslumxKVD_kD2eIElGWOq2chQopcorY,1965 -django/contrib/gis/locale/de/LC_MESSAGES/django.po,sha256=0XnbUsy9yZHhFsGGhcSnXUqJpDlMVqmrRl-0c-kdcYk,2163 -django/contrib/gis/locale/dsb/LC_MESSAGES/django.mo,sha256=NzmmexcIC525FHQ5XvsKdzCZtkkb5wnrSd12fdAkZ-0,2071 -django/contrib/gis/locale/dsb/LC_MESSAGES/django.po,sha256=aTBfL_NB8uIDt2bWBxKCdKi-EUNo9lQ9JZ0ekWeI4Yk,2234 -django/contrib/gis/locale/el/LC_MESSAGES/django.mo,sha256=8QAS4MCktYLFsCgcIVflPXePYAWwr6iEZ7K8_axi_5U,2519 -django/contrib/gis/locale/el/LC_MESSAGES/django.po,sha256=6JVoYCUCUznxgQYlOCWJw1Ad6SR3Fa9jlorSCYkiwLw,2886 -django/contrib/gis/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/gis/locale/en/LC_MESSAGES/django.po,sha256=8yvqHG1Mawkhx9RqD5tDXX8U0-a7RWr-wCQPGHWAqG0,2225 -django/contrib/gis/locale/en_AU/LC_MESSAGES/django.mo,sha256=IPn5kRqOvv5S7jpbIUw8PEUkHlyjEL-4GuOANd1iAzI,486 -django/contrib/gis/locale/en_AU/LC_MESSAGES/django.po,sha256=x_58HmrHRia2LoYhmmN_NLb1J3f7oTDvwumgTo0LowI,1494 -django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo,sha256=WkORQDOsFuV2bI7hwVsJr_JTWnDQ8ZaK-VYugqnLv3w,1369 -django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po,sha256=KWPMoX-X-gQhb47zoVsa79-16-SiCGpO0s4xkcGv9z0,1910 -django/contrib/gis/locale/eo/LC_MESSAGES/django.mo,sha256=qls9V1jybymGCdsutcjP6fT5oMaI-GXnt_oNfwq-Yhs,1960 -django/contrib/gis/locale/eo/LC_MESSAGES/django.po,sha256=WPSkCxwq3ZnR-_L-W-CnS0_Qne3ekX7ZAZVaubiWw5s,2155 -django/contrib/gis/locale/es/LC_MESSAGES/django.mo,sha256=VPXnF_-NduDHoFrxKY7n6L5eIlaygTNljCHPackRNIg,2004 -django/contrib/gis/locale/es/LC_MESSAGES/django.po,sha256=DkkbvsVCeP2aroWbKjpFJFFzeuQTbErmCHqrFPtMA3w,2414 -django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo,sha256=J-A7H9J3DjwlJ-8KvO5MC-sq4hUsJhmioAE-wiwOA8E,2012 -django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po,sha256=uWqoO-Tw7lOyPnOKC2SeSFD0MgPIQHWqTfroAws24aQ,2208 -django/contrib/gis/locale/es_CO/LC_MESSAGES/django.mo,sha256=P79E99bXjthakFYr1BMobTKqJN9S1aj3vfzMTbGRhCY,1865 -django/contrib/gis/locale/es_CO/LC_MESSAGES/django.po,sha256=tyu8_dFA9JKeQ2VCpCUy_6yX97SPJcDwVqqAuf_xgks,2347 -django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo,sha256=bC-uMgJXdbKHQ-w7ez-6vh9E_2YSgCF_LkOQlvb60BU,1441 -django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po,sha256=MYO9fGclp_VvLG5tXDjXY3J_1FXI4lDv23rGElXAyjA,1928 -django/contrib/gis/locale/es_VE/LC_MESSAGES/django.mo,sha256=5YVIO9AOtmjky90DAXVyU0YltfQ4NLEpVYRTTk7SZ5o,486 -django/contrib/gis/locale/es_VE/LC_MESSAGES/django.po,sha256=R8suLsdDnSUEKNlXzow3O6WIT5NcboZoCjir9GfSTSQ,1494 -django/contrib/gis/locale/et/LC_MESSAGES/django.mo,sha256=xrNWaGCM9t14hygJ7a2g3KmhnFIAxVPrfKdJmP9ysrg,1921 -django/contrib/gis/locale/et/LC_MESSAGES/django.po,sha256=ejWpn0QAyxGCsfY1VpsJhUcY4ngNXG5vcwt_qOF5jbA,2282 -django/contrib/gis/locale/eu/LC_MESSAGES/django.mo,sha256=EChDnXv1Tgk0JvMp3RuDsk-0LkgZ2Xig8nckmikewLA,1973 -django/contrib/gis/locale/eu/LC_MESSAGES/django.po,sha256=sj_W9oCmbYENT-zGnTNtAT-ZsI3z7IOhgUxooQNFbpc,2191 -django/contrib/gis/locale/fa/LC_MESSAGES/django.mo,sha256=40t0F0vpKKPy9NW7OMuY-UnbkOI9ifM33A0CZG8i2dg,2281 -django/contrib/gis/locale/fa/LC_MESSAGES/django.po,sha256=cw9rOxFowluGpekFPAoaPvjAxwUOcXi4szNnCAvsBbI,2589 -django/contrib/gis/locale/fi/LC_MESSAGES/django.mo,sha256=L_1vFA-I0vQddIdLpNyATweN04E5cRw-4Xr81D67Q_c,1946 -django/contrib/gis/locale/fi/LC_MESSAGES/django.po,sha256=WSrldLannVh0Vnmm18X5FwHoieLQYXz0CoF2SY52w0M,2127 -django/contrib/gis/locale/fr/LC_MESSAGES/django.mo,sha256=BpmQ_09rbzFR-dRjX0_SbFAHQJs7bZekLTGwsN96j8A,2052 -django/contrib/gis/locale/fr/LC_MESSAGES/django.po,sha256=Nqsu2ILMuPVFGhHo7vYdQH7lwNupJRjl1SsMmFEo_Dw,2306 -django/contrib/gis/locale/fy/LC_MESSAGES/django.mo,sha256=2kCnWU_giddm3bAHMgDy0QqNwOb9qOiEyCEaYo1WdqQ,476 -django/contrib/gis/locale/fy/LC_MESSAGES/django.po,sha256=7ncWhxC5OLhXslQYv5unWurhyyu_vRsi4bGflZ6T2oQ,1484 -django/contrib/gis/locale/ga/LC_MESSAGES/django.mo,sha256=m6Owcr-5pln54TXcZFAkYEYDjYiAkT8bGFyw4nowNHA,1420 -django/contrib/gis/locale/ga/LC_MESSAGES/django.po,sha256=I0kyTnYBPSdYr8RontzhGPShJhylVAdRLBGWRQr2E7g,1968 -django/contrib/gis/locale/gd/LC_MESSAGES/django.mo,sha256=8TAogB3fzblx48Lv6V94mOlR6MKAW6NjZOkKmAhncRY,2082 -django/contrib/gis/locale/gd/LC_MESSAGES/django.po,sha256=vBafKOhKlhMXU2Qzgbiy7GhEGy-RBdHJi5ey5sHx5_I,2259 -django/contrib/gis/locale/gl/LC_MESSAGES/django.mo,sha256=4OUuNpkYRWjKz_EoY1zDzKOK8YptrwUutQqFvSKsLUs,1421 -django/contrib/gis/locale/gl/LC_MESSAGES/django.po,sha256=s9tiYQLnv1_uzyLpi3qqV_zwJNic1AGFsUGc3FhJbMo,2006 -django/contrib/gis/locale/he/LC_MESSAGES/django.mo,sha256=CxVl9Ny_dasVLNhXxJwBOxIVdmpR6m-MuIF6V_Si9RE,2236 -django/contrib/gis/locale/he/LC_MESSAGES/django.po,sha256=XyDF1lnHjUW6rId5dW0-zBt336rkXjR8-bUOzW2nJCM,2393 -django/contrib/gis/locale/hi/LC_MESSAGES/django.mo,sha256=3nsy5mxKTPtx0EpqBNA_TJXmLmVZ4BPUZG72ZEe8OPM,1818 -django/contrib/gis/locale/hi/LC_MESSAGES/django.po,sha256=jTFG2gqqYAQct9-to0xL2kUFQu-ebR4j7RGfxn4sBAg,2372 -django/contrib/gis/locale/hr/LC_MESSAGES/django.mo,sha256=0XrRj2oriNZxNhEwTryo2zdMf-85-4X7fy7OJhB5ub4,1549 -django/contrib/gis/locale/hr/LC_MESSAGES/django.po,sha256=iijzoBoD_EJ1n-a5ys5CKnjzZzG299zPoCN-REFkeqE,2132 -django/contrib/gis/locale/hsb/LC_MESSAGES/django.mo,sha256=hA9IBuEZ6JHsTIVjGZdlvD8NcFy6v56pTy1fmA_lWwo,2045 -django/contrib/gis/locale/hsb/LC_MESSAGES/django.po,sha256=LAGSJIa6wd3Dh4IRG5DLigL-mjQzmYwn0o2RmSAdBdw,2211 -django/contrib/gis/locale/hu/LC_MESSAGES/django.mo,sha256=9P8L1-RxODT4NCMBUQnWQJaydNs9FwcAZeuoVmaQUDY,1940 -django/contrib/gis/locale/hu/LC_MESSAGES/django.po,sha256=qTC31EofFBS4HZ5SvxRKDIt2afAV4OS52_LYFnX2OB8,2261 -django/contrib/gis/locale/hy/LC_MESSAGES/django.mo,sha256=4D6em091yzO4s3U_DIdocdlvxtAbXdMt6Ig1ATxRGrQ,2535 -django/contrib/gis/locale/hy/LC_MESSAGES/django.po,sha256=0nkAba1H7qrC5JSakzJuAqsldWPG7lsjH7H8jVfG1SU,2603 -django/contrib/gis/locale/ia/LC_MESSAGES/django.mo,sha256=9MZnSXkQUIfbYB2f4XEtYo_FzuVi5OlsYcX9K_REz3c,1899 -django/contrib/gis/locale/ia/LC_MESSAGES/django.po,sha256=f7OuqSzGHQNldBHp62VIWjqP0BB0bvo8qEx9_wzH090,2116 -django/contrib/gis/locale/id/LC_MESSAGES/django.mo,sha256=FPjGhjf4wy-Wi6f3GnsBhmpBJBFnAPOw5jUPbufHISM,1938 -django/contrib/gis/locale/id/LC_MESSAGES/django.po,sha256=ap7GLVlZO6mmAs6PHgchU5xrChWF-YbwtJU7t0tqz0k,2353 -django/contrib/gis/locale/io/LC_MESSAGES/django.mo,sha256=_yUgF2fBUxVAZAPNw2ROyWly5-Bq0niGdNEzo2qbp8k,464 -django/contrib/gis/locale/io/LC_MESSAGES/django.po,sha256=fgGJ1xzliMK0MlVoV9CQn_BuuS3Kl71Kh5YEybGFS0Y,1472 -django/contrib/gis/locale/is/LC_MESSAGES/django.mo,sha256=UQb3H5F1nUxJSrADpLiYe12TgRhYKCFQE5Xy13MzEqU,1350 -django/contrib/gis/locale/is/LC_MESSAGES/django.po,sha256=8QWtgdEZR7OUVXur0mBCeEjbXTBjJmE-DOiKe55FvMo,1934 -django/contrib/gis/locale/it/LC_MESSAGES/django.mo,sha256=8VddOMr-JMs5D-J5mq-UgNnhf98uutpoJYJKTr8E224,1976 -django/contrib/gis/locale/it/LC_MESSAGES/django.po,sha256=Vp1G-GChjjTsODwABsg5LbmR6_Z-KpslwkNUipuOqk4,2365 -django/contrib/gis/locale/ja/LC_MESSAGES/django.mo,sha256=Ro8-P0647LU_963TJT1uOWTohB77YaGGci_2sMLJwEo,2096 -django/contrib/gis/locale/ja/LC_MESSAGES/django.po,sha256=shMi1KrURuWbFGc3PpSrpatfEQJlW--QTDH6HwHbtv4,2352 -django/contrib/gis/locale/ka/LC_MESSAGES/django.mo,sha256=iqWQ9j8yanPjDhwi9cNSktYgfLVnofIsdICnAg2Y_to,1991 -django/contrib/gis/locale/ka/LC_MESSAGES/django.po,sha256=tWoXkbWfNsZ2A28_JUvc1wtyVT6m7Hl9nJgfxXGqkgY,2566 -django/contrib/gis/locale/kk/LC_MESSAGES/django.mo,sha256=NtgQONp0UncUNvrh0W2R7u7Ja8H33R-a-tsQShWq-QI,1349 -django/contrib/gis/locale/kk/LC_MESSAGES/django.po,sha256=_wNvDk36C_UegH0Ex6ov8P--cKm-J7XtusXYsjVVZno,1974 -django/contrib/gis/locale/km/LC_MESSAGES/django.mo,sha256=T0aZIZ_gHqHpQyejnBeX40jdcfhrCOjgKjNm2hLrpNE,459 -django/contrib/gis/locale/km/LC_MESSAGES/django.po,sha256=7ARjFcuPQJG0OGLJu9pVfSiAwc2Q-1tT6xcLeKeom1c,1467 -django/contrib/gis/locale/kn/LC_MESSAGES/django.mo,sha256=EkJRlJJSHZJvNZJuOLpO4IIUEoyi_fpKwNWe0OGFcy4,461 -django/contrib/gis/locale/kn/LC_MESSAGES/django.po,sha256=NM3FRy48SSVsUIQc8xh0ZKAgTVAP8iK8elp7NQ6-IdE,1469 -django/contrib/gis/locale/ko/LC_MESSAGES/django.mo,sha256=3cvrvesJ_JU-XWI5oaYSAANVjwFxn3SLd3UrdRSMAfA,1939 -django/contrib/gis/locale/ko/LC_MESSAGES/django.po,sha256=Gg9s__57BxLIYJx5O0c-UJ8cAzsU3TcLuKGE7abn1rE,2349 -django/contrib/gis/locale/ky/LC_MESSAGES/django.mo,sha256=1z_LnGCxvS3_6OBr9dBxsyHrDs7mR3Fzm76sdgNGJrU,2221 -django/contrib/gis/locale/ky/LC_MESSAGES/django.po,sha256=NyWhlb3zgb0iAa6C0hOqxYxA7zaR_XgyjJHffoCIw1g,2438 -django/contrib/gis/locale/lb/LC_MESSAGES/django.mo,sha256=XAyZQUi8jDr47VpSAHp_8nQb0KvSMJHo5THojsToFdk,474 -django/contrib/gis/locale/lb/LC_MESSAGES/django.po,sha256=5rfudPpH4snSq2iVm9E81EBwM0S2vbkY2WBGhpuga1Q,1482 -django/contrib/gis/locale/lt/LC_MESSAGES/django.mo,sha256=9I8bq0gbDGv7wBe60z3QtWZ5x_NgALjCTvR6rBtPPBY,2113 -django/contrib/gis/locale/lt/LC_MESSAGES/django.po,sha256=jD2vv47dySaH1nVzzf7mZYKM5vmofhmaKXFp4GvX1Iw,2350 -django/contrib/gis/locale/lv/LC_MESSAGES/django.mo,sha256=KkVqgndzTA8WAagHB4hg65PUvQKXl_O79fb2r04foXw,2025 -django/contrib/gis/locale/lv/LC_MESSAGES/django.po,sha256=21VWQDPMF27yZ-ctKO-f0sohyvVkIaTXk9MKF-WGmbo,2253 -django/contrib/gis/locale/mk/LC_MESSAGES/django.mo,sha256=PVw73LWWNvaNd95zQbAIA7LA7JNmpf61YIoyuOca2_s,2620 -django/contrib/gis/locale/mk/LC_MESSAGES/django.po,sha256=eusHVHXHRfdw1_JyuBW7H7WPCHFR_z1NBqr79AVqAk0,2927 -django/contrib/gis/locale/ml/LC_MESSAGES/django.mo,sha256=Kl9okrE3AzTPa5WQ-IGxYVNSRo2y_VEdgDcOyJ_Je78,2049 -django/contrib/gis/locale/ml/LC_MESSAGES/django.po,sha256=PWg8atPKfOsnVxg_uro8zYO9KCE1UVhfy_zmCWG0Bdk,2603 -django/contrib/gis/locale/mn/LC_MESSAGES/django.mo,sha256=-Nn70s2On94C-jmSZwTppW2q7_W5xgMpzPXYmxZSKXs,2433 -django/contrib/gis/locale/mn/LC_MESSAGES/django.po,sha256=I0ZHocPlRYrogJtzEGVPsWWHpoVEa7e2KYP9Ystlj60,2770 -django/contrib/gis/locale/mr/LC_MESSAGES/django.mo,sha256=sO2E__g61S0p5I6aEwnoAsA3epxv7_Jn55TyF0PZCUA,468 -django/contrib/gis/locale/mr/LC_MESSAGES/django.po,sha256=McWaLXfWmYTDeeDbIOrV80gwnv07KCtNIt0OXW_v7vw,1476 -django/contrib/gis/locale/my/LC_MESSAGES/django.mo,sha256=e6G8VbCCthUjV6tV6PRCy_ZzsXyZ-1OYjbYZIEShbXI,525 -django/contrib/gis/locale/my/LC_MESSAGES/django.po,sha256=R3v1S-904f8FWSVGHe822sWrOJI6cNJIk93-K7_E_1c,1580 -django/contrib/gis/locale/nb/LC_MESSAGES/django.mo,sha256=a89qhy9BBE_S-MYlOMLaYMdnOvUEJxh8V80jYJqFEj0,1879 -django/contrib/gis/locale/nb/LC_MESSAGES/django.po,sha256=UIk8oXTFdxTn22tTtIXowTl3Nxn2qvpQO72GoQDUmaw,2166 -django/contrib/gis/locale/ne/LC_MESSAGES/django.mo,sha256=nB-Ta8w57S6hIAhAdWZjDT0Dg6JYGbAt5FofIhJT7k8,982 -django/contrib/gis/locale/ne/LC_MESSAGES/django.po,sha256=eMH6uKZZZYn-P3kmHumiO4z9M4923s9tWGhHuJ0eWuI,1825 -django/contrib/gis/locale/nl/LC_MESSAGES/django.mo,sha256=d22j68OCI1Bevtl2WgXHSQHFCiDgkPXmrFHca_uUm14,1947 -django/contrib/gis/locale/nl/LC_MESSAGES/django.po,sha256=ffytg6K7pTQoIRfxY35i1FpolJeox-fpSsG1JQzvb-0,2381 -django/contrib/gis/locale/nn/LC_MESSAGES/django.mo,sha256=32x5_V6o_BQBefFmyajOg3ssClw-DMEdvzXkY90fV3Q,1202 -django/contrib/gis/locale/nn/LC_MESSAGES/django.po,sha256=NWA3nD8ZwAZxG9EkE6TW0POJgB6HTeC4J6GOlTMD7j4,1796 -django/contrib/gis/locale/os/LC_MESSAGES/django.mo,sha256=02NpGC8WPjxmPqQkfv9Kj2JbtECdQCtgecf_Tjk1CZc,1594 -django/contrib/gis/locale/os/LC_MESSAGES/django.po,sha256=JBIsv5nJg3Wof7Xy7odCI_xKRBLN_Hlbb__kNqNW4Xw,2161 -django/contrib/gis/locale/pa/LC_MESSAGES/django.mo,sha256=JR1NxG5_h_dFE_7p6trBWWIx-QqWYIgfGomnjaCsWAA,1265 -django/contrib/gis/locale/pa/LC_MESSAGES/django.po,sha256=Ejd_8dq_M0E9XFijk0qj4oC-8_oe48GWWHXhvOrFlnY,1993 -django/contrib/gis/locale/pl/LC_MESSAGES/django.mo,sha256=BkGcSOdz9VE7OYEeFzC9OLANJsTB3pFU1Xs8-CWFgb4,2095 -django/contrib/gis/locale/pl/LC_MESSAGES/django.po,sha256=IIy2N8M_UFanmHB6Ajne9g5NQ7tJCF5JvgrzasFUJDY,2531 -django/contrib/gis/locale/pt/LC_MESSAGES/django.mo,sha256=sE5PPOHzfT8QQXuV5w0m2pnBTRhKYs_vFhk8p_A4Jg0,2036 -django/contrib/gis/locale/pt/LC_MESSAGES/django.po,sha256=TFt6Oj1NlCM3pgs2dIgFZR3S3y_g7oR7S-XRBlM4924,2443 -django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5HGIao480s3B6kXtSmdy1AYjGUZqbYuZ9Eapho_jkTk,1976 -django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po,sha256=4-2WPZT15YZPyYbH7xnBRc7A8675875kVFjM9tr1o5U,2333 -django/contrib/gis/locale/ro/LC_MESSAGES/django.mo,sha256=brEMR8zmBMK6otF_kmR2IVuwM9UImo24vwSVUdRysAY,1829 -django/contrib/gis/locale/ro/LC_MESSAGES/django.po,sha256=EDdumoPfwMHckneEl4OROll5KwYL0ljdY-yJTUkK2JA,2242 -django/contrib/gis/locale/ru/LC_MESSAGES/django.mo,sha256=Beo_YLNtenVNPIyWB-KKMlbxeK0z4DIxhLNkAE8p9Ko,2542 -django/contrib/gis/locale/ru/LC_MESSAGES/django.po,sha256=GKPf50Wm3evmbOdok022P2YZxh-6ROKgDRLyxewPy1g,2898 -django/contrib/gis/locale/sk/LC_MESSAGES/django.mo,sha256=_LWDbFebq9jEa1YYsSMOruTk0oRaU9sxPGml1YPuink,2010 -django/contrib/gis/locale/sk/LC_MESSAGES/django.po,sha256=Iz_iHKaDzNhLM5vJd3bbzsCXzKhoEGeqECZxEgBIiGc,2244 -django/contrib/gis/locale/sl/LC_MESSAGES/django.mo,sha256=9-efMT2MoEMa5-SApGWTRiyfvI6vmZzLeMg7qGAr7_A,2067 -django/contrib/gis/locale/sl/LC_MESSAGES/django.po,sha256=foZY7N5QkuAQS7nc3CdnJerCPk-lhSb1xZqU11pNGNo,2303 -django/contrib/gis/locale/sq/LC_MESSAGES/django.mo,sha256=WEq6Bdd9fM_aRhWUBpl_qTc417U9708u9sXNgyB8o1k,1708 -django/contrib/gis/locale/sq/LC_MESSAGES/django.po,sha256=mAOImw7HYWDO2VuoHU-VAp08u5DM-BUC633Lhkc3vRk,2075 -django/contrib/gis/locale/sr/LC_MESSAGES/django.mo,sha256=cQzh-8YOz0FSIE0-BkeQHiqG6Tl4ArHvSN3yMXiaoec,2454 -django/contrib/gis/locale/sr/LC_MESSAGES/django.po,sha256=PQ3FYEidoV200w8WQBFsid7ULKZyGLzCjfCVUUPKWrk,2719 -django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=SASOtA8mOnMPxh1Lr_AC0yR82SqyTiPrlD8QmvYgG58,2044 -django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po,sha256=BPkwFmsLHVN8jwjf1pqmrTXhxO0fgDzE0-C7QvaBeVg,2271 -django/contrib/gis/locale/sv/LC_MESSAGES/django.mo,sha256=XVr0uSQnEIRNJoOpgFlxvYnpF4cGDP2K2oTjqVHhmuA,1987 -django/contrib/gis/locale/sv/LC_MESSAGES/django.po,sha256=fqUAyUbjamnqbdie8Ecek0v99uo-4uUfaSvtFffz8v4,2275 -django/contrib/gis/locale/sw/LC_MESSAGES/django.mo,sha256=uBhpGHluGwYpODTE-xhdJD2e6PHleN07wLE-kjrXr_M,1426 -django/contrib/gis/locale/sw/LC_MESSAGES/django.po,sha256=nHXQQMYYXT1ec3lIBxQIDIAwLtXucX47M4Cozy08kko,1889 -django/contrib/gis/locale/ta/LC_MESSAGES/django.mo,sha256=Rboo36cGKwTebe_MiW4bOiMsRO2isB0EAyJJcoy_F6s,466 -django/contrib/gis/locale/ta/LC_MESSAGES/django.po,sha256=sLYW8_5BSVoSLWUr13BbKRe0hNJ_cBMEtmjCPBdTlAk,1474 -django/contrib/gis/locale/te/LC_MESSAGES/django.mo,sha256=xDkaSztnzQ33Oc-GxHoSuutSIwK9A5Bg3qXEdEvo4h4,824 -django/contrib/gis/locale/te/LC_MESSAGES/django.po,sha256=nYryhktJumcwtZDGZ43xBxWljvdd-cUeBrAYFZOryVg,1772 -django/contrib/gis/locale/tg/LC_MESSAGES/django.mo,sha256=6Jyeaq1ORsnE7Ceh_rrhbfslFskGe12Ar-dQl6NFyt0,611 -django/contrib/gis/locale/tg/LC_MESSAGES/django.po,sha256=9c1zPt7kz1OaRJPPLdqjQqO8MT99KtS9prUvoPa9qJk,1635 -django/contrib/gis/locale/th/LC_MESSAGES/django.mo,sha256=0kekAr7eXc_papwPAxEZ3TxHOBg6EPzdR3q4hmAxOjg,1835 -django/contrib/gis/locale/th/LC_MESSAGES/django.po,sha256=WJPdoZjLfvepGGMhfBB1EHCpxtxxfv80lRjPG9kGErM,2433 -django/contrib/gis/locale/tr/LC_MESSAGES/django.mo,sha256=_bNVyXHbuyM42-fAsL99wW7_Hwu5hF_WD7FzY-yfS8k,1961 -django/contrib/gis/locale/tr/LC_MESSAGES/django.po,sha256=W0pxShIqMePnQvn_7zcY_q4_C1PCnWwFMastDo_gHd0,2242 -django/contrib/gis/locale/tt/LC_MESSAGES/django.mo,sha256=cGVPrWCe4WquVV77CacaJwgLSnJN0oEAepTzNMD-OWk,1470 -django/contrib/gis/locale/tt/LC_MESSAGES/django.po,sha256=98yeRs-JcMGTyizOpEuQenlnWJMYTR1-rG3HGhKCykk,2072 -django/contrib/gis/locale/udm/LC_MESSAGES/django.mo,sha256=I6bfLvRfMn79DO6bVIGfYSVeZY54N6c8BNO7OyyOOsw,462 -django/contrib/gis/locale/udm/LC_MESSAGES/django.po,sha256=B1PCuPYtNOrrhu4fKKJgkqxUrcEyifS2Y3kw-iTmSIk,1470 -django/contrib/gis/locale/uk/LC_MESSAGES/django.mo,sha256=5uJgGDDQi8RTRNxbQToKE7FVLOK73w5Wgmf6zCa66Uk,2455 -django/contrib/gis/locale/uk/LC_MESSAGES/django.po,sha256=fsxwSb93uD59ms8jdO84qx8C5rKy74TDcH12yaKs8mY,2873 -django/contrib/gis/locale/ur/LC_MESSAGES/django.mo,sha256=tB5tz7EscuE9IksBofNuyFjk89-h5X7sJhCKlIho5SY,1410 -django/contrib/gis/locale/ur/LC_MESSAGES/django.po,sha256=16m0t10Syv76UcI7y-EXfQHETePmrWX4QMVfyeuX1fQ,2007 -django/contrib/gis/locale/vi/LC_MESSAGES/django.mo,sha256=NT5T0FRCC2XINdtaCFCVUxb5VRv8ta62nE8wwSHGTrc,1384 -django/contrib/gis/locale/vi/LC_MESSAGES/django.po,sha256=y77GtqH5bv1wR78xN5JLHusmQzoENTH9kLf9Y3xz5xk,1957 -django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=g_8mpfbj-6HJ-g1PrFU2qTTfvCbztNcjDym_SegaI8Q,1812 -django/contrib/gis/locale/zh_Hans/LC_MESSAGES/django.po,sha256=MBJpb5IJxUaI2k0Hq8Q1GLXHJPFAA-S1w6NRjsmrpBw,2286 -django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=jEgcPJy_WzZa65-5rXb64tN_ehUku_yIj2d7tXwweP8,1975 -django/contrib/gis/locale/zh_Hant/LC_MESSAGES/django.po,sha256=iVnQKpbsQ4nJi65PHAO8uGRO6jhHWs22gTOUKPpb64s,2283 -django/contrib/gis/management/commands/__pycache__/inspectdb.cpython-38.pyc,, -django/contrib/gis/management/commands/__pycache__/ogrinspect.cpython-38.pyc,, -django/contrib/gis/management/commands/inspectdb.py,sha256=tpyZFocjeeRN6hE1yXfp1CANzyaQYqQpI8RLhKtGzBA,717 -django/contrib/gis/management/commands/ogrinspect.py,sha256=s0kvzGS836oq424dQisZZ7cc2lgOPf1lClMBO1KvytU,5713 -django/contrib/gis/measure.py,sha256=lRedUttyyugxiinBZpRUJuAz2YUYRciieujzzN0G6as,12010 -django/contrib/gis/ptr.py,sha256=RK-5GCUUaQtBuDD3lAoraS7G05fzYhR5p0acKrzpQVE,1289 -django/contrib/gis/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/gis/serializers/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/serializers/__pycache__/geojson.cpython-38.pyc,, -django/contrib/gis/serializers/geojson.py,sha256=IWR-98IYQXvJSJ4y3d09kh3ZxuFZuEKg-T9eAig5GEA,2710 -django/contrib/gis/shortcuts.py,sha256=fHf3HYP6MP8GeuBW6G3y6d30Mjxa6IL2xtmblDjS8k4,1027 -django/contrib/gis/sitemaps/__init__.py,sha256=eVHUxfzw1VQn6bqH3D8bE471s8bNJSB3phuAI-zg9gA,138 -django/contrib/gis/sitemaps/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/sitemaps/__pycache__/kml.cpython-38.pyc,, -django/contrib/gis/sitemaps/__pycache__/views.cpython-38.pyc,, -django/contrib/gis/sitemaps/kml.py,sha256=yg-soUBEFDRSmf7iIPzdOFEi3lvcQNKp_Jisk-cwiR4,2406 -django/contrib/gis/sitemaps/views.py,sha256=vJt4Oya4IL6BHE7x8Z_FkQn1Do6caVRL8d5hE2XKVCo,2306 -django/contrib/gis/static/gis/css/ol3.css,sha256=pJADzfx4_NL2C1onFpU-muconAA5NThN4sEqSNyY_So,657 -django/contrib/gis/static/gis/img/draw_line_off.svg,sha256=6XW83xsR5-Guh27UH3y5UFn9y9FB9T_Zc4kSPA-xSOI,918 -django/contrib/gis/static/gis/img/draw_line_on.svg,sha256=Hx-pXu4ped11esG6YjXP1GfZC5q84zrFQDPUo1C7FGA,892 -django/contrib/gis/static/gis/img/draw_point_off.svg,sha256=PICrywZPwuBkaQAKxR9nBJ0AlfTzPHtVn_up_rSiHH4,803 -django/contrib/gis/static/gis/img/draw_point_on.svg,sha256=raGk3oc8w87rJfLdtZ4nIXJyU3OChCcTd4oH-XAMmmM,803 -django/contrib/gis/static/gis/img/draw_polygon_off.svg,sha256=gnVmjeZE2jOvjfyx7mhazMDBXJ6KtSDrV9f0nSzkv3A,981 -django/contrib/gis/static/gis/img/draw_polygon_on.svg,sha256=ybJ9Ww7-bsojKQJtjErLd2cCOgrIzyqgIR9QNhH_ZfA,982 -django/contrib/gis/static/gis/js/OLMapWidget.js,sha256=S26weu4y6DMJn_ez8ZSv9LIu_A0I0JlAM50B5WAaOXE,8820 -django/contrib/gis/templates/gis/admin/openlayers.html,sha256=N5HJ2DCNatDW1TwCU0o32VSae2KkcltBSVQYJaYRnpE,1425 -django/contrib/gis/templates/gis/admin/openlayers.js,sha256=KoT3VUMAez9-5QoT5U6OJXzt3MLxlTrJMMwINjQ_k7M,8975 -django/contrib/gis/templates/gis/admin/osm.html,sha256=yvYyZPmgP64r1JT3eZCDun5ENJaaN3d3wbTdCxIOvSo,111 -django/contrib/gis/templates/gis/admin/osm.js,sha256=0wFRJXKZ2plp7tb0F9fgkMzp4NrKZXcHiMkKDJeHMRw,128 -django/contrib/gis/templates/gis/kml/base.kml,sha256=VYnJaGgFVHRzDjiFjbcgI-jxlUos4B4Z1hx_JeI2ZXU,219 -django/contrib/gis/templates/gis/kml/placemarks.kml,sha256=TEC81sDL9RK2FVeH0aFJTwIzs6_YWcMeGnHkACJV1Uc,360 -django/contrib/gis/templates/gis/openlayers-osm.html,sha256=TeiUqCjt73W8Hgrp_6zAtk_ZMBxskNN6KHSmnJ1-GD4,378 -django/contrib/gis/templates/gis/openlayers.html,sha256=gp49iEA82IgDWPHRrAYyCqC0pvInPxTw5674RuxPM_M,1897 -django/contrib/gis/utils/__init__.py,sha256=OmngSNhywEjrNKGXysMlq_iFYvx7ycDWojpCqF6JYLo,579 -django/contrib/gis/utils/__pycache__/__init__.cpython-38.pyc,, -django/contrib/gis/utils/__pycache__/layermapping.cpython-38.pyc,, -django/contrib/gis/utils/__pycache__/ogrinfo.cpython-38.pyc,, -django/contrib/gis/utils/__pycache__/ogrinspect.cpython-38.pyc,, -django/contrib/gis/utils/__pycache__/srs.cpython-38.pyc,, -django/contrib/gis/utils/layermapping.py,sha256=CY8jH56W7y2NXB2ksJBQBk8nmijm52yosw5VAW0pngA,27630 -django/contrib/gis/utils/ogrinfo.py,sha256=VmbxQ5Ri4zjtTxNymuxJp3t3cAntUC83YBMp9PuMMSU,1934 -django/contrib/gis/utils/ogrinspect.py,sha256=4lZA5_rbdo-IG7DnqddQyT_2JI_AXhuW9nduBwMWrQY,8924 -django/contrib/gis/utils/srs.py,sha256=5D5lPZwFYgZiVaKD7eCkl9vj-pGRB11HEgeNlxUAjfo,2991 -django/contrib/gis/views.py,sha256=zZfnPHc8wxomPp9NcpOfISLhwBKkVG-EtRTm90d2X_Q,700 -django/contrib/humanize/__init__.py,sha256=88gkwJxqbRpmigRG0Gu3GNQkXGtTNpica4nf3go-_cI,67 -django/contrib/humanize/__pycache__/__init__.cpython-38.pyc,, -django/contrib/humanize/__pycache__/apps.cpython-38.pyc,, -django/contrib/humanize/apps.py,sha256=ODfDrSH8m3y3xYlyIIwm7DZmrNcoYKG2K8l5mU64V7g,194 -django/contrib/humanize/locale/af/LC_MESSAGES/django.mo,sha256=bNLjjeZ3H-KD_pm-wa1_5eLCDOmG2FXgDHVOg5vgL7o,5097 -django/contrib/humanize/locale/af/LC_MESSAGES/django.po,sha256=p3OduzjtTGkwlgDJhPgSm9aXI2sWzORspsPf7_RnWjs,8923 -django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo,sha256=-YDFm-RPAWqjWquABE0D-Y4WfELU2RTEjWGiHVFq2Uw,9580 -django/contrib/humanize/locale/ar/LC_MESSAGES/django.po,sha256=_LmxY73PR0hjoK6cqibEdfrczCtnqYGnNo8-v0rZrF4,15386 -django/contrib/humanize/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=NwCrL5FX_xdxYdqkW_S8tmU8ktDM8LqimmUvkt8me74,9155 -django/contrib/humanize/locale/ar_DZ/LC_MESSAGES/django.po,sha256=tt0AxhohGX79OQ_lX1S5soIo-iSCC07SdAhPpy0O7Q4,15234 -django/contrib/humanize/locale/ast/LC_MESSAGES/django.mo,sha256=WvBk8V6g1vgzGqZ_rR-4p7SMh43PFnDnRhIS9HSwdoQ,3468 -django/contrib/humanize/locale/ast/LC_MESSAGES/django.po,sha256=S9lcUf2y5wR8Ufa-Rlz-M73Z3bMo7zji_63cXwtDK2I,5762 -django/contrib/humanize/locale/az/LC_MESSAGES/django.mo,sha256=G9dyDa8T8wwEJDVw5rrajGLQo2gfs7XqsW6LbURELvA,5286 -django/contrib/humanize/locale/az/LC_MESSAGES/django.po,sha256=G0_M87HUGSH280uvUzni0qlCGviv2uwtyr6gne5SszA,9139 -django/contrib/humanize/locale/be/LC_MESSAGES/django.mo,sha256=qpbjGVSQnPESRACvTjzc3p5REpxyRGv7qgxQCigrNBY,8409 -django/contrib/humanize/locale/be/LC_MESSAGES/django.po,sha256=pyudF4so8SQG-gfmSNcNdG5BQA27Q0p_nQF1tYMuw88,13148 -django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo,sha256=1mRaFPsm5ITFyfdFdqdeY-_Om2OYKua5YWSEP192WR8,4645 -django/contrib/humanize/locale/bg/LC_MESSAGES/django.po,sha256=kTyRblfWlBUMxd_czXTOe-39CcX68X6e4DTmYm3V2gc,6684 -django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo,sha256=jbL4ucZxxtexI10jgldtgnDie3I23XR3u-PrMMMqP6U,4026 -django/contrib/humanize/locale/bn/LC_MESSAGES/django.po,sha256=0l4yyy7q3OIWyFk_PW0y883Vw2Pmu48UcnLM9OBxB68,6545 -django/contrib/humanize/locale/br/LC_MESSAGES/django.mo,sha256=V_tPVAyQzVdDwWPNlVGWmlVJjmVZfbh35alkwsFlCNU,5850 -django/contrib/humanize/locale/br/LC_MESSAGES/django.po,sha256=BcAqEV2JpF0hiCQDttIMblp9xbB7zoHsmj7fJFV632k,12245 -django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo,sha256=1-RNRHPgZR_9UyiEn9Djp4mggP3fywKZho45E1nGMjM,1416 -django/contrib/humanize/locale/bs/LC_MESSAGES/django.po,sha256=M017Iu3hyXmINZkhCmn2he-FB8rQ7rXN0KRkWgrp7LI,5498 -django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo,sha256=I0A0wyJlSfGw34scNPoj9itqU8iz0twcyxUS15u5nJE,5230 -django/contrib/humanize/locale/ca/LC_MESSAGES/django.po,sha256=t-wxHJ0ZrXrc3bAjavz40eSu5HTJqJjz5wvfdiydJ6k,9153 -django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo,sha256=PJeNGbrXH0yMbwVxv9rpVajMGXDFcTyNCSzJLTQvimA,6805 -django/contrib/humanize/locale/cs/LC_MESSAGES/django.po,sha256=tm42tsSZYzY-a_7szHB9yuJYUffQXz4nfEgvEY9vY9w,11579 -django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo,sha256=VjJiaUUhvX9tjOEe6x2Bdp7scvZirVcUsA4-iE2-ElQ,5241 -django/contrib/humanize/locale/cy/LC_MESSAGES/django.po,sha256=sylmceSq-NPvtr_FjklQXoBAfueKu7hrjEpMAsVbQC4,7813 -django/contrib/humanize/locale/da/LC_MESSAGES/django.mo,sha256=V8u7uq8GNU7Gk3urruDnM2iR6fiio9RvLB8ou4e3EWY,5298 -django/contrib/humanize/locale/da/LC_MESSAGES/django.po,sha256=AnAvSgks2ph0MS2ZJlYKddKwQTbduEIpHK0kzsNphWM,9151 -django/contrib/humanize/locale/de/LC_MESSAGES/django.mo,sha256=7HZDGVn4FuGS2nNqHLg1RrnmQLB2Ansbri0ysHq-GfM,5418 -django/contrib/humanize/locale/de/LC_MESSAGES/django.po,sha256=wNFP1wO9hDhgyntigfVcHr7ZGao8a2PPgU24j4nl_O8,9184 -django/contrib/humanize/locale/dsb/LC_MESSAGES/django.mo,sha256=w2rgnclJnn1QQjqufly0NjUlP6kS6N8dcGwhbeBLq-w,7036 -django/contrib/humanize/locale/dsb/LC_MESSAGES/django.po,sha256=AAbtZ32HrIeB1SDn3xenPU8pFUL0Fy6D9eYlObt6EdU,11690 -django/contrib/humanize/locale/el/LC_MESSAGES/django.mo,sha256=o-yjhpzyGRbbdMzwUcG_dBP_FMEMZevm7Wz1p4Wd-pg,6740 -django/contrib/humanize/locale/el/LC_MESSAGES/django.po,sha256=UbD5QEw_-JNoNETaOyDfSReirkRsHnlHeSsZF5hOSkI,10658 -django/contrib/humanize/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/humanize/locale/en/LC_MESSAGES/django.po,sha256=JJny3qazVIDtswuStyS6ZMV0UR0FUPWDqXVZ8PQRuU4,10689 -django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/humanize/locale/en_AU/LC_MESSAGES/django.po,sha256=dVOlMtk3-d-KrNLM5Rji-Xrk6Y_n801ofjGQvxSu67M,4742 -django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo,sha256=mkx192XQM3tt1xYG8EOacMfa-BvgzYCbSsJQsWZGeAo,3461 -django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po,sha256=MArKzXxY1104jxaq3kvDZs2WzOGYxicfJxFKsLzFavw,5801 -django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo,sha256=b47HphXBi0cax_reCZiD3xIedavRHcH2iRG8pcwqb54,5386 -django/contrib/humanize/locale/eo/LC_MESSAGES/django.po,sha256=oN1YqOZgxKY3L1a1liluhM6X5YA5bawg91mHF_Vfqx8,9095 -django/contrib/humanize/locale/es/LC_MESSAGES/django.mo,sha256=SD1PQS13JgpM7jnvvtKVQYsV6m7IgYdw7cfQ_VW8nag,5440 -django/contrib/humanize/locale/es/LC_MESSAGES/django.po,sha256=MBPPR_43glxHTmNPHy7sdKp5UjeHqe7_GeXkxOy3QGo,9428 -django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo,sha256=w3GNYZ0Cg9u7QTGWWnTPNI5JNS3PQkk0_XOlReDzLa4,5461 -django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po,sha256=zk18690pQF6URZmvOISW6OsoRQNiiU5lt_q07929Rko,9360 -django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.mo,sha256=2GhQNtNOjK5mTov5RvnuJFTYbdoGBkDGLxzvJ8Vsrfs,4203 -django/contrib/humanize/locale/es_CO/LC_MESSAGES/django.po,sha256=JBf2fHO8jWi6dFdgZhstKXwyot_qT3iJBixQZc3l330,6326 -django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo,sha256=82DL2ztdq10X5RIceshK1nO99DW5628ZIjaN8Xzp9ok,3939 -django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po,sha256=-O7AQluA5Kce9-bd04GN4tfQKoCxb8Sa7EZR6TZBCdM,6032 -django/contrib/humanize/locale/es_VE/LC_MESSAGES/django.mo,sha256=cJECzKpD99RRIpVFKQW65x0Nvpzrm5Fuhfi-nxOWmkM,942 -django/contrib/humanize/locale/es_VE/LC_MESSAGES/django.po,sha256=tDdYtvRILgeDMgZqKHSebe7Z5ZgI1bZhDdvGVtj_anM,4832 -django/contrib/humanize/locale/et/LC_MESSAGES/django.mo,sha256=qid7q1XcaF4Yso9EMvjjYHa4GpS2gEABZsjM6K7kvaw,5409 -django/contrib/humanize/locale/et/LC_MESSAGES/django.po,sha256=NwshOQjWccRg8Mc7l6W3am0BxEVM8xHSzRYtCeThWe8,9352 -django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo,sha256=w2TlBudWWTI1M7RYCl_n2UY7U1CBzxIuwXl-7DCVl8o,5287 -django/contrib/humanize/locale/eu/LC_MESSAGES/django.po,sha256=77QrRqIsMuu-6HxHvaifKsPA9OVZR7686WFp26dQFMg,9146 -django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo,sha256=-EfCvMVkX5VqYlXxiX8fLQntzZx8pBjmjtjvIdsaPvU,5808 -django/contrib/humanize/locale/fa/LC_MESSAGES/django.po,sha256=Xxv-FVTrSjbx0JB33F6O1wBzodwkHJpmTEiNssNTeYQ,9775 -django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo,sha256=-ylgNKUDDMca8U6xAGPbVzKFi-iViLtZJIeN6ngI6xc,4616 -django/contrib/humanize/locale/fi/LC_MESSAGES/django.po,sha256=DLJd5OJR97gYPCcdSnFHDBXdCmmiPbRwSv1PlaoEWtU,9070 -django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo,sha256=M7Qw0-T3752Scd4KXukhQHriG_2hgC8zYnGZGwBo_r8,5461 -django/contrib/humanize/locale/fr/LC_MESSAGES/django.po,sha256=xyn-d8-_ozUhfr25hpuUU5IQhZvtNI0JVDoUYoRzO88,9311 -django/contrib/humanize/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/humanize/locale/fy/LC_MESSAGES/django.po,sha256=pPvcGgBWiZwQ5yh30OlYs-YZUd_XsFro71T9wErVv0M,4732 -django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo,sha256=AOEiBNOak_KQkBeGyUpTNO12zyg3CiK66h4kMoS15_0,5112 -django/contrib/humanize/locale/ga/LC_MESSAGES/django.po,sha256=jTXihbd-ysAUs0TEKkOBmXJJj69V0cFNOHM6VbcPCWw,11639 -django/contrib/humanize/locale/gd/LC_MESSAGES/django.mo,sha256=XNSpJUu4DxtlXryfUVeBOrvl2-WRyj2nKjips_qGDOg,7232 -django/contrib/humanize/locale/gd/LC_MESSAGES/django.po,sha256=I7s86NJDzeMsCGgXja--fTZNFm9bM7Cd8M1bstxabSY,11874 -django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo,sha256=ChoVHsJ_bVIaHtHxhxuUK99Zu1tvRu0iY5vhtB1LDMg,3474 -django/contrib/humanize/locale/gl/LC_MESSAGES/django.po,sha256=U5D505aBKEdg80BGWddcwWuzmYdoNHx1WEPzVHQfbTE,5903 -django/contrib/humanize/locale/he/LC_MESSAGES/django.mo,sha256=zV7tqLeq2al9nSDKcTGp7cDD2pEuHD-J_34roqIYvZc,7857 -django/contrib/humanize/locale/he/LC_MESSAGES/django.po,sha256=gvUe-8PJc6dn-6lLpEi_PCDgITgJ6UzZls9cUHSA4Ss,12605 -django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo,sha256=qrzm-6vXIUsxA7nOxa-210-6iO-3BPBj67vKfhTOPrY,4131 -django/contrib/humanize/locale/hi/LC_MESSAGES/django.po,sha256=BrypbKaQGOyY_Gl1-aHXiBVlRqrbSjGfZ2OK8omj_9M,6527 -django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo,sha256=29XTvFJHex31hbu2qsOfl5kOusz-zls9eqlxtvw_H0s,1274 -django/contrib/humanize/locale/hr/LC_MESSAGES/django.po,sha256=OuEH4fJE6Fk-s0BMqoxxdlUAtndvvKK7N8Iy-9BP3qA,5424 -django/contrib/humanize/locale/hsb/LC_MESSAGES/django.mo,sha256=4ZQDrpkEyLSRtVHEbP31ejNrR6y-LSNDfW1Hhi7VczI,7146 -django/contrib/humanize/locale/hsb/LC_MESSAGES/django.po,sha256=GtSTgK-cKHMYeOYFvHtcUtUnLyWPP05F0ZM3tEYfshs,11800 -django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo,sha256=8tEqiZHEc6YmfWjf7hO0Fb3Xd-HSleKaR1gT_XFTQ8g,5307 -django/contrib/humanize/locale/hu/LC_MESSAGES/django.po,sha256=KDVYBAGSuMrtwqO98-oGOOAp7Unfm7ode1sv8lfe81c,9124 -django/contrib/humanize/locale/hy/LC_MESSAGES/django.mo,sha256=C1yx1DrYTrZ7WkOzZ5hvunphWABvGX-DqXbChNQ5_yg,1488 -django/contrib/humanize/locale/hy/LC_MESSAGES/django.po,sha256=MGbuYylBt1C5hvSlktydD4oMLZ1Sjzj7DL_nl7uluTg,7823 -django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo,sha256=d0m-FddFnKp08fQYQSC9Wr6M4THVU7ibt3zkIpx_Y_A,4167 -django/contrib/humanize/locale/ia/LC_MESSAGES/django.po,sha256=qX6fAZyn54hmtTU62oJcHF8p4QcYnoO2ZNczVjvjOeE,6067 -django/contrib/humanize/locale/id/LC_MESSAGES/django.mo,sha256=Wb_pFDfiAow4QUsbBiqvRYt49T6cBVFTMTB_F2QUbWI,4653 -django/contrib/humanize/locale/id/LC_MESSAGES/django.po,sha256=sNc4OeIE9wvxxOQlFC9xNawJkLxa2gPUVlaKGljovOw,8116 -django/contrib/humanize/locale/io/LC_MESSAGES/django.mo,sha256=nMu5JhIy8Fjie0g5bT8-h42YElCiS00b4h8ej_Ie-w0,464 -django/contrib/humanize/locale/io/LC_MESSAGES/django.po,sha256=RUs8JkpT0toKOLwdv1oCbcBP298EOk02dkdNSJiC-_A,4720 -django/contrib/humanize/locale/is/LC_MESSAGES/django.mo,sha256=D6ElUYj8rODRsZwlJlH0QyBSM44sVmuBCNoEkwPVxko,3805 -django/contrib/humanize/locale/is/LC_MESSAGES/django.po,sha256=1VddvtkhsK_5wmpYIqEFqFOo-NxIBnL9wwW74Tw9pbw,8863 -django/contrib/humanize/locale/it/LC_MESSAGES/django.mo,sha256=nOn-bSN3OVnqLwTlUfbb_iHLzwWt9hsR2GVHh4GZJZE,5940 -django/contrib/humanize/locale/it/LC_MESSAGES/django.po,sha256=r7sg7QtNFPzrENz5kj1wdktqdqMluA_RRtM8TKwe7PQ,10046 -django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo,sha256=kYDryScxMRi2u2iOmpXc2dMytZ9_9DQMU3C3xD2REDE,4799 -django/contrib/humanize/locale/ja/LC_MESSAGES/django.po,sha256=6-W89FFg7x_JxJjACQhb4prK2Y7i1vlzm_nnIkgpNGw,8141 -django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo,sha256=UeUbonYTkv1d2ljC0Qj8ZHw-59zHu83fuMvnME9Fkmw,4878 -django/contrib/humanize/locale/ka/LC_MESSAGES/django.po,sha256=-eAMexwjm8nSB4ARJU3f811UZnuatHKIFf8FevpJEpo,9875 -django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo,sha256=jujbUM0jOpt3Mw8zN4LSIIkxCJ0ihk_24vR0bXoux78,2113 -django/contrib/humanize/locale/kk/LC_MESSAGES/django.po,sha256=hjZg_NRE9xMA5uEa2mVSv1Hr4rv8inG9es1Yq7uy9Zc,8283 -django/contrib/humanize/locale/km/LC_MESSAGES/django.mo,sha256=mfXs9p8VokORs6JqIfaSSnQshZEhS90rRFhOIHjW7CI,459 -django/contrib/humanize/locale/km/LC_MESSAGES/django.po,sha256=JQBEHtcy-hrV_GVWIjvUJyOf3dZ5jUzzN8DUTAbHKUg,4351 -django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo,sha256=Oq3DIPjgCqkn8VZMb6ael7T8fQ7LnWobPPAZKQSFHl4,461 -django/contrib/humanize/locale/kn/LC_MESSAGES/django.po,sha256=yrXx6TInsxjnyJfhl8sXTLmYedd2jaAku9L_38CKR5A,4353 -django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo,sha256=hDb7IOB8PRflKkZ81yQbgHtvN4TO35o5kWTK3WpiL4A,4817 -django/contrib/humanize/locale/ko/LC_MESSAGES/django.po,sha256=dZpSVF3l5wGTwKOXn0looag7Q23jyLGlzs083kpnqFc,8217 -django/contrib/humanize/locale/ky/LC_MESSAGES/django.mo,sha256=Az1jPnIXkf3NWnrfHUaptfRChqcgY5IzqO07fjBfswo,5039 -django/contrib/humanize/locale/ky/LC_MESSAGES/django.po,sha256=RZRDS9Fyd7wT9EYkGHdSipsYdXZB3FzbOPgbMrzBPHo,8297 -django/contrib/humanize/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/humanize/locale/lb/LC_MESSAGES/django.po,sha256=_y0QFS5Kzx6uhwOnzmoHtCrbufMrhaTLsHD0LfMqtcM,4730 -django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo,sha256=O0C-tPhxWNW5J4tCMlB7c7shVjNO6dmTURtIpTVO9uc,7333 -django/contrib/humanize/locale/lt/LC_MESSAGES/django.po,sha256=M5LlRxC1KWh1-3fwS93UqTijFuyRENmQJXfpxySSKik,12086 -django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo,sha256=-XzcL0rlKmGkt28ukVIdwQZobR7RMmsOSstKH9eezuQ,6211 -django/contrib/humanize/locale/lv/LC_MESSAGES/django.po,sha256=fJOCQcPLCw1g-q8g4UNWR3MYFtBWSNkeOObjCMdWUp4,10572 -django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo,sha256=htUgd6rcaeRPDf6UrEb18onz-Ayltw9LTvWRgEkXm08,4761 -django/contrib/humanize/locale/mk/LC_MESSAGES/django.po,sha256=Wl9Rt8j8WA_0jyxKCswIovSiCQD-ZWFYXbhFsCUKIWo,6665 -django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo,sha256=5As-FXkEJIYetmV9dMtzLtsRPTOm1oUgyx-oeTH_guY,4655 -django/contrib/humanize/locale/ml/LC_MESSAGES/django.po,sha256=I9_Ln0C1nSj188_Zdq9Vy6lC8aLzg_YdNc5gy9hNGjE,10065 -django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo,sha256=gi-b-GRPhg2s2O9wP2ENx4bVlgHBo0mSqoi58d_QpCw,6020 -django/contrib/humanize/locale/mn/LC_MESSAGES/django.po,sha256=0zV7fYPu6xs_DVOCUQ6li36JWOnpc-RQa0HXwo7FrWc,9797 -django/contrib/humanize/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/humanize/locale/mr/LC_MESSAGES/django.po,sha256=M44sYiBJ7woVZZlDO8rPDQmS_Lz6pDTCajdheyxtdaI,4724 -django/contrib/humanize/locale/ms/LC_MESSAGES/django.mo,sha256=xSHIddCOU0bnfiyzQLaDaHAs1E4CaBlkyeXdLhJo1A8,842 -django/contrib/humanize/locale/ms/LC_MESSAGES/django.po,sha256=YhBKpxsTw9BleyaDIoDJAdwDleBFQdo1LckqLRmN8x4,7127 -django/contrib/humanize/locale/my/LC_MESSAGES/django.mo,sha256=55CWHz34sy9k6TfOeVI9GYvE9GRa3pjSRE6DSPk9uQ8,3479 -django/contrib/humanize/locale/my/LC_MESSAGES/django.po,sha256=jCiDhSqARfqKcMLEHJd-Xe6zo3Uc9QpiCh3BbAAA5UE,5433 -django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo,sha256=ZQ8RSlS3DXBHmpjZrZza9FPSxb1vDBN87g87dRbGMkQ,5317 -django/contrib/humanize/locale/nb/LC_MESSAGES/django.po,sha256=fpfJStyZSHz0A6fVoRSOs_NKcUGo9fFKmXme4yll62s,9134 -django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo,sha256=YFT2D-yEkUdJBO2GfuUowau1OZQA5mS86CZvMzH38Rk,3590 -django/contrib/humanize/locale/ne/LC_MESSAGES/django.po,sha256=SN7yH65hthOHohnyEmQUjXusRTDRjxWJG_kuv5g2Enk,9038 -django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo,sha256=xSGou2yFmVuiMH3C1IefwHBSys0YI_qW8ZQ9rwLdlPQ,5262 -django/contrib/humanize/locale/nl/LC_MESSAGES/django.po,sha256=s7LbdXpSQxkqSr666oTwTNlfdrJpLeYGoCe1xlAkGH8,9217 -django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo,sha256=_Qbyf366ApSCU09Er6CvEf5WrA8s6ZzsyZXs44BoT10,3482 -django/contrib/humanize/locale/nn/LC_MESSAGES/django.po,sha256=qkEeQKQ8XwPKtTv2Y8RscAnE4QarinOze3Y3BTIEMCk,5818 -django/contrib/humanize/locale/os/LC_MESSAGES/django.mo,sha256=BwS3Mj7z_Fg5s7Qm-bGLVhzYLZ8nPgXoB0gXLnrMGWc,3902 -django/contrib/humanize/locale/os/LC_MESSAGES/django.po,sha256=CGrxyL5l-5HexruOc7QDyRbum7piADf-nY8zjDP9wVM,6212 -django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo,sha256=TH1GkAhaVVLk2jrcqAmdxZprWyikAX6qMP0eIlr2tWM,1569 -django/contrib/humanize/locale/pa/LC_MESSAGES/django.po,sha256=_7oP0Hn-IU7IPLv_Qxg_wstLEdhgWNBBTCWYwSycMb0,5200 -django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo,sha256=UT-bQF-nGA9XBIuitXuld4JKrJKRct_HAbmHdPOE0eg,6977 -django/contrib/humanize/locale/pl/LC_MESSAGES/django.po,sha256=hgqkd9mPgYmacnv0y2RwMn5svKQO4BCSvh-0zuG2yeQ,11914 -django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo,sha256=El9Sdr3kXS-yTol_sCg1dquxf0ThDdWyrWGjjim9Dj4,5408 -django/contrib/humanize/locale/pt/LC_MESSAGES/django.po,sha256=XudOc67ybF_fminrTR2XOCKEKwqB5FX14pl3clCNXGE,9281 -django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo,sha256=5GqZStkWlU0gGvtk_ufR3ZdLRqLEkSF6KJtbTuJb3pc,5427 -django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po,sha256=Hz2kgq9Nv4jjGCyL16iE9ctJElxcLoIracR7DuVY-BE,9339 -django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo,sha256=vP6o72bsgKPsbKGwH0PU8Xyz9BnQ_sPWT3EANLT2wRk,6188 -django/contrib/humanize/locale/ro/LC_MESSAGES/django.po,sha256=JZiW6Y9P5JdQe4vgCvcFg35kFa8bSX0lU_2zdeudQP0,10575 -django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo,sha256=tkKePMXIA1h_TXxXmB2m-QbelTteNKEc5-SEzs7u6FM,8569 -django/contrib/humanize/locale/ru/LC_MESSAGES/django.po,sha256=fXkT7XpiU2_wmnR1__QCxIdndI2M3ssNus8rMM-TSOw,13609 -django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo,sha256=uUeDN0iYDq_3vT3NcTOTpKCGcv2ner5WtkIk6GVIsu0,6931 -django/contrib/humanize/locale/sk/LC_MESSAGES/django.po,sha256=cwmpA5EbD4ZE8aK0I1enRE_4RVbtfp1HQy0g1n_IYAE,11708 -django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo,sha256=f_07etc_G4OdYiUBKPkPqKm2iINqXoNsHUi3alUBgeo,5430 -django/contrib/humanize/locale/sl/LC_MESSAGES/django.po,sha256=mleF0fvn0oEfszhGLoaQkWofTwZJurKrJlIH8o-6kAI,8166 -django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo,sha256=1XXRe0nurGUUxI7r7gbSIuluRuza7VOeNdkIVX3LIFU,5280 -django/contrib/humanize/locale/sq/LC_MESSAGES/django.po,sha256=BS-5o3aG8Im9dWTkx4E_IbbeTRFcjjohinz1823ZepI,9127 -django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo,sha256=t_8Xa16yckJ6J0UOW1576TDMrjCCi1oZOpCZKKU7Uco,7205 -django/contrib/humanize/locale/sr/LC_MESSAGES/django.po,sha256=oP2901XyuUl0yaE6I-ggMzDcLoudU0YLcxB4DcFqSKU,11420 -django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=PaGxGtTZSzguwipvTdOhO7bvM8WlzCWb1RCEaIupRUQ,562 -django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po,sha256=FrPnMu6xX0NypoRYRAOBhdICGSv8geuHXQKKn3Gd9ck,5185 -django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo,sha256=9BCahKoSjzfgXKCkubKvfyXAcrGAzaHvTtp-gSZzL84,5359 -django/contrib/humanize/locale/sv/LC_MESSAGES/django.po,sha256=-Agt-sWKqksZ_DCK1lRm4wzMnen4X28Gg1-hVfzI9FY,9224 -django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo,sha256=cxjSUqegq1JX08xIAUgqq9ByP-HuqaXuxWM8Y2gHdB4,4146 -django/contrib/humanize/locale/sw/LC_MESSAGES/django.po,sha256=bPYrLJ2yY_lZ3y1K-RguNi-qrxq2r-GLlsz1gZcm2A8,6031 -django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo,sha256=1X2vH0iZOwM0uYX9BccJUXqK-rOuhcu5isRzMpnjh2o,466 -django/contrib/humanize/locale/ta/LC_MESSAGES/django.po,sha256=8x1lMzq2KOJveX92ADSuqNmXGIEYf7fZ1JfIJPysS04,4722 -django/contrib/humanize/locale/te/LC_MESSAGES/django.mo,sha256=iKd4dW9tan8xPxgaSoenIGp1qQpvSHHXUw45Tj2ATKQ,1327 -django/contrib/humanize/locale/te/LC_MESSAGES/django.po,sha256=FQdjWKMsiv-qehYZ4AtN9iKRf8Rifzcm5TZzMkQVfQI,5103 -django/contrib/humanize/locale/tg/LC_MESSAGES/django.mo,sha256=1Fiqat0CZSyExRXRjRCBS0AFzwy0q1Iba-2RVnrXoZQ,1580 -django/contrib/humanize/locale/tg/LC_MESSAGES/django.po,sha256=j2iczgQDbqzpthKAAlMt1Jk7gprYLqZ1Ya0ASr2SgD0,7852 -django/contrib/humanize/locale/th/LC_MESSAGES/django.mo,sha256=jT7wGhYWP9HHwOvtr2rNPStiOgZW-rGMcO36w1U8Y4c,3709 -django/contrib/humanize/locale/th/LC_MESSAGES/django.po,sha256=ZO3_wU7z0VASS5E8RSLEtmTveMDjJ0O8QTynb2-jjt0,8318 -django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo,sha256=Z7-3YuSHL0_5sVzsUglegY-jD9uQvw3nAzf2LVomTzU,5263 -django/contrib/humanize/locale/tr/LC_MESSAGES/django.po,sha256=aNI_MjfKWeb4UmukfkYWs1ZXj8JabBYG3WKkADGyOK8,9160 -django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo,sha256=z8VgtMhlfyDo7bERDfrDmcYV5aqOeBY7LDgqa5DRxDM,3243 -django/contrib/humanize/locale/tt/LC_MESSAGES/django.po,sha256=j_tRbg1hzLBFAmPQt0HoN-_WzWFtA07PloCkqhvNkcY,5201 -django/contrib/humanize/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/humanize/locale/udm/LC_MESSAGES/django.po,sha256=AR55jQHmMrbA6RyHGOtqdvUtTFlxWnqvfMy8vZK25Bo,4354 -django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo,sha256=Y1DAAowIHg4ibKYa6blAjm_OAjE9DppWN0HIkW7FNCg,8809 -django/contrib/humanize/locale/uk/LC_MESSAGES/django.po,sha256=Kv644K7dXfAt4tustWP-2dVT5aV26wBlUeBHfYo1D50,13754 -django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo,sha256=MF9uX26-4FFIz-QpDUbUHUNLQ1APaMLQmISMIaPsOBE,1347 -django/contrib/humanize/locale/ur/LC_MESSAGES/django.po,sha256=D5UhcPEcQ16fsBEdkk_zmpjIF6f0gEv0P86z_pK_1eA,5015 -django/contrib/humanize/locale/uz/LC_MESSAGES/django.mo,sha256=HDah_1qqUz5m_ABBVIEML3WMR2xyomFckX82i6b3n4k,1915 -django/contrib/humanize/locale/uz/LC_MESSAGES/django.po,sha256=Ql3GZOhuoVgS0xHEzxjyYkOWQUyi_jiizfAXBp2Y4uw,7296 -django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo,sha256=ZUK_Na0vnfdhjo0MgnBWnGFU34sxcMf_h0MeyuysKG8,3646 -django/contrib/humanize/locale/vi/LC_MESSAGES/django.po,sha256=DzRpXObt9yP5RK_slWruaIhnVI0-JXux2hn_uGsVZiE,5235 -django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=JcMWgxYXOPXTCR6t8szkuDHSQ6p0RJX7Tggq84gJhwQ,4709 -django/contrib/humanize/locale/zh_Hans/LC_MESSAGES/django.po,sha256=L7SmGldceykiGHJe42Hxx_qyJa9rBuAnJdYgIY-L-6o,8242 -django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=qYO9_rWuIMxnlL9Q8V9HfhUu7Ebv1HGOlvsnh7MvZkE,4520 -django/contrib/humanize/locale/zh_Hant/LC_MESSAGES/django.po,sha256=AijEfvIlJK9oVaLJ7lplmbvhGRKIbYcLh8WxoBYoQkA,7929 -django/contrib/humanize/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/humanize/templatetags/__pycache__/__init__.cpython-38.pyc,, -django/contrib/humanize/templatetags/__pycache__/humanize.cpython-38.pyc,, -django/contrib/humanize/templatetags/humanize.py,sha256=mOUNwdvczEP2iPs-8OkUs8N1vZMDvSpKlnMQ8StOFZk,12591 -django/contrib/messages/__init__.py,sha256=Sjt2mgia8vqSpISrs67N27rAXgvqR-MPq37VB-nmSvE,174 -django/contrib/messages/__pycache__/__init__.cpython-38.pyc,, -django/contrib/messages/__pycache__/api.cpython-38.pyc,, -django/contrib/messages/__pycache__/apps.cpython-38.pyc,, -django/contrib/messages/__pycache__/constants.cpython-38.pyc,, -django/contrib/messages/__pycache__/context_processors.cpython-38.pyc,, -django/contrib/messages/__pycache__/middleware.cpython-38.pyc,, -django/contrib/messages/__pycache__/utils.cpython-38.pyc,, -django/contrib/messages/__pycache__/views.cpython-38.pyc,, -django/contrib/messages/api.py,sha256=sWP2DP-n8ZWOTM-BLFDGrH_l-voGwrSxC0OgEyJt1F4,3071 -django/contrib/messages/apps.py,sha256=yGXBKfV5WF_ElcPbX4wJjXq6jzp39ttnO7sp8N_IzOQ,194 -django/contrib/messages/constants.py,sha256=WZxjzvEoKI7mgChSFp_g9e-zUH8r6JLhu9sFsftTGNA,312 -django/contrib/messages/context_processors.py,sha256=0LniZjxZ7Fx2BxYdJ0tcruhG4kkBEEhsc7Urcf31NnE,354 -django/contrib/messages/middleware.py,sha256=4L-bzgSjTw-Kgh8Wg8MOqkJPyilaxyXi_jH1UpP1h-U,986 -django/contrib/messages/storage/__init__.py,sha256=gXDHbQ9KgQdfhYOla9Qj59_SlE9WURQiKzIA0cFH0DQ,392 -django/contrib/messages/storage/__pycache__/__init__.cpython-38.pyc,, -django/contrib/messages/storage/__pycache__/base.cpython-38.pyc,, -django/contrib/messages/storage/__pycache__/cookie.cpython-38.pyc,, -django/contrib/messages/storage/__pycache__/fallback.cpython-38.pyc,, -django/contrib/messages/storage/__pycache__/session.cpython-38.pyc,, -django/contrib/messages/storage/base.py,sha256=Yv87oNn-aAFMatjSmwMJDzMw7rs_ip4F0mBkmiaFPY4,5675 -django/contrib/messages/storage/cookie.py,sha256=2d3irKauUHjdK0ggRAvkCdFnHoWp8lONnlmN_pO24zc,7266 -django/contrib/messages/storage/fallback.py,sha256=IbyyZg8cTU-19ZeRg6LndLfRK0SoevDwqKtrqzhVp6c,2095 -django/contrib/messages/storage/session.py,sha256=GVQjr7Xqke6AlFFrmB5XVlYSzB5mzInlbyZ04XdIUQk,1640 -django/contrib/messages/utils.py,sha256=6PzAryJ0e6oOwtSAMrjAIsYGu_nWIpgMG0p8f_rzOrg,256 -django/contrib/messages/views.py,sha256=R5xD2DLmAO0x6EGpE8TX5bku4zioOiYkQnAtf6r-VAE,523 -django/contrib/postgres/__init__.py,sha256=jtn9-mwOISc5D_YUoQ5z_3sN4bEPNxBOCDzbGNag_mc,67 -django/contrib/postgres/__pycache__/__init__.cpython-38.pyc,, -django/contrib/postgres/__pycache__/apps.cpython-38.pyc,, -django/contrib/postgres/__pycache__/constraints.cpython-38.pyc,, -django/contrib/postgres/__pycache__/functions.cpython-38.pyc,, -django/contrib/postgres/__pycache__/indexes.cpython-38.pyc,, -django/contrib/postgres/__pycache__/lookups.cpython-38.pyc,, -django/contrib/postgres/__pycache__/operations.cpython-38.pyc,, -django/contrib/postgres/__pycache__/search.cpython-38.pyc,, -django/contrib/postgres/__pycache__/serializers.cpython-38.pyc,, -django/contrib/postgres/__pycache__/signals.cpython-38.pyc,, -django/contrib/postgres/__pycache__/utils.cpython-38.pyc,, -django/contrib/postgres/__pycache__/validators.cpython-38.pyc,, -django/contrib/postgres/aggregates/__init__.py,sha256=QCznqMKqPbpraxSi1Y8-B7_MYlL42F1kEWZ1HeLgTKs,65 -django/contrib/postgres/aggregates/__pycache__/__init__.cpython-38.pyc,, -django/contrib/postgres/aggregates/__pycache__/general.cpython-38.pyc,, -django/contrib/postgres/aggregates/__pycache__/mixins.cpython-38.pyc,, -django/contrib/postgres/aggregates/__pycache__/statistics.cpython-38.pyc,, -django/contrib/postgres/aggregates/general.py,sha256=D3uSxGNmS2HuRWF376kJw5Nk2UA4sQz0EZB4yDeMtD0,1543 -django/contrib/postgres/aggregates/mixins.py,sha256=xP4ulf5Ww_8rfyFhg3heWcp-2JZsjIi4hfrgqJc9f_w,2075 -django/contrib/postgres/aggregates/statistics.py,sha256=Snn2JTyiri0m9k64ZWl7pr0LtN5D8N8oi2FIu2qoJ0o,1462 -django/contrib/postgres/apps.py,sha256=ewQL24-zYKPu2h0wjU8rJr9asoDSgbpEElf7b4pqa90,2932 -django/contrib/postgres/constraints.py,sha256=9Alx0zgx5NbhWUTSECJniIDIiHilEdf1wL-PXYz6JgU,4974 -django/contrib/postgres/fields/__init__.py,sha256=Xo8wuWPwVNOkKY-EwV9U1zusQ2DjMXXtL7_8R_xAi5s,148 -django/contrib/postgres/fields/__pycache__/__init__.cpython-38.pyc,, -django/contrib/postgres/fields/__pycache__/array.cpython-38.pyc,, -django/contrib/postgres/fields/__pycache__/citext.cpython-38.pyc,, -django/contrib/postgres/fields/__pycache__/hstore.cpython-38.pyc,, -django/contrib/postgres/fields/__pycache__/jsonb.cpython-38.pyc,, -django/contrib/postgres/fields/__pycache__/ranges.cpython-38.pyc,, -django/contrib/postgres/fields/__pycache__/utils.cpython-38.pyc,, -django/contrib/postgres/fields/array.py,sha256=IMHHdUBZcALGxfbp6r9LY9U5E_OLWXWXY48jes97Yfs,9996 -django/contrib/postgres/fields/citext.py,sha256=G40UZv4zop8Zrq2vMhluZ-MT7yPLEc8IEDi3hZ27gGw,439 -django/contrib/postgres/fields/hstore.py,sha256=BfQ3ifm7NGTlKHqYvazgaWoDf6GDRiqDwAcdMgnZ0co,3243 -django/contrib/postgres/fields/jsonb.py,sha256=7OGh-sP4qtQkAZWLZf_2F0UBAOVAK8W5oUW2JcxiukU,1428 -django/contrib/postgres/fields/ranges.py,sha256=QynHfVwQlYI8LEyax-gLOQGu9bOLoG4EbBdcvyhHXCw,9723 -django/contrib/postgres/fields/utils.py,sha256=TV-Aj9VpBb13I2iuziSDURttZtz355XakxXnFwvtGio,95 -django/contrib/postgres/forms/__init__.py,sha256=GSqucR50I9jrZUYZUFVmb8nV_FSlXu1BcCpFck2pVXI,118 -django/contrib/postgres/forms/__pycache__/__init__.cpython-38.pyc,, -django/contrib/postgres/forms/__pycache__/array.cpython-38.pyc,, -django/contrib/postgres/forms/__pycache__/hstore.cpython-38.pyc,, -django/contrib/postgres/forms/__pycache__/jsonb.cpython-38.pyc,, -django/contrib/postgres/forms/__pycache__/ranges.cpython-38.pyc,, -django/contrib/postgres/forms/array.py,sha256=qWmxMDlo5UfKTET03kqyhXF1-b3rGCnuuAOhyvbzHL8,8065 -django/contrib/postgres/forms/hstore.py,sha256=f7PJ41fsd8D7cvyJG-_ugslM-hXL7qnZPdx08UZQNXY,1766 -django/contrib/postgres/forms/jsonb.py,sha256=WmDxuxhULUYO8_nKXXsOz26ta4oye0MQwHhDCW5Oe5g,484 -django/contrib/postgres/forms/ranges.py,sha256=GZX5dB4q5G1-FMo54r_gW3Jl89rbnL-EnDetSFNRH_A,3344 -django/contrib/postgres/functions.py,sha256=zHeAyKR5MhnsIGI5qbtmRdxPm8OtycEBE5OmCNyynD8,252 -django/contrib/postgres/indexes.py,sha256=kndWpMbJh0oMAaxKnkv8J7ShkRSY4AJmxqtEggUCCpY,7845 -django/contrib/postgres/jinja2/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/contrib/postgres/locale/af/LC_MESSAGES/django.mo,sha256=kDeL_SZezO8DRNMRh2oXz94YtAK1ZzPiK5dftqAonKI,2841 -django/contrib/postgres/locale/af/LC_MESSAGES/django.po,sha256=ALKUHbZ8DE6IH80STMJhGOoyHB8HSSxI4PlX_SfxJWc,3209 -django/contrib/postgres/locale/ar/LC_MESSAGES/django.mo,sha256=UTBknYC-W7nclTrBCEiCpTglZxZQY80UqGki8I6j3EM,4294 -django/contrib/postgres/locale/ar/LC_MESSAGES/django.po,sha256=_PgF2T3ylO4vnixVoKRsgmpPDHO-Qhj3mShHtHeSna0,4821 -django/contrib/postgres/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=fND1NtGTmEl7Rukt_VlqJeExdJjphBygmI-qJmE83P0,4352 -django/contrib/postgres/locale/ar_DZ/LC_MESSAGES/django.po,sha256=Z9y3h6lDnbwD4JOn7OACLjEZqNY8OpEwuzoUD8FSdwA,4868 -django/contrib/postgres/locale/az/LC_MESSAGES/django.mo,sha256=2A22s5-G7O8oOGiWAnsvf9UJwQWwaeXBRFtN1TprThA,3107 -django/contrib/postgres/locale/az/LC_MESSAGES/django.po,sha256=nVdMOEQLeR97gT3IpqgX0uGo9Q-jB-1fH6QpNUqgeKs,3481 -django/contrib/postgres/locale/be/LC_MESSAGES/django.mo,sha256=0Y6S-XR45rgw0zEZgjpRJyNm7szHxr9XOUyolo_5cN0,4134 -django/contrib/postgres/locale/be/LC_MESSAGES/django.po,sha256=KIkbhabWDYo4iDaQ8Dt0kxH_VB2wTFsS0rGs9zzKoKU,4635 -django/contrib/postgres/locale/bg/LC_MESSAGES/django.mo,sha256=7VaGqc8TO0NVL-eZbxVuGb8J6atQ_aC3C3Nh3G9zcJQ,3439 -django/contrib/postgres/locale/bg/LC_MESSAGES/django.po,sha256=9S2pgIZFOv3qp0QunLFUfPiNk40RZjHIiVA39Uj3zFs,4010 -django/contrib/postgres/locale/ca/LC_MESSAGES/django.mo,sha256=XR1UEZV9AXKFz7XrchjRkd-tEdjnlmccW_I7XANyMns,2904 -django/contrib/postgres/locale/ca/LC_MESSAGES/django.po,sha256=5wPLvkODU_501cHPZ7v0n89rmFrsuctt7T8dUBMfQ0Q,3430 -django/contrib/postgres/locale/cs/LC_MESSAGES/django.mo,sha256=_EmT9NnoX3xeRU-AI5sPlAszjzC0XwryWOmj8d07ox8,3388 -django/contrib/postgres/locale/cs/LC_MESSAGES/django.po,sha256=dkWVucs3-avEVtk_Xh5p-C8Tvw_oKDASdgab_-ByP-w,3884 -django/contrib/postgres/locale/da/LC_MESSAGES/django.mo,sha256=Pi841HD7j9mPiKNTaBvQP2aa5cF9MtwqbY6zfiouwu4,2916 -django/contrib/postgres/locale/da/LC_MESSAGES/django.po,sha256=3D8kRTXX2nbuvRoDlTf5tHB2S_k2d571L678wa3nBA8,3339 -django/contrib/postgres/locale/de/LC_MESSAGES/django.mo,sha256=B3HwniAOjSHmhuuqpLVa3nqYD5HPzZ7vwtQ_oPKiByE,2993 -django/contrib/postgres/locale/de/LC_MESSAGES/django.po,sha256=dZu8_1FIFKw67QnhXsGibfWT2W3d07Ro9CU8Y_HolvE,3468 -django/contrib/postgres/locale/dsb/LC_MESSAGES/django.mo,sha256=4Ymt58bCjpZlmNDZbFO8TtI6agusGvTwlDCjip_q8nQ,3573 -django/contrib/postgres/locale/dsb/LC_MESSAGES/django.po,sha256=m1PlbIRBIkTnbe2jLzcR0_Oi9MujrsS82apXd8GDkcs,4033 -django/contrib/postgres/locale/el/LC_MESSAGES/django.mo,sha256=PKQX9koDltdpPB_2sz_cCMj46CU6f6UKrQhkniPp5V0,3917 -django/contrib/postgres/locale/el/LC_MESSAGES/django.po,sha256=C4bWUZaxJCXkVUWlvaW4zo6C_fZAI7V1qBPOJHbZfdY,4411 -django/contrib/postgres/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/postgres/locale/en/LC_MESSAGES/django.po,sha256=FtuWLiTQcIvK-kpbZujmawA0yQeRERhzfoJeEiOAyJw,2865 -django/contrib/postgres/locale/eo/LC_MESSAGES/django.mo,sha256=6DVCsh5l93gP7mZm3B-cX7mCR2JZmkncQhcKnTCi2qE,3155 -django/contrib/postgres/locale/eo/LC_MESSAGES/django.po,sha256=RIfsz1ohsRlBTb9QPdyI-1iKV8CU9pjrVqc4_3AhizU,3539 -django/contrib/postgres/locale/es/LC_MESSAGES/django.mo,sha256=WnSqn-4gREdsGohEhTJybt5E2Vg_mR6QMr_tt2Ek-uQ,3195 -django/contrib/postgres/locale/es/LC_MESSAGES/django.po,sha256=ijuEmSYMQX6Tl-dBW7yzVu94dm5SlQMxd7zA4NGi3U0,3762 -django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.mo,sha256=x1B_qkCNdJZpyRE1EVZOp0Ri7GeJCfXOUcPRM5tIGuY,3150 -django/contrib/postgres/locale/es_AR/LC_MESSAGES/django.po,sha256=8DeRcuCCaOHy0PRvpsPt66Vf8v2AMYgWAb-KhsYrJwE,3526 -django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.mo,sha256=wmkoFFXblYw1ufz4gcSntO79yq20mHl8hlbj4Hhmcug,2903 -django/contrib/postgres/locale/es_CO/LC_MESSAGES/django.po,sha256=Br2Lo11i-EeryGFsRmUWr_PD6_xk8kavVzdwqtR7AuU,3579 -django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.mo,sha256=4-c48HNLkDnIIPIBOaIhxoOf4muYRRelX0rR0dVrpAE,882 -django/contrib/postgres/locale/es_MX/LC_MESSAGES/django.po,sha256=5HmM8uVQkt869MyzuQIk5C6czFe4MTRz5CBmgeN_V14,2496 -django/contrib/postgres/locale/et/LC_MESSAGES/django.mo,sha256=s1UcBWemextX5moBTHt-XmZeFbyFI5WkLmJKzOcb8ok,3143 -django/contrib/postgres/locale/et/LC_MESSAGES/django.po,sha256=ONovC05GYqQR9dEOmguavlbpiV8-cKitf7SSmRsMJD8,3676 -django/contrib/postgres/locale/eu/LC_MESSAGES/django.mo,sha256=e1i7Y8OyrDBzRTDViMBFliQxGa-wYBaBBWrr6V7MIVw,3133 -django/contrib/postgres/locale/eu/LC_MESSAGES/django.po,sha256=uLRlYrtifsM_BmHtxLUMnL-nNxJ9S3X-Py7W_6rRvqA,3544 -django/contrib/postgres/locale/fa/LC_MESSAGES/django.mo,sha256=uLh9fJtCSKg5eaj9uGP2muN_71aFxpZwOjRHtnZhPik,3308 -django/contrib/postgres/locale/fa/LC_MESSAGES/django.po,sha256=adN7bh9Q_R0Wzlf2fWaQnTtvxo0NslyoHH5t5V0eeMM,3845 -django/contrib/postgres/locale/fi/LC_MESSAGES/django.mo,sha256=eVu4C_rIzT2fQGNbJDEkrQb4pjF00lOPAixxqpYvbhs,3212 -django/contrib/postgres/locale/fi/LC_MESSAGES/django.po,sha256=zILj96C-jR-bjBRVVLScZngm7MRA-BtUM4j4IUMNJ48,3555 -django/contrib/postgres/locale/fr/LC_MESSAGES/django.mo,sha256=wmlIBo9os5o1u04uSvk9-VBCCfK47MWj6kIirqMvHMA,3081 -django/contrib/postgres/locale/fr/LC_MESSAGES/django.po,sha256=sLwnf7qCGv5buhPp6kEJhsjx_BqFTxT5k5o3gQQ8fEI,3463 -django/contrib/postgres/locale/gd/LC_MESSAGES/django.mo,sha256=r-3buV68jrPukK9Tz1Bi9CdYIyrVMo7_GjilJXbyHME,3795 -django/contrib/postgres/locale/gd/LC_MESSAGES/django.po,sha256=Tu-Q2-S7aEvh0uCBxzlNsRGQJbKXc8-d4yo0ikUz47A,4282 -django/contrib/postgres/locale/gl/LC_MESSAGES/django.mo,sha256=YlBrsev1RIUA4Zxbnl_ufkTANki4VM9O42Ge07u5QPc,722 -django/contrib/postgres/locale/gl/LC_MESSAGES/django.po,sha256=h4Z-Fdi9o1MG33vCWGMHqSj6dklYy653vGkq81lYeKA,2433 -django/contrib/postgres/locale/he/LC_MESSAGES/django.mo,sha256=W4mt6DLWcrVfXN235xShxLMv1le-ZZh3OUL3wOYI9jA,3989 -django/contrib/postgres/locale/he/LC_MESSAGES/django.po,sha256=6cCLFYkfj0tamRZpJFI9lO6V7VxBIfJw3fy3ZYRWc-M,4479 -django/contrib/postgres/locale/hr/LC_MESSAGES/django.mo,sha256=oIY9TCvkVmv-fGbGs-N2acx5VC3PNzZxWW4FRjWbTUQ,1217 -django/contrib/postgres/locale/hr/LC_MESSAGES/django.po,sha256=EnvgxKmz6qBe6cH05CAm0bO5zuXkAOYFnRF5c4LmIRo,2762 -django/contrib/postgres/locale/hsb/LC_MESSAGES/django.mo,sha256=fnzghbobisOaQTMu6Fm7FMAv7r6afzc8_hFHwlrHU0Y,3482 -django/contrib/postgres/locale/hsb/LC_MESSAGES/django.po,sha256=V35au4H4RIMcVq_T-KEfnQ2oUqxJqyXP--YFHWt_DNw,3933 -django/contrib/postgres/locale/hu/LC_MESSAGES/django.mo,sha256=6-9w_URPmVzSCcFea7eThbIE5Q-QSr5Q-i0zvKhpBBI,2872 -django/contrib/postgres/locale/hu/LC_MESSAGES/django.po,sha256=fx4w4FgjfP0dlik7zGCJsZEHmmwQUSA-GRzg4KeVd_s,3394 -django/contrib/postgres/locale/hy/LC_MESSAGES/django.mo,sha256=wybr0GxcDRdCnz9qeoE7wkTtqqWYByX59bnkf60TYdA,3593 -django/contrib/postgres/locale/hy/LC_MESSAGES/django.po,sha256=9IO_50Tke30BbBpU83otWMjaySKPDL7apvwzYPEToS0,4140 -django/contrib/postgres/locale/ia/LC_MESSAGES/django.mo,sha256=dnyXX0ii0CFMrI02mZhkCzY66KTFdWXBOlXjo6gP_Ps,758 -django/contrib/postgres/locale/ia/LC_MESSAGES/django.po,sha256=jNRfADlv6JldyeezHt_3LXpudpmA-cXr73GIe3aPd6E,2475 -django/contrib/postgres/locale/id/LC_MESSAGES/django.mo,sha256=HXYRf8ZkBATqE_lYp0OqHW0-EcAw8JJxqdolOcxbqQU,2980 -django/contrib/postgres/locale/id/LC_MESSAGES/django.po,sha256=-5lsVajqTHfDt3jKEQV2u0XOOljgutbAu97rclqDZm0,3562 -django/contrib/postgres/locale/is/LC_MESSAGES/django.mo,sha256=Uhp9XnkAvTDyKSlqLk_81OvTuHsDdiBR0rfABElUOoA,3183 -django/contrib/postgres/locale/is/LC_MESSAGES/django.po,sha256=wtKB5gICQy6krMx99ugKgz5oANCSVQN2CQ-u1igeWg4,3580 -django/contrib/postgres/locale/it/LC_MESSAGES/django.mo,sha256=m7bI5A6ER8TNWQH7m5-vU4xbFeqDlw-Tslv02oLLWJs,2978 -django/contrib/postgres/locale/it/LC_MESSAGES/django.po,sha256=FgyUi-A3zHv-UC21oqQ8NuHKSccRaH5_UqSuOpJFlKk,3600 -django/contrib/postgres/locale/ja/LC_MESSAGES/django.mo,sha256=Up-87OUoJEieJkp8QecimVE-9q2krKt0pdHw1CcSxXs,3027 -django/contrib/postgres/locale/ja/LC_MESSAGES/django.po,sha256=mq2YnEbj6R6EEic2Gyhc56o-BbyJFv4PoJjXzz1CauI,3416 -django/contrib/postgres/locale/ka/LC_MESSAGES/django.mo,sha256=E-ol6-skFX-xPJs3jsGMZaJTuqF_Riu2DXnWa8AqmM0,731 -django/contrib/postgres/locale/ka/LC_MESSAGES/django.po,sha256=MFPEF3-kjkeqLDUMjolV4d6yj1TDnH-vh11vFgnwODA,2524 -django/contrib/postgres/locale/kk/LC_MESSAGES/django.mo,sha256=AdGfrugnkBOmvFZRKrc2KIpKZTZ8ez_k-4vG3SyrzzU,683 -django/contrib/postgres/locale/kk/LC_MESSAGES/django.po,sha256=MmZ0UiTLs2nnVURE3DlkmXuK0IcFkan9ymWhC9CdK7c,2495 -django/contrib/postgres/locale/ko/LC_MESSAGES/django.mo,sha256=gYs6wFnmLFqgcBsF0RtrGLSO4nju6yIQPSeWJo8N3Cs,3175 -django/contrib/postgres/locale/ko/LC_MESSAGES/django.po,sha256=9OJM4mi5xmOzzAJuEJTqyn33NGtePJtm4POxKkBTjw0,3740 -django/contrib/postgres/locale/ky/LC_MESSAGES/django.mo,sha256=F0Ws34MbE7zJa8FNxA-9rFm5sNLL22D24LyiBb927lE,3101 -django/contrib/postgres/locale/ky/LC_MESSAGES/django.po,sha256=yAzSeT2jBm7R2ZXiuYBQFSKQ_uWIUfNTAobE1UYnlPs,3504 -django/contrib/postgres/locale/lt/LC_MESSAGES/django.mo,sha256=RjZ0I6Dut3iDur2LwMwkiCbFYScfBlHBjPXPnKGwdDc,3853 -django/contrib/postgres/locale/lt/LC_MESSAGES/django.po,sha256=xrAuourVTpfB3aRn8EN5yDkYQ4xuWjXiLQF33OOhq_k,4282 -django/contrib/postgres/locale/lv/LC_MESSAGES/django.mo,sha256=zSCp3i4tUkXh-o0uCnOntFhohUId8ctOQIooEgPbrtw,3099 -django/contrib/postgres/locale/lv/LC_MESSAGES/django.po,sha256=HaGoMy-idXgYHqxczydnQSZdzRv-YaShFU2ns4yuPAY,3626 -django/contrib/postgres/locale/mk/LC_MESSAGES/django.mo,sha256=UFofPo5u8GZFQeJUXpXv9WkzN8-L3RYB4QtpWSPZucw,3717 -django/contrib/postgres/locale/mk/LC_MESSAGES/django.po,sha256=p6bHPCPH1XuUJ_62EXW3fXnaKCtAvuDLAvS3H1JcX9s,4284 -django/contrib/postgres/locale/ml/LC_MESSAGES/django.mo,sha256=N47idWIsmtghZ_D5325TRsDFeoUa0MIvMFtdx7ozAHc,1581 -django/contrib/postgres/locale/ml/LC_MESSAGES/django.po,sha256=lt_7fGZV7BCB2XqFWIQQtH4niU4oMBfGzQQuN5sD0fo,2947 -django/contrib/postgres/locale/mn/LC_MESSAGES/django.mo,sha256=Gk1EKEHiKepj9744QwX0ArC5pNoi0yZg4E18YN5qXqY,3732 -django/contrib/postgres/locale/mn/LC_MESSAGES/django.po,sha256=NdW4WOJZnETLMGuZ_UrIMvUBO8yDkCvY4K1eWjV14d8,4198 -django/contrib/postgres/locale/nb/LC_MESSAGES/django.mo,sha256=JXZfGoc4Yr0Dtp0TFtRjFWlGRxRhV67J7RYhxsO3NUw,3079 -django/contrib/postgres/locale/nb/LC_MESSAGES/django.po,sha256=4CIp9d2BNLWeqL6SPK72veG95knGqf6D6ehEsPDy7_s,3499 -django/contrib/postgres/locale/ne/LC_MESSAGES/django.mo,sha256=wZ0UYJI4qUpPjLvsPCqRCuHbEKpBz9uOh6qncgXh59g,934 -django/contrib/postgres/locale/ne/LC_MESSAGES/django.po,sha256=ndvFMUw2XzBukzedzXUiPQfnnOitrOlJtz2TZgv0TX4,2590 -django/contrib/postgres/locale/nl/LC_MESSAGES/django.mo,sha256=ttUzGWvxJYw71fVbcXCwzetyTWERBsURTe_nsf_axq0,2951 -django/contrib/postgres/locale/nl/LC_MESSAGES/django.po,sha256=ENw-dI6FHFqxclQKdefthCIVgp41HoIYj0IBmRCz0Vw,3515 -django/contrib/postgres/locale/pl/LC_MESSAGES/django.mo,sha256=HZOPQ8tC_vWEqsCAtDquwnyhEiECyKSmVHuoklAj6hA,3444 -django/contrib/postgres/locale/pl/LC_MESSAGES/django.po,sha256=gKrgT2Mpuxhs6ym_D4yJQVC0tVr9KSaZBP7Fc4yW-wY,4150 -django/contrib/postgres/locale/pt/LC_MESSAGES/django.mo,sha256=ajCZcwyubfnqn-X-rhPdfidkLRBM9HdHzrPezmGmZCw,3135 -django/contrib/postgres/locale/pt/LC_MESSAGES/django.po,sha256=Oo78Px9ZXGWC0aiuc-1cJFvyT0yEjJNuge9gzWqOdF0,3580 -django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.mo,sha256=aCXnsSyXnuCicykEvSU0_igpIbYm2wFa0_PVx5PUeNo,3167 -django/contrib/postgres/locale/pt_BR/LC_MESSAGES/django.po,sha256=a1H7LDz9PfpP2wEeV-oRs-3f7xvTFJgK21e1dCBQ3lE,3935 -django/contrib/postgres/locale/ro/LC_MESSAGES/django.mo,sha256=w4tyByrZlba_Ju_F2OzD52ut5JSD6UGJfjt3A7CG_uc,3188 -django/contrib/postgres/locale/ro/LC_MESSAGES/django.po,sha256=hnotgrr-zeEmE4lgpqDDiJ051GoGbL_2GVs4O9dVLXI,3700 -django/contrib/postgres/locale/ru/LC_MESSAGES/django.mo,sha256=TQ7EuEipMb-vduqTGhQY8PhjmDrCgujKGRX7Im0BymQ,4721 -django/contrib/postgres/locale/ru/LC_MESSAGES/django.po,sha256=Me728Qfq_PXRZDxjGQbs3lLMueG3bNaqGZuZPgqsZQA,5495 -django/contrib/postgres/locale/sk/LC_MESSAGES/django.mo,sha256=jgpnLYmOCNlj-BH605ybhVx0rG4yXKIIUCf696DwAVU,3630 -django/contrib/postgres/locale/sk/LC_MESSAGES/django.po,sha256=kv4raaUoWuOeOuTThku1_SiKsf7nYEBDaa-R5yGtg7U,4051 -django/contrib/postgres/locale/sl/LC_MESSAGES/django.mo,sha256=BT1LywwWuDO9iENJm-pqBksEisuETBlh0r4ILn4wgx0,3524 -django/contrib/postgres/locale/sl/LC_MESSAGES/django.po,sha256=YmFNHoKR5av9ychiCloy5OXeL_v-rDzA0vYqUy84umc,3988 -django/contrib/postgres/locale/sq/LC_MESSAGES/django.mo,sha256=D2h9Ca6yXexYDlEgjtl9dTni7mTPgwf08bjIQjBYI7g,3167 -django/contrib/postgres/locale/sq/LC_MESSAGES/django.po,sha256=AhkjE8iDbVpzG1dtKUJ1KQvgISelBZD68mqF27G-ipA,3558 -django/contrib/postgres/locale/sr/LC_MESSAGES/django.mo,sha256=VUs9RptTL5Sc6viMfm3GsR2G5lrx09CWnSjKfiQfjkA,4042 -django/contrib/postgres/locale/sr/LC_MESSAGES/django.po,sha256=cpnpbyPHwgtkpUWzBvMomMPjMh3e7PvMWLMRAq4e54g,4494 -django/contrib/postgres/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=7zt1OjYSzSv1i53RmWFAC3wuWMGHSRAlGTRDBhgOJQw,3322 -django/contrib/postgres/locale/sr_Latn/LC_MESSAGES/django.po,sha256=vphVWb0JJlJJRHV9aKBlwm5HnblsKYJ9kFmYC75VK3Y,3735 -django/contrib/postgres/locale/sv/LC_MESSAGES/django.mo,sha256=cAc33SL4bBPVT5hVW22uJyr2EKPtHwglgXQrSR6SffE,3196 -django/contrib/postgres/locale/sv/LC_MESSAGES/django.po,sha256=rIueQEIpQmN6zpZeM36wqGCAdUWP7C2PWoSTfxgZzGY,3660 -django/contrib/postgres/locale/tg/LC_MESSAGES/django.mo,sha256=3yW5NKKsa2f2qDGZ4NGlSn4DHatLOYEv5SEwB9voraA,2688 -django/contrib/postgres/locale/tg/LC_MESSAGES/django.po,sha256=Zuix5sJH5Fz9-joe_ivMRpNz2Fbzefsxz3OOoDV0o1c,3511 -django/contrib/postgres/locale/tk/LC_MESSAGES/django.mo,sha256=ytivs6cnECDuyVKToFQMRnH_RPr4PlVepg8xFHnr0W4,2789 -django/contrib/postgres/locale/tk/LC_MESSAGES/django.po,sha256=bfXIyKNOFRC3U34AEKCsYQn3XMBGtgqHsXpboHvRQq0,3268 -django/contrib/postgres/locale/tr/LC_MESSAGES/django.mo,sha256=2wed5sCHeOFoykqShgnZ1aJ2dF6b6RbygraHUBhcysU,2898 -django/contrib/postgres/locale/tr/LC_MESSAGES/django.po,sha256=9xd_-n_JNSZ8GeYI0NeegzLLsTvREWsD0xbBx6otQQ4,3267 -django/contrib/postgres/locale/uk/LC_MESSAGES/django.mo,sha256=2kT-GcG490kWS9V-NTjS3nKxxA8xm4euTo0Dhqd4Yb4,4758 -django/contrib/postgres/locale/uk/LC_MESSAGES/django.po,sha256=AdBiSfMyt10qIxfTcquptNVyKxwI9k_9ZjuskaEM5JQ,5402 -django/contrib/postgres/locale/uz/LC_MESSAGES/django.mo,sha256=PcmhhVC1spz3EFrQ2qdhfPFcA1ELHtBhHGWk9Z868Ss,703 -django/contrib/postgres/locale/uz/LC_MESSAGES/django.po,sha256=lbQxX2cmueGCT8sl6hsNWcrf9H-XEUbioP4L7JHGqiU,2291 -django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=jUqnfwS-XMNKVytVLEcyVsxqyfIHGkSJfW0hi7Sh7w4,2574 -django/contrib/postgres/locale/zh_Hans/LC_MESSAGES/django.po,sha256=7L9pBCN-dScEAfPIe4u-jY14S6NgVe6seZHaqthgms0,3060 -django/contrib/postgres/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=sAHb1ufRXHR2aLniqP6U1p9I1ez5Zcm6E6hShdzwbn8,2836 -django/contrib/postgres/locale/zh_Hant/LC_MESSAGES/django.po,sha256=-3ymLFHXRS-DpDMXQrGLedewtmqrxPB1fBwmTWfq3Zg,3227 -django/contrib/postgres/lookups.py,sha256=PzWopUkxh5JRkqAozJN-RaLs7gwaKhXzHkIE75yQ-g4,1478 -django/contrib/postgres/operations.py,sha256=e7l9Bj-qUcaFoLl7L-9gsWDOJfgOonLb95KG5NfdPNA,5142 -django/contrib/postgres/search.py,sha256=8MtUU6278Rov1qQLubZanx3O1DKT7RhKRrm4bWS6nf0,10427 -django/contrib/postgres/serializers.py,sha256=EPW4-JtgMV_x4_AosG4C-HLX3K4O9ls9Ezw9f07iHd8,435 -django/contrib/postgres/signals.py,sha256=MmUklgaTW1-UBMGQTxNO_1fsO7mZugGs9ScovuCIyJo,2245 -django/contrib/postgres/templates/postgres/widgets/split_array.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/contrib/postgres/utils.py,sha256=gBGBmAYMKLkB6nyaRgx5Yz_00bXaOA6BDK9koiE-_co,1187 -django/contrib/postgres/validators.py,sha256=CA_iygE2q3o8tXlQ9JfMYxoO6HDJk3D0PIcmGrahwdI,2675 -django/contrib/redirects/__init__.py,sha256=9vdTkDvH0443yn0qXx59j4dXPn3P-Pf9lB8AWrSp_Bk,69 -django/contrib/redirects/__pycache__/__init__.cpython-38.pyc,, -django/contrib/redirects/__pycache__/admin.cpython-38.pyc,, -django/contrib/redirects/__pycache__/apps.cpython-38.pyc,, -django/contrib/redirects/__pycache__/middleware.cpython-38.pyc,, -django/contrib/redirects/__pycache__/models.cpython-38.pyc,, -django/contrib/redirects/admin.py,sha256=P9wp8yIvDjJSfIXpWYM2ftDlVhKvte_0AM9Ky_j1JIs,314 -django/contrib/redirects/apps.py,sha256=BvTvN3IXCv7yEKqhxwCDiSCZ3695YXNttEvmONHNxC4,197 -django/contrib/redirects/locale/af/LC_MESSAGES/django.mo,sha256=UqXzx3fQxw4n7RGNgnp4lzLJ93DPRAgIAg6bwPs5GFY,1119 -django/contrib/redirects/locale/af/LC_MESSAGES/django.po,sha256=JvDnHyWH_-IyOTSR36hwSBmd_fXa3trpUAgEThdtDvM,1260 -django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo,sha256=45kuFTs85G4XxI1OrBnkrgQJJfQE0cveTs1GEsf3un4,1311 -django/contrib/redirects/locale/ar/LC_MESSAGES/django.po,sha256=L_mv0nptTvKi3ONK2yJBINoqPkQ0-FIpWu1FWKlzI-s,1565 -django/contrib/redirects/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=Nt17Ugj4UVEsyg-y7UYgCnAttSX_pRR5OLS-qRbpZvI,1336 -django/contrib/redirects/locale/ar_DZ/LC_MESSAGES/django.po,sha256=ckrjwULi4Sx_mBOxadvywXOy6vyecQYWryACnyg1XGA,1511 -django/contrib/redirects/locale/ast/LC_MESSAGES/django.mo,sha256=a1ixBQQIdBZ7o-ADnF2r74CBtPLsuatG7txjc05_GXI,1071 -django/contrib/redirects/locale/ast/LC_MESSAGES/django.po,sha256=PguAqeIUeTMWsADOYLTxoC6AuKrCloi8HN18hbm3pZ0,1266 -django/contrib/redirects/locale/az/LC_MESSAGES/django.mo,sha256=KzpRUrONOi5Cdr9sSRz3p0X-gGhD1-3LNhen-XDhO3g,1092 -django/contrib/redirects/locale/az/LC_MESSAGES/django.po,sha256=RGjd2J_pRdSkin4UlKxg7kc3aA8PCQRjDPXkpGZHdn0,1347 -django/contrib/redirects/locale/be/LC_MESSAGES/django.mo,sha256=SnSSaDw89oonokFQ7r0hdSM9nfH_H9rlKTN8aVlZhkY,1407 -django/contrib/redirects/locale/be/LC_MESSAGES/django.po,sha256=BR3YGf7Q5OqTP_rh1WNNi1BS8O1q76JMBHNdfA0PyGU,1638 -django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo,sha256=fEXrzyixSGCWaWu5XxVsjRKMlPwYkORpFtAiwNNShvM,1268 -django/contrib/redirects/locale/bg/LC_MESSAGES/django.po,sha256=_Xha-uOePDqOqOVmYgcR8auVgNT3CS-Z_V_vwyTlwfk,1493 -django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo,sha256=SbQh_pgxNCogvUFud7xW9T6NTAvpaQb2jngXCtpjICM,1319 -django/contrib/redirects/locale/bn/LC_MESSAGES/django.po,sha256=LgUuiPryDLSXxo_4KMCdjM5XC3BiRfINuEk0s5PUQYQ,1511 -django/contrib/redirects/locale/br/LC_MESSAGES/django.mo,sha256=Yt8xo5B5LJ9HB8IChCkj5mljFQAAKlaW_gurtF8q8Yw,1429 -django/contrib/redirects/locale/br/LC_MESSAGES/django.po,sha256=L2qPx6mZEVUNay1yYEweKBLr_fXVURCnACfsezfP_pI,1623 -django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo,sha256=0Yak4rXHjRRXLu3oYYzvS8qxvk2v4IFvUiDPA68a5YI,1115 -django/contrib/redirects/locale/bs/LC_MESSAGES/django.po,sha256=s9Nhx3H4074hlSqo1zgQRJbozakdJTwA1aTuMSqEJWw,1316 -django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo,sha256=sp3kaIhlTGdtYeHjZ8fQypdYKINsea8C0tufuCAlFBY,1106 -django/contrib/redirects/locale/ca/LC_MESSAGES/django.po,sha256=SMB90_SWZQF1cpWYjEzwy9w3Y9w8rtZND6WW-degBCs,1417 -django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo,sha256=M9xlGux_iL--U8s4M2qJNYKGD4j4OU6qfd09xb-w6m4,1175 -django/contrib/redirects/locale/cs/LC_MESSAGES/django.po,sha256=lM6-ofabOoT0RLvjHt3G1RHVnkAlaTL_EOb3lD4mF3o,1445 -django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo,sha256=NSGoK12A7gbtuAuzQEVFPNSZMqqmhHyRvTEn9PUm9So,1132 -django/contrib/redirects/locale/cy/LC_MESSAGES/django.po,sha256=jDmC64z5exPnO9zwRkBmpa9v3DBlaeHRhqZYPoWqiIY,1360 -django/contrib/redirects/locale/da/LC_MESSAGES/django.mo,sha256=h1ahMUSbE_eZzb8QOHztyb6mzwnlM6BE8nY13FRfkNM,1091 -django/contrib/redirects/locale/da/LC_MESSAGES/django.po,sha256=LSf5K4BLG1Anvya22J5nl1ayimtbCA0EutpxttyxtWo,1317 -django/contrib/redirects/locale/de/LC_MESSAGES/django.mo,sha256=8Zn398kFjKp-I9CLi6wAMw_0PmDrK4cJc1SjnQ_K8bY,1095 -django/contrib/redirects/locale/de/LC_MESSAGES/django.po,sha256=hXoA4dzgP29HekziQtDHeQb_GcRCK9xAhICB7gMeHgE,1315 -django/contrib/redirects/locale/dsb/LC_MESSAGES/django.mo,sha256=6am19dy81KrC5h1HuQwuZb_ucppLLenun3TtXP8dbhw,1217 -django/contrib/redirects/locale/dsb/LC_MESSAGES/django.po,sha256=xDQ7cJNnajtHRKFFNDs3FZDX0xjZoQiUYrg4BjatTrQ,1407 -django/contrib/redirects/locale/el/LC_MESSAGES/django.mo,sha256=kzCurtbtzdZsJOzqLbTtn3kjltOnBq6Nd8p8EFTllF0,1384 -django/contrib/redirects/locale/el/LC_MESSAGES/django.po,sha256=-lFhtPYSaYaS81Zh1CX9vxx0lvQDpAUsTBRNT48ne94,1611 -django/contrib/redirects/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/redirects/locale/en/LC_MESSAGES/django.po,sha256=3eabYEzjR72eSPB0YS6-y4thESdzhQMxAXwlwHX_bGs,1105 -django/contrib/redirects/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/redirects/locale/en_AU/LC_MESSAGES/django.po,sha256=CcP5GVZaImhRgohA5zy5K3rCscOlBtn81DB-V26-Wxg,958 -django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo,sha256=VscL30uJnV-eiQZITpBCy0xk_FfKdnMh4O9Hk4HGxww,1053 -django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po,sha256=loe8xIVjZ7eyteQNLPoa-QceBZdgky22dR6deK5ubmA,1246 -django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo,sha256=pZo0DSbfGGTHi-jgaTGp29kJK-iplaai-WXJoOPluMA,1138 -django/contrib/redirects/locale/eo/LC_MESSAGES/django.po,sha256=3AxFPHffYw3svHe-MR3zuVGLMtkJPL_SX_vB_ztx98c,1414 -django/contrib/redirects/locale/es/LC_MESSAGES/django.mo,sha256=RfNvdDrQeIfIw9I0dpnRjs10QzAFx-h-NRqYIfHx5gQ,1143 -django/contrib/redirects/locale/es/LC_MESSAGES/django.po,sha256=FePzvVGRJi6SmLm988JAbM3PADj1Bjn_XjGa7SFykkU,1392 -django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo,sha256=r692fI2lVfRy4G0y8iBc-j4gFB8URHZSLRFNVTHfhC0,1101 -django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po,sha256=UFTX4uDkhpd8Lo7ozQ_goAUkXsPlRuzdF8V5GMCbO7A,1316 -django/contrib/redirects/locale/es_CO/LC_MESSAGES/django.mo,sha256=wcAMOiqsgz2KEpRwirRH9FNoto6vmo_hxthrQJi0IHU,1147 -django/contrib/redirects/locale/es_CO/LC_MESSAGES/django.po,sha256=n8DM14vHekZRayH0B6Pm3L5XnSo4lto4ZAdu4OhcOmc,1291 -django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo,sha256=38fbiReibMAmC75BCCbyo7pA2VA3QvmRqVEo_K6Ejow,1116 -django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po,sha256=t7R6PiQ1bCc7jhfMrjHlZxVQ6BRlWT2Vv4XXhxBD_Oo,1397 -django/contrib/redirects/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 -django/contrib/redirects/locale/es_VE/LC_MESSAGES/django.po,sha256=f4XZW8OHjRJoztMJtSDCxd2_Mfy-XK44hLtigjGSsZY,958 -django/contrib/redirects/locale/et/LC_MESSAGES/django.mo,sha256=10TVT6ftY7UuZwJsUImwNuqo6mcHGgVG-YVNiyGd9Y4,1097 -django/contrib/redirects/locale/et/LC_MESSAGES/django.po,sha256=fI2Wf7WcAV2n-weyPMrQot-c7VOtciTks6QzGzh_RQE,1404 -django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo,sha256=c0en4U_IaOUGF0Tt8lMwCm2Fmv3bAiT-D8BO9pNVFIM,1119 -django/contrib/redirects/locale/eu/LC_MESSAGES/django.po,sha256=W-tZOxWXSOzUgZSKRG_CoOf7XjxYuQEMZp0D59EZK9A,1304 -django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo,sha256=WEtbdwPLTpiEZqTb6hJZMeLjL1snmGDWbzoYwa3BQnI,1241 -django/contrib/redirects/locale/fa/LC_MESSAGES/django.po,sha256=-XfgGc8mlwIWIk0NvtWZlwBrcDG3Mrj9k7FLDJMKQl4,1463 -django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo,sha256=mCSVYBr0r3ieZPuORu4t1bsxHVnXg5_4cV8C59RC-vk,1158 -django/contrib/redirects/locale/fi/LC_MESSAGES/django.po,sha256=5hNG5JNitRLU1YrFwSOnyiMRTlRw4rXgyTjRImXEy-g,1368 -django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo,sha256=I1P_kxyPHDIDVBDQN41n_YJ8XlQolXHGWA6zBicKdaQ,1115 -django/contrib/redirects/locale/fr/LC_MESSAGES/django.po,sha256=PNSeqiILgKrYphJu58dq557p_CELrVYjE3NMHaeMn70,1346 -django/contrib/redirects/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/redirects/locale/fy/LC_MESSAGES/django.po,sha256=D7xverCbf3kTCcFM8h7EKWM5DcxZRqeOSKDB1irbKeE,948 -django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo,sha256=blwOMshClFZKvOZXVvqENK_E_OkdS1ydbjQCDXcHXd4,1075 -django/contrib/redirects/locale/ga/LC_MESSAGES/django.po,sha256=76rdrG4GVbcKwgUQN4bB-B0t6hpivCA_ehf4uzGM_mY,1341 -django/contrib/redirects/locale/gd/LC_MESSAGES/django.mo,sha256=D_gqvGcUh2X9888kwDdFG1tjuAJUtQ2LhK4K4xCyiuI,1219 -django/contrib/redirects/locale/gd/LC_MESSAGES/django.po,sha256=PnKpFPVIzSpflfuobqU6Z5aV3ke5kNWJHWfDl1oCF3w,1397 -django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo,sha256=LoMrpBThJSmWzZ1wT66xGndnNCVCOq2eCEyo88qKwkA,1127 -django/contrib/redirects/locale/gl/LC_MESSAGES/django.po,sha256=d8qXhC2wI45yXtFJuMBgibzHsCkZSxAD3I6pVdpxlSU,1313 -django/contrib/redirects/locale/he/LC_MESSAGES/django.mo,sha256=cVPF03bdLcUiZt52toHoPXMqE5rEYPU0vEb5uIZwH_4,1128 -django/contrib/redirects/locale/he/LC_MESSAGES/django.po,sha256=Ycu8QAgIhJm-zN3_dlJelXKK87YQZV8Ahc5i7AUtkVk,1302 -django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo,sha256=onR8L7Kvkx6HgFLK7jT-wA_zjarBN8pyltG6BbKFIWU,1409 -django/contrib/redirects/locale/hi/LC_MESSAGES/django.po,sha256=fNv9_qwR9iS-pjWNXnrUFIqvc10lwg3bfj5lgdQOy1U,1649 -django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo,sha256=7wHi6Uu0czZhI6v0ndJJ1wSkalTRfn7D5ovyw8tr4U4,1207 -django/contrib/redirects/locale/hr/LC_MESSAGES/django.po,sha256=HtxZwZ-ymmf-XID0z5s7nGYg-4gJL8i6FDGWt9i4Wns,1406 -django/contrib/redirects/locale/hsb/LC_MESSAGES/django.mo,sha256=BWq3u0MayCCE_OEhXKmZpiGMgJ0FoVcx_1MhU1RwYCY,1202 -django/contrib/redirects/locale/hsb/LC_MESSAGES/django.po,sha256=1amIKvx5ekK-LFuGlYjDZECPdHB-3Jef7YkNIrixhZw,1396 -django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo,sha256=Co0W08iPHHkK9gAn-XCMM2EVkT3Z1YPyO8RGKiweGHg,1104 -django/contrib/redirects/locale/hu/LC_MESSAGES/django.po,sha256=iEjHBh8B7VMXZDdwTnyvNf7I8IjKjzB0uH9YRL3YcgA,1371 -django/contrib/redirects/locale/hy/LC_MESSAGES/django.mo,sha256=gT5x1TZXMNyBwfmQ-C_cOB60JGYdKIM7tVb3-J5d6nw,1261 -django/contrib/redirects/locale/hy/LC_MESSAGES/django.po,sha256=40QTpth2AVeoy9P36rMJC2C82YsBh_KYup19WL6zM6w,1359 -django/contrib/redirects/locale/ia/LC_MESSAGES/django.mo,sha256=PDB5ZQP6iH31xN6N2YmPZYjt6zzc88TRmh9_gAWH2U0,1152 -django/contrib/redirects/locale/ia/LC_MESSAGES/django.po,sha256=GXjbzY-cQz2QLx_iuqgijT7VUMcoNKL7prbP6yIbj8E,1297 -django/contrib/redirects/locale/id/LC_MESSAGES/django.mo,sha256=O7EKMm1GR4o1JXQV5vFP58nFK-__2evesMPJFucOxsc,1067 -django/contrib/redirects/locale/id/LC_MESSAGES/django.po,sha256=4qK_1_82j2RmRm4d6JWMskOCy1QIeuNral9xP1x2s10,1364 -django/contrib/redirects/locale/io/LC_MESSAGES/django.mo,sha256=vz7TWRML-DFDFapbEXTByb9-pRQwoeJ0ApSdh6nOzXY,1019 -django/contrib/redirects/locale/io/LC_MESSAGES/django.po,sha256=obStuMYYSQ7x2utkGS3gekdPfnsNAwp3DcNwlwdg1sI,1228 -django/contrib/redirects/locale/is/LC_MESSAGES/django.mo,sha256=aMjlGilYfP7clGriAp1Za60uCD40rvLt9sKXuYX3ABg,1040 -django/contrib/redirects/locale/is/LC_MESSAGES/django.po,sha256=nw5fxVV20eQqsk4WKg6cIiKttG3zsITSVzH4p5xBV8s,1299 -django/contrib/redirects/locale/it/LC_MESSAGES/django.mo,sha256=EPoKbYSdy3e2YOXqR_cRkQ6HK7htzxR1VSf8wfiOFTs,1086 -django/contrib/redirects/locale/it/LC_MESSAGES/django.po,sha256=WUJmtCWtqmZQqN3bl7XZ-7iu3W16Yve9g7aqjCoBTQw,1377 -django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo,sha256=gE1gwugGwKaDtpGI1PuThkuy8rBhxpoAO8Ecucp1iUY,1133 -django/contrib/redirects/locale/ja/LC_MESSAGES/django.po,sha256=aXGFOdUr825bNhtXi8ZMTLysw6MydtkIoztqPT1qO38,1402 -django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo,sha256=0aOLKrhUX6YAIMNyt6KES9q2iFk2GupEr76WeGlJMkk,1511 -django/contrib/redirects/locale/ka/LC_MESSAGES/django.po,sha256=bK3ULAIG00Nszoz74r-W3W8CihaoijYkWlc6sUqJXrg,1720 -django/contrib/redirects/locale/kab/LC_MESSAGES/django.mo,sha256=Ogx9NXK1Nfw4ctZfp-slIL81ziDX3f4DZ01OkVNY5Tw,699 -django/contrib/redirects/locale/kab/LC_MESSAGES/django.po,sha256=gI6aUPkXH-XzKrStDsMCMNfQKDEc-D1ffqE-Z-ItQuI,1001 -django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo,sha256=KVLc6PKL1MP_Px0LmpoW2lIvgLiSzlvoJ9062F-s3Zw,1261 -django/contrib/redirects/locale/kk/LC_MESSAGES/django.po,sha256=k3TtiYJ7x50M19DCu2eLcsCroKusJ3paiC2RvZ-920A,1473 -django/contrib/redirects/locale/km/LC_MESSAGES/django.mo,sha256=tcW1s7jvTG0cagtdRNT0jSNkhX-B903LKl7bK31ZvJU,1248 -django/contrib/redirects/locale/km/LC_MESSAGES/django.po,sha256=KJ4h1umpfFLdsWZtsfXoeOl6cUPUD97U4ISWt80UZ2U,1437 -django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo,sha256=-gqNBZVFvxqOiPWUb9jH4myXufHHfdyr_yROTfpk2jU,1396 -django/contrib/redirects/locale/kn/LC_MESSAGES/django.po,sha256=qFM2v3ys7E5u-WJE7CR-2IMrDTqFjNq96OQ1syMDWoI,1588 -django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo,sha256=RJRxocjiFAeDTEVtAawhpkv99axVeNmLDyBhwmjGCcM,1079 -django/contrib/redirects/locale/ko/LC_MESSAGES/django.po,sha256=QNDHQmvOgJnfpv9vMIIZVw--4YXSArJeOJks75m3zKo,1445 -django/contrib/redirects/locale/ky/LC_MESSAGES/django.mo,sha256=rAr9gnyGRhpSfct2VR6kPZTFuTCUWDUmUMHgPXg2s-Q,1241 -django/contrib/redirects/locale/ky/LC_MESSAGES/django.po,sha256=v2ZtrtmThD50BHmTVZs9v2zPUSM61g8muj5aDUOO06Q,1491 -django/contrib/redirects/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/redirects/locale/lb/LC_MESSAGES/django.po,sha256=Hv1CF9CC78YuVVNpklDtPJDU5-iIUeuXcljewmc9akg,946 -django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo,sha256=reiFMXJnvE4XUosbKjyvUFzl4IKjlJoFK1gVJE9Tbnc,1191 -django/contrib/redirects/locale/lt/LC_MESSAGES/django.po,sha256=3D3sSO1D9XyRpiT57l-0emy7V11uKCWJYqpEzmmpUzE,1377 -django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo,sha256=VqRgNikYESXSN9jtuwSV1g-0diIEFHZum0OBFKa8beI,1156 -django/contrib/redirects/locale/lv/LC_MESSAGES/django.po,sha256=CY9aWK4HDemKARRc9HrCdaFQgDnebK0BR4BYXUvdlcs,1418 -django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo,sha256=3XGgf2K60LclScPKcgw07TId6x535AW5jtGVJ9lC01A,1353 -django/contrib/redirects/locale/mk/LC_MESSAGES/django.po,sha256=Smsdpid5VByoxvnfzju_XOlp6aTPl8qshFptot3cRYM,1596 -django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo,sha256=IhSkvbgX9xfE4GypOQ7W7SDM-wOOqx1xgSTW7L1JofU,1573 -django/contrib/redirects/locale/ml/LC_MESSAGES/django.po,sha256=9KpXf88GRUB5I51Rj3q9qhvhjHFINuiJ9ig0SZdYE6k,1755 -django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo,sha256=14fdHC_hZrRaA0EAFzBJy8BHj4jMMX6l2e6rLLBtJ8E,1274 -django/contrib/redirects/locale/mn/LC_MESSAGES/django.po,sha256=7_QzUWf5l0P-7gM35p9UW7bOj33NabQq_zSrekUeZsY,1502 -django/contrib/redirects/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/redirects/locale/mr/LC_MESSAGES/django.po,sha256=0aGKTlriCJoP-Tirl-qCl7tjjpjURhgCjRGmurHVO3c,940 -django/contrib/redirects/locale/my/LC_MESSAGES/django.mo,sha256=H5-y9A3_1yIXJzC4sSuHqhURxhOlnYEL8Nvc0IF4zUE,549 -django/contrib/redirects/locale/my/LC_MESSAGES/django.po,sha256=MZGNt0jMQA6aHA6OmjvaC_ajvRWfUfDiKkV0j3_E480,1052 -django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo,sha256=1uEDrriymqt10Ixb6eizmJa7gZgU-CsHQ7-IRWv-txA,1111 -django/contrib/redirects/locale/nb/LC_MESSAGES/django.po,sha256=jc2kcpOGeh2uY1S8tzLbVLo-2mLIH1VjJO18nb6M6_I,1444 -django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo,sha256=TxTnBGIi5k0PKAjADeCuOAJQV5dtzLrsFRXBXtfszWI,1420 -django/contrib/redirects/locale/ne/LC_MESSAGES/django.po,sha256=5b5R-6AlSIQrDyTtcmquoW5xrQRGZwlxZpBpZfVo5t4,1607 -django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo,sha256=uGVQu5YnzWjf2aBtxY2ZdCHXz7M8T2GKz5EcQ20ODvM,1080 -django/contrib/redirects/locale/nl/LC_MESSAGES/django.po,sha256=fnEiqRdM-BOP2_6v4U-FC4cCmcVgXAXloiWKhYu-uOE,1400 -django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo,sha256=oiw7wSgqGUrHIdec6sIa7OlHXGME5iWA9h1UUlhl6Mw,1072 -django/contrib/redirects/locale/nn/LC_MESSAGES/django.po,sha256=pfu1XKvB-9DS_5dAbvjGzZCKAYxBEtnStJlBJxRSEXk,1267 -django/contrib/redirects/locale/os/LC_MESSAGES/django.mo,sha256=joQ-ibV9_6ctGMNPLZQLCx5fUamRQngs6_LDd_s9sMQ,1150 -django/contrib/redirects/locale/os/LC_MESSAGES/django.po,sha256=ZwFWiuGS9comy7r2kMnKuqaPOvVehVdAAuFvXM5ldxM,1358 -django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo,sha256=MY-OIDNXlZth-ZRoOJ52nlUPg_51_F5k0NBIpc7GZEw,748 -django/contrib/redirects/locale/pa/LC_MESSAGES/django.po,sha256=TPDTK2ZvDyvO1ob8Qfr64QDbHVWAREfEeBO5w9jf63E,1199 -django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo,sha256=aGAOoNeL9rFfo9e0-cF_BR_rar_EdsvVRu4Dst13-Fo,1243 -django/contrib/redirects/locale/pl/LC_MESSAGES/django.po,sha256=HN7UDhyn68qUz9F3vbiHZ-I6blirCP0_cb67OG0lkOs,1556 -django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo,sha256=WocPaVk3fQEz_MLmGVtFBGwsThD-gNU7GDocqEbeaBA,1129 -django/contrib/redirects/locale/pt/LC_MESSAGES/django.po,sha256=ptCzoE41c9uFAbgSjb6VHSFYPEUv_51YyBdoThXN3XA,1350 -django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo,sha256=iiTUzOttRMwbc9WCChjKZHSgHCAMUBtgie37GVCmjLs,1144 -django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po,sha256=h8LeJYsNnEx_voB2nThLLkU3ROpmkYpIzqMe6NxmdTM,1537 -django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo,sha256=D8FkmV6IxZOn5QAPBu9PwhStBpVQWudU62wKa7ADfJY,1158 -django/contrib/redirects/locale/ro/LC_MESSAGES/django.po,sha256=Z_-pDi2-A7_KXrEQtFlAJ_KLO0vXFKCbMphsNlqfNJk,1477 -django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo,sha256=Psqbikq4od0YG0gSH0VfndoLe7K9YmS0wuTfdbShi9U,1397 -django/contrib/redirects/locale/ru/LC_MESSAGES/django.po,sha256=GLTJ0zMfrAwpjUe9atUVaahckw4jbCsbexDWhO-qTDk,1685 -django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo,sha256=4U3JX_UnnYmBNtKseSUobgTslILeZWfn37Dg7q52svY,1160 -django/contrib/redirects/locale/sk/LC_MESSAGES/django.po,sha256=8tDwfdkGAXo4eAR66nfkIdegbyjc3-qBfrMZgrf_cF4,1376 -django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo,sha256=GAZtOFSUxsOHdXs3AzT40D-3JFWIlNDZU_Z-cMvdaHo,1173 -django/contrib/redirects/locale/sl/LC_MESSAGES/django.po,sha256=gkZTyxNh8L2gNxyLVzm-M1HTiK8KDvughTa2MK9NzWo,1351 -django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo,sha256=PPP6hwk_Rdh1PAui4uYeO0WYDiqp2s9xkff3otyU0Vw,1100 -django/contrib/redirects/locale/sq/LC_MESSAGES/django.po,sha256=4CMn93YtrtEWnyZg3grYTlgYrZfMGaBibCZsTemkYng,1328 -django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo,sha256=gblzSVGuZh9aVAihdurzG8BzVDqSPb3y6IE9ViKRJH8,1322 -django/contrib/redirects/locale/sr/LC_MESSAGES/django.po,sha256=fSYMyx3333sZ_9qVIeHzdQ35O497HOAMjRq49oreccA,1579 -django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=PXtaFzKeUNt_YJzAyEmXL4xSBcHhZJlmr8_W3nn1LdA,1175 -django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po,sha256=OpWxCIMvZomPScUKKGr4XwXi3_2EvOo29vtemc4BG_E,1389 -django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo,sha256=y1KpTjzF2FWY_x373UyaEFTTNYPT6hroB6zvA1ev010,1147 -django/contrib/redirects/locale/sv/LC_MESSAGES/django.po,sha256=7Us64PRHRyIZ8D7lY6HCef9xXnoSfwWI3YYtlNEaFSo,1362 -django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo,sha256=oJnTp9CTgNsg5TSOV_aPZIUXdr6-l65hAZbaARZCO2w,1078 -django/contrib/redirects/locale/sw/LC_MESSAGES/django.po,sha256=CTVwA3O7GUQb7l1WpbmT8kOfqr7DpqnIyQt3HWJ6YTQ,1245 -django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo,sha256=AE6Py2_CV2gQKjKQAa_UgkLT9i61x3i1hegQpRGuZZM,1502 -django/contrib/redirects/locale/ta/LC_MESSAGES/django.po,sha256=ojdq8p4HnwtK0n6By2I6_xuucOpJIobJEGRMGc_TrS8,1700 -django/contrib/redirects/locale/te/LC_MESSAGES/django.mo,sha256=Gtcs4cbgrD7-bSkPKiPbM5DcjONS2fSdHhvWdbs_E1M,467 -django/contrib/redirects/locale/te/LC_MESSAGES/django.po,sha256=RT-t3TjcOLyNQQWljVrIcPWErKssh_HQMyGujloy-EI,939 -django/contrib/redirects/locale/tg/LC_MESSAGES/django.mo,sha256=6e4Pk9vX1csvSz80spVLhNTd3N251JrXaCga9n60AP8,782 -django/contrib/redirects/locale/tg/LC_MESSAGES/django.po,sha256=2Cmle5usoNZBo8nTfAiqCRq3KqN1WKKdc-mogUOJm9I,1177 -django/contrib/redirects/locale/th/LC_MESSAGES/django.mo,sha256=1l6eO0k1KjcmuRJKUS4ZdtJGhAUmUDMAMIeNwEobQqY,1331 -django/contrib/redirects/locale/th/LC_MESSAGES/django.po,sha256=DVVqpGC6zL8Hy8e6P8ZkhKbvcMJmXV5euLxmfoTCtms,1513 -django/contrib/redirects/locale/tk/LC_MESSAGES/django.mo,sha256=KhWOArsItusTEzoZZflZ75hl9hhMU0lkm_p8foe8QiU,1113 -django/contrib/redirects/locale/tk/LC_MESSAGES/django.po,sha256=nBeAakgUKhHB21jEiwFrwLSyrJq2XYl8-N6Tq1Klq_Q,1292 -django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo,sha256=JiOhL6RrAmUHv_ljhAb20__QFEKbv1OznJTm9RKDP_w,1099 -django/contrib/redirects/locale/tr/LC_MESSAGES/django.po,sha256=3Q80rTAcOtqptUPzct6E6PrQEDj5XzhQcXwjtvm9iBs,1369 -django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo,sha256=Hf1JXcCGNwedxy1nVRM_pQ0yUebC-tvOXr7P0h86JyI,1178 -django/contrib/redirects/locale/tt/LC_MESSAGES/django.po,sha256=2WCyBQtqZk-8GXgtu-x94JYSNrryy2QoMnirhiBrgV0,1376 -django/contrib/redirects/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/redirects/locale/udm/LC_MESSAGES/django.po,sha256=xsxlm4itpyLlLdPQRIHLuvTYRvruhM3Ezc9jtp3XSm4,934 -django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo,sha256=nCpHZGF8aYaw3UDrSXugypDHEIkWYHXncmyC_YHzxw0,1414 -django/contrib/redirects/locale/uk/LC_MESSAGES/django.po,sha256=-UDqtKOxcTA4C4O0QW7GnjtnXtEmwDfvfLmNQFMI1No,1700 -django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo,sha256=CQkt-yxyAaTd_Aj1ZZC8s5-4fI2TRyTEZ-SYJZgpRrQ,1138 -django/contrib/redirects/locale/ur/LC_MESSAGES/django.po,sha256=CkhmN49PvYTccvlSRu8qGpcbx2C-1aY7K3Lq1VC2fuM,1330 -django/contrib/redirects/locale/uz/LC_MESSAGES/django.mo,sha256=vD0Y920SSsRsLROKFaU6YM8CT5KjQxJcgMh5bZ4Pugo,743 -django/contrib/redirects/locale/uz/LC_MESSAGES/django.po,sha256=G2Rj-6g8Vse2Bp8L_hGIO84S--akagMXj8gSa7F2lK4,1195 -django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo,sha256=BquXycJKh-7-D9p-rGUNnjqzs1d6S1YhEJjFW8_ARFA,1106 -django/contrib/redirects/locale/vi/LC_MESSAGES/django.po,sha256=xsCASrGZNbQk4d1mhsTZBcCpPJ0KO6Jr4Zz1wfnL67s,1301 -django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=Ex7DF-VmwQ-8Un1yWFklwR7Hw-0Ck9CAszHQmRt9NQs,1076 -django/contrib/redirects/locale/zh_Hans/LC_MESSAGES/django.po,sha256=BmNLoJnEHoOpEhZnvWr5Kmos-VJiMkXdinYPQV3ZG2U,1422 -django/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=-H2o5p5v8j5RqKZ6vOsWToFWGOn8CaO3KSTiU42Zqjk,1071 -django/contrib/redirects/locale/zh_Hant/LC_MESSAGES/django.po,sha256=fQicS5nmJLgloKM83l6NcSJp36-Wjn2Dl9jf03e0pGo,1334 -django/contrib/redirects/middleware.py,sha256=kJfTIj8G2loRgiEJkqiYEredzt4xhNAfDaTZkk9Coyo,1926 -django/contrib/redirects/migrations/0001_initial.py,sha256=-JUuBA7Ynmpo_RHV-_uQR2x-yT6RbJs9SwTpA_PwuAQ,1498 -django/contrib/redirects/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/redirects/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/redirects/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/redirects/models.py,sha256=RXshZ0GIrrT3tY6poA1eX95PZjnWBEFuPvea1reutFQ,991 -django/contrib/sessions/__init__.py,sha256=W7kKt-gCROzrUA6UpIRAit3SHa-coN4_A4fphGikCEk,67 -django/contrib/sessions/__pycache__/__init__.cpython-38.pyc,, -django/contrib/sessions/__pycache__/apps.cpython-38.pyc,, -django/contrib/sessions/__pycache__/base_session.cpython-38.pyc,, -django/contrib/sessions/__pycache__/exceptions.cpython-38.pyc,, -django/contrib/sessions/__pycache__/middleware.cpython-38.pyc,, -django/contrib/sessions/__pycache__/models.cpython-38.pyc,, -django/contrib/sessions/__pycache__/serializers.cpython-38.pyc,, -django/contrib/sessions/apps.py,sha256=q_fkp7a7_1GT14XHkHgNIET0sItgfBeFT7B137_KeZM,194 -django/contrib/sessions/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/backends/__pycache__/__init__.cpython-38.pyc,, -django/contrib/sessions/backends/__pycache__/base.cpython-38.pyc,, -django/contrib/sessions/backends/__pycache__/cache.cpython-38.pyc,, -django/contrib/sessions/backends/__pycache__/cached_db.cpython-38.pyc,, -django/contrib/sessions/backends/__pycache__/db.cpython-38.pyc,, -django/contrib/sessions/backends/__pycache__/file.cpython-38.pyc,, -django/contrib/sessions/backends/__pycache__/signed_cookies.cpython-38.pyc,, -django/contrib/sessions/backends/base.py,sha256=9wY0ElNjpU4hk_HYB2eypKHEiIM9P1kzZ2dUhoaSz2w,13041 -django/contrib/sessions/backends/cache.py,sha256=-qeSz07gUidiY_xq7imMJ3SP17J_rLsIO50KxOhq_8E,2713 -django/contrib/sessions/backends/cached_db.py,sha256=c9JtGXxyJYRT7MMVrqwo0jw1v3JCpaBNXeL8d1tAfBE,2011 -django/contrib/sessions/backends/db.py,sha256=zzhv0nQ4OIFeyM2QXrIUG26l_IJosagKaGOI2NcZnz4,3770 -django/contrib/sessions/backends/file.py,sha256=0L3yDX0_eFtP9_GVl79OpRfHRtJ9o5vOUsRCYHFHOEA,7740 -django/contrib/sessions/backends/signed_cookies.py,sha256=L43gDpk-RFbMF_-fluEjzyUO5nKrEiCTX0yZs7cd5eI,2665 -django/contrib/sessions/base_session.py,sha256=5FofwClB_ukwCsXPfJbzUvKoYaMQ78B_lWXU0fqSg1k,1490 -django/contrib/sessions/exceptions.py,sha256=epvfG9haHc8p34Ic6IqUSC-Yj06Ruh2TSm9G6HQMdno,256 -django/contrib/sessions/locale/af/LC_MESSAGES/django.mo,sha256=0DS0pgVrMN-bUimDfesgHs8Lgr0loz2c6nJdz58RxyQ,717 -django/contrib/sessions/locale/af/LC_MESSAGES/django.po,sha256=ZJRLBshQCAiTTAUycdB3MZIadLeHR5LxbSlDvSWLnEo,838 -django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo,sha256=yoepqaR68PTGLx--cAOzP94Sqyl5xIYpeQ0IFWgY380,846 -django/contrib/sessions/locale/ar/LC_MESSAGES/django.po,sha256=ZgwtBYIdtnqp_8nKHXF1NVJFzQU81-3yv9b7STrQHMc,995 -django/contrib/sessions/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=_iSasR22CxvNWfei6aE_24woPhhhvNzQl5FUO_649dc,817 -django/contrib/sessions/locale/ar_DZ/LC_MESSAGES/django.po,sha256=vop5scstamgFSnO_FWXCEnI7R1N26t7jy_mZUAfETcY,978 -django/contrib/sessions/locale/ast/LC_MESSAGES/django.mo,sha256=hz2m-PkrHby2CKfIOARj6kCzisT-Vs0syfDSTx_iVVw,702 -django/contrib/sessions/locale/ast/LC_MESSAGES/django.po,sha256=M90j1Nx6oDJ16hguUkfKYlyb5OymUeZ5xzPixWxSC7I,846 -django/contrib/sessions/locale/az/LC_MESSAGES/django.mo,sha256=_4XcYdtRasbCjRoaWGoULsXX2cEa--KdRdqbnGoaRuM,731 -django/contrib/sessions/locale/az/LC_MESSAGES/django.po,sha256=qYd7vz6A-hHQNwewzI6wEsxRVLdoc2xLGm1RPW0Hxc4,891 -django/contrib/sessions/locale/be/LC_MESSAGES/django.mo,sha256=FHZ72QuOd-vAOjOXisLs4CaEk7uZuzjO_EfUSB6754M,854 -django/contrib/sessions/locale/be/LC_MESSAGES/django.po,sha256=tHsYVn3XNTcukB0SrHUWP1iV763rrQHCimOyJHRPiek,1023 -django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo,sha256=DGp3j3E0-5bBjFCKx9c6Jcz9ZaXysd2DgVPuxROWDmU,783 -django/contrib/sessions/locale/bg/LC_MESSAGES/django.po,sha256=AEgnW2F8S85JZOh4JVJ6nLynsmHRZOBBoOluVxHosVo,942 -django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo,sha256=0BdFN7ou9tmoVG00fCA-frb1Tri3iKz43W7SWal398s,762 -django/contrib/sessions/locale/bn/LC_MESSAGES/django.po,sha256=LycmTel6LXV2HGGN6qzlAfID-cVEQCNnW1Nv_hbWXJk,909 -django/contrib/sessions/locale/br/LC_MESSAGES/django.mo,sha256=6ubPQUyXX08KUssyVZBMMkTlD94mlA6wzsteAMiZ8C8,1027 -django/contrib/sessions/locale/br/LC_MESSAGES/django.po,sha256=LKxGGHOQejKpUp18rCU2FXW8D_H3WuP_P6dPlEluwcE,1201 -django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo,sha256=M7TvlJMrSUAFhp7oUSpUKejnbTuIK-19yiGBBECl9Sc,759 -django/contrib/sessions/locale/bs/LC_MESSAGES/django.po,sha256=Ur0AeRjXUsLgDJhcGiw75hRk4Qe98DzPBOocD7GFDRQ,909 -django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo,sha256=tbaZ48PaihGGD9-2oTKiMFY3kbXjU59nNciCRINOBNk,738 -django/contrib/sessions/locale/ca/LC_MESSAGES/django.po,sha256=tJuJdehKuD9aXOauWOkE5idQhsVsLbeg1Usmc6N_SP0,906 -django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo,sha256=wEFP4NNaRQDbcbw96UC906jN4rOrlPJMn60VloXr944,759 -django/contrib/sessions/locale/cs/LC_MESSAGES/django.po,sha256=7XkKESwfOmbDRDbUYr1f62-fDOuyI-aCqLGaEiDrmX8,962 -django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo,sha256=GeWVeV2PvgLQV8ecVUA2g3-VvdzMsedgIDUSpn8DByk,774 -django/contrib/sessions/locale/cy/LC_MESSAGES/django.po,sha256=zo18MXtkEdO1L0Q6ewFurx3lsEWTCdh0JpQJTmvw5bY,952 -django/contrib/sessions/locale/da/LC_MESSAGES/django.mo,sha256=7_YecCzfeYQp9zVYt2B7MtjhAAuVb0BcK2D5Qv_uAbg,681 -django/contrib/sessions/locale/da/LC_MESSAGES/django.po,sha256=qX_Oo7niVo57bazlIYFA6bnVmPBclUUTWvZFYNLaG04,880 -django/contrib/sessions/locale/de/LC_MESSAGES/django.mo,sha256=N3kTal0YK9z7Te3zYGLbJmoSB6oWaviWDLGdPlsPa9g,721 -django/contrib/sessions/locale/de/LC_MESSAGES/django.po,sha256=0qnfDeCUQN2buKn6R0MvwhQP05XWxSu-xgvfxvnJe3k,844 -django/contrib/sessions/locale/dsb/LC_MESSAGES/django.mo,sha256=RABl3WZmY6gLh4IqmTUhoBEXygDzjp_5lLF1MU9U5fA,810 -django/contrib/sessions/locale/dsb/LC_MESSAGES/django.po,sha256=cItKs5tASYHzDxfTg0A_dgBQounpzoGyOEFn18E_W_g,934 -django/contrib/sessions/locale/el/LC_MESSAGES/django.mo,sha256=QbTbmcfgc8_4r5hFrIghDhk2XQ4f8_emKmqupMG2ah0,809 -django/contrib/sessions/locale/el/LC_MESSAGES/django.po,sha256=HeaEbpVmFhhrZt2NsZteYaYoeo8FYKZF0IoNJwtzZkc,971 -django/contrib/sessions/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/sessions/locale/en/LC_MESSAGES/django.po,sha256=afaM-IIUZtcRZduojUTS8tT0w7C4Ya9lXgReOvq_iF0,804 -django/contrib/sessions/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/sessions/locale/en_AU/LC_MESSAGES/django.po,sha256=gvnvUpim1l7oImnzPXqBww-Uz0TgGjzCLaaszpdkQ10,761 -django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo,sha256=T5NQCTYkpERfP9yKbUvixT0VdBt1zGmGB8ITlkVc420,707 -django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po,sha256=1ks_VE1qpEfPcyKg0HybkTG0-DTttTHTfUPhQCR53sw,849 -django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo,sha256=eBvYQbZS_WxVV3QCSZAOyHNIljC2ZXxVc4mktUuXVjI,727 -django/contrib/sessions/locale/eo/LC_MESSAGES/django.po,sha256=Ru9xicyTgHWVHh26hO2nQNFRQmwBnYKEagsS8TZRv3E,917 -django/contrib/sessions/locale/es/LC_MESSAGES/django.mo,sha256=jbHSvHjO2OCLlBD66LefocKOEbefWbPhj-l3NugiWuc,734 -django/contrib/sessions/locale/es/LC_MESSAGES/django.po,sha256=fY5WXeONEXHeuBlH0LkvzdZ2CSgbvLZ8BJc429aIbhI,909 -django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo,sha256=_8icF2dMUWj4WW967rc5npgndXBAdJrIiz_VKf5D-Rw,694 -django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po,sha256=AnmvjeOA7EBTJ6wMOkCl8JRLVYRU8KS0egPijcKutns,879 -django/contrib/sessions/locale/es_CO/LC_MESSAGES/django.mo,sha256=UP7ia0gV9W-l0Qq5AS4ZPadJtml8iuzzlS5C9guMgh8,754 -django/contrib/sessions/locale/es_CO/LC_MESSAGES/django.po,sha256=_XeiiRWvDaGjofamsRHr5up_EQvcw0w-GLLeWK27Af8,878 -django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo,sha256=MDM0K3xMvyf8ymvAurHYuacpxfG_YfJFyNnp1uuc6yY,756 -django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po,sha256=Y7VNa16F_yyK7_XJvF36rR2XNW8aBJK4UDweufyXpxE,892 -django/contrib/sessions/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 -django/contrib/sessions/locale/es_VE/LC_MESSAGES/django.po,sha256=zWjgB0AmsmhX2tjk1PgldttqY56Czz8epOVCaYWXTLU,761 -django/contrib/sessions/locale/et/LC_MESSAGES/django.mo,sha256=aL1jZWourEC7jtjsuBZHD-Gw9lpL6L1SoqjTtzguxD0,737 -django/contrib/sessions/locale/et/LC_MESSAGES/django.po,sha256=VNBYohAOs59jYWkjVMY-v2zwVy5AKrtBbFRJZLwdCFg,899 -django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo,sha256=M9piOB_t-ZnfN6pX-jeY0yWh2S_5cCuo1oGiy7X65A4,728 -django/contrib/sessions/locale/eu/LC_MESSAGES/django.po,sha256=bHdSoknoH0_dy26e93tWVdO4TT7rnCPXlSLPsYAhwyw,893 -django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo,sha256=6DdJcqaYuBnhpFFHR42w-RqML0eQPFMAUEEDY0Redy8,755 -django/contrib/sessions/locale/fa/LC_MESSAGES/django.po,sha256=NgJlLPsS9FXjRzKqGgUTkNG9puYrBRf0KQK-QqXMIxQ,916 -django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo,sha256=oAugvlTEvJmG8KsZw09WcfnifYY5oHnGo4lxcxqKeaY,721 -django/contrib/sessions/locale/fi/LC_MESSAGES/django.po,sha256=BVVrjbZZtLGAuZ9HK63p769CbjZFZMlS4BewSMfNMKU,889 -django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo,sha256=aDGYdzx2eInF6IZ-UzPDEJkuYVPnvwVND3qVuSfJNWw,692 -django/contrib/sessions/locale/fr/LC_MESSAGES/django.po,sha256=hARxGdtBOzEZ_iVyzkNvcKlgyM8fOkdXTH3upj2XFYM,893 -django/contrib/sessions/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/sessions/locale/fy/LC_MESSAGES/django.po,sha256=U-VEY4WbmIkmrnPK4Mv-B-pbdtDzusBCVmE8iHyvzFU,751 -django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo,sha256=zTrydRCRDiUQwF4tQ3cN1-5w36i6KptagsdA5_SaGy0,747 -django/contrib/sessions/locale/ga/LC_MESSAGES/django.po,sha256=Qpk1JaUWiHSEPdgBk-O_KfvGzwlZ4IAA6c6-nsJe400,958 -django/contrib/sessions/locale/gd/LC_MESSAGES/django.mo,sha256=Yi8blY_fUD5YTlnUD6YXZvv1qjm4QDriO6CJIUe1wIk,791 -django/contrib/sessions/locale/gd/LC_MESSAGES/django.po,sha256=fEa40AUqA5vh743Zqv0FO2WxSFXGYk4IzUR4BoaP-C4,890 -django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo,sha256=uQ2ZmtUNoVCB2mSlMGSy-j4a_hu9PBfJDo796d8beFA,701 -django/contrib/sessions/locale/gl/LC_MESSAGES/django.po,sha256=FovTLHdVK15N9FI9lFFAOP4zt7GsvO0kKdocgeVDkNk,902 -django/contrib/sessions/locale/he/LC_MESSAGES/django.mo,sha256=qhgjSWfGAOgl-i7iwzSrJttx88xcj1pB0iLkEK64mJU,809 -django/contrib/sessions/locale/he/LC_MESSAGES/django.po,sha256=gtBgkC2bpVyWm8B5pjV3-9tBo0xqUsJuJz2neN79isg,969 -django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo,sha256=naqxOjfAnNKy3qqnUG-4LGf9arLRJpjyWWmSj5tEfao,759 -django/contrib/sessions/locale/hi/LC_MESSAGES/django.po,sha256=WnTGvOz9YINMcUJg2BYCaHceZLKaTfsba_0AZtRNP38,951 -django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo,sha256=axyJAmXmadpFxIhu8rroVD8NsGGadQemh9-_ZDo7L1U,819 -django/contrib/sessions/locale/hr/LC_MESSAGES/django.po,sha256=3G-qOYXBO-eMWWsa5LwTCW9M1oF0hlWgEz7hAK8hJqI,998 -django/contrib/sessions/locale/hsb/LC_MESSAGES/django.mo,sha256=_OXpOlCt4KU0i65Iw4LMjSsyn__E9wH20l9vDNBSEzw,805 -django/contrib/sessions/locale/hsb/LC_MESSAGES/django.po,sha256=yv3vX_UCDrdl07GQ79Mnytwgz2oTvySYOG9enzMpFJA,929 -django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo,sha256=ik40LnsWkKYEUioJB9e11EX9XZ-qWMa-S7haxGhM-iI,727 -django/contrib/sessions/locale/hu/LC_MESSAGES/django.po,sha256=1-UWEEsFxRwmshP2x4pJbitWIGZ1YMeDDxnAX-XGNxc,884 -django/contrib/sessions/locale/hy/LC_MESSAGES/django.mo,sha256=x6VQWGdidRJFUJme-6jf1pcitktcQHQ7fhmw2UBej1Q,815 -django/contrib/sessions/locale/hy/LC_MESSAGES/django.po,sha256=eRMa3_A2Vx195mx2lvza1v-wcEcEeMrU63f0bgPPFjc,893 -django/contrib/sessions/locale/ia/LC_MESSAGES/django.mo,sha256=-o4aQPNJeqSDRSLqcKuYvJuKNBbFqDJDe3IzHgSgZeQ,744 -django/contrib/sessions/locale/ia/LC_MESSAGES/django.po,sha256=PULLDd3QOIU03kgradgQzT6IicoPhLPlUvFgRl-tGbA,869 -django/contrib/sessions/locale/id/LC_MESSAGES/django.mo,sha256=mOaIF0NGOO0-dt-nhHL-i3cfvt9-JKTbyUkFWPqDS9Y,705 -django/contrib/sessions/locale/id/LC_MESSAGES/django.po,sha256=EA6AJno3CaFOO-dEU9VQ_GEI-RAXS0v0uFqn1RJGjEs,914 -django/contrib/sessions/locale/io/LC_MESSAGES/django.mo,sha256=_rqAY6reegqmxmWc-pW8_kDaG9zflZuD-PGOVFsjRHo,683 -django/contrib/sessions/locale/io/LC_MESSAGES/django.po,sha256=tbKMxGuB6mh_m0ex9rO9KkTy6qyuRW2ERrQsGwmPiaw,840 -django/contrib/sessions/locale/is/LC_MESSAGES/django.mo,sha256=3QeMl-MCnBie9Sc_aQ1I7BrBhkbuArpoSJP95UEs4lg,706 -django/contrib/sessions/locale/is/LC_MESSAGES/django.po,sha256=LADIFJv8L5vgDJxiQUmKPSN64zzzrIKImh8wpLBEVWQ,853 -django/contrib/sessions/locale/it/LC_MESSAGES/django.mo,sha256=qTY3O-0FbbpZ5-BR5xOJWP0rlnIkBZf-oSawW_YJWlk,726 -django/contrib/sessions/locale/it/LC_MESSAGES/django.po,sha256=hEv0iTGLuUvEBk-lF-w7a9P3ifC0-eiodNtuSc7cXhg,869 -django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo,sha256=hbv9FzWzXRIGRh_Kf_FLQB34xfmPU_9RQKn9u1kJqGU,757 -django/contrib/sessions/locale/ja/LC_MESSAGES/django.po,sha256=ppGx5ekOWGgDF3vzyrWsqnFUZ-sVZZhiOhvAzl_8v54,920 -django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo,sha256=VZ-ysrDbea_-tMV-1xtlTeW62IAy2RWR94V3Y1iSh4U,803 -django/contrib/sessions/locale/ka/LC_MESSAGES/django.po,sha256=MDOG7BAO8Ez75CfgERCq1zA3syJbvQKpc4wBVlryfqQ,950 -django/contrib/sessions/locale/kab/LC_MESSAGES/django.mo,sha256=W_yE0NDPJrVznA2Qb89VuprJNwyxSg59ovvjkQe6mAs,743 -django/contrib/sessions/locale/kab/LC_MESSAGES/django.po,sha256=FJeEuv4P3NT_PpWHEUsQVSWXu65nYkJ6Z2AlbSKb0ZA,821 -django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo,sha256=FROGz_MuIhsIU5_-EYV38cHnRZrc3-OxxkBeK0ax9Rk,810 -django/contrib/sessions/locale/kk/LC_MESSAGES/django.po,sha256=l5gu1XfvRMNhCHBl-NTGoUHWa0nRSxqSDt0zljpr7Kg,1024 -django/contrib/sessions/locale/km/LC_MESSAGES/django.mo,sha256=VOuKsIG2DEeCA5JdheuMIeJlpmAhKrI6lD4KWYqIIPk,929 -django/contrib/sessions/locale/km/LC_MESSAGES/django.po,sha256=09i6Nd_rUK7UqFpJ70LMXTR6xS0NuGETRLe0CopMVBk,1073 -django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo,sha256=X5svX5_r3xZUy4OjUuo2gItc5PIOSjZOvE5IZwnM6Io,814 -django/contrib/sessions/locale/kn/LC_MESSAGES/django.po,sha256=Rq-I2veQe5l7Q7HG9pRY_mKeNcxhSRDgqphKbuNpoNc,961 -django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo,sha256=EUyVQYGtiFJg01mP30a0iOqBYHvpzHAcGTZM28Ubs5Q,700 -django/contrib/sessions/locale/ko/LC_MESSAGES/django.po,sha256=PjntvSzRz_Aekj9VFhGsP5yO6rAsxTMzwFj58JqToIU,855 -django/contrib/sessions/locale/ky/LC_MESSAGES/django.mo,sha256=ME7YUgKOYQz9FF_IdrqHImieEONDrkcn4T3HxTZKSV0,742 -django/contrib/sessions/locale/ky/LC_MESSAGES/django.po,sha256=JZHTs9wYmlWzilRMyp-jZWFSzGxWtPiQefPmLL9yhtM,915 -django/contrib/sessions/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/sessions/locale/lb/LC_MESSAGES/django.po,sha256=3igeAnQjDg6D7ItBkQQhyBoFJOZlBxT7NoZiExwD-Fo,749 -django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo,sha256=L9w8-qxlDlCqR_2P0PZegfhok_I61n0mJ1koJxzufy4,786 -django/contrib/sessions/locale/lt/LC_MESSAGES/django.po,sha256=7e5BmXuaHHgGX5W1eC6wIH2QyMTNOg4JZjkZM0i-jTc,952 -django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo,sha256=exEzDUNwNS0GLsUkKPu_SfqBxU7T6VRA_T2schIQZ88,753 -django/contrib/sessions/locale/lv/LC_MESSAGES/django.po,sha256=fBgQEbsGg1ECVm1PFDrS2sfKs2eqmsqrSYzx9ELotNQ,909 -django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo,sha256=4oTWp8-qzUQBiqG32hNieABgT3O17q2C4iEhcFtAxLA,816 -django/contrib/sessions/locale/mk/LC_MESSAGES/django.po,sha256=afApb5YRhPXUWR8yF_TTym73u0ov7lWiwRda1-uNiLY,988 -django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo,sha256=tff5TsHILSV1kAAB3bzHQZDB9fgMglZJTofzCunGBzc,854 -django/contrib/sessions/locale/ml/LC_MESSAGES/django.po,sha256=eRkeupt42kUey_9vJmlH8USshnXPZ8M7aYHq88u-5iY,1016 -django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo,sha256=CcCH2ggVYrD29Q11ZMthcscBno2ePkQDbZfoYquTRPM,784 -django/contrib/sessions/locale/mn/LC_MESSAGES/django.po,sha256=nvcjbJzXiDvWFXrM5CxgOQIq8XucsZEUVdYkY8LnCRE,992 -django/contrib/sessions/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/sessions/locale/mr/LC_MESSAGES/django.po,sha256=FQRdZ-qIDuvTCrwbnWfxoxNi8rywLSebcNbxGvr-hb0,743 -django/contrib/sessions/locale/my/LC_MESSAGES/django.mo,sha256=8zzzyfJYok969YuAwDUaa6YhxaSi3wcXy3HRNXDb_70,872 -django/contrib/sessions/locale/my/LC_MESSAGES/django.po,sha256=mfs0zRBI0tugyyEfXBZzZ_FMIohydq6EYPZGra678pw,997 -django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo,sha256=hfJ1NCFgcAAtUvNEpaZ9b31PyidHxDGicifUWANIbM8,717 -django/contrib/sessions/locale/nb/LC_MESSAGES/django.po,sha256=yXr6oYuiu01oELdQKuztQFWz8x5C2zS5OzEfU9MHJsU,908 -django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo,sha256=slFgMrqGVtLRHdGorLGPpB09SM92_WnbnRR0rlpNlPQ,802 -django/contrib/sessions/locale/ne/LC_MESSAGES/django.po,sha256=1vyoiGnnaB8f9SFz8PGfzpw6V_NoL78DQwjjnB6fS98,978 -django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo,sha256=84BTlTyxa409moKbQMFyJisI65w22p09qjJHBAmQe-g,692 -django/contrib/sessions/locale/nl/LC_MESSAGES/django.po,sha256=smRr-QPGm6h6hdXxghggWES8b2NnL7yDQ07coUypa8g,909 -django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo,sha256=042gOyJuXb51nG7gxI_rYst9QWuB3thtAeevKpDLFVQ,695 -django/contrib/sessions/locale/nn/LC_MESSAGES/django.po,sha256=j2kDL1vDsHoBX_ky6_S0tWxaqFst6v7OLqqlt6N2ECI,842 -django/contrib/sessions/locale/os/LC_MESSAGES/django.mo,sha256=xVux1Ag45Jo9HQBbkrRzcWrNjqP09nMQl16jIh0YVlo,732 -django/contrib/sessions/locale/os/LC_MESSAGES/django.po,sha256=1hG5Vsz2a2yW05_Z9cTNrBKtK9VRPZuQdx4KJ_0n98o,892 -django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo,sha256=qEx4r_ONwXK1-qYD5uxxXEQPqK5I6rf38QZoUSm7UVA,771 -django/contrib/sessions/locale/pa/LC_MESSAGES/django.po,sha256=M7fmVGP8DtZGEuTV3iJhuWWqILVUTDZvUey_mrP4_fM,918 -django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo,sha256=F9CQb7gQ1ltP6B82JNKu8IAsTdHK5TNke0rtDIgNz3c,828 -django/contrib/sessions/locale/pl/LC_MESSAGES/django.po,sha256=C_MJBB-vwTZbx-t4-mzun-RxHhdOVv04b6xrWdnTv8E,1084 -django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo,sha256=dlJF7hF4GjLmQPdAJhtf-FCKX26XsOmZlChOcxxIqPk,738 -django/contrib/sessions/locale/pt/LC_MESSAGES/django.po,sha256=cOycrw3HCHjSYBadpalyrg5LdRTlqZCTyMh93GOQ8O0,896 -django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo,sha256=XHNF5D8oXIia3e3LYwxd46a2JOgDc_ykvc8yuo21fT0,757 -django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po,sha256=K_zxKaUKngWPFpvHgXOcymJEsiONSw-OrVrroRXmUUk,924 -django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo,sha256=WR9I9Gum_pq7Qg2Gzhf-zAv43OwR_uDtsbhtx4Ta5gE,776 -django/contrib/sessions/locale/ro/LC_MESSAGES/django.po,sha256=fEgVxL_0Llnjspu9EsXBf8AVL0DGdfF7NgV88G7WN1E,987 -django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo,sha256=n-8vXR5spEbdfyeWOYWC_6kBbAppNoRrWYgqKFY6gJA,913 -django/contrib/sessions/locale/ru/LC_MESSAGES/django.po,sha256=sNqNGdoof6eXzFlh4YIp1O54MdDOAFDjD3GvAFsNP8k,1101 -django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo,sha256=Yntm624Wt410RwuNPU1c-WwQoyrRrBs69VlKMlNUHeQ,766 -django/contrib/sessions/locale/sk/LC_MESSAGES/django.po,sha256=JIvzoKw_r4jZXWEaHvIYAZDAzrEkfpr0WM9dNfUlzBE,924 -django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo,sha256=EE6mB8BiYRyAxK6qzurRWcaYVs96FO_4rERYQdtIt3k,770 -django/contrib/sessions/locale/sl/LC_MESSAGES/django.po,sha256=KTjBWyvaNCHbpV9K6vbnavwxxXqf2DlIqVPv7MVFcO8,928 -django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo,sha256=eRaTy3WOC76EYLtMSD4xtJj2h8eE4W-TS4VvCVxI5bw,683 -django/contrib/sessions/locale/sq/LC_MESSAGES/django.po,sha256=9pzp7834LQKafe5fJzC4OKsAd6XfgtEQl6K6hVLaBQM,844 -django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo,sha256=ZDBOYmWIoSyDeT0nYIIFeMtW5jwpr257CbdTZlkVeRQ,855 -django/contrib/sessions/locale/sr/LC_MESSAGES/django.po,sha256=OXQOYeac0ghuzLrwaErJGr1FczuORTu2yroFX5hvRnk,1027 -django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=f3x9f9hTOsJltghjzJMdd8ueDwzxJex6zTXsU-_Hf_Y,757 -django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po,sha256=HKjo7hjSAvgrIvlI0SkgF3zxz8TtKWyBT51UGNhDwek,946 -django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo,sha256=SGbr0K_5iAMA22MfseAldMDgLSEBrI56pCtyV8tMAPc,707 -django/contrib/sessions/locale/sv/LC_MESSAGES/django.po,sha256=vraY3915wBYGeYu9Ro0-TlBeLWqGZP1fbckLv8y47Ys,853 -django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo,sha256=Edhqp8yuBnrGtJqPO7jxobeXN4uU5wKSLrOsFO1F23k,743 -django/contrib/sessions/locale/sw/LC_MESSAGES/django.po,sha256=iY4rN4T-AA2FBQA7DiWWFvrclqKiDYQefqwwVw61-f8,858 -django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo,sha256=qLIThhFQbJKc1_UVr7wVIm1rJfK2rO5m84BCB_oKq7s,801 -django/contrib/sessions/locale/ta/LC_MESSAGES/django.po,sha256=bYqtYf9XgP9IKKFJXh0u64JhRhDvPPUliI1J-NeRpKE,945 -django/contrib/sessions/locale/te/LC_MESSAGES/django.mo,sha256=kteZeivEckt4AmAeKgmgouMQo1qqSQrI8M42B16gMnQ,786 -django/contrib/sessions/locale/te/LC_MESSAGES/django.po,sha256=dQgiNS52RHrL6bV9CEO7Jk9lk3YUQrUBDCg_bP2OSZc,980 -django/contrib/sessions/locale/tg/LC_MESSAGES/django.mo,sha256=N6AiKfV47QTlO5Z_r4SQZXVLtouu-NVSwWkePgD17Tc,747 -django/contrib/sessions/locale/tg/LC_MESSAGES/django.po,sha256=wvvDNu060yqlTxy3swM0x3v6QpvCB9DkfNm0Q-kb9Xk,910 -django/contrib/sessions/locale/th/LC_MESSAGES/django.mo,sha256=D41vbkoYMdYPj3587p-c5yytLVi9pE5xvRZEYhZrxPs,814 -django/contrib/sessions/locale/th/LC_MESSAGES/django.po,sha256=43704TUv4ysKhL8T5MowZwlyv1JZrPyVGrpdIyb3r40,988 -django/contrib/sessions/locale/tk/LC_MESSAGES/django.mo,sha256=pT_hpKCwFT60GUXzD_4z8JOhmh1HRnkZj-QSouVEgUA,699 -django/contrib/sessions/locale/tk/LC_MESSAGES/django.po,sha256=trqXxfyIbh4V4szol0pXETmEWRxAAKywPZ9EzVMVE-I,865 -django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo,sha256=STDnYOeO1d9nSCVf7pSkMq8R7z1aeqq-xAuIYjsofuE,685 -django/contrib/sessions/locale/tr/LC_MESSAGES/django.po,sha256=XYKo0_P5xitYehvjMzEw2MTp_Nza-cIXEECV3dA6BmY,863 -django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo,sha256=Q-FGu_ljTsxXO_EWu7zCzGwoqFXkeoTzWSlvx85VLGc,806 -django/contrib/sessions/locale/tt/LC_MESSAGES/django.po,sha256=UC85dFs_1836noZTuZEzPqAjQMFfSvj7oGmEWOGcfCA,962 -django/contrib/sessions/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/sessions/locale/udm/LC_MESSAGES/django.po,sha256=CPml2Fn9Ax_qO5brCFDLPBoTiNdvsvJb1btQ0COwUfY,737 -django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo,sha256=jzNrLuFghQMCHNRQ0ihnKMCicgear0yWiTOLnvdPszw,841 -django/contrib/sessions/locale/uk/LC_MESSAGES/django.po,sha256=GM9kNL1VoFSRfbHB5KiivIbp-nJl1aZ69wL2xszNqlM,1017 -django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo,sha256=FkGIiHegr8HR8zjVyJ9TTW1T9WYtAL5Mg77nRKnKqWk,729 -django/contrib/sessions/locale/ur/LC_MESSAGES/django.po,sha256=qR4QEBTP6CH09XFCzsPSPg2Dv0LqzbRV_I67HO2OUwk,879 -django/contrib/sessions/locale/uz/LC_MESSAGES/django.mo,sha256=asPu0RhMB_Ui1li-OTVL4qIXnM9XpjsYyx5yJldDYBY,744 -django/contrib/sessions/locale/uz/LC_MESSAGES/django.po,sha256=KsHuLgGJt-KDH0h6ND7JLP2dDJAdLVHSlau4DkkfqA8,880 -django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo,sha256=KriTpT-Hgr10DMnY5Bmbd4isxmSFLmav8vg2tuL2Bb8,679 -django/contrib/sessions/locale/vi/LC_MESSAGES/django.po,sha256=M7S46Q0Q961ykz_5FCAN8SXQ54w8tp4rZeZpy6bPtXs,909 -django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=zsbhIMocgB8Yn1XEBxbIIbBh8tLifvvYNlhe5U61ch8,722 -django/contrib/sessions/locale/zh_Hans/LC_MESSAGES/django.po,sha256=tPshgXjEv6pME4N082ztamJhd5whHB2_IV_egdP-LlQ,889 -django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=WZzfpFKZ41Pu8Q9SuhGu3hXwp4eiq8Dt8vdiQfxvF9M,733 -django/contrib/sessions/locale/zh_Hant/LC_MESSAGES/django.po,sha256=6IRDQu6-PAYh6SyEIcKdhuR172lX0buY8qqsU0QXlYU,898 -django/contrib/sessions/management/commands/__pycache__/clearsessions.cpython-38.pyc,, -django/contrib/sessions/management/commands/clearsessions.py,sha256=iU1m-Hfe46xwE2hcvdsDta1F71Tb5-BQOPjn6H33zes,664 -django/contrib/sessions/middleware.py,sha256=2NeGL9MTexXFFt_5MYolKiSjnBZuqPbHDrPQRE9ccFE,3646 -django/contrib/sessions/migrations/0001_initial.py,sha256=F7fzk2d9hDPjUwx2w-lXdZcFG1h4HyHnkfcJ6aK7C-0,955 -django/contrib/sessions/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sessions/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/sessions/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/sessions/models.py,sha256=vmROoszsXHnPHoSbFca8k-U9Z8Wg6EAHYeEK87VHHk8,1257 -django/contrib/sessions/serializers.py,sha256=clq2ENNQ3ujEuuc5gHSDvaz30kWWHelnQPY6tzUu0qs,424 -django/contrib/sitemaps/__init__.py,sha256=FI4QoFGgY4j9UVt4Z3-W4M8HDBdQHzq109y7gG2Nu5s,5764 -django/contrib/sitemaps/__pycache__/__init__.cpython-38.pyc,, -django/contrib/sitemaps/__pycache__/apps.cpython-38.pyc,, -django/contrib/sitemaps/__pycache__/views.cpython-38.pyc,, -django/contrib/sitemaps/apps.py,sha256=ktY9PcWsmv5TOlvEdG6IL8ZBbGMtZRpO24j5g7DGilU,195 -django/contrib/sitemaps/management/commands/__pycache__/ping_google.cpython-38.pyc,, -django/contrib/sitemaps/management/commands/ping_google.py,sha256=gqfCpod-Wp3nFBc8mpWhbP2QSWsWE74IJ-hlcm8_7SY,558 -django/contrib/sitemaps/templates/sitemap.xml,sha256=KTiksPVpo22dkRjjavoJtckzo-Rin7aZ_QgbC42Y8O0,479 -django/contrib/sitemaps/templates/sitemap_index.xml,sha256=VqDmRlWMx9kC6taiBoi1h9JVspV54ou3nFjE8Nfofl8,209 -django/contrib/sitemaps/views.py,sha256=KP-cCkD4VGFbd4ZavWK79gAkZa83APeRgTx-eouny4M,3516 -django/contrib/sites/__init__.py,sha256=qIj6PsbyT_DVkvjrASve-9F8GeoCKv6sO0-jlEhRJv4,61 -django/contrib/sites/__pycache__/__init__.cpython-38.pyc,, -django/contrib/sites/__pycache__/admin.cpython-38.pyc,, -django/contrib/sites/__pycache__/apps.cpython-38.pyc,, -django/contrib/sites/__pycache__/management.cpython-38.pyc,, -django/contrib/sites/__pycache__/managers.cpython-38.pyc,, -django/contrib/sites/__pycache__/middleware.cpython-38.pyc,, -django/contrib/sites/__pycache__/models.cpython-38.pyc,, -django/contrib/sites/__pycache__/requests.cpython-38.pyc,, -django/contrib/sites/__pycache__/shortcuts.cpython-38.pyc,, -django/contrib/sites/admin.py,sha256=ClzCRn4fUPWO1dNlEWEPjSDInnK87XbNRmadvjYs1go,214 -django/contrib/sites/apps.py,sha256=xRYkn8bbxOK7rSsDiLHPkxUqAN4iscVMvwKIjiwdj94,365 -django/contrib/sites/locale/af/LC_MESSAGES/django.mo,sha256=A10bZFMs-wUetVfF5UrFwmuiKnN4ZnlrR4Rx8U4Ut1A,786 -django/contrib/sites/locale/af/LC_MESSAGES/django.po,sha256=O0-ZRvmXvV_34kONuqakuXV5OmYbQ569K1Puj3qQNac,907 -django/contrib/sites/locale/ar/LC_MESSAGES/django.mo,sha256=kLoytp2jvhWn6p1c8kNVua2sYAMnrpS4xnbluHD22Vs,947 -django/contrib/sites/locale/ar/LC_MESSAGES/django.po,sha256=HYA3pA29GktzXBP-soUEn9VP2vkZuhVIXVA8TNPCHCs,1135 -django/contrib/sites/locale/ar_DZ/LC_MESSAGES/django.mo,sha256=-ltwY57Th6LNqU3bgOPPP7qWtII5c6rj8Dv8eY7PZ84,918 -django/contrib/sites/locale/ar_DZ/LC_MESSAGES/django.po,sha256=KRTjZ2dFRWVPmE_hC5Hq8eDv3GQs3yQKCgV5ISFmEKk,1079 -django/contrib/sites/locale/ast/LC_MESSAGES/django.mo,sha256=eEvaeiGnZFBPGzKLlRz4M9AHemgJVAb-yNpbpxRqtd0,774 -django/contrib/sites/locale/ast/LC_MESSAGES/django.po,sha256=huBohKzLpdaJRFMFXXSDhDCUOqVqyWXfxb8_lLOkUd0,915 -django/contrib/sites/locale/az/LC_MESSAGES/django.mo,sha256=CjAGI4qGoXN95q4LpCLXLKvaNB33Ocf5SfXdurFBkas,773 -django/contrib/sites/locale/az/LC_MESSAGES/django.po,sha256=E84kNPFhgHmIfYT0uzCnTPGwPkAqKzqwFvJB7pETbVo,933 -django/contrib/sites/locale/be/LC_MESSAGES/django.mo,sha256=HGh78mI50ZldBtQ8jId26SI-lSHv4ZLcveRN2J8VzH8,983 -django/contrib/sites/locale/be/LC_MESSAGES/django.po,sha256=W5FhVJKcmd3WHl2Lpd5NJUsc7_sE_1Pipk3CVPoGPa4,1152 -django/contrib/sites/locale/bg/LC_MESSAGES/django.mo,sha256=a2R52umIQIhnzFaFYSRhQ6nBlywE8RGMj2FUOFmyb0A,904 -django/contrib/sites/locale/bg/LC_MESSAGES/django.po,sha256=awB8RMS-qByhNB6eH2f0Oyxb3SH8waLhrZ--rokGfaI,1118 -django/contrib/sites/locale/bn/LC_MESSAGES/django.mo,sha256=cI3a9_L-OC7gtdyRNaGX7A5w0Za0M4ERnYB7rSNkuRU,925 -django/contrib/sites/locale/bn/LC_MESSAGES/django.po,sha256=8ZxYF16bgtTZSZRZFok6IJxUV02vIztoVx2qXqwO8NM,1090 -django/contrib/sites/locale/br/LC_MESSAGES/django.mo,sha256=rI_dIznbwnadZbxOPtQxZ1pGYePNwcNNXt05iiPkchU,1107 -django/contrib/sites/locale/br/LC_MESSAGES/django.po,sha256=7Ein5Xw73DNGGtdd595Bx6ixfSD-dBXZNBUU44pSLuQ,1281 -django/contrib/sites/locale/bs/LC_MESSAGES/django.mo,sha256=bDeqQNme586LnQRQdvOWaLGZssjOoECef3vMq_OCXno,692 -django/contrib/sites/locale/bs/LC_MESSAGES/django.po,sha256=xRTWInDNiLxikjwsjgW_pYjhy24zOro90-909ns9fig,923 -django/contrib/sites/locale/ca/LC_MESSAGES/django.mo,sha256=lEUuQEpgDY3bVWzRONrPzYlojRoNduT16_oYDkkbdfk,791 -django/contrib/sites/locale/ca/LC_MESSAGES/django.po,sha256=aORAoVn69iG1ynmEfnkBzBO-UZOzzbkPVOU-ZvfMtZg,996 -django/contrib/sites/locale/cs/LC_MESSAGES/django.mo,sha256=mnXnpU7sLDTJ3OrIUTnGarPYsupNIUPV4ex_BPWU8fk,827 -django/contrib/sites/locale/cs/LC_MESSAGES/django.po,sha256=ONzFlwzmt7p5jdp6111qQkkevckRrd7GNS0lkDPKu-4,1035 -django/contrib/sites/locale/cy/LC_MESSAGES/django.mo,sha256=70pOie0K__hkmM9oBUaQfVwHjK8Cl48E26kRQL2mtew,835 -django/contrib/sites/locale/cy/LC_MESSAGES/django.po,sha256=FAZrVc72x-4R1A-1qYOBwADoXngC_F6FO8nRjr5-Z6g,1013 -django/contrib/sites/locale/da/LC_MESSAGES/django.mo,sha256=FTOyV1DIH9sMldyjgPw98d2HCotoO4zJ_KY_C9DCB7Y,753 -django/contrib/sites/locale/da/LC_MESSAGES/django.po,sha256=Po1Z6u52CFCyz9hLfK009pMbZzZgHrBse0ViX8wCYm8,957 -django/contrib/sites/locale/de/LC_MESSAGES/django.mo,sha256=5Q6X0_bDQ1ZRpkTy7UpPNzrhmQsB9Q0P1agB7koRyzs,792 -django/contrib/sites/locale/de/LC_MESSAGES/django.po,sha256=aD0wBinqtDUPvBbwtHrLEhFdoVRx1nOh17cJFuWhN3U,980 -django/contrib/sites/locale/dsb/LC_MESSAGES/django.mo,sha256=pPpWYsYp81MTrqCsGF0QnGktZNIll70bdBwSkuVE8go,868 -django/contrib/sites/locale/dsb/LC_MESSAGES/django.po,sha256=IA3G8AKJls20gzfxnrfPzivMNpL8A0zBQBg7OyzrP6g,992 -django/contrib/sites/locale/el/LC_MESSAGES/django.mo,sha256=G9o1zLGysUePGzZRicQ2aIIrc2UXMLTQmdpbrUMfWBU,878 -django/contrib/sites/locale/el/LC_MESSAGES/django.po,sha256=RBi_D-_znYuV6LXfTlSOf1Mvuyl96fIyEoiZ-lgeyWs,1133 -django/contrib/sites/locale/en/LC_MESSAGES/django.mo,sha256=U0OV81NfbuNL9ctF-gbGUG5al1StqN-daB-F-gFBFC8,356 -django/contrib/sites/locale/en/LC_MESSAGES/django.po,sha256=tSjfrNZ_FqLHsXjm5NuTyo5-JpdlPLsPZjFqF2APhy8,817 -django/contrib/sites/locale/en_AU/LC_MESSAGES/django.mo,sha256=dTndJxA-F1IE_nMUOtf1sRr7Kq2s_8yjgKk6mkWkVu4,486 -django/contrib/sites/locale/en_AU/LC_MESSAGES/django.po,sha256=7V9dBdbfHa9aGAfs9nw6ivSxX30CqaYc1ptfplTAPJc,791 -django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo,sha256=FbSh7msJdrHsXr0EtDMuODFzSANG_HJ3iBlW8ePpqFs,639 -django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po,sha256=Ib-DIuTWlrN3kg99kLCuqWJVtt1NWaFD4UbDFK6d4KY,862 -django/contrib/sites/locale/eo/LC_MESSAGES/django.mo,sha256=N4KkH12OHxic3pp1okeBhpfDx8XxxpULk3UC219vjWU,792 -django/contrib/sites/locale/eo/LC_MESSAGES/django.po,sha256=ymXSJaFJWGBO903ObqR-ows-p4T3KyUplc_p_3r1uk8,1043 -django/contrib/sites/locale/es/LC_MESSAGES/django.mo,sha256=qLN1uoCdslxdYWgdjgSBi7szllP-mQZtHbuZnNOthsQ,804 -django/contrib/sites/locale/es/LC_MESSAGES/django.po,sha256=QClia2zY39269VSQzkQsLwwukthN6u2JBsjbLNxA1VQ,1066 -django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo,sha256=_O4rVk7IM2BBlZvjDP2SvTOo8WWqthQi5exQzt027-s,776 -django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po,sha256=RwyNylXbyxdSXn6qRDXd99-GaEPlmr6TicHTUW0boaQ,969 -django/contrib/sites/locale/es_CO/LC_MESSAGES/django.mo,sha256=a4Xje2M26wyIx6Wlg6puHo_OXjiDEy7b0FquT9gbThA,825 -django/contrib/sites/locale/es_CO/LC_MESSAGES/django.po,sha256=9bnRhVD099JzkheO80l65dufjuawsj9aSFgFu5A-lnM,949 -django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo,sha256=AtGta5jBL9XNBvfSpsCcnDtDhvcb89ALl4hNjSPxibM,809 -django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po,sha256=TnkpQp-7swH-x9cytUJe-QJRd2n_pYMVo0ltDw9Pu8o,991 -django/contrib/sites/locale/es_VE/LC_MESSAGES/django.mo,sha256=59fZBDut-htCj38ZUoqPjhXJPjZBz-xpU9__QFr3kLs,486 -django/contrib/sites/locale/es_VE/LC_MESSAGES/django.po,sha256=8PWXy2L1l67wDIi98Q45j7OpVITr0Lt4zwitAnB-d_o,791 -django/contrib/sites/locale/et/LC_MESSAGES/django.mo,sha256=I2E-49UQsG-F26OeAfnKlfUdA3YCkUSV8ffA-GMSkE0,788 -django/contrib/sites/locale/et/LC_MESSAGES/django.po,sha256=mEfD6EyQ15PPivb5FTlkabt3Lo_XGtomI9XzHrrh34Y,992 -django/contrib/sites/locale/eu/LC_MESSAGES/django.mo,sha256=1HTAFI3DvTAflLJsN7NVtSd4XOTlfoeLGFyYCOX69Ec,807 -django/contrib/sites/locale/eu/LC_MESSAGES/django.po,sha256=NWxdE5-mF6Ak4nPRpCFEgAMIsVDe9YBEZl81v9kEuX8,1023 -django/contrib/sites/locale/fa/LC_MESSAGES/django.mo,sha256=odtsOpZ6noNqwDb18HDc2e6nz3NMsa-wrTN-9dk7d9w,872 -django/contrib/sites/locale/fa/LC_MESSAGES/django.po,sha256=uL2I9XjqIxqTUKf6buewtm9rwflM23pxspFMs7w4SPM,1088 -django/contrib/sites/locale/fi/LC_MESSAGES/django.mo,sha256=I5DUeLk1ChUC32q5uzriABCLLJpJKNbEK4BfqylPQzg,786 -django/contrib/sites/locale/fi/LC_MESSAGES/django.po,sha256=LH2sFIKM3YHPoz9zIu10z1DFv1svXphBdOhXNy4a17s,929 -django/contrib/sites/locale/fr/LC_MESSAGES/django.mo,sha256=W7Ne5HqgnRcl42njzbUaDSY059jdhwvr0tgZzecVWD8,756 -django/contrib/sites/locale/fr/LC_MESSAGES/django.po,sha256=u24rHDJ47AoBgcmBwI1tIescAgbjFxov6y906H_uhK0,999 -django/contrib/sites/locale/fy/LC_MESSAGES/django.mo,sha256=YQQy7wpjBORD9Isd-p0lLzYrUgAqv770_56-vXa0EOc,476 -django/contrib/sites/locale/fy/LC_MESSAGES/django.po,sha256=Yh6Lw0QI2Me0zCtlyXraFLjERKqklB6-IJLDTjH_jTs,781 -django/contrib/sites/locale/ga/LC_MESSAGES/django.mo,sha256=g5popLirHXWn6ZWJHESQaG5MmKWZL_JNI_5Vgn5FTqU,683 -django/contrib/sites/locale/ga/LC_MESSAGES/django.po,sha256=34hj3ELt7GQ7CaHL246uBDmvsVUaaN5kTrzt8j7eETM,962 -django/contrib/sites/locale/gd/LC_MESSAGES/django.mo,sha256=df4XIGGD6FIyMUXsb-SoSqNfBFAsRXf4qYtolh_C964,858 -django/contrib/sites/locale/gd/LC_MESSAGES/django.po,sha256=NPKp7A5-y-MR7r8r4WqtcVQJEHCIOP5mLTd0cIfUsug,957 -django/contrib/sites/locale/gl/LC_MESSAGES/django.mo,sha256=QUJdJV71VT-4iVQ5mUAeyszTVhD2LlmmPQv0WpPWttU,742 -django/contrib/sites/locale/gl/LC_MESSAGES/django.po,sha256=cLcejsFyoFk0fRX9fAcl9owHoxiD593QZZeZTfObBVw,940 -django/contrib/sites/locale/he/LC_MESSAGES/django.mo,sha256=L3bganfG4gHqp2WXGh4rfWmmbaIxHaGc7-ypAqjSL_E,820 -django/contrib/sites/locale/he/LC_MESSAGES/django.po,sha256=nT0Gu0iWpFV7ZJ6SAdcogZccCz3CV-R5rgqwEl5NA6c,985 -django/contrib/sites/locale/hi/LC_MESSAGES/django.mo,sha256=J4oIS1vJnCvdCCUD4tlTUVyTe4Xn0gKcWedfhH4C0t0,665 -django/contrib/sites/locale/hi/LC_MESSAGES/django.po,sha256=INBrm37jL3okBHuzX8MSN1vMptj77a-4kwQkAyt8w_8,890 -django/contrib/sites/locale/hr/LC_MESSAGES/django.mo,sha256=KjDUhEaOuYSMexcURu2UgfkatN2rrUcAbCUbcpVSInk,876 -django/contrib/sites/locale/hr/LC_MESSAGES/django.po,sha256=-nFMFkVuDoKYDFV_zdNULOqQlnqtiCG57aakN5hqlmg,1055 -django/contrib/sites/locale/hsb/LC_MESSAGES/django.mo,sha256=RyHVb7u9aRn5BXmWzR1gApbZlOioPDJ59ufR1Oo3e8Y,863 -django/contrib/sites/locale/hsb/LC_MESSAGES/django.po,sha256=Aq54y5Gb14bIt28oDDrFltnSOk31Z2YalwaJMDMXfWc,987 -django/contrib/sites/locale/hu/LC_MESSAGES/django.mo,sha256=P--LN84U2BeZAvRVR-OiWl4R02cTTBi2o8XR2yHIwIU,796 -django/contrib/sites/locale/hu/LC_MESSAGES/django.po,sha256=b0VhyFdNaZZR5MH1vFsLL69FmICN8Dz-sTRk0PdK49E,953 -django/contrib/sites/locale/hy/LC_MESSAGES/django.mo,sha256=Hs9XwRHRkHicLWt_NvWvr7nMocmY-Kc8XphhVSAMQRc,906 -django/contrib/sites/locale/hy/LC_MESSAGES/django.po,sha256=MU4hXXGfjXKfYcjxDYzFfsEUIelz5ZzyQLkeSrUQKa0,1049 -django/contrib/sites/locale/ia/LC_MESSAGES/django.mo,sha256=gRMs-W5EiY26gqzwnDXEMbeb1vs0bYZ2DC2a9VCciew,809 -django/contrib/sites/locale/ia/LC_MESSAGES/django.po,sha256=HXZzn9ACIqfR2YoyvpK2FjZ7QuEq_RVZ1kSC4nxMgeg,934 -django/contrib/sites/locale/id/LC_MESSAGES/django.mo,sha256=__2E_2TmVUcbf1ygxtS1lHvkhv8L0mdTAtJpBsdH24Y,791 -django/contrib/sites/locale/id/LC_MESSAGES/django.po,sha256=e5teAHiMjLR8RDlg8q99qtW-K81ltcIiBIdb1MZw2sE,1000 -django/contrib/sites/locale/io/LC_MESSAGES/django.mo,sha256=W-NP0b-zR1oWUZnHZ6fPu5AC2Q6o7nUNoxssgeguUBo,760 -django/contrib/sites/locale/io/LC_MESSAGES/django.po,sha256=G4GUUz3rxoBjWTs-j5RFCvv52AEHiwrCBwom5hYeBSE,914 -django/contrib/sites/locale/is/LC_MESSAGES/django.mo,sha256=lkJgTzDjh5PNfIJpOS2DxKmwVUs9Sl5XwFHv4YdCB30,812 -django/contrib/sites/locale/is/LC_MESSAGES/django.po,sha256=1DVgAcHSZVyDd5xn483oqICIG4ooyZY8ko7A3aDogKM,976 -django/contrib/sites/locale/it/LC_MESSAGES/django.mo,sha256=6NQjjtDMudnAgnDCkemOXinzX0J-eAE5gSq1F8kjusY,795 -django/contrib/sites/locale/it/LC_MESSAGES/django.po,sha256=zxavlLMmp1t1rCDsgrw12kVgxiK5EyR_mOalSu8-ws8,984 -django/contrib/sites/locale/ja/LC_MESSAGES/django.mo,sha256=RNuCS6wv8uK5TmXkSH_7SjsbUFkf24spZfTsvfoTKro,814 -django/contrib/sites/locale/ja/LC_MESSAGES/django.po,sha256=e-cj92VOVc5ycIY6NwyFh5bO7Q9q5vp5CG4dOzd_eWQ,982 -django/contrib/sites/locale/ka/LC_MESSAGES/django.mo,sha256=m8GTqr9j0ijn0YJhvnsYwlk5oYcASKbHg_5hLqZ91TI,993 -django/contrib/sites/locale/ka/LC_MESSAGES/django.po,sha256=BCsMvNq-3Pi9-VnUvpUQaGx6pbCgI8rCcIHUA8VL4as,1155 -django/contrib/sites/locale/kab/LC_MESSAGES/django.mo,sha256=Utdj5gH5YPeaYMjeMzF-vjqYvYTCipre2qCBkEJSc-Y,808 -django/contrib/sites/locale/kab/LC_MESSAGES/django.po,sha256=d78Z-YanYZkyP5tpasj8oAa5RimVEmce6dlq5vDSscA,886 -django/contrib/sites/locale/kk/LC_MESSAGES/django.mo,sha256=T2dTZ83vBRfQb2dRaKOrhvO00BHQu_2bu0O0k7RsvGA,895 -django/contrib/sites/locale/kk/LC_MESSAGES/django.po,sha256=9ixNnoE3BxfBj4Xza0FM5qInd0uiNnAlXgDb_KaICn4,1057 -django/contrib/sites/locale/km/LC_MESSAGES/django.mo,sha256=Q7pn5E4qN957j20-iCHgrfI-p8sm3Tc8O2DWeuH0By8,701 -django/contrib/sites/locale/km/LC_MESSAGES/django.po,sha256=TOs76vlCMYOZrdHgXPWZhQH1kTBQTpzsDJ8N4kbJQ7E,926 -django/contrib/sites/locale/kn/LC_MESSAGES/django.mo,sha256=fikclDn-FKU_t9lZeBtQciisS3Kqv4tJHtu923OXLJI,676 -django/contrib/sites/locale/kn/LC_MESSAGES/django.po,sha256=p_P7L0KAUoKNLH8vuHV4_2mTWK1m1tjep5XgRqbWd2k,904 -django/contrib/sites/locale/ko/LC_MESSAGES/django.mo,sha256=wlfoWG-vmMSCipUJVVC0Y_W7QbGNNE-oEnVwl_6-AmY,807 -django/contrib/sites/locale/ko/LC_MESSAGES/django.po,sha256=TENAk9obGUxFwMnJQj_V9sZxEKJj4DyWMuGpx3Ft_pM,1049 -django/contrib/sites/locale/ky/LC_MESSAGES/django.mo,sha256=IYxp8jG5iyN81h7YJqOiSQdOH7DnwOiIvelKZfzP6ZA,811 -django/contrib/sites/locale/ky/LC_MESSAGES/django.po,sha256=rxPdgQoBtGQSi5diOy3MXyoM4ffpwdWCc4WE3pjIHEI,927 -django/contrib/sites/locale/lb/LC_MESSAGES/django.mo,sha256=xokesKl7h7k9dXFKIJwGETgwx1Ytq6mk2erBSxkgY-o,474 -django/contrib/sites/locale/lb/LC_MESSAGES/django.po,sha256=1yRdK9Zyh7kcWG7wUexuF9-zxEaKLS2gG3ggVOHbRJ8,779 -django/contrib/sites/locale/lt/LC_MESSAGES/django.mo,sha256=bK6PJtd7DaOgDukkzuqos5ktgdjSF_ffL9IJTQY839s,869 -django/contrib/sites/locale/lt/LC_MESSAGES/django.po,sha256=9q7QfFf_IR2A1Cr_9aLVIWf-McR0LivtRC284w2_bo0,1124 -django/contrib/sites/locale/lv/LC_MESSAGES/django.mo,sha256=t9bQiVqpAmXrq8QijN4Lh0n6EGUGQjnuH7hDcu21z4c,823 -django/contrib/sites/locale/lv/LC_MESSAGES/django.po,sha256=vMaEtXGosD3AcTomiuctbOpjLes8TRBnumLe8DC4yq4,1023 -django/contrib/sites/locale/mk/LC_MESSAGES/django.mo,sha256=_YXasRJRWjYmmiEWCrAoqnrKuHHPBG_v_EYTUe16Nfo,885 -django/contrib/sites/locale/mk/LC_MESSAGES/django.po,sha256=AgdIjiSpN0P5o5rr5Ie4sFhnmS5d4doB1ffk91lmOvY,1062 -django/contrib/sites/locale/ml/LC_MESSAGES/django.mo,sha256=axNQVBY0nbR7hYa5bzNtdxB17AUOs2WXhu0Rg--FA3Q,1007 -django/contrib/sites/locale/ml/LC_MESSAGES/django.po,sha256=Sg7hHfK8OMs05ebtTv8gxS6_2kZv-OODwf7okP95Jtk,1169 -django/contrib/sites/locale/mn/LC_MESSAGES/django.mo,sha256=w2sqJRAe0wyz_IuCZ_Ocubs_VHL6wV1BcutWPz0dseQ,867 -django/contrib/sites/locale/mn/LC_MESSAGES/django.po,sha256=Zh_Eao0kLZsrQ8wkL1f-pRrsAtNJOspu45uStq5t8Mo,1127 -django/contrib/sites/locale/mr/LC_MESSAGES/django.mo,sha256=2Z5jaGJzpiJTCnhCk8ulCDeAdj-WwR99scdHFPRoHoA,468 -django/contrib/sites/locale/mr/LC_MESSAGES/django.po,sha256=pqnjF5oxvpMyjijy6JfI8qJbbbowZzE5tZF0DMYiCBs,773 -django/contrib/sites/locale/my/LC_MESSAGES/django.mo,sha256=jN59e9wRheZYx1A4t_BKc7Hx11J5LJg2wQRd21aQv08,961 -django/contrib/sites/locale/my/LC_MESSAGES/django.po,sha256=EhqYIW5-rX33YjsDsBwfiFb3BK6fZKVc3CRYeJpZX1E,1086 -django/contrib/sites/locale/nb/LC_MESSAGES/django.mo,sha256=AaiHGcmcciy5IMBPVAShcc1OQOETJvBCv7GYHMcIQMA,793 -django/contrib/sites/locale/nb/LC_MESSAGES/django.po,sha256=936zoN1sPSiiq7GuH01umrw8W6BtymYEU3bCfOQyfWE,1000 -django/contrib/sites/locale/ne/LC_MESSAGES/django.mo,sha256=n96YovpBax3T5VZSmIfGmd7Zakn9FJShJs5rvUX7Kf0,863 -django/contrib/sites/locale/ne/LC_MESSAGES/django.po,sha256=B14rhDd8GAaIjxd1sYjxO2pZfS8gAwZ1C-kCdVkRXho,1078 -django/contrib/sites/locale/nl/LC_MESSAGES/django.mo,sha256=ghu-tNPNZuE4sVRDWDVmmmVNPYZLWYm_UPJRqh8wmec,735 -django/contrib/sites/locale/nl/LC_MESSAGES/django.po,sha256=1DCQNzMRhy4vW-KkmlPGy58UR27Np5ilmYhmjaq-8_k,1030 -django/contrib/sites/locale/nn/LC_MESSAGES/django.mo,sha256=m1SUw5bhDUemD8yMGDxcWdhbUMtzZ9WXWXtV2AHIzBs,633 -django/contrib/sites/locale/nn/LC_MESSAGES/django.po,sha256=i8BQyewiU2ymkAkj12M2MJBVbCJPp8PB8_NcQiScaD4,861 -django/contrib/sites/locale/os/LC_MESSAGES/django.mo,sha256=Su06FkWMOPzBxoung3bEju_EnyAEAXROoe33imO65uQ,806 -django/contrib/sites/locale/os/LC_MESSAGES/django.po,sha256=4i4rX6aXDUKjq64T02iStqV2V2erUsSVnTivh2XtQeY,963 -django/contrib/sites/locale/pa/LC_MESSAGES/django.mo,sha256=tOHiisOtZrTyIFoo4Ipn_XFH9hhu-ubJLMdOML5ZUgk,684 -django/contrib/sites/locale/pa/LC_MESSAGES/django.po,sha256=ztGyuqvzxRfNjqDG0rMLCu_oQ8V3Dxdsx0WZoYUyNv8,912 -django/contrib/sites/locale/pl/LC_MESSAGES/django.mo,sha256=lo5K262sZmo-hXvcHoBsEDqX8oJEPSxJY5EfRIqHZh0,903 -django/contrib/sites/locale/pl/LC_MESSAGES/django.po,sha256=-kQ49UvXITMy1vjJoN_emuazV_EjNDQnZDERXWNoKvw,1181 -django/contrib/sites/locale/pt/LC_MESSAGES/django.mo,sha256=PrcFQ04lFJ7mIYThXbW6acmDigEFIoLAC0PYk5hfaJs,797 -django/contrib/sites/locale/pt/LC_MESSAGES/django.po,sha256=Aj8hYI9W5nk5uxKHj1oE-b9bxmmuoeXLKaJDPfI2x2o,993 -django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo,sha256=BsFfarOR6Qk67fB-tTWgGhuOReJSgjwJBkIzZsv28vo,824 -django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po,sha256=jfvgelpWn2VQqYe2_CE39SLTsscCckvjuZo6dWII28c,1023 -django/contrib/sites/locale/ro/LC_MESSAGES/django.mo,sha256=oGsZw4_uYpaH6adMxnAuifJgHeZ_ytRZ4rFhiNfRQkQ,857 -django/contrib/sites/locale/ro/LC_MESSAGES/django.po,sha256=tWbWVbjFFELNzSXX4_5ltmzEeEJsY3pKwgEOjgV_W_8,1112 -django/contrib/sites/locale/ru/LC_MESSAGES/django.mo,sha256=bIZJWMpm2O5S6RC_2cfkrp5NXaTU2GWSsMr0wHVEmcw,1016 -django/contrib/sites/locale/ru/LC_MESSAGES/django.po,sha256=jHy5GR05ZSjLmAwaVNq3m0WdhO9GYxge3rDBziqesA8,1300 -django/contrib/sites/locale/sk/LC_MESSAGES/django.mo,sha256=-EYdm14ZjoR8bd7Rv2b5G7UJVSKmZa1ItLsdATR3-Cg,822 -django/contrib/sites/locale/sk/LC_MESSAGES/django.po,sha256=L2YRNq26DdT3OUFhw25ncZBgs232v6kSsAUTc0beIC8,1019 -django/contrib/sites/locale/sl/LC_MESSAGES/django.mo,sha256=JmkpTKJGWgnBM3CqOUriGvrDnvg2YWabIU2kbYAOM4s,845 -django/contrib/sites/locale/sl/LC_MESSAGES/django.po,sha256=qWrWrSz5r3UOVraX08ILt3TTmfyTDGKbJKbTlN9YImU,1059 -django/contrib/sites/locale/sq/LC_MESSAGES/django.mo,sha256=DMLN1ZDJeDnslavjcKloXSXn6IvangVliVP3O6U8dAY,769 -django/contrib/sites/locale/sq/LC_MESSAGES/django.po,sha256=zg3ALcMNZErAS_xFxmtv6TmXZ0vxobX5AzCwOSRSwc8,930 -django/contrib/sites/locale/sr/LC_MESSAGES/django.mo,sha256=8kfi9IPdB2reF8C_eC2phaP6qonboHPwes_w3UgNtzw,935 -django/contrib/sites/locale/sr/LC_MESSAGES/django.po,sha256=A7xaen8H1W4uMBRAqCXT_0KQMoA2-45AUNDfGo9FydI,1107 -django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo,sha256=jMXiq18efq0wErJAQfJR1fCnkYcEb7OYXg8sv6kzP0s,815 -django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po,sha256=9jkWYcZCTfQr2UZtyvhWDAmEHBrzunJUZcx7FlrFOis,1004 -django/contrib/sites/locale/sv/LC_MESSAGES/django.mo,sha256=qmhdn3N2C_DR_FYrUaFSacVjghgfb0CuWKanVRJSTq8,792 -django/contrib/sites/locale/sv/LC_MESSAGES/django.po,sha256=dDVuuuHGpZIoT6dU48aT2j4nEuGrd6zZ3FiZEs3TCeE,987 -django/contrib/sites/locale/sw/LC_MESSAGES/django.mo,sha256=cWjjDdFXBGmpUm03UDtgdDrREa2r75oMsXiEPT_Bx3g,781 -django/contrib/sites/locale/sw/LC_MESSAGES/django.po,sha256=oOKNdztQQU0sd6XmLI-n3ONmTL7jx3Q0z1YD8673Wi8,901 -django/contrib/sites/locale/ta/LC_MESSAGES/django.mo,sha256=CLO41KsSKqBrgtrHi6fmXaBk-_Y2l4KBLDJctZuZyWY,714 -django/contrib/sites/locale/ta/LC_MESSAGES/django.po,sha256=YsTITHg7ikkNcsP29tDgkZrUdtO0s9PrV1XPu4mgqCw,939 -django/contrib/sites/locale/te/LC_MESSAGES/django.mo,sha256=GmIWuVyIOcoQoAmr2HxCwBDE9JUYEktzYig93H_4v50,687 -django/contrib/sites/locale/te/LC_MESSAGES/django.po,sha256=jbncxU9H3EjXxWPsEoCKJhKi392XXTGvWyuenqLDxps,912 -django/contrib/sites/locale/tg/LC_MESSAGES/django.mo,sha256=wiWRlf3AN5zlFMNyP_rSDZS7M5rHQJ2DTUHARtXjim8,863 -django/contrib/sites/locale/tg/LC_MESSAGES/django.po,sha256=VBGZfJIw40JZe15ghsk-n3qUVX0VH2nFQQhpBy_lk1Y,1026 -django/contrib/sites/locale/th/LC_MESSAGES/django.mo,sha256=dQOp4JoP3gvfsxqEQ73L6F8FgH1YtAA9hYY-Uz5sv6Y,898 -django/contrib/sites/locale/th/LC_MESSAGES/django.po,sha256=auZBoKKKCHZbbh0PaUr9YKiWB1TEYZoj4bE7efAonV8,1077 -django/contrib/sites/locale/tk/LC_MESSAGES/django.mo,sha256=YhzSiVb_NdG1s7G1-SGGd4R3uweZQgnTs3G8Lv9r5z0,755 -django/contrib/sites/locale/tk/LC_MESSAGES/django.po,sha256=sigmzH3Ni2vJwLJ7ba8EeB4wnDXsg8rQRFExZAGycF4,917 -django/contrib/sites/locale/tr/LC_MESSAGES/django.mo,sha256=ryf01jcvvBMGPKkdViieDuor-Lr2KRXZeFF1gPupCOA,758 -django/contrib/sites/locale/tr/LC_MESSAGES/django.po,sha256=L9tsnwxw1BEJD-Nm3m1RAS7ekgdmyC0ETs_mr7tQw1E,1043 -django/contrib/sites/locale/tt/LC_MESSAGES/django.mo,sha256=gmmjXeEQUlBpfDmouhxE-qpEtv-iWdQSobYL5MWprZc,706 -django/contrib/sites/locale/tt/LC_MESSAGES/django.po,sha256=yj49TjwcZ4YrGqnJrKh3neKydlTgwYduto9KsmxI_eI,930 -django/contrib/sites/locale/udm/LC_MESSAGES/django.mo,sha256=CNmoKj9Uc0qEInnV5t0Nt4ZnKSZCRdIG5fyfSsqwky4,462 -django/contrib/sites/locale/udm/LC_MESSAGES/django.po,sha256=vrLZ0XJF63CO3IucbQpd12lxuoM9S8tTUv6cpu3g81c,767 -django/contrib/sites/locale/uk/LC_MESSAGES/django.mo,sha256=H4806mPqOoHJFm549F7drzsfkvAXWKmn1w_WVwQx9rk,960 -django/contrib/sites/locale/uk/LC_MESSAGES/django.po,sha256=jmJKTuGLhfP4rg8M_d86XR4X8qYB-JAtEf6jRKuzi3w,1187 -django/contrib/sites/locale/ur/LC_MESSAGES/django.mo,sha256=s6QL8AB_Mp9haXS4n1r9b0YhEUECPxUyPrHTMI3agts,654 -django/contrib/sites/locale/ur/LC_MESSAGES/django.po,sha256=R9tv3qtett8CUGackoHrc5XADeygVKAE0Fz8YzK2PZ4,885 -django/contrib/sites/locale/uz/LC_MESSAGES/django.mo,sha256=OsuqnLEDl9gUAwsmM2s1KH7VD74ID-k7JXcjGhjFlEY,799 -django/contrib/sites/locale/uz/LC_MESSAGES/django.po,sha256=RoaOwLDjkqqIJTuxpuY7eMLo42n6FoYAYutCfMaDk4I,935 -django/contrib/sites/locale/vi/LC_MESSAGES/django.mo,sha256=YOaKcdrN1238Zdm81jUkc2cpxjInAbdnhsSqHP_jQsI,762 -django/contrib/sites/locale/vi/LC_MESSAGES/django.po,sha256=AHcqR2p0fdscLvzbJO_a-CzMzaeRL4LOw4HB9K3noVQ,989 -django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=7D9_pDY5lBRpo1kfzIQL-PNvIg-ofCm7cBHE1-JWlMk,779 -django/contrib/sites/locale/zh_Hans/LC_MESSAGES/django.po,sha256=xI_N00xhV8dWDp4fg5Mmj9ivOBBdHP79T3-JYXPyc5M,946 -django/contrib/sites/locale/zh_Hant/LC_MESSAGES/django.mo,sha256=0F6Qmh1smIXlOUNDaDwDajyyGecc1azfwh8BhXrpETo,790 -django/contrib/sites/locale/zh_Hant/LC_MESSAGES/django.po,sha256=ixbXNBNKNfrpI_B0O_zktTfo63sRFMOk1B1uIh4DGGg,1046 -django/contrib/sites/management.py,sha256=K6cgSOdN4ins_TiWjUIkGFwuibJmshTlFonqYT2QKrw,1597 -django/contrib/sites/managers.py,sha256=OJfKicEOuqcD0B7NuH4scszrknQZ-X1Nf1PL0XgWqLM,1929 -django/contrib/sites/middleware.py,sha256=qYcVHsHOg0VxQNS4saoLHkdF503nJR-D7Z01vE0SvUM,309 -django/contrib/sites/migrations/0001_initial.py,sha256=7plQm1loCP4AuC1wwCpXlX3Fw8q5V0T6Vxi7lNzbyoY,1068 -django/contrib/sites/migrations/0002_alter_domain_unique.py,sha256=HECWqP0R0hp77p_ubI5bI9DqEXIiGOTTszAr4EpgtVE,517 -django/contrib/sites/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/contrib/sites/migrations/__pycache__/0001_initial.cpython-38.pyc,, -django/contrib/sites/migrations/__pycache__/0002_alter_domain_unique.cpython-38.pyc,, -django/contrib/sites/migrations/__pycache__/__init__.cpython-38.pyc,, -django/contrib/sites/models.py,sha256=fChMnUtphdlXyzGPh7uSDzjWBS3xJ0mIpjLRFk1Z54E,3696 -django/contrib/sites/requests.py,sha256=74RhONzbRqEGoNXLu4T7ZjAFKYvCLmY_XQWnGRz6jdw,640 -django/contrib/sites/shortcuts.py,sha256=RZr1iT8zY_z8o52PIWEBFCQL03pE28pp6708LveS240,581 -django/contrib/staticfiles/__init__.py,sha256=eGxMURIKxiv-dE7rP1hwNgUhfzUN36-Bc58jCpHgmCE,73 -django/contrib/staticfiles/__pycache__/__init__.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/apps.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/checks.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/finders.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/handlers.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/storage.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/testing.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/urls.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/utils.cpython-38.pyc,, -django/contrib/staticfiles/__pycache__/views.cpython-38.pyc,, -django/contrib/staticfiles/apps.py,sha256=4682vA5WgXhJ8DgOFQmGTBBw3b-xsYjkV1n-TVIc25o,423 -django/contrib/staticfiles/checks.py,sha256=rH9A8NIYtEkA_PRYXQJxndm243O6Mz6GwyqWSUe3f24,391 -django/contrib/staticfiles/finders.py,sha256=fPaY6cHU_uTIYUoVk86jYt_SK-sbJzIHIvUDcAk2oV8,10393 -django/contrib/staticfiles/handlers.py,sha256=Wxxc-i-IfIUhtZzP-c4BuLnekS2OJlO9vbFrs8xyiiU,3414 -django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-38.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/findstatic.cpython-38.pyc,, -django/contrib/staticfiles/management/commands/__pycache__/runserver.cpython-38.pyc,, -django/contrib/staticfiles/management/commands/collectstatic.py,sha256=OF-wPu9FvkHZPvfu1PHEy9yghcKwxKsoqpimqEacmzM,15136 -django/contrib/staticfiles/management/commands/findstatic.py,sha256=m4EXJJQwzvYGOPrcANJe3ihZPWGAZV5lvky8jAbZdKI,1561 -django/contrib/staticfiles/management/commands/runserver.py,sha256=uv-h6a8AOs0c92ILT_3Mu0UTBoCiQzThpUEmR-blj70,1318 -django/contrib/staticfiles/storage.py,sha256=FglRyoP7UuJdOSHuTud8Cukzwn8Lcb4_XmCJUVAiTsA,17618 -django/contrib/staticfiles/testing.py,sha256=4X-EtOfXnwkJAyFT8qe4H4sbVTKgM65klLUtY81KHiE,463 -django/contrib/staticfiles/urls.py,sha256=owDM_hdyPeRmxYxZisSMoplwnzWrptI_W8-3K2f7ITA,498 -django/contrib/staticfiles/utils.py,sha256=S-x2G7gXp67kjJ8cKLCljXETZt20UqsRdhjPyJTbLcg,2276 -django/contrib/staticfiles/views.py,sha256=43bHYTHVMWjweU_tqzXpBKEp7EtHru_7rwr2w7U-AZk,1261 -django/contrib/syndication/__init__.py,sha256=b5C6iIdbIOHf5wvcm1QJYsspErH3TyWJnCDYS9NjFY4,73 -django/contrib/syndication/__pycache__/__init__.cpython-38.pyc,, -django/contrib/syndication/__pycache__/apps.cpython-38.pyc,, -django/contrib/syndication/__pycache__/views.cpython-38.pyc,, -django/contrib/syndication/apps.py,sha256=hXquFH_3BL6NNR2cxLU-vHlBJZ3OCjbcl8jkzCNvE64,203 -django/contrib/syndication/views.py,sha256=GAvymnnvekrsklbS6bfEYQqdbrtjgy2fq_t3abgIktY,8663 -django/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/__pycache__/__init__.cpython-38.pyc,, -django/core/__pycache__/asgi.cpython-38.pyc,, -django/core/__pycache__/exceptions.cpython-38.pyc,, -django/core/__pycache__/paginator.cpython-38.pyc,, -django/core/__pycache__/signals.cpython-38.pyc,, -django/core/__pycache__/signing.cpython-38.pyc,, -django/core/__pycache__/validators.cpython-38.pyc,, -django/core/__pycache__/wsgi.cpython-38.pyc,, -django/core/asgi.py,sha256=N2L3GS6F6oL-yD9Tu2otspCi2UhbRQ90LEx3ExOP1m0,386 -django/core/cache/__init__.py,sha256=djbE71-P3Pe5W0C1q4wBcKeKiTwZXvO0BBAAVZDXsXk,3734 -django/core/cache/__pycache__/__init__.cpython-38.pyc,, -django/core/cache/__pycache__/utils.cpython-38.pyc,, -django/core/cache/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/cache/backends/__pycache__/__init__.cpython-38.pyc,, -django/core/cache/backends/__pycache__/base.cpython-38.pyc,, -django/core/cache/backends/__pycache__/db.cpython-38.pyc,, -django/core/cache/backends/__pycache__/dummy.cpython-38.pyc,, -django/core/cache/backends/__pycache__/filebased.cpython-38.pyc,, -django/core/cache/backends/__pycache__/locmem.cpython-38.pyc,, -django/core/cache/backends/__pycache__/memcached.cpython-38.pyc,, -django/core/cache/backends/base.py,sha256=03eVXLBj0iw74MJkreNf1E44fUiyY3YlLlkPzqy30t8,10203 -django/core/cache/backends/db.py,sha256=GmfhmwwPGnJd3wH16qxj1m-RTRfGpRNJ-L7GQDZZd_M,11063 -django/core/cache/backends/dummy.py,sha256=DcfckCOdsfrmqarEQYyeLRDyI73PU3beCfltpofAYSc,1137 -django/core/cache/backends/filebased.py,sha256=JJEfLTdbVBO7zg_361bUmu-Yfr24cXmGFFUdEkJZT84,5460 -django/core/cache/backends/locmem.py,sha256=UX9YHfgQDujCUxsxqmOuQmdubIBkuQbidYhhZktelMs,4130 -django/core/cache/backends/memcached.py,sha256=AWhUekLlky-GAw4hC5zGBKk9zoXckfuLzb-FvFBaqSI,8443 -django/core/cache/utils.py,sha256=nf_f2V3ToTSwtFftQ8fNgN0tsGylo_IE8kTL_Vq7OaI,375 -django/core/checks/__init__.py,sha256=BPnStYHYfhBvSIONGxIKP2Xj-01niFcnCjtVGL0PG2A,994 -django/core/checks/__pycache__/__init__.cpython-38.pyc,, -django/core/checks/__pycache__/async_checks.cpython-38.pyc,, -django/core/checks/__pycache__/caches.cpython-38.pyc,, -django/core/checks/__pycache__/database.cpython-38.pyc,, -django/core/checks/__pycache__/messages.cpython-38.pyc,, -django/core/checks/__pycache__/model_checks.cpython-38.pyc,, -django/core/checks/__pycache__/registry.cpython-38.pyc,, -django/core/checks/__pycache__/templates.cpython-38.pyc,, -django/core/checks/__pycache__/translation.cpython-38.pyc,, -django/core/checks/__pycache__/urls.cpython-38.pyc,, -django/core/checks/async_checks.py,sha256=rtYPbvAzZUbB23OTdfJgArNhVGCrepctB82PLaFTZ9k,403 -django/core/checks/caches.py,sha256=jhyfX_m6TepTYRBa-j3qh1owD1W-3jmceu8b8dIFqVk,415 -django/core/checks/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/checks/compatibility/__pycache__/__init__.cpython-38.pyc,, -django/core/checks/database.py,sha256=sBj-8o4DmpG5QPy1KXgXtZ0FZ0T9xdlT4XBIc70wmEQ,341 -django/core/checks/messages.py,sha256=ZbasGH7L_MeIGIwb_nYiO9Z_MXF0-aXO1ru2xFACj6Y,2161 -django/core/checks/model_checks.py,sha256=41QRdKoW1f8A2HtwsrmdhQFqxtGskmHad-lTP8-snh4,8601 -django/core/checks/registry.py,sha256=kua3JtbM9YlcqxnJsYPP6s2i4K8BG5hSGo8V-Tnl0II,2981 -django/core/checks/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/checks/security/__pycache__/__init__.cpython-38.pyc,, -django/core/checks/security/__pycache__/base.cpython-38.pyc,, -django/core/checks/security/__pycache__/csrf.cpython-38.pyc,, -django/core/checks/security/__pycache__/sessions.cpython-38.pyc,, -django/core/checks/security/base.py,sha256=S1qoMNIO7a47oz8tPbsFVN5Uz3G3SZaNB07aVKvtxz0,7725 -django/core/checks/security/csrf.py,sha256=CH09reOHXQEdCMqhlejyh0IsGwDQkFeHRYO25glZTYE,1259 -django/core/checks/security/sessions.py,sha256=vvsxKEwb3qHgnCG0R5KUkfUpMHuZMfxjo9-X-2BTp-4,2558 -django/core/checks/templates.py,sha256=9_qZn_MWX94i209MVu2uS66NPRgbKWtk_XxetKczyfU,1092 -django/core/checks/translation.py,sha256=CkywI7a5HvzyWeJxKGaj54AKIynfxSMswGgg6NVV2LM,1974 -django/core/checks/urls.py,sha256=lA8wbw2WDC-e4ZAr-9ooEWtGvrNyMh1G-MZbojGq9W8,3246 -django/core/exceptions.py,sha256=12lhXTU_JyYUQFySoyLvJQu0OkYB2saZliAfZLjyR6I,5522 -django/core/files/__init__.py,sha256=OjalFLvs-vPaTE3vP0eYZWyNwMj9pLJZNgG4AcGn2_Y,60 -django/core/files/__pycache__/__init__.cpython-38.pyc,, -django/core/files/__pycache__/base.cpython-38.pyc,, -django/core/files/__pycache__/images.cpython-38.pyc,, -django/core/files/__pycache__/locks.cpython-38.pyc,, -django/core/files/__pycache__/move.cpython-38.pyc,, -django/core/files/__pycache__/storage.cpython-38.pyc,, -django/core/files/__pycache__/temp.cpython-38.pyc,, -django/core/files/__pycache__/uploadedfile.cpython-38.pyc,, -django/core/files/__pycache__/uploadhandler.cpython-38.pyc,, -django/core/files/__pycache__/utils.cpython-38.pyc,, -django/core/files/base.py,sha256=jsYsE3bNpAgaQcUvTE8m1UTj6HVXkHd4bh-Y38JmF84,4812 -django/core/files/images.py,sha256=jmF29FQ1RHZ1Sio6hNjJ6FYVAiz5JQTkAyqX7qWSAFA,2569 -django/core/files/locks.py,sha256=Y5FN6iaVNeFW4HOK1Q424BPTxBpro9l-lxLsE9rUa3E,3514 -django/core/files/move.py,sha256=_4xGm6hCV05X54VY0AkEjYFaNcN85x3hablD2J9jyS4,2973 -django/core/files/storage.py,sha256=JjfWzNgjc2j3ZofDCyGObVVurBzpcvzaeg7PE07Ds3Q,14486 -django/core/files/temp.py,sha256=yy1ye2buKU2PB884jKmzp8jBGIPbPhCa3nflXulVafQ,2491 -django/core/files/uploadedfile.py,sha256=dzZcC1OWFMK52Wp6jzVGIo-MYbkkhSHOhRR4JZgaoQE,3890 -django/core/files/uploadhandler.py,sha256=b0sc54SjxNcf9FsjO8Er-8F0rfyx-UtSF7uoV-j5S_0,6471 -django/core/files/utils.py,sha256=5Ady6JuzCYb_VAtSwc9Dr-iTmpuMIVuJ3RKck1-sYzk,1752 -django/core/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/handlers/__pycache__/__init__.cpython-38.pyc,, -django/core/handlers/__pycache__/asgi.cpython-38.pyc,, -django/core/handlers/__pycache__/base.cpython-38.pyc,, -django/core/handlers/__pycache__/exception.cpython-38.pyc,, -django/core/handlers/__pycache__/wsgi.cpython-38.pyc,, -django/core/handlers/asgi.py,sha256=S7STi-d4_-2np_jqjdZZpYuU_2enrfPnGCTZvsTuYdo,11170 -django/core/handlers/base.py,sha256=M4bfh0JUYb8gko-g0pbHvK5oTRA5n50dQY-Ny57DhCI,14328 -django/core/handlers/exception.py,sha256=r5SuErIDSaQeLMJnTbeWzpsJnifWgnLr0-IhG51ldDI,5226 -django/core/handlers/wsgi.py,sha256=qIfieIyZapfpIR1GmuIaBejuI9brrv_Po3SezAd-glQ,7829 -django/core/mail/__init__.py,sha256=LS59oJ0C1vGsNtVcAoEyLgYlDIAHVnHMLfqiMDauQfE,4875 -django/core/mail/__pycache__/__init__.cpython-38.pyc,, -django/core/mail/__pycache__/message.cpython-38.pyc,, -django/core/mail/__pycache__/utils.cpython-38.pyc,, -django/core/mail/backends/__init__.py,sha256=VJ_9dBWKA48MXBZXVUaTy9NhgfRonapA6UAjVFEPKD8,37 -django/core/mail/backends/__pycache__/__init__.cpython-38.pyc,, -django/core/mail/backends/__pycache__/base.cpython-38.pyc,, -django/core/mail/backends/__pycache__/console.cpython-38.pyc,, -django/core/mail/backends/__pycache__/dummy.cpython-38.pyc,, -django/core/mail/backends/__pycache__/filebased.cpython-38.pyc,, -django/core/mail/backends/__pycache__/locmem.cpython-38.pyc,, -django/core/mail/backends/__pycache__/smtp.cpython-38.pyc,, -django/core/mail/backends/base.py,sha256=f9Oeaw1RAiPHmsTdQakeYzEabfOtULz0UvldP4Cydpk,1660 -django/core/mail/backends/console.py,sha256=l1XFESBbk1Ney5bUgjCYVPoSDzjobzIK3GMQyxQX1Qk,1402 -django/core/mail/backends/dummy.py,sha256=sI7tAa3MfG43UHARduttBvEAYYfiLasgF39jzaZPu9E,234 -django/core/mail/backends/filebased.py,sha256=yriBReURf6y1c9fT2vnA2f_czy9cRJ9fSMipq9BX7tE,2300 -django/core/mail/backends/locmem.py,sha256=OgTK_4QGhsBdqtDKY6bwYNKw2MXudc0PSF5GNVqS7gk,884 -django/core/mail/backends/smtp.py,sha256=wJ3IsY94ust3PtXDUu-Vf59BuRUZIKb0ivJ7YCocKL0,5262 -django/core/mail/message.py,sha256=k7fyPYk6ecQTHDia6gfOSgv7LKrmR7L3hLku5egVL8Y,17026 -django/core/mail/utils.py,sha256=us5kx4w4lSev93Jjpv9chldLuxh3dskcQ1yDVS09MgM,506 -django/core/management/__init__.py,sha256=DE4_F5NkC7sJ4vzAiCGhJr658oX2wN9DU5bXE75pUoc,16522 -django/core/management/__pycache__/__init__.cpython-38.pyc,, -django/core/management/__pycache__/base.cpython-38.pyc,, -django/core/management/__pycache__/color.cpython-38.pyc,, -django/core/management/__pycache__/sql.cpython-38.pyc,, -django/core/management/__pycache__/templates.cpython-38.pyc,, -django/core/management/__pycache__/utils.cpython-38.pyc,, -django/core/management/base.py,sha256=HvR2ZSeGHPGb89M_YhdBwQDpQe9ty5FxUvGgc5CQirM,21508 -django/core/management/color.py,sha256=NMcrXnPbjG06BFbSg7uauASiGS44VO0FdqBDZf27tyQ,1775 -django/core/management/commands/__pycache__/check.cpython-38.pyc,, -django/core/management/commands/__pycache__/compilemessages.cpython-38.pyc,, -django/core/management/commands/__pycache__/createcachetable.cpython-38.pyc,, -django/core/management/commands/__pycache__/dbshell.cpython-38.pyc,, -django/core/management/commands/__pycache__/diffsettings.cpython-38.pyc,, -django/core/management/commands/__pycache__/dumpdata.cpython-38.pyc,, -django/core/management/commands/__pycache__/flush.cpython-38.pyc,, -django/core/management/commands/__pycache__/inspectdb.cpython-38.pyc,, -django/core/management/commands/__pycache__/loaddata.cpython-38.pyc,, -django/core/management/commands/__pycache__/makemessages.cpython-38.pyc,, -django/core/management/commands/__pycache__/makemigrations.cpython-38.pyc,, -django/core/management/commands/__pycache__/migrate.cpython-38.pyc,, -django/core/management/commands/__pycache__/runserver.cpython-38.pyc,, -django/core/management/commands/__pycache__/sendtestemail.cpython-38.pyc,, -django/core/management/commands/__pycache__/shell.cpython-38.pyc,, -django/core/management/commands/__pycache__/showmigrations.cpython-38.pyc,, -django/core/management/commands/__pycache__/sqlflush.cpython-38.pyc,, -django/core/management/commands/__pycache__/sqlmigrate.cpython-38.pyc,, -django/core/management/commands/__pycache__/sqlsequencereset.cpython-38.pyc,, -django/core/management/commands/__pycache__/squashmigrations.cpython-38.pyc,, -django/core/management/commands/__pycache__/startapp.cpython-38.pyc,, -django/core/management/commands/__pycache__/startproject.cpython-38.pyc,, -django/core/management/commands/__pycache__/test.cpython-38.pyc,, -django/core/management/commands/__pycache__/testserver.cpython-38.pyc,, -django/core/management/commands/check.py,sha256=Qw-PLXybBuXSOnc1PLu2It1iDSvxMg4tfbpZZIn-lCc,2463 -django/core/management/commands/compilemessages.py,sha256=yhlygni2xAauEp4UO96rtVPUoEmHYw8uu-xkXoy_0U4,6231 -django/core/management/commands/createcachetable.py,sha256=oH_qKMhsEcneim0yJgBeNHq46xU3mWcWpeceK2cokXk,4295 -django/core/management/commands/dbshell.py,sha256=wcSfQam834go31Wz7Bmzr7Z3F-h5oATx8ZNae3xOoow,1655 -django/core/management/commands/diffsettings.py,sha256=5EnX2aERD8OpKOzvvvBAQWs3mfOwhmdBKbPF6yvImcw,3373 -django/core/management/commands/dumpdata.py,sha256=XdSdMuDhRyspwTX3Ztow5GcVllOalq76XnCJ8-bdaiY,8898 -django/core/management/commands/flush.py,sha256=3dfcCqGnpZKWfx8_MMAqx47soMRqjhyXHfgFpbybXhc,3545 -django/core/management/commands/inspectdb.py,sha256=-2JkwgM3_P4_M4ZJC57tjswvSYUXirm94piJYzIRpp4,13689 -django/core/management/commands/loaddata.py,sha256=VtXUKi19pLnPXWZkSDCrmCnSKfUAfJZQ2ME-oM465BY,14502 -django/core/management/commands/makemessages.py,sha256=hXaf4JQ9jQA2kfr9dG93UrIFBGJSeSBBTh8IIM83cBw,26213 -django/core/management/commands/makemigrations.py,sha256=e9nMf32HDqW28zm_h2TEPQUuDdWFs5Qbhtze8oxvbuw,14487 -django/core/management/commands/migrate.py,sha256=A1AUiZylBHGrLwFaVPrjgoWD53CuWdWBXxxXQ8S21AY,16775 -django/core/management/commands/runserver.py,sha256=dep1XimSed1WP6esSZJ04qturnOzvDYKeArKvsFtUAs,6270 -django/core/management/commands/sendtestemail.py,sha256=LsiP5Xg4AWLtc0vS0JinaaAAKjBbLUnfCq0pa0r4FFw,1456 -django/core/management/commands/shell.py,sha256=tW6wSIq_TxGreSNBEnB1ZAqKAG_i6xSnOYAymeqIOsk,4029 -django/core/management/commands/showmigrations.py,sha256=EYtkzVgj_utUogsQ_y7qoCpMQvAXY1u4KchtcVdH7hU,5855 -django/core/management/commands/sqlflush.py,sha256=mGOZHbMYSVkQRVJOPAmR5ZW9qZRAvcIC3rpmT4yLl7Y,946 -django/core/management/commands/sqlmigrate.py,sha256=iSaF13OoO5jSeW4mK-8WlnUaYkkb2Q1mJO_4dRPoHPc,3102 -django/core/management/commands/sqlsequencereset.py,sha256=whux0yEJxQDbZ-6B_PYOnAVkcrwLUZOrca0ZFynh97w,982 -django/core/management/commands/squashmigrations.py,sha256=TjKfRi5f_oXJJsTS5a0z5S9RP-Peb00Dqf_uaiJdFHg,9728 -django/core/management/commands/startapp.py,sha256=rvXApmLdP3gBinKaOMJtT1g3YrgVTlHteqNqFioNu8Y,503 -django/core/management/commands/startproject.py,sha256=ygP95ZEldotgEVmxDYBPUyAedNQTTwJulKLinGUxZtg,688 -django/core/management/commands/test.py,sha256=MZ8KXfCDUuq-ynHxURrHk5aJOmGg0Ue7bZw1G0v9nWg,2050 -django/core/management/commands/testserver.py,sha256=Veo-U69NUEyFuM_O9tG7GjRZ3aR2vWzcaVWahAIdS_M,2117 -django/core/management/sql.py,sha256=eafIdm7dMP4uPwujcGtNZA55mnB0H9X4AZH4U7Qqf-Q,1894 -django/core/management/templates.py,sha256=jWyFcN0eDMFET-hGsJZ0FpdKANi_FG-en2dvxRL_mvw,13648 -django/core/management/utils.py,sha256=k_YvRKOkaVDUjrRWkZe3MDGg6kB3iaCFymJDs30pJ_A,4873 -django/core/paginator.py,sha256=fVOS86mmRkcby5QGHI_qlQeAhiLePInjeXwtBMKn4j8,6095 -django/core/serializers/__init__.py,sha256=LYFhem-lYJIo0Xg4XgunbfNp6UTW7irjWAUn0fsWwBE,8582 -django/core/serializers/__pycache__/__init__.cpython-38.pyc,, -django/core/serializers/__pycache__/base.cpython-38.pyc,, -django/core/serializers/__pycache__/json.cpython-38.pyc,, -django/core/serializers/__pycache__/python.cpython-38.pyc,, -django/core/serializers/__pycache__/pyyaml.cpython-38.pyc,, -django/core/serializers/__pycache__/xml_serializer.cpython-38.pyc,, -django/core/serializers/base.py,sha256=qIocEiFhQAtQ-PNjEBJ_2CEXO_ioVXkQVQVvKDVDq9Y,11737 -django/core/serializers/json.py,sha256=peWRUbvjFzrMKl7wdF5gucyG68en8DvMrKKd9Y-qNB8,3411 -django/core/serializers/python.py,sha256=KcsSNcCYbOo5qb1sNRMsexIpig_q8f0h4asOLt8qnDY,5966 -django/core/serializers/pyyaml.py,sha256=X1Ib61dkMC1Kv0aYNs76jNcDym34S-QFk04ds6dpAlc,2916 -django/core/serializers/xml_serializer.py,sha256=qZ5oDy_AV16iY7f1UgqcJ7ga8woA1lb9SVc9sr06bFU,16643 -django/core/servers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/core/servers/__pycache__/__init__.cpython-38.pyc,, -django/core/servers/__pycache__/basehttp.cpython-38.pyc,, -django/core/servers/basehttp.py,sha256=rOURDedcu6Dxj_r6t9r4N6Kr7Sahu710sVXrq97Nyg8,7891 -django/core/signals.py,sha256=5vh1e7IgPN78WXPo7-hEMPN9tQcqJSZHu0WCibNgd-E,151 -django/core/signing.py,sha256=e3UQboGNKv1ottOHDt8DjU9NE0-99CPF5uUOmn8iPDA,7397 -django/core/validators.py,sha256=tmaXTX2qvxRSD_S1A2zU3BXBhUIBdCldkC9jq7xLO0Y,18572 -django/core/wsgi.py,sha256=2sYMSe3IBrENeQT7rys-04CRmf8hW2Q2CjlkBUIyjHk,388 -django/db/__init__.py,sha256=T8s-HTPRYj1ezRtUqzam8wQup01EhaQQXHQYVkAH8jY,1900 -django/db/__pycache__/__init__.cpython-38.pyc,, -django/db/__pycache__/transaction.cpython-38.pyc,, -django/db/__pycache__/utils.cpython-38.pyc,, -django/db/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/__pycache__/ddl_references.cpython-38.pyc,, -django/db/backends/__pycache__/signals.cpython-38.pyc,, -django/db/backends/__pycache__/utils.cpython-38.pyc,, -django/db/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/base/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/base/__pycache__/base.cpython-38.pyc,, -django/db/backends/base/__pycache__/client.cpython-38.pyc,, -django/db/backends/base/__pycache__/creation.cpython-38.pyc,, -django/db/backends/base/__pycache__/features.cpython-38.pyc,, -django/db/backends/base/__pycache__/introspection.cpython-38.pyc,, -django/db/backends/base/__pycache__/operations.cpython-38.pyc,, -django/db/backends/base/__pycache__/schema.cpython-38.pyc,, -django/db/backends/base/__pycache__/validation.cpython-38.pyc,, -django/db/backends/base/base.py,sha256=yVcM6MXV8GDyJBYuFqSsznJoXJul7HLksMo9tmB0UOE,24644 -django/db/backends/base/client.py,sha256=P-KiurUqzc-VJpBfuTBBpQZAPyTIPytCJmf6ZYZqcT4,525 -django/db/backends/base/creation.py,sha256=h4EUsUoINXoVs5sRWhUoH5lP9k2hP_nhuv3lmDghuwA,12610 -django/db/backends/base/features.py,sha256=xmrGTs2dOU5r6IimhdaasOTLiHJljjX_ZMt4_DTWGf0,13062 -django/db/backends/base/introspection.py,sha256=jmwGFV5lTusn_990hegQN_LMRdCkpHwORQfQXNAb97Y,7718 -django/db/backends/base/operations.py,sha256=65vqgypflAaUjnX42V7FcMcHBG3u-GYGWSJUrWi7usU,27188 -django/db/backends/base/schema.py,sha256=aAmBR5GFRybMUwtWpHpQDlHNGZdElGp22QQ22E-1TIQ,57233 -django/db/backends/base/validation.py,sha256=4zIAVsePyETiRtK7CAw78y4ZiCPISs0Pv17mFWy2Tr4,1040 -django/db/backends/ddl_references.py,sha256=GHar8YR-PrBRTWtm5FF9q40y4Q8SjYhDvcyLumDfJLs,6665 -django/db/backends/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/dummy/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/dummy/__pycache__/base.cpython-38.pyc,, -django/db/backends/dummy/__pycache__/features.cpython-38.pyc,, -django/db/backends/dummy/base.py,sha256=ZsB_hKOW9tuaNbZt64fGY6tk0_FqMiF72rp8TE3NrDA,2244 -django/db/backends/dummy/features.py,sha256=Pg8_jND-aoJomTaBBXU3hJEjzpB-rLs6VwpoKkOYuQg,181 -django/db/backends/mysql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/mysql/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/base.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/client.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/compiler.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/creation.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/features.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/introspection.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/operations.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/schema.cpython-38.pyc,, -django/db/backends/mysql/__pycache__/validation.cpython-38.pyc,, -django/db/backends/mysql/base.py,sha256=jntLZHRlcM1AqT9vz2P5At3gCk4JPX68ZQQ2Y0B6Tyk,15246 -django/db/backends/mysql/client.py,sha256=CM75cHDXq9mw44AigAQGNosrzRXa68v-ikqWPfTklVA,1907 -django/db/backends/mysql/compiler.py,sha256=o2126x7cmrtrrBQH1kG4klbj46pfVFkwRE2Xdh8sWKw,1599 -django/db/backends/mysql/creation.py,sha256=2iH4Uo9KJUaJs12ZIWEXQHeXZmxkpzkIvY-x_dGJOZY,3035 -django/db/backends/mysql/features.py,sha256=Q5oO5r7AcB9hV6hAREMRerq5NnyAOVMGUF1V93hRvDk,6716 -django/db/backends/mysql/introspection.py,sha256=3QRGBONP5CeDBxhSEZ2O0Lj7HgQegsACOoIeL8Yii2o,12677 -django/db/backends/mysql/operations.py,sha256=SWdaFIv2SgwhNBHcfMcpKR6Uewc2845Vlkc1EiJ3dJo,16090 -django/db/backends/mysql/schema.py,sha256=8jEl0eHz6u4qeUvsJkE9jRo58h1a_GuLK27ny7hEt68,6647 -django/db/backends/mysql/validation.py,sha256=U11SbB91lcWzaZZPxY96Cik9s9wO61cm_fOxnX-Cvzo,2920 -django/db/backends/oracle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/oracle/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/base.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/client.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/creation.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/features.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/functions.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/introspection.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/operations.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/schema.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/utils.cpython-38.pyc,, -django/db/backends/oracle/__pycache__/validation.cpython-38.pyc,, -django/db/backends/oracle/base.py,sha256=54UmolgeIaLkm9s9o9slPQWYDT-kUVuPunz9JEQhUts,23467 -django/db/backends/oracle/client.py,sha256=Vk4ATgDLc4xQzb06MFO-Nw6OA81sSpqTJGHREdvNFvk,543 -django/db/backends/oracle/creation.py,sha256=PIK2aKSL7ITWPV-HePu0jp0hab34b9iYXZKhQndEJog,19630 -django/db/backends/oracle/features.py,sha256=AFirCpP0yUPXbBDOrGwv4xxXqOsyUyxzpIz9DjKPZ3c,2417 -django/db/backends/oracle/functions.py,sha256=PHMO9cApG1EhZPD4E0Vd6dzPmE_Dzouf9GIWbF1X7kc,768 -django/db/backends/oracle/introspection.py,sha256=2usF8-F-LoQjTdvZW2lt19Kg-U-DQ7EqVyli01FH0xw,13652 -django/db/backends/oracle/operations.py,sha256=hsGpyEJH6D4Zdc_JSkvf_TbP5xudw_KYDYHMCjw0N2w,28230 -django/db/backends/oracle/schema.py,sha256=LU-lefeX97QUPCJvzJ82rtF_1VgESUpRHjqb47xnH0Q,7803 -django/db/backends/oracle/utils.py,sha256=4Xan7GDwo6YH6EmKr7zI3Xriv_NNf6bw9cxJZQM0Vps,2418 -django/db/backends/oracle/validation.py,sha256=O1Vx5ljfyEVo9W-o4OVsu_OTfZ5V5P9HX3kNMtdE75o,860 -django/db/backends/postgresql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/postgresql/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/base.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/client.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/creation.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/features.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/introspection.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/operations.cpython-38.pyc,, -django/db/backends/postgresql/__pycache__/schema.cpython-38.pyc,, -django/db/backends/postgresql/base.py,sha256=uNxdKFNUHBwkGym7S1ybU87uLFMdGLB7WQTG9QT6N1w,13066 -django/db/backends/postgresql/client.py,sha256=HwhzhKfNpFlV8cHNe17SFDZVpZuGVolJvRj8o3voqyg,1847 -django/db/backends/postgresql/creation.py,sha256=YtzTqKB1406xZhJkPd4auKRoTpxyY74ZvDIhwVGYGW8,3344 -django/db/backends/postgresql/features.py,sha256=_MlbfQl3JAaaKGIRvoR8VEBP3q5o4yJTCnylz1Ats9g,3070 -django/db/backends/postgresql/introspection.py,sha256=-cMuzwBCm9P9-X7wcaWr5UkExjKFBRLczgyggurlKrg,9891 -django/db/backends/postgresql/operations.py,sha256=8Cs_ST6C9kiurZxL7jCar5vLjAYsxPJrClPrRV4hiQk,12069 -django/db/backends/postgresql/schema.py,sha256=I0uHMMRk5RhrZonqoxmh2ivdoWomGHpQg7fIEaiWMHg,9991 -django/db/backends/signals.py,sha256=Yl14KjYJijTt1ypIZirp90lS7UTJ8UogPFI_DwbcsSc,66 -django/db/backends/sqlite3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/db/backends/sqlite3/__pycache__/__init__.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/base.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/client.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/creation.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/features.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/introspection.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/operations.cpython-38.pyc,, -django/db/backends/sqlite3/__pycache__/schema.cpython-38.pyc,, -django/db/backends/sqlite3/base.py,sha256=xPp8mqq8Q4-0YIYCJYHsl3wQNM9TG-6_AAv2aQRxAfU,25700 -django/db/backends/sqlite3/client.py,sha256=520bsra6udtcjz6FAksGnf5oCCtUS1F8NBSCr3C5jNc,506 -django/db/backends/sqlite3/creation.py,sha256=Z54YcyMPiVqGPwoMsVE4RWd5Bi3G7Yt4RaniLqgLTkw,4370 -django/db/backends/sqlite3/features.py,sha256=hDh-1Ngd1rJCpFM0AkhiPx9B17qsP7wKKG1es7MJmnM,2782 -django/db/backends/sqlite3/introspection.py,sha256=vwEWi1JATTZp-uxRqY0PDgmd_l4b8mRXlnhrGMcxUQU,19222 -django/db/backends/sqlite3/operations.py,sha256=tZo5H7zlbn0PO5NRrZACFcFuKqIai691kwVPN9V4gfI,14863 -django/db/backends/sqlite3/schema.py,sha256=sK_Tels7ppc0ldL7P7OaFUAFOIbr3eQabGxcbU7ox_Q,20582 -django/db/backends/utils.py,sha256=ze_39D7cNv6fVgnVgc5GC85PDuvGE0xdEXluWTtOlPo,8433 -django/db/migrations/__init__.py,sha256=Oa4RvfEa6hITCqdcqwXYC66YknFKyluuy7vtNbSc-L4,97 -django/db/migrations/__pycache__/__init__.cpython-38.pyc,, -django/db/migrations/__pycache__/autodetector.cpython-38.pyc,, -django/db/migrations/__pycache__/exceptions.cpython-38.pyc,, -django/db/migrations/__pycache__/executor.cpython-38.pyc,, -django/db/migrations/__pycache__/graph.cpython-38.pyc,, -django/db/migrations/__pycache__/loader.cpython-38.pyc,, -django/db/migrations/__pycache__/migration.cpython-38.pyc,, -django/db/migrations/__pycache__/optimizer.cpython-38.pyc,, -django/db/migrations/__pycache__/questioner.cpython-38.pyc,, -django/db/migrations/__pycache__/recorder.cpython-38.pyc,, -django/db/migrations/__pycache__/serializer.cpython-38.pyc,, -django/db/migrations/__pycache__/state.cpython-38.pyc,, -django/db/migrations/__pycache__/utils.cpython-38.pyc,, -django/db/migrations/__pycache__/writer.cpython-38.pyc,, -django/db/migrations/autodetector.py,sha256=1bGQA47i3lHn4e1TwgwA4QbLjSd6tTvJmyL7ZCyYoOM,65210 -django/db/migrations/exceptions.py,sha256=XLTZ_ufpVJX_nL4egDEG5DqvB8eqSGUuVoMNZ1lpXek,1198 -django/db/migrations/executor.py,sha256=qOlba3wuiwoOsJaZ4r6MH3tRYxb5a7-DnWjvQZGcSto,17778 -django/db/migrations/graph.py,sha256=qho3dqkbm8QyaRebGQUBQWFv1TQ-70AS8aWtOmw3Ius,12841 -django/db/migrations/loader.py,sha256=_M8cNZFKDbSMIzcq9sQDYQBLc6whoYPzklNUunesNwA,16125 -django/db/migrations/migration.py,sha256=qK9faUXqRpPrZ8vnQ8t3beBLVHzqX5QgFyobiWNRkqI,8242 -django/db/migrations/operations/__init__.py,sha256=48VoWNmXeVdSqnMql-wdWVGmv8BWpfFLz2pH3I5RDCY,778 -django/db/migrations/operations/__pycache__/__init__.cpython-38.pyc,, -django/db/migrations/operations/__pycache__/base.cpython-38.pyc,, -django/db/migrations/operations/__pycache__/fields.cpython-38.pyc,, -django/db/migrations/operations/__pycache__/models.cpython-38.pyc,, -django/db/migrations/operations/__pycache__/special.cpython-38.pyc,, -django/db/migrations/operations/__pycache__/utils.cpython-38.pyc,, -django/db/migrations/operations/base.py,sha256=zew6sCdu7lQ-MIjVkNbJjKVFWz-46P4lhUM1TvBfDMs,4786 -django/db/migrations/operations/fields.py,sha256=RYN1KVEbDhpNanxMvSqfaM2uE07bn9XaCq84I_opFwU,14877 -django/db/migrations/operations/models.py,sha256=rk6DZtWf8lLIasflyNfHwcy_p3c_mVMKxDTh3WFheZo,33082 -django/db/migrations/operations/special.py,sha256=6vO2RRgaUPnxEjbkTX3QwAN-LaadZFHYpFHouAaMmig,7792 -django/db/migrations/operations/utils.py,sha256=T-yDzGuR-HPHTuHd5wOrTqdNP7J9UQAKwG5LWZA7Klg,3765 -django/db/migrations/optimizer.py,sha256=9taqZs5iJLXngtpgpN_DLOT8h61bimFGaP46yKjL_9o,3251 -django/db/migrations/questioner.py,sha256=Dvvktl3jWqmQMVRrTp7dNDBEm6an5L5nQFr25RSpMuE,9911 -django/db/migrations/recorder.py,sha256=ZOWNP5bCjsV9QpL54q0jhiKhdy2OfERB5-MWEMRrmkE,3457 -django/db/migrations/serializer.py,sha256=ZrXlnAP1DI-1Shvjb2Pq7LezLfrCDmkhI12kwmK_b-4,12350 -django/db/migrations/state.py,sha256=ZTmNCTG4Ae-d1pDvATN2K3hUEeCnfh63hZE5VpPZfyY,25275 -django/db/migrations/utils.py,sha256=ApIIVhNrnnZ79yzrbPeREFsk5kxLCuOd1rwh3dDaNLI,388 -django/db/migrations/writer.py,sha256=6QsSQ6jOSPBjMduPWEsLzibi4_Cr3Rd8wY7TdCWiNRU,11293 -django/db/models/__init__.py,sha256=7WtGjLKaxGsQomDTe1AOpm0qJkteGoDW163y5uc8SwU,2522 -django/db/models/__pycache__/__init__.cpython-38.pyc,, -django/db/models/__pycache__/aggregates.cpython-38.pyc,, -django/db/models/__pycache__/base.cpython-38.pyc,, -django/db/models/__pycache__/constants.cpython-38.pyc,, -django/db/models/__pycache__/constraints.cpython-38.pyc,, -django/db/models/__pycache__/deletion.cpython-38.pyc,, -django/db/models/__pycache__/enums.cpython-38.pyc,, -django/db/models/__pycache__/expressions.cpython-38.pyc,, -django/db/models/__pycache__/indexes.cpython-38.pyc,, -django/db/models/__pycache__/lookups.cpython-38.pyc,, -django/db/models/__pycache__/manager.cpython-38.pyc,, -django/db/models/__pycache__/options.cpython-38.pyc,, -django/db/models/__pycache__/query.cpython-38.pyc,, -django/db/models/__pycache__/query_utils.cpython-38.pyc,, -django/db/models/__pycache__/signals.cpython-38.pyc,, -django/db/models/__pycache__/utils.cpython-38.pyc,, -django/db/models/aggregates.py,sha256=c6JnF1FfI1-h90zX0-Ts2lpDwsl5raNoOC9SF_LfvkE,5933 -django/db/models/base.py,sha256=dKRMVLOTJwmIqS86gGpolyMFC1ajVtMUmnKD-3fa0Pw,81684 -django/db/models/constants.py,sha256=BstFLrG_rKBHL-IZ7iqXY9uSKLL6IOKOjheXBetCan0,117 -django/db/models/constraints.py,sha256=wpq9Pm2j_jEjl2RCKyPWyK8nLyRQfOiKkhOcmjmVmH4,5934 -django/db/models/deletion.py,sha256=4BuhWkmlCQelVOoo9go3tPh4cbKw4BrzutEo6IPHY5g,19740 -django/db/models/enums.py,sha256=zgMWwMCKuetbVmgXAhWsssLF1Mwvzv-Knh8ps02LLpA,2740 -django/db/models/expressions.py,sha256=UfmiJddj9_5NEdJ13OAgzL1cFJGmGA0JIFnLfybLl4s,49056 -django/db/models/fields/__init__.py,sha256=aYyPXE3ec2cPdLnRIftSxFopS-GGLxVe4RNK--TrjKU,88514 -django/db/models/fields/__pycache__/__init__.cpython-38.pyc,, -django/db/models/fields/__pycache__/files.cpython-38.pyc,, -django/db/models/fields/__pycache__/json.cpython-38.pyc,, -django/db/models/fields/__pycache__/mixins.cpython-38.pyc,, -django/db/models/fields/__pycache__/proxy.cpython-38.pyc,, -django/db/models/fields/__pycache__/related.cpython-38.pyc,, -django/db/models/fields/__pycache__/related_descriptors.cpython-38.pyc,, -django/db/models/fields/__pycache__/related_lookups.cpython-38.pyc,, -django/db/models/fields/__pycache__/reverse_related.cpython-38.pyc,, -django/db/models/fields/files.py,sha256=5zAGW2IVHR0coJXH7BQ4wuVURAerXLscP9ixlaH9Rr4,18281 -django/db/models/fields/json.py,sha256=6n36QWJM26mw9V2MmylO5U15FmUTQ-UKz-HG4mbN5kU,18280 -django/db/models/fields/mixins.py,sha256=9KF0Yg0MpeSHYJFu0D4kSOq_hye0TxnofdfaOmG_NsY,1801 -django/db/models/fields/proxy.py,sha256=fcJ2d1ZiY0sEouSq9SV7W1fm5eE3C_nMGky3Ma347dk,515 -django/db/models/fields/related.py,sha256=dg383U1EfDgGuRCZ2aCDZgGl_RmypAbPmKpSn8TrIvg,70411 -django/db/models/fields/related_descriptors.py,sha256=eFaUugyXPN_TeW2Yi4h6u9TvTqpoXqhEyKKwoCGG4LQ,54044 -django/db/models/fields/related_lookups.py,sha256=NaImhBkgA6h2mf07hQ422Ze-RcqJZXSYEvzZ6TghzVA,7040 -django/db/models/fields/reverse_related.py,sha256=l1dmM6f6_YoL9qh7qsoiUvy29dvusdUMG6l-l4GxCNQ,10277 -django/db/models/functions/__init__.py,sha256=VamCmZLBP7J6jGCiPNCWWe4TypPK5gDebWLwHb_7hAA,2010 -django/db/models/functions/__pycache__/__init__.cpython-38.pyc,, -django/db/models/functions/__pycache__/comparison.cpython-38.pyc,, -django/db/models/functions/__pycache__/datetime.cpython-38.pyc,, -django/db/models/functions/__pycache__/math.cpython-38.pyc,, -django/db/models/functions/__pycache__/mixins.cpython-38.pyc,, -django/db/models/functions/__pycache__/text.cpython-38.pyc,, -django/db/models/functions/__pycache__/window.cpython-38.pyc,, -django/db/models/functions/comparison.py,sha256=ahcKkYOAf3TJOkdcIbfjxmOk72aR_ahTY8emBNjiCpg,5488 -django/db/models/functions/datetime.py,sha256=8cRlB43cwH6LjnfzKJykPoajLfgZraQGLwiZHtebwQQ,11596 -django/db/models/functions/math.py,sha256=R_rvGZxqR9GEhuAUUXt7oJ2bcglOyCH6tPzlOg-7DNo,4629 -django/db/models/functions/mixins.py,sha256=LsnLHHFrIv5_hZEBN7iTQMFua_gQlG4nDORB8DnVeSw,2078 -django/db/models/functions/text.py,sha256=TWsSg0A9ln6l7d1xqRPaZs0s_R0Ob6Qe12XdGrVrjkQ,10905 -django/db/models/functions/window.py,sha256=yL07Blhu1WudxHMbIfRA2bBIXuwZec8wLPbW6N5eOyc,2761 -django/db/models/indexes.py,sha256=0yROA6tguZGDM44LK95s6R8q-F6VvqFDTSF4wG722ao,5245 -django/db/models/lookups.py,sha256=XtbvxjgAXShr1PHUZMWhWq10Qcf9ffVKg3lyaGPFhaM,22617 -django/db/models/manager.py,sha256=vBBpLaBxjKWaRZZgqC8uHHMTQrCZVKz3Ttk3DlO-O24,6836 -django/db/models/options.py,sha256=pKSv2IhDwf9RDe4CrnGXiD4Fn7xFsIOud4Y8OS90bnE,35497 -django/db/models/query.py,sha256=1qWehHzDM_x8IK-61KIOdcZQZiWk3aCegVfQFoQv-Ts,82703 -django/db/models/query_utils.py,sha256=6EsdYzazX823eH-InzYFtneVbwkf-NwRiV1jwQHeNTE,12606 -django/db/models/signals.py,sha256=qCf59m4zcQX6wXrbNSxIQCvWaFhaKagb6IxEkdx_5VY,1573 -django/db/models/sql/__init__.py,sha256=iwBpPl3WxYM7qrQ1qKaFGG-loqKwU5OOJt0SVH0m3RE,229 -django/db/models/sql/__pycache__/__init__.cpython-38.pyc,, -django/db/models/sql/__pycache__/compiler.cpython-38.pyc,, -django/db/models/sql/__pycache__/constants.cpython-38.pyc,, -django/db/models/sql/__pycache__/datastructures.cpython-38.pyc,, -django/db/models/sql/__pycache__/query.cpython-38.pyc,, -django/db/models/sql/__pycache__/subqueries.cpython-38.pyc,, -django/db/models/sql/__pycache__/where.cpython-38.pyc,, -django/db/models/sql/compiler.py,sha256=UfutxH5EMvO8J6awWFFIocbqh0h3g2x7c_SSC-CdWh0,72714 -django/db/models/sql/constants.py,sha256=0t7IbSsUSB_RIzYumXOG8qBEv6y99iKThVAvFowjAY0,533 -django/db/models/sql/datastructures.py,sha256=mLoKO_9r7gAg8AFjHH9c2nl9hHc-jhtwNWSkNNFCk9w,6592 -django/db/models/sql/query.py,sha256=dNhTAykiF3pVVroE3dfMc9qACQh3-MSbBlHRQ4NNdh8,107924 -django/db/models/sql/subqueries.py,sha256=Ntcc9-z3erxHWmIOKWcYagEQk-xPZS7r20X5iV6ggu4,5798 -django/db/models/sql/where.py,sha256=_IaQ8UWjHCNvH1quPawJj8e_goAKrzDX7ZhXSt46tvk,8697 -django/db/models/utils.py,sha256=pmyzLPFu3cZk7H6ZwuGM_IyaAsfOcllSdNvoGn0A-ZQ,1085 -django/db/transaction.py,sha256=3sIxxLIk-wvXuGNFGYeoxutgAmvftcJPRfE1uAAgg0M,11535 -django/db/utils.py,sha256=hd9uCUhSu93OrCsa_YGiMRTnxttmqTPwrSyijCd5LMU,10398 -django/dispatch/__init__.py,sha256=qP203zNwjaolUFnXLNZHnuBn7HNzyw9_JkODECRKZbc,286 -django/dispatch/__pycache__/__init__.cpython-38.pyc,, -django/dispatch/__pycache__/dispatcher.cpython-38.pyc,, -django/dispatch/dispatcher.py,sha256=SiDx8kIZkPGK-gHZ-ctSml35Vmgg3E72j74OI8yeSW0,10861 -django/dispatch/license.txt,sha256=VABMS2BpZOvBY68W0EYHwW5Cj4p4oCb-y1P3DAn0qU8,1743 -django/forms/__init__.py,sha256=S6ckOMmvUX-vVST6AC-M8BzsfVQwuEUAdHWabMN-OGI,368 -django/forms/__pycache__/__init__.cpython-38.pyc,, -django/forms/__pycache__/boundfield.cpython-38.pyc,, -django/forms/__pycache__/fields.cpython-38.pyc,, -django/forms/__pycache__/forms.cpython-38.pyc,, -django/forms/__pycache__/formsets.cpython-38.pyc,, -django/forms/__pycache__/models.cpython-38.pyc,, -django/forms/__pycache__/renderers.cpython-38.pyc,, -django/forms/__pycache__/utils.cpython-38.pyc,, -django/forms/__pycache__/widgets.cpython-38.pyc,, -django/forms/boundfield.py,sha256=IRad_GjJb8UwQlqxr3o4fs17LmpHEQ7ds7g_2U1BkqY,10246 -django/forms/fields.py,sha256=yykrmGHSQWa6S8O2JiDIqHmQSOOx-x6ZibCb5GIOP0Q,46925 -django/forms/forms.py,sha256=nsUgGOxrnOd7apXpv0vCK6_nlsFDCbgWvrBJs5oNjHo,19875 -django/forms/formsets.py,sha256=vZMfv8qvppE5DDdN9l2-hEroAvucLrQiW5b7DkoaZfM,18577 -django/forms/jinja2/django/forms/widgets/attrs.html,sha256=_J2P-AOpHFhIwaqCNcrJFxEY4s-KPdy0Wcq0KlarIG0,172 -django/forms/jinja2/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/jinja2/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/jinja2/django/forms/widgets/clearable_file_input.html,sha256=h5_tWYnKRjGTYkzOq6AfDpkffj31DdEolpdtInilitM,511 -django/forms/jinja2/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/input.html,sha256=u12fZde-ugkEAAkPAtAfSxwGQmYBkXkssWohOUs-xoE,172 -django/forms/jinja2/django/forms/widgets/input_option.html,sha256=PyRNn9lmE9Da0-RK37zW4yJZUSiJWgIPCU9ou5oUC28,219 -django/forms/jinja2/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 -django/forms/jinja2/django/forms/widgets/multiple_input.html,sha256=O9W9tLA_gdxNqN_No2Tesd8_2GhOTyKEkCOnp_rUBn4,431 -django/forms/jinja2/django/forms/widgets/multiwidget.html,sha256=pr-MxRyucRxn_HvBGZvbc3JbFyrAolbroxvA4zmPz2Y,86 -django/forms/jinja2/django/forms/widgets/number.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/password.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/jinja2/django/forms/widgets/radio_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/jinja2/django/forms/widgets/select.html,sha256=ESyDzbLTtM7-OG34EuSUnvxCtyP5IrQsZh0jGFrIdEA,365 -django/forms/jinja2/django/forms/widgets/select_date.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/jinja2/django/forms/widgets/select_option.html,sha256=tNa1D3G8iy2ZcWeKyI-mijjDjRmMaqSo-jnAR_VS3Qc,110 -django/forms/jinja2/django/forms/widgets/splitdatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/jinja2/django/forms/widgets/splithiddendatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/jinja2/django/forms/widgets/text.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2AjrhnUivgZFKNBLdwCSZSeuSmCqmCkDA,145 -django/forms/jinja2/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/jinja2/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/models.py,sha256=-kZrLK269nLZGru8uMMEhz8nVETaScco3Iy5kWc7EBs,57395 -django/forms/renderers.py,sha256=22wW0hk6WpILRgUArrOYh2YJ4wxsNCbHJUFj7H0K0bQ,1970 -django/forms/templates/django/forms/widgets/attrs.html,sha256=9ylIPv5EZg-rx2qPLgobRkw6Zq_WJSM8kt106PpSYa0,172 -django/forms/templates/django/forms/widgets/checkbox.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/checkbox_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/templates/django/forms/widgets/checkbox_select.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/templates/django/forms/widgets/clearable_file_input.html,sha256=h5_tWYnKRjGTYkzOq6AfDpkffj31DdEolpdtInilitM,511 -django/forms/templates/django/forms/widgets/date.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/datetime.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/email.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/file.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/hidden.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/input.html,sha256=dwzzrLocGLZQIaGe-_X8k7z87jV6AFtn28LilnUnUH0,189 -django/forms/templates/django/forms/widgets/input_option.html,sha256=PyRNn9lmE9Da0-RK37zW4yJZUSiJWgIPCU9ou5oUC28,219 -django/forms/templates/django/forms/widgets/multiple_hidden.html,sha256=T54-n1ZeUlTd-svM3C4tLF42umKM0R5A7fdfsdthwkA,54 -django/forms/templates/django/forms/widgets/multiple_input.html,sha256=HwEaZLEiZYdPJ6brC9QWRGaIKzcX5UA2Tj5Rsq_NvOk,462 -django/forms/templates/django/forms/widgets/multiwidget.html,sha256=slk4AgCdXnVmFvavhjVcsza0quTOP2LG50D8wna0dw0,117 -django/forms/templates/django/forms/widgets/number.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/password.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/radio.html,sha256=-ob26uqmvrEUMZPQq6kAqK4KBk2YZHTCWWCM6BnaL0w,57 -django/forms/templates/django/forms/widgets/radio_option.html,sha256=U2dFtAXvOn_eK4ok0oO6BwKE-3-jozJboGah_PQFLVM,55 -django/forms/templates/django/forms/widgets/select.html,sha256=7U0RzjeESG87ENzQjPRUF71gvKvGjVVvXcpsW2-BTR4,384 -django/forms/templates/django/forms/widgets/select_date.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/templates/django/forms/widgets/select_option.html,sha256=N_psd0JYCqNhx2eh2oyvkF2KU2dv7M9mtMw_4BLYq8A,127 -django/forms/templates/django/forms/widgets/splitdatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/templates/django/forms/widgets/splithiddendatetime.html,sha256=AzaPLlNLg91qkVQwwtAJxwOqDemrtt_btSkWLpboJDs,54 -django/forms/templates/django/forms/widgets/text.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/textarea.html,sha256=Av1Y-hpXUU2AjrhnUivgZFKNBLdwCSZSeuSmCqmCkDA,145 -django/forms/templates/django/forms/widgets/time.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/templates/django/forms/widgets/url.html,sha256=fXpbxMzAdbv_avfWC5464gD2jFng931Eq7vzbzy1-yA,48 -django/forms/utils.py,sha256=6IRHrAKaB5-q-AEP3r-u2_4Rw5GsthmcwiE3T9B-wnc,5748 -django/forms/widgets.py,sha256=fjXiNj285hr3GyNCi2FvhyaWF9MsWU3JL7v5qDLSCwc,37370 -django/http/__init__.py,sha256=5JImoB1BZNuZBOt5qyDX7t51McYbkDLX45eKmNN_Fes,1010 -django/http/__pycache__/__init__.cpython-38.pyc,, -django/http/__pycache__/cookie.cpython-38.pyc,, -django/http/__pycache__/multipartparser.cpython-38.pyc,, -django/http/__pycache__/request.cpython-38.pyc,, -django/http/__pycache__/response.cpython-38.pyc,, -django/http/cookie.py,sha256=Zpg6OEW9-dGvr5ByQhlHyGjLJzvNNrnGL1WzolnsM6U,818 -django/http/multipartparser.py,sha256=NM4hf7m32dD1KRbtGDA8Q8-njTrJtXXk65rJlGL68oo,25082 -django/http/request.py,sha256=WvBpPl-ULq9RkDY44pvlsoaTG7MXtOh6RtaA-MzaBg0,24334 -django/http/response.py,sha256=nc6_--UXtQYM-DT-9swmQJxeVSvM6r8jwHkHHyBZSN4,20186 -django/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/middleware/__pycache__/__init__.cpython-38.pyc,, -django/middleware/__pycache__/cache.cpython-38.pyc,, -django/middleware/__pycache__/clickjacking.cpython-38.pyc,, -django/middleware/__pycache__/common.cpython-38.pyc,, -django/middleware/__pycache__/csrf.cpython-38.pyc,, -django/middleware/__pycache__/gzip.cpython-38.pyc,, -django/middleware/__pycache__/http.cpython-38.pyc,, -django/middleware/__pycache__/locale.cpython-38.pyc,, -django/middleware/__pycache__/security.cpython-38.pyc,, -django/middleware/cache.py,sha256=4dgUYezSOxI-PEZYfgdOYaVPmYImJmhKFPQ0j9EGMSc,8536 -django/middleware/clickjacking.py,sha256=0AZde0p2OTy_h67GZkit60BGJ2mJ79XFoxcmWrtHF6U,1721 -django/middleware/common.py,sha256=mdEcByHwNg4F68xvf2OBsejkE2uHNo4AIUO602iX5o4,7362 -django/middleware/csrf.py,sha256=KJgUcXSlb29bjlNF7nX_iOSTFtueSH5BsxXRyd-lw6c,13796 -django/middleware/gzip.py,sha256=RYJlhyFyyz_7KkXI6NP36YwngZ9vXN3SMeV70KXeeWY,2110 -django/middleware/http.py,sha256=JiRGXvtfmXxYTomy7gde5pcG45GX7R0qpXiI5Fk06dE,1624 -django/middleware/locale.py,sha256=xcvY4JdMA5whoedqtt_OJwSGuJFUXRtWXxJ173DtvvA,3006 -django/middleware/security.py,sha256=P1TEgoToUWynxRZ3GmkGtYLiig36exWsRBoF9b-Wwys,2552 -django/shortcuts.py,sha256=XdSS1JMI7C96gr2IF9k28vIuBIcP8uTPNH96_5Ol4oY,4896 -django/template/__init__.py,sha256=Spya_MCD2UAaGMDzQKFCehGRTYcD6GseSI345kVxQgg,1846 -django/template/__pycache__/__init__.cpython-38.pyc,, -django/template/__pycache__/base.cpython-38.pyc,, -django/template/__pycache__/context.cpython-38.pyc,, -django/template/__pycache__/context_processors.cpython-38.pyc,, -django/template/__pycache__/defaultfilters.cpython-38.pyc,, -django/template/__pycache__/defaulttags.cpython-38.pyc,, -django/template/__pycache__/engine.cpython-38.pyc,, -django/template/__pycache__/exceptions.cpython-38.pyc,, -django/template/__pycache__/library.cpython-38.pyc,, -django/template/__pycache__/loader.cpython-38.pyc,, -django/template/__pycache__/loader_tags.cpython-38.pyc,, -django/template/__pycache__/response.cpython-38.pyc,, -django/template/__pycache__/smartif.cpython-38.pyc,, -django/template/__pycache__/utils.cpython-38.pyc,, -django/template/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/template/backends/__pycache__/__init__.cpython-38.pyc,, -django/template/backends/__pycache__/base.cpython-38.pyc,, -django/template/backends/__pycache__/django.cpython-38.pyc,, -django/template/backends/__pycache__/dummy.cpython-38.pyc,, -django/template/backends/__pycache__/jinja2.cpython-38.pyc,, -django/template/backends/__pycache__/utils.cpython-38.pyc,, -django/template/backends/base.py,sha256=P8dvOmQppJ8YMZ5_XyOJGDzspbQMNGV82GxL5IwrMFM,2751 -django/template/backends/django.py,sha256=ev9gJ21Hwik6ZYREvo_WMsHkZwElSUaFDFAjloO2snA,4172 -django/template/backends/dummy.py,sha256=GRerKCIHVU0LjcioT9CmY8NaP0yIeQA4Wrv6lxdY9NM,1720 -django/template/backends/jinja2.py,sha256=nJBIoZ3nb3wq_5zSab9BlXnTyYdUF39fAERaAmaOpok,4075 -django/template/backends/utils.py,sha256=NORFWk_tz1IsX6WNZjP7Iz5Az6X8pUP0dmBfNC4vodk,418 -django/template/base.py,sha256=AcpakRI_AOiVAN7c4rwauxXa2ujf_q8tMSqwEFJegMA,38288 -django/template/context.py,sha256=4Zgmka6B7nfNsoIXD6O-f6FlnCH2IyCQxxXI8qesORU,8940 -django/template/context_processors.py,sha256=drfyVYugSe1lg9VIbsC3oRLUG64Gw94Oq77FLfk2ZNI,2407 -django/template/defaultfilters.py,sha256=6PlZNn-YqEEAR4UmQR8acsR6CyqjZeKyvooF5AwoJTc,26047 -django/template/defaulttags.py,sha256=sbSV_Sl07aXFFc8lRZ54Dn-n9AIhfD9ssGKV32kPy3U,50026 -django/template/engine.py,sha256=HPV4TrvBvq_--wmnJzKhnnUYTj1pR1-ASRgdmxIhOeU,6882 -django/template/exceptions.py,sha256=awd7B80xhFB574Lt2IdIyHCpD6KGGyuKGkIoalr9deo,1340 -django/template/library.py,sha256=ehca-hPsWo00yH07zINB6lA7IeEoZZ9ncoMzUpci9uU,12826 -django/template/loader.py,sha256=-t5cTnWJrxtS2vyg9cguz4rXxlTBni4XoJUuqJNglPI,2054 -django/template/loader_tags.py,sha256=X006SqPjdgfQa0kSWDi4fuhS7sQn_A7jEWVT_4o9PVg,12485 -django/template/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/template/loaders/__pycache__/__init__.cpython-38.pyc,, -django/template/loaders/__pycache__/app_directories.cpython-38.pyc,, -django/template/loaders/__pycache__/base.cpython-38.pyc,, -django/template/loaders/__pycache__/cached.cpython-38.pyc,, -django/template/loaders/__pycache__/filesystem.cpython-38.pyc,, -django/template/loaders/__pycache__/locmem.cpython-38.pyc,, -django/template/loaders/app_directories.py,sha256=w3a84EAXWX12w7F1CyxIQ_lFiTwxFS7xf3rCEcnUqyc,313 -django/template/loaders/base.py,sha256=kvjmN-UHxdd6Pwgkexw7IHL0YeJQgXXbuz_tdj5ciKc,1558 -django/template/loaders/cached.py,sha256=VNhREXUV34NeSJXwXvQZwvC7aM0hqkZVLEAST-Nt-cw,3505 -django/template/loaders/filesystem.py,sha256=OWTnIwWbVj-Td5VrOkKw1G_6pIuz1Vnh5CedZN5glyU,1507 -django/template/loaders/locmem.py,sha256=8cBYI8wPOOnIx_3v7fC5jezA_6pJLqgqObeLwHXQJKo,673 -django/template/response.py,sha256=Q_BrPN7acOZg8bWhDDxKteL17X2FVqPDlk8_J6TNmRk,5399 -django/template/smartif.py,sha256=QBvsTtD4YiyGoU4hXrW8vqR0CBAFOZGuDoRP3aGEgOs,6408 -django/template/utils.py,sha256=7bjK3PEM-yEu6LbMVsAh3VQqXEguYBDJSRIPWBII52c,3560 -django/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/templatetags/__pycache__/__init__.cpython-38.pyc,, -django/templatetags/__pycache__/cache.cpython-38.pyc,, -django/templatetags/__pycache__/i18n.cpython-38.pyc,, -django/templatetags/__pycache__/l10n.cpython-38.pyc,, -django/templatetags/__pycache__/static.cpython-38.pyc,, -django/templatetags/__pycache__/tz.cpython-38.pyc,, -django/templatetags/cache.py,sha256=otY3c4Ti9YLxFfOuIX5TZ7w12aGDPkyGfQNsaPVZ_M0,3401 -django/templatetags/i18n.py,sha256=ZD0Ry0U23npSHfX4EAd5Mn3XB_5xpvy1_qMcrPOoeTg,19087 -django/templatetags/l10n.py,sha256=I6jRSBLvL34H-_rwGuHfU22VBhO2IHNRue78KWb8pTc,1723 -django/templatetags/static.py,sha256=om3cu4NVaH4MVUq-XPLxPVNlLUCxTbbp0qAVVSaClj4,4502 -django/templatetags/tz.py,sha256=HFzJsvh-x9yjoju4kiIpKAI0U_4crtoftqiT8llM_u8,5400 -django/test/__init__.py,sha256=QtKYTxK0z6qQQk1M4q_QQ1jztJce7Gfs_bPdNWHhl68,767 -django/test/__pycache__/__init__.cpython-38.pyc,, -django/test/__pycache__/client.cpython-38.pyc,, -django/test/__pycache__/html.cpython-38.pyc,, -django/test/__pycache__/runner.cpython-38.pyc,, -django/test/__pycache__/selenium.cpython-38.pyc,, -django/test/__pycache__/signals.cpython-38.pyc,, -django/test/__pycache__/testcases.cpython-38.pyc,, -django/test/__pycache__/utils.cpython-38.pyc,, -django/test/client.py,sha256=4cKp6ooxYv6_9y2icpk8P2wPmRNECmfqZ5PwADB36Pk,36683 -django/test/html.py,sha256=kurDoez9RrFV_wehlBGCiwSMTGKa-IbvtHwQWrBpzWo,7675 -django/test/runner.py,sha256=N999I5MxAqCv4n0GcMWNIBarb6NNjD6ysngpTvWKdPs,28785 -django/test/selenium.py,sha256=bCtb5Z4CmVF3qjUHGArDHcw7DMwxwRILztMK9hlP7iM,5104 -django/test/signals.py,sha256=ZSg_ddgeyXrTy-rAv78ZZpQUz19oq_-5YOEVmxW-JtU,6700 -django/test/testcases.py,sha256=iEpqJEi5Y8g3A1hmT0MiapakLPxmT4jVg2JWVzj_UhI,60764 -django/test/utils.py,sha256=2gauBe1StWstj8ON5-mfKk8-Wi2oX5uyQDq-pFy1YeA,29564 -django/urls/__init__.py,sha256=FdHfNv5NwWEIt1EqEpRY7xJ-i4tD-SCLj0tq3qT6X1E,959 -django/urls/__pycache__/__init__.cpython-38.pyc,, -django/urls/__pycache__/base.cpython-38.pyc,, -django/urls/__pycache__/conf.cpython-38.pyc,, -django/urls/__pycache__/converters.cpython-38.pyc,, -django/urls/__pycache__/exceptions.cpython-38.pyc,, -django/urls/__pycache__/resolvers.cpython-38.pyc,, -django/urls/__pycache__/utils.cpython-38.pyc,, -django/urls/base.py,sha256=YlZAILhjcYGrmpV71tkzBH6WObTJRNT6kOV6Poyj2JA,5596 -django/urls/conf.py,sha256=8Xug9NhJXDEysRXWrY2iHf0snfJMUmQkYZAomPltWMY,2946 -django/urls/converters.py,sha256=_eluhZBczkfMwCZJEQtM7s7KJQYbwoO4lygFQvtWSHA,1216 -django/urls/exceptions.py,sha256=alLNjkORtAxneC00g4qnRpG5wouOHvJvGbymdpKtG_I,115 -django/urls/resolvers.py,sha256=yzi1aMKQZtpxBlOqCl6aGs-m4I07rUdgA_k_2wrVOO4,27614 -django/urls/utils.py,sha256=VHDcmggNRHSbPJAql5KJhe7wX4pSjrKb64Fu-p14D9Q,2152 -django/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/utils/__pycache__/__init__.cpython-38.pyc,, -django/utils/__pycache__/_os.cpython-38.pyc,, -django/utils/__pycache__/archive.cpython-38.pyc,, -django/utils/__pycache__/asyncio.cpython-38.pyc,, -django/utils/__pycache__/autoreload.cpython-38.pyc,, -django/utils/__pycache__/baseconv.cpython-38.pyc,, -django/utils/__pycache__/cache.cpython-38.pyc,, -django/utils/__pycache__/crypto.cpython-38.pyc,, -django/utils/__pycache__/datastructures.cpython-38.pyc,, -django/utils/__pycache__/dateformat.cpython-38.pyc,, -django/utils/__pycache__/dateparse.cpython-38.pyc,, -django/utils/__pycache__/dates.cpython-38.pyc,, -django/utils/__pycache__/datetime_safe.cpython-38.pyc,, -django/utils/__pycache__/deconstruct.cpython-38.pyc,, -django/utils/__pycache__/decorators.cpython-38.pyc,, -django/utils/__pycache__/deprecation.cpython-38.pyc,, -django/utils/__pycache__/duration.cpython-38.pyc,, -django/utils/__pycache__/encoding.cpython-38.pyc,, -django/utils/__pycache__/feedgenerator.cpython-38.pyc,, -django/utils/__pycache__/formats.cpython-38.pyc,, -django/utils/__pycache__/functional.cpython-38.pyc,, -django/utils/__pycache__/hashable.cpython-38.pyc,, -django/utils/__pycache__/html.cpython-38.pyc,, -django/utils/__pycache__/http.cpython-38.pyc,, -django/utils/__pycache__/inspect.cpython-38.pyc,, -django/utils/__pycache__/ipv6.cpython-38.pyc,, -django/utils/__pycache__/itercompat.cpython-38.pyc,, -django/utils/__pycache__/jslex.cpython-38.pyc,, -django/utils/__pycache__/log.cpython-38.pyc,, -django/utils/__pycache__/lorem_ipsum.cpython-38.pyc,, -django/utils/__pycache__/module_loading.cpython-38.pyc,, -django/utils/__pycache__/numberformat.cpython-38.pyc,, -django/utils/__pycache__/regex_helper.cpython-38.pyc,, -django/utils/__pycache__/safestring.cpython-38.pyc,, -django/utils/__pycache__/termcolors.cpython-38.pyc,, -django/utils/__pycache__/text.cpython-38.pyc,, -django/utils/__pycache__/timesince.cpython-38.pyc,, -django/utils/__pycache__/timezone.cpython-38.pyc,, -django/utils/__pycache__/topological_sort.cpython-38.pyc,, -django/utils/__pycache__/tree.cpython-38.pyc,, -django/utils/__pycache__/version.cpython-38.pyc,, -django/utils/__pycache__/xmlutils.cpython-38.pyc,, -django/utils/_os.py,sha256=_C_v7KbojT-CD3fn2yJGFbjCbV5HkJr3MBqZrjjxK-s,2295 -django/utils/archive.py,sha256=rkwfW1x3mZC5gbW6h8O0Ye5cDLTNLd_dvVh70RVlyx4,7418 -django/utils/asyncio.py,sha256=sFRUKbrTnXo5uGRNI9RHOZ1bb0dFFOge5UzT7qwGyQ8,1165 -django/utils/autoreload.py,sha256=NQf0nHzkMnhf6Sb4rEp0Y6ScuwVK49efvvmqQB3nfN8,23159 -django/utils/baseconv.py,sha256=xYReIqcF2FFD85BqDrl48xo4UijII9D6YyC-FHsUPbw,2989 -django/utils/cache.py,sha256=S7RFhtSDh8deciaQXCD1DXdQf-5Ej2ja5vfScdnBU_k,16266 -django/utils/crypto.py,sha256=Q44QgPdTND2mVrZRRf4skCoSxLB1LV-OHRUsDRpo3dY,3104 -django/utils/datastructures.py,sha256=loLZmeX0egRU3KKBuQiMRZU1X9i9YHB_i3Zz2JN4Bfg,10113 -django/utils/dateformat.py,sha256=suKtY5ajzwmo0lNj97BD43m-jL69grVPZw5wnXHK3U4,10850 -django/utils/dateparse.py,sha256=f86b87hrUsML5sCtnpNesNb_RWK-XCyv0YEISEOc4Ug,4825 -django/utils/dates.py,sha256=hl7plurNHC7tj_9Olb7H7-LCtOhOV71oWg-xx5PBFh4,2021 -django/utils/datetime_safe.py,sha256=JsosYYXcRNqnHSCC2VajcW5tC4KnkxUb5gOYmDURRkY,2854 -django/utils/deconstruct.py,sha256=hcO_7qassSI5dTfQ5CPttA8s3f9yaF8UnqKKma3bI6M,1975 -django/utils/decorators.py,sha256=P3Is7I_Xe_evMKH5ho_ssHynuFmTzB7uTysnJwW-XnI,6834 -django/utils/deprecation.py,sha256=YgpFdF-aD5J92Ofbm6Qbb2BphGsLJO1XuoGocaDyjCs,5004 -django/utils/duration.py,sha256=VtDUAQKIPFuv6XkwG6gIjLQYtcs8vgGMcS4OQpSFx-E,1234 -django/utils/encoding.py,sha256=g41xTq1TPKSstCG0sD47-GfPLyiB18w8xCF7danfrcI,9336 -django/utils/feedgenerator.py,sha256=rI74OiJ8cWgt9AhA0RnYdKTVi7IXUM6FCLpFUQjDRmc,15109 -django/utils/formats.py,sha256=sORcm7Pr_hBG4kfZYC8Dp7pCP2o-CSjpBKJmluWRjbU,9033 -django/utils/functional.py,sha256=FdT7FuhLQGyakQga9ZVlrULa0oGCpBX1VPwqjcDc35c,13993 -django/utils/hashable.py,sha256=oKA7b4KMSFYou8278uoKN8OhIr1v_4HvqpnFuWX6CcY,541 -django/utils/html.py,sha256=9bDmR5GPXrTUGIJjO8pCm2vZrOuB4U37Y6zAOeBl2Is,13151 -django/utils/http.py,sha256=KHblgvlwxbUcigNmvd5YDXoa1nnUB_WQreV6R2quKlo,16881 -django/utils/inspect.py,sha256=6UgUGkYM4O6tgD2xLf4-_SwccNsYyCj-qm-eV-UuQsU,1789 -django/utils/ipv6.py,sha256=WBkmZXdtbIHgcaWDKm4ElRvzyu_wKLCW2aA18g1RCJo,1350 -django/utils/itercompat.py,sha256=lacIDjczhxbwG4ON_KfG1H6VNPOGOpbRhnVhbedo2CY,184 -django/utils/jslex.py,sha256=FkgHjH5lbd9i0X-ockJlVK6TAa8iq22qR3Y1qrnmLDY,7695 -django/utils/log.py,sha256=EPL1Ns4NX_oUzYZ-yWYOcGP6StU3-eBBVHWE6Uaubgg,7737 -django/utils/lorem_ipsum.py,sha256=P_BSLsITDP2ZW9EJPy6ciFneib0iz9ezBz2LD7CViRE,4775 -django/utils/module_loading.py,sha256=0aH8A5ceSe90pYMpm04JkiUSSivkVqCtyQduDmKlIJM,3592 -django/utils/numberformat.py,sha256=vZy07ugV3tUwTPqDYLyJuuNKxPkIbed2pNcRZT_rUUY,3619 -django/utils/regex_helper.py,sha256=rDwP-EYSHtD_tLLiNG3RCx7rOi5t_FH7COfhDPO1rKg,12739 -django/utils/safestring.py,sha256=zesWIkFq4lAONEDpDVsIxwTDV0wHGq-duKQQGMdzh0w,1764 -django/utils/termcolors.py,sha256=sXUFjND4TFmBqJgoMex1IMhoDGzD5U27iHqNtIMa3rk,7362 -django/utils/text.py,sha256=0SRZpvVTE9KJjfoDkz9-o966vaZQFCHas3Zpa1lAasU,14062 -django/utils/timesince.py,sha256=dKLRobflTWs4YlNUbeniN_JsgbdYMx9XkQzaAwCF6zw,3183 -django/utils/timezone.py,sha256=E1erCidfuX08P2Of1zRssHCzV7RzDlbbL3sVdtW7l0k,7410 -django/utils/topological_sort.py,sha256=JAPUKIset8fuFwQT2FYjyTR8zjJWv3QplaBN0nAVdhQ,1206 -django/utils/translation/__init__.py,sha256=omP19SbH9QsVCGxAeKQZeLIHl2uIZg_S8xebAw2ocqU,10841 -django/utils/translation/__pycache__/__init__.cpython-38.pyc,, -django/utils/translation/__pycache__/reloader.cpython-38.pyc,, -django/utils/translation/__pycache__/template.cpython-38.pyc,, -django/utils/translation/__pycache__/trans_null.cpython-38.pyc,, -django/utils/translation/__pycache__/trans_real.cpython-38.pyc,, -django/utils/translation/reloader.py,sha256=ipcY2Wz7yHTs_hkwF12foDFUSsNxLtlxiGOrAdsGcRE,1208 -django/utils/translation/template.py,sha256=SVpfKA8df41wf7Q-WqNluORBWhL4pHiAv5FNufWP9Lo,10035 -django/utils/translation/trans_null.py,sha256=yp82bHt5oqqL95Z5PFoYCZeENOulxzp-IqMmkWz0l9Y,1257 -django/utils/translation/trans_real.py,sha256=D-3v-8HfqGQJ6nEN9K9EoppBl085NibMdo3VYQu_4Mo,19914 -django/utils/tree.py,sha256=HKi-DFkh6PCmWxwQhKRvMPDP5AufD_BY3DpZM1ivnNo,4886 -django/utils/version.py,sha256=lf4G3gOmEBh8O8mmWl3u6ZoEgQR5bqqfmmh0IvTJT_0,3219 -django/utils/xmlutils.py,sha256=ABVrtMX1Vbv3z8BM8-oc2Bi1FxmwTgvSqafZM0gxVjM,1142 -django/views/__init__.py,sha256=DGdAuGC0t1bMju9i-B9p_gqPgRIFHtLXTdIxNKWFGsw,63 -django/views/__pycache__/__init__.cpython-38.pyc,, -django/views/__pycache__/csrf.cpython-38.pyc,, -django/views/__pycache__/debug.cpython-38.pyc,, -django/views/__pycache__/defaults.cpython-38.pyc,, -django/views/__pycache__/i18n.cpython-38.pyc,, -django/views/__pycache__/static.cpython-38.pyc,, -django/views/csrf.py,sha256=FyfA6d8rWoeuycXwRttRr_jcfZt7Cijt9VIM0uV45f4,6276 -django/views/debug.py,sha256=fuz4fgHz816JRQUjnwbip2WgfDufX70J6ePmn73UyBQ,21406 -django/views/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -django/views/decorators/__pycache__/__init__.cpython-38.pyc,, -django/views/decorators/__pycache__/cache.cpython-38.pyc,, -django/views/decorators/__pycache__/clickjacking.cpython-38.pyc,, -django/views/decorators/__pycache__/csrf.cpython-38.pyc,, -django/views/decorators/__pycache__/debug.cpython-38.pyc,, -django/views/decorators/__pycache__/gzip.cpython-38.pyc,, -django/views/decorators/__pycache__/http.cpython-38.pyc,, -django/views/decorators/__pycache__/vary.cpython-38.pyc,, -django/views/decorators/cache.py,sha256=bBPXOx7_yZogkQwp_82AkjAtn49kgIjJvwcDfmXWX9o,1705 -django/views/decorators/clickjacking.py,sha256=EW-DRe2dR8yg4Rf8HRHl8c4-C8mL3HKGa6PxZRKmFtU,1565 -django/views/decorators/csrf.py,sha256=xPWVVNw_DBidvX_ZVYvN7CePt1HpxpUxsb6wMr0Oe4Y,2073 -django/views/decorators/debug.py,sha256=RbK_DO_Vg_120u0-tEqW1BcTYqcgZRccYMuW-X7JjnQ,3090 -django/views/decorators/gzip.py,sha256=PtpSGd8BePa1utGqvKMFzpLtZJxpV2_Jej8llw5bCJY,253 -django/views/decorators/http.py,sha256=NgZFNkaX0DwDJWUNNgj-FRbBOQEyW4KwbrWDZOa_9Go,4713 -django/views/decorators/vary.py,sha256=6wEXI5yBFZYDVednNPc0bYbXGG-QzkIUQ-50ErDrA_k,1084 -django/views/defaults.py,sha256=cFxfvjxuyvV9d0X5FQEB6Pd52lCRcxk5Y1xmC_NsMx8,4923 -django/views/generic/__init__.py,sha256=WTnzEXnKyJqzHlLu_VsXInYg-GokDNBCUYNV_U6U-ok,822 -django/views/generic/__pycache__/__init__.cpython-38.pyc,, -django/views/generic/__pycache__/base.cpython-38.pyc,, -django/views/generic/__pycache__/dates.cpython-38.pyc,, -django/views/generic/__pycache__/detail.cpython-38.pyc,, -django/views/generic/__pycache__/edit.cpython-38.pyc,, -django/views/generic/__pycache__/list.cpython-38.pyc,, -django/views/generic/base.py,sha256=JV5FkPoQuyM8BrDGrmXAXnsykMalkbze5kVBWr0ECEs,8683 -django/views/generic/dates.py,sha256=gtBty1gMf2wuV0LMvsyh8OvCXf8AceLyURBUe6MjmZw,25431 -django/views/generic/detail.py,sha256=m8otoffJXPW9ml-vAtXeM4asTT5I4pvuoR4BhjpWB6A,6507 -django/views/generic/edit.py,sha256=zPO3D8rFrSDjJG1OnRYn0frGqVq8VMKAEUihZU2NrIk,8332 -django/views/generic/list.py,sha256=whDapHWQc65L-jspWDMegzGGo6pJ_4pYsDSGQ2vukwg,7676 -django/views/i18n.py,sha256=-Cwr06GyAkVIHSj3ahPx32im5-Vkh4LgPtG2krIKkso,11516 -django/views/static.py,sha256=dEqVcWqNQ4HlWW3EGs1cjQ6IZd5OXMHLvBCe9bgy0mc,4553 -django/views/templates/default_urlconf.html,sha256=zqfwUolL9moZH6_Qh8w61NHJnCUGZ3uSD9RT3FsmwmQ,16737 -django/views/templates/technical_404.html,sha256=nZT2gkPAYc7G8VNJXst-dEyim0t83xjX-TtCGtxJZwc,2453 -django/views/templates/technical_500.html,sha256=N8qdNGwhWmtCvwmicv9kHhwofjLEjpUjIwLNmbw799E,17351 -django/views/templates/technical_500.txt,sha256=KX6_zLNECd3skhITfosD_5UqGLZ4bQRVTsLJX-EhVlI,3471 diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/REQUESTED b/backend/venv/Lib/site-packages/Django-3.1.dist-info/REQUESTED deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/WHEEL b/backend/venv/Lib/site-packages/Django-3.1.dist-info/WHEEL deleted file mode 100644 index e499438d14705f01334395d11563f4a839614445..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.1) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/entry_points.txt b/backend/venv/Lib/site-packages/Django-3.1.dist-info/entry_points.txt deleted file mode 100644 index 22df67eba5186fe2b4a741a222ddb7d7a62c2f03..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -django-admin = django.core.management:execute_from_command_line - diff --git a/backend/venv/Lib/site-packages/Django-3.1.dist-info/top_level.txt b/backend/venv/Lib/site-packages/Django-3.1.dist-info/top_level.txt deleted file mode 100644 index d3e4ba564fbf9ac31944e674cfb4469113120ab1..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Django-3.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -django diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/AUTHORS b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/AUTHORS deleted file mode 100644 index 90c7fa4d8c1e67038a278c6d7a244c2d65e7ce56..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/AUTHORS +++ /dev/null @@ -1,29 +0,0 @@ -PyJWT lead developer ---------------------- - - - jpadilla - - -Original author ------------------- - -- progrium - - -Patches and Suggestions ------------------------ - - - Boris Feld - - - Åsmund Ødegård - Adding support for RSA-SHA256 privat/public signature. - - - Mark Adams - - - Wouter Bolsterlee - - - Michael Davis - - - Vinod Gupta - - - Derek Weitzel diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/INSTALLER b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e38a32041e49332e5e81c2d363dc418d68..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/LICENSE b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/LICENSE deleted file mode 100644 index bdc7819ea106ffe4e8416311df223e2c00c36844..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 José Padilla - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/METADATA b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/METADATA deleted file mode 100644 index 47ee5589077fa6c491614f6f48dc2c6fd4658348..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/METADATA +++ /dev/null @@ -1,115 +0,0 @@ -Metadata-Version: 2.1 -Name: PyJWT -Version: 1.7.1 -Summary: JSON Web Token implementation in Python -Home-page: http://github.com/jpadilla/pyjwt -Author: Jose Padilla -Author-email: hello@jpadilla.com -License: MIT -Keywords: jwt json web token security signing -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Natural Language :: English -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Topic :: Utilities -Provides-Extra: crypto -Requires-Dist: cryptography (>=1.4) ; extra == 'crypto' -Provides-Extra: flake8 -Requires-Dist: flake8 ; extra == 'flake8' -Requires-Dist: flake8-import-order ; extra == 'flake8' -Requires-Dist: pep8-naming ; extra == 'flake8' -Provides-Extra: test -Requires-Dist: pytest (<5.0.0,>=4.0.1) ; extra == 'test' -Requires-Dist: pytest-cov (<3.0.0,>=2.6.0) ; extra == 'test' -Requires-Dist: pytest-runner (<5.0.0,>=4.2) ; extra == 'test' - -PyJWT -===== - -.. image:: https://travis-ci.com/jpadilla/pyjwt.svg?branch=master - :target: http://travis-ci.com/jpadilla/pyjwt?branch=master - -.. image:: https://ci.appveyor.com/api/projects/status/h8nt70aqtwhht39t?svg=true - :target: https://ci.appveyor.com/project/jpadilla/pyjwt - -.. image:: https://img.shields.io/pypi/v/pyjwt.svg - :target: https://pypi.python.org/pypi/pyjwt - -.. image:: https://coveralls.io/repos/jpadilla/pyjwt/badge.svg?branch=master - :target: https://coveralls.io/r/jpadilla/pyjwt?branch=master - -.. image:: https://readthedocs.org/projects/pyjwt/badge/?version=latest - :target: https://pyjwt.readthedocs.io - -A Python implementation of `RFC 7519 `_. Original implementation was written by `@progrium `_. - -Sponsor -------- - -+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| |auth0-logo| | If you want to quickly add secure token-based authentication to Python projects, feel free to check Auth0's Python SDK and free plan at `auth0.com/overview `_. | -+--------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. |auth0-logo| image:: https://user-images.githubusercontent.com/83319/31722733-de95bbde-b3ea-11e7-96bf-4f4e8f915588.png - -Installing ----------- - -Install with **pip**: - -.. code-block:: sh - - $ pip install PyJWT - - -Usage ------ - -.. code:: python - - >>> import jwt - >>> encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256') - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.4twFt5NiznN84AWoo1d7KO1T_yoc0Z6XOpOVswacPZg' - - >>> jwt.decode(encoded, 'secret', algorithms=['HS256']) - {'some': 'payload'} - - -Command line ------------- - -Usage:: - - pyjwt [options] INPUT - -Decoding examples:: - - pyjwt --key=secret decode TOKEN - pyjwt decode --no-verify TOKEN - -See more options executing ``pyjwt --help``. - - -Documentation -------------- - -View the full docs online at https://pyjwt.readthedocs.io/en/latest/ - - -Tests ------ - -You can run tests from the project root after cloning with: - -.. code-block:: sh - - $ python setup.py test - - diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/RECORD b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/RECORD deleted file mode 100644 index 527aea23d4731a8004323ac140cf666c11a5c67e..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/RECORD +++ /dev/null @@ -1,36 +0,0 @@ -../../Scripts/pyjwt.exe,sha256=ykZOY8iw3g9mp5DA7UZvEwuhGS4xh5-xdvDGtC89Pys,106381 -PyJWT-1.7.1.dist-info/AUTHORS,sha256=rahh5ZJ3f4RSF4X1_K1DvxTRm4Hy45QiMP7dDG_-yrE,595 -PyJWT-1.7.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -PyJWT-1.7.1.dist-info/LICENSE,sha256=7IKvgVtfnahoWvswDMW-t5SeHCK3m2wcBUeWzv32ysY,1080 -PyJWT-1.7.1.dist-info/METADATA,sha256=wIohFuzbkeGUiMkkD5U98z520aUoY6UnmsfDl4vVHRI,3878 -PyJWT-1.7.1.dist-info/RECORD,, -PyJWT-1.7.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -PyJWT-1.7.1.dist-info/WHEEL,sha256=_wJFdOYk7i3xxT8ElOkUJvOdOvfNGbR9g-bf6UQT6sU,110 -PyJWT-1.7.1.dist-info/entry_points.txt,sha256=Xl_tLkGbTgywYa7PwaEY2xSiCtVtM2PdHTL4CW_n9dM,45 -PyJWT-1.7.1.dist-info/top_level.txt,sha256=RP5DHNyJbMq2ka0FmfTgoSaQzh7e3r5XuCWCO8a00k8,4 -jwt/__init__.py,sha256=zzpUkNjnVRNWZKLBgn-t3fR3IWVdCWekrAKtsZWkCoQ,810 -jwt/__main__.py,sha256=_rMsGakpyw1N023P8QOjCgbCxhXSCNIg92YpmUhQGMk,4162 -jwt/__pycache__/__init__.cpython-38.pyc,, -jwt/__pycache__/__main__.cpython-38.pyc,, -jwt/__pycache__/algorithms.cpython-38.pyc,, -jwt/__pycache__/api_jws.cpython-38.pyc,, -jwt/__pycache__/api_jwt.cpython-38.pyc,, -jwt/__pycache__/compat.cpython-38.pyc,, -jwt/__pycache__/exceptions.cpython-38.pyc,, -jwt/__pycache__/help.cpython-38.pyc,, -jwt/__pycache__/utils.cpython-38.pyc,, -jwt/algorithms.py,sha256=kL1ARjxNL8JeuxEpWS8On14qJWomMX_A_ncIrnZhBrA,13336 -jwt/api_jws.py,sha256=wQxbg_cYR4hAJl4-9Ijf29B46NrOKhruXS7ANPFqkZ8,8095 -jwt/api_jwt.py,sha256=NKRiCsTcMd0B5N-74zvqBYpQuxBxC4f6TCLM6P0jxVU,7905 -jwt/compat.py,sha256=VG2zhmZFQ5spP0AThSVumRogymUXORz6fxA1jTew-cA,1624 -jwt/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -jwt/contrib/__pycache__/__init__.cpython-38.pyc,, -jwt/contrib/algorithms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -jwt/contrib/algorithms/__pycache__/__init__.cpython-38.pyc,, -jwt/contrib/algorithms/__pycache__/py_ecdsa.cpython-38.pyc,, -jwt/contrib/algorithms/__pycache__/pycrypto.cpython-38.pyc,, -jwt/contrib/algorithms/py_ecdsa.py,sha256=tSTUrwx-u14DJcqAChRzJG-wf7bEY2Gv2hI5xSZZNjk,1771 -jwt/contrib/algorithms/pycrypto.py,sha256=mU3vRfk9QKj06ky3XXKXNkxv8-R4mBHbFR3EvbOgJ6k,1249 -jwt/exceptions.py,sha256=kGq96NMkyPBmx7-RXvLXq9ddTo2_SJPKPTpPscvGUuA,986 -jwt/help.py,sha256=w9sYBatZK8-DIAxLPsdxQBVHXnqjOTETJ4dFY5hhEHs,1609 -jwt/utils.py,sha256=RraFiloy_xsB8NA1CrlHxS9lR73If8amInQ3P1mKXeM,2629 diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/REQUESTED b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/REQUESTED deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/WHEEL b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/WHEEL deleted file mode 100644 index c4bde30377756381c5d37d2ed1a082566a715c9b..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.32.3) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/entry_points.txt b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/entry_points.txt deleted file mode 100644 index 78717b266102c5f270f2b450618bc30d53a6b52b..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -pyjwt = jwt.__main__:main - diff --git a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/top_level.txt b/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/top_level.txt deleted file mode 100644 index 27ccc9bc3a9ca1cd3dab3b2530e67b3309fde50a..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/PyJWT-1.7.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -jwt diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/AUTHORS b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/AUTHORS deleted file mode 100644 index 3dc223418bb7a2453ccc32dd28d0f6c768441518..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/AUTHORS +++ /dev/null @@ -1,231 +0,0 @@ -Pygments is written and maintained by Georg Brandl . - -Major developers are Tim Hatch and Armin Ronacher -. - -Other contributors, listed alphabetically, are: - -* Sam Aaron -- Ioke lexer -* Ali Afshar -- image formatter -* Thomas Aglassinger -- Easytrieve, JCL, Rexx, Transact-SQL and VBScript - lexers -* Muthiah Annamalai -- Ezhil lexer -* Kumar Appaiah -- Debian control lexer -* Andreas Amann -- AppleScript lexer -* Timothy Armstrong -- Dart lexer fixes -* Jeffrey Arnold -- R/S, Rd, BUGS, Jags, and Stan lexers -* Jeremy Ashkenas -- CoffeeScript lexer -* José Joaquín Atria -- Praat lexer -* Stefan Matthias Aust -- Smalltalk lexer -* Lucas Bajolet -- Nit lexer -* Ben Bangert -- Mako lexers -* Max Battcher -- Darcs patch lexer -* Thomas Baruchel -- APL lexer -* Tim Baumann -- (Literate) Agda lexer -* Paul Baumgart, 280 North, Inc. -- Objective-J lexer -* Michael Bayer -- Myghty lexers -* Thomas Beale -- Archetype lexers -* John Benediktsson -- Factor lexer -* Trevor Bergeron -- mIRC formatter -* Vincent Bernat -- LessCSS lexer -* Christopher Bertels -- Fancy lexer -* Sébastien Bigaret -- QVT Operational lexer -* Jarrett Billingsley -- MiniD lexer -* Adam Blinkinsop -- Haskell, Redcode lexers -* Stéphane Blondon -- SGF and Sieve lexers -* Frits van Bommel -- assembler lexers -* Pierre Bourdon -- bugfixes -* Martijn Braam -- Kernel log lexer -* Matthias Bussonnier -- ANSI style handling for terminal-256 formatter -* chebee7i -- Python traceback lexer improvements -* Hiram Chirino -- Scaml and Jade lexers -* Mauricio Caceres -- SAS and Stata lexers. -* Ian Cooper -- VGL lexer -* David Corbett -- Inform, Jasmin, JSGF, Snowball, and TADS 3 lexers -* Leaf Corcoran -- MoonScript lexer -* Christopher Creutzig -- MuPAD lexer -* Daniël W. Crompton -- Pike lexer -* Pete Curry -- bugfixes -* Bryan Davis -- EBNF lexer -* Bruno Deferrari -- Shen lexer -* Giedrius Dubinskas -- HTML formatter improvements -* Owen Durni -- Haxe lexer -* Alexander Dutton, Oxford University Computing Services -- SPARQL lexer -* James Edwards -- Terraform lexer -* Nick Efford -- Python 3 lexer -* Sven Efftinge -- Xtend lexer -* Artem Egorkine -- terminal256 formatter -* Matthew Fernandez -- CAmkES lexer -* Michael Ficarra -- CPSA lexer -* James H. Fisher -- PostScript lexer -* William S. Fulton -- SWIG lexer -* Carlos Galdino -- Elixir and Elixir Console lexers -* Michael Galloy -- IDL lexer -* Naveen Garg -- Autohotkey lexer -* Simon Garnotel -- FreeFem++ lexer -* Laurent Gautier -- R/S lexer -* Alex Gaynor -- PyPy log lexer -* Richard Gerkin -- Igor Pro lexer -* Alain Gilbert -- TypeScript lexer -* Alex Gilding -- BlitzBasic lexer -* GitHub, Inc -- DASM16, Augeas, TOML, and Slash lexers -* Bertrand Goetzmann -- Groovy lexer -* Krzysiek Goj -- Scala lexer -* Rostyslav Golda -- FloScript lexer -* Andrey Golovizin -- BibTeX lexers -* Matt Good -- Genshi, Cheetah lexers -* Michał Górny -- vim modeline support -* Alex Gosse -- TrafficScript lexer -* Patrick Gotthardt -- PHP namespaces support -* Olivier Guibe -- Asymptote lexer -* Phil Hagelberg -- Fennel lexer -* Florian Hahn -- Boogie lexer -* Martin Harriman -- SNOBOL lexer -* Matthew Harrison -- SVG formatter -* Steven Hazel -- Tcl lexer -* Dan Michael Heggø -- Turtle lexer -* Aslak Hellesøy -- Gherkin lexer -* Greg Hendershott -- Racket lexer -* Justin Hendrick -- ParaSail lexer -* Jordi Gutiérrez Hermoso -- Octave lexer -* David Hess, Fish Software, Inc. -- Objective-J lexer -* Varun Hiremath -- Debian control lexer -* Rob Hoelz -- Perl 6 lexer -* Doug Hogan -- Mscgen lexer -* Ben Hollis -- Mason lexer -* Max Horn -- GAP lexer -* Alastair Houghton -- Lexer inheritance facility -* Tim Howard -- BlitzMax lexer -* Dustin Howett -- Logos lexer -* Ivan Inozemtsev -- Fantom lexer -* Hiroaki Itoh -- Shell console rewrite, Lexers for PowerShell session, - MSDOS session, BC, WDiff -* Brian R. Jackson -- Tea lexer -* Christian Jann -- ShellSession lexer -* Dennis Kaarsemaker -- sources.list lexer -* Dmitri Kabak -- Inferno Limbo lexer -* Igor Kalnitsky -- vhdl lexer -* Colin Kennedy - USD lexer -* Alexander Kit -- MaskJS lexer -* Pekka Klärck -- Robot Framework lexer -* Gerwin Klein -- Isabelle lexer -* Eric Knibbe -- Lasso lexer -* Stepan Koltsov -- Clay lexer -* Adam Koprowski -- Opa lexer -* Benjamin Kowarsch -- Modula-2 lexer -* Domen Kožar -- Nix lexer -* Oleh Krekel -- Emacs Lisp lexer -* Alexander Kriegisch -- Kconfig and AspectJ lexers -* Marek Kubica -- Scheme lexer -* Jochen Kupperschmidt -- Markdown processor -* Gerd Kurzbach -- Modelica lexer -* Jon Larimer, Google Inc. -- Smali lexer -* Olov Lassus -- Dart lexer -* Matt Layman -- TAP lexer -* Kristian Lyngstøl -- Varnish lexers -* Sylvestre Ledru -- Scilab lexer -* Chee Sing Lee -- Flatline lexer -* Mark Lee -- Vala lexer -* Valentin Lorentz -- C++ lexer improvements -* Ben Mabey -- Gherkin lexer -* Angus MacArthur -- QML lexer -* Louis Mandel -- X10 lexer -* Louis Marchand -- Eiffel lexer -* Simone Margaritelli -- Hybris lexer -* Kirk McDonald -- D lexer -* Gordon McGregor -- SystemVerilog lexer -* Stephen McKamey -- Duel/JBST lexer -* Brian McKenna -- F# lexer -* Charles McLaughlin -- Puppet lexer -* Kurt McKee -- Tera Term macro lexer -* Lukas Meuser -- BBCode formatter, Lua lexer -* Cat Miller -- Pig lexer -* Paul Miller -- LiveScript lexer -* Hong Minhee -- HTTP lexer -* Michael Mior -- Awk lexer -* Bruce Mitchener -- Dylan lexer rewrite -* Reuben Morais -- SourcePawn lexer -* Jon Morton -- Rust lexer -* Paulo Moura -- Logtalk lexer -* Mher Movsisyan -- DTD lexer -* Dejan Muhamedagic -- Crmsh lexer -* Ana Nelson -- Ragel, ANTLR, R console lexers -* Kurt Neufeld -- Markdown lexer -* Nam T. Nguyen -- Monokai style -* Jesper Noehr -- HTML formatter "anchorlinenos" -* Mike Nolta -- Julia lexer -* Jonas Obrist -- BBCode lexer -* Edward O'Callaghan -- Cryptol lexer -* David Oliva -- Rebol lexer -* Pat Pannuto -- nesC lexer -* Jon Parise -- Protocol buffers and Thrift lexers -* Benjamin Peterson -- Test suite refactoring -* Ronny Pfannschmidt -- BBCode lexer -* Dominik Picheta -- Nimrod lexer -* Andrew Pinkham -- RTF Formatter Refactoring -* Clément Prévost -- UrbiScript lexer -* Tanner Prynn -- cmdline -x option and loading lexers from files -* Oleh Prypin -- Crystal lexer (based on Ruby lexer) -* Xidorn Quan -- Web IDL lexer -* Elias Rabel -- Fortran fixed form lexer -* raichoo -- Idris lexer -* Kashif Rasul -- CUDA lexer -* Nathan Reed -- HLSL lexer -* Justin Reidy -- MXML lexer -* Norman Richards -- JSON lexer -* Corey Richardson -- Rust lexer updates -* Lubomir Rintel -- GoodData MAQL and CL lexers -* Andre Roberge -- Tango style -* Georg Rollinger -- HSAIL lexer -* Michiel Roos -- TypoScript lexer -* Konrad Rudolph -- LaTeX formatter enhancements -* Mario Ruggier -- Evoque lexers -* Miikka Salminen -- Lovelace style, Hexdump lexer, lexer enhancements -* Stou Sandalski -- NumPy, FORTRAN, tcsh and XSLT lexers -* Matteo Sasso -- Common Lisp lexer -* Joe Schafer -- Ada lexer -* Ken Schutte -- Matlab lexers -* René Schwaiger -- Rainbow Dash style -* Sebastian Schweizer -- Whiley lexer -* Tassilo Schweyer -- Io, MOOCode lexers -* Ted Shaw -- AutoIt lexer -* Joerg Sieker -- ABAP lexer -* Robert Simmons -- Standard ML lexer -* Kirill Simonov -- YAML lexer -* Corbin Simpson -- Monte lexer -* Alexander Smishlajev -- Visual FoxPro lexer -* Steve Spigarelli -- XQuery lexer -* Jerome St-Louis -- eC lexer -* Camil Staps -- Clean and NuSMV lexers; Solarized style -* James Strachan -- Kotlin lexer -* Tom Stuart -- Treetop lexer -* Colin Sullivan -- SuperCollider lexer -* Ben Swift -- Extempore lexer -* Edoardo Tenani -- Arduino lexer -* Tiberius Teng -- default style overhaul -* Jeremy Thurgood -- Erlang, Squid config lexers -* Brian Tiffin -- OpenCOBOL lexer -* Bob Tolbert -- Hy lexer -* Matthias Trute -- Forth lexer -* Erick Tryzelaar -- Felix lexer -* Alexander Udalov -- Kotlin lexer improvements -* Thomas Van Doren -- Chapel lexer -* Daniele Varrazzo -- PostgreSQL lexers -* Abe Voelker -- OpenEdge ABL lexer -* Pepijn de Vos -- HTML formatter CTags support -* Matthias Vallentin -- Bro lexer -* Benoît Vinot -- AMPL lexer -* Linh Vu Hong -- RSL lexer -* Nathan Weizenbaum -- Haml and Sass lexers -* Nathan Whetsell -- Csound lexers -* Dietmar Winkler -- Modelica lexer -* Nils Winter -- Smalltalk lexer -* Davy Wybiral -- Clojure lexer -* Whitney Young -- ObjectiveC lexer -* Diego Zamboni -- CFengine3 lexer -* Enrique Zamudio -- Ceylon lexer -* Alex Zimin -- Nemerle lexer -* Rob Zimmerman -- Kal lexer -* Vincent Zurczak -- Roboconf lexer - -Many thanks for all contributions! diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/INSTALLER b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e38a32041e49332e5e81c2d363dc418d68..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/LICENSE b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/LICENSE deleted file mode 100644 index 13d1c74b49a7bb3ed9140ac940787fdb72fbd9ed..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2006-2019 by the respective authors (see AUTHORS file). -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/METADATA b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/METADATA deleted file mode 100644 index ff19f5d73b94f0934a96431fb6224928de9a79f3..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/METADATA +++ /dev/null @@ -1,48 +0,0 @@ -Metadata-Version: 2.1 -Name: Pygments -Version: 2.6.1 -Summary: Pygments is a syntax highlighting package written in Python. -Home-page: https://pygments.org/ -Author: Georg Brandl -Author-email: georg@python.org -License: BSD License -Keywords: syntax highlighting -Platform: any -Classifier: License :: OSI Approved :: BSD License -Classifier: Intended Audience :: Developers -Classifier: Intended Audience :: End Users/Desktop -Classifier: Intended Audience :: System Administrators -Classifier: Development Status :: 6 - Mature -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Operating System :: OS Independent -Classifier: Topic :: Text Processing :: Filters -Classifier: Topic :: Utilities -Requires-Python: >=3.5 - - -Pygments -~~~~~~~~ - -Pygments is a syntax highlighting package written in Python. - -It is a generic syntax highlighter suitable for use in code hosting, forums, -wikis or other applications that need to prettify source code. Highlights -are: - -* a wide range of over 500 languages and other text formats is supported -* special attention is paid to details, increasing quality by a fair amount -* support for new languages and formats are added easily -* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image formats that PIL supports and ANSI sequences -* it is usable as a command-line tool and as a library - -:copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. -:license: BSD, see LICENSE for details. - - diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/RECORD b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/RECORD deleted file mode 100644 index 84d281ad4bec37976217d6ae2fa7bb1bb1eefecc..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/RECORD +++ /dev/null @@ -1,464 +0,0 @@ -../../Scripts/pygmentize.exe,sha256=MZdIiUJnZbyLoe-jTTQkUf5Upqt04k2A9QUBvc3ElX4,106385 -Pygments-2.6.1.dist-info/AUTHORS,sha256=PVpa2_Oku6BGuiUvutvuPnWGpzxqFy2I8-NIrqCvqUY,8449 -Pygments-2.6.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -Pygments-2.6.1.dist-info/LICENSE,sha256=RbiNNEnDeAZZR1i_PEhNnZixKx7MFj9lQx_gf-pgJfA,1331 -Pygments-2.6.1.dist-info/METADATA,sha256=nrRK1IyAspMOw3-uN_SPDbJo1XIALm7ZbRV9aui-FtM,1833 -Pygments-2.6.1.dist-info/RECORD,, -Pygments-2.6.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -Pygments-2.6.1.dist-info/WHEEL,sha256=p46_5Uhzqz6AzeSosiOnxK-zmFja1i22CrQCjmYe8ec,92 -Pygments-2.6.1.dist-info/entry_points.txt,sha256=NXt9BRDRv6tAfDwqKM0bDHrrxaIt2f1nxH9CwjyjSKc,54 -Pygments-2.6.1.dist-info/top_level.txt,sha256=RjKKqrVIStoebLHdbs0yZ2Lk4rS7cxGguXsLCYvZ2Ak,9 -pygments/__init__.py,sha256=Hmd0jgKuzYTHVCXGJrUr5E7R0tAINEf8WuhKUmC7ITY,3036 -pygments/__main__.py,sha256=JV6RSKzbYgMQHLf0nZGzfq1IXxns2iGunsfkY3jxFKo,372 -pygments/__pycache__/__init__.cpython-38.pyc,, -pygments/__pycache__/__main__.cpython-38.pyc,, -pygments/__pycache__/cmdline.cpython-38.pyc,, -pygments/__pycache__/console.cpython-38.pyc,, -pygments/__pycache__/filter.cpython-38.pyc,, -pygments/__pycache__/formatter.cpython-38.pyc,, -pygments/__pycache__/lexer.cpython-38.pyc,, -pygments/__pycache__/modeline.cpython-38.pyc,, -pygments/__pycache__/plugin.cpython-38.pyc,, -pygments/__pycache__/regexopt.cpython-38.pyc,, -pygments/__pycache__/scanner.cpython-38.pyc,, -pygments/__pycache__/sphinxext.cpython-38.pyc,, -pygments/__pycache__/style.cpython-38.pyc,, -pygments/__pycache__/token.cpython-38.pyc,, -pygments/__pycache__/unistring.cpython-38.pyc,, -pygments/__pycache__/util.cpython-38.pyc,, -pygments/cmdline.py,sha256=-mJqcK1Cic8Z-z-ITdj0yjN9exJdPew8m9BwHvtesJY,19479 -pygments/console.py,sha256=QF0bQHbGeFRSetc3g5JsmGziVHQqIZCprEwNlZFtiRg,1721 -pygments/filter.py,sha256=hu4Qo6zdyMcIprEL3xmZGb-inVe1_vUKvgY9vdAV5JU,2030 -pygments/filters/__init__.py,sha256=L_K0aapWqkqDPBkMVGoXvp17zsv7ddl0bNQdMsK43tg,11534 -pygments/filters/__pycache__/__init__.cpython-38.pyc,, -pygments/formatter.py,sha256=Zyz1t_dRczxwuuQkgkwOIOd2TRZpHMbjVHOL_ch37JQ,2917 -pygments/formatters/__init__.py,sha256=d8AnTX9J39ZKoh2YJIiFcOk79h28T0cJ7Yn6rs4G3UI,5107 -pygments/formatters/__pycache__/__init__.cpython-38.pyc,, -pygments/formatters/__pycache__/_mapping.cpython-38.pyc,, -pygments/formatters/__pycache__/bbcode.cpython-38.pyc,, -pygments/formatters/__pycache__/html.cpython-38.pyc,, -pygments/formatters/__pycache__/img.cpython-38.pyc,, -pygments/formatters/__pycache__/irc.cpython-38.pyc,, -pygments/formatters/__pycache__/latex.cpython-38.pyc,, -pygments/formatters/__pycache__/other.cpython-38.pyc,, -pygments/formatters/__pycache__/rtf.cpython-38.pyc,, -pygments/formatters/__pycache__/svg.cpython-38.pyc,, -pygments/formatters/__pycache__/terminal.cpython-38.pyc,, -pygments/formatters/__pycache__/terminal256.cpython-38.pyc,, -pygments/formatters/_mapping.py,sha256=QvLAVzGeldQ6iE8xeGOYtclUBMV0KclGiINcsCaK538,6175 -pygments/formatters/bbcode.py,sha256=_K7UzwyT70snOYAiT3UkItbXRwQYVuTHpr1AZtRHL6Y,3314 -pygments/formatters/html.py,sha256=Eoa4EJxTmE3g0kgMiNN7Ihh5A9lNWUnBlZ1eXFC-yl4,32625 -pygments/formatters/img.py,sha256=iajPfAvg5cB79wS0Mu3pv5Vy2TgghWQcl1OWIz1NcKg,20701 -pygments/formatters/irc.py,sha256=nU9jSjARuRaZpCuCey7bnRwGTGKeCTEhm_yDDYxzKQ8,5869 -pygments/formatters/latex.py,sha256=IOqv1C-LyWs6v2cgecfZ-CkfNNF6VQqcNkPUs3aHUjU,17711 -pygments/formatters/other.py,sha256=Qfc5OixOxM7YEy0d0NJBT750ukj-uPyhxKtHGTm0Vlc,5140 -pygments/formatters/rtf.py,sha256=z8LTTuEXwx3hpLaG0qeJumZCkUfseLIBsxhZE-0tEKg,5050 -pygments/formatters/svg.py,sha256=QUPMQIhXN4JA6auaUTj6z6JaeffyF7OpVoQ8IENptCo,7279 -pygments/formatters/terminal.py,sha256=q0QuanTWnUr4fuNuxnSnjLwjlyUJSMXqBK58MZCAk8Q,4662 -pygments/formatters/terminal256.py,sha256=x9n-YSOwDZhOaLGmYKLO259ZNBCqSydm_KxZJh2Q-Eg,11126 -pygments/lexer.py,sha256=FBy1KBXYiwf1TYtXN25OSrnLGbm9oAWXCsq6ReqtvNA,31559 -pygments/lexers/__init__.py,sha256=3dDjsioYkLz3fRbX3gV9xoi-SkpRRCtYurrWrylAZCo,11310 -pygments/lexers/__pycache__/__init__.cpython-38.pyc,, -pygments/lexers/__pycache__/_asy_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_cl_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_cocoa_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_csound_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_lasso_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_lua_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_mapping.cpython-38.pyc,, -pygments/lexers/__pycache__/_mql_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_openedge_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_php_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_postgres_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_scilab_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_sourcemod_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_stan_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_stata_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_tsql_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_usd_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_vbscript_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/_vim_builtins.cpython-38.pyc,, -pygments/lexers/__pycache__/actionscript.cpython-38.pyc,, -pygments/lexers/__pycache__/agile.cpython-38.pyc,, -pygments/lexers/__pycache__/algebra.cpython-38.pyc,, -pygments/lexers/__pycache__/ambient.cpython-38.pyc,, -pygments/lexers/__pycache__/ampl.cpython-38.pyc,, -pygments/lexers/__pycache__/apl.cpython-38.pyc,, -pygments/lexers/__pycache__/archetype.cpython-38.pyc,, -pygments/lexers/__pycache__/asm.cpython-38.pyc,, -pygments/lexers/__pycache__/automation.cpython-38.pyc,, -pygments/lexers/__pycache__/basic.cpython-38.pyc,, -pygments/lexers/__pycache__/bibtex.cpython-38.pyc,, -pygments/lexers/__pycache__/boa.cpython-38.pyc,, -pygments/lexers/__pycache__/business.cpython-38.pyc,, -pygments/lexers/__pycache__/c_cpp.cpython-38.pyc,, -pygments/lexers/__pycache__/c_like.cpython-38.pyc,, -pygments/lexers/__pycache__/capnproto.cpython-38.pyc,, -pygments/lexers/__pycache__/chapel.cpython-38.pyc,, -pygments/lexers/__pycache__/clean.cpython-38.pyc,, -pygments/lexers/__pycache__/compiled.cpython-38.pyc,, -pygments/lexers/__pycache__/configs.cpython-38.pyc,, -pygments/lexers/__pycache__/console.cpython-38.pyc,, -pygments/lexers/__pycache__/crystal.cpython-38.pyc,, -pygments/lexers/__pycache__/csound.cpython-38.pyc,, -pygments/lexers/__pycache__/css.cpython-38.pyc,, -pygments/lexers/__pycache__/d.cpython-38.pyc,, -pygments/lexers/__pycache__/dalvik.cpython-38.pyc,, -pygments/lexers/__pycache__/data.cpython-38.pyc,, -pygments/lexers/__pycache__/diff.cpython-38.pyc,, -pygments/lexers/__pycache__/dotnet.cpython-38.pyc,, -pygments/lexers/__pycache__/dsls.cpython-38.pyc,, -pygments/lexers/__pycache__/dylan.cpython-38.pyc,, -pygments/lexers/__pycache__/ecl.cpython-38.pyc,, -pygments/lexers/__pycache__/eiffel.cpython-38.pyc,, -pygments/lexers/__pycache__/elm.cpython-38.pyc,, -pygments/lexers/__pycache__/email.cpython-38.pyc,, -pygments/lexers/__pycache__/erlang.cpython-38.pyc,, -pygments/lexers/__pycache__/esoteric.cpython-38.pyc,, -pygments/lexers/__pycache__/ezhil.cpython-38.pyc,, -pygments/lexers/__pycache__/factor.cpython-38.pyc,, -pygments/lexers/__pycache__/fantom.cpython-38.pyc,, -pygments/lexers/__pycache__/felix.cpython-38.pyc,, -pygments/lexers/__pycache__/floscript.cpython-38.pyc,, -pygments/lexers/__pycache__/forth.cpython-38.pyc,, -pygments/lexers/__pycache__/fortran.cpython-38.pyc,, -pygments/lexers/__pycache__/foxpro.cpython-38.pyc,, -pygments/lexers/__pycache__/freefem.cpython-38.pyc,, -pygments/lexers/__pycache__/functional.cpython-38.pyc,, -pygments/lexers/__pycache__/go.cpython-38.pyc,, -pygments/lexers/__pycache__/grammar_notation.cpython-38.pyc,, -pygments/lexers/__pycache__/graph.cpython-38.pyc,, -pygments/lexers/__pycache__/graphics.cpython-38.pyc,, -pygments/lexers/__pycache__/haskell.cpython-38.pyc,, -pygments/lexers/__pycache__/haxe.cpython-38.pyc,, -pygments/lexers/__pycache__/hdl.cpython-38.pyc,, -pygments/lexers/__pycache__/hexdump.cpython-38.pyc,, -pygments/lexers/__pycache__/html.cpython-38.pyc,, -pygments/lexers/__pycache__/idl.cpython-38.pyc,, -pygments/lexers/__pycache__/igor.cpython-38.pyc,, -pygments/lexers/__pycache__/inferno.cpython-38.pyc,, -pygments/lexers/__pycache__/installers.cpython-38.pyc,, -pygments/lexers/__pycache__/int_fiction.cpython-38.pyc,, -pygments/lexers/__pycache__/iolang.cpython-38.pyc,, -pygments/lexers/__pycache__/j.cpython-38.pyc,, -pygments/lexers/__pycache__/javascript.cpython-38.pyc,, -pygments/lexers/__pycache__/julia.cpython-38.pyc,, -pygments/lexers/__pycache__/jvm.cpython-38.pyc,, -pygments/lexers/__pycache__/lisp.cpython-38.pyc,, -pygments/lexers/__pycache__/make.cpython-38.pyc,, -pygments/lexers/__pycache__/markup.cpython-38.pyc,, -pygments/lexers/__pycache__/math.cpython-38.pyc,, -pygments/lexers/__pycache__/matlab.cpython-38.pyc,, -pygments/lexers/__pycache__/mime.cpython-38.pyc,, -pygments/lexers/__pycache__/ml.cpython-38.pyc,, -pygments/lexers/__pycache__/modeling.cpython-38.pyc,, -pygments/lexers/__pycache__/modula2.cpython-38.pyc,, -pygments/lexers/__pycache__/monte.cpython-38.pyc,, -pygments/lexers/__pycache__/mosel.cpython-38.pyc,, -pygments/lexers/__pycache__/ncl.cpython-38.pyc,, -pygments/lexers/__pycache__/nimrod.cpython-38.pyc,, -pygments/lexers/__pycache__/nit.cpython-38.pyc,, -pygments/lexers/__pycache__/nix.cpython-38.pyc,, -pygments/lexers/__pycache__/oberon.cpython-38.pyc,, -pygments/lexers/__pycache__/objective.cpython-38.pyc,, -pygments/lexers/__pycache__/ooc.cpython-38.pyc,, -pygments/lexers/__pycache__/other.cpython-38.pyc,, -pygments/lexers/__pycache__/parasail.cpython-38.pyc,, -pygments/lexers/__pycache__/parsers.cpython-38.pyc,, -pygments/lexers/__pycache__/pascal.cpython-38.pyc,, -pygments/lexers/__pycache__/pawn.cpython-38.pyc,, -pygments/lexers/__pycache__/perl.cpython-38.pyc,, -pygments/lexers/__pycache__/php.cpython-38.pyc,, -pygments/lexers/__pycache__/pony.cpython-38.pyc,, -pygments/lexers/__pycache__/praat.cpython-38.pyc,, -pygments/lexers/__pycache__/prolog.cpython-38.pyc,, -pygments/lexers/__pycache__/python.cpython-38.pyc,, -pygments/lexers/__pycache__/qvt.cpython-38.pyc,, -pygments/lexers/__pycache__/r.cpython-38.pyc,, -pygments/lexers/__pycache__/rdf.cpython-38.pyc,, -pygments/lexers/__pycache__/rebol.cpython-38.pyc,, -pygments/lexers/__pycache__/resource.cpython-38.pyc,, -pygments/lexers/__pycache__/ride.cpython-38.pyc,, -pygments/lexers/__pycache__/rnc.cpython-38.pyc,, -pygments/lexers/__pycache__/roboconf.cpython-38.pyc,, -pygments/lexers/__pycache__/robotframework.cpython-38.pyc,, -pygments/lexers/__pycache__/ruby.cpython-38.pyc,, -pygments/lexers/__pycache__/rust.cpython-38.pyc,, -pygments/lexers/__pycache__/sas.cpython-38.pyc,, -pygments/lexers/__pycache__/scdoc.cpython-38.pyc,, -pygments/lexers/__pycache__/scripting.cpython-38.pyc,, -pygments/lexers/__pycache__/sgf.cpython-38.pyc,, -pygments/lexers/__pycache__/shell.cpython-38.pyc,, -pygments/lexers/__pycache__/sieve.cpython-38.pyc,, -pygments/lexers/__pycache__/slash.cpython-38.pyc,, -pygments/lexers/__pycache__/smalltalk.cpython-38.pyc,, -pygments/lexers/__pycache__/smv.cpython-38.pyc,, -pygments/lexers/__pycache__/snobol.cpython-38.pyc,, -pygments/lexers/__pycache__/solidity.cpython-38.pyc,, -pygments/lexers/__pycache__/special.cpython-38.pyc,, -pygments/lexers/__pycache__/sql.cpython-38.pyc,, -pygments/lexers/__pycache__/stata.cpython-38.pyc,, -pygments/lexers/__pycache__/supercollider.cpython-38.pyc,, -pygments/lexers/__pycache__/tcl.cpython-38.pyc,, -pygments/lexers/__pycache__/templates.cpython-38.pyc,, -pygments/lexers/__pycache__/teraterm.cpython-38.pyc,, -pygments/lexers/__pycache__/testing.cpython-38.pyc,, -pygments/lexers/__pycache__/text.cpython-38.pyc,, -pygments/lexers/__pycache__/textedit.cpython-38.pyc,, -pygments/lexers/__pycache__/textfmts.cpython-38.pyc,, -pygments/lexers/__pycache__/theorem.cpython-38.pyc,, -pygments/lexers/__pycache__/trafficscript.cpython-38.pyc,, -pygments/lexers/__pycache__/typoscript.cpython-38.pyc,, -pygments/lexers/__pycache__/unicon.cpython-38.pyc,, -pygments/lexers/__pycache__/urbi.cpython-38.pyc,, -pygments/lexers/__pycache__/usd.cpython-38.pyc,, -pygments/lexers/__pycache__/varnish.cpython-38.pyc,, -pygments/lexers/__pycache__/verification.cpython-38.pyc,, -pygments/lexers/__pycache__/web.cpython-38.pyc,, -pygments/lexers/__pycache__/webidl.cpython-38.pyc,, -pygments/lexers/__pycache__/webmisc.cpython-38.pyc,, -pygments/lexers/__pycache__/whiley.cpython-38.pyc,, -pygments/lexers/__pycache__/x10.cpython-38.pyc,, -pygments/lexers/__pycache__/xorg.cpython-38.pyc,, -pygments/lexers/__pycache__/zig.cpython-38.pyc,, -pygments/lexers/_asy_builtins.py,sha256=zO_y8v-bp6kjlIwvbmse79qY8P7qAUhoVObaX9Qy3S8,27311 -pygments/lexers/_cl_builtins.py,sha256=x-mRhM6ukZv0pxYtqCq7SlsezhL8L9fpcCQ-gou0Z9w,14018 -pygments/lexers/_cocoa_builtins.py,sha256=h8CT9tpHtyg7PF1tQsLj0NCoN6o9TzzIOBA5UTadEQs,39962 -pygments/lexers/_csound_builtins.py,sha256=6OzL4rwy_qgAenQ8uN0n2u39NlfoVMSZEOy4tdLNHOE,17619 -pygments/lexers/_lasso_builtins.py,sha256=1jR-3eDhf1CUcPSSEXgbJMymAkQaJqpWIPjYM4rL6Sk,134534 -pygments/lexers/_lua_builtins.py,sha256=VkZNUZW9_lTBBcTFOl8NDepWTBfwha6tkV8BXR1EzaM,8297 -pygments/lexers/_mapping.py,sha256=KQJCLXu0jKEF8g9N8Ysg3giPGOFByjdgiOIEMA1yoqw,58920 -pygments/lexers/_mql_builtins.py,sha256=MS7566jpdiud7gEa_y4iJpHLkqjpo-7Y8WwB9MyMUhY,24737 -pygments/lexers/_openedge_builtins.py,sha256=hCqbIZd_qcBTlLyQGME8mqijUDCIm5P9HtIsv8JCEG8,48362 -pygments/lexers/_php_builtins.py,sha256=6-lirHeDcuo-5U5Yh9D4Fgx0sGmN2gq_dmCzjY3wEQg,154390 -pygments/lexers/_postgres_builtins.py,sha256=OI0j7i72gKoNGJomATjK_P00D7cVT6bpPqeeSB4k0aM,11210 -pygments/lexers/_scilab_builtins.py,sha256=ffgN-8Jj5KLRIwdD9j51zvScUbim2DaYv9WmF8_JCNA,52401 -pygments/lexers/_sourcemod_builtins.py,sha256=BSnleYNoGBZ0IrTJz17r-Z9yz7OHwgJVy1oRvvqXg38,27074 -pygments/lexers/_stan_builtins.py,sha256=BfSr_PiG5QE0-7hUfX4g_jdwugKf1zWtGE2w33FotvA,10481 -pygments/lexers/_stata_builtins.py,sha256=rZ8lopR_vKuDCBeCF9oPf71sHkD6n-tN6T5QpyOVEg4,25228 -pygments/lexers/_tsql_builtins.py,sha256=5qrkZJHk_m1SgTnhCrKp5jXJxexjCaf4GtRkY5_PTEA,15484 -pygments/lexers/_usd_builtins.py,sha256=eiB5M8wMXpllmheEzX3BuId6zXGQWaMcJs92E114P7U,1514 -pygments/lexers/_vbscript_builtins.py,sha256=chotaveFeFC-A6qcRAghQC7fAwrDmV-BKE_TW-hrZwk,4249 -pygments/lexers/_vim_builtins.py,sha256=Il_pjrP0PWUjMLCRPOZPoLgd_3jauvv9SGtBOkzmU2A,57090 -pygments/lexers/actionscript.py,sha256=jQTpfKe0OwRQTknMs132_WhqEDIW7lQbLW0HU5D0cOs,11181 -pygments/lexers/agile.py,sha256=0yI_Bq_-ekqFCiMzkcnJfNQ12iyA4QmPk70RCfl1Xa0,900 -pygments/lexers/algebra.py,sha256=vMjSoC9CgSWUMoaNu7gysQDdAc46t_Y6U4dX2mEzNCc,7201 -pygments/lexers/ambient.py,sha256=1_B2JkmFVgGq-JuEhmrXIu-q5WP2e7Ir5DSpO7qXN9E,2557 -pygments/lexers/ampl.py,sha256=HWeNZxYsNhPuGmW1lgNUxMe5zMtbMQ-xNFoj9oVOvq8,4123 -pygments/lexers/apl.py,sha256=gzIuS7p2Qz-pN5M0i45uvDow_gsNNus5k6zrwe19M9c,3174 -pygments/lexers/archetype.py,sha256=luJBCChBsH6fdJOboz5pVTSNCHh7miLd1xtLnI7TH88,11136 -pygments/lexers/asm.py,sha256=0gX4w_cbEbWWUp0kBla41r0ZMAY8NUxaaeW-faRRiqE,39356 -pygments/lexers/automation.py,sha256=9oR495kiyEbl-ev7PWF4Mw-jvtuSbOkmKJRmOvUzQb8,19640 -pygments/lexers/basic.py,sha256=siXk3fQfTEfJNeSW2sI-rfssoUpyj7drMdMrs5csYrs,27576 -pygments/lexers/bibtex.py,sha256=fxbIyhfV1yrFfd7oyAp-fyss27T0Bfv8VqRdVnLg63Y,4725 -pygments/lexers/boa.py,sha256=OB_W242mpr2vwbhg0MO4BpZcdhjaXuM6ffQ54zn3-ZI,3942 -pygments/lexers/business.py,sha256=onAZDADHM7atSEFKsmODBvPc8GlOTDwPgfsh_hVGXNI,27666 -pygments/lexers/c_cpp.py,sha256=dfPzKNoZeqoprqM4a7pTqWin7scz6VYg5_q9MzbnjH0,10638 -pygments/lexers/c_like.py,sha256=UusXq2S5d0v0CpGsxkmVludmu58WsLZQHWnsb0YwhK4,25080 -pygments/lexers/capnproto.py,sha256=pC3zXFSfYFHEIBq3OqLPGKl71K5HtdWnAEqMz6n8KFY,2194 -pygments/lexers/chapel.py,sha256=qzglX8OKh7aaUgXqAVXFkerNjTMIJKdMbihP_o2VFWk,3908 -pygments/lexers/clean.py,sha256=XG0_2KVyxbRFp-_U5HgT1wN9srL522kOe_9T51HeQmA,6362 -pygments/lexers/compiled.py,sha256=iGwVkCJ-SXoovHegOBSnOG518hHkDudegb9_qS-8vW0,1385 -pygments/lexers/configs.py,sha256=YO1NWPpNENDBN4fr-yBYdBWwIqotSquTeaKfY24a7mk,32127 -pygments/lexers/console.py,sha256=tj_ARAplXlqt2sGb2ycxsOy8xIL4NCAMOd3bZ0Zjojg,4120 -pygments/lexers/crystal.py,sha256=hTz20yWrjuam9JVG9Xxr6I7x50M_sIlfdBs0_gg5hKQ,16845 -pygments/lexers/csound.py,sha256=_OqMoEegHcp0NV7zuiLt6h_aY17adQRlJe1DG-pQP4M,16739 -pygments/lexers/css.py,sha256=EvJYfYeaT-TkDHpqXc4ssz0BoXSnBfWT3Vb9MKCeNQg,31467 -pygments/lexers/d.py,sha256=ZWc365C_vRjee-ATfen2OmHCFW3QMoMNE9JEeTplk94,9686 -pygments/lexers/dalvik.py,sha256=tAoPPa_iRXhWG_MzslSvBE99NlGnkx0WKnwdDQ3XU9o,4420 -pygments/lexers/data.py,sha256=_-dqdUSm7Edmh-zaljABFodHjwMCECW1Y-IlyjnWibM,19072 -pygments/lexers/diff.py,sha256=8jKEVtSA2YKprutpONqFvMKBhK1U_IFdxaScTuRNeU4,4873 -pygments/lexers/dotnet.py,sha256=oGL8kWok74zOLn92iwjOYX6Do9tnk96-YTFlJSdkBaQ,27582 -pygments/lexers/dsls.py,sha256=qv0kHmfQOHkHMnXyFbgYrDjUpsCkuXPLig1hma2zcJ0,35837 -pygments/lexers/dylan.py,sha256=LkWTiLsU561_VQL-PUirryEt7ewbseLRJfN-H1twmiA,10402 -pygments/lexers/ecl.py,sha256=5ivxyk5lzMottCuIxyE7DBvWYJV5KTuaHNRkvOtgM7c,5875 -pygments/lexers/eiffel.py,sha256=He2DwoUqWqMt8_PDzoP3NuBl9AZ9K3_SmpGkIgSzWuI,2482 -pygments/lexers/elm.py,sha256=91CM_h3PPoBLLm2stJqNZi3lgjhZH7NvzNKWdXAe8CA,2997 -pygments/lexers/email.py,sha256=ap9imSi6jbbP7gPBAyc3rcNurVDSNmRKIWv0ByR6VOQ,5207 -pygments/lexers/erlang.py,sha256=bZBqAKFa-EsRpvai0EpwZkKMPCd2q6pDfZapq9gh9Qg,18985 -pygments/lexers/esoteric.py,sha256=I7YEPnQdftxEOasCec8_dxVr7zgypMtoYtds0v2srNQ,9489 -pygments/lexers/ezhil.py,sha256=R26b4iXSpdMkgXewJN2INhJXL0ICXhW2o9fu3bn078U,3020 -pygments/lexers/factor.py,sha256=nBYhJoNLkSxtshGrF08tSQKUq_TtgVp1ukKX4Zromm8,17864 -pygments/lexers/fantom.py,sha256=3OTJDka8qeNRykM1Ki1Lyek6gd-jqOa-l5IgRbX8kSg,9982 -pygments/lexers/felix.py,sha256=DoSGdEntZgG3JUbeBA9fqUtg3lODbqwY3_XS6EIfXt4,9408 -pygments/lexers/floscript.py,sha256=eza4Rw3RI3mFjIIAA2czmi2SlgbcSI1T8pNr7vUd0eY,2667 -pygments/lexers/forth.py,sha256=Yqm9z-PjymjQjaleCW-SNJdCCc_NWeFXMz_XvjtAStI,7179 -pygments/lexers/fortran.py,sha256=XqwbZg25atjNDN8yUnqkxm1nfqbzSgZDqmKUIFNQSHk,9841 -pygments/lexers/foxpro.py,sha256=i1B6wX4U5oY8FJO5BGtTR0RaVWbO6P45PXxndi5HcpE,26236 -pygments/lexers/freefem.py,sha256=bYEPIZ1mysE2Ub9WO8NPHefz-CaGqPiE0WbHZeMHPsQ,27086 -pygments/lexers/functional.py,sha256=gJqzgp1ujTa8Zk5hjzXdutz8vvSJpRxhqTVCkK03Ij0,698 -pygments/lexers/go.py,sha256=aRdc0lsKbF7xxTcUnu35m-_e3SD7s2eBAllq1y7_qY8,3701 -pygments/lexers/grammar_notation.py,sha256=0INMOPjLnMohU0QCUIvBaJdty7A7i1hS4ZItB4ehPnA,7941 -pygments/lexers/graph.py,sha256=v013Gzn_RIuLrEz_DJuUah_vCpv6aVSMZpHGov19BMY,2756 -pygments/lexers/graphics.py,sha256=xfr7jZ_JF81kh-RFxIFSKOa06W4z0YxWzOxXAmrLwMA,38259 -pygments/lexers/haskell.py,sha256=VXzPclm0SiawKT2E4L4ZO8uPKcNYMVDWKY4NPcLKFsg,32245 -pygments/lexers/haxe.py,sha256=uWeORmR1BBCtA_HKRJIhzl26GfkzxzVd7c8or-REw7s,30959 -pygments/lexers/hdl.py,sha256=Xpf_1SJ-Uwf94J6MK_C5wR7JyXQkDKtlNdJ7MLL6uzs,18179 -pygments/lexers/hexdump.py,sha256=7y6XhpOGaVfbtWPSzFxgen8u4sr9sWCbnRUTmvnW1KI,3507 -pygments/lexers/html.py,sha256=B-XSH62dR1GZSJ6E3rDOoF6WO-FcKAnrCqTYvvm8jow,19280 -pygments/lexers/idl.py,sha256=hg7CnizaVt7br6ydWkt4VU9UMNax7gg4ToA3_rnqM1M,14986 -pygments/lexers/igor.py,sha256=FP_3Uz06p1emRB1BqpJ_11KY5k38D5nBLP9nFLnXsHA,30917 -pygments/lexers/inferno.py,sha256=iB07whrTd_qnsABOUalv999QhFYB2nhIHfTp_ECsTxM,3117 -pygments/lexers/installers.py,sha256=QVPOqFLmDydPhBJYmQcyjq6XQvcPb1Hxhpbv5JvgL-M,12866 -pygments/lexers/int_fiction.py,sha256=-jBktm0onIUz_hzsP0lUd3g9aLXJ4KLls0gjIwSB46o,55779 -pygments/lexers/iolang.py,sha256=Sv9qzhNgvVz1xmStZOLm3KTvlcI2A1zywAWQTo6ahs0,1905 -pygments/lexers/j.py,sha256=2wqBgvkxF99yBTdyslEsaeweZuqNO_yNZPjTKRwNTdo,4527 -pygments/lexers/javascript.py,sha256=cOcijZB6rFr1aclYt94LHInEKs1KgZZ4Xg4i2zDvW28,60194 -pygments/lexers/julia.py,sha256=ObRU-RjNe_N6zcQZgq5nws526X_j_4c4KPUFwwROFns,14179 -pygments/lexers/jvm.py,sha256=Qsg2PugXHCD55g_w4GVI4FDFCfOBICYW70xKhWMfNiQ,70347 -pygments/lexers/lisp.py,sha256=oUWEXl8czd_ovmKgkROzATeDjy01jPXAne18zXtEYRY,143609 -pygments/lexers/make.py,sha256=dbnhkZWxESvkvV69TrQEZYdo4yiUGoBBIE-VpXX1uBM,7326 -pygments/lexers/markup.py,sha256=6ACdRUnjI6CGRwes8szHfUjZU-nR7C42y2dbP5EdJeI,20704 -pygments/lexers/math.py,sha256=74YS-Z0zpBP6JYk1fsauYbW7XeZ-XPDTqKakbkX0v1Y,700 -pygments/lexers/matlab.py,sha256=23FUS7UgeE9c0gPr9xnyIBz_0Qr7f8ks8DCumF0fGdU,30403 -pygments/lexers/mime.py,sha256=hf-dShZ8AUSIzTELUEnlel7gnZLZpiOd-OFehEDSba0,7975 -pygments/lexers/ml.py,sha256=SV44RnHSqsCQX7wZHZe_bJtzl0hTFrlY5UF8nhO9ozU,31376 -pygments/lexers/modeling.py,sha256=n4gorBPf3gttlsITHGYeOnrUjUWz3nCh5oLYkDMOnrM,13409 -pygments/lexers/modula2.py,sha256=zenAwJk17hVa1FnOTZHJAwLrDrmcurxu4yw7pUoa_Qk,52561 -pygments/lexers/monte.py,sha256=tIn0lsLdG0iHRX_01KI9OkR4iazyiV5F8H3OlkKdFZQ,6307 -pygments/lexers/mosel.py,sha256=N8J6mCnzTUd4KADnhMAAQ2X5OZGxXI-i2Xvq8HfzjNA,9211 -pygments/lexers/ncl.py,sha256=0U8xDdO0guIlnQKCHKmKQPXv91Jqy1YvrkNoMonaYp4,63986 -pygments/lexers/nimrod.py,sha256=ERUF4NVMUlbirF_FvN8EIXXFRv6RJqchq4rr9vugHPI,5174 -pygments/lexers/nit.py,sha256=FSQCdLNjKUrw_pisiCH-m15EQcz30lv6wvvbTgkrB-Y,2743 -pygments/lexers/nix.py,sha256=RTgXFxL2niA9iG1zLHRWdNZy70he_vE1D0-FcoU1cfw,4031 -pygments/lexers/oberon.py,sha256=HMOnehgSbLaTV6l1e5b44aZttyE2YIfA2hzyj6MW5xU,3733 -pygments/lexers/objective.py,sha256=FA7gniip1eEDC9x1UIvdI8flRtFxehTHId0MlqB0llo,22789 -pygments/lexers/ooc.py,sha256=lP6KSoWFrq9Q7w5F_aRSaLYUryh4nuBcPfnUkwyBQsU,2999 -pygments/lexers/other.py,sha256=0xuOYQ0uI9eLONFTNBv2e-hltZhQcN531NVi7e2AcQQ,1768 -pygments/lexers/parasail.py,sha256=YEgpP3B62qHYOBFcoChOfgzATczrSPj1WyovIgqW3gg,2737 -pygments/lexers/parsers.py,sha256=fhTyqwzifEpFFfW8emQ9WYYBwlUs48Sv_qykCUQoWHE,27590 -pygments/lexers/pascal.py,sha256=YpIQHj54lSJrBFdWSo_nkV8M_dYHfJyJMjLk6W6UNZY,32624 -pygments/lexers/pawn.py,sha256=LN0m73AC00wHyvBlbTPU1k2ihBdmDkfIFq24uAWvsF0,8021 -pygments/lexers/perl.py,sha256=Plh4ovtDulyq5oxJTIijQlJ8Td5ga7s3uQ0sbV7uES8,39155 -pygments/lexers/php.py,sha256=yU7DdvXBQlnEvX6WBb7c9kgSw9COwYp6psvzGmCebs4,10834 -pygments/lexers/pony.py,sha256=h6S-MGKN7q7sk869oWjC1OcgV7zwXloYnGFshhTFxHk,3269 -pygments/lexers/praat.py,sha256=aFOD7K8wEVjcr4Jb3DAGn5AmjhMDSHY8pVC4WQfjGlc,12292 -pygments/lexers/prolog.py,sha256=TNj3F1ossufZ_XKVVrWJlRtPDRU1ExGO6NS0-TBq7gw,12405 -pygments/lexers/python.py,sha256=7VkiN5v5IAIL9bDQGdwtmt2__plhedbEi3rzh397Nec,51187 -pygments/lexers/qvt.py,sha256=_lXPT5SdDEqhCmuq4TcO9JRrP703kIT3a1Y_ZW9NTCY,6097 -pygments/lexers/r.py,sha256=VGb5x89r844B-a_V49wAwu8i0245tbdyLKZWq_wRG74,6276 -pygments/lexers/rdf.py,sha256=RAerwJHNjrtXXtua4UXRfUQkMQ36uqfQZlSj63yoQA8,14608 -pygments/lexers/rebol.py,sha256=3bhOFMMneP38O9aJFjPZlNTS6cwbcnDlJaDbfvF4x1g,18624 -pygments/lexers/resource.py,sha256=xbAErtO3-d4LQJJPnLfhD7Kxz_NVQp4WiYrFu52UX-o,2926 -pygments/lexers/ride.py,sha256=lMlEAtdFILb1vd2WC17UaNwFJqOKb1du7EPG5jwX3Xk,5074 -pygments/lexers/rnc.py,sha256=OxpGllFDAM6Vn_alGiaEKMzQDoqRCrl82ocOO4s6L_k,1990 -pygments/lexers/roboconf.py,sha256=9eZkX5xkajimTV1F5wr0Y8QHPfuEB659Lde8H5AzFfM,2070 -pygments/lexers/robotframework.py,sha256=R0x05_jTPu9bErGS4v_mh-9kyCOG4g4GC-KUvxYkSKo,18646 -pygments/lexers/ruby.py,sha256=rqBelW7OJZIP-J3MVPgQzhXTh3Ey41MjMmpbGQDv390,22168 -pygments/lexers/rust.py,sha256=auhHzIX7VaYzgkj26USy9ZH5DZbPQ1LJYW7YDQB8Wgs,7844 -pygments/lexers/sas.py,sha256=guELd_4GLI1fhZr3Sxtn80Gt6s6ViYFf4jWnK23zzDc,9449 -pygments/lexers/scdoc.py,sha256=raoQeCR0E6sjvT56Lar0Wxc_1u6fB-gFjptjT0jE56g,1983 -pygments/lexers/scripting.py,sha256=kH-Kezddx8HzQMgA2z1ZRB-lcvc9qVyEvZnVjJ_YUBU,69759 -pygments/lexers/sgf.py,sha256=R5Zqd5oVOyUd-NewEXMmACaEO5RX_F7eYUZaJXGTY4g,2024 -pygments/lexers/shell.py,sha256=00dGjndFJ6ZWZzsfKW3nKjIKG-CBwTHH-VYQQs57700,33870 -pygments/lexers/sieve.py,sha256=79MOyJl8iAuvzhphpK-Qu_oybyFTdgzrP6d1Hj9-Lqc,2313 -pygments/lexers/slash.py,sha256=WN2f0VirklPe6djATJtbNMkFGRiuIykKZjqG19Rlgk8,8522 -pygments/lexers/smalltalk.py,sha256=xwRETRB2O_cKHZU9w18QXZpiz87WOw0lULDhMxc9xnA,7215 -pygments/lexers/smv.py,sha256=rbXxBG2rGtm7oPP_Il6v3BbUH3i5q4RtiDaweeN7fLA,2793 -pygments/lexers/snobol.py,sha256=YFOOuPk4yBxg6stlIm6R3UiUgzkMjz06ac7dW3LRxNk,2756 -pygments/lexers/solidity.py,sha256=fW_aQc_HyRawyStUxllYhUn-NYJPCqzDH-ABWTeKcOI,3255 -pygments/lexers/special.py,sha256=N0msqSMphQf0_7Vx9T7kABoHx_KkYLHUxP2FcyYmshg,3149 -pygments/lexers/sql.py,sha256=7evoMDWdBz0kXPIt1jy0YXrQ9KJFYnjN2cslkDrfB88,31823 -pygments/lexers/stata.py,sha256=E46GbEy8ET3yBw1l3KQLSknKW3_qS6Sq3V_hkpVotn0,6459 -pygments/lexers/supercollider.py,sha256=llVW-HUi7m4MNGy4wEp8bF2BJGTXdwF0oNfJfJ_sI8M,3516 -pygments/lexers/tcl.py,sha256=ORf0CBXHwC2MFBpZpcK2sPBCCTyJ3rcwcYOIhN9s0AI,5398 -pygments/lexers/templates.py,sha256=AE6yF5ohbqy52-rn8xUJ5A6OZCkoIs72j7wUnwp25vE,73612 -pygments/lexers/teraterm.py,sha256=2DdFVGyKIF85efcB5QdqqQQNGjqRHoWzVc5psdhSD7c,6310 -pygments/lexers/testing.py,sha256=JfFVWAh_8zaqaiPrewb3CGTmGNuHu6hFR4dtvcFCYRE,10753 -pygments/lexers/text.py,sha256=7cwhjV2GwLRH0CPjlOb7PLVa6XEiRQhDNFU1VO3KNjE,1030 -pygments/lexers/textedit.py,sha256=7F9f0-pAsorZpaFalHOZz5124fsdHCLTAWX_YuwA9XE,6092 -pygments/lexers/textfmts.py,sha256=Ctq-u_o2HVb-xvvsKfpuwkgNzVCNxXJHkirqhpsC8lE,15184 -pygments/lexers/theorem.py,sha256=c51ir2FdsyczFRu059z9wKFZplBETdhwWuWX0Y9wMtM,18908 -pygments/lexers/trafficscript.py,sha256=BYTyTAlD4oDVZ9D1aRrmy4zIC4VJ_n2Lgkgq92DxeJM,1546 -pygments/lexers/typoscript.py,sha256=Leb81-51KKuK9FHoo1xKWJGPqTIsyVoeZkGcsK5tQzU,8224 -pygments/lexers/unicon.py,sha256=xo0E3hnBW0gbdszL6n96Cdzume3l1DI7scgkIQ8koaw,18001 -pygments/lexers/urbi.py,sha256=Zq3PCTC-KI7QYuLZ7NSdikm9-MrAhrYH9DGXVSTT89I,5750 -pygments/lexers/usd.py,sha256=uEPjTqbXu0Ag_qJOB9IEwAGj4-R8_5yBbNRlUPtSlbY,3487 -pygments/lexers/varnish.py,sha256=Y2t_JY7uVz6pH3UvlpIvuaxurH4gRiQrP4Esqw5jPnk,7265 -pygments/lexers/verification.py,sha256=rN6OD2ary21XXvnzUTjknibiM9oF9YjxmLyC7iG6kuo,3932 -pygments/lexers/web.py,sha256=4thoq-m_kGixnDR2baWwN5eEqpFAeH3aRaOMK4J_GOE,918 -pygments/lexers/webidl.py,sha256=TTHSlvRlmdpMPNCMvrrUULY6Y6Q7l53HMR9CGyisq9I,10473 -pygments/lexers/webmisc.py,sha256=pJUyS7bcr77iHQshVzllZmIaZQoVkdGZi1D3FqlJEg0,40054 -pygments/lexers/whiley.py,sha256=J9ZuO8Yv9DYl9Mb6IHyZz2zguGxZXBKxTSwDcxaii8o,4012 -pygments/lexers/x10.py,sha256=Lu35QT0l-objbi6mCm-rxZU_7gO1rZQhjA6JnZ-EBRI,1965 -pygments/lexers/xorg.py,sha256=FDN0czbxMD6YDOqwL6ltspElwMoxxNVKW11OL--keQY,887 -pygments/lexers/zig.py,sha256=C3kbdZ_rJUb0hMK61UiFsjzJVvC_QIPJZ6glZDNPi78,4147 -pygments/modeline.py,sha256=ctgJHLjLF23gklYyo7Nz6P3I3Z8ArewlT5R2n2KNatQ,1010 -pygments/plugin.py,sha256=QFSBZcOqSJqAVQnydwDg8_LG7GzkxUgWjb0FzqoQHEM,1734 -pygments/regexopt.py,sha256=yMZBB3DRudP4AjPGAUpIF__o_NWOK4HrNfFV6h04V1w,3094 -pygments/scanner.py,sha256=tATA_g4QYMfFS2Tb-WIJtr_abdUetPb4tC1k7b0e97w,3115 -pygments/sphinxext.py,sha256=OVWeIgj0mvRslxw5boeo0tBykJHuSi5jSjIWXgAmqgk,4618 -pygments/style.py,sha256=DhwzS-OOt088Zkk-SWY6lBVy-Eh_2AcP2R_FdTYO9oI,5705 -pygments/styles/__init__.py,sha256=TBRYkROPEACN-kE1nQ1ygrhU4efWVShENqI6aqjk5cE,2894 -pygments/styles/__pycache__/__init__.cpython-38.pyc,, -pygments/styles/__pycache__/abap.cpython-38.pyc,, -pygments/styles/__pycache__/algol.cpython-38.pyc,, -pygments/styles/__pycache__/algol_nu.cpython-38.pyc,, -pygments/styles/__pycache__/arduino.cpython-38.pyc,, -pygments/styles/__pycache__/autumn.cpython-38.pyc,, -pygments/styles/__pycache__/borland.cpython-38.pyc,, -pygments/styles/__pycache__/bw.cpython-38.pyc,, -pygments/styles/__pycache__/colorful.cpython-38.pyc,, -pygments/styles/__pycache__/default.cpython-38.pyc,, -pygments/styles/__pycache__/emacs.cpython-38.pyc,, -pygments/styles/__pycache__/friendly.cpython-38.pyc,, -pygments/styles/__pycache__/fruity.cpython-38.pyc,, -pygments/styles/__pycache__/igor.cpython-38.pyc,, -pygments/styles/__pycache__/inkpot.cpython-38.pyc,, -pygments/styles/__pycache__/lovelace.cpython-38.pyc,, -pygments/styles/__pycache__/manni.cpython-38.pyc,, -pygments/styles/__pycache__/monokai.cpython-38.pyc,, -pygments/styles/__pycache__/murphy.cpython-38.pyc,, -pygments/styles/__pycache__/native.cpython-38.pyc,, -pygments/styles/__pycache__/paraiso_dark.cpython-38.pyc,, -pygments/styles/__pycache__/paraiso_light.cpython-38.pyc,, -pygments/styles/__pycache__/pastie.cpython-38.pyc,, -pygments/styles/__pycache__/perldoc.cpython-38.pyc,, -pygments/styles/__pycache__/rainbow_dash.cpython-38.pyc,, -pygments/styles/__pycache__/rrt.cpython-38.pyc,, -pygments/styles/__pycache__/sas.cpython-38.pyc,, -pygments/styles/__pycache__/solarized.cpython-38.pyc,, -pygments/styles/__pycache__/stata_dark.cpython-38.pyc,, -pygments/styles/__pycache__/stata_light.cpython-38.pyc,, -pygments/styles/__pycache__/tango.cpython-38.pyc,, -pygments/styles/__pycache__/trac.cpython-38.pyc,, -pygments/styles/__pycache__/vim.cpython-38.pyc,, -pygments/styles/__pycache__/vs.cpython-38.pyc,, -pygments/styles/__pycache__/xcode.cpython-38.pyc,, -pygments/styles/abap.py,sha256=weNa2ATjBDbWN-EJp36KuapOv_161OYudM6ilzp_5tU,751 -pygments/styles/algol.py,sha256=aVMDywxJ1VRTQ-eYd7CZVQ1BFIWehw2G9OcGg5KmfFI,2263 -pygments/styles/algol_nu.py,sha256=xgZhMlsdR8RppCyaGliUKBWVvianjxt5KrIcWCJDVMM,2278 -pygments/styles/arduino.py,sha256=MtP75GT5SqaAX2PfaC116iPETAPOaD6re6cZ1d9xehQ,4492 -pygments/styles/autumn.py,sha256=setTunOOFJAmdVHab3wmv5OkZmjP6-NVoZjMAyQ2rYY,2144 -pygments/styles/borland.py,sha256=UOFktPmmU_TK6prVMETvVm6FhT01oqsd9_HcG1NZq_Y,1562 -pygments/styles/bw.py,sha256=t0kQytwvh_0SMBcOcmM5foPcc3JWiSd8VWBIXkoP17s,1355 -pygments/styles/colorful.py,sha256=NV-MuEX61J0HH1M0dmurc0RNinp5eA9qIHTjhZ3M6ek,2778 -pygments/styles/default.py,sha256=j124bQ-0TFJaQ2U3ZICWq8_KUOQdjUSxFVknFcpSF40,2532 -pygments/styles/emacs.py,sha256=zNGOC_fHnCZxVphHkieHr7f-zxKkSg_PrFEwWGfQw2U,2486 -pygments/styles/friendly.py,sha256=55qszHEliWiT8h1dW5GjnEA47CpXpJ0BX0C-x6EmZsQ,2515 -pygments/styles/fruity.py,sha256=zkSwyKzmWDs9Jtzgq3rG4DathCH6Pq2JVLuUW8auKXI,1298 -pygments/styles/igor.py,sha256=6GFYt43btx70XZoVDSAqljc1G7UJb6_r9euz0b5nWpY,739 -pygments/styles/inkpot.py,sha256=ecGBxZQw0UhueDHZA06wvgWizu2JzXg9YkYCoLYJuh4,2347 -pygments/styles/lovelace.py,sha256=PBObIz9_gAjMJ8YgNrm-_z2P_wG7moQ1BosKLThJl20,3173 -pygments/styles/manni.py,sha256=EmN6YSp-U-ccxqLqjfnIPg-qkIhUAlSb78tIBvwFCsA,2374 -pygments/styles/monokai.py,sha256=hT5jhhqRQoOmjdK1lZ56hspKke4UDCCiUc3B8m5osLY,5086 -pygments/styles/murphy.py,sha256=ppT--IJLWtcbxKCNRBuusP4zdSmbR8YShosCdd3hpXs,2751 -pygments/styles/native.py,sha256=xkphXXv8PvfbgawNSTR28LcEe1TQxFtdrk_sQcGeo2E,1938 -pygments/styles/paraiso_dark.py,sha256=3a4BSgZQMfB8E2bUMi1WAWkDr98oFUfaPygcsl9B9ZM,5641 -pygments/styles/paraiso_light.py,sha256=QsZyh5oPQb6wYgnoQAkH2MRBkJjRPqAu5De77diOeN8,5645 -pygments/styles/pastie.py,sha256=duELGPs_LEzLbesA39vu0MzxtwkPJ2wnV2rS_clTu2E,2473 -pygments/styles/perldoc.py,sha256=Wf54Io76npBZEsVt8HuM-x7mpzJ7iwPgj5PP_hOf91w,2175 -pygments/styles/rainbow_dash.py,sha256=IlLrIcl76wy4aIiZIRWxMzUILOI9ms7YEX0o6UL9ROc,2480 -pygments/styles/rrt.py,sha256=xQp_B5sDo4BJ4Mzx4PWVK6AW_pZs_XmIoM8zLwpfVTs,852 -pygments/styles/sas.py,sha256=jC6iVFl7-xp0MKwFkPM9QbEInzxVlnhsluPR69iqMZE,1441 -pygments/styles/solarized.py,sha256=f_E9bd-THUcJUJR36hQgbu9BVIjLi6yiI_n07oRu2u4,3747 -pygments/styles/stata_dark.py,sha256=K1AKYh93Jd9E_eWXhDw7-tM6fJbIuFeJcAR5jVE1Nkc,1245 -pygments/styles/stata_light.py,sha256=cN0ulhqteDqKkGnOqAL1aNHy3AvYbmu-fS35XaMptKM,1274 -pygments/styles/tango.py,sha256=1VtAeshYeFh4jWITdb5_wf-7avl1DwtGWrQkvSKqJJo,7096 -pygments/styles/trac.py,sha256=wWJokrY8EWWxJTChPxxYsH_cB-CNN7coa1ZBihzbiG4,1933 -pygments/styles/vim.py,sha256=9PtHne1K4TmKIFcPoM4NY_HRV3naKXRIeEvMC437t7U,1976 -pygments/styles/vs.py,sha256=-mK8_RJJk12gbR-TXP1zedQpflKS2zc9xQQzHbZTB1E,1073 -pygments/styles/xcode.py,sha256=s3NuWSoZ8dRCuU0PU0-aDop4xqgAXP4rVefg5yFgQVg,1501 -pygments/token.py,sha256=J1LOX6vjhiN3pTShN9Mj0MfbWPzhypuPQYZuw29E8As,6167 -pygments/unistring.py,sha256=V4LPrb9dhNBGR-AdEnopDNmwpxFSodqPBuHOlqG9b0g,64569 -pygments/util.py,sha256=586xXHiJGGZxqk5PMBu3vBhE68DLuAe5MBARWrSPGxA,10778 diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/REQUESTED b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/REQUESTED deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/WHEEL b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/WHEEL deleted file mode 100644 index 3b5c4038dd7bd845e6b0aecad69991381b2b1331..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.33.6) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/entry_points.txt b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/entry_points.txt deleted file mode 100644 index 756d801bdf597be8c60fcd698b3fce94c4fe3481..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -pygmentize = pygments.cmdline:main - diff --git a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/top_level.txt b/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/top_level.txt deleted file mode 100644 index a9f49e01c866d33b6e09b083df69a3c79ea76bdc..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/Pygments-2.6.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pygments diff --git a/backend/venv/Lib/site-packages/__pycache__/dj_database_url.cpython-38.pyc b/backend/venv/Lib/site-packages/__pycache__/dj_database_url.cpython-38.pyc deleted file mode 100644 index 01719b487dae87841b57ae418da035bef0ab92bb..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/__pycache__/dj_database_url.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/__pycache__/mccabe.cpython-38.pyc b/backend/venv/Lib/site-packages/__pycache__/mccabe.cpython-38.pyc deleted file mode 100644 index 927db0660f3672b9ea1e9f5a959c7f00022ca438..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/__pycache__/mccabe.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/__pycache__/six.cpython-38.pyc b/backend/venv/Lib/site-packages/__pycache__/six.cpython-38.pyc deleted file mode 100644 index c3037d956103e25ea635399bcac5ea5d71b6a75d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/__pycache__/six.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/_distutils_hack/__init__.py b/backend/venv/Lib/site-packages/_distutils_hack/__init__.py deleted file mode 100644 index 47ce24944bc0ddbdc6d872e0fa536ed94415dde0..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/_distutils_hack/__init__.py +++ /dev/null @@ -1,128 +0,0 @@ -import sys -import os -import re -import importlib -import warnings - - -is_pypy = '__pypy__' in sys.builtin_module_names - - -warnings.filterwarnings('ignore', - '.+ distutils .+ deprecated', - DeprecationWarning) - - -def warn_distutils_present(): - if 'distutils' not in sys.modules: - return - if is_pypy and sys.version_info < (3, 7): - # PyPy for 3.6 unconditionally imports distutils, so bypass the warning - # https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250 - return - warnings.warn( - "Distutils was imported before Setuptools, but importing Setuptools " - "also replaces the `distutils` module in `sys.modules`. This may lead " - "to undesirable behaviors or errors. To avoid these issues, avoid " - "using distutils directly, ensure that setuptools is installed in the " - "traditional way (e.g. not an editable install), and/or make sure " - "that setuptools is always imported before distutils.") - - -def clear_distutils(): - if 'distutils' not in sys.modules: - return - warnings.warn("Setuptools is replacing distutils.") - mods = [name for name in sys.modules if re.match(r'distutils\b', name)] - for name in mods: - del sys.modules[name] - - -def enabled(): - """ - Allow selection of distutils by environment variable. - """ - which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib') - return which == 'local' - - -def ensure_local_distutils(): - clear_distutils() - distutils = importlib.import_module('setuptools._distutils') - distutils.__name__ = 'distutils' - sys.modules['distutils'] = distutils - - # sanity check that submodules load as expected - core = importlib.import_module('distutils.core') - assert '_distutils' in core.__file__, core.__file__ - - -def do_override(): - """ - Ensure that the local copy of distutils is preferred over stdlib. - - See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401 - for more motivation. - """ - if enabled(): - warn_distutils_present() - ensure_local_distutils() - - -class DistutilsMetaFinder: - def find_spec(self, fullname, path, target=None): - if path is not None: - return - - method_name = 'spec_for_{fullname}'.format(**locals()) - method = getattr(self, method_name, lambda: None) - return method() - - def spec_for_distutils(self): - import importlib.abc - import importlib.util - - class DistutilsLoader(importlib.abc.Loader): - - def create_module(self, spec): - return importlib.import_module('setuptools._distutils') - - def exec_module(self, module): - pass - - return importlib.util.spec_from_loader('distutils', DistutilsLoader()) - - def spec_for_pip(self): - """ - Ensure stdlib distutils when running under pip. - See pypa/pip#8761 for rationale. - """ - if self.pip_imported_during_build(): - return - clear_distutils() - self.spec_for_distutils = lambda: None - - @staticmethod - def pip_imported_during_build(): - """ - Detect if pip is being imported in a build script. Ref #2355. - """ - import traceback - return any( - frame.f_globals['__file__'].endswith('setup.py') - for frame, line in traceback.walk_stack(None) - ) - - -DISTUTILS_FINDER = DistutilsMetaFinder() - - -def add_shim(): - sys.meta_path.insert(0, DISTUTILS_FINDER) - - -def remove_shim(): - try: - sys.meta_path.remove(DISTUTILS_FINDER) - except ValueError: - pass diff --git a/backend/venv/Lib/site-packages/_distutils_hack/__pycache__/__init__.cpython-38.pyc b/backend/venv/Lib/site-packages/_distutils_hack/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index c6d90f984231638a5df432bdcf277bf8db155075..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/_distutils_hack/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/_distutils_hack/__pycache__/override.cpython-38.pyc b/backend/venv/Lib/site-packages/_distutils_hack/__pycache__/override.cpython-38.pyc deleted file mode 100644 index 0144c34accfc85808773dfd0b3857e1d6b562fac..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/_distutils_hack/__pycache__/override.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/_distutils_hack/override.py b/backend/venv/Lib/site-packages/_distutils_hack/override.py deleted file mode 100644 index 2cc433a4a55e3b41fa31089918fb62096092f89f..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/_distutils_hack/override.py +++ /dev/null @@ -1 +0,0 @@ -__import__('_distutils_hack').do_override() diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/INSTALLER b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/INSTALLER deleted file mode 100644 index a1b589e38a32041e49332e5e81c2d363dc418d68..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/LICENSE b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/LICENSE deleted file mode 100644 index 5f4f225dd282aa7e4361ec3c2750bbbaaed8ab1f..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Django Software Foundation and individual contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of Django nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/METADATA b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/METADATA deleted file mode 100644 index d64da77f249cd4c45912c6454d54b250804b8012..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/METADATA +++ /dev/null @@ -1,229 +0,0 @@ -Metadata-Version: 2.1 -Name: asgiref -Version: 3.2.10 -Summary: ASGI specs, helper code, and adapters -Home-page: https://github.com/django/asgiref/ -Author: Django Software Foundation -Author-email: foundation@djangoproject.com -License: BSD -Project-URL: Documentation, https://asgi.readthedocs.io/ -Project-URL: Further Documentation, https://docs.djangoproject.com/en/stable/topics/async/#async-adapter-functions -Project-URL: Changelog, https://github.com/django/asgiref/blob/master/CHANGELOG.txt -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Topic :: Internet :: WWW/HTTP -Requires-Python: >=3.5 -Provides-Extra: tests -Requires-Dist: pytest ; extra == 'tests' -Requires-Dist: pytest-asyncio ; extra == 'tests' - -asgiref -======= - -.. image:: https://api.travis-ci.org/django/asgiref.svg - :target: https://travis-ci.org/django/asgiref - -.. image:: https://img.shields.io/pypi/v/asgiref.svg - :target: https://pypi.python.org/pypi/asgiref - -ASGI is a standard for Python asynchronous web apps and servers to communicate -with each other, and positioned as an asynchronous successor to WSGI. You can -read more at https://asgi.readthedocs.io/en/latest/ - -This package includes ASGI base libraries, such as: - -* Sync-to-async and async-to-sync function wrappers, ``asgiref.sync`` -* Server base classes, ``asgiref.server`` -* A WSGI-to-ASGI adapter, in ``asgiref.wsgi`` - - -Function wrappers ------------------ - -These allow you to wrap or decorate async or sync functions to call them from -the other style (so you can call async functions from a synchronous thread, -or vice-versa). - -In particular: - -* AsyncToSync lets a synchronous subthread stop and wait while the async - function is called on the main thread's event loop, and then control is - returned to the thread when the async function is finished. - -* SyncToAsync lets async code call a synchronous function, which is run in - a threadpool and control returned to the async coroutine when the synchronous - function completes. - -The idea is to make it easier to call synchronous APIs from async code and -asynchronous APIs from synchronous code so it's easier to transition code from -one style to the other. In the case of Channels, we wrap the (synchronous) -Django view system with SyncToAsync to allow it to run inside the (asynchronous) -ASGI server. - -Note that exactly what threads things run in is very specific, and aimed to -keep maximum compatibility with old synchronous code. See -"Synchronous code & Threads" below for a full explanation. - - -Threadlocal replacement ------------------------ - -This is a drop-in replacement for ``threading.local`` that works with both -threads and asyncio Tasks. Even better, it will proxy values through from a -task-local context to a thread-local context when you use ``sync_to_async`` -to run things in a threadpool, and vice-versa for ``async_to_sync``. - -If you instead want true thread- and task-safety, you can set -``thread_critical`` on the Local object to ensure this instead. - - -Server base classes -------------------- - -Includes a ``StatelessServer`` class which provides all the hard work of -writing a stateless server (as in, does not handle direct incoming sockets -but instead consumes external streams or sockets to work out what is happening). - -An example of such a server would be a chatbot server that connects out to -a central chat server and provides a "connection scope" per user chatting to -it. There's only one actual connection, but the server has to separate things -into several scopes for easier writing of the code. - -You can see an example of this being used in `frequensgi `_. - - -WSGI-to-ASGI adapter --------------------- - -Allows you to wrap a WSGI application so it appears as a valid ASGI application. - -Simply wrap it around your WSGI application like so:: - - asgi_application = WsgiToAsgi(wsgi_application) - -The WSGI application will be run in a synchronous threadpool, and the wrapped -ASGI application will be one that accepts ``http`` class messages. - -Please note that not all extended features of WSGI may be supported (such as -file handles for incoming POST bodies). - - -Dependencies ------------- - -``asgiref`` requires Python 3.5 or higher. - - -Contributing ------------- - -Please refer to the -`main Channels contributing docs `_. - - -Testing -''''''' - -To run tests, make sure you have installed the ``tests`` extra with the package:: - - cd asgiref/ - pip install -e .[tests] - pytest - - -Building the documentation -'''''''''''''''''''''''''' - -The documentation uses `Sphinx `_:: - - cd asgiref/docs/ - pip install sphinx - -To build the docs, you can use the default tools:: - - sphinx-build -b html . _build/html # or `make html`, if you've got make set up - cd _build/html - python -m http.server - -...or you can use ``sphinx-autobuild`` to run a server and rebuild/reload -your documentation changes automatically:: - - pip install sphinx-autobuild - sphinx-autobuild . _build/html - - -Implementation Details ----------------------- - -Synchronous code & threads -'''''''''''''''''''''''''' - -The ``asgiref.sync`` module provides two wrappers that let you go between -asynchronous and synchronous code at will, while taking care of the rough edges -for you. - -Unfortunately, the rough edges are numerous, and the code has to work especially -hard to keep things in the same thread as much as possible. Notably, the -restrictions we are working with are: - -* All synchronous code called through ``SyncToAsync`` and marked with - ``thread_sensitive`` should run in the same thread as each other (and if the - outer layer of the program is synchronous, the main thread) - -* If a thread already has a running async loop, ``AsyncToSync`` can't run things - on that loop if it's blocked on synchronous code that is above you in the - call stack. - -The first compromise you get to might be that ``thread_sensitive`` code should -just run in the same thread and not spawn in a sub-thread, fulfilling the first -restriction, but that immediately runs you into the second restriction. - -The only real solution is to essentially have a variant of ThreadPoolExecutor -that executes any ``thread_sensitive`` code on the outermost synchronous -thread - either the main thread, or a single spawned subthread. - -This means you now have two basic states: - -* If the outermost layer of your program is synchronous, then all async code - run through ``AsyncToSync`` will run in a per-call event loop in arbitary - sub-threads, while all ``thread_sensitive`` code will run in the main thread. - -* If the outermost layer of your program is asynchronous, then all async code - runs on the main thread's event loop, and all ``thread_sensitive`` synchronous - code will run in a single shared sub-thread. - -Cruicially, this means that in both cases there is a thread which is a shared -resource that all ``thread_sensitive`` code must run on, and there is a chance -that this thread is currently blocked on its own ``AsyncToSync`` call. Thus, -``AsyncToSync`` needs to act as an executor for thread code while it's blocking. - -The ``CurrentThreadExecutor`` class provides this functionality; rather than -simply waiting on a Future, you can call its ``run_until_future`` method and -it will run submitted code until that Future is done. This means that code -inside the call can then run code on your thread. - - -Maintenance and Security ------------------------- - -To report security issues, please contact security@djangoproject.com. For GPG -signatures and more security process information, see -https://docs.djangoproject.com/en/dev/internals/security/. - -To report bugs or request new features, please open a new GitHub issue. - -This repository is part of the Channels project. For the shepherd and maintenance team, please see the -`main Channels readme `_. - - diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/RECORD b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/RECORD deleted file mode 100644 index a199eac819967357290030de1042fc7dcc122f6f..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/RECORD +++ /dev/null @@ -1,25 +0,0 @@ -asgiref-3.2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -asgiref-3.2.10.dist-info/LICENSE,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552 -asgiref-3.2.10.dist-info/METADATA,sha256=LzBbpVxLs55-21YTiQmIs3UJDo47oDfiN_rjHSpCKNc,8483 -asgiref-3.2.10.dist-info/RECORD,, -asgiref-3.2.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -asgiref-3.2.10.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92 -asgiref-3.2.10.dist-info/top_level.txt,sha256=bokQjCzwwERhdBiPdvYEZa4cHxT4NCeAffQNUqJ8ssg,8 -asgiref/__init__.py,sha256=b1ca8SRnNegOaCcqHfnPEedhi8qMtg3Vpu_VGcwqujs,23 -asgiref/__pycache__/__init__.cpython-38.pyc,, -asgiref/__pycache__/compatibility.cpython-38.pyc,, -asgiref/__pycache__/current_thread_executor.cpython-38.pyc,, -asgiref/__pycache__/local.cpython-38.pyc,, -asgiref/__pycache__/server.cpython-38.pyc,, -asgiref/__pycache__/sync.cpython-38.pyc,, -asgiref/__pycache__/testing.cpython-38.pyc,, -asgiref/__pycache__/timeout.cpython-38.pyc,, -asgiref/__pycache__/wsgi.cpython-38.pyc,, -asgiref/compatibility.py,sha256=MVH2bEdiCMMVTLbE-1V6KiU7q4LwqzP7PIufeXa-njM,1598 -asgiref/current_thread_executor.py,sha256=3dRFt3jAl_x1wr9prZZMut071pmdHdIwbTnUAYVejj4,2974 -asgiref/local.py,sha256=7g_PSo5vqd-KRkO7SOgoktSWr85Etsi4rqJyF1VUXhw,4849 -asgiref/server.py,sha256=iFJn_uD-poeHWgLOuSnKCVMS1HqqV-IOTOOC85fKr00,5915 -asgiref/sync.py,sha256=NcVUMrm-5RC76g3cT2SsnRDgV5AArbZjO6Df3_j9alY,13376 -asgiref/testing.py,sha256=3byNRV7Oto_Fg8Z-fErQJ3yGf7OQlcUexbN_cDQugzQ,3119 -asgiref/timeout.py,sha256=Emw-Oop1pRfSc5YSMEYHgEz1802mP6JdA6bxH37bby8,3914 -asgiref/wsgi.py,sha256=rxGUxQG4FsSJYXJekClLuAGM_rovnxfH1qrNt95CNaI,5606 diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/REQUESTED b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/REQUESTED deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/WHEEL b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/WHEEL deleted file mode 100644 index b552003ff90e66227ec90d1b159324f140d46001..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.34.2) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/top_level.txt b/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/top_level.txt deleted file mode 100644 index ddf99d3d4fb08da41c9a252e724c40805806c62a..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref-3.2.10.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -asgiref diff --git a/backend/venv/Lib/site-packages/asgiref/__init__.py b/backend/venv/Lib/site-packages/asgiref/__init__.py deleted file mode 100644 index 149fe9ad5870ffcd53870727394f7f8059f94dfe..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "3.2.10" diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/__init__.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 9dec68a5db673f9f3e5820de1f871a02996421f9..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/compatibility.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/compatibility.cpython-38.pyc deleted file mode 100644 index 94bb5a2b69712d2e67236b0f3ab23eadf6441da5..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/compatibility.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/current_thread_executor.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/current_thread_executor.cpython-38.pyc deleted file mode 100644 index 77bccc4ab592823031a93baa47b563c5c065d294..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/current_thread_executor.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/local.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/local.cpython-38.pyc deleted file mode 100644 index dca75cf0d41f9bec1ad910c80dd85239aba28d7c..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/local.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/server.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/server.cpython-38.pyc deleted file mode 100644 index 76766993cfe3250b11726a7f426ce0a13df51b3a..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/server.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/sync.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/sync.cpython-38.pyc deleted file mode 100644 index 0dbadf20c6fb587c6811959d078a8d723cc17cd1..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/sync.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/testing.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/testing.cpython-38.pyc deleted file mode 100644 index d1e4670aae04d79f855f3e0c25b4781bea1e202c..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/testing.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/timeout.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/timeout.cpython-38.pyc deleted file mode 100644 index 642b571017ec7e737b459c26f134e65424c6f5e4..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/timeout.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/__pycache__/wsgi.cpython-38.pyc b/backend/venv/Lib/site-packages/asgiref/__pycache__/wsgi.cpython-38.pyc deleted file mode 100644 index 80e44573773befb6f080c73ba57a3586bb9982b6..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/asgiref/__pycache__/wsgi.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/asgiref/compatibility.py b/backend/venv/Lib/site-packages/asgiref/compatibility.py deleted file mode 100644 index eccaee0d6f4b19f1555e765c3f14cd89aedd1fc3..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/compatibility.py +++ /dev/null @@ -1,47 +0,0 @@ -import asyncio -import inspect - - -def is_double_callable(application): - """ - Tests to see if an application is a legacy-style (double-callable) application. - """ - # Look for a hint on the object first - if getattr(application, "_asgi_single_callable", False): - return False - if getattr(application, "_asgi_double_callable", False): - return True - # Uninstanted classes are double-callable - if inspect.isclass(application): - return True - # Instanted classes depend on their __call__ - if hasattr(application, "__call__"): - # We only check to see if its __call__ is a coroutine function - - # if it's not, it still might be a coroutine function itself. - if asyncio.iscoroutinefunction(application.__call__): - return False - # Non-classes we just check directly - return not asyncio.iscoroutinefunction(application) - - -def double_to_single_callable(application): - """ - Transforms a double-callable ASGI application into a single-callable one. - """ - - async def new_application(scope, receive, send): - instance = application(scope) - return await instance(receive, send) - - return new_application - - -def guarantee_single_callable(application): - """ - Takes either a single- or double-callable application and always returns it - in single-callable style. Use this to add backwards compatibility for ASGI - 2.0 applications to your server/test harness/etc. - """ - if is_double_callable(application): - application = double_to_single_callable(application) - return application diff --git a/backend/venv/Lib/site-packages/asgiref/current_thread_executor.py b/backend/venv/Lib/site-packages/asgiref/current_thread_executor.py deleted file mode 100644 index 2955ff024ab5606b9c2efaddab6458fdf978339a..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/current_thread_executor.py +++ /dev/null @@ -1,86 +0,0 @@ -import queue -import threading -import time -from concurrent.futures import Executor, Future - - -class _WorkItem(object): - """ - Represents an item needing to be run in the executor. - Copied from ThreadPoolExecutor (but it's private, so we're not going to rely on importing it) - """ - - def __init__(self, future, fn, args, kwargs): - self.future = future - self.fn = fn - self.args = args - self.kwargs = kwargs - - def run(self): - if not self.future.set_running_or_notify_cancel(): - return - try: - result = self.fn(*self.args, **self.kwargs) - except BaseException as exc: - self.future.set_exception(exc) - # Break a reference cycle with the exception 'exc' - self = None - else: - self.future.set_result(result) - - -class CurrentThreadExecutor(Executor): - """ - An Executor that actually runs code in the thread it is instantiated in. - Passed to other threads running async code, so they can run sync code in - the thread they came from. - """ - - def __init__(self): - self._work_thread = threading.current_thread() - self._work_queue = queue.Queue() - self._broken = False - - def run_until_future(self, future): - """ - Runs the code in the work queue until a result is available from the future. - Should be run from the thread the executor is initialised in. - """ - # Check we're in the right thread - if threading.current_thread() != self._work_thread: - raise RuntimeError( - "You cannot run CurrentThreadExecutor from a different thread" - ) - # Keep getting work items and checking the future - try: - while True: - # Get a work item and run it - try: - work_item = self._work_queue.get(block=False) - except queue.Empty: - # See if the future is done (we only exit if the work queue is empty) - if future.done(): - return - # Prevent hot-looping on nothing - time.sleep(0.001) - else: - work_item.run() - del work_item - finally: - self._broken = True - - def submit(self, fn, *args, **kwargs): - # Check they're not submitting from the same thread - if threading.current_thread() == self._work_thread: - raise RuntimeError( - "You cannot submit onto CurrentThreadExecutor from its own thread" - ) - # Check they're not too late or the executor errored - if self._broken: - raise RuntimeError("CurrentThreadExecutor already quit or is broken") - # Add to work queue - f = Future() - work_item = _WorkItem(f, fn, args, kwargs) - self._work_queue.put(work_item) - # Return the future - return f diff --git a/backend/venv/Lib/site-packages/asgiref/local.py b/backend/venv/Lib/site-packages/asgiref/local.py deleted file mode 100644 index 3d24b14db2f12692a8a42c79ff8babfab0defc72..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/local.py +++ /dev/null @@ -1,122 +0,0 @@ -import random -import string -import sys -import threading -import weakref - - -class Local: - """ - A drop-in replacement for threading.locals that also works with asyncio - Tasks (via the current_task asyncio method), and passes locals through - sync_to_async and async_to_sync. - - Specifically: - - Locals work per-coroutine on any thread not spawned using asgiref - - Locals work per-thread on any thread not spawned using asgiref - - Locals are shared with the parent coroutine when using sync_to_async - - Locals are shared with the parent thread when using async_to_sync - (and if that thread was launched using sync_to_async, with its parent - coroutine as well, with this working for indefinite levels of nesting) - - Set thread_critical to True to not allow locals to pass from an async Task - to a thread it spawns. This is needed for code that truly needs - thread-safety, as opposed to things used for helpful context (e.g. sqlite - does not like being called from a different thread to the one it is from). - Thread-critical code will still be differentiated per-Task within a thread - as it is expected it does not like concurrent access. - - This doesn't use contextvars as it needs to support 3.6. Once it can support - 3.7 only, we can then reimplement the storage more nicely. - """ - - CLEANUP_INTERVAL = 60 # seconds - - def __init__(self, thread_critical=False): - self._thread_critical = thread_critical - self._thread_lock = threading.RLock() - self._context_refs = weakref.WeakSet() - # Random suffixes stop accidental reuse between different Locals, - # though we try to force deletion as well. - self._attr_name = "_asgiref_local_impl_%s_%s" % ( - id(self), - "".join(random.choice(string.ascii_letters) for i in range(8)), - ) - - def _get_context_id(self): - """ - Get the ID we should use for looking up variables - """ - # Prevent a circular reference - from .sync import AsyncToSync, SyncToAsync - - # First, pull the current task if we can - context_id = SyncToAsync.get_current_task() - context_is_async = True - # OK, let's try for a thread ID - if context_id is None: - context_id = threading.current_thread() - context_is_async = False - # If we're thread-critical, we stop here, as we can't share contexts. - if self._thread_critical: - return context_id - # Now, take those and see if we can resolve them through the launch maps - for i in range(sys.getrecursionlimit()): - try: - if context_is_async: - # Tasks have a source thread in AsyncToSync - context_id = AsyncToSync.launch_map[context_id] - context_is_async = False - else: - # Threads have a source task in SyncToAsync - context_id = SyncToAsync.launch_map[context_id] - context_is_async = True - except KeyError: - break - else: - # Catch infinite loops (they happen if you are screwing around - # with AsyncToSync implementations) - raise RuntimeError("Infinite launch_map loops") - return context_id - - def _get_storage(self): - context_obj = self._get_context_id() - if not hasattr(context_obj, self._attr_name): - setattr(context_obj, self._attr_name, {}) - self._context_refs.add(context_obj) - return getattr(context_obj, self._attr_name) - - def __del__(self): - try: - for context_obj in self._context_refs: - try: - delattr(context_obj, self._attr_name) - except AttributeError: - pass - except TypeError: - # WeakSet.__iter__ can crash when interpreter is shutting down due - # to _IterationGuard being None. - pass - - def __getattr__(self, key): - with self._thread_lock: - storage = self._get_storage() - if key in storage: - return storage[key] - else: - raise AttributeError("%r object has no attribute %r" % (self, key)) - - def __setattr__(self, key, value): - if key in ("_context_refs", "_thread_critical", "_thread_lock", "_attr_name"): - return super().__setattr__(key, value) - with self._thread_lock: - storage = self._get_storage() - storage[key] = value - - def __delattr__(self, key): - with self._thread_lock: - storage = self._get_storage() - if key in storage: - del storage[key] - else: - raise AttributeError("%r object has no attribute %r" % (self, key)) diff --git a/backend/venv/Lib/site-packages/asgiref/server.py b/backend/venv/Lib/site-packages/asgiref/server.py deleted file mode 100644 index 9fd2e0c400fda24db54a208e01164e78ba93e26a..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/server.py +++ /dev/null @@ -1,154 +0,0 @@ -import asyncio -import logging -import time -import traceback - -logger = logging.getLogger(__name__) - - -class StatelessServer: - """ - Base server class that handles basic concepts like application instance - creation/pooling, exception handling, and similar, for stateless protocols - (i.e. ones without actual incoming connections to the process) - - Your code should override the handle() method, doing whatever it needs to, - and calling get_or_create_application_instance with a unique `scope_id` - and `scope` for the scope it wants to get. - - If an application instance is found with the same `scope_id`, you are - given its input queue, otherwise one is made for you with the scope provided - and you are given that fresh new input queue. Either way, you should do - something like: - - input_queue = self.get_or_create_application_instance( - "user-123456", - {"type": "testprotocol", "user_id": "123456", "username": "andrew"}, - ) - input_queue.put_nowait(message) - - If you try and create an application instance and there are already - `max_application` instances, the oldest/least recently used one will be - reclaimed and shut down to make space. - - Application coroutines that error will be found periodically (every 100ms - by default) and have their exceptions printed to the console. Override - application_exception() if you want to do more when this happens. - - If you override run(), make sure you handle things like launching the - application checker. - """ - - application_checker_interval = 0.1 - - def __init__(self, application, max_applications=1000): - # Parameters - self.application = application - self.max_applications = max_applications - # Initialisation - self.application_instances = {} - - ### Mainloop and handling - - def run(self): - """ - Runs the asyncio event loop with our handler loop. - """ - event_loop = asyncio.get_event_loop() - asyncio.ensure_future(self.application_checker()) - try: - event_loop.run_until_complete(self.handle()) - except KeyboardInterrupt: - logger.info("Exiting due to Ctrl-C/interrupt") - - async def handle(self): - raise NotImplementedError("You must implement handle()") - - async def application_send(self, scope, message): - """ - Receives outbound sends from applications and handles them. - """ - raise NotImplementedError("You must implement application_send()") - - ### Application instance management - - def get_or_create_application_instance(self, scope_id, scope): - """ - Creates an application instance and returns its queue. - """ - if scope_id in self.application_instances: - self.application_instances[scope_id]["last_used"] = time.time() - return self.application_instances[scope_id]["input_queue"] - # See if we need to delete an old one - while len(self.application_instances) > self.max_applications: - self.delete_oldest_application_instance() - # Make an instance of the application - input_queue = asyncio.Queue() - application_instance = self.application(scope=scope) - # Run it, and stash the future for later checking - future = asyncio.ensure_future( - application_instance( - receive=input_queue.get, - send=lambda message: self.application_send(scope, message), - ) - ) - self.application_instances[scope_id] = { - "input_queue": input_queue, - "future": future, - "scope": scope, - "last_used": time.time(), - } - return input_queue - - def delete_oldest_application_instance(self): - """ - Finds and deletes the oldest application instance - """ - oldest_time = min( - details["last_used"] for details in self.application_instances.values() - ) - for scope_id, details in self.application_instances.items(): - if details["last_used"] == oldest_time: - self.delete_application_instance(scope_id) - # Return to make sure we only delete one in case two have - # the same oldest time - return - - def delete_application_instance(self, scope_id): - """ - Removes an application instance (makes sure its task is stopped, - then removes it from the current set) - """ - details = self.application_instances[scope_id] - del self.application_instances[scope_id] - if not details["future"].done(): - details["future"].cancel() - - async def application_checker(self): - """ - Goes through the set of current application instance Futures and cleans up - any that are done/prints exceptions for any that errored. - """ - while True: - await asyncio.sleep(self.application_checker_interval) - for scope_id, details in list(self.application_instances.items()): - if details["future"].done(): - exception = details["future"].exception() - if exception: - await self.application_exception(exception, details) - try: - del self.application_instances[scope_id] - except KeyError: - # Exception handling might have already got here before us. That's fine. - pass - - async def application_exception(self, exception, application_details): - """ - Called whenever an application coroutine has an exception. - """ - logging.error( - "Exception inside application: %s\n%s%s", - exception, - "".join(traceback.format_tb(exception.__traceback__)), - " {}".format(exception), - ) diff --git a/backend/venv/Lib/site-packages/asgiref/sync.py b/backend/venv/Lib/site-packages/asgiref/sync.py deleted file mode 100644 index a46f7d4cddd088a339691e4c17ed3ed2c2461369..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/sync.py +++ /dev/null @@ -1,361 +0,0 @@ -import asyncio -import asyncio.coroutines -import functools -import os -import sys -import threading -from concurrent.futures import Future, ThreadPoolExecutor - -from .current_thread_executor import CurrentThreadExecutor -from .local import Local - -try: - import contextvars # Python 3.7+ only. -except ImportError: - contextvars = None - - -def _restore_context(context): - # Check for changes in contextvars, and set them to the current - # context for downstream consumers - for cvar in context: - try: - if cvar.get() != context.get(cvar): - cvar.set(context.get(cvar)) - except LookupError: - cvar.set(context.get(cvar)) - - -class AsyncToSync: - """ - Utility class which turns an awaitable that only works on the thread with - the event loop into a synchronous callable that works in a subthread. - - If the call stack contains an async loop, the code runs there. - Otherwise, the code runs in a new loop in a new thread. - - Either way, this thread then pauses and waits to run any thread_sensitive - code called from further down the call stack using SyncToAsync, before - finally exiting once the async task returns. - """ - - # Maps launched Tasks to the threads that launched them (for locals impl) - launch_map = {} - - # Keeps track of which CurrentThreadExecutor to use. This uses an asgiref - # Local, not a threadlocal, so that tasks can work out what their parent used. - executors = Local() - - def __init__(self, awaitable, force_new_loop=False): - self.awaitable = awaitable - try: - self.__self__ = self.awaitable.__self__ - except AttributeError: - pass - if force_new_loop: - # They have asked that we always run in a new sub-loop. - self.main_event_loop = None - else: - try: - self.main_event_loop = asyncio.get_event_loop() - except RuntimeError: - # There's no event loop in this thread. Look for the threadlocal if - # we're inside SyncToAsync - self.main_event_loop = getattr( - SyncToAsync.threadlocal, "main_event_loop", None - ) - - def __call__(self, *args, **kwargs): - # You can't call AsyncToSync from a thread with a running event loop - try: - event_loop = asyncio.get_event_loop() - except RuntimeError: - pass - else: - if event_loop.is_running(): - raise RuntimeError( - "You cannot use AsyncToSync in the same thread as an async event loop - " - "just await the async function directly." - ) - - if contextvars is not None: - # Wrapping context in list so it can be reassigned from within - # `main_wrap`. - context = [contextvars.copy_context()] - else: - context = None - - # Make a future for the return information - call_result = Future() - # Get the source thread - source_thread = threading.current_thread() - # Make a CurrentThreadExecutor we'll use to idle in this thread - we - # need one for every sync frame, even if there's one above us in the - # same thread. - if hasattr(self.executors, "current"): - old_current_executor = self.executors.current - else: - old_current_executor = None - current_executor = CurrentThreadExecutor() - self.executors.current = current_executor - # Use call_soon_threadsafe to schedule a synchronous callback on the - # main event loop's thread if it's there, otherwise make a new loop - # in this thread. - try: - awaitable = self.main_wrap( - args, kwargs, call_result, source_thread, sys.exc_info(), context - ) - - if not (self.main_event_loop and self.main_event_loop.is_running()): - # Make our own event loop - in a new thread - and run inside that. - loop = asyncio.new_event_loop() - loop_executor = ThreadPoolExecutor(max_workers=1) - loop_future = loop_executor.submit( - self._run_event_loop, loop, awaitable - ) - if current_executor: - # Run the CurrentThreadExecutor until the future is done - current_executor.run_until_future(loop_future) - # Wait for future and/or allow for exception propagation - loop_future.result() - else: - # Call it inside the existing loop - self.main_event_loop.call_soon_threadsafe( - self.main_event_loop.create_task, awaitable - ) - if current_executor: - # Run the CurrentThreadExecutor until the future is done - current_executor.run_until_future(call_result) - finally: - # Clean up any executor we were running - if hasattr(self.executors, "current"): - del self.executors.current - if old_current_executor: - self.executors.current = old_current_executor - if contextvars is not None: - _restore_context(context[0]) - - # Wait for results from the future. - return call_result.result() - - def _run_event_loop(self, loop, coro): - """ - Runs the given event loop (designed to be called in a thread). - """ - asyncio.set_event_loop(loop) - try: - loop.run_until_complete(coro) - finally: - try: - # mimic asyncio.run() behavior - # cancel unexhausted async generators - if sys.version_info >= (3, 7, 0): - tasks = asyncio.all_tasks(loop) - else: - tasks = asyncio.Task.all_tasks(loop) - for task in tasks: - task.cancel() - loop.run_until_complete(asyncio.gather(*tasks, return_exceptions=True)) - for task in tasks: - if task.cancelled(): - continue - if task.exception() is not None: - loop.call_exception_handler( - { - "message": "unhandled exception during loop shutdown", - "exception": task.exception(), - "task": task, - } - ) - if hasattr(loop, "shutdown_asyncgens"): - loop.run_until_complete(loop.shutdown_asyncgens()) - finally: - loop.close() - asyncio.set_event_loop(self.main_event_loop) - - def __get__(self, parent, objtype): - """ - Include self for methods - """ - func = functools.partial(self.__call__, parent) - return functools.update_wrapper(func, self.awaitable) - - async def main_wrap( - self, args, kwargs, call_result, source_thread, exc_info, context - ): - """ - Wraps the awaitable with something that puts the result into the - result/exception future. - """ - if context is not None: - _restore_context(context[0]) - - current_task = SyncToAsync.get_current_task() - self.launch_map[current_task] = source_thread - try: - # If we have an exception, run the function inside the except block - # after raising it so exc_info is correctly populated. - if exc_info[1]: - try: - raise exc_info[1] - except: - result = await self.awaitable(*args, **kwargs) - else: - result = await self.awaitable(*args, **kwargs) - except Exception as e: - call_result.set_exception(e) - else: - call_result.set_result(result) - finally: - del self.launch_map[current_task] - - if context is not None: - context[0] = contextvars.copy_context() - - -class SyncToAsync: - """ - Utility class which turns a synchronous callable into an awaitable that - runs in a threadpool. It also sets a threadlocal inside the thread so - calls to AsyncToSync can escape it. - - If thread_sensitive is passed, the code will run in the same thread as any - outer code. This is needed for underlying Python code that is not - threadsafe (for example, code which handles SQLite database connections). - - If the outermost program is async (i.e. SyncToAsync is outermost), then - this will be a dedicated single sub-thread that all sync code runs in, - one after the other. If the outermost program is sync (i.e. AsyncToSync is - outermost), this will just be the main thread. This is achieved by idling - with a CurrentThreadExecutor while AsyncToSync is blocking its sync parent, - rather than just blocking. - """ - - # If they've set ASGI_THREADS, update the default asyncio executor for now - if "ASGI_THREADS" in os.environ: - loop = asyncio.get_event_loop() - loop.set_default_executor( - ThreadPoolExecutor(max_workers=int(os.environ["ASGI_THREADS"])) - ) - - # Maps launched threads to the coroutines that spawned them - launch_map = {} - - # Storage for main event loop references - threadlocal = threading.local() - - # Single-thread executor for thread-sensitive code - single_thread_executor = ThreadPoolExecutor(max_workers=1) - - def __init__(self, func, thread_sensitive=False): - self.func = func - functools.update_wrapper(self, func) - self._thread_sensitive = thread_sensitive - self._is_coroutine = asyncio.coroutines._is_coroutine - try: - self.__self__ = func.__self__ - except AttributeError: - pass - - async def __call__(self, *args, **kwargs): - loop = asyncio.get_event_loop() - - # Work out what thread to run the code in - if self._thread_sensitive: - if hasattr(AsyncToSync.executors, "current"): - # If we have a parent sync thread above somewhere, use that - executor = AsyncToSync.executors.current - else: - # Otherwise, we run it in a fixed single thread - executor = self.single_thread_executor - else: - executor = None # Use default - - if contextvars is not None: - context = contextvars.copy_context() - child = functools.partial(self.func, *args, **kwargs) - func = context.run - args = (child,) - kwargs = {} - else: - func = self.func - - # Run the code in the right thread - future = loop.run_in_executor( - executor, - functools.partial( - self.thread_handler, - loop, - self.get_current_task(), - sys.exc_info(), - func, - *args, - **kwargs - ), - ) - ret = await asyncio.wait_for(future, timeout=None) - - if contextvars is not None: - _restore_context(context) - - return ret - - def __get__(self, parent, objtype): - """ - Include self for methods - """ - return functools.partial(self.__call__, parent) - - def thread_handler(self, loop, source_task, exc_info, func, *args, **kwargs): - """ - Wraps the sync application with exception handling. - """ - # Set the threadlocal for AsyncToSync - self.threadlocal.main_event_loop = loop - # Set the task mapping (used for the locals module) - current_thread = threading.current_thread() - if AsyncToSync.launch_map.get(source_task) == current_thread: - # Our parent task was launched from this same thread, so don't make - # a launch map entry - let it shortcut over us! (and stop infinite loops) - parent_set = False - else: - self.launch_map[current_thread] = source_task - parent_set = True - # Run the function - try: - # If we have an exception, run the function inside the except block - # after raising it so exc_info is correctly populated. - if exc_info[1]: - try: - raise exc_info[1] - except: - return func(*args, **kwargs) - else: - return func(*args, **kwargs) - finally: - # Only delete the launch_map parent if we set it, otherwise it is - # from someone else. - if parent_set: - del self.launch_map[current_thread] - - @staticmethod - def get_current_task(): - """ - Cross-version implementation of asyncio.current_task() - - Returns None if there is no task. - """ - try: - if hasattr(asyncio, "current_task"): - # Python 3.7 and up - return asyncio.current_task() - else: - # Python 3.6 - return asyncio.Task.current_task() - except RuntimeError: - return None - - -# Lowercase is more sensible for most things -sync_to_async = SyncToAsync -async_to_sync = AsyncToSync diff --git a/backend/venv/Lib/site-packages/asgiref/testing.py b/backend/venv/Lib/site-packages/asgiref/testing.py deleted file mode 100644 index 6624317d7629921af7863091bcb020700c8d6c3e..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/testing.py +++ /dev/null @@ -1,97 +0,0 @@ -import asyncio -import time - -from .compatibility import guarantee_single_callable -from .timeout import timeout as async_timeout - - -class ApplicationCommunicator: - """ - Runs an ASGI application in a test mode, allowing sending of - messages to it and retrieval of messages it sends. - """ - - def __init__(self, application, scope): - self.application = guarantee_single_callable(application) - self.scope = scope - self.input_queue = asyncio.Queue() - self.output_queue = asyncio.Queue() - self.future = asyncio.ensure_future( - self.application(scope, self.input_queue.get, self.output_queue.put) - ) - - async def wait(self, timeout=1): - """ - Waits for the application to stop itself and returns any exceptions. - """ - try: - async with async_timeout(timeout): - try: - await self.future - self.future.result() - except asyncio.CancelledError: - pass - finally: - if not self.future.done(): - self.future.cancel() - try: - await self.future - except asyncio.CancelledError: - pass - - def stop(self, exceptions=True): - if not self.future.done(): - self.future.cancel() - elif exceptions: - # Give a chance to raise any exceptions - self.future.result() - - def __del__(self): - # Clean up on deletion - try: - self.stop(exceptions=False) - except RuntimeError: - # Event loop already stopped - pass - - async def send_input(self, message): - """ - Sends a single message to the application - """ - # Give it the message - await self.input_queue.put(message) - - async def receive_output(self, timeout=1): - """ - Receives a single message from the application, with optional timeout. - """ - # Make sure there's not an exception to raise from the task - if self.future.done(): - self.future.result() - # Wait and receive the message - try: - async with async_timeout(timeout): - return await self.output_queue.get() - except asyncio.TimeoutError as e: - # See if we have another error to raise inside - if self.future.done(): - self.future.result() - else: - self.future.cancel() - try: - await self.future - except asyncio.CancelledError: - pass - raise e - - async def receive_nothing(self, timeout=0.1, interval=0.01): - """ - Checks that there is no message to receive in the given time. - """ - # `interval` has precedence over `timeout` - start = time.monotonic() - while time.monotonic() - start < timeout: - if not self.output_queue.empty(): - return False - await asyncio.sleep(interval) - return self.output_queue.empty() diff --git a/backend/venv/Lib/site-packages/asgiref/timeout.py b/backend/venv/Lib/site-packages/asgiref/timeout.py deleted file mode 100644 index 0ff5892afdcbe07783f1aff18cbd375577a4e76e..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/timeout.py +++ /dev/null @@ -1,128 +0,0 @@ -# This code is originally sourced from the aio-libs project "async_timeout", -# under the Apache 2.0 license. You may see the original project at -# https://github.com/aio-libs/async-timeout - -# It is vendored here to reduce chain-dependencies on this library, and -# modified slightly to remove some features we don't use. - - -import asyncio -import sys -from types import TracebackType -from typing import Any, Optional, Type # noqa - -PY_37 = sys.version_info >= (3, 7) - - -class timeout: - """timeout context manager. - - Useful in cases when you want to apply timeout logic around block - of code or in cases when asyncio.wait_for is not suitable. For example: - - >>> with timeout(0.001): - ... async with aiohttp.get('https://github.com') as r: - ... await r.text() - - - timeout - value in seconds or None to disable timeout logic - loop - asyncio compatible event loop - """ - - def __init__( - self, - timeout: Optional[float], - *, - loop: Optional[asyncio.AbstractEventLoop] = None - ) -> None: - self._timeout = timeout - if loop is None: - loop = asyncio.get_event_loop() - self._loop = loop - self._task = None # type: Optional[asyncio.Task[Any]] - self._cancelled = False - self._cancel_handler = None # type: Optional[asyncio.Handle] - self._cancel_at = None # type: Optional[float] - - def __enter__(self) -> "timeout": - return self._do_enter() - - def __exit__( - self, - exc_type: Type[BaseException], - exc_val: BaseException, - exc_tb: TracebackType, - ) -> Optional[bool]: - self._do_exit(exc_type) - return None - - async def __aenter__(self) -> "timeout": - return self._do_enter() - - async def __aexit__( - self, - exc_type: Type[BaseException], - exc_val: BaseException, - exc_tb: TracebackType, - ) -> None: - self._do_exit(exc_type) - - @property - def expired(self) -> bool: - return self._cancelled - - @property - def remaining(self) -> Optional[float]: - if self._cancel_at is not None: - return max(self._cancel_at - self._loop.time(), 0.0) - else: - return None - - def _do_enter(self) -> "timeout": - # Support Tornado 5- without timeout - # Details: https://github.com/python/asyncio/issues/392 - if self._timeout is None: - return self - - self._task = current_task(self._loop) - if self._task is None: - raise RuntimeError( - "Timeout context manager should be used " "inside a task" - ) - - if self._timeout <= 0: - self._loop.call_soon(self._cancel_task) - return self - - self._cancel_at = self._loop.time() + self._timeout - self._cancel_handler = self._loop.call_at(self._cancel_at, self._cancel_task) - return self - - def _do_exit(self, exc_type: Type[BaseException]) -> None: - if exc_type is asyncio.CancelledError and self._cancelled: - self._cancel_handler = None - self._task = None - raise asyncio.TimeoutError - if self._timeout is not None and self._cancel_handler is not None: - self._cancel_handler.cancel() - self._cancel_handler = None - self._task = None - return None - - def _cancel_task(self) -> None: - if self._task is not None: - self._task.cancel() - self._cancelled = True - - -def current_task(loop: asyncio.AbstractEventLoop) -> "asyncio.Task[Any]": - if PY_37: - task = asyncio.current_task(loop=loop) # type: ignore - else: - task = asyncio.Task.current_task(loop=loop) - if task is None: - # this should be removed, tokio must use register_task and family API - if hasattr(loop, "current_task"): - task = loop.current_task() # type: ignore - - return task diff --git a/backend/venv/Lib/site-packages/asgiref/wsgi.py b/backend/venv/Lib/site-packages/asgiref/wsgi.py deleted file mode 100644 index 7155ab2ef0f4f02b517400a0bc64fb868144c140..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/asgiref/wsgi.py +++ /dev/null @@ -1,145 +0,0 @@ -from io import BytesIO -from tempfile import SpooledTemporaryFile - -from asgiref.sync import AsyncToSync, sync_to_async - - -class WsgiToAsgi: - """ - Wraps a WSGI application to make it into an ASGI application. - """ - - def __init__(self, wsgi_application): - self.wsgi_application = wsgi_application - - async def __call__(self, scope, receive, send): - """ - ASGI application instantiation point. - We return a new WsgiToAsgiInstance here with the WSGI app - and the scope, ready to respond when it is __call__ed. - """ - await WsgiToAsgiInstance(self.wsgi_application)(scope, receive, send) - - -class WsgiToAsgiInstance: - """ - Per-socket instance of a wrapped WSGI application - """ - - def __init__(self, wsgi_application): - self.wsgi_application = wsgi_application - self.response_started = False - - async def __call__(self, scope, receive, send): - if scope["type"] != "http": - raise ValueError("WSGI wrapper received a non-HTTP scope") - self.scope = scope - with SpooledTemporaryFile(max_size=65536) as body: - # Alright, wait for the http.request messages - while True: - message = await receive() - if message["type"] != "http.request": - raise ValueError("WSGI wrapper received a non-HTTP-request message") - body.write(message.get("body", b"")) - if not message.get("more_body"): - break - body.seek(0) - # Wrap send so it can be called from the subthread - self.sync_send = AsyncToSync(send) - # Call the WSGI app - await self.run_wsgi_app(body) - - def build_environ(self, scope, body): - """ - Builds a scope and request body into a WSGI environ object. - """ - environ = { - "REQUEST_METHOD": scope["method"], - "SCRIPT_NAME": scope.get("root_path", ""), - "PATH_INFO": scope["path"], - "QUERY_STRING": scope["query_string"].decode("ascii"), - "SERVER_PROTOCOL": "HTTP/%s" % scope["http_version"], - "wsgi.version": (1, 0), - "wsgi.url_scheme": scope.get("scheme", "http"), - "wsgi.input": body, - "wsgi.errors": BytesIO(), - "wsgi.multithread": True, - "wsgi.multiprocess": True, - "wsgi.run_once": False, - } - # Get server name and port - required in WSGI, not in ASGI - if "server" in scope: - environ["SERVER_NAME"] = scope["server"][0] - environ["SERVER_PORT"] = str(scope["server"][1]) - else: - environ["SERVER_NAME"] = "localhost" - environ["SERVER_PORT"] = "80" - - if "client" in scope: - environ["REMOTE_ADDR"] = scope["client"][0] - - # Go through headers and make them into environ entries - for name, value in self.scope.get("headers", []): - name = name.decode("latin1") - if name == "content-length": - corrected_name = "CONTENT_LENGTH" - elif name == "content-type": - corrected_name = "CONTENT_TYPE" - else: - corrected_name = "HTTP_%s" % name.upper().replace("-", "_") - # HTTPbis say only ASCII chars are allowed in headers, but we latin1 just in case - value = value.decode("latin1") - if corrected_name in environ: - value = environ[corrected_name] + "," + value - environ[corrected_name] = value - return environ - - def start_response(self, status, response_headers, exc_info=None): - """ - WSGI start_response callable. - """ - # Don't allow re-calling once response has begun - if self.response_started: - raise exc_info[1].with_traceback(exc_info[2]) - # Don't allow re-calling without exc_info - if hasattr(self, "response_start") and exc_info is None: - raise ValueError( - "You cannot call start_response a second time without exc_info" - ) - # Extract status code - status_code, _ = status.split(" ", 1) - status_code = int(status_code) - # Extract headers - headers = [ - (name.lower().encode("ascii"), value.encode("ascii")) - for name, value in response_headers - ] - # Build and send response start message. - self.response_start = { - "type": "http.response.start", - "status": status_code, - "headers": headers, - } - - @sync_to_async - def run_wsgi_app(self, body): - """ - Called in a subthread to run the WSGI app. We encapsulate like - this so that the start_response callable is called in the same thread. - """ - # Translate the scope and incoming request body into a WSGI environ - environ = self.build_environ(self.scope, body) - # Run the WSGI app - for output in self.wsgi_application(environ, self.start_response): - # If this is the first response, include the response headers - if not self.response_started: - self.response_started = True - self.sync_send(self.response_start) - self.sync_send( - {"type": "http.response.body", "body": output, "more_body": True} - ) - # Close connection - if not self.response_started: - self.response_started = True - self.sync_send(self.response_start) - self.sync_send({"type": "http.response.body"}) diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING deleted file mode 100644 index d511905c1647a1e311e8b20d5930a37a9c2531cd..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER deleted file mode 100644 index 2d2d780e6014b850ca3b8437452e24eba5f96508..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER +++ /dev/null @@ -1,510 +0,0 @@ - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations -below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it -becomes a de-facto standard. To achieve this, non-free programs must -be allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control -compilation and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at least - three years, to give the same user the materials specified in - Subsection 6a, above, for a charge no more than the cost of - performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply, and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License -may add an explicit geographical distribution limitation excluding those -countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms -of the ordinary General Public License). - - To apply these terms, attach the following notices to the library. -It is safest to attach them to the start of each source file to most -effectively convey the exclusion of warranty; and each file should -have at least the "copyright" line and a pointer to where the full -notice is found. - - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the library, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James - Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER deleted file mode 100644 index a1b589e38a32041e49332e5e81c2d363dc418d68..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA deleted file mode 100644 index 47dad94267c069deac6022e0a40018c3f951e104..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA +++ /dev/null @@ -1,118 +0,0 @@ -Metadata-Version: 2.1 -Name: astroid -Version: 2.4.2 -Summary: An abstract syntax tree for Python with inference support. -Home-page: https://github.com/PyCQA/astroid -Author: Python Code Quality Authority -Author-email: code-quality@python.org -License: LGPL -Platform: UNKNOWN -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Software Development :: Quality Assurance -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=3.5 -Requires-Dist: lazy-object-proxy (==1.4.*) -Requires-Dist: six (~=1.12) -Requires-Dist: wrapt (~=1.11) -Requires-Dist: typed-ast (<1.5,>=1.4.0) ; implementation_name == "cpython" and python_version < "3.8" - -Astroid -======= - -.. image:: https://travis-ci.org/PyCQA/astroid.svg?branch=master - :target: https://travis-ci.org/PyCQA/astroid - -.. image:: https://ci.appveyor.com/api/projects/status/co3u42kunguhbh6l/branch/master?svg=true - :alt: AppVeyor Build Status - :target: https://ci.appveyor.com/project/PCManticore/astroid - -.. image:: https://coveralls.io/repos/github/PyCQA/astroid/badge.svg?branch=master - :target: https://coveralls.io/github/PyCQA/astroid?branch=master - -.. image:: https://readthedocs.org/projects/astroid/badge/?version=latest - :target: http://astroid.readthedocs.io/en/latest/?badge=latest - :alt: Documentation Status - -.. image:: https://img.shields.io/badge/code%20style-black-000000.svg - :target: https://github.com/ambv/black - -.. |tideliftlogo| image:: doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png - :width: 75 - :height: 60 - :alt: Tidelift - -.. list-table:: - :widths: 10 100 - - * - |tideliftlogo| - - Professional support for astroid is available as part of the `Tidelift - Subscription`_. Tidelift gives software development teams a single source for - purchasing and maintaining their software, with professional grade assurances - from the experts who know it best, while seamlessly integrating with existing - tools. - -.. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-astroid?utm_source=pypi-astroid&utm_medium=referral&utm_campaign=readme - - - -What's this? ------------- - -The aim of this module is to provide a common base representation of -python source code. It is currently the library powering pylint's capabilities. - -It provides a compatible representation which comes from the `_ast` -module. It rebuilds the tree generated by the builtin _ast module by -recursively walking down the AST and building an extended ast. The new -node classes have additional methods and attributes for different -usages. They include some support for static inference and local name -scopes. Furthermore, astroid can also build partial trees by inspecting living -objects. - - -Installation ------------- - -Extract the tarball, jump into the created directory and run:: - - pip install . - - -If you want to do an editable installation, you can run:: - - pip install -e . - - -If you have any questions, please mail the code-quality@python.org -mailing list for support. See -http://mail.python.org/mailman/listinfo/code-quality for subscription -information and archives. - -Documentation -------------- -http://astroid.readthedocs.io/en/latest/ - - -Python Versions ---------------- - -astroid 2.0 is currently available for Python 3 only. If you want Python 2 -support, older versions of astroid will still supported until 2020. - -Test ----- - -Tests are in the 'test' subdirectory. To launch the whole tests suite, you can use -either `tox` or `pytest`:: - - tox - pytest astroid - - diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD deleted file mode 100644 index 7c07dc25d92063b058561c414f6ae2593a36047c..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD +++ /dev/null @@ -1,152 +0,0 @@ -astroid-2.4.2.dist-info/COPYING,sha256=qxX9UmvY3Rip5368E5ZWv00z6X_HI4zRG_YOK5uGZsY,17987 -astroid-2.4.2.dist-info/COPYING.LESSER,sha256=qb3eVhbs3R6YC0TzYGAO6Hg7H5m4zIOivrFjoKOQ6GE,26527 -astroid-2.4.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -astroid-2.4.2.dist-info/METADATA,sha256=mWlOM8vl6thD_vA7Lzn2yKmQuaX8NukwS72gEpsGM0U,3915 -astroid-2.4.2.dist-info/RECORD,, -astroid-2.4.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -astroid-2.4.2.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92 -astroid-2.4.2.dist-info/top_level.txt,sha256=HsdW4O2x7ZXRj6k-agi3RaQybGLobI3VSE-jt4vQUXM,8 -astroid/__init__.py,sha256=zZF5EWBTfOtOcFd62WMbhLAtS2b_Fm-3JJW2AVUUMUI,5655 -astroid/__pkginfo__.py,sha256=G6QlkatrWucF445cQW7Kb2ZSgBzf7TiKLPwqkP0CoQU,2329 -astroid/__pycache__/__init__.cpython-38.pyc,, -astroid/__pycache__/__pkginfo__.cpython-38.pyc,, -astroid/__pycache__/_ast.cpython-38.pyc,, -astroid/__pycache__/arguments.cpython-38.pyc,, -astroid/__pycache__/as_string.cpython-38.pyc,, -astroid/__pycache__/bases.cpython-38.pyc,, -astroid/__pycache__/builder.cpython-38.pyc,, -astroid/__pycache__/context.cpython-38.pyc,, -astroid/__pycache__/decorators.cpython-38.pyc,, -astroid/__pycache__/exceptions.cpython-38.pyc,, -astroid/__pycache__/helpers.cpython-38.pyc,, -astroid/__pycache__/inference.cpython-38.pyc,, -astroid/__pycache__/manager.cpython-38.pyc,, -astroid/__pycache__/mixins.cpython-38.pyc,, -astroid/__pycache__/modutils.cpython-38.pyc,, -astroid/__pycache__/node_classes.cpython-38.pyc,, -astroid/__pycache__/nodes.cpython-38.pyc,, -astroid/__pycache__/objects.cpython-38.pyc,, -astroid/__pycache__/protocols.cpython-38.pyc,, -astroid/__pycache__/raw_building.cpython-38.pyc,, -astroid/__pycache__/rebuilder.cpython-38.pyc,, -astroid/__pycache__/scoped_nodes.cpython-38.pyc,, -astroid/__pycache__/test_utils.cpython-38.pyc,, -astroid/__pycache__/transforms.cpython-38.pyc,, -astroid/__pycache__/util.cpython-38.pyc,, -astroid/_ast.py,sha256=n1U2HblBNrMhsmrjF84HUfIgEZ3PyHyiJJOrOkgiUFk,3385 -astroid/arguments.py,sha256=KJcZn7HeEhj2fZICr-9Pi7iueCNDZRQWh0T7O-qb-AE,12558 -astroid/as_string.py,sha256=8bOZWsGG79TLmlzRzPtmHdanIAqQUFTKiYH873iMhOw,22821 -astroid/bases.py,sha256=wL9C23mHFaj7vhMqM83DdsU6kfP488aEjoFWaO8p6Cg,19175 -astroid/brain/__pycache__/brain_argparse.cpython-38.pyc,, -astroid/brain/__pycache__/brain_attrs.cpython-38.pyc,, -astroid/brain/__pycache__/brain_boto3.cpython-38.pyc,, -astroid/brain/__pycache__/brain_builtin_inference.cpython-38.pyc,, -astroid/brain/__pycache__/brain_collections.cpython-38.pyc,, -astroid/brain/__pycache__/brain_crypt.cpython-38.pyc,, -astroid/brain/__pycache__/brain_curses.cpython-38.pyc,, -astroid/brain/__pycache__/brain_dataclasses.cpython-38.pyc,, -astroid/brain/__pycache__/brain_dateutil.cpython-38.pyc,, -astroid/brain/__pycache__/brain_fstrings.cpython-38.pyc,, -astroid/brain/__pycache__/brain_functools.cpython-38.pyc,, -astroid/brain/__pycache__/brain_gi.cpython-38.pyc,, -astroid/brain/__pycache__/brain_hashlib.cpython-38.pyc,, -astroid/brain/__pycache__/brain_http.cpython-38.pyc,, -astroid/brain/__pycache__/brain_io.cpython-38.pyc,, -astroid/brain/__pycache__/brain_mechanize.cpython-38.pyc,, -astroid/brain/__pycache__/brain_multiprocessing.cpython-38.pyc,, -astroid/brain/__pycache__/brain_namedtuple_enum.cpython-38.pyc,, -astroid/brain/__pycache__/brain_nose.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_core_fromnumeric.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_core_umath.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_ndarray.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-38.pyc,, -astroid/brain/__pycache__/brain_numpy_utils.cpython-38.pyc,, -astroid/brain/__pycache__/brain_pkg_resources.cpython-38.pyc,, -astroid/brain/__pycache__/brain_pytest.cpython-38.pyc,, -astroid/brain/__pycache__/brain_qt.cpython-38.pyc,, -astroid/brain/__pycache__/brain_random.cpython-38.pyc,, -astroid/brain/__pycache__/brain_re.cpython-38.pyc,, -astroid/brain/__pycache__/brain_responses.cpython-38.pyc,, -astroid/brain/__pycache__/brain_scipy_signal.cpython-38.pyc,, -astroid/brain/__pycache__/brain_six.cpython-38.pyc,, -astroid/brain/__pycache__/brain_ssl.cpython-38.pyc,, -astroid/brain/__pycache__/brain_subprocess.cpython-38.pyc,, -astroid/brain/__pycache__/brain_threading.cpython-38.pyc,, -astroid/brain/__pycache__/brain_typing.cpython-38.pyc,, -astroid/brain/__pycache__/brain_uuid.cpython-38.pyc,, -astroid/brain/brain_argparse.py,sha256=5XqcThekktCIWRlWAMs-R47wkbsOUSnQlsEbLEnRpsY,1041 -astroid/brain/brain_attrs.py,sha256=k8zJqIXsIbQrncthrzyB5NtdPTktgVi9wG7nyl8xMzs,2208 -astroid/brain/brain_boto3.py,sha256=nE8Cw_S_Gp___IszRDRkhEGS6WGrKcF_gTOs3GVxH9k,862 -astroid/brain/brain_builtin_inference.py,sha256=F6_09yM2mmu_u3ad_f9Uumc-q0lDA2CY8v9-PYtUMmA,28793 -astroid/brain/brain_collections.py,sha256=Uqi4VmpLDl0ndQa9x-5tIXRtVdtI6TlwR9KNHmOqLyw,2724 -astroid/brain/brain_crypt.py,sha256=gA7Q4GVuAM4viuTGWM6SNTPQXv5Gr_mFapyKMTRcsJ0,875 -astroid/brain/brain_curses.py,sha256=tDnlCP1bEvleqCMz856yua9mM5um1p_JendFhT4rBFk,3303 -astroid/brain/brain_dataclasses.py,sha256=5WndOYSY0oi2v-Od6KdPte-FKt00LoNRH2riSB4S1os,1647 -astroid/brain/brain_dateutil.py,sha256=GwDrgbaUkKbp3ImLAvuUtPuDBeK3lPh0bNI_Wphm2_8,801 -astroid/brain/brain_fstrings.py,sha256=Jaf-G-wkLecwG4jfjjfR8MDKzgAjjn2mgrrWZQLOAd8,2126 -astroid/brain/brain_functools.py,sha256=Nljy7o2vu16S2amFot4wdTI0U76Yafq-ujVPHOdGgCE,5481 -astroid/brain/brain_gi.py,sha256=oraXhBWyCCxmPEAEvRboeTIho0--ORObvckni00_1wY,7554 -astroid/brain/brain_hashlib.py,sha256=W2cS6-rixdBcre6lPWIuSOqPLCcVji5JBlImdPbV6Qo,2292 -astroid/brain/brain_http.py,sha256=a_8eIACvZetnR2xI4ZARVMuB1WSjyyqM3rCl2DVltMo,10524 -astroid/brain/brain_io.py,sha256=wEY3vvTeV23tYxFn8HHQeyjhb7-jqzwgwNI-kl2Yu-c,1476 -astroid/brain/brain_mechanize.py,sha256=boZxoCxPGSpHC_RccO5U026hyXyhunXR55M9WM1lYTo,895 -astroid/brain/brain_multiprocessing.py,sha256=9OswtRuVBj-KemJ0yp4prz8mrkJDzOzN6n13u2MgmwM,3096 -astroid/brain/brain_namedtuple_enum.py,sha256=eZ8IaHPLLHBakywJ3q4Ogtd2Tk0gtNcAgYAloMAKTjM,15966 -astroid/brain/brain_nose.py,sha256=PSPmme611h7fC8MKuVXbiGw0HZhdmIuoxM6yieZ1OOc,2217 -astroid/brain/brain_numpy_core_fromnumeric.py,sha256=NxiHbcMyQQ3Gpx4KEA5eAmGrpjlPN5rfXjRLjHPOVkw,621 -astroid/brain/brain_numpy_core_function_base.py,sha256=7i6Kge_PviqoWXhbeRgB581xwLo0dxvO54_5UB3ppig,1168 -astroid/brain/brain_numpy_core_multiarray.py,sha256=vr-nBt3EF_z-UmHmcAlJhGorgDXPpQaYX8g4TWu_2Vw,4015 -astroid/brain/brain_numpy_core_numeric.py,sha256=M0RXOym2YC-DaZfRqGNIpr6s-Oh1KHn1okGr3PtPl0k,1384 -astroid/brain/brain_numpy_core_numerictypes.py,sha256=ltlZyQprEbVdUJpC_ERGyXyJsYwzFHx7zGYDLheIonA,8013 -astroid/brain/brain_numpy_core_umath.py,sha256=je6K3ILMen2mgkZseHCOjOgnFV6SaNgAihEi6irhbRk,4436 -astroid/brain/brain_numpy_ndarray.py,sha256=WZbRG7GgOWZ68sEr4JjZUnJHLfUc91xp2mucHeLMrnw,8463 -astroid/brain/brain_numpy_random_mtrand.py,sha256=WRy_CStllgZN2B3Dw2qxXbY4SBrCzu-cdaK230VQHaE,3278 -astroid/brain/brain_numpy_utils.py,sha256=ZYtCVmn1x6P7iwYFohdW3CCrvVT5BCNYe-7jKcz_25s,1875 -astroid/brain/brain_pkg_resources.py,sha256=S_5UED1Zg8ObEJumRdpYGnjxZzemh_G_NFj3p5NGPfc,2262 -astroid/brain/brain_pytest.py,sha256=RYp7StKnC22n4vFJkHH5h7DAFWtouIcg-ZCXQ8Oz3xk,2390 -astroid/brain/brain_qt.py,sha256=m2s4YXFrnOynWDf9omHOBLVqFriBdGJAmvarJCxiffM,2536 -astroid/brain/brain_random.py,sha256=2RZY-QEXMNWp7E6h0l0-ke-DtjKTOFlTdjiQZi3XdQc,2432 -astroid/brain/brain_re.py,sha256=le7VJHUAf80HyE_aQCh7_8FyDVK6JwNWA--c9RaMVQ8,1128 -astroid/brain/brain_responses.py,sha256=GIAGkwMEGEZ9bJHI9uBGs_UmUy3DRBtjI_j_8dLBVsc,1534 -astroid/brain/brain_scipy_signal.py,sha256=IKNnGXzEH5FKhPHM2hv57pNdo1emThWwZ0ksckdsOeE,2255 -astroid/brain/brain_six.py,sha256=79aws4au6ZQJuf-YhBT4R-9wuVOwg-u0T42aUhCswK0,6187 -astroid/brain/brain_ssl.py,sha256=9dMCTQ0JsX2gpdmBkYO7BByw3zN23oXRL8Svo2S1V28,3722 -astroid/brain/brain_subprocess.py,sha256=yp-HsE69uh7T7C1kZYciAdRMQ48aNT51lI032oDppDk,4688 -astroid/brain/brain_threading.py,sha256=dY8YwZ-zrB30_CQFYWh4AK3qUVssakgwLVwunQ6yYkU,837 -astroid/brain/brain_typing.py,sha256=iFw33beNCitCJjJNvccIY6SsFJcdKVDdl-56DxDioh0,2780 -astroid/brain/brain_uuid.py,sha256=YzfiOXavu515cS1prsKGfY4-12g_KWT0Yr4-5ti0v74,569 -astroid/builder.py,sha256=72JlHrXRF9sS5zh1mqXlRHGFg88Efc2rm9yRJKDIShA,16891 -astroid/context.py,sha256=MpwiEzWZ39a4WyqYgbSmePL2nZLqALt1gjrvi3TP35U,5169 -astroid/decorators.py,sha256=z_wTjsiMlu_ElHtYUUuxaB2F_s4G0Ks7bmtCZS3IQ_Q,4283 -astroid/exceptions.py,sha256=GLiZo9BdWILJShO-il8ra-tPZqaODMAX987F--LWv2w,6891 -astroid/helpers.py,sha256=3YoJeVLoS-66T_abDorUNHiP8m2R7-faNnpc5yPJhrc,9448 -astroid/inference.py,sha256=UiKKPRYqb5JINQIw1lSdBniHhXjCohCGAqycp2GkVI4,34686 -astroid/interpreter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -astroid/interpreter/__pycache__/__init__.cpython-38.pyc,, -astroid/interpreter/__pycache__/dunder_lookup.cpython-38.pyc,, -astroid/interpreter/__pycache__/objectmodel.cpython-38.pyc,, -astroid/interpreter/_import/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -astroid/interpreter/_import/__pycache__/__init__.cpython-38.pyc,, -astroid/interpreter/_import/__pycache__/spec.cpython-38.pyc,, -astroid/interpreter/_import/__pycache__/util.cpython-38.pyc,, -astroid/interpreter/_import/spec.py,sha256=rZ9kX3I0xPo_pFAYWeOk2Xbi4ZIg_5bRsouZgxOXegA,11436 -astroid/interpreter/_import/util.py,sha256=inubUz6F3_kaMFaeleKUW6E6wCMIPrhU882zvwEZ02I,255 -astroid/interpreter/dunder_lookup.py,sha256=dP-AZU_aGPNt03b1ttrMglxzeU3NtgnG0MfpSLPH6sg,2155 -astroid/interpreter/objectmodel.py,sha256=bbPIaamrqrx7WHtG5YNs9dbrlDC00GrJPxPGoSTsnqg,25792 -astroid/manager.py,sha256=jmEm9uH00mPA2Y68s10xrPNbZaadv_2c-CWluB3SYoE,13701 -astroid/mixins.py,sha256=F2rv2Ow7AU3YT_2jitVJik95ZWRVK6hpf8BrkkspzUY,5571 -astroid/modutils.py,sha256=GBW5Z691eqf6VAnPsZzeQ0WYzrl-0GGTHkkZNb_9XRQ,23242 -astroid/node_classes.py,sha256=cBRkZ_u8ZoRkiXznYWq1L3I7cO-P9nGowNCy8T7Qpzk,142740 -astroid/nodes.py,sha256=WoyRe22GNVRc2TRHWOUlqdxCdOVD8GKOq9v1LpPhkr8,2978 -astroid/objects.py,sha256=caKeQPBtrrfqa1q844vkehXwpdMzvph5YJdJJdbD_m8,11035 -astroid/protocols.py,sha256=m1ZHvKvFQZSZp993na4f9s8V17kqNPRfH-XpQc8gJ7c,27396 -astroid/raw_building.py,sha256=PI70y2mPQ7JURDVyNZ6deeBFkvjNNaOQBkuo0VPbvQ4,17340 -astroid/rebuilder.py,sha256=xn82eWlxzGcDd2VACUnNNWCxArfV9HI8g67fUip0XFk,39411 -astroid/scoped_nodes.py,sha256=fUrmTyltaLCr9-i8RdC2e5dPA9O8w946Mvvft8mgXdM,98203 -astroid/test_utils.py,sha256=axGB3j6ZEaVspL1ZgPizKgWehNEREb58Z97U7mQ-GA8,2319 -astroid/transforms.py,sha256=1npwJWcQUSIjcpcWd1pc-dJhtHOyiboQHsETAIQd5co,3377 -astroid/util.py,sha256=jg5LnqbWSZTZP1KgpxGBuC6Lfwhn9Jb2T2TohXghmC0,4785 diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/REQUESTED b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/REQUESTED deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL deleted file mode 100644 index b552003ff90e66227ec90d1b159324f140d46001..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.34.2) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt b/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt deleted file mode 100644 index 450d4fe9e6e3e96a3098a2a6adf05857d8592478..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -astroid diff --git a/backend/venv/Lib/site-packages/astroid/__init__.py b/backend/venv/Lib/site-packages/astroid/__init__.py deleted file mode 100644 index e869274e40f7aa93cbaef92d11944f69bcb9c1d1..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/__init__.py +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright (c) 2006-2013, 2015 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2014 Eevee (Alex Munroe) -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2016 Derek Gustafson -# Copyright (c) 2016 Moises Lopez -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2019 Nick Drozd - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Python Abstract Syntax Tree New Generation - -The aim of this module is to provide a common base representation of -python source code for projects such as pychecker, pyreverse, -pylint... Well, actually the development of this library is essentially -governed by pylint's needs. - -It extends class defined in the python's _ast module with some -additional methods and attributes. Instance attributes are added by a -builder object, which can either generate extended ast (let's call -them astroid ;) by visiting an existent ast tree or by inspecting living -object. Methods are added by monkey patching ast classes. - -Main modules are: - -* nodes and scoped_nodes for more information about methods and - attributes added to different node classes - -* the manager contains a high level object to get astroid trees from - source files and living objects. It maintains a cache of previously - constructed tree for quick access - -* builder contains the class responsible to build astroid trees -""" - -import enum -import itertools -import os -import sys - -import wrapt - - -_Context = enum.Enum("Context", "Load Store Del") -Load = _Context.Load -Store = _Context.Store -Del = _Context.Del -del _Context - - -# pylint: disable=wrong-import-order,wrong-import-position -from .__pkginfo__ import version as __version__ - -# WARNING: internal imports order matters ! - -# pylint: disable=redefined-builtin - -# make all exception classes accessible from astroid package -from astroid.exceptions import * - -# make all node classes accessible from astroid package -from astroid.nodes import * - -# trigger extra monkey-patching -from astroid import inference - -# more stuff available -from astroid import raw_building -from astroid.bases import BaseInstance, Instance, BoundMethod, UnboundMethod -from astroid.node_classes import are_exclusive, unpack_infer -from astroid.scoped_nodes import builtin_lookup -from astroid.builder import parse, extract_node -from astroid.util import Uninferable - -# make a manager instance (borg) accessible from astroid package -from astroid.manager import AstroidManager - -MANAGER = AstroidManager() -del AstroidManager - -# transform utilities (filters and decorator) - - -# pylint: disable=dangerous-default-value -@wrapt.decorator -def _inference_tip_cached(func, instance, args, kwargs, _cache={}): - """Cache decorator used for inference tips""" - node = args[0] - try: - return iter(_cache[func, node]) - except KeyError: - result = func(*args, **kwargs) - # Need to keep an iterator around - original, copy = itertools.tee(result) - _cache[func, node] = list(copy) - return original - - -# pylint: enable=dangerous-default-value - - -def inference_tip(infer_function, raise_on_overwrite=False): - """Given an instance specific inference function, return a function to be - given to MANAGER.register_transform to set this inference function. - - :param bool raise_on_overwrite: Raise an `InferenceOverwriteError` - if the inference tip will overwrite another. Used for debugging - - Typical usage - - .. sourcecode:: python - - MANAGER.register_transform(Call, inference_tip(infer_named_tuple), - predicate) - - .. Note:: - - Using an inference tip will override - any previously set inference tip for the given - node. Use a predicate in the transform to prevent - excess overwrites. - """ - - def transform(node, infer_function=infer_function): - if ( - raise_on_overwrite - and node._explicit_inference is not None - and node._explicit_inference is not infer_function - ): - raise InferenceOverwriteError( - "Inference already set to {existing_inference}. " - "Trying to overwrite with {new_inference} for {node}".format( - existing_inference=infer_function, - new_inference=node._explicit_inference, - node=node, - ) - ) - # pylint: disable=no-value-for-parameter - node._explicit_inference = _inference_tip_cached(infer_function) - return node - - return transform - - -def register_module_extender(manager, module_name, get_extension_mod): - def transform(node): - extension_module = get_extension_mod() - for name, objs in extension_module.locals.items(): - node.locals[name] = objs - for obj in objs: - if obj.parent is extension_module: - obj.parent = node - - manager.register_transform(Module, transform, lambda n: n.name == module_name) - - -# load brain plugins -BRAIN_MODULES_DIR = os.path.join(os.path.dirname(__file__), "brain") -if BRAIN_MODULES_DIR not in sys.path: - # add it to the end of the list so user path take precedence - sys.path.append(BRAIN_MODULES_DIR) -# load modules in this directory -for module in os.listdir(BRAIN_MODULES_DIR): - if module.endswith(".py"): - __import__(module[:-3]) diff --git a/backend/venv/Lib/site-packages/astroid/__pkginfo__.py b/backend/venv/Lib/site-packages/astroid/__pkginfo__.py deleted file mode 100644 index fd8e1323cc8b266c232c9fa8cd6bdd0786fdd0cf..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/__pkginfo__.py +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2006-2014 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2014-2019 Claudiu Popa -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2015-2017 Ceridwen -# Copyright (c) 2015 Florian Bruhin -# Copyright (c) 2015 Radosław Ganczarek -# Copyright (c) 2016 Moises Lopez -# Copyright (c) 2017 Hugo -# Copyright (c) 2017 Łukasz Rogalski -# Copyright (c) 2017 Calen Pennington -# Copyright (c) 2018 Ville Skyttä -# Copyright (c) 2018 Ashley Whetter -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2019 Uilian Ries -# Copyright (c) 2019 Thomas Hisch -# Copyright (c) 2020 Michael - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""astroid packaging information""" - -version = "2.4.2" -numversion = tuple(int(elem) for elem in version.split(".") if elem.isdigit()) - -extras_require = {} -install_requires = [ - "lazy_object_proxy==1.4.*", - "six~=1.12", - "wrapt~=1.11", - 'typed-ast>=1.4.0,<1.5;implementation_name== "cpython" and python_version<"3.8"', -] - -# pylint: disable=redefined-builtin; why license is a builtin anyway? -license = "LGPL" - -author = "Python Code Quality Authority" -author_email = "code-quality@python.org" -mailinglist = "mailto://%s" % author_email -web = "https://github.com/PyCQA/astroid" - -description = "An abstract syntax tree for Python with inference support." - -classifiers = [ - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: Quality Assurance", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", -] diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/__init__.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 27f4274569af0dd99ee1d6d0d4e65b983cebf85c..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/__pkginfo__.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/__pkginfo__.cpython-38.pyc deleted file mode 100644 index 1c5848fc1e7dd77166dfed9f3a6a4200e8ea6e66..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/__pkginfo__.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/_ast.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/_ast.cpython-38.pyc deleted file mode 100644 index ee3988cd0480e3e76f28fa45c602e01209f308b6..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/_ast.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/arguments.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/arguments.cpython-38.pyc deleted file mode 100644 index 3a24433803e028a65618754d7f11f5f94eb98788..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/arguments.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/as_string.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/as_string.cpython-38.pyc deleted file mode 100644 index 185cfb57ba2a8ad4816b23c3ab695503f47223ba..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/as_string.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/bases.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/bases.cpython-38.pyc deleted file mode 100644 index 2a0838c487633f433b54fe8693804ee2be819682..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/bases.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/builder.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/builder.cpython-38.pyc deleted file mode 100644 index f76ef9277800f4fb25721f3fec6311ee29fcfcab..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/builder.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/context.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/context.cpython-38.pyc deleted file mode 100644 index 4303986fbf0c901422fff8501f7c8c727895000d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/context.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/decorators.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/decorators.cpython-38.pyc deleted file mode 100644 index 36de661d228c04b98a3d0c55daad550710772241..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/decorators.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/exceptions.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/exceptions.cpython-38.pyc deleted file mode 100644 index b4b039017b1886fb73152fd89f6f8a3e3052be2d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/exceptions.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/helpers.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/helpers.cpython-38.pyc deleted file mode 100644 index e2d62245d2f6cf22b23661dbb892ab12f7874ef7..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/helpers.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/inference.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/inference.cpython-38.pyc deleted file mode 100644 index f34f62c92e6be36e33b4c4573844905d1065c58f..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/inference.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/manager.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/manager.cpython-38.pyc deleted file mode 100644 index 16b21d3f029192f482ae59e6ffc5c8637afd793f..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/manager.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/mixins.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/mixins.cpython-38.pyc deleted file mode 100644 index fa49b621c521573861982be854cc6b68122c1930..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/mixins.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/modutils.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/modutils.cpython-38.pyc deleted file mode 100644 index 829832fbab4ab029fd05334dd472a362b9011b4d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/modutils.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/node_classes.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/node_classes.cpython-38.pyc deleted file mode 100644 index 6241bc5edd3f58a8da42de6b6bb6dd1206fb4311..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/node_classes.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/nodes.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/nodes.cpython-38.pyc deleted file mode 100644 index 51b813b581a57bc92e3a5891f1c5cc2ff933d511..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/nodes.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/objects.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/objects.cpython-38.pyc deleted file mode 100644 index 14d4fc1d42b03de428b16c08e0086580001ba123..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/objects.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/protocols.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/protocols.cpython-38.pyc deleted file mode 100644 index cc29a3ab3113f536061a0cd986ba122322d0b6d0..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/protocols.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/raw_building.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/raw_building.cpython-38.pyc deleted file mode 100644 index 20e3c82c9e8e3e25361062a787b0445b994c32be..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/raw_building.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/rebuilder.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/rebuilder.cpython-38.pyc deleted file mode 100644 index 56a738b0f74c6015bc032e34ab50f3c528bbba1e..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/rebuilder.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/scoped_nodes.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/scoped_nodes.cpython-38.pyc deleted file mode 100644 index da25fcda1b0166042d134cf34bc9e36dc0344e0d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/scoped_nodes.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/test_utils.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/test_utils.cpython-38.pyc deleted file mode 100644 index fb7fa1c8529542a8b800880c603e403bb9c07130..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/test_utils.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/transforms.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/transforms.cpython-38.pyc deleted file mode 100644 index bc72f1bbca3f8750a635138546e3a18c13538ddd..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/transforms.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/__pycache__/util.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/__pycache__/util.cpython-38.pyc deleted file mode 100644 index fab737b01321a28fbc65a72de79570172d1935d2..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/__pycache__/util.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/_ast.py b/backend/venv/Lib/site-packages/astroid/_ast.py deleted file mode 100644 index 34b74c5f2395baa2d0ff86287562afeae0f493f5..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/_ast.py +++ /dev/null @@ -1,131 +0,0 @@ -import ast -from collections import namedtuple -from functools import partial -from typing import Optional -import sys - -import astroid - -_ast_py3 = None -try: - import typed_ast.ast3 as _ast_py3 -except ImportError: - pass - - -PY38 = sys.version_info[:2] >= (3, 8) -if PY38: - # On Python 3.8, typed_ast was merged back into `ast` - _ast_py3 = ast - - -FunctionType = namedtuple("FunctionType", ["argtypes", "returns"]) - - -class ParserModule( - namedtuple( - "ParserModule", - [ - "module", - "unary_op_classes", - "cmp_op_classes", - "bool_op_classes", - "bin_op_classes", - "context_classes", - ], - ) -): - def parse(self, string: str, type_comments=True): - if self.module is _ast_py3: - if PY38: - parse_func = partial(self.module.parse, type_comments=type_comments) - else: - parse_func = partial( - self.module.parse, feature_version=sys.version_info.minor - ) - else: - parse_func = self.module.parse - return parse_func(string) - - -def parse_function_type_comment(type_comment: str) -> Optional[FunctionType]: - """Given a correct type comment, obtain a FunctionType object""" - if _ast_py3 is None: - return None - - func_type = _ast_py3.parse(type_comment, "", "func_type") - return FunctionType(argtypes=func_type.argtypes, returns=func_type.returns) - - -def get_parser_module(type_comments=True) -> ParserModule: - if not type_comments: - parser_module = ast - else: - parser_module = _ast_py3 - parser_module = parser_module or ast - - unary_op_classes = _unary_operators_from_module(parser_module) - cmp_op_classes = _compare_operators_from_module(parser_module) - bool_op_classes = _bool_operators_from_module(parser_module) - bin_op_classes = _binary_operators_from_module(parser_module) - context_classes = _contexts_from_module(parser_module) - - return ParserModule( - parser_module, - unary_op_classes, - cmp_op_classes, - bool_op_classes, - bin_op_classes, - context_classes, - ) - - -def _unary_operators_from_module(module): - return {module.UAdd: "+", module.USub: "-", module.Not: "not", module.Invert: "~"} - - -def _binary_operators_from_module(module): - binary_operators = { - module.Add: "+", - module.BitAnd: "&", - module.BitOr: "|", - module.BitXor: "^", - module.Div: "/", - module.FloorDiv: "//", - module.MatMult: "@", - module.Mod: "%", - module.Mult: "*", - module.Pow: "**", - module.Sub: "-", - module.LShift: "<<", - module.RShift: ">>", - } - return binary_operators - - -def _bool_operators_from_module(module): - return {module.And: "and", module.Or: "or"} - - -def _compare_operators_from_module(module): - return { - module.Eq: "==", - module.Gt: ">", - module.GtE: ">=", - module.In: "in", - module.Is: "is", - module.IsNot: "is not", - module.Lt: "<", - module.LtE: "<=", - module.NotEq: "!=", - module.NotIn: "not in", - } - - -def _contexts_from_module(module): - return { - module.Load: astroid.Load, - module.Store: astroid.Store, - module.Del: astroid.Del, - module.Param: astroid.Store, - } diff --git a/backend/venv/Lib/site-packages/astroid/arguments.py b/backend/venv/Lib/site-packages/astroid/arguments.py deleted file mode 100644 index 5f4d90924f0c29a15ccf554ec38939a9ded60df9..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/arguments.py +++ /dev/null @@ -1,300 +0,0 @@ -# Copyright (c) 2015-2016, 2018-2020 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2018 Nick Drozd -# Copyright (c) 2018 Anthony Sottile - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -from astroid import bases -from astroid import context as contextmod -from astroid import exceptions -from astroid import nodes -from astroid import util - - -class CallSite: - """Class for understanding arguments passed into a call site - - It needs a call context, which contains the arguments and the - keyword arguments that were passed into a given call site. - In order to infer what an argument represents, call :meth:`infer_argument` - with the corresponding function node and the argument name. - - :param callcontext: - An instance of :class:`astroid.context.CallContext`, that holds - the arguments for the call site. - :param argument_context_map: - Additional contexts per node, passed in from :attr:`astroid.context.Context.extra_context` - :param context: - An instance of :class:`astroid.context.Context`. - """ - - def __init__(self, callcontext, argument_context_map=None, context=None): - if argument_context_map is None: - argument_context_map = {} - self.argument_context_map = argument_context_map - args = callcontext.args - keywords = callcontext.keywords - self.duplicated_keywords = set() - self._unpacked_args = self._unpack_args(args, context=context) - self._unpacked_kwargs = self._unpack_keywords(keywords, context=context) - - self.positional_arguments = [ - arg for arg in self._unpacked_args if arg is not util.Uninferable - ] - self.keyword_arguments = { - key: value - for key, value in self._unpacked_kwargs.items() - if value is not util.Uninferable - } - - @classmethod - def from_call(cls, call_node, context=None): - """Get a CallSite object from the given Call node. - - :param context: - An instance of :class:`astroid.context.Context` that will be used - to force a single inference path. - """ - - # Determine the callcontext from the given `context` object if any. - context = context or contextmod.InferenceContext() - callcontext = contextmod.CallContext(call_node.args, call_node.keywords) - return cls(callcontext, context=context) - - def has_invalid_arguments(self): - """Check if in the current CallSite were passed *invalid* arguments - - This can mean multiple things. For instance, if an unpacking - of an invalid object was passed, then this method will return True. - Other cases can be when the arguments can't be inferred by astroid, - for example, by passing objects which aren't known statically. - """ - return len(self.positional_arguments) != len(self._unpacked_args) - - def has_invalid_keywords(self): - """Check if in the current CallSite were passed *invalid* keyword arguments - - For instance, unpacking a dictionary with integer keys is invalid - (**{1:2}), because the keys must be strings, which will make this - method to return True. Other cases where this might return True if - objects which can't be inferred were passed. - """ - return len(self.keyword_arguments) != len(self._unpacked_kwargs) - - def _unpack_keywords(self, keywords, context=None): - values = {} - context = context or contextmod.InferenceContext() - context.extra_context = self.argument_context_map - for name, value in keywords: - if name is None: - # Then it's an unpacking operation (**) - try: - inferred = next(value.infer(context=context)) - except exceptions.InferenceError: - values[name] = util.Uninferable - continue - - if not isinstance(inferred, nodes.Dict): - # Not something we can work with. - values[name] = util.Uninferable - continue - - for dict_key, dict_value in inferred.items: - try: - dict_key = next(dict_key.infer(context=context)) - except exceptions.InferenceError: - values[name] = util.Uninferable - continue - if not isinstance(dict_key, nodes.Const): - values[name] = util.Uninferable - continue - if not isinstance(dict_key.value, str): - values[name] = util.Uninferable - continue - if dict_key.value in values: - # The name is already in the dictionary - values[dict_key.value] = util.Uninferable - self.duplicated_keywords.add(dict_key.value) - continue - values[dict_key.value] = dict_value - else: - values[name] = value - return values - - def _unpack_args(self, args, context=None): - values = [] - context = context or contextmod.InferenceContext() - context.extra_context = self.argument_context_map - for arg in args: - if isinstance(arg, nodes.Starred): - try: - inferred = next(arg.value.infer(context=context)) - except exceptions.InferenceError: - values.append(util.Uninferable) - continue - - if inferred is util.Uninferable: - values.append(util.Uninferable) - continue - if not hasattr(inferred, "elts"): - values.append(util.Uninferable) - continue - values.extend(inferred.elts) - else: - values.append(arg) - return values - - def infer_argument(self, funcnode, name, context): - """infer a function argument value according to the call context - - Arguments: - funcnode: The function being called. - name: The name of the argument whose value is being inferred. - context: Inference context object - """ - if name in self.duplicated_keywords: - raise exceptions.InferenceError( - "The arguments passed to {func!r} " " have duplicate keywords.", - call_site=self, - func=funcnode, - arg=name, - context=context, - ) - - # Look into the keywords first, maybe it's already there. - try: - return self.keyword_arguments[name].infer(context) - except KeyError: - pass - - # Too many arguments given and no variable arguments. - if len(self.positional_arguments) > len(funcnode.args.args): - if not funcnode.args.vararg: - raise exceptions.InferenceError( - "Too many positional arguments " - "passed to {func!r} that does " - "not have *args.", - call_site=self, - func=funcnode, - arg=name, - context=context, - ) - - positional = self.positional_arguments[: len(funcnode.args.args)] - vararg = self.positional_arguments[len(funcnode.args.args) :] - argindex = funcnode.args.find_argname(name)[0] - kwonlyargs = {arg.name for arg in funcnode.args.kwonlyargs} - kwargs = { - key: value - for key, value in self.keyword_arguments.items() - if key not in kwonlyargs - } - # If there are too few positionals compared to - # what the function expects to receive, check to see - # if the missing positional arguments were passed - # as keyword arguments and if so, place them into the - # positional args list. - if len(positional) < len(funcnode.args.args): - for func_arg in funcnode.args.args: - if func_arg.name in kwargs: - arg = kwargs.pop(func_arg.name) - positional.append(arg) - - if argindex is not None: - # 2. first argument of instance/class method - if argindex == 0 and funcnode.type in ("method", "classmethod"): - if context.boundnode is not None: - boundnode = context.boundnode - else: - # XXX can do better ? - boundnode = funcnode.parent.frame() - - if isinstance(boundnode, nodes.ClassDef): - # Verify that we're accessing a method - # of the metaclass through a class, as in - # `cls.metaclass_method`. In this case, the - # first argument is always the class. - method_scope = funcnode.parent.scope() - if method_scope is boundnode.metaclass(): - return iter((boundnode,)) - - if funcnode.type == "method": - if not isinstance(boundnode, bases.Instance): - boundnode = boundnode.instantiate_class() - return iter((boundnode,)) - if funcnode.type == "classmethod": - return iter((boundnode,)) - # if we have a method, extract one position - # from the index, so we'll take in account - # the extra parameter represented by `self` or `cls` - if funcnode.type in ("method", "classmethod"): - argindex -= 1 - # 2. search arg index - try: - return self.positional_arguments[argindex].infer(context) - except IndexError: - pass - - if funcnode.args.kwarg == name: - # It wants all the keywords that were passed into - # the call site. - if self.has_invalid_keywords(): - raise exceptions.InferenceError( - "Inference failed to find values for all keyword arguments " - "to {func!r}: {unpacked_kwargs!r} doesn't correspond to " - "{keyword_arguments!r}.", - keyword_arguments=self.keyword_arguments, - unpacked_kwargs=self._unpacked_kwargs, - call_site=self, - func=funcnode, - arg=name, - context=context, - ) - kwarg = nodes.Dict( - lineno=funcnode.args.lineno, - col_offset=funcnode.args.col_offset, - parent=funcnode.args, - ) - kwarg.postinit( - [(nodes.const_factory(key), value) for key, value in kwargs.items()] - ) - return iter((kwarg,)) - if funcnode.args.vararg == name: - # It wants all the args that were passed into - # the call site. - if self.has_invalid_arguments(): - raise exceptions.InferenceError( - "Inference failed to find values for all positional " - "arguments to {func!r}: {unpacked_args!r} doesn't " - "correspond to {positional_arguments!r}.", - positional_arguments=self.positional_arguments, - unpacked_args=self._unpacked_args, - call_site=self, - func=funcnode, - arg=name, - context=context, - ) - args = nodes.Tuple( - lineno=funcnode.args.lineno, - col_offset=funcnode.args.col_offset, - parent=funcnode.args, - ) - args.postinit(vararg) - return iter((args,)) - - # Check if it's a default parameter. - try: - return funcnode.args.default_value(name).infer(context) - except exceptions.NoDefault: - pass - raise exceptions.InferenceError( - "No value found for argument {name} to " "{func!r}", - call_site=self, - func=funcnode, - arg=name, - context=context, - ) diff --git a/backend/venv/Lib/site-packages/astroid/as_string.py b/backend/venv/Lib/site-packages/astroid/as_string.py deleted file mode 100644 index 653411f4dc7bc1572e4f728657ce3c3d8e04bdbf..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/as_string.py +++ /dev/null @@ -1,631 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2009-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2010 Daniel Harding -# Copyright (c) 2013-2016, 2018-2020 Claudiu Popa -# Copyright (c) 2013-2014 Google, Inc. -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2016 Jared Garst -# Copyright (c) 2016 Jakub Wilk -# Copyright (c) 2017, 2019 Łukasz Rogalski -# Copyright (c) 2017 rr- -# Copyright (c) 2018 Serhiy Storchaka -# Copyright (c) 2018 Ville Skyttä -# Copyright (c) 2018 brendanator -# Copyright (c) 2018 Nick Drozd -# Copyright (c) 2019 Alex Hall -# Copyright (c) 2019 Hugo van Kemenade - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""This module renders Astroid nodes as string: - -* :func:`to_code` function return equivalent (hopefully valid) python string - -* :func:`dump` function return an internal representation of nodes found - in the tree, useful for debugging or understanding the tree structure -""" - -# pylint: disable=unused-argument - -DOC_NEWLINE = "\0" - - -class AsStringVisitor: - """Visitor to render an Astroid node as a valid python code string""" - - def __init__(self, indent): - self.indent = indent - - def __call__(self, node): - """Makes this visitor behave as a simple function""" - return node.accept(self).replace(DOC_NEWLINE, "\n") - - def _docs_dedent(self, doc): - """Stop newlines in docs being indented by self._stmt_list""" - return '\n%s"""%s"""' % (self.indent, doc.replace("\n", DOC_NEWLINE)) - - def _stmt_list(self, stmts, indent=True): - """return a list of nodes to string""" - stmts = "\n".join(nstr for nstr in [n.accept(self) for n in stmts] if nstr) - if indent: - return self.indent + stmts.replace("\n", "\n" + self.indent) - - return stmts - - def _precedence_parens(self, node, child, is_left=True): - """Wrap child in parens only if required to keep same semantics""" - if self._should_wrap(node, child, is_left): - return "(%s)" % child.accept(self) - - return child.accept(self) - - def _should_wrap(self, node, child, is_left): - """Wrap child if: - - it has lower precedence - - same precedence with position opposite to associativity direction - """ - node_precedence = node.op_precedence() - child_precedence = child.op_precedence() - - if node_precedence > child_precedence: - # 3 * (4 + 5) - return True - - if ( - node_precedence == child_precedence - and is_left != node.op_left_associative() - ): - # 3 - (4 - 5) - # (2**3)**4 - return True - - return False - - ## visit_ methods ########################################### - - def visit_await(self, node): - return "await %s" % node.value.accept(self) - - def visit_asyncwith(self, node): - return "async %s" % self.visit_with(node) - - def visit_asyncfor(self, node): - return "async %s" % self.visit_for(node) - - def visit_arguments(self, node): - """return an astroid.Function node as string""" - return node.format_args() - - def visit_assignattr(self, node): - """return an astroid.AssAttr node as string""" - return self.visit_attribute(node) - - def visit_assert(self, node): - """return an astroid.Assert node as string""" - if node.fail: - return "assert %s, %s" % (node.test.accept(self), node.fail.accept(self)) - return "assert %s" % node.test.accept(self) - - def visit_assignname(self, node): - """return an astroid.AssName node as string""" - return node.name - - def visit_assign(self, node): - """return an astroid.Assign node as string""" - lhs = " = ".join(n.accept(self) for n in node.targets) - return "%s = %s" % (lhs, node.value.accept(self)) - - def visit_augassign(self, node): - """return an astroid.AugAssign node as string""" - return "%s %s %s" % (node.target.accept(self), node.op, node.value.accept(self)) - - def visit_annassign(self, node): - """Return an astroid.AugAssign node as string""" - - target = node.target.accept(self) - annotation = node.annotation.accept(self) - if node.value is None: - return "%s: %s" % (target, annotation) - return "%s: %s = %s" % (target, annotation, node.value.accept(self)) - - def visit_repr(self, node): - """return an astroid.Repr node as string""" - return "`%s`" % node.value.accept(self) - - def visit_binop(self, node): - """return an astroid.BinOp node as string""" - left = self._precedence_parens(node, node.left) - right = self._precedence_parens(node, node.right, is_left=False) - if node.op == "**": - return "%s%s%s" % (left, node.op, right) - - return "%s %s %s" % (left, node.op, right) - - def visit_boolop(self, node): - """return an astroid.BoolOp node as string""" - values = ["%s" % self._precedence_parens(node, n) for n in node.values] - return (" %s " % node.op).join(values) - - def visit_break(self, node): - """return an astroid.Break node as string""" - return "break" - - def visit_call(self, node): - """return an astroid.Call node as string""" - expr_str = self._precedence_parens(node, node.func) - args = [arg.accept(self) for arg in node.args] - if node.keywords: - keywords = [kwarg.accept(self) for kwarg in node.keywords] - else: - keywords = [] - - args.extend(keywords) - return "%s(%s)" % (expr_str, ", ".join(args)) - - def visit_classdef(self, node): - """return an astroid.ClassDef node as string""" - decorate = node.decorators.accept(self) if node.decorators else "" - args = [n.accept(self) for n in node.bases] - if node._metaclass and not node.has_metaclass_hack(): - args.append("metaclass=" + node._metaclass.accept(self)) - args += [n.accept(self) for n in node.keywords] - args = "(%s)" % ", ".join(args) if args else "" - docs = self._docs_dedent(node.doc) if node.doc else "" - return "\n\n%sclass %s%s:%s\n%s\n" % ( - decorate, - node.name, - args, - docs, - self._stmt_list(node.body), - ) - - def visit_compare(self, node): - """return an astroid.Compare node as string""" - rhs_str = " ".join( - [ - "%s %s" % (op, self._precedence_parens(node, expr, is_left=False)) - for op, expr in node.ops - ] - ) - return "%s %s" % (self._precedence_parens(node, node.left), rhs_str) - - def visit_comprehension(self, node): - """return an astroid.Comprehension node as string""" - ifs = "".join(" if %s" % n.accept(self) for n in node.ifs) - generated = "for %s in %s%s" % ( - node.target.accept(self), - node.iter.accept(self), - ifs, - ) - return "%s%s" % ("async " if node.is_async else "", generated) - - def visit_const(self, node): - """return an astroid.Const node as string""" - if node.value is Ellipsis: - return "..." - return repr(node.value) - - def visit_continue(self, node): - """return an astroid.Continue node as string""" - return "continue" - - def visit_delete(self, node): # XXX check if correct - """return an astroid.Delete node as string""" - return "del %s" % ", ".join(child.accept(self) for child in node.targets) - - def visit_delattr(self, node): - """return an astroid.DelAttr node as string""" - return self.visit_attribute(node) - - def visit_delname(self, node): - """return an astroid.DelName node as string""" - return node.name - - def visit_decorators(self, node): - """return an astroid.Decorators node as string""" - return "@%s\n" % "\n@".join(item.accept(self) for item in node.nodes) - - def visit_dict(self, node): - """return an astroid.Dict node as string""" - return "{%s}" % ", ".join(self._visit_dict(node)) - - def _visit_dict(self, node): - for key, value in node.items: - key = key.accept(self) - value = value.accept(self) - if key == "**": - # It can only be a DictUnpack node. - yield key + value - else: - yield "%s: %s" % (key, value) - - def visit_dictunpack(self, node): - return "**" - - def visit_dictcomp(self, node): - """return an astroid.DictComp node as string""" - return "{%s: %s %s}" % ( - node.key.accept(self), - node.value.accept(self), - " ".join(n.accept(self) for n in node.generators), - ) - - def visit_expr(self, node): - """return an astroid.Discard node as string""" - return node.value.accept(self) - - def visit_emptynode(self, node): - """dummy method for visiting an Empty node""" - return "" - - def visit_excepthandler(self, node): - if node.type: - if node.name: - excs = "except %s as %s" % ( - node.type.accept(self), - node.name.accept(self), - ) - else: - excs = "except %s" % node.type.accept(self) - else: - excs = "except" - return "%s:\n%s" % (excs, self._stmt_list(node.body)) - - def visit_ellipsis(self, node): - """return an astroid.Ellipsis node as string""" - return "..." - - def visit_empty(self, node): - """return an Empty node as string""" - return "" - - def visit_exec(self, node): - """return an astroid.Exec node as string""" - if node.locals: - return "exec %s in %s, %s" % ( - node.expr.accept(self), - node.locals.accept(self), - node.globals.accept(self), - ) - if node.globals: - return "exec %s in %s" % (node.expr.accept(self), node.globals.accept(self)) - return "exec %s" % node.expr.accept(self) - - def visit_extslice(self, node): - """return an astroid.ExtSlice node as string""" - return ", ".join(dim.accept(self) for dim in node.dims) - - def visit_for(self, node): - """return an astroid.For node as string""" - fors = "for %s in %s:\n%s" % ( - node.target.accept(self), - node.iter.accept(self), - self._stmt_list(node.body), - ) - if node.orelse: - fors = "%s\nelse:\n%s" % (fors, self._stmt_list(node.orelse)) - return fors - - def visit_importfrom(self, node): - """return an astroid.ImportFrom node as string""" - return "from %s import %s" % ( - "." * (node.level or 0) + node.modname, - _import_string(node.names), - ) - - def visit_joinedstr(self, node): - string = "".join( - # Use repr on the string literal parts - # to get proper escapes, e.g. \n, \\, \" - # But strip the quotes off the ends - # (they will always be one character: ' or ") - repr(value.value)[1:-1] - # Literal braces must be doubled to escape them - .replace("{", "{{").replace("}", "}}") - # Each value in values is either a string literal (Const) - # or a FormattedValue - if type(value).__name__ == "Const" else value.accept(self) - for value in node.values - ) - - # Try to find surrounding quotes that don't appear at all in the string. - # Because the formatted values inside {} can't contain backslash (\) - # using a triple quote is sometimes necessary - for quote in ["'", '"', '"""', "'''"]: - if quote not in string: - break - - return "f" + quote + string + quote - - def visit_formattedvalue(self, node): - result = node.value.accept(self) - if node.conversion and node.conversion >= 0: - # e.g. if node.conversion == 114: result += "!r" - result += "!" + chr(node.conversion) - if node.format_spec: - # The format spec is itself a JoinedString, i.e. an f-string - # We strip the f and quotes of the ends - result += ":" + node.format_spec.accept(self)[2:-1] - return "{%s}" % result - - def handle_functiondef(self, node, keyword): - """return a (possibly async) function definition node as string""" - decorate = node.decorators.accept(self) if node.decorators else "" - docs = self._docs_dedent(node.doc) if node.doc else "" - trailer = ":" - if node.returns: - return_annotation = " -> " + node.returns.as_string() - trailer = return_annotation + ":" - def_format = "\n%s%s %s(%s)%s%s\n%s" - return def_format % ( - decorate, - keyword, - node.name, - node.args.accept(self), - trailer, - docs, - self._stmt_list(node.body), - ) - - def visit_functiondef(self, node): - """return an astroid.FunctionDef node as string""" - return self.handle_functiondef(node, "def") - - def visit_asyncfunctiondef(self, node): - """return an astroid.AsyncFunction node as string""" - return self.handle_functiondef(node, "async def") - - def visit_generatorexp(self, node): - """return an astroid.GeneratorExp node as string""" - return "(%s %s)" % ( - node.elt.accept(self), - " ".join(n.accept(self) for n in node.generators), - ) - - def visit_attribute(self, node): - """return an astroid.Getattr node as string""" - left = self._precedence_parens(node, node.expr) - if left.isdigit(): - left = "(%s)" % left - return "%s.%s" % (left, node.attrname) - - def visit_global(self, node): - """return an astroid.Global node as string""" - return "global %s" % ", ".join(node.names) - - def visit_if(self, node): - """return an astroid.If node as string""" - ifs = ["if %s:\n%s" % (node.test.accept(self), self._stmt_list(node.body))] - if node.has_elif_block(): - ifs.append("el%s" % self._stmt_list(node.orelse, indent=False)) - elif node.orelse: - ifs.append("else:\n%s" % self._stmt_list(node.orelse)) - return "\n".join(ifs) - - def visit_ifexp(self, node): - """return an astroid.IfExp node as string""" - return "%s if %s else %s" % ( - self._precedence_parens(node, node.body, is_left=True), - self._precedence_parens(node, node.test, is_left=True), - self._precedence_parens(node, node.orelse, is_left=False), - ) - - def visit_import(self, node): - """return an astroid.Import node as string""" - return "import %s" % _import_string(node.names) - - def visit_keyword(self, node): - """return an astroid.Keyword node as string""" - if node.arg is None: - return "**%s" % node.value.accept(self) - return "%s=%s" % (node.arg, node.value.accept(self)) - - def visit_lambda(self, node): - """return an astroid.Lambda node as string""" - args = node.args.accept(self) - body = node.body.accept(self) - if args: - return "lambda %s: %s" % (args, body) - - return "lambda: %s" % body - - def visit_list(self, node): - """return an astroid.List node as string""" - return "[%s]" % ", ".join(child.accept(self) for child in node.elts) - - def visit_listcomp(self, node): - """return an astroid.ListComp node as string""" - return "[%s %s]" % ( - node.elt.accept(self), - " ".join(n.accept(self) for n in node.generators), - ) - - def visit_module(self, node): - """return an astroid.Module node as string""" - docs = '"""%s"""\n\n' % node.doc if node.doc else "" - return docs + "\n".join(n.accept(self) for n in node.body) + "\n\n" - - def visit_name(self, node): - """return an astroid.Name node as string""" - return node.name - - def visit_namedexpr(self, node): - """Return an assignment expression node as string""" - target = node.target.accept(self) - value = node.value.accept(self) - return "%s := %s" % (target, value) - - def visit_nonlocal(self, node): - """return an astroid.Nonlocal node as string""" - return "nonlocal %s" % ", ".join(node.names) - - def visit_pass(self, node): - """return an astroid.Pass node as string""" - return "pass" - - def visit_print(self, node): - """return an astroid.Print node as string""" - nodes = ", ".join(n.accept(self) for n in node.values) - if not node.nl: - nodes = "%s," % nodes - if node.dest: - return "print >> %s, %s" % (node.dest.accept(self), nodes) - return "print %s" % nodes - - def visit_raise(self, node): - """return an astroid.Raise node as string""" - if node.exc: - if node.cause: - return "raise %s from %s" % ( - node.exc.accept(self), - node.cause.accept(self), - ) - return "raise %s" % node.exc.accept(self) - return "raise" - - def visit_return(self, node): - """return an astroid.Return node as string""" - if node.is_tuple_return() and len(node.value.elts) > 1: - elts = [child.accept(self) for child in node.value.elts] - return "return %s" % ", ".join(elts) - - if node.value: - return "return %s" % node.value.accept(self) - - return "return" - - def visit_index(self, node): - """return an astroid.Index node as string""" - return node.value.accept(self) - - def visit_set(self, node): - """return an astroid.Set node as string""" - return "{%s}" % ", ".join(child.accept(self) for child in node.elts) - - def visit_setcomp(self, node): - """return an astroid.SetComp node as string""" - return "{%s %s}" % ( - node.elt.accept(self), - " ".join(n.accept(self) for n in node.generators), - ) - - def visit_slice(self, node): - """return an astroid.Slice node as string""" - lower = node.lower.accept(self) if node.lower else "" - upper = node.upper.accept(self) if node.upper else "" - step = node.step.accept(self) if node.step else "" - if step: - return "%s:%s:%s" % (lower, upper, step) - return "%s:%s" % (lower, upper) - - def visit_subscript(self, node): - """return an astroid.Subscript node as string""" - idx = node.slice - if idx.__class__.__name__.lower() == "index": - idx = idx.value - idxstr = idx.accept(self) - if idx.__class__.__name__.lower() == "tuple" and idx.elts: - # Remove parenthesis in tuple and extended slice. - # a[(::1, 1:)] is not valid syntax. - idxstr = idxstr[1:-1] - return "%s[%s]" % (self._precedence_parens(node, node.value), idxstr) - - def visit_tryexcept(self, node): - """return an astroid.TryExcept node as string""" - trys = ["try:\n%s" % self._stmt_list(node.body)] - for handler in node.handlers: - trys.append(handler.accept(self)) - if node.orelse: - trys.append("else:\n%s" % self._stmt_list(node.orelse)) - return "\n".join(trys) - - def visit_tryfinally(self, node): - """return an astroid.TryFinally node as string""" - return "try:\n%s\nfinally:\n%s" % ( - self._stmt_list(node.body), - self._stmt_list(node.finalbody), - ) - - def visit_tuple(self, node): - """return an astroid.Tuple node as string""" - if len(node.elts) == 1: - return "(%s, )" % node.elts[0].accept(self) - return "(%s)" % ", ".join(child.accept(self) for child in node.elts) - - def visit_unaryop(self, node): - """return an astroid.UnaryOp node as string""" - if node.op == "not": - operator = "not " - else: - operator = node.op - return "%s%s" % (operator, self._precedence_parens(node, node.operand)) - - def visit_while(self, node): - """return an astroid.While node as string""" - whiles = "while %s:\n%s" % (node.test.accept(self), self._stmt_list(node.body)) - if node.orelse: - whiles = "%s\nelse:\n%s" % (whiles, self._stmt_list(node.orelse)) - return whiles - - def visit_with(self, node): # 'with' without 'as' is possible - """return an astroid.With node as string""" - items = ", ".join( - ("%s" % expr.accept(self)) + (vars and " as %s" % (vars.accept(self)) or "") - for expr, vars in node.items - ) - return "with %s:\n%s" % (items, self._stmt_list(node.body)) - - def visit_yield(self, node): - """yield an ast.Yield node as string""" - yi_val = (" " + node.value.accept(self)) if node.value else "" - expr = "yield" + yi_val - if node.parent.is_statement: - return expr - - return "(%s)" % (expr,) - - def visit_yieldfrom(self, node): - """ Return an astroid.YieldFrom node as string. """ - yi_val = (" " + node.value.accept(self)) if node.value else "" - expr = "yield from" + yi_val - if node.parent.is_statement: - return expr - - return "(%s)" % (expr,) - - def visit_starred(self, node): - """return Starred node as string""" - return "*" + node.value.accept(self) - - # These aren't for real AST nodes, but for inference objects. - - def visit_frozenset(self, node): - return node.parent.accept(self) - - def visit_super(self, node): - return node.parent.accept(self) - - def visit_uninferable(self, node): - return str(node) - - def visit_property(self, node): - return node.function.accept(self) - - def visit_evaluatedobject(self, node): - return node.original.accept(self) - - -def _import_string(names): - """return a list of (name, asname) formatted as a string""" - _names = [] - for name, asname in names: - if asname is not None: - _names.append("%s as %s" % (name, asname)) - else: - _names.append(name) - return ", ".join(_names) - - -# This sets the default indent to 4 spaces. -to_code = AsStringVisitor(" ") diff --git a/backend/venv/Lib/site-packages/astroid/bases.py b/backend/venv/Lib/site-packages/astroid/bases.py deleted file mode 100644 index 9c743031ddf98ebd63d82f8c7c85a46a9f81a9f0..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/bases.py +++ /dev/null @@ -1,548 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2009-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2012 FELD Boris -# Copyright (c) 2014-2020 Claudiu Popa -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2014 Eevee (Alex Munroe) -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2015 Florian Bruhin -# Copyright (c) 2016-2017 Derek Gustafson -# Copyright (c) 2017 Calen Pennington -# Copyright (c) 2018-2019 hippo91 -# Copyright (c) 2018 Ville Skyttä -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2018 Nick Drozd -# Copyright (c) 2018 Daniel Colascione -# Copyright (c) 2019 Hugo van Kemenade - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""This module contains base classes and functions for the nodes and some -inference utils. -""" - -import builtins -import collections - -from astroid import context as contextmod -from astroid import exceptions -from astroid import util - -objectmodel = util.lazy_import("interpreter.objectmodel") -helpers = util.lazy_import("helpers") -BUILTINS = builtins.__name__ -manager = util.lazy_import("manager") -MANAGER = manager.AstroidManager() - -# TODO: check if needs special treatment -BUILTINS = "builtins" -BOOL_SPECIAL_METHOD = "__bool__" - -PROPERTIES = {BUILTINS + ".property", "abc.abstractproperty"} -# List of possible property names. We use this list in order -# to see if a method is a property or not. This should be -# pretty reliable and fast, the alternative being to check each -# decorator to see if its a real property-like descriptor, which -# can be too complicated. -# Also, these aren't qualified, because each project can -# define them, we shouldn't expect to know every possible -# property-like decorator! -POSSIBLE_PROPERTIES = { - "cached_property", - "cachedproperty", - "lazyproperty", - "lazy_property", - "reify", - "lazyattribute", - "lazy_attribute", - "LazyProperty", - "lazy", - "cache_readonly", -} - - -def _is_property(meth, context=None): - decoratornames = meth.decoratornames(context=context) - if PROPERTIES.intersection(decoratornames): - return True - stripped = { - name.split(".")[-1] for name in decoratornames if name is not util.Uninferable - } - if any(name in stripped for name in POSSIBLE_PROPERTIES): - return True - - # Lookup for subclasses of *property* - if not meth.decorators: - return False - for decorator in meth.decorators.nodes or (): - inferred = helpers.safe_infer(decorator, context=context) - if inferred is None or inferred is util.Uninferable: - continue - if inferred.__class__.__name__ == "ClassDef": - for base_class in inferred.bases: - if base_class.__class__.__name__ != "Name": - continue - module, _ = base_class.lookup(base_class.name) - if module.name == BUILTINS and base_class.name == "property": - return True - - return False - - -class Proxy: - """a simple proxy object - - Note: - - Subclasses of this object will need a custom __getattr__ - if new instance attributes are created. See the Const class - """ - - _proxied = None # proxied object may be set by class or by instance - - def __init__(self, proxied=None): - if proxied is not None: - self._proxied = proxied - - def __getattr__(self, name): - if name == "_proxied": - return getattr(self.__class__, "_proxied") - if name in self.__dict__: - return self.__dict__[name] - return getattr(self._proxied, name) - - def infer(self, context=None): - yield self - - -def _infer_stmts(stmts, context, frame=None): - """Return an iterator on statements inferred by each statement in *stmts*.""" - inferred = False - if context is not None: - name = context.lookupname - context = context.clone() - else: - name = None - context = contextmod.InferenceContext() - - for stmt in stmts: - if stmt is util.Uninferable: - yield stmt - inferred = True - continue - context.lookupname = stmt._infer_name(frame, name) - try: - for inferred in stmt.infer(context=context): - yield inferred - inferred = True - except exceptions.NameInferenceError: - continue - except exceptions.InferenceError: - yield util.Uninferable - inferred = True - if not inferred: - raise exceptions.InferenceError( - "Inference failed for all members of {stmts!r}.", - stmts=stmts, - frame=frame, - context=context, - ) - - -def _infer_method_result_truth(instance, method_name, context): - # Get the method from the instance and try to infer - # its return's truth value. - meth = next(instance.igetattr(method_name, context=context), None) - if meth and hasattr(meth, "infer_call_result"): - if not meth.callable(): - return util.Uninferable - try: - for value in meth.infer_call_result(instance, context=context): - if value is util.Uninferable: - return value - - inferred = next(value.infer(context=context)) - return inferred.bool_value() - except exceptions.InferenceError: - pass - return util.Uninferable - - -class BaseInstance(Proxy): - """An instance base class, which provides lookup methods for potential instances.""" - - special_attributes = None - - def display_type(self): - return "Instance of" - - def getattr(self, name, context=None, lookupclass=True): - try: - values = self._proxied.instance_attr(name, context) - except exceptions.AttributeInferenceError as exc: - if self.special_attributes and name in self.special_attributes: - return [self.special_attributes.lookup(name)] - - if lookupclass: - # Class attributes not available through the instance - # unless they are explicitly defined. - return self._proxied.getattr(name, context, class_context=False) - - raise exceptions.AttributeInferenceError( - target=self, attribute=name, context=context - ) from exc - # since we've no context information, return matching class members as - # well - if lookupclass: - try: - return values + self._proxied.getattr( - name, context, class_context=False - ) - except exceptions.AttributeInferenceError: - pass - return values - - def igetattr(self, name, context=None): - """inferred getattr""" - if not context: - context = contextmod.InferenceContext() - try: - # avoid recursively inferring the same attr on the same class - if context.push((self._proxied, name)): - raise exceptions.InferenceError( - message="Cannot infer the same attribute again", - node=self, - context=context, - ) - - # XXX frame should be self._proxied, or not ? - get_attr = self.getattr(name, context, lookupclass=False) - yield from _infer_stmts( - self._wrap_attr(get_attr, context), context, frame=self - ) - except exceptions.AttributeInferenceError as error: - try: - # fallback to class.igetattr since it has some logic to handle - # descriptors - # But only if the _proxied is the Class. - if self._proxied.__class__.__name__ != "ClassDef": - raise - attrs = self._proxied.igetattr(name, context, class_context=False) - yield from self._wrap_attr(attrs, context) - except exceptions.AttributeInferenceError as error: - raise exceptions.InferenceError(**vars(error)) from error - - def _wrap_attr(self, attrs, context=None): - """wrap bound methods of attrs in a InstanceMethod proxies""" - for attr in attrs: - if isinstance(attr, UnboundMethod): - if _is_property(attr): - yield from attr.infer_call_result(self, context) - else: - yield BoundMethod(attr, self) - elif hasattr(attr, "name") and attr.name == "": - if attr.args.arguments and attr.args.arguments[0].name == "self": - yield BoundMethod(attr, self) - continue - yield attr - else: - yield attr - - def infer_call_result(self, caller, context=None): - """infer what a class instance is returning when called""" - context = contextmod.bind_context_to_node(context, self) - inferred = False - for node in self._proxied.igetattr("__call__", context): - if node is util.Uninferable or not node.callable(): - continue - for res in node.infer_call_result(caller, context): - inferred = True - yield res - if not inferred: - raise exceptions.InferenceError(node=self, caller=caller, context=context) - - -class Instance(BaseInstance): - """A special node representing a class instance.""" - - # pylint: disable=unnecessary-lambda - special_attributes = util.lazy_descriptor(lambda: objectmodel.InstanceModel()) - - def __repr__(self): - return "" % ( - self._proxied.root().name, - self._proxied.name, - id(self), - ) - - def __str__(self): - return "Instance of %s.%s" % (self._proxied.root().name, self._proxied.name) - - def callable(self): - try: - self._proxied.getattr("__call__", class_context=False) - return True - except exceptions.AttributeInferenceError: - return False - - def pytype(self): - return self._proxied.qname() - - def display_type(self): - return "Instance of" - - def bool_value(self, context=None): - """Infer the truth value for an Instance - - The truth value of an instance is determined by these conditions: - - * if it implements __bool__ on Python 3 or __nonzero__ - on Python 2, then its bool value will be determined by - calling this special method and checking its result. - * when this method is not defined, __len__() is called, if it - is defined, and the object is considered true if its result is - nonzero. If a class defines neither __len__() nor __bool__(), - all its instances are considered true. - """ - context = context or contextmod.InferenceContext() - context.callcontext = contextmod.CallContext(args=[]) - context.boundnode = self - - try: - result = _infer_method_result_truth(self, BOOL_SPECIAL_METHOD, context) - except (exceptions.InferenceError, exceptions.AttributeInferenceError): - # Fallback to __len__. - try: - result = _infer_method_result_truth(self, "__len__", context) - except (exceptions.AttributeInferenceError, exceptions.InferenceError): - return True - return result - - # This is set in inference.py. - def getitem(self, index, context=None): - pass - - -class UnboundMethod(Proxy): - """a special node representing a method not bound to an instance""" - - # pylint: disable=unnecessary-lambda - special_attributes = util.lazy_descriptor(lambda: objectmodel.UnboundMethodModel()) - - def __repr__(self): - frame = self._proxied.parent.frame() - return "<%s %s of %s at 0x%s" % ( - self.__class__.__name__, - self._proxied.name, - frame.qname(), - id(self), - ) - - def implicit_parameters(self): - return 0 - - def is_bound(self): - return False - - def getattr(self, name, context=None): - if name in self.special_attributes: - return [self.special_attributes.lookup(name)] - return self._proxied.getattr(name, context) - - def igetattr(self, name, context=None): - if name in self.special_attributes: - return iter((self.special_attributes.lookup(name),)) - return self._proxied.igetattr(name, context) - - def infer_call_result(self, caller, context): - """ - The boundnode of the regular context with a function called - on ``object.__new__`` will be of type ``object``, - which is incorrect for the argument in general. - If no context is given the ``object.__new__`` call argument will - correctly inferred except when inside a call that requires - the additional context (such as a classmethod) of the boundnode - to determine which class the method was called from - """ - - # If we're unbound method __new__ of builtin object, the result is an - # instance of the class given as first argument. - if ( - self._proxied.name == "__new__" - and self._proxied.parent.frame().qname() == "%s.object" % BUILTINS - ): - if caller.args: - node_context = context.extra_context.get(caller.args[0]) - infer = caller.args[0].infer(context=node_context) - else: - infer = [] - return (Instance(x) if x is not util.Uninferable else x for x in infer) - return self._proxied.infer_call_result(caller, context) - - def bool_value(self, context=None): - return True - - -class BoundMethod(UnboundMethod): - """a special node representing a method bound to an instance""" - - # pylint: disable=unnecessary-lambda - special_attributes = util.lazy_descriptor(lambda: objectmodel.BoundMethodModel()) - - def __init__(self, proxy, bound): - UnboundMethod.__init__(self, proxy) - self.bound = bound - - def implicit_parameters(self): - if self.name == "__new__": - # __new__ acts as a classmethod but the class argument is not implicit. - return 0 - return 1 - - def is_bound(self): - return True - - def _infer_type_new_call(self, caller, context): - """Try to infer what type.__new__(mcs, name, bases, attrs) returns. - - In order for such call to be valid, the metaclass needs to be - a subtype of ``type``, the name needs to be a string, the bases - needs to be a tuple of classes - """ - # pylint: disable=import-outside-toplevel; circular import - from astroid import node_classes - - # Verify the metaclass - mcs = next(caller.args[0].infer(context=context)) - if mcs.__class__.__name__ != "ClassDef": - # Not a valid first argument. - return None - if not mcs.is_subtype_of("%s.type" % BUILTINS): - # Not a valid metaclass. - return None - - # Verify the name - name = next(caller.args[1].infer(context=context)) - if name.__class__.__name__ != "Const": - # Not a valid name, needs to be a const. - return None - if not isinstance(name.value, str): - # Needs to be a string. - return None - - # Verify the bases - bases = next(caller.args[2].infer(context=context)) - if bases.__class__.__name__ != "Tuple": - # Needs to be a tuple. - return None - inferred_bases = [next(elt.infer(context=context)) for elt in bases.elts] - if any(base.__class__.__name__ != "ClassDef" for base in inferred_bases): - # All the bases needs to be Classes - return None - - # Verify the attributes. - attrs = next(caller.args[3].infer(context=context)) - if attrs.__class__.__name__ != "Dict": - # Needs to be a dictionary. - return None - cls_locals = collections.defaultdict(list) - for key, value in attrs.items: - key = next(key.infer(context=context)) - value = next(value.infer(context=context)) - # Ignore non string keys - if key.__class__.__name__ == "Const" and isinstance(key.value, str): - cls_locals[key.value].append(value) - - # Build the class from now. - cls = mcs.__class__( - name=name.value, - lineno=caller.lineno, - col_offset=caller.col_offset, - parent=caller, - ) - empty = node_classes.Pass() - cls.postinit( - bases=bases.elts, - body=[empty], - decorators=[], - newstyle=True, - metaclass=mcs, - keywords=[], - ) - cls.locals = cls_locals - return cls - - def infer_call_result(self, caller, context=None): - context = contextmod.bind_context_to_node(context, self.bound) - if ( - self.bound.__class__.__name__ == "ClassDef" - and self.bound.name == "type" - and self.name == "__new__" - and len(caller.args) == 4 - ): - # Check if we have a ``type.__new__(mcs, name, bases, attrs)`` call. - new_cls = self._infer_type_new_call(caller, context) - if new_cls: - return iter((new_cls,)) - - return super().infer_call_result(caller, context) - - def bool_value(self, context=None): - return True - - -class Generator(BaseInstance): - """a special node representing a generator. - - Proxied class is set once for all in raw_building. - """ - - # pylint: disable=unnecessary-lambda - special_attributes = util.lazy_descriptor(lambda: objectmodel.GeneratorModel()) - - # pylint: disable=super-init-not-called - def __init__(self, parent=None): - self.parent = parent - - def callable(self): - return False - - def pytype(self): - return "%s.generator" % BUILTINS - - def display_type(self): - return "Generator" - - def bool_value(self, context=None): - return True - - def __repr__(self): - return "" % ( - self._proxied.name, - self.lineno, - id(self), - ) - - def __str__(self): - return "Generator(%s)" % (self._proxied.name) - - -class AsyncGenerator(Generator): - """Special node representing an async generator""" - - def pytype(self): - return "%s.async_generator" % BUILTINS - - def display_type(self): - return "AsyncGenerator" - - def __repr__(self): - return "" % ( - self._proxied.name, - self.lineno, - id(self), - ) - - def __str__(self): - return "AsyncGenerator(%s)" % (self._proxied.name) diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_argparse.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_argparse.cpython-38.pyc deleted file mode 100644 index bb6b7ba5f2a9ca521c1b91657e28c5df77fe86ab..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_argparse.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_attrs.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_attrs.cpython-38.pyc deleted file mode 100644 index 1b640b897ad21e87c50dcccd8d5240432c8638c5..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_attrs.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_boto3.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_boto3.cpython-38.pyc deleted file mode 100644 index 9fe3c2873fda5d355a1b7ea015d98a5a8874d0e7..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_boto3.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_builtin_inference.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_builtin_inference.cpython-38.pyc deleted file mode 100644 index a495dd4aacf681f754ef951f4097405890c1eb48..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_builtin_inference.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_collections.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_collections.cpython-38.pyc deleted file mode 100644 index 9c001aafedca78f09e22db4d2cd8b91864fc5e89..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_collections.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_crypt.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_crypt.cpython-38.pyc deleted file mode 100644 index 9ab0d5f6cea05a1391d2db09e8a5d1f7c78150b3..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_crypt.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_curses.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_curses.cpython-38.pyc deleted file mode 100644 index ed3d5f22c4c08d873c2abe8022e556ef3d07760a..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_curses.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dataclasses.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dataclasses.cpython-38.pyc deleted file mode 100644 index 0a061c7ab1083e9bd9eedc42f383acaa3552299b..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dataclasses.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dateutil.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dateutil.cpython-38.pyc deleted file mode 100644 index 391ab42c739dbc1c4c878850c455aca55cf9222d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dateutil.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_fstrings.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_fstrings.cpython-38.pyc deleted file mode 100644 index 8fb02909bd86750ba3cd0f1cc491208af31a3591..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_fstrings.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_functools.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_functools.cpython-38.pyc deleted file mode 100644 index e07185b04f3b029e8d311e931ec103a899f1fc08..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_functools.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_gi.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_gi.cpython-38.pyc deleted file mode 100644 index 35d457141ac545497fafb0c57e52cfc19ae7cf4d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_gi.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_hashlib.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_hashlib.cpython-38.pyc deleted file mode 100644 index e662012a5f46c1e3a26f24616d0e2683f9eeea3f..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_hashlib.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_http.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_http.cpython-38.pyc deleted file mode 100644 index cb2a3a37e28a689077f853876bd01c125e792222..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_http.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_io.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_io.cpython-38.pyc deleted file mode 100644 index 749030fd79c623cb9a0f236a6bd362d591796712..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_io.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_mechanize.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_mechanize.cpython-38.pyc deleted file mode 100644 index ccae5cfed4cd04118372e11300a380341d97c409..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_mechanize.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_multiprocessing.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_multiprocessing.cpython-38.pyc deleted file mode 100644 index 47f9621918fec383483410630da254a8f927d623..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_multiprocessing.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_namedtuple_enum.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_namedtuple_enum.cpython-38.pyc deleted file mode 100644 index e79739acb5b6b3e6eced1e43a49d114d883f528c..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_namedtuple_enum.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_nose.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_nose.cpython-38.pyc deleted file mode 100644 index cc28e07b66d9cbea66eb415331fa5eb9bc30cde5..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_nose.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_fromnumeric.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_fromnumeric.cpython-38.pyc deleted file mode 100644 index 7dd536fa1c46abbafffaf0f1d2890ec4c370bce8..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_fromnumeric.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-38.pyc deleted file mode 100644 index ca9cfe090f95d8a57904ccd8ab542d39a29b4f7a..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-38.pyc deleted file mode 100644 index 6cbbb8f369f763c7c674a0acb7628439691a246e..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-38.pyc deleted file mode 100644 index 26a633b3ba13053c7549249efa2ec0f3075349af..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-38.pyc deleted file mode 100644 index ca8c9c10df17d6233f15558dca5f3e522adc4208..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_umath.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_umath.cpython-38.pyc deleted file mode 100644 index 0f35d861aa7306658d179c3cf142e702dc15843b..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_umath.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_ndarray.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_ndarray.cpython-38.pyc deleted file mode 100644 index 088dd26127a0a2c87463243eca15b155f73e49f8..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_ndarray.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-38.pyc deleted file mode 100644 index e4510029352b6a62a068a2639e5423fe8f18644d..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_utils.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_utils.cpython-38.pyc deleted file mode 100644 index 5a063989d109329e8432c55bfd0fd3a3fed0da52..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_utils.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-38.pyc deleted file mode 100644 index 15398b26402137c9ebb5a443251f5426d27695e3..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pytest.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pytest.cpython-38.pyc deleted file mode 100644 index bb6f88d237a8a9249a81a3a39de605e36e50ae1a..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pytest.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_qt.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_qt.cpython-38.pyc deleted file mode 100644 index 3b4b19b2c120794718ed8a37932fbb7df5923cb2..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_qt.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_random.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_random.cpython-38.pyc deleted file mode 100644 index 50b9b42a75473394ac0c2daa84f96708f4691cfd..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_random.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_re.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_re.cpython-38.pyc deleted file mode 100644 index 8709b671efb35146a39478489fda407bb59d1d74..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_re.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_responses.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_responses.cpython-38.pyc deleted file mode 100644 index c7e1240ff87c1584ca3cb978ea9435333186e5ce..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_responses.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-38.pyc deleted file mode 100644 index 81e258a0b7c96d46886f05b71d18bbef84d4f907..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_six.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_six.cpython-38.pyc deleted file mode 100644 index 40cb91a507e50c06181af71873ad882de9e7e82b..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_six.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_ssl.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_ssl.cpython-38.pyc deleted file mode 100644 index f50e4d9f29ff9d492fe9727c8c9a13b592431f29..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_ssl.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-38.pyc deleted file mode 100644 index e4b2b097160cf67cb4a09e9ceb4eef9658e0fdaa..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_threading.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_threading.cpython-38.pyc deleted file mode 100644 index 5b3ae1021bc03edf5c3b368b227e09ad62b299e1..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_threading.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_typing.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_typing.cpython-38.pyc deleted file mode 100644 index ebf0162eafbbe2924e73c717ebad645a35cf2c54..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_typing.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_uuid.cpython-38.pyc b/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_uuid.cpython-38.pyc deleted file mode 100644 index a984a0743933ecc4bb3a7dfa10906382f06f7bc1..0000000000000000000000000000000000000000 Binary files a/backend/venv/Lib/site-packages/astroid/brain/__pycache__/brain_uuid.cpython-38.pyc and /dev/null differ diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_argparse.py b/backend/venv/Lib/site-packages/astroid/brain/brain_argparse.py deleted file mode 100644 index 6a7556f61b81d254aec2b7230eaaa7677198f59c..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_argparse.py +++ /dev/null @@ -1,33 +0,0 @@ -from astroid import MANAGER, arguments, nodes, inference_tip, UseInferenceDefault - - -def infer_namespace(node, context=None): - callsite = arguments.CallSite.from_call(node, context=context) - if not callsite.keyword_arguments: - # Cannot make sense of it. - raise UseInferenceDefault() - - class_node = nodes.ClassDef("Namespace", "docstring") - class_node.parent = node.parent - for attr in set(callsite.keyword_arguments): - fake_node = nodes.EmptyNode() - fake_node.parent = class_node - fake_node.attrname = attr - class_node.instance_attrs[attr] = [fake_node] - return iter((class_node.instantiate_class(),)) - - -def _looks_like_namespace(node): - func = node.func - if isinstance(func, nodes.Attribute): - return ( - func.attrname == "Namespace" - and isinstance(func.expr, nodes.Name) - and func.expr.name == "argparse" - ) - return False - - -MANAGER.register_transform( - nodes.Call, inference_tip(infer_namespace), _looks_like_namespace -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_attrs.py b/backend/venv/Lib/site-packages/astroid/brain/brain_attrs.py deleted file mode 100644 index 670736fe42e05dfc88d82e672dbe78d8a867058d..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_attrs.py +++ /dev/null @@ -1,65 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -""" -Astroid hook for the attrs library - -Without this hook pylint reports unsupported-assignment-operation -for attrs classes -""" - -import astroid -from astroid import MANAGER - - -ATTRIB_NAMES = frozenset(("attr.ib", "attrib", "attr.attrib")) -ATTRS_NAMES = frozenset(("attr.s", "attrs", "attr.attrs", "attr.attributes")) - - -def is_decorated_with_attrs(node, decorator_names=ATTRS_NAMES): - """Return True if a decorated node has - an attr decorator applied.""" - if not node.decorators: - return False - for decorator_attribute in node.decorators.nodes: - if isinstance(decorator_attribute, astroid.Call): # decorator with arguments - decorator_attribute = decorator_attribute.func - if decorator_attribute.as_string() in decorator_names: - return True - return False - - -def attr_attributes_transform(node): - """Given that the ClassNode has an attr decorator, - rewrite class attributes as instance attributes - """ - # Astroid can't infer this attribute properly - # Prevents https://github.com/PyCQA/pylint/issues/1884 - node.locals["__attrs_attrs__"] = [astroid.Unknown(parent=node)] - - for cdefbodynode in node.body: - if not isinstance(cdefbodynode, (astroid.Assign, astroid.AnnAssign)): - continue - if isinstance(cdefbodynode.value, astroid.Call): - if cdefbodynode.value.func.as_string() not in ATTRIB_NAMES: - continue - else: - continue - targets = ( - cdefbodynode.targets - if hasattr(cdefbodynode, "targets") - else [cdefbodynode.target] - ) - for target in targets: - - rhs_node = astroid.Unknown( - lineno=cdefbodynode.lineno, - col_offset=cdefbodynode.col_offset, - parent=cdefbodynode, - ) - node.locals[target.name] = [rhs_node] - node.instance_attrs[target.name] = [rhs_node] - - -MANAGER.register_transform( - astroid.ClassDef, attr_attributes_transform, is_decorated_with_attrs -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_boto3.py b/backend/venv/Lib/site-packages/astroid/brain/brain_boto3.py deleted file mode 100644 index 342ca5719f6be467e3e34114de7613c5931b091d..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_boto3.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for understanding boto3.ServiceRequest()""" -import astroid -from astroid import MANAGER, extract_node - -BOTO_SERVICE_FACTORY_QUALIFIED_NAME = "boto3.resources.base.ServiceResource" - - -def service_request_transform(node): - """Transform ServiceResource to look like dynamic classes""" - code = """ - def __getattr__(self, attr): - return 0 - """ - func_getattr = extract_node(code) - node.locals["__getattr__"] = [func_getattr] - return node - - -def _looks_like_boto3_service_request(node): - return node.qname() == BOTO_SERVICE_FACTORY_QUALIFIED_NAME - - -MANAGER.register_transform( - astroid.ClassDef, service_request_transform, _looks_like_boto3_service_request -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py b/backend/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py deleted file mode 100644 index 4b07ac5c0ba97e936f5b47af4f2b57cb5209c10a..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py +++ /dev/null @@ -1,873 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2014-2020 Claudiu Popa -# Copyright (c) 2014-2015 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2015 Rene Zhang -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2018 Ville Skyttä -# Copyright (c) 2019 Stanislav Levin -# Copyright (c) 2019 David Liu -# Copyright (c) 2019 Bryce Guinta -# Copyright (c) 2019 Frédéric Chapoton - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for various builtins.""" - -from functools import partial -from textwrap import dedent - -import six -from astroid import ( - MANAGER, - UseInferenceDefault, - AttributeInferenceError, - inference_tip, - InferenceError, - NameInferenceError, - AstroidTypeError, - MroError, -) -from astroid import arguments -from astroid.builder import AstroidBuilder -from astroid import helpers -from astroid import nodes -from astroid import objects -from astroid import scoped_nodes -from astroid import util - - -OBJECT_DUNDER_NEW = "object.__new__" - - -def _extend_str(class_node, rvalue): - """function to extend builtin str/unicode class""" - code = dedent( - """ - class whatever(object): - def join(self, iterable): - return {rvalue} - def replace(self, old, new, count=None): - return {rvalue} - def format(self, *args, **kwargs): - return {rvalue} - def encode(self, encoding='ascii', errors=None): - return '' - def decode(self, encoding='ascii', errors=None): - return u'' - def capitalize(self): - return {rvalue} - def title(self): - return {rvalue} - def lower(self): - return {rvalue} - def upper(self): - return {rvalue} - def swapcase(self): - return {rvalue} - def index(self, sub, start=None, end=None): - return 0 - def find(self, sub, start=None, end=None): - return 0 - def count(self, sub, start=None, end=None): - return 0 - def strip(self, chars=None): - return {rvalue} - def lstrip(self, chars=None): - return {rvalue} - def rstrip(self, chars=None): - return {rvalue} - def rjust(self, width, fillchar=None): - return {rvalue} - def center(self, width, fillchar=None): - return {rvalue} - def ljust(self, width, fillchar=None): - return {rvalue} - """ - ) - code = code.format(rvalue=rvalue) - fake = AstroidBuilder(MANAGER).string_build(code)["whatever"] - for method in fake.mymethods(): - method.parent = class_node - method.lineno = None - method.col_offset = None - if "__class__" in method.locals: - method.locals["__class__"] = [class_node] - class_node.locals[method.name] = [method] - method.parent = class_node - - -def _extend_builtins(class_transforms): - builtin_ast = MANAGER.builtins_module - for class_name, transform in class_transforms.items(): - transform(builtin_ast[class_name]) - - -_extend_builtins( - { - "bytes": partial(_extend_str, rvalue="b''"), - "str": partial(_extend_str, rvalue="''"), - } -) - - -def _builtin_filter_predicate(node, builtin_name): - if isinstance(node.func, nodes.Name) and node.func.name == builtin_name: - return True - if isinstance(node.func, nodes.Attribute): - return ( - node.func.attrname == "fromkeys" - and isinstance(node.func.expr, nodes.Name) - and node.func.expr.name == "dict" - ) - return False - - -def register_builtin_transform(transform, builtin_name): - """Register a new transform function for the given *builtin_name*. - - The transform function must accept two parameters, a node and - an optional context. - """ - - def _transform_wrapper(node, context=None): - result = transform(node, context=context) - if result: - if not result.parent: - # Let the transformation function determine - # the parent for its result. Otherwise, - # we set it to be the node we transformed from. - result.parent = node - - if result.lineno is None: - result.lineno = node.lineno - if result.col_offset is None: - result.col_offset = node.col_offset - return iter([result]) - - MANAGER.register_transform( - nodes.Call, - inference_tip(_transform_wrapper), - partial(_builtin_filter_predicate, builtin_name=builtin_name), - ) - - -def _container_generic_inference(node, context, node_type, transform): - args = node.args - if not args: - return node_type() - if len(node.args) > 1: - raise UseInferenceDefault() - - (arg,) = args - transformed = transform(arg) - if not transformed: - try: - inferred = next(arg.infer(context=context)) - except (InferenceError, StopIteration): - raise UseInferenceDefault() - if inferred is util.Uninferable: - raise UseInferenceDefault() - transformed = transform(inferred) - if not transformed or transformed is util.Uninferable: - raise UseInferenceDefault() - return transformed - - -def _container_generic_transform(arg, context, klass, iterables, build_elts): - if isinstance(arg, klass): - return arg - elif isinstance(arg, iterables): - if all(isinstance(elt, nodes.Const) for elt in arg.elts): - elts = [elt.value for elt in arg.elts] - else: - # TODO: Does not handle deduplication for sets. - elts = [] - for element in arg.elts: - inferred = helpers.safe_infer(element, context=context) - if inferred: - evaluated_object = nodes.EvaluatedObject( - original=element, value=inferred - ) - elts.append(evaluated_object) - elif isinstance(arg, nodes.Dict): - # Dicts need to have consts as strings already. - if not all(isinstance(elt[0], nodes.Const) for elt in arg.items): - raise UseInferenceDefault() - elts = [item[0].value for item in arg.items] - elif isinstance(arg, nodes.Const) and isinstance( - arg.value, (six.string_types, six.binary_type) - ): - elts = arg.value - else: - return - return klass.from_elements(elts=build_elts(elts)) - - -def _infer_builtin_container( - node, context, klass=None, iterables=None, build_elts=None -): - transform_func = partial( - _container_generic_transform, - context=context, - klass=klass, - iterables=iterables, - build_elts=build_elts, - ) - - return _container_generic_inference(node, context, klass, transform_func) - - -# pylint: disable=invalid-name -infer_tuple = partial( - _infer_builtin_container, - klass=nodes.Tuple, - iterables=( - nodes.List, - nodes.Set, - objects.FrozenSet, - objects.DictItems, - objects.DictKeys, - objects.DictValues, - ), - build_elts=tuple, -) - -infer_list = partial( - _infer_builtin_container, - klass=nodes.List, - iterables=( - nodes.Tuple, - nodes.Set, - objects.FrozenSet, - objects.DictItems, - objects.DictKeys, - objects.DictValues, - ), - build_elts=list, -) - -infer_set = partial( - _infer_builtin_container, - klass=nodes.Set, - iterables=(nodes.List, nodes.Tuple, objects.FrozenSet, objects.DictKeys), - build_elts=set, -) - -infer_frozenset = partial( - _infer_builtin_container, - klass=objects.FrozenSet, - iterables=(nodes.List, nodes.Tuple, nodes.Set, objects.FrozenSet, objects.DictKeys), - build_elts=frozenset, -) - - -def _get_elts(arg, context): - is_iterable = lambda n: isinstance(n, (nodes.List, nodes.Tuple, nodes.Set)) - try: - inferred = next(arg.infer(context)) - except (InferenceError, NameInferenceError): - raise UseInferenceDefault() - if isinstance(inferred, nodes.Dict): - items = inferred.items - elif is_iterable(inferred): - items = [] - for elt in inferred.elts: - # If an item is not a pair of two items, - # then fallback to the default inference. - # Also, take in consideration only hashable items, - # tuples and consts. We are choosing Names as well. - if not is_iterable(elt): - raise UseInferenceDefault() - if len(elt.elts) != 2: - raise UseInferenceDefault() - if not isinstance(elt.elts[0], (nodes.Tuple, nodes.Const, nodes.Name)): - raise UseInferenceDefault() - items.append(tuple(elt.elts)) - else: - raise UseInferenceDefault() - return items - - -def infer_dict(node, context=None): - """Try to infer a dict call to a Dict node. - - The function treats the following cases: - - * dict() - * dict(mapping) - * dict(iterable) - * dict(iterable, **kwargs) - * dict(mapping, **kwargs) - * dict(**kwargs) - - If a case can't be inferred, we'll fallback to default inference. - """ - call = arguments.CallSite.from_call(node, context=context) - if call.has_invalid_arguments() or call.has_invalid_keywords(): - raise UseInferenceDefault - - args = call.positional_arguments - kwargs = list(call.keyword_arguments.items()) - - if not args and not kwargs: - # dict() - return nodes.Dict() - elif kwargs and not args: - # dict(a=1, b=2, c=4) - items = [(nodes.Const(key), value) for key, value in kwargs] - elif len(args) == 1 and kwargs: - # dict(some_iterable, b=2, c=4) - elts = _get_elts(args[0], context) - keys = [(nodes.Const(key), value) for key, value in kwargs] - items = elts + keys - elif len(args) == 1: - items = _get_elts(args[0], context) - else: - raise UseInferenceDefault() - - value = nodes.Dict( - col_offset=node.col_offset, lineno=node.lineno, parent=node.parent - ) - value.postinit(items) - return value - - -def infer_super(node, context=None): - """Understand super calls. - - There are some restrictions for what can be understood: - - * unbounded super (one argument form) is not understood. - - * if the super call is not inside a function (classmethod or method), - then the default inference will be used. - - * if the super arguments can't be inferred, the default inference - will be used. - """ - if len(node.args) == 1: - # Ignore unbounded super. - raise UseInferenceDefault - - scope = node.scope() - if not isinstance(scope, nodes.FunctionDef): - # Ignore non-method uses of super. - raise UseInferenceDefault - if scope.type not in ("classmethod", "method"): - # Not interested in staticmethods. - raise UseInferenceDefault - - cls = scoped_nodes.get_wrapping_class(scope) - if not len(node.args): - mro_pointer = cls - # In we are in a classmethod, the interpreter will fill - # automatically the class as the second argument, not an instance. - if scope.type == "classmethod": - mro_type = cls - else: - mro_type = cls.instantiate_class() - else: - try: - mro_pointer = next(node.args[0].infer(context=context)) - except InferenceError: - raise UseInferenceDefault - try: - mro_type = next(node.args[1].infer(context=context)) - except InferenceError: - raise UseInferenceDefault - - if mro_pointer is util.Uninferable or mro_type is util.Uninferable: - # No way we could understand this. - raise UseInferenceDefault - - super_obj = objects.Super( - mro_pointer=mro_pointer, mro_type=mro_type, self_class=cls, scope=scope - ) - super_obj.parent = node - return super_obj - - -def _infer_getattr_args(node, context): - if len(node.args) not in (2, 3): - # Not a valid getattr call. - raise UseInferenceDefault - - try: - obj = next(node.args[0].infer(context=context)) - attr = next(node.args[1].infer(context=context)) - except InferenceError: - raise UseInferenceDefault - - if obj is util.Uninferable or attr is util.Uninferable: - # If one of the arguments is something we can't infer, - # then also make the result of the getattr call something - # which is unknown. - return util.Uninferable, util.Uninferable - - is_string = isinstance(attr, nodes.Const) and isinstance( - attr.value, six.string_types - ) - if not is_string: - raise UseInferenceDefault - - return obj, attr.value - - -def infer_getattr(node, context=None): - """Understand getattr calls - - If one of the arguments is an Uninferable object, then the - result will be an Uninferable object. Otherwise, the normal attribute - lookup will be done. - """ - obj, attr = _infer_getattr_args(node, context) - if ( - obj is util.Uninferable - or attr is util.Uninferable - or not hasattr(obj, "igetattr") - ): - return util.Uninferable - - try: - return next(obj.igetattr(attr, context=context)) - except (StopIteration, InferenceError, AttributeInferenceError): - if len(node.args) == 3: - # Try to infer the default and return it instead. - try: - return next(node.args[2].infer(context=context)) - except InferenceError: - raise UseInferenceDefault - - raise UseInferenceDefault - - -def infer_hasattr(node, context=None): - """Understand hasattr calls - - This always guarantees three possible outcomes for calling - hasattr: Const(False) when we are sure that the object - doesn't have the intended attribute, Const(True) when - we know that the object has the attribute and Uninferable - when we are unsure of the outcome of the function call. - """ - try: - obj, attr = _infer_getattr_args(node, context) - if ( - obj is util.Uninferable - or attr is util.Uninferable - or not hasattr(obj, "getattr") - ): - return util.Uninferable - obj.getattr(attr, context=context) - except UseInferenceDefault: - # Can't infer something from this function call. - return util.Uninferable - except AttributeInferenceError: - # Doesn't have it. - return nodes.Const(False) - return nodes.Const(True) - - -def infer_callable(node, context=None): - """Understand callable calls - - This follows Python's semantics, where an object - is callable if it provides an attribute __call__, - even though that attribute is something which can't be - called. - """ - if len(node.args) != 1: - # Invalid callable call. - raise UseInferenceDefault - - argument = node.args[0] - try: - inferred = next(argument.infer(context=context)) - except InferenceError: - return util.Uninferable - if inferred is util.Uninferable: - return util.Uninferable - return nodes.Const(inferred.callable()) - - -def infer_property(node, context=None): - """Understand `property` class - - This only infers the output of `property` - call, not the arguments themselves. - """ - if len(node.args) < 1: - # Invalid property call. - raise UseInferenceDefault - - getter = node.args[0] - try: - inferred = next(getter.infer(context=context)) - except InferenceError: - raise UseInferenceDefault - - if not isinstance(inferred, (nodes.FunctionDef, nodes.Lambda)): - raise UseInferenceDefault - - return objects.Property( - function=inferred, - name=inferred.name, - doc=getattr(inferred, "doc", None), - lineno=node.lineno, - parent=node, - col_offset=node.col_offset, - ) - - -def infer_bool(node, context=None): - """Understand bool calls.""" - if len(node.args) > 1: - # Invalid bool call. - raise UseInferenceDefault - - if not node.args: - return nodes.Const(False) - - argument = node.args[0] - try: - inferred = next(argument.infer(context=context)) - except InferenceError: - return util.Uninferable - if inferred is util.Uninferable: - return util.Uninferable - - bool_value = inferred.bool_value(context=context) - if bool_value is util.Uninferable: - return util.Uninferable - return nodes.Const(bool_value) - - -def infer_type(node, context=None): - """Understand the one-argument form of *type*.""" - if len(node.args) != 1: - raise UseInferenceDefault - - return helpers.object_type(node.args[0], context) - - -def infer_slice(node, context=None): - """Understand `slice` calls.""" - args = node.args - if not 0 < len(args) <= 3: - raise UseInferenceDefault - - infer_func = partial(helpers.safe_infer, context=context) - args = [infer_func(arg) for arg in args] - for arg in args: - if not arg or arg is util.Uninferable: - raise UseInferenceDefault - if not isinstance(arg, nodes.Const): - raise UseInferenceDefault - if not isinstance(arg.value, (type(None), int)): - raise UseInferenceDefault - - if len(args) < 3: - # Make sure we have 3 arguments. - args.extend([None] * (3 - len(args))) - - slice_node = nodes.Slice( - lineno=node.lineno, col_offset=node.col_offset, parent=node.parent - ) - slice_node.postinit(*args) - return slice_node - - -def _infer_object__new__decorator(node, context=None): - # Instantiate class immediately - # since that's what @object.__new__ does - return iter((node.instantiate_class(),)) - - -def _infer_object__new__decorator_check(node): - """Predicate before inference_tip - - Check if the given ClassDef has an @object.__new__ decorator - """ - if not node.decorators: - return False - - for decorator in node.decorators.nodes: - if isinstance(decorator, nodes.Attribute): - if decorator.as_string() == OBJECT_DUNDER_NEW: - return True - return False - - -def infer_issubclass(callnode, context=None): - """Infer issubclass() calls - - :param nodes.Call callnode: an `issubclass` call - :param InferenceContext: the context for the inference - :rtype nodes.Const: Boolean Const value of the `issubclass` call - :raises UseInferenceDefault: If the node cannot be inferred - """ - call = arguments.CallSite.from_call(callnode, context=context) - if call.keyword_arguments: - # issubclass doesn't support keyword arguments - raise UseInferenceDefault("TypeError: issubclass() takes no keyword arguments") - if len(call.positional_arguments) != 2: - raise UseInferenceDefault( - "Expected two arguments, got {count}".format( - count=len(call.positional_arguments) - ) - ) - # The left hand argument is the obj to be checked - obj_node, class_or_tuple_node = call.positional_arguments - - try: - obj_type = next(obj_node.infer(context=context)) - except InferenceError as exc: - raise UseInferenceDefault from exc - if not isinstance(obj_type, nodes.ClassDef): - raise UseInferenceDefault("TypeError: arg 1 must be class") - - # The right hand argument is the class(es) that the given - # object is to be checked against. - try: - class_container = _class_or_tuple_to_container( - class_or_tuple_node, context=context - ) - except InferenceError as exc: - raise UseInferenceDefault from exc - try: - issubclass_bool = helpers.object_issubclass(obj_type, class_container, context) - except AstroidTypeError as exc: - raise UseInferenceDefault("TypeError: " + str(exc)) from exc - except MroError as exc: - raise UseInferenceDefault from exc - return nodes.Const(issubclass_bool) - - -def infer_isinstance(callnode, context=None): - """Infer isinstance calls - - :param nodes.Call callnode: an isinstance call - :param InferenceContext: context for call - (currently unused but is a common interface for inference) - :rtype nodes.Const: Boolean Const value of isinstance call - - :raises UseInferenceDefault: If the node cannot be inferred - """ - call = arguments.CallSite.from_call(callnode, context=context) - if call.keyword_arguments: - # isinstance doesn't support keyword arguments - raise UseInferenceDefault("TypeError: isinstance() takes no keyword arguments") - if len(call.positional_arguments) != 2: - raise UseInferenceDefault( - "Expected two arguments, got {count}".format( - count=len(call.positional_arguments) - ) - ) - # The left hand argument is the obj to be checked - obj_node, class_or_tuple_node = call.positional_arguments - # The right hand argument is the class(es) that the given - # obj is to be check is an instance of - try: - class_container = _class_or_tuple_to_container( - class_or_tuple_node, context=context - ) - except InferenceError: - raise UseInferenceDefault - try: - isinstance_bool = helpers.object_isinstance(obj_node, class_container, context) - except AstroidTypeError as exc: - raise UseInferenceDefault("TypeError: " + str(exc)) - except MroError as exc: - raise UseInferenceDefault from exc - if isinstance_bool is util.Uninferable: - raise UseInferenceDefault - return nodes.Const(isinstance_bool) - - -def _class_or_tuple_to_container(node, context=None): - # Move inferences results into container - # to simplify later logic - # raises InferenceError if any of the inferences fall through - node_infer = next(node.infer(context=context)) - # arg2 MUST be a type or a TUPLE of types - # for isinstance - if isinstance(node_infer, nodes.Tuple): - class_container = [ - next(node.infer(context=context)) for node in node_infer.elts - ] - class_container = [ - klass_node for klass_node in class_container if klass_node is not None - ] - else: - class_container = [node_infer] - return class_container - - -def infer_len(node, context=None): - """Infer length calls - - :param nodes.Call node: len call to infer - :param context.InferenceContext: node context - :rtype nodes.Const: a Const node with the inferred length, if possible - """ - call = arguments.CallSite.from_call(node, context=context) - if call.keyword_arguments: - raise UseInferenceDefault("TypeError: len() must take no keyword arguments") - if len(call.positional_arguments) != 1: - raise UseInferenceDefault( - "TypeError: len() must take exactly one argument " - "({len}) given".format(len=len(call.positional_arguments)) - ) - [argument_node] = call.positional_arguments - try: - return nodes.Const(helpers.object_len(argument_node, context=context)) - except (AstroidTypeError, InferenceError) as exc: - raise UseInferenceDefault(str(exc)) from exc - - -def infer_str(node, context=None): - """Infer str() calls - - :param nodes.Call node: str() call to infer - :param context.InferenceContext: node context - :rtype nodes.Const: a Const containing an empty string - """ - call = arguments.CallSite.from_call(node, context=context) - if call.keyword_arguments: - raise UseInferenceDefault("TypeError: str() must take no keyword arguments") - try: - return nodes.Const("") - except (AstroidTypeError, InferenceError) as exc: - raise UseInferenceDefault(str(exc)) from exc - - -def infer_int(node, context=None): - """Infer int() calls - - :param nodes.Call node: int() call to infer - :param context.InferenceContext: node context - :rtype nodes.Const: a Const containing the integer value of the int() call - """ - call = arguments.CallSite.from_call(node, context=context) - if call.keyword_arguments: - raise UseInferenceDefault("TypeError: int() must take no keyword arguments") - - if call.positional_arguments: - try: - first_value = next(call.positional_arguments[0].infer(context=context)) - except (InferenceError, StopIteration) as exc: - raise UseInferenceDefault(str(exc)) from exc - - if first_value is util.Uninferable: - raise UseInferenceDefault - - if isinstance(first_value, nodes.Const) and isinstance( - first_value.value, (int, str) - ): - try: - actual_value = int(first_value.value) - except ValueError: - return nodes.Const(0) - return nodes.Const(actual_value) - - return nodes.Const(0) - - -def infer_dict_fromkeys(node, context=None): - """Infer dict.fromkeys - - :param nodes.Call node: dict.fromkeys() call to infer - :param context.InferenceContext: node context - :rtype nodes.Dict: - a Dictionary containing the values that astroid was able to infer. - In case the inference failed for any reason, an empty dictionary - will be inferred instead. - """ - - def _build_dict_with_elements(elements): - new_node = nodes.Dict( - col_offset=node.col_offset, lineno=node.lineno, parent=node.parent - ) - new_node.postinit(elements) - return new_node - - call = arguments.CallSite.from_call(node, context=context) - if call.keyword_arguments: - raise UseInferenceDefault("TypeError: int() must take no keyword arguments") - if len(call.positional_arguments) not in {1, 2}: - raise UseInferenceDefault( - "TypeError: Needs between 1 and 2 positional arguments" - ) - - default = nodes.Const(None) - values = call.positional_arguments[0] - try: - inferred_values = next(values.infer(context=context)) - except InferenceError: - return _build_dict_with_elements([]) - if inferred_values is util.Uninferable: - return _build_dict_with_elements([]) - - # Limit to a couple of potential values, as this can become pretty complicated - accepted_iterable_elements = (nodes.Const,) - if isinstance(inferred_values, (nodes.List, nodes.Set, nodes.Tuple)): - elements = inferred_values.elts - for element in elements: - if not isinstance(element, accepted_iterable_elements): - # Fallback to an empty dict - return _build_dict_with_elements([]) - - elements_with_value = [(element, default) for element in elements] - return _build_dict_with_elements(elements_with_value) - - elif isinstance(inferred_values, nodes.Const) and isinstance( - inferred_values.value, (str, bytes) - ): - elements = [ - (nodes.Const(element), default) for element in inferred_values.value - ] - return _build_dict_with_elements(elements) - elif isinstance(inferred_values, nodes.Dict): - keys = inferred_values.itered() - for key in keys: - if not isinstance(key, accepted_iterable_elements): - # Fallback to an empty dict - return _build_dict_with_elements([]) - - elements_with_value = [(element, default) for element in keys] - return _build_dict_with_elements(elements_with_value) - - # Fallback to an empty dictionary - return _build_dict_with_elements([]) - - -# Builtins inference -register_builtin_transform(infer_bool, "bool") -register_builtin_transform(infer_super, "super") -register_builtin_transform(infer_callable, "callable") -register_builtin_transform(infer_property, "property") -register_builtin_transform(infer_getattr, "getattr") -register_builtin_transform(infer_hasattr, "hasattr") -register_builtin_transform(infer_tuple, "tuple") -register_builtin_transform(infer_set, "set") -register_builtin_transform(infer_list, "list") -register_builtin_transform(infer_dict, "dict") -register_builtin_transform(infer_frozenset, "frozenset") -register_builtin_transform(infer_type, "type") -register_builtin_transform(infer_slice, "slice") -register_builtin_transform(infer_isinstance, "isinstance") -register_builtin_transform(infer_issubclass, "issubclass") -register_builtin_transform(infer_len, "len") -register_builtin_transform(infer_str, "str") -register_builtin_transform(infer_int, "int") -register_builtin_transform(infer_dict_fromkeys, "dict.fromkeys") - - -# Infer object.__new__ calls -MANAGER.register_transform( - nodes.ClassDef, - inference_tip(_infer_object__new__decorator), - _infer_object__new__decorator_check, -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_collections.py b/backend/venv/Lib/site-packages/astroid/brain/brain_collections.py deleted file mode 100644 index 669c6ca41d317c8efe1c9bdc4ded9dbfc31b8a3b..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_collections.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2016, 2018 Claudiu Popa -# Copyright (c) 2016-2017 Łukasz Rogalski -# Copyright (c) 2017 Derek Gustafson -# Copyright (c) 2018 Ioana Tagirta -# Copyright (c) 2019 Hugo van Kemenade - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import sys - -import astroid - - -def _collections_transform(): - return astroid.parse( - """ - class defaultdict(dict): - default_factory = None - def __missing__(self, key): pass - def __getitem__(self, key): return default_factory - - """ - + _deque_mock() - + _ordered_dict_mock() - ) - - -def _deque_mock(): - base_deque_class = """ - class deque(object): - maxlen = 0 - def __init__(self, iterable=None, maxlen=None): - self.iterable = iterable or [] - def append(self, x): pass - def appendleft(self, x): pass - def clear(self): pass - def count(self, x): return 0 - def extend(self, iterable): pass - def extendleft(self, iterable): pass - def pop(self): return self.iterable[0] - def popleft(self): return self.iterable[0] - def remove(self, value): pass - def reverse(self): return reversed(self.iterable) - def rotate(self, n=1): return self - def __iter__(self): return self - def __reversed__(self): return self.iterable[::-1] - def __getitem__(self, index): return self.iterable[index] - def __setitem__(self, index, value): pass - def __delitem__(self, index): pass - def __bool__(self): return bool(self.iterable) - def __nonzero__(self): return bool(self.iterable) - def __contains__(self, o): return o in self.iterable - def __len__(self): return len(self.iterable) - def __copy__(self): return deque(self.iterable) - def copy(self): return deque(self.iterable) - def index(self, x, start=0, end=0): return 0 - def insert(self, x, i): pass - def __add__(self, other): pass - def __iadd__(self, other): pass - def __mul__(self, other): pass - def __imul__(self, other): pass - def __rmul__(self, other): pass""" - return base_deque_class - - -def _ordered_dict_mock(): - base_ordered_dict_class = """ - class OrderedDict(dict): - def __reversed__(self): return self[::-1] - def move_to_end(self, key, last=False): pass""" - return base_ordered_dict_class - - -astroid.register_module_extender(astroid.MANAGER, "collections", _collections_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_crypt.py b/backend/venv/Lib/site-packages/astroid/brain/brain_crypt.py deleted file mode 100644 index 491ee23c61a99c2ffcc87d8ef8285eeb7ab2b66c..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_crypt.py +++ /dev/null @@ -1,26 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import sys -import astroid - -PY37 = sys.version_info >= (3, 7) - -if PY37: - # Since Python 3.7 Hashing Methods are added - # dynamically to globals() - - def _re_transform(): - return astroid.parse( - """ - from collections import namedtuple - _Method = namedtuple('_Method', 'name ident salt_chars total_size') - - METHOD_SHA512 = _Method('SHA512', '6', 16, 106) - METHOD_SHA256 = _Method('SHA256', '5', 16, 63) - METHOD_BLOWFISH = _Method('BLOWFISH', 2, 'b', 22) - METHOD_MD5 = _Method('MD5', '1', 8, 34) - METHOD_CRYPT = _Method('CRYPT', None, 2, 13) - """ - ) - - astroid.register_module_extender(astroid.MANAGER, "crypt", _re_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_curses.py b/backend/venv/Lib/site-packages/astroid/brain/brain_curses.py deleted file mode 100644 index 68e88b90a00f0db6f89bf7705cbfd86495eef691..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_curses.py +++ /dev/null @@ -1,179 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import astroid - - -def _curses_transform(): - return astroid.parse( - """ - A_ALTCHARSET = 1 - A_BLINK = 1 - A_BOLD = 1 - A_DIM = 1 - A_INVIS = 1 - A_ITALIC = 1 - A_NORMAL = 1 - A_PROTECT = 1 - A_REVERSE = 1 - A_STANDOUT = 1 - A_UNDERLINE = 1 - A_HORIZONTAL = 1 - A_LEFT = 1 - A_LOW = 1 - A_RIGHT = 1 - A_TOP = 1 - A_VERTICAL = 1 - A_CHARTEXT = 1 - A_ATTRIBUTES = 1 - A_CHARTEXT = 1 - A_COLOR = 1 - KEY_MIN = 1 - KEY_BREAK = 1 - KEY_DOWN = 1 - KEY_UP = 1 - KEY_LEFT = 1 - KEY_RIGHT = 1 - KEY_HOME = 1 - KEY_BACKSPACE = 1 - KEY_F0 = 1 - KEY_Fn = 1 - KEY_DL = 1 - KEY_IL = 1 - KEY_DC = 1 - KEY_IC = 1 - KEY_EIC = 1 - KEY_CLEAR = 1 - KEY_EOS = 1 - KEY_EOL = 1 - KEY_SF = 1 - KEY_SR = 1 - KEY_NPAGE = 1 - KEY_PPAGE = 1 - KEY_STAB = 1 - KEY_CTAB = 1 - KEY_CATAB = 1 - KEY_ENTER = 1 - KEY_SRESET = 1 - KEY_RESET = 1 - KEY_PRINT = 1 - KEY_LL = 1 - KEY_A1 = 1 - KEY_A3 = 1 - KEY_B2 = 1 - KEY_C1 = 1 - KEY_C3 = 1 - KEY_BTAB = 1 - KEY_BEG = 1 - KEY_CANCEL = 1 - KEY_CLOSE = 1 - KEY_COMMAND = 1 - KEY_COPY = 1 - KEY_CREATE = 1 - KEY_END = 1 - KEY_EXIT = 1 - KEY_FIND = 1 - KEY_HELP = 1 - KEY_MARK = 1 - KEY_MESSAGE = 1 - KEY_MOVE = 1 - KEY_NEXT = 1 - KEY_OPEN = 1 - KEY_OPTIONS = 1 - KEY_PREVIOUS = 1 - KEY_REDO = 1 - KEY_REFERENCE = 1 - KEY_REFRESH = 1 - KEY_REPLACE = 1 - KEY_RESTART = 1 - KEY_RESUME = 1 - KEY_SAVE = 1 - KEY_SBEG = 1 - KEY_SCANCEL = 1 - KEY_SCOMMAND = 1 - KEY_SCOPY = 1 - KEY_SCREATE = 1 - KEY_SDC = 1 - KEY_SDL = 1 - KEY_SELECT = 1 - KEY_SEND = 1 - KEY_SEOL = 1 - KEY_SEXIT = 1 - KEY_SFIND = 1 - KEY_SHELP = 1 - KEY_SHOME = 1 - KEY_SIC = 1 - KEY_SLEFT = 1 - KEY_SMESSAGE = 1 - KEY_SMOVE = 1 - KEY_SNEXT = 1 - KEY_SOPTIONS = 1 - KEY_SPREVIOUS = 1 - KEY_SPRINT = 1 - KEY_SREDO = 1 - KEY_SREPLACE = 1 - KEY_SRIGHT = 1 - KEY_SRSUME = 1 - KEY_SSAVE = 1 - KEY_SSUSPEND = 1 - KEY_SUNDO = 1 - KEY_SUSPEND = 1 - KEY_UNDO = 1 - KEY_MOUSE = 1 - KEY_RESIZE = 1 - KEY_MAX = 1 - ACS_BBSS = 1 - ACS_BLOCK = 1 - ACS_BOARD = 1 - ACS_BSBS = 1 - ACS_BSSB = 1 - ACS_BSSS = 1 - ACS_BTEE = 1 - ACS_BULLET = 1 - ACS_CKBOARD = 1 - ACS_DARROW = 1 - ACS_DEGREE = 1 - ACS_DIAMOND = 1 - ACS_GEQUAL = 1 - ACS_HLINE = 1 - ACS_LANTERN = 1 - ACS_LARROW = 1 - ACS_LEQUAL = 1 - ACS_LLCORNER = 1 - ACS_LRCORNER = 1 - ACS_LTEE = 1 - ACS_NEQUAL = 1 - ACS_PI = 1 - ACS_PLMINUS = 1 - ACS_PLUS = 1 - ACS_RARROW = 1 - ACS_RTEE = 1 - ACS_S1 = 1 - ACS_S3 = 1 - ACS_S7 = 1 - ACS_S9 = 1 - ACS_SBBS = 1 - ACS_SBSB = 1 - ACS_SBSS = 1 - ACS_SSBB = 1 - ACS_SSBS = 1 - ACS_SSSB = 1 - ACS_SSSS = 1 - ACS_STERLING = 1 - ACS_TTEE = 1 - ACS_UARROW = 1 - ACS_ULCORNER = 1 - ACS_URCORNER = 1 - ACS_VLINE = 1 - COLOR_BLACK = 1 - COLOR_BLUE = 1 - COLOR_CYAN = 1 - COLOR_GREEN = 1 - COLOR_MAGENTA = 1 - COLOR_RED = 1 - COLOR_WHITE = 1 - COLOR_YELLOW = 1 - """ - ) - - -astroid.register_module_extender(astroid.MANAGER, "curses", _curses_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py b/backend/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py deleted file mode 100644 index 7a25e0c6361dc7cff277ae291b4fc29ac3fd6473..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py +++ /dev/null @@ -1,50 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -""" -Astroid hook for the dataclasses library -""" - -import astroid -from astroid import MANAGER - - -DATACLASSES_DECORATORS = frozenset(("dataclasses.dataclass", "dataclass")) - - -def is_decorated_with_dataclass(node, decorator_names=DATACLASSES_DECORATORS): - """Return True if a decorated node has a `dataclass` decorator applied.""" - if not node.decorators: - return False - for decorator_attribute in node.decorators.nodes: - if isinstance(decorator_attribute, astroid.Call): # decorator with arguments - decorator_attribute = decorator_attribute.func - if decorator_attribute.as_string() in decorator_names: - return True - return False - - -def dataclass_transform(node): - """Rewrite a dataclass to be easily understood by pylint""" - - for assign_node in node.body: - if not isinstance(assign_node, (astroid.AnnAssign, astroid.Assign)): - continue - - targets = ( - assign_node.targets - if hasattr(assign_node, "targets") - else [assign_node.target] - ) - for target in targets: - rhs_node = astroid.Unknown( - lineno=assign_node.lineno, - col_offset=assign_node.col_offset, - parent=assign_node, - ) - node.instance_attrs[target.name] = [rhs_node] - node.locals[target.name] = [rhs_node] - - -MANAGER.register_transform( - astroid.ClassDef, dataclass_transform, is_decorated_with_dataclass -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_dateutil.py b/backend/venv/Lib/site-packages/astroid/brain/brain_dateutil.py deleted file mode 100644 index 9fdb9fde008568a6d18af1efd29246e539cf7675..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_dateutil.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2015 raylu -# Copyright (c) 2016 Ceridwen - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for dateutil""" - -import textwrap - -from astroid import MANAGER, register_module_extender -from astroid.builder import AstroidBuilder - - -def dateutil_transform(): - return AstroidBuilder(MANAGER).string_build( - textwrap.dedent( - """ - import datetime - def parse(timestr, parserinfo=None, **kwargs): - return datetime.datetime() - """ - ) - ) - - -register_module_extender(MANAGER, "dateutil.parser", dateutil_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_fstrings.py b/backend/venv/Lib/site-packages/astroid/brain/brain_fstrings.py deleted file mode 100644 index 298d58afa95e25f171fadfd4a2c9cfbf5ced9991..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_fstrings.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) 2017-2018 Claudiu Popa - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import collections -import sys - -import astroid - - -def _clone_node_with_lineno(node, parent, lineno): - cls = node.__class__ - other_fields = node._other_fields - _astroid_fields = node._astroid_fields - init_params = {"lineno": lineno, "col_offset": node.col_offset, "parent": parent} - postinit_params = {param: getattr(node, param) for param in _astroid_fields} - if other_fields: - init_params.update({param: getattr(node, param) for param in other_fields}) - new_node = cls(**init_params) - if hasattr(node, "postinit") and _astroid_fields: - for param, child in postinit_params.items(): - if child and not isinstance(child, collections.Sequence): - cloned_child = _clone_node_with_lineno( - node=child, lineno=new_node.lineno, parent=new_node - ) - postinit_params[param] = cloned_child - new_node.postinit(**postinit_params) - return new_node - - -def _transform_formatted_value(node): - if node.value and node.value.lineno == 1: - if node.lineno != node.value.lineno: - new_node = astroid.FormattedValue( - lineno=node.lineno, col_offset=node.col_offset, parent=node.parent - ) - new_value = _clone_node_with_lineno( - node=node.value, lineno=node.lineno, parent=new_node - ) - new_node.postinit(value=new_value, format_spec=node.format_spec) - return new_node - - -if sys.version_info[:2] >= (3, 6): - # TODO: this fix tries to *patch* http://bugs.python.org/issue29051 - # The problem is that FormattedValue.value, which is a Name node, - # has wrong line numbers, usually 1. This creates problems for pylint, - # which expects correct line numbers for things such as message control. - astroid.MANAGER.register_transform( - astroid.FormattedValue, _transform_formatted_value - ) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_functools.py b/backend/venv/Lib/site-packages/astroid/brain/brain_functools.py deleted file mode 100644 index d6c60691d741ff83513192908a72d6d645f0690c..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_functools.py +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright (c) 2016, 2018-2020 Claudiu Popa -# Copyright (c) 2018 hippo91 -# Copyright (c) 2018 Bryce Guinta - -"""Astroid hooks for understanding functools library module.""" -from functools import partial -from itertools import chain - -import astroid -from astroid import arguments -from astroid import BoundMethod -from astroid import extract_node -from astroid import helpers -from astroid.interpreter import objectmodel -from astroid import MANAGER -from astroid import objects - - -LRU_CACHE = "functools.lru_cache" - - -class LruWrappedModel(objectmodel.FunctionModel): - """Special attribute model for functions decorated with functools.lru_cache. - - The said decorators patches at decoration time some functions onto - the decorated function. - """ - - @property - def attr___wrapped__(self): - return self._instance - - @property - def attr_cache_info(self): - cache_info = extract_node( - """ - from functools import _CacheInfo - _CacheInfo(0, 0, 0, 0) - """ - ) - - class CacheInfoBoundMethod(BoundMethod): - def infer_call_result(self, caller, context=None): - yield helpers.safe_infer(cache_info) - - return CacheInfoBoundMethod(proxy=self._instance, bound=self._instance) - - @property - def attr_cache_clear(self): - node = extract_node("""def cache_clear(self): pass""") - return BoundMethod(proxy=node, bound=self._instance.parent.scope()) - - -def _transform_lru_cache(node, context=None): - # TODO: this is not ideal, since the node should be immutable, - # but due to https://github.com/PyCQA/astroid/issues/354, - # there's not much we can do now. - # Replacing the node would work partially, because, - # in pylint, the old node would still be available, leading - # to spurious false positives. - node.special_attributes = LruWrappedModel()(node) - return - - -def _functools_partial_inference(node, context=None): - call = arguments.CallSite.from_call(node, context=context) - number_of_positional = len(call.positional_arguments) - if number_of_positional < 1: - raise astroid.UseInferenceDefault( - "functools.partial takes at least one argument" - ) - if number_of_positional == 1 and not call.keyword_arguments: - raise astroid.UseInferenceDefault( - "functools.partial needs at least to have some filled arguments" - ) - - partial_function = call.positional_arguments[0] - try: - inferred_wrapped_function = next(partial_function.infer(context=context)) - except astroid.InferenceError as exc: - raise astroid.UseInferenceDefault from exc - if inferred_wrapped_function is astroid.Uninferable: - raise astroid.UseInferenceDefault("Cannot infer the wrapped function") - if not isinstance(inferred_wrapped_function, astroid.FunctionDef): - raise astroid.UseInferenceDefault("The wrapped function is not a function") - - # Determine if the passed keywords into the callsite are supported - # by the wrapped function. - function_parameters = chain( - inferred_wrapped_function.args.args or (), - inferred_wrapped_function.args.posonlyargs or (), - inferred_wrapped_function.args.kwonlyargs or (), - ) - parameter_names = set( - param.name - for param in function_parameters - if isinstance(param, astroid.AssignName) - ) - if set(call.keyword_arguments) - parameter_names: - raise astroid.UseInferenceDefault( - "wrapped function received unknown parameters" - ) - - partial_function = objects.PartialFunction( - call, - name=inferred_wrapped_function.name, - doc=inferred_wrapped_function.doc, - lineno=inferred_wrapped_function.lineno, - col_offset=inferred_wrapped_function.col_offset, - parent=inferred_wrapped_function.parent, - ) - partial_function.postinit( - args=inferred_wrapped_function.args, - body=inferred_wrapped_function.body, - decorators=inferred_wrapped_function.decorators, - returns=inferred_wrapped_function.returns, - type_comment_returns=inferred_wrapped_function.type_comment_returns, - type_comment_args=inferred_wrapped_function.type_comment_args, - ) - return iter((partial_function,)) - - -def _looks_like_lru_cache(node): - """Check if the given function node is decorated with lru_cache.""" - if not node.decorators: - return False - for decorator in node.decorators.nodes: - if not isinstance(decorator, astroid.Call): - continue - if _looks_like_functools_member(decorator, "lru_cache"): - return True - return False - - -def _looks_like_functools_member(node, member): - """Check if the given Call node is a functools.partial call""" - if isinstance(node.func, astroid.Name): - return node.func.name == member - elif isinstance(node.func, astroid.Attribute): - return ( - node.func.attrname == member - and isinstance(node.func.expr, astroid.Name) - and node.func.expr.name == "functools" - ) - - -_looks_like_partial = partial(_looks_like_functools_member, member="partial") - - -MANAGER.register_transform( - astroid.FunctionDef, _transform_lru_cache, _looks_like_lru_cache -) - - -MANAGER.register_transform( - astroid.Call, - astroid.inference_tip(_functools_partial_inference), - _looks_like_partial, -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_gi.py b/backend/venv/Lib/site-packages/astroid/brain/brain_gi.py deleted file mode 100644 index e49f3a22ed4058ad46b29dd13fdc03cdef36bcd4..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_gi.py +++ /dev/null @@ -1,253 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2013-2014 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2014 Cole Robinson -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2015 David Shea -# Copyright (c) 2016 Jakub Wilk -# Copyright (c) 2016 Giuseppe Scrivano -# Copyright (c) 2018 Christoph Reiter -# Copyright (c) 2019 Philipp Hörist - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for the Python 2 GObject introspection bindings. - -Helps with understanding everything imported from 'gi.repository' -""" - -import inspect -import itertools -import sys -import re -import warnings - -from astroid import MANAGER, AstroidBuildingError, nodes -from astroid.builder import AstroidBuilder - - -_inspected_modules = {} - -_identifier_re = r"^[A-Za-z_]\w*$" - -_special_methods = frozenset( - { - "__lt__", - "__le__", - "__eq__", - "__ne__", - "__ge__", - "__gt__", - "__iter__", - "__getitem__", - "__setitem__", - "__delitem__", - "__len__", - "__bool__", - "__nonzero__", - "__next__", - "__str__", - "__len__", - "__contains__", - "__enter__", - "__exit__", - "__repr__", - "__getattr__", - "__setattr__", - "__delattr__", - "__del__", - "__hash__", - } -) - - -def _gi_build_stub(parent): - """ - Inspect the passed module recursively and build stubs for functions, - classes, etc. - """ - classes = {} - functions = {} - constants = {} - methods = {} - for name in dir(parent): - if name.startswith("__") and name not in _special_methods: - continue - - # Check if this is a valid name in python - if not re.match(_identifier_re, name): - continue - - try: - obj = getattr(parent, name) - except: - continue - - if inspect.isclass(obj): - classes[name] = obj - elif inspect.isfunction(obj) or inspect.isbuiltin(obj): - functions[name] = obj - elif inspect.ismethod(obj) or inspect.ismethoddescriptor(obj): - methods[name] = obj - elif ( - str(obj).startswith(", ) - # Only accept function calls with two constant arguments - if len(node.args) != 2: - return False - - if not all(isinstance(arg, nodes.Const) for arg in node.args): - return False - - func = node.func - if isinstance(func, nodes.Attribute): - if func.attrname != "require_version": - return False - if isinstance(func.expr, nodes.Name) and func.expr.name == "gi": - return True - - return False - - if isinstance(func, nodes.Name): - return func.name == "require_version" - - return False - - -def _register_require_version(node): - # Load the gi.require_version locally - try: - import gi - - gi.require_version(node.args[0].value, node.args[1].value) - except Exception: - pass - - return node - - -MANAGER.register_failed_import_hook(_import_gi_module) -MANAGER.register_transform( - nodes.Call, _register_require_version, _looks_like_require_version -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_hashlib.py b/backend/venv/Lib/site-packages/astroid/brain/brain_hashlib.py deleted file mode 100644 index eb34e1590bcbc0637a9177b3dd105c8b39106c37..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_hashlib.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (c) 2016, 2018 Claudiu Popa -# Copyright (c) 2018 David Poirier -# Copyright (c) 2018 wgehalo -# Copyright (c) 2018 Ioana Tagirta - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import sys - -import six - -import astroid - -PY36 = sys.version_info >= (3, 6) - - -def _hashlib_transform(): - signature = "value=''" - template = """ - class %(name)s(object): - def __init__(self, %(signature)s): pass - def digest(self): - return %(digest)s - def copy(self): - return self - def update(self, value): pass - def hexdigest(self): - return '' - @property - def name(self): - return %(name)r - @property - def block_size(self): - return 1 - @property - def digest_size(self): - return 1 - """ - algorithms_with_signature = dict.fromkeys( - ["md5", "sha1", "sha224", "sha256", "sha384", "sha512"], signature - ) - if PY36: - blake2b_signature = "data=b'', *, digest_size=64, key=b'', salt=b'', \ - person=b'', fanout=1, depth=1, leaf_size=0, node_offset=0, \ - node_depth=0, inner_size=0, last_node=False" - blake2s_signature = "data=b'', *, digest_size=32, key=b'', salt=b'', \ - person=b'', fanout=1, depth=1, leaf_size=0, node_offset=0, \ - node_depth=0, inner_size=0, last_node=False" - new_algorithms = dict.fromkeys( - ["sha3_224", "sha3_256", "sha3_384", "sha3_512", "shake_128", "shake_256"], - signature, - ) - algorithms_with_signature.update(new_algorithms) - algorithms_with_signature.update( - {"blake2b": blake2b_signature, "blake2s": blake2s_signature} - ) - classes = "".join( - template - % { - "name": hashfunc, - "digest": 'b""' if six.PY3 else '""', - "signature": signature, - } - for hashfunc, signature in algorithms_with_signature.items() - ) - return astroid.parse(classes) - - -astroid.register_module_extender(astroid.MANAGER, "hashlib", _hashlib_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_http.py b/backend/venv/Lib/site-packages/astroid/brain/brain_http.py deleted file mode 100644 index b16464e8e59868cdf95222f45127934e238ebe10..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_http.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) 2018-2019 Claudiu Popa - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid brain hints for some of the `http` module.""" -import textwrap - -import astroid -from astroid.builder import AstroidBuilder - - -def _http_transform(): - code = textwrap.dedent( - """ - from collections import namedtuple - _HTTPStatus = namedtuple('_HTTPStatus', 'value phrase description') - - class HTTPStatus: - - @property - def phrase(self): - return "" - @property - def value(self): - return 0 - @property - def description(self): - return "" - - # informational - CONTINUE = _HTTPStatus(100, 'Continue', 'Request received, please continue') - SWITCHING_PROTOCOLS = _HTTPStatus(101, 'Switching Protocols', - 'Switching to new protocol; obey Upgrade header') - PROCESSING = _HTTPStatus(102, 'Processing', '') - OK = _HTTPStatus(200, 'OK', 'Request fulfilled, document follows') - CREATED = _HTTPStatus(201, 'Created', 'Document created, URL follows') - ACCEPTED = _HTTPStatus(202, 'Accepted', - 'Request accepted, processing continues off-line') - NON_AUTHORITATIVE_INFORMATION = _HTTPStatus(203, - 'Non-Authoritative Information', 'Request fulfilled from cache') - NO_CONTENT = _HTTPStatus(204, 'No Content', 'Request fulfilled, nothing follows') - RESET_CONTENT =_HTTPStatus(205, 'Reset Content', 'Clear input form for further input') - PARTIAL_CONTENT = _HTTPStatus(206, 'Partial Content', 'Partial content follows') - MULTI_STATUS = _HTTPStatus(207, 'Multi-Status', '') - ALREADY_REPORTED = _HTTPStatus(208, 'Already Reported', '') - IM_USED = _HTTPStatus(226, 'IM Used', '') - MULTIPLE_CHOICES = _HTTPStatus(300, 'Multiple Choices', - 'Object has several resources -- see URI list') - MOVED_PERMANENTLY = _HTTPStatus(301, 'Moved Permanently', - 'Object moved permanently -- see URI list') - FOUND = _HTTPStatus(302, 'Found', 'Object moved temporarily -- see URI list') - SEE_OTHER = _HTTPStatus(303, 'See Other', 'Object moved -- see Method and URL list') - NOT_MODIFIED = _HTTPStatus(304, 'Not Modified', - 'Document has not changed since given time') - USE_PROXY = _HTTPStatus(305, 'Use Proxy', - 'You must use proxy specified in Location to access this resource') - TEMPORARY_REDIRECT = _HTTPStatus(307, 'Temporary Redirect', - 'Object moved temporarily -- see URI list') - PERMANENT_REDIRECT = _HTTPStatus(308, 'Permanent Redirect', - 'Object moved permanently -- see URI list') - BAD_REQUEST = _HTTPStatus(400, 'Bad Request', - 'Bad request syntax or unsupported method') - UNAUTHORIZED = _HTTPStatus(401, 'Unauthorized', - 'No permission -- see authorization schemes') - PAYMENT_REQUIRED = _HTTPStatus(402, 'Payment Required', - 'No payment -- see charging schemes') - FORBIDDEN = _HTTPStatus(403, 'Forbidden', - 'Request forbidden -- authorization will not help') - NOT_FOUND = _HTTPStatus(404, 'Not Found', - 'Nothing matches the given URI') - METHOD_NOT_ALLOWED = _HTTPStatus(405, 'Method Not Allowed', - 'Specified method is invalid for this resource') - NOT_ACCEPTABLE = _HTTPStatus(406, 'Not Acceptable', - 'URI not available in preferred format') - PROXY_AUTHENTICATION_REQUIRED = _HTTPStatus(407, - 'Proxy Authentication Required', - 'You must authenticate with this proxy before proceeding') - REQUEST_TIMEOUT = _HTTPStatus(408, 'Request Timeout', - 'Request timed out; try again later') - CONFLICT = _HTTPStatus(409, 'Conflict', 'Request conflict') - GONE = _HTTPStatus(410, 'Gone', - 'URI no longer exists and has been permanently removed') - LENGTH_REQUIRED = _HTTPStatus(411, 'Length Required', - 'Client must specify Content-Length') - PRECONDITION_FAILED = _HTTPStatus(412, 'Precondition Failed', - 'Precondition in headers is false') - REQUEST_ENTITY_TOO_LARGE = _HTTPStatus(413, 'Request Entity Too Large', - 'Entity is too large') - REQUEST_URI_TOO_LONG = _HTTPStatus(414, 'Request-URI Too Long', - 'URI is too long') - UNSUPPORTED_MEDIA_TYPE = _HTTPStatus(415, 'Unsupported Media Type', - 'Entity body in unsupported format') - REQUESTED_RANGE_NOT_SATISFIABLE = _HTTPStatus(416, - 'Requested Range Not Satisfiable', - 'Cannot satisfy request range') - EXPECTATION_FAILED = _HTTPStatus(417, 'Expectation Failed', - 'Expect condition could not be satisfied') - MISDIRECTED_REQUEST = _HTTPStatus(421, 'Misdirected Request', - 'Server is not able to produce a response') - UNPROCESSABLE_ENTITY = _HTTPStatus(422, 'Unprocessable Entity') - LOCKED = _HTTPStatus(423, 'Locked') - FAILED_DEPENDENCY = _HTTPStatus(424, 'Failed Dependency') - UPGRADE_REQUIRED = _HTTPStatus(426, 'Upgrade Required') - PRECONDITION_REQUIRED = _HTTPStatus(428, 'Precondition Required', - 'The origin server requires the request to be conditional') - TOO_MANY_REQUESTS = _HTTPStatus(429, 'Too Many Requests', - 'The user has sent too many requests in ' - 'a given amount of time ("rate limiting")') - REQUEST_HEADER_FIELDS_TOO_LARGE = _HTTPStatus(431, - 'Request Header Fields Too Large', - 'The server is unwilling to process the request because its header ' - 'fields are too large') - UNAVAILABLE_FOR_LEGAL_REASONS = _HTTPStatus(451, - 'Unavailable For Legal Reasons', - 'The server is denying access to the ' - 'resource as a consequence of a legal demand') - INTERNAL_SERVER_ERROR = _HTTPStatus(500, 'Internal Server Error', - 'Server got itself in trouble') - NOT_IMPLEMENTED = _HTTPStatus(501, 'Not Implemented', - 'Server does not support this operation') - BAD_GATEWAY = _HTTPStatus(502, 'Bad Gateway', - 'Invalid responses from another server/proxy') - SERVICE_UNAVAILABLE = _HTTPStatus(503, 'Service Unavailable', - 'The server cannot process the request due to a high load') - GATEWAY_TIMEOUT = _HTTPStatus(504, 'Gateway Timeout', - 'The gateway server did not receive a timely response') - HTTP_VERSION_NOT_SUPPORTED = _HTTPStatus(505, 'HTTP Version Not Supported', - 'Cannot fulfill request') - VARIANT_ALSO_NEGOTIATES = _HTTPStatus(506, 'Variant Also Negotiates') - INSUFFICIENT_STORAGE = _HTTPStatus(507, 'Insufficient Storage') - LOOP_DETECTED = _HTTPStatus(508, 'Loop Detected') - NOT_EXTENDED = _HTTPStatus(510, 'Not Extended') - NETWORK_AUTHENTICATION_REQUIRED = _HTTPStatus(511, - 'Network Authentication Required', - 'The client needs to authenticate to gain network access') - """ - ) - return AstroidBuilder(astroid.MANAGER).string_build(code) - - -def _http_client_transform(): - return AstroidBuilder(astroid.MANAGER).string_build( - textwrap.dedent( - """ - from http import HTTPStatus - - CONTINUE = HTTPStatus.CONTINUE - SWITCHING_PROTOCOLS = HTTPStatus.SWITCHING_PROTOCOLS - PROCESSING = HTTPStatus.PROCESSING - OK = HTTPStatus.OK - CREATED = HTTPStatus.CREATED - ACCEPTED = HTTPStatus.ACCEPTED - NON_AUTHORITATIVE_INFORMATION = HTTPStatus.NON_AUTHORITATIVE_INFORMATION - NO_CONTENT = HTTPStatus.NO_CONTENT - RESET_CONTENT = HTTPStatus.RESET_CONTENT - PARTIAL_CONTENT = HTTPStatus.PARTIAL_CONTENT - MULTI_STATUS = HTTPStatus.MULTI_STATUS - ALREADY_REPORTED = HTTPStatus.ALREADY_REPORTED - IM_USED = HTTPStatus.IM_USED - MULTIPLE_CHOICES = HTTPStatus.MULTIPLE_CHOICES - MOVED_PERMANENTLY = HTTPStatus.MOVED_PERMANENTLY - FOUND = HTTPStatus.FOUND - SEE_OTHER = HTTPStatus.SEE_OTHER - NOT_MODIFIED = HTTPStatus.NOT_MODIFIED - USE_PROXY = HTTPStatus.USE_PROXY - TEMPORARY_REDIRECT = HTTPStatus.TEMPORARY_REDIRECT - PERMANENT_REDIRECT = HTTPStatus.PERMANENT_REDIRECT - BAD_REQUEST = HTTPStatus.BAD_REQUEST - UNAUTHORIZED = HTTPStatus.UNAUTHORIZED - PAYMENT_REQUIRED = HTTPStatus.PAYMENT_REQUIRED - FORBIDDEN = HTTPStatus.FORBIDDEN - NOT_FOUND = HTTPStatus.NOT_FOUND - METHOD_NOT_ALLOWED = HTTPStatus.METHOD_NOT_ALLOWED - NOT_ACCEPTABLE = HTTPStatus.NOT_ACCEPTABLE - PROXY_AUTHENTICATION_REQUIRED = HTTPStatus.PROXY_AUTHENTICATION_REQUIRED - REQUEST_TIMEOUT = HTTPStatus.REQUEST_TIMEOUT - CONFLICT = HTTPStatus.CONFLICT - GONE = HTTPStatus.GONE - LENGTH_REQUIRED = HTTPStatus.LENGTH_REQUIRED - PRECONDITION_FAILED = HTTPStatus.PRECONDITION_FAILED - REQUEST_ENTITY_TOO_LARGE = HTTPStatus.REQUEST_ENTITY_TOO_LARGE - REQUEST_URI_TOO_LONG = HTTPStatus.REQUEST_URI_TOO_LONG - UNSUPPORTED_MEDIA_TYPE = HTTPStatus.UNSUPPORTED_MEDIA_TYPE - REQUESTED_RANGE_NOT_SATISFIABLE = HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE - EXPECTATION_FAILED = HTTPStatus.EXPECTATION_FAILED - UNPROCESSABLE_ENTITY = HTTPStatus.UNPROCESSABLE_ENTITY - LOCKED = HTTPStatus.LOCKED - FAILED_DEPENDENCY = HTTPStatus.FAILED_DEPENDENCY - UPGRADE_REQUIRED = HTTPStatus.UPGRADE_REQUIRED - PRECONDITION_REQUIRED = HTTPStatus.PRECONDITION_REQUIRED - TOO_MANY_REQUESTS = HTTPStatus.TOO_MANY_REQUESTS - REQUEST_HEADER_FIELDS_TOO_LARGE = HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE - INTERNAL_SERVER_ERROR = HTTPStatus.INTERNAL_SERVER_ERROR - NOT_IMPLEMENTED = HTTPStatus.NOT_IMPLEMENTED - BAD_GATEWAY = HTTPStatus.BAD_GATEWAY - SERVICE_UNAVAILABLE = HTTPStatus.SERVICE_UNAVAILABLE - GATEWAY_TIMEOUT = HTTPStatus.GATEWAY_TIMEOUT - HTTP_VERSION_NOT_SUPPORTED = HTTPStatus.HTTP_VERSION_NOT_SUPPORTED - VARIANT_ALSO_NEGOTIATES = HTTPStatus.VARIANT_ALSO_NEGOTIATES - INSUFFICIENT_STORAGE = HTTPStatus.INSUFFICIENT_STORAGE - LOOP_DETECTED = HTTPStatus.LOOP_DETECTED - NOT_EXTENDED = HTTPStatus.NOT_EXTENDED - NETWORK_AUTHENTICATION_REQUIRED = HTTPStatus.NETWORK_AUTHENTICATION_REQUIRED - """ - ) - ) - - -astroid.register_module_extender(astroid.MANAGER, "http", _http_transform) -astroid.register_module_extender(astroid.MANAGER, "http.client", _http_client_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_io.py b/backend/venv/Lib/site-packages/astroid/brain/brain_io.py deleted file mode 100644 index c74531129d966b38d5d811441699bb10047d15e6..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_io.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (c) 2016, 2018 Claudiu Popa - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid brain hints for some of the _io C objects.""" - -import astroid - - -BUFFERED = {"BufferedWriter", "BufferedReader"} -TextIOWrapper = "TextIOWrapper" -FileIO = "FileIO" -BufferedWriter = "BufferedWriter" - - -def _generic_io_transform(node, name, cls): - """Transform the given name, by adding the given *class* as a member of the node.""" - - io_module = astroid.MANAGER.ast_from_module_name("_io") - attribute_object = io_module[cls] - instance = attribute_object.instantiate_class() - node.locals[name] = [instance] - - -def _transform_text_io_wrapper(node): - # This is not always correct, since it can vary with the type of the descriptor, - # being stdout, stderr or stdin. But we cannot get access to the name of the - # stream, which is why we are using the BufferedWriter class as a default - # value - return _generic_io_transform(node, name="buffer", cls=BufferedWriter) - - -def _transform_buffered(node): - return _generic_io_transform(node, name="raw", cls=FileIO) - - -astroid.MANAGER.register_transform( - astroid.ClassDef, _transform_buffered, lambda node: node.name in BUFFERED -) -astroid.MANAGER.register_transform( - astroid.ClassDef, - _transform_text_io_wrapper, - lambda node: node.name == TextIOWrapper, -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_mechanize.py b/backend/venv/Lib/site-packages/astroid/brain/brain_mechanize.py deleted file mode 100644 index ef62c53bcaf485ccaec05f8de5a8d7c0b81d587d..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_mechanize.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) 2012-2013 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2016 Ceridwen - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -from astroid import MANAGER, register_module_extender -from astroid.builder import AstroidBuilder - - -def mechanize_transform(): - return AstroidBuilder(MANAGER).string_build( - """ - -class Browser(object): - def open(self, url, data=None, timeout=None): - return None - def open_novisit(self, url, data=None, timeout=None): - return None - def open_local_file(self, filename): - return None - -""" - ) - - -register_module_extender(MANAGER, "mechanize", mechanize_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py b/backend/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py deleted file mode 100644 index 3629b03217dd333c9715c885dd0b517078a55752..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (c) 2016, 2018 Claudiu Popa -# Copyright (c) 2019 Hugo van Kemenade - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -import sys - -import astroid -from astroid import exceptions - - -def _multiprocessing_transform(): - module = astroid.parse( - """ - from multiprocessing.managers import SyncManager - def Manager(): - return SyncManager() - """ - ) - # Multiprocessing uses a getattr lookup inside contexts, - # in order to get the attributes they need. Since it's extremely - # dynamic, we use this approach to fake it. - node = astroid.parse( - """ - from multiprocessing.context import DefaultContext, BaseContext - default = DefaultContext() - base = BaseContext() - """ - ) - try: - context = next(node["default"].infer()) - base = next(node["base"].infer()) - except exceptions.InferenceError: - return module - - for node in (context, base): - for key, value in node.locals.items(): - if key.startswith("_"): - continue - - value = value[0] - if isinstance(value, astroid.FunctionDef): - # We need to rebound this, since otherwise - # it will have an extra argument (self). - value = astroid.BoundMethod(value, node) - module[key] = value - return module - - -def _multiprocessing_managers_transform(): - return astroid.parse( - """ - import array - import threading - import multiprocessing.pool as pool - - import six - - class Namespace(object): - pass - - class Value(object): - def __init__(self, typecode, value, lock=True): - self._typecode = typecode - self._value = value - def get(self): - return self._value - def set(self, value): - self._value = value - def __repr__(self): - return '%s(%r, %r)'%(type(self).__name__, self._typecode, self._value) - value = property(get, set) - - def Array(typecode, sequence, lock=True): - return array.array(typecode, sequence) - - class SyncManager(object): - Queue = JoinableQueue = six.moves.queue.Queue - Event = threading.Event - RLock = threading.RLock - BoundedSemaphore = threading.BoundedSemaphore - Condition = threading.Condition - Barrier = threading.Barrier - Pool = pool.Pool - list = list - dict = dict - Value = Value - Array = Array - Namespace = Namespace - __enter__ = lambda self: self - __exit__ = lambda *args: args - - def start(self, initializer=None, initargs=None): - pass - def shutdown(self): - pass - """ - ) - - -astroid.register_module_extender( - astroid.MANAGER, "multiprocessing.managers", _multiprocessing_managers_transform -) -astroid.register_module_extender( - astroid.MANAGER, "multiprocessing", _multiprocessing_transform -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py b/backend/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py deleted file mode 100644 index 13fcf793f76b36fcc5903487b12da63317575ff6..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py +++ /dev/null @@ -1,455 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2012-2015 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2013-2014 Google, Inc. -# Copyright (c) 2014-2020 Claudiu Popa -# Copyright (c) 2014 Eevee (Alex Munroe) -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2015 Dmitry Pribysh -# Copyright (c) 2015 David Shea -# Copyright (c) 2015 Philip Lorenz -# Copyright (c) 2016 Jakub Wilk -# Copyright (c) 2016 Mateusz Bysiek -# Copyright (c) 2017 Hugo -# Copyright (c) 2017 Łukasz Rogalski -# Copyright (c) 2018 Ville Skyttä -# Copyright (c) 2019 Ashley Whetter - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for the Python standard library.""" - -import functools -import keyword -from textwrap import dedent - -from astroid import MANAGER, UseInferenceDefault, inference_tip, InferenceError -from astroid import arguments -from astroid import exceptions -from astroid import nodes -from astroid.builder import AstroidBuilder, extract_node -from astroid import util - - -TYPING_NAMEDTUPLE_BASENAMES = {"NamedTuple", "typing.NamedTuple"} -ENUM_BASE_NAMES = { - "Enum", - "IntEnum", - "enum.Enum", - "enum.IntEnum", - "IntFlag", - "enum.IntFlag", -} - - -def _infer_first(node, context): - if node is util.Uninferable: - raise UseInferenceDefault - try: - value = next(node.infer(context=context)) - if value is util.Uninferable: - raise UseInferenceDefault() - else: - return value - except StopIteration: - raise InferenceError() - - -def _find_func_form_arguments(node, context): - def _extract_namedtuple_arg_or_keyword(position, key_name=None): - - if len(args) > position: - return _infer_first(args[position], context) - if key_name and key_name in found_keywords: - return _infer_first(found_keywords[key_name], context) - - args = node.args - keywords = node.keywords - found_keywords = ( - {keyword.arg: keyword.value for keyword in keywords} if keywords else {} - ) - - name = _extract_namedtuple_arg_or_keyword(position=0, key_name="typename") - names = _extract_namedtuple_arg_or_keyword(position=1, key_name="field_names") - if name and names: - return name.value, names - - raise UseInferenceDefault() - - -def infer_func_form(node, base_type, context=None, enum=False): - """Specific inference function for namedtuple or Python 3 enum. """ - # node is a Call node, class name as first argument and generated class - # attributes as second argument - - # namedtuple or enums list of attributes can be a list of strings or a - # whitespace-separate string - try: - name, names = _find_func_form_arguments(node, context) - try: - attributes = names.value.replace(",", " ").split() - except AttributeError: - if not enum: - attributes = [ - _infer_first(const, context).value for const in names.elts - ] - else: - # Enums supports either iterator of (name, value) pairs - # or mappings. - if hasattr(names, "items") and isinstance(names.items, list): - attributes = [ - _infer_first(const[0], context).value - for const in names.items - if isinstance(const[0], nodes.Const) - ] - elif hasattr(names, "elts"): - # Enums can support either ["a", "b", "c"] - # or [("a", 1), ("b", 2), ...], but they can't - # be mixed. - if all(isinstance(const, nodes.Tuple) for const in names.elts): - attributes = [ - _infer_first(const.elts[0], context).value - for const in names.elts - if isinstance(const, nodes.Tuple) - ] - else: - attributes = [ - _infer_first(const, context).value for const in names.elts - ] - else: - raise AttributeError - if not attributes: - raise AttributeError - except (AttributeError, exceptions.InferenceError): - raise UseInferenceDefault() - - attributes = [attr for attr in attributes if " " not in attr] - - # If we can't infer the name of the class, don't crash, up to this point - # we know it is a namedtuple anyway. - name = name or "Uninferable" - # we want to return a Class node instance with proper attributes set - class_node = nodes.ClassDef(name, "docstring") - class_node.parent = node.parent - # set base class=tuple - class_node.bases.append(base_type) - # XXX add __init__(*attributes) method - for attr in attributes: - fake_node = nodes.EmptyNode() - fake_node.parent = class_node - fake_node.attrname = attr - class_node.instance_attrs[attr] = [fake_node] - return class_node, name, attributes - - -def _has_namedtuple_base(node): - """Predicate for class inference tip - - :type node: ClassDef - :rtype: bool - """ - return set(node.basenames) & TYPING_NAMEDTUPLE_BASENAMES - - -def _looks_like(node, name): - func = node.func - if isinstance(func, nodes.Attribute): - return func.attrname == name - if isinstance(func, nodes.Name): - return func.name == name - return False - - -_looks_like_namedtuple = functools.partial(_looks_like, name="namedtuple") -_looks_like_enum = functools.partial(_looks_like, name="Enum") -_looks_like_typing_namedtuple = functools.partial(_looks_like, name="NamedTuple") - - -def infer_named_tuple(node, context=None): - """Specific inference function for namedtuple Call node""" - tuple_base_name = nodes.Name(name="tuple", parent=node.root()) - class_node, name, attributes = infer_func_form( - node, tuple_base_name, context=context - ) - call_site = arguments.CallSite.from_call(node, context=context) - func = next(extract_node("import collections; collections.namedtuple").infer()) - try: - rename = next(call_site.infer_argument(func, "rename", context)).bool_value() - except InferenceError: - rename = False - - if rename: - attributes = _get_renamed_namedtuple_attributes(attributes) - - replace_args = ", ".join("{arg}=None".format(arg=arg) for arg in attributes) - field_def = ( - " {name} = property(lambda self: self[{index:d}], " - "doc='Alias for field number {index:d}')" - ) - field_defs = "\n".join( - field_def.format(name=name, index=index) - for index, name in enumerate(attributes) - ) - fake = AstroidBuilder(MANAGER).string_build( - """ -class %(name)s(tuple): - __slots__ = () - _fields = %(fields)r - def _asdict(self): - return self.__dict__ - @classmethod - def _make(cls, iterable, new=tuple.__new__, len=len): - return new(cls, iterable) - def _replace(self, %(replace_args)s): - return self - def __getnewargs__(self): - return tuple(self) -%(field_defs)s - """ - % { - "name": name, - "fields": attributes, - "field_defs": field_defs, - "replace_args": replace_args, - } - ) - class_node.locals["_asdict"] = fake.body[0].locals["_asdict"] - class_node.locals["_make"] = fake.body[0].locals["_make"] - class_node.locals["_replace"] = fake.body[0].locals["_replace"] - class_node.locals["_fields"] = fake.body[0].locals["_fields"] - for attr in attributes: - class_node.locals[attr] = fake.body[0].locals[attr] - # we use UseInferenceDefault, we can't be a generator so return an iterator - return iter([class_node]) - - -def _get_renamed_namedtuple_attributes(field_names): - names = list(field_names) - seen = set() - for i, name in enumerate(field_names): - if ( - not all(c.isalnum() or c == "_" for c in name) - or keyword.iskeyword(name) - or not name - or name[0].isdigit() - or name.startswith("_") - or name in seen - ): - names[i] = "_%d" % i - seen.add(name) - return tuple(names) - - -def infer_enum(node, context=None): - """ Specific inference function for enum Call node. """ - enum_meta = extract_node( - """ - class EnumMeta(object): - 'docstring' - def __call__(self, node): - class EnumAttribute(object): - name = '' - value = 0 - return EnumAttribute() - def __iter__(self): - class EnumAttribute(object): - name = '' - value = 0 - return [EnumAttribute()] - def __reversed__(self): - class EnumAttribute(object): - name = '' - value = 0 - return (EnumAttribute, ) - def __next__(self): - return next(iter(self)) - def __getitem__(self, attr): - class Value(object): - @property - def name(self): - return '' - @property - def value(self): - return attr - - return Value() - __members__ = [''] - """ - ) - class_node = infer_func_form(node, enum_meta, context=context, enum=True)[0] - return iter([class_node.instantiate_class()]) - - -INT_FLAG_ADDITION_METHODS = """ - def __or__(self, other): - return {name}(self.value | other.value) - def __and__(self, other): - return {name}(self.value & other.value) - def __xor__(self, other): - return {name}(self.value ^ other.value) - def __add__(self, other): - return {name}(self.value + other.value) - def __div__(self, other): - return {name}(self.value / other.value) - def __invert__(self): - return {name}(~self.value) - def __mul__(self, other): - return {name}(self.value * other.value) -""" - - -def infer_enum_class(node): - """ Specific inference for enums. """ - for basename in node.basenames: - # TODO: doesn't handle subclasses yet. This implementation - # is a hack to support enums. - if basename not in ENUM_BASE_NAMES: - continue - if node.root().name == "enum": - # Skip if the class is directly from enum module. - break - for local, values in node.locals.items(): - if any(not isinstance(value, nodes.AssignName) for value in values): - continue - - targets = [] - stmt = values[0].statement() - if isinstance(stmt, nodes.Assign): - if isinstance(stmt.targets[0], nodes.Tuple): - targets = stmt.targets[0].itered() - else: - targets = stmt.targets - elif isinstance(stmt, nodes.AnnAssign): - targets = [stmt.target] - else: - continue - - inferred_return_value = None - if isinstance(stmt, nodes.Assign): - if isinstance(stmt.value, nodes.Const): - if isinstance(stmt.value.value, str): - inferred_return_value = repr(stmt.value.value) - else: - inferred_return_value = stmt.value.value - else: - inferred_return_value = stmt.value.as_string() - - new_targets = [] - for target in targets: - # Replace all the assignments with our mocked class. - classdef = dedent( - """ - class {name}({types}): - @property - def value(self): - return {return_value} - @property - def name(self): - return "{name}" - """.format( - name=target.name, - types=", ".join(node.basenames), - return_value=inferred_return_value, - ) - ) - if "IntFlag" in basename: - # Alright, we need to add some additional methods. - # Unfortunately we still can't infer the resulting objects as - # Enum members, but once we'll be able to do that, the following - # should result in some nice symbolic execution - classdef += INT_FLAG_ADDITION_METHODS.format(name=target.name) - - fake = AstroidBuilder(MANAGER).string_build(classdef)[target.name] - fake.parent = target.parent - for method in node.mymethods(): - fake.locals[method.name] = [method] - new_targets.append(fake.instantiate_class()) - node.locals[local] = new_targets - break - return node - - -def infer_typing_namedtuple_class(class_node, context=None): - """Infer a subclass of typing.NamedTuple""" - # Check if it has the corresponding bases - annassigns_fields = [ - annassign.target.name - for annassign in class_node.body - if isinstance(annassign, nodes.AnnAssign) - ] - code = dedent( - """ - from collections import namedtuple - namedtuple({typename!r}, {fields!r}) - """ - ).format(typename=class_node.name, fields=",".join(annassigns_fields)) - node = extract_node(code) - generated_class_node = next(infer_named_tuple(node, context)) - for method in class_node.mymethods(): - generated_class_node.locals[method.name] = [method] - - for assign in class_node.body: - if not isinstance(assign, nodes.Assign): - continue - - for target in assign.targets: - attr = target.name - generated_class_node.locals[attr] = class_node.locals[attr] - - return iter((generated_class_node,)) - - -def infer_typing_namedtuple(node, context=None): - """Infer a typing.NamedTuple(...) call.""" - # This is essentially a namedtuple with different arguments - # so we extract the args and infer a named tuple. - try: - func = next(node.func.infer()) - except InferenceError: - raise UseInferenceDefault - - if func.qname() != "typing.NamedTuple": - raise UseInferenceDefault - - if len(node.args) != 2: - raise UseInferenceDefault - - if not isinstance(node.args[1], (nodes.List, nodes.Tuple)): - raise UseInferenceDefault - - names = [] - for elt in node.args[1].elts: - if not isinstance(elt, (nodes.List, nodes.Tuple)): - raise UseInferenceDefault - if len(elt.elts) != 2: - raise UseInferenceDefault - names.append(elt.elts[0].as_string()) - - typename = node.args[0].as_string() - if names: - field_names = "({},)".format(",".join(names)) - else: - field_names = "''" - node = extract_node( - "namedtuple({typename}, {fields})".format(typename=typename, fields=field_names) - ) - return infer_named_tuple(node, context) - - -MANAGER.register_transform( - nodes.Call, inference_tip(infer_named_tuple), _looks_like_namedtuple -) -MANAGER.register_transform(nodes.Call, inference_tip(infer_enum), _looks_like_enum) -MANAGER.register_transform( - nodes.ClassDef, - infer_enum_class, - predicate=lambda cls: any( - basename for basename in cls.basenames if basename in ENUM_BASE_NAMES - ), -) -MANAGER.register_transform( - nodes.ClassDef, inference_tip(infer_typing_namedtuple_class), _has_namedtuple_base -) -MANAGER.register_transform( - nodes.Call, inference_tip(infer_typing_namedtuple), _looks_like_typing_namedtuple -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_nose.py b/backend/venv/Lib/site-packages/astroid/brain/brain_nose.py deleted file mode 100644 index d0280a3fff0f1eb61dc826d84522e1cae8170255..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_nose.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2016 Ceridwen - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Hooks for nose library.""" - -import re -import textwrap - -import astroid -import astroid.builder - -_BUILDER = astroid.builder.AstroidBuilder(astroid.MANAGER) - - -def _pep8(name, caps=re.compile("([A-Z])")): - return caps.sub(lambda m: "_" + m.groups()[0].lower(), name) - - -def _nose_tools_functions(): - """Get an iterator of names and bound methods.""" - module = _BUILDER.string_build( - textwrap.dedent( - """ - import unittest - - class Test(unittest.TestCase): - pass - a = Test() - """ - ) - ) - try: - case = next(module["a"].infer()) - except astroid.InferenceError: - return - for method in case.methods(): - if method.name.startswith("assert") and "_" not in method.name: - pep8_name = _pep8(method.name) - yield pep8_name, astroid.BoundMethod(method, case) - if method.name == "assertEqual": - # nose also exports assert_equals. - yield "assert_equals", astroid.BoundMethod(method, case) - - -def _nose_tools_transform(node): - for method_name, method in _nose_tools_functions(): - node.locals[method_name] = [method] - - -def _nose_tools_trivial_transform(): - """Custom transform for the nose.tools module.""" - stub = _BUILDER.string_build("""__all__ = []""") - all_entries = ["ok_", "eq_"] - - for pep8_name, method in _nose_tools_functions(): - all_entries.append(pep8_name) - stub[pep8_name] = method - - # Update the __all__ variable, since nose.tools - # does this manually with .append. - all_assign = stub["__all__"].parent - all_object = astroid.List(all_entries) - all_object.parent = all_assign - all_assign.value = all_object - return stub - - -astroid.register_module_extender( - astroid.MANAGER, "nose.tools.trivial", _nose_tools_trivial_transform -) -astroid.MANAGER.register_transform( - astroid.Module, _nose_tools_transform, lambda n: n.name == "nose.tools" -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py deleted file mode 100644 index 62dfe991c0395ffe73196ffbab879c8b25077163..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2019 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for numpy.core.fromnumeric module.""" - -import astroid - - -def numpy_core_fromnumeric_transform(): - return astroid.parse( - """ - def sum(a, axis=None, dtype=None, out=None, keepdims=None, initial=None): - return numpy.ndarray([0, 0]) - """ - ) - - -astroid.register_module_extender( - astroid.MANAGER, "numpy.core.fromnumeric", numpy_core_fromnumeric_transform -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py deleted file mode 100644 index 58aa0a98599f13c8ae3531835a16520b374ae6cd..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (c) 2019 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for numpy.core.function_base module.""" - -import functools -import astroid -from brain_numpy_utils import looks_like_numpy_member, infer_numpy_member - - -METHODS_TO_BE_INFERRED = { - "linspace": """def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0): - return numpy.ndarray([0, 0])""", - "logspace": """def logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0): - return numpy.ndarray([0, 0])""", - "geomspace": """def geomspace(start, stop, num=50, endpoint=True, dtype=None, axis=0): - return numpy.ndarray([0, 0])""", -} - -for func_name, func_src in METHODS_TO_BE_INFERRED.items(): - inference_function = functools.partial(infer_numpy_member, func_src) - astroid.MANAGER.register_transform( - astroid.Attribute, - astroid.inference_tip(inference_function), - functools.partial(looks_like_numpy_member, func_name), - ) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py deleted file mode 100644 index b2e32bc85b4720c43662f1676f1162e35a65d468..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2019-2020 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for numpy.core.multiarray module.""" - -import functools -import astroid -from brain_numpy_utils import looks_like_numpy_member, infer_numpy_member - - -def numpy_core_multiarray_transform(): - return astroid.parse( - """ - # different functions defined in multiarray.py - def inner(a, b): - return numpy.ndarray([0, 0]) - - def vdot(a, b): - return numpy.ndarray([0, 0]) - """ - ) - - -astroid.register_module_extender( - astroid.MANAGER, "numpy.core.multiarray", numpy_core_multiarray_transform -) - - -METHODS_TO_BE_INFERRED = { - "array": """def array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0): - return numpy.ndarray([0, 0])""", - "dot": """def dot(a, b, out=None): - return numpy.ndarray([0, 0])""", - "empty_like": """def empty_like(a, dtype=None, order='K', subok=True): - return numpy.ndarray((0, 0))""", - "concatenate": """def concatenate(arrays, axis=None, out=None): - return numpy.ndarray((0, 0))""", - "where": """def where(condition, x=None, y=None): - return numpy.ndarray([0, 0])""", - "empty": """def empty(shape, dtype=float, order='C'): - return numpy.ndarray([0, 0])""", - "bincount": """def bincount(x, weights=None, minlength=0): - return numpy.ndarray([0, 0])""", - "busday_count": """def busday_count(begindates, enddates, weekmask='1111100', holidays=[], busdaycal=None, out=None): - return numpy.ndarray([0, 0])""", - "busday_offset": """def busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None): - return numpy.ndarray([0, 0])""", - "can_cast": """def can_cast(from_, to, casting='safe'): - return True""", - "copyto": """def copyto(dst, src, casting='same_kind', where=True): - return None""", - "datetime_as_string": """def datetime_as_string(arr, unit=None, timezone='naive', casting='same_kind'): - return numpy.ndarray([0, 0])""", - "is_busday": """def is_busday(dates, weekmask='1111100', holidays=None, busdaycal=None, out=None): - return numpy.ndarray([0, 0])""", - "lexsort": """def lexsort(keys, axis=-1): - return numpy.ndarray([0, 0])""", - "may_share_memory": """def may_share_memory(a, b, max_work=None): - return True""", - # Not yet available because dtype is not yet present in those brains - # "min_scalar_type": """def min_scalar_type(a): - # return numpy.dtype('int16')""", - "packbits": """def packbits(a, axis=None, bitorder='big'): - return numpy.ndarray([0, 0])""", - # Not yet available because dtype is not yet present in those brains - # "result_type": """def result_type(*arrays_and_dtypes): - # return numpy.dtype('int16')""", - "shares_memory": """def shares_memory(a, b, max_work=None): - return True""", - "unpackbits": """def unpackbits(a, axis=None, count=None, bitorder='big'): - return numpy.ndarray([0, 0])""", - "unravel_index": """def unravel_index(indices, shape, order='C'): - return (numpy.ndarray([0, 0]),)""", - "zeros": """def zeros(shape, dtype=float, order='C'): - return numpy.ndarray([0, 0])""", -} - -for method_name, function_src in METHODS_TO_BE_INFERRED.items(): - inference_function = functools.partial(infer_numpy_member, function_src) - astroid.MANAGER.register_transform( - astroid.Attribute, - astroid.inference_tip(inference_function), - functools.partial(looks_like_numpy_member, method_name), - ) - astroid.MANAGER.register_transform( - astroid.Name, - astroid.inference_tip(inference_function), - functools.partial(looks_like_numpy_member, method_name), - ) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py deleted file mode 100644 index 2a6f37e3929cbdce58102ecdf09b180484626eb5..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2019 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for numpy.core.numeric module.""" - -import functools -import astroid -from brain_numpy_utils import looks_like_numpy_member, infer_numpy_member - - -def numpy_core_numeric_transform(): - return astroid.parse( - """ - # different functions defined in numeric.py - import numpy - def zeros_like(a, dtype=None, order='K', subok=True): return numpy.ndarray((0, 0)) - def ones_like(a, dtype=None, order='K', subok=True): return numpy.ndarray((0, 0)) - def full_like(a, fill_value, dtype=None, order='K', subok=True): return numpy.ndarray((0, 0)) - """ - ) - - -astroid.register_module_extender( - astroid.MANAGER, "numpy.core.numeric", numpy_core_numeric_transform -) - - -METHODS_TO_BE_INFERRED = { - "ones": """def ones(shape, dtype=None, order='C'): - return numpy.ndarray([0, 0])""" -} - - -for method_name, function_src in METHODS_TO_BE_INFERRED.items(): - inference_function = functools.partial(infer_numpy_member, function_src) - astroid.MANAGER.register_transform( - astroid.Attribute, - astroid.inference_tip(inference_function), - functools.partial(looks_like_numpy_member, method_name), - ) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py deleted file mode 100644 index 6ac4a146336814f97c916e61c01f454f9b95ee5e..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py +++ /dev/null @@ -1,254 +0,0 @@ -# Copyright (c) 2019-2020 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -# TODO(hippo91) : correct the methods signature. - -"""Astroid hooks for numpy.core.numerictypes module.""" - -import astroid - - -def numpy_core_numerictypes_transform(): - # TODO: Uniformize the generic API with the ndarray one. - # According to numpy doc the generic object should expose - # the same API than ndarray. This has been done here partially - # through the astype method. - return astroid.parse( - """ - # different types defined in numerictypes.py - class generic(object): - def __init__(self, value): - self.T = None - self.base = None - self.data = None - self.dtype = None - self.flags = None - self.flat = None - self.imag = None - self.itemsize = None - self.nbytes = None - self.ndim = None - self.real = None - self.size = None - self.strides = None - - def all(self): return uninferable - def any(self): return uninferable - def argmax(self): return uninferable - def argmin(self): return uninferable - def argsort(self): return uninferable - def astype(self, dtype, order='K', casting='unsafe', subok=True, copy=True): return np.ndarray([0, 0]) - def base(self): return uninferable - def byteswap(self): return uninferable - def choose(self): return uninferable - def clip(self): return uninferable - def compress(self): return uninferable - def conj(self): return uninferable - def conjugate(self): return uninferable - def copy(self): return uninferable - def cumprod(self): return uninferable - def cumsum(self): return uninferable - def data(self): return uninferable - def diagonal(self): return uninferable - def dtype(self): return uninferable - def dump(self): return uninferable - def dumps(self): return uninferable - def fill(self): return uninferable - def flags(self): return uninferable - def flat(self): return uninferable - def flatten(self): return uninferable - def getfield(self): return uninferable - def imag(self): return uninferable - def item(self): return uninferable - def itemset(self): return uninferable - def itemsize(self): return uninferable - def max(self): return uninferable - def mean(self): return uninferable - def min(self): return uninferable - def nbytes(self): return uninferable - def ndim(self): return uninferable - def newbyteorder(self): return uninferable - def nonzero(self): return uninferable - def prod(self): return uninferable - def ptp(self): return uninferable - def put(self): return uninferable - def ravel(self): return uninferable - def real(self): return uninferable - def repeat(self): return uninferable - def reshape(self): return uninferable - def resize(self): return uninferable - def round(self): return uninferable - def searchsorted(self): return uninferable - def setfield(self): return uninferable - def setflags(self): return uninferable - def shape(self): return uninferable - def size(self): return uninferable - def sort(self): return uninferable - def squeeze(self): return uninferable - def std(self): return uninferable - def strides(self): return uninferable - def sum(self): return uninferable - def swapaxes(self): return uninferable - def take(self): return uninferable - def tobytes(self): return uninferable - def tofile(self): return uninferable - def tolist(self): return uninferable - def tostring(self): return uninferable - def trace(self): return uninferable - def transpose(self): return uninferable - def var(self): return uninferable - def view(self): return uninferable - - - class dtype(object): - def __init__(self, obj, align=False, copy=False): - self.alignment = None - self.base = None - self.byteorder = None - self.char = None - self.descr = None - self.fields = None - self.flags = None - self.hasobject = None - self.isalignedstruct = None - self.isbuiltin = None - self.isnative = None - self.itemsize = None - self.kind = None - self.metadata = None - self.name = None - self.names = None - self.num = None - self.shape = None - self.str = None - self.subdtype = None - self.type = None - - def newbyteorder(self, new_order='S'): return uninferable - def __neg__(self): return uninferable - - class busdaycalendar(object): - def __init__(self, weekmask='1111100', holidays=None): - self.holidays = None - self.weekmask = None - - class flexible(generic): pass - class bool_(generic): pass - class number(generic): - def __neg__(self): return uninferable - class datetime64(generic): - def __init__(self, nb, unit=None): pass - - - class void(flexible): - def __init__(self, *args, **kwargs): - self.base = None - self.dtype = None - self.flags = None - def getfield(self): return uninferable - def setfield(self): return uninferable - - - class character(flexible): pass - - - class integer(number): - def __init__(self, value): - self.denominator = None - self.numerator = None - - - class inexact(number): pass - - - class str_(str, character): - def maketrans(self, x, y=None, z=None): return uninferable - - - class bytes_(bytes, character): - def fromhex(self, string): return uninferable - def maketrans(self, frm, to): return uninferable - - - class signedinteger(integer): pass - - - class unsignedinteger(integer): pass - - - class complexfloating(inexact): pass - - - class floating(inexact): pass - - - class float64(floating, float): - def fromhex(self, string): return uninferable - - - class uint64(unsignedinteger): pass - class complex64(complexfloating): pass - class int16(signedinteger): pass - class float96(floating): pass - class int8(signedinteger): pass - class uint32(unsignedinteger): pass - class uint8(unsignedinteger): pass - class _typedict(dict): pass - class complex192(complexfloating): pass - class timedelta64(signedinteger): - def __init__(self, nb, unit=None): pass - class int32(signedinteger): pass - class uint16(unsignedinteger): pass - class float32(floating): pass - class complex128(complexfloating, complex): pass - class float16(floating): pass - class int64(signedinteger): pass - - buffer_type = memoryview - bool8 = bool_ - byte = int8 - bytes0 = bytes_ - cdouble = complex128 - cfloat = complex128 - clongdouble = complex192 - clongfloat = complex192 - complex_ = complex128 - csingle = complex64 - double = float64 - float_ = float64 - half = float16 - int0 = int32 - int_ = int32 - intc = int32 - intp = int32 - long = int32 - longcomplex = complex192 - longdouble = float96 - longfloat = float96 - longlong = int64 - object0 = object_ - object_ = object_ - short = int16 - single = float32 - singlecomplex = complex64 - str0 = str_ - string_ = bytes_ - ubyte = uint8 - uint = uint32 - uint0 = uint32 - uintc = uint32 - uintp = uint32 - ulonglong = uint64 - unicode = str_ - unicode_ = str_ - ushort = uint16 - void0 = void - """ - ) - - -astroid.register_module_extender( - astroid.MANAGER, "numpy.core.numerictypes", numpy_core_numerictypes_transform -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py deleted file mode 100644 index 897961eab91b6959cb6727d744d3c9868913ed9c..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (c) 2019 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for numpy.core.umath module.""" - -import astroid - - -def numpy_core_umath_transform(): - ufunc_optional_keyword_arguments = ( - """out=None, where=True, casting='same_kind', order='K', """ - """dtype=None, subok=True""" - ) - return astroid.parse( - """ - class FakeUfunc: - def __init__(self): - self.__doc__ = str() - self.__name__ = str() - self.nin = 0 - self.nout = 0 - self.nargs = 0 - self.ntypes = 0 - self.types = None - self.identity = None - self.signature = None - - @classmethod - def reduce(cls, a, axis=None, dtype=None, out=None): - return numpy.ndarray([0, 0]) - - @classmethod - def accumulate(cls, array, axis=None, dtype=None, out=None): - return numpy.ndarray([0, 0]) - - @classmethod - def reduceat(cls, a, indices, axis=None, dtype=None, out=None): - return numpy.ndarray([0, 0]) - - @classmethod - def outer(cls, A, B, **kwargs): - return numpy.ndarray([0, 0]) - - @classmethod - def at(cls, a, indices, b=None): - return numpy.ndarray([0, 0]) - - class FakeUfuncOneArg(FakeUfunc): - def __call__(self, x, {opt_args:s}): - return numpy.ndarray([0, 0]) - - class FakeUfuncOneArgBis(FakeUfunc): - def __call__(self, x, {opt_args:s}): - return numpy.ndarray([0, 0]), numpy.ndarray([0, 0]) - - class FakeUfuncTwoArgs(FakeUfunc): - def __call__(self, x1, x2, {opt_args:s}): - return numpy.ndarray([0, 0]) - - # Constants - e = 2.718281828459045 - euler_gamma = 0.5772156649015329 - - # One arg functions with optional kwargs - arccos = FakeUfuncOneArg() - arccosh = FakeUfuncOneArg() - arcsin = FakeUfuncOneArg() - arcsinh = FakeUfuncOneArg() - arctan = FakeUfuncOneArg() - arctanh = FakeUfuncOneArg() - cbrt = FakeUfuncOneArg() - conj = FakeUfuncOneArg() - conjugate = FakeUfuncOneArg() - cosh = FakeUfuncOneArg() - deg2rad = FakeUfuncOneArg() - exp2 = FakeUfuncOneArg() - expm1 = FakeUfuncOneArg() - fabs = FakeUfuncOneArg() - frexp = FakeUfuncOneArgBis() - isfinite = FakeUfuncOneArg() - isinf = FakeUfuncOneArg() - log = FakeUfuncOneArg() - log1p = FakeUfuncOneArg() - log2 = FakeUfuncOneArg() - logical_not = FakeUfuncOneArg() - modf = FakeUfuncOneArgBis() - negative = FakeUfuncOneArg() - positive = FakeUfuncOneArg() - rad2deg = FakeUfuncOneArg() - reciprocal = FakeUfuncOneArg() - rint = FakeUfuncOneArg() - sign = FakeUfuncOneArg() - signbit = FakeUfuncOneArg() - sinh = FakeUfuncOneArg() - spacing = FakeUfuncOneArg() - square = FakeUfuncOneArg() - tan = FakeUfuncOneArg() - tanh = FakeUfuncOneArg() - trunc = FakeUfuncOneArg() - - # Two args functions with optional kwargs - bitwise_and = FakeUfuncTwoArgs() - bitwise_or = FakeUfuncTwoArgs() - bitwise_xor = FakeUfuncTwoArgs() - copysign = FakeUfuncTwoArgs() - divide = FakeUfuncTwoArgs() - divmod = FakeUfuncTwoArgs() - equal = FakeUfuncTwoArgs() - float_power = FakeUfuncTwoArgs() - floor_divide = FakeUfuncTwoArgs() - fmax = FakeUfuncTwoArgs() - fmin = FakeUfuncTwoArgs() - fmod = FakeUfuncTwoArgs() - greater = FakeUfuncTwoArgs() - gcd = FakeUfuncTwoArgs() - hypot = FakeUfuncTwoArgs() - heaviside = FakeUfuncTwoArgs() - lcm = FakeUfuncTwoArgs() - ldexp = FakeUfuncTwoArgs() - left_shift = FakeUfuncTwoArgs() - less = FakeUfuncTwoArgs() - logaddexp = FakeUfuncTwoArgs() - logaddexp2 = FakeUfuncTwoArgs() - logical_and = FakeUfuncTwoArgs() - logical_or = FakeUfuncTwoArgs() - logical_xor = FakeUfuncTwoArgs() - maximum = FakeUfuncTwoArgs() - minimum = FakeUfuncTwoArgs() - nextafter = FakeUfuncTwoArgs() - not_equal = FakeUfuncTwoArgs() - power = FakeUfuncTwoArgs() - remainder = FakeUfuncTwoArgs() - right_shift = FakeUfuncTwoArgs() - subtract = FakeUfuncTwoArgs() - true_divide = FakeUfuncTwoArgs() - """.format( - opt_args=ufunc_optional_keyword_arguments - ) - ) - - -astroid.register_module_extender( - astroid.MANAGER, "numpy.core.umath", numpy_core_umath_transform -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py deleted file mode 100644 index d40a7dd0b393e4080ce9aabfe3df3c38d6c1eae0..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright (c) 2015-2016, 2018-2019 Claudiu Popa -# Copyright (c) 2016 Ceridwen -# Copyright (c) 2017-2020 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for numpy ndarray class.""" - -import functools -import astroid - - -def infer_numpy_ndarray(node, context=None): - ndarray = """ - class ndarray(object): - def __init__(self, shape, dtype=float, buffer=None, offset=0, - strides=None, order=None): - self.T = None - self.base = None - self.ctypes = None - self.data = None - self.dtype = None - self.flags = None - self.flat = None - self.imag = np.ndarray([0, 0]) - self.itemsize = None - self.nbytes = None - self.ndim = None - self.real = np.ndarray([0, 0]) - self.shape = numpy.ndarray([0, 0]) - self.size = None - self.strides = None - - def __abs__(self): return numpy.ndarray([0, 0]) - def __add__(self, value): return numpy.ndarray([0, 0]) - def __and__(self, value): return numpy.ndarray([0, 0]) - def __array__(self, dtype=None): return numpy.ndarray([0, 0]) - def __array_wrap__(self, obj): return numpy.ndarray([0, 0]) - def __contains__(self, key): return True - def __copy__(self): return numpy.ndarray([0, 0]) - def __deepcopy__(self, memo): return numpy.ndarray([0, 0]) - def __divmod__(self, value): return (numpy.ndarray([0, 0]), numpy.ndarray([0, 0])) - def __eq__(self, value): return numpy.ndarray([0, 0]) - def __float__(self): return 0. - def __floordiv__(self): return numpy.ndarray([0, 0]) - def __ge__(self, value): return numpy.ndarray([0, 0]) - def __getitem__(self, key): return uninferable - def __gt__(self, value): return numpy.ndarray([0, 0]) - def __iadd__(self, value): return numpy.ndarray([0, 0]) - def __iand__(self, value): return numpy.ndarray([0, 0]) - def __ifloordiv__(self, value): return numpy.ndarray([0, 0]) - def __ilshift__(self, value): return numpy.ndarray([0, 0]) - def __imod__(self, value): return numpy.ndarray([0, 0]) - def __imul__(self, value): return numpy.ndarray([0, 0]) - def __int__(self): return 0 - def __invert__(self): return numpy.ndarray([0, 0]) - def __ior__(self, value): return numpy.ndarray([0, 0]) - def __ipow__(self, value): return numpy.ndarray([0, 0]) - def __irshift__(self, value): return numpy.ndarray([0, 0]) - def __isub__(self, value): return numpy.ndarray([0, 0]) - def __itruediv__(self, value): return numpy.ndarray([0, 0]) - def __ixor__(self, value): return numpy.ndarray([0, 0]) - def __le__(self, value): return numpy.ndarray([0, 0]) - def __len__(self): return 1 - def __lshift__(self, value): return numpy.ndarray([0, 0]) - def __lt__(self, value): return numpy.ndarray([0, 0]) - def __matmul__(self, value): return numpy.ndarray([0, 0]) - def __mod__(self, value): return numpy.ndarray([0, 0]) - def __mul__(self, value): return numpy.ndarray([0, 0]) - def __ne__(self, value): return numpy.ndarray([0, 0]) - def __neg__(self): return numpy.ndarray([0, 0]) - def __or__(self): return numpy.ndarray([0, 0]) - def __pos__(self): return numpy.ndarray([0, 0]) - def __pow__(self): return numpy.ndarray([0, 0]) - def __repr__(self): return str() - def __rshift__(self): return numpy.ndarray([0, 0]) - def __setitem__(self, key, value): return uninferable - def __str__(self): return str() - def __sub__(self, value): return numpy.ndarray([0, 0]) - def __truediv__(self, value): return numpy.ndarray([0, 0]) - def __xor__(self, value): return numpy.ndarray([0, 0]) - def all(self, axis=None, out=None, keepdims=False): return np.ndarray([0, 0]) - def any(self, axis=None, out=None, keepdims=False): return np.ndarray([0, 0]) - def argmax(self, axis=None, out=None): return np.ndarray([0, 0]) - def argmin(self, axis=None, out=None): return np.ndarray([0, 0]) - def argpartition(self, kth, axis=-1, kind='introselect', order=None): return np.ndarray([0, 0]) - def argsort(self, axis=-1, kind='quicksort', order=None): return np.ndarray([0, 0]) - def astype(self, dtype, order='K', casting='unsafe', subok=True, copy=True): return np.ndarray([0, 0]) - def byteswap(self, inplace=False): return np.ndarray([0, 0]) - def choose(self, choices, out=None, mode='raise'): return np.ndarray([0, 0]) - def clip(self, min=None, max=None, out=None): return np.ndarray([0, 0]) - def compress(self, condition, axis=None, out=None): return np.ndarray([0, 0]) - def conj(self): return np.ndarray([0, 0]) - def conjugate(self): return np.ndarray([0, 0]) - def copy(self, order='C'): return np.ndarray([0, 0]) - def cumprod(self, axis=None, dtype=None, out=None): return np.ndarray([0, 0]) - def cumsum(self, axis=None, dtype=None, out=None): return np.ndarray([0, 0]) - def diagonal(self, offset=0, axis1=0, axis2=1): return np.ndarray([0, 0]) - def dot(self, b, out=None): return np.ndarray([0, 0]) - def dump(self, file): return None - def dumps(self): return str() - def fill(self, value): return None - def flatten(self, order='C'): return np.ndarray([0, 0]) - def getfield(self, dtype, offset=0): return np.ndarray([0, 0]) - def item(self, *args): return uninferable - def itemset(self, *args): return None - def max(self, axis=None, out=None): return np.ndarray([0, 0]) - def mean(self, axis=None, dtype=None, out=None, keepdims=False): return np.ndarray([0, 0]) - def min(self, axis=None, out=None, keepdims=False): return np.ndarray([0, 0]) - def newbyteorder(self, new_order='S'): return np.ndarray([0, 0]) - def nonzero(self): return (1,) - def partition(self, kth, axis=-1, kind='introselect', order=None): return None - def prod(self, axis=None, dtype=None, out=None, keepdims=False): return np.ndarray([0, 0]) - def ptp(self, axis=None, out=None): return np.ndarray([0, 0]) - def put(self, indices, values, mode='raise'): return None - def ravel(self, order='C'): return np.ndarray([0, 0]) - def repeat(self, repeats, axis=None): return np.ndarray([0, 0]) - def reshape(self, shape, order='C'): return np.ndarray([0, 0]) - def resize(self, new_shape, refcheck=True): return None - def round(self, decimals=0, out=None): return np.ndarray([0, 0]) - def searchsorted(self, v, side='left', sorter=None): return np.ndarray([0, 0]) - def setfield(self, val, dtype, offset=0): return None - def setflags(self, write=None, align=None, uic=None): return None - def sort(self, axis=-1, kind='quicksort', order=None): return None - def squeeze(self, axis=None): return np.ndarray([0, 0]) - def std(self, axis=None, dtype=None, out=None, ddof=0, keepdims=False): return np.ndarray([0, 0]) - def sum(self, axis=None, dtype=None, out=None, keepdims=False): return np.ndarray([0, 0]) - def swapaxes(self, axis1, axis2): return np.ndarray([0, 0]) - def take(self, indices, axis=None, out=None, mode='raise'): return np.ndarray([0, 0]) - def tobytes(self, order='C'): return b'' - def tofile(self, fid, sep="", format="%s"): return None - def tolist(self, ): return [] - def tostring(self, order='C'): return b'' - def trace(self, offset=0, axis1=0, axis2=1, dtype=None, out=None): return np.ndarray([0, 0]) - def transpose(self, *axes): return np.ndarray([0, 0]) - def var(self, axis=None, dtype=None, out=None, ddof=0, keepdims=False): return np.ndarray([0, 0]) - def view(self, dtype=None, type=None): return np.ndarray([0, 0]) - """ - node = astroid.extract_node(ndarray) - return node.infer(context=context) - - -def _looks_like_numpy_ndarray(node): - return isinstance(node, astroid.Attribute) and node.attrname == "ndarray" - - -astroid.MANAGER.register_transform( - astroid.Attribute, - astroid.inference_tip(infer_numpy_ndarray), - _looks_like_numpy_ndarray, -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py deleted file mode 100644 index cffdceeff09ceffbc5927c8c2757e6d0595defd0..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2019 hippo91 - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -# TODO(hippo91) : correct the functions return types -"""Astroid hooks for numpy.random.mtrand module.""" - -import astroid - - -def numpy_random_mtrand_transform(): - return astroid.parse( - """ - def beta(a, b, size=None): return uninferable - def binomial(n, p, size=None): return uninferable - def bytes(length): return uninferable - def chisquare(df, size=None): return uninferable - def choice(a, size=None, replace=True, p=None): return uninferable - def dirichlet(alpha, size=None): return uninferable - def exponential(scale=1.0, size=None): return uninferable - def f(dfnum, dfden, size=None): return uninferable - def gamma(shape, scale=1.0, size=None): return uninferable - def geometric(p, size=None): return uninferable - def get_state(): return uninferable - def gumbel(loc=0.0, scale=1.0, size=None): return uninferable - def hypergeometric(ngood, nbad, nsample, size=None): return uninferable - def laplace(loc=0.0, scale=1.0, size=None): return uninferable - def logistic(loc=0.0, scale=1.0, size=None): return uninferable - def lognormal(mean=0.0, sigma=1.0, size=None): return uninferable - def logseries(p, size=None): return uninferable - def multinomial(n, pvals, size=None): return uninferable - def multivariate_normal(mean, cov, size=None): return uninferable - def negative_binomial(n, p, size=None): return uninferable - def noncentral_chisquare(df, nonc, size=None): return uninferable - def noncentral_f(dfnum, dfden, nonc, size=None): return uninferable - def normal(loc=0.0, scale=1.0, size=None): return uninferable - def pareto(a, size=None): return uninferable - def permutation(x): return uninferable - def poisson(lam=1.0, size=None): return uninferable - def power(a, size=None): return uninferable - def rand(*args): return uninferable - def randint(low, high=None, size=None, dtype='l'): - import numpy - return numpy.ndarray((1,1)) - def randn(*args): return uninferable - def random_integers(low, high=None, size=None): return uninferable - def random_sample(size=None): return uninferable - def rayleigh(scale=1.0, size=None): return uninferable - def seed(seed=None): return uninferable - def set_state(state): return uninferable - def shuffle(x): return uninferable - def standard_cauchy(size=None): return uninferable - def standard_exponential(size=None): return uninferable - def standard_gamma(shape, size=None): return uninferable - def standard_normal(size=None): return uninferable - def standard_t(df, size=None): return uninferable - def triangular(left, mode, right, size=None): return uninferable - def uniform(low=0.0, high=1.0, size=None): return uninferable - def vonmises(mu, kappa, size=None): return uninferable - def wald(mean, scale, size=None): return uninferable - def weibull(a, size=None): return uninferable - def zipf(a, size=None): return uninferable - """ - ) - - -astroid.register_module_extender( - astroid.MANAGER, "numpy.random.mtrand", numpy_random_mtrand_transform -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py b/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py deleted file mode 100644 index b29d2719c0b547347473c08ea8075e8fdbaa8fee..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2019-2020 hippo91 -# Copyright (c) 2019 Claudiu Popa - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Different utilities for the numpy brains""" - - -import astroid - - -def infer_numpy_member(src, node, context=None): - node = astroid.extract_node(src) - return node.infer(context=context) - - -def _is_a_numpy_module(node: astroid.node_classes.Name) -> bool: - """ - Returns True if the node is a representation of a numpy module. - - For example in : - import numpy as np - x = np.linspace(1, 2) - The node is a representation of the numpy module. - - :param node: node to test - :return: True if the node is a representation of the numpy module. - """ - module_nickname = node.name - potential_import_target = [ - x for x in node.lookup(module_nickname)[1] if isinstance(x, astroid.Import) - ] - for target in potential_import_target: - if ("numpy", module_nickname) in target.names: - return True - return False - - -def looks_like_numpy_member( - member_name: str, node: astroid.node_classes.NodeNG -) -> bool: - """ - Returns True if the node is a member of numpy whose - name is member_name. - - :param member_name: name of the member - :param node: node to test - :return: True if the node is a member of numpy - """ - if ( - isinstance(node, astroid.Attribute) - and node.attrname == member_name - and isinstance(node.expr, astroid.Name) - and _is_a_numpy_module(node.expr) - ): - return True - if ( - isinstance(node, astroid.Name) - and node.name == member_name - and node.root().name.startswith("numpy") - ): - return True - return False diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py b/backend/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py deleted file mode 100644 index 25e7649591343fb25d6ca8c90617a491657f6bb5..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2016, 2018 Claudiu Popa -# Copyright (c) 2016 Ceridwen - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -import astroid -from astroid import parse -from astroid import inference_tip -from astroid import register_module_extender -from astroid import MANAGER - - -def pkg_resources_transform(): - return parse( - """ -def require(*requirements): - return pkg_resources.working_set.require(*requirements) - -def run_script(requires, script_name): - return pkg_resources.working_set.run_script(requires, script_name) - -def iter_entry_points(group, name=None): - return pkg_resources.working_set.iter_entry_points(group, name) - -def resource_exists(package_or_requirement, resource_name): - return get_provider(package_or_requirement).has_resource(resource_name) - -def resource_isdir(package_or_requirement, resource_name): - return get_provider(package_or_requirement).resource_isdir( - resource_name) - -def resource_filename(package_or_requirement, resource_name): - return get_provider(package_or_requirement).get_resource_filename( - self, resource_name) - -def resource_stream(package_or_requirement, resource_name): - return get_provider(package_or_requirement).get_resource_stream( - self, resource_name) - -def resource_string(package_or_requirement, resource_name): - return get_provider(package_or_requirement).get_resource_string( - self, resource_name) - -def resource_listdir(package_or_requirement, resource_name): - return get_provider(package_or_requirement).resource_listdir( - resource_name) - -def extraction_error(): - pass - -def get_cache_path(archive_name, names=()): - extract_path = self.extraction_path or get_default_cache() - target_path = os.path.join(extract_path, archive_name+'-tmp', *names) - return target_path - -def postprocess(tempname, filename): - pass - -def set_extraction_path(path): - pass - -def cleanup_resources(force=False): - pass - -def get_distribution(dist): - return Distribution(dist) - -_namespace_packages = {} -""" - ) - - -register_module_extender(MANAGER, "pkg_resources", pkg_resources_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_pytest.py b/backend/venv/Lib/site-packages/astroid/brain/brain_pytest.py deleted file mode 100644 index 56202ab85fd29596620a9b9d8c3f086f2f77f917..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_pytest.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2014-2016, 2018 Claudiu Popa -# Copyright (c) 2014 Jeff Quast -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2016 Florian Bruhin -# Copyright (c) 2016 Ceridwen - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for pytest.""" -from __future__ import absolute_import -from astroid import MANAGER, register_module_extender -from astroid.builder import AstroidBuilder - - -def pytest_transform(): - return AstroidBuilder(MANAGER).string_build( - """ - -try: - import _pytest.mark - import _pytest.recwarn - import _pytest.runner - import _pytest.python - import _pytest.skipping - import _pytest.assertion -except ImportError: - pass -else: - deprecated_call = _pytest.recwarn.deprecated_call - warns = _pytest.recwarn.warns - - exit = _pytest.runner.exit - fail = _pytest.runner.fail - skip = _pytest.runner.skip - importorskip = _pytest.runner.importorskip - - xfail = _pytest.skipping.xfail - mark = _pytest.mark.MarkGenerator() - raises = _pytest.python.raises - - # New in pytest 3.0 - try: - approx = _pytest.python.approx - register_assert_rewrite = _pytest.assertion.register_assert_rewrite - except AttributeError: - pass - - -# Moved in pytest 3.0 - -try: - import _pytest.freeze_support - freeze_includes = _pytest.freeze_support.freeze_includes -except ImportError: - try: - import _pytest.genscript - freeze_includes = _pytest.genscript.freeze_includes - except ImportError: - pass - -try: - import _pytest.debugging - set_trace = _pytest.debugging.pytestPDB().set_trace -except ImportError: - try: - import _pytest.pdb - set_trace = _pytest.pdb.pytestPDB().set_trace - except ImportError: - pass - -try: - import _pytest.fixtures - fixture = _pytest.fixtures.fixture - yield_fixture = _pytest.fixtures.yield_fixture -except ImportError: - try: - import _pytest.python - fixture = _pytest.python.fixture - yield_fixture = _pytest.python.yield_fixture - except ImportError: - pass -""" - ) - - -register_module_extender(MANAGER, "pytest", pytest_transform) -register_module_extender(MANAGER, "py.test", pytest_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_qt.py b/backend/venv/Lib/site-packages/astroid/brain/brain_qt.py deleted file mode 100644 index b703b373e41d2be429175b50ad5894b379b1c006..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_qt.py +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2016 Ceridwen -# Copyright (c) 2017 Roy Wright -# Copyright (c) 2018 Ashley Whetter -# Copyright (c) 2019 Antoine Boellinger - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for the PyQT library.""" - -from astroid import MANAGER, register_module_extender -from astroid.builder import AstroidBuilder -from astroid import nodes -from astroid import parse - - -def _looks_like_signal(node, signal_name="pyqtSignal"): - if "__class__" in node.instance_attrs: - try: - cls = node.instance_attrs["__class__"][0] - return cls.name == signal_name - except AttributeError: - # return False if the cls does not have a name attribute - pass - return False - - -def transform_pyqt_signal(node): - module = parse( - """ - class pyqtSignal(object): - def connect(self, slot, type=None, no_receiver_check=False): - pass - def disconnect(self, slot): - pass - def emit(self, *args): - pass - """ - ) - signal_cls = module["pyqtSignal"] - node.instance_attrs["emit"] = signal_cls["emit"] - node.instance_attrs["disconnect"] = signal_cls["disconnect"] - node.instance_attrs["connect"] = signal_cls["connect"] - - -def transform_pyside_signal(node): - module = parse( - """ - class NotPySideSignal(object): - def connect(self, receiver, type=None): - pass - def disconnect(self, receiver): - pass - def emit(self, *args): - pass - """ - ) - signal_cls = module["NotPySideSignal"] - node.instance_attrs["connect"] = signal_cls["connect"] - node.instance_attrs["disconnect"] = signal_cls["disconnect"] - node.instance_attrs["emit"] = signal_cls["emit"] - - -def pyqt4_qtcore_transform(): - return AstroidBuilder(MANAGER).string_build( - """ - -def SIGNAL(signal_name): pass - -class QObject(object): - def emit(self, signal): pass -""" - ) - - -register_module_extender(MANAGER, "PyQt4.QtCore", pyqt4_qtcore_transform) -MANAGER.register_transform(nodes.FunctionDef, transform_pyqt_signal, _looks_like_signal) -MANAGER.register_transform( - nodes.ClassDef, - transform_pyside_signal, - lambda node: node.qname() in ("PySide.QtCore.Signal", "PySide2.QtCore.Signal"), -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_random.py b/backend/venv/Lib/site-packages/astroid/brain/brain_random.py deleted file mode 100644 index 5ec858a1c42b6cc725534236df5c9645d348e606..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_random.py +++ /dev/null @@ -1,75 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import random - -import astroid -from astroid import helpers -from astroid import MANAGER - - -ACCEPTED_ITERABLES_FOR_SAMPLE = (astroid.List, astroid.Set, astroid.Tuple) - - -def _clone_node_with_lineno(node, parent, lineno): - cls = node.__class__ - other_fields = node._other_fields - _astroid_fields = node._astroid_fields - init_params = {"lineno": lineno, "col_offset": node.col_offset, "parent": parent} - postinit_params = {param: getattr(node, param) for param in _astroid_fields} - if other_fields: - init_params.update({param: getattr(node, param) for param in other_fields}) - new_node = cls(**init_params) - if hasattr(node, "postinit") and _astroid_fields: - new_node.postinit(**postinit_params) - return new_node - - -def infer_random_sample(node, context=None): - if len(node.args) != 2: - raise astroid.UseInferenceDefault - - length = node.args[1] - if not isinstance(length, astroid.Const): - raise astroid.UseInferenceDefault - if not isinstance(length.value, int): - raise astroid.UseInferenceDefault - - inferred_sequence = helpers.safe_infer(node.args[0], context=context) - if not inferred_sequence: - raise astroid.UseInferenceDefault - - if not isinstance(inferred_sequence, ACCEPTED_ITERABLES_FOR_SAMPLE): - raise astroid.UseInferenceDefault - - if length.value > len(inferred_sequence.elts): - # In this case, this will raise a ValueError - raise astroid.UseInferenceDefault - - try: - elts = random.sample(inferred_sequence.elts, length.value) - except ValueError: - raise astroid.UseInferenceDefault - - new_node = astroid.List( - lineno=node.lineno, col_offset=node.col_offset, parent=node.scope() - ) - new_elts = [ - _clone_node_with_lineno(elt, parent=new_node, lineno=new_node.lineno) - for elt in elts - ] - new_node.postinit(new_elts) - return iter((new_node,)) - - -def _looks_like_random_sample(node): - func = node.func - if isinstance(func, astroid.Attribute): - return func.attrname == "sample" - if isinstance(func, astroid.Name): - return func.name == "sample" - return False - - -MANAGER.register_transform( - astroid.Call, astroid.inference_tip(infer_random_sample), _looks_like_random_sample -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_re.py b/backend/venv/Lib/site-packages/astroid/brain/brain_re.py deleted file mode 100644 index c7ee51a5afb30ebbf7e4a6ee0b2bc2444c6fa52a..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_re.py +++ /dev/null @@ -1,36 +0,0 @@ -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import sys -import astroid - -PY36 = sys.version_info >= (3, 6) - -if PY36: - # Since Python 3.6 there is the RegexFlag enum - # where every entry will be exposed via updating globals() - - def _re_transform(): - return astroid.parse( - """ - import sre_compile - ASCII = sre_compile.SRE_FLAG_ASCII - IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE - LOCALE = sre_compile.SRE_FLAG_LOCALE - UNICODE = sre_compile.SRE_FLAG_UNICODE - MULTILINE = sre_compile.SRE_FLAG_MULTILINE - DOTALL = sre_compile.SRE_FLAG_DOTALL - VERBOSE = sre_compile.SRE_FLAG_VERBOSE - A = ASCII - I = IGNORECASE - L = LOCALE - U = UNICODE - M = MULTILINE - S = DOTALL - X = VERBOSE - TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE - T = TEMPLATE - DEBUG = sre_compile.SRE_FLAG_DEBUG - """ - ) - - astroid.register_module_extender(astroid.MANAGER, "re", _re_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_responses.py b/backend/venv/Lib/site-packages/astroid/brain/brain_responses.py deleted file mode 100644 index 3a4412980d4c2b8e5b34c959fbac1f0af04ffbb0..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_responses.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -Astroid hooks for responses. - -It might need to be manually updated from the public methods of -:class:`responses.RequestsMock`. - -See: https://github.com/getsentry/responses/blob/master/responses.py - -""" -import astroid - - -def responses_funcs(): - return astroid.parse( - """ - DELETE = "DELETE" - GET = "GET" - HEAD = "HEAD" - OPTIONS = "OPTIONS" - PATCH = "PATCH" - POST = "POST" - PUT = "PUT" - response_callback = None - - def reset(): - return - - def add( - method=None, # method or ``Response`` - url=None, - body="", - adding_headers=None, - *args, - **kwargs - ): - return - - def add_passthru(prefix): - return - - def remove(method_or_response=None, url=None): - return - - def replace(method_or_response=None, url=None, body="", *args, **kwargs): - return - - def add_callback( - method, url, callback, match_querystring=False, content_type="text/plain" - ): - return - - calls = [] - - def __enter__(): - return - - def __exit__(type, value, traceback): - success = type is None - return success - - def activate(func): - return func - - def start(): - return - - def stop(allow_assert=True): - return - """ - ) - - -astroid.register_module_extender(astroid.MANAGER, "responses", responses_funcs) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py b/backend/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py deleted file mode 100644 index 4d00c6c9d7c2debcecf0923b9f46ed4459143e69..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2019 Valentin Valls - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for scipy.signal module.""" - -import astroid - - -def scipy_signal(): - return astroid.parse( - """ - # different functions defined in scipy.signals - - def barthann(M, sym=True): - return numpy.ndarray([0]) - - def bartlett(M, sym=True): - return numpy.ndarray([0]) - - def blackman(M, sym=True): - return numpy.ndarray([0]) - - def blackmanharris(M, sym=True): - return numpy.ndarray([0]) - - def bohman(M, sym=True): - return numpy.ndarray([0]) - - def boxcar(M, sym=True): - return numpy.ndarray([0]) - - def chebwin(M, at, sym=True): - return numpy.ndarray([0]) - - def cosine(M, sym=True): - return numpy.ndarray([0]) - - def exponential(M, center=None, tau=1.0, sym=True): - return numpy.ndarray([0]) - - def flattop(M, sym=True): - return numpy.ndarray([0]) - - def gaussian(M, std, sym=True): - return numpy.ndarray([0]) - - def general_gaussian(M, p, sig, sym=True): - return numpy.ndarray([0]) - - def hamming(M, sym=True): - return numpy.ndarray([0]) - - def hann(M, sym=True): - return numpy.ndarray([0]) - - def hanning(M, sym=True): - return numpy.ndarray([0]) - - def impulse2(system, X0=None, T=None, N=None, **kwargs): - return numpy.ndarray([0]), numpy.ndarray([0]) - - def kaiser(M, beta, sym=True): - return numpy.ndarray([0]) - - def nuttall(M, sym=True): - return numpy.ndarray([0]) - - def parzen(M, sym=True): - return numpy.ndarray([0]) - - def slepian(M, width, sym=True): - return numpy.ndarray([0]) - - def step2(system, X0=None, T=None, N=None, **kwargs): - return numpy.ndarray([0]), numpy.ndarray([0]) - - def triang(M, sym=True): - return numpy.ndarray([0]) - - def tukey(M, alpha=0.5, sym=True): - return numpy.ndarray([0]) - """ - ) - - -astroid.register_module_extender(astroid.MANAGER, "scipy.signal", scipy_signal) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_six.py b/backend/venv/Lib/site-packages/astroid/brain/brain_six.py deleted file mode 100644 index 46d9fa32904ab3d73d42de2d1a21a9965cc1f544..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_six.py +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2014-2016, 2018, 2020 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2018 Bryce Guinta - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - - -"""Astroid hooks for six module.""" - -from textwrap import dedent - -from astroid import MANAGER, register_module_extender -from astroid.builder import AstroidBuilder -from astroid.exceptions import ( - AstroidBuildingError, - InferenceError, - AttributeInferenceError, -) -from astroid import nodes - - -SIX_ADD_METACLASS = "six.add_metaclass" - - -def _indent(text, prefix, predicate=None): - """Adds 'prefix' to the beginning of selected lines in 'text'. - - If 'predicate' is provided, 'prefix' will only be added to the lines - where 'predicate(line)' is True. If 'predicate' is not provided, - it will default to adding 'prefix' to all non-empty lines that do not - consist solely of whitespace characters. - """ - if predicate is None: - predicate = lambda line: line.strip() - - def prefixed_lines(): - for line in text.splitlines(True): - yield prefix + line if predicate(line) else line - - return "".join(prefixed_lines()) - - -_IMPORTS = """ -import _io -cStringIO = _io.StringIO -filter = filter -from itertools import filterfalse -input = input -from sys import intern -map = map -range = range -from importlib import reload -reload_module = lambda module: reload(module) -from functools import reduce -from shlex import quote as shlex_quote -from io import StringIO -from collections import UserDict, UserList, UserString -xrange = range -zip = zip -from itertools import zip_longest -import builtins -import configparser -import copyreg -import _dummy_thread -import http.cookiejar as http_cookiejar -import http.cookies as http_cookies -import html.entities as html_entities -import html.parser as html_parser -import http.client as http_client -import http.server as http_server -BaseHTTPServer = CGIHTTPServer = SimpleHTTPServer = http.server -import pickle as cPickle -import queue -import reprlib -import socketserver -import _thread -import winreg -import xmlrpc.server as xmlrpc_server -import xmlrpc.client as xmlrpc_client -import urllib.robotparser as urllib_robotparser -import email.mime.multipart as email_mime_multipart -import email.mime.nonmultipart as email_mime_nonmultipart -import email.mime.text as email_mime_text -import email.mime.base as email_mime_base -import urllib.parse as urllib_parse -import urllib.error as urllib_error -import tkinter -import tkinter.dialog as tkinter_dialog -import tkinter.filedialog as tkinter_filedialog -import tkinter.scrolledtext as tkinter_scrolledtext -import tkinter.simpledialog as tkinder_simpledialog -import tkinter.tix as tkinter_tix -import tkinter.ttk as tkinter_ttk -import tkinter.constants as tkinter_constants -import tkinter.dnd as tkinter_dnd -import tkinter.colorchooser as tkinter_colorchooser -import tkinter.commondialog as tkinter_commondialog -import tkinter.filedialog as tkinter_tkfiledialog -import tkinter.font as tkinter_font -import tkinter.messagebox as tkinter_messagebox -import urllib -import urllib.request as urllib_request -import urllib.robotparser as urllib_robotparser -import urllib.parse as urllib_parse -import urllib.error as urllib_error -""" - - -def six_moves_transform(): - code = dedent( - """ - class Moves(object): - {} - moves = Moves() - """ - ).format(_indent(_IMPORTS, " ")) - module = AstroidBuilder(MANAGER).string_build(code) - module.name = "six.moves" - return module - - -def _six_fail_hook(modname): - """Fix six.moves imports due to the dynamic nature of this - class. - - Construct a pseudo-module which contains all the necessary imports - for six - - :param modname: Name of failed module - :type modname: str - - :return: An astroid module - :rtype: nodes.Module - """ - - attribute_of = modname != "six.moves" and modname.startswith("six.moves") - if modname != "six.moves" and not attribute_of: - raise AstroidBuildingError(modname=modname) - module = AstroidBuilder(MANAGER).string_build(_IMPORTS) - module.name = "six.moves" - if attribute_of: - # Facilitate import of submodules in Moves - start_index = len(module.name) - attribute = modname[start_index:].lstrip(".").replace(".", "_") - try: - import_attr = module.getattr(attribute)[0] - except AttributeInferenceError: - raise AstroidBuildingError(modname=modname) - if isinstance(import_attr, nodes.Import): - submodule = MANAGER.ast_from_module_name(import_attr.names[0][0]) - return submodule - # Let dummy submodule imports pass through - # This will cause an Uninferable result, which is okay - return module - - -def _looks_like_decorated_with_six_add_metaclass(node): - if not node.decorators: - return False - - for decorator in node.decorators.nodes: - if not isinstance(decorator, nodes.Call): - continue - if decorator.func.as_string() == SIX_ADD_METACLASS: - return True - return False - - -def transform_six_add_metaclass(node): - """Check if the given class node is decorated with *six.add_metaclass* - - If so, inject its argument as the metaclass of the underlying class. - """ - if not node.decorators: - return - - for decorator in node.decorators.nodes: - if not isinstance(decorator, nodes.Call): - continue - - try: - func = next(decorator.func.infer()) - except InferenceError: - continue - if func.qname() == SIX_ADD_METACLASS and decorator.args: - metaclass = decorator.args[0] - node._metaclass = metaclass - return node - - -register_module_extender(MANAGER, "six", six_moves_transform) -register_module_extender( - MANAGER, "requests.packages.urllib3.packages.six", six_moves_transform -) -MANAGER.register_failed_import_hook(_six_fail_hook) -MANAGER.register_transform( - nodes.ClassDef, - transform_six_add_metaclass, - _looks_like_decorated_with_six_add_metaclass, -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_ssl.py b/backend/venv/Lib/site-packages/astroid/brain/brain_ssl.py deleted file mode 100644 index 2ae21c3530e5c98c590af3f45990c3f5bf10884e..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_ssl.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright (c) 2016, 2018 Claudiu Popa -# Copyright (c) 2016 Ceridwen -# Copyright (c) 2019 Benjamin Elven <25181435+S3ntinelX@users.noreply.github.com> - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for the ssl library.""" - -from astroid import MANAGER, register_module_extender -from astroid.builder import AstroidBuilder -from astroid import nodes -from astroid import parse - - -def ssl_transform(): - return parse( - """ - from _ssl import OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_INFO, OPENSSL_VERSION - from _ssl import _SSLContext, MemoryBIO - from _ssl import ( - SSLError, SSLZeroReturnError, SSLWantReadError, SSLWantWriteError, - SSLSyscallError, SSLEOFError, - ) - from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED - from _ssl import txt2obj as _txt2obj, nid2obj as _nid2obj - from _ssl import RAND_status, RAND_add, RAND_bytes, RAND_pseudo_bytes - try: - from _ssl import RAND_egd - except ImportError: - # LibreSSL does not provide RAND_egd - pass - from _ssl import (OP_ALL, OP_CIPHER_SERVER_PREFERENCE, - OP_NO_COMPRESSION, OP_NO_SSLv2, OP_NO_SSLv3, - OP_NO_TLSv1, OP_NO_TLSv1_1, OP_NO_TLSv1_2, - OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE) - - from _ssl import (ALERT_DESCRIPTION_ACCESS_DENIED, ALERT_DESCRIPTION_BAD_CERTIFICATE, - ALERT_DESCRIPTION_BAD_CERTIFICATE_HASH_VALUE, - ALERT_DESCRIPTION_BAD_CERTIFICATE_STATUS_RESPONSE, - ALERT_DESCRIPTION_BAD_RECORD_MAC, - ALERT_DESCRIPTION_CERTIFICATE_EXPIRED, - ALERT_DESCRIPTION_CERTIFICATE_REVOKED, - ALERT_DESCRIPTION_CERTIFICATE_UNKNOWN, - ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE, - ALERT_DESCRIPTION_CLOSE_NOTIFY, ALERT_DESCRIPTION_DECODE_ERROR, - ALERT_DESCRIPTION_DECOMPRESSION_FAILURE, - ALERT_DESCRIPTION_DECRYPT_ERROR, - ALERT_DESCRIPTION_HANDSHAKE_FAILURE, - ALERT_DESCRIPTION_ILLEGAL_PARAMETER, - ALERT_DESCRIPTION_INSUFFICIENT_SECURITY, - ALERT_DESCRIPTION_INTERNAL_ERROR, - ALERT_DESCRIPTION_NO_RENEGOTIATION, - ALERT_DESCRIPTION_PROTOCOL_VERSION, - ALERT_DESCRIPTION_RECORD_OVERFLOW, - ALERT_DESCRIPTION_UNEXPECTED_MESSAGE, - ALERT_DESCRIPTION_UNKNOWN_CA, - ALERT_DESCRIPTION_UNKNOWN_PSK_IDENTITY, - ALERT_DESCRIPTION_UNRECOGNIZED_NAME, - ALERT_DESCRIPTION_UNSUPPORTED_CERTIFICATE, - ALERT_DESCRIPTION_UNSUPPORTED_EXTENSION, - ALERT_DESCRIPTION_USER_CANCELLED) - from _ssl import (SSL_ERROR_EOF, SSL_ERROR_INVALID_ERROR_CODE, SSL_ERROR_SSL, - SSL_ERROR_SYSCALL, SSL_ERROR_WANT_CONNECT, SSL_ERROR_WANT_READ, - SSL_ERROR_WANT_WRITE, SSL_ERROR_WANT_X509_LOOKUP, SSL_ERROR_ZERO_RETURN) - from _ssl import VERIFY_CRL_CHECK_CHAIN, VERIFY_CRL_CHECK_LEAF, VERIFY_DEFAULT, VERIFY_X509_STRICT - from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN - from _ssl import _OPENSSL_API_VERSION - from _ssl import PROTOCOL_SSLv23, PROTOCOL_TLSv1, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2 - from _ssl import PROTOCOL_TLS, PROTOCOL_TLS_CLIENT, PROTOCOL_TLS_SERVER - """ - ) - - -register_module_extender(MANAGER, "ssl", ssl_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_subprocess.py b/backend/venv/Lib/site-packages/astroid/brain/brain_subprocess.py deleted file mode 100644 index ab7d5d7e4999f95f8900359022fb6947f3f47fec..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_subprocess.py +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright (c) 2016-2020 Claudiu Popa -# Copyright (c) 2017 Hugo -# Copyright (c) 2018 Peter Talley -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2019 Hugo van Kemenade - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -import sys -import textwrap - -import astroid - - -PY37 = sys.version_info >= (3, 7) -PY36 = sys.version_info >= (3, 6) - - -def _subprocess_transform(): - communicate = (bytes("string", "ascii"), bytes("string", "ascii")) - communicate_signature = "def communicate(self, input=None, timeout=None)" - if PY37: - init = """ - def __init__(self, args, bufsize=0, executable=None, - stdin=None, stdout=None, stderr=None, - preexec_fn=None, close_fds=False, shell=False, - cwd=None, env=None, universal_newlines=False, - startupinfo=None, creationflags=0, restore_signals=True, - start_new_session=False, pass_fds=(), *, - encoding=None, errors=None, text=None): - pass - """ - elif PY36: - init = """ - def __init__(self, args, bufsize=0, executable=None, - stdin=None, stdout=None, stderr=None, - preexec_fn=None, close_fds=False, shell=False, - cwd=None, env=None, universal_newlines=False, - startupinfo=None, creationflags=0, restore_signals=True, - start_new_session=False, pass_fds=(), *, - encoding=None, errors=None): - pass - """ - else: - init = """ - def __init__(self, args, bufsize=0, executable=None, - stdin=None, stdout=None, stderr=None, - preexec_fn=None, close_fds=False, shell=False, - cwd=None, env=None, universal_newlines=False, - startupinfo=None, creationflags=0, restore_signals=True, - start_new_session=False, pass_fds=()): - pass - """ - wait_signature = "def wait(self, timeout=None)" - ctx_manager = """ - def __enter__(self): return self - def __exit__(self, *args): pass - """ - py3_args = "args = []" - - if PY37: - check_output_signature = """ - check_output( - args, *, - stdin=None, - stderr=None, - shell=False, - cwd=None, - encoding=None, - errors=None, - universal_newlines=False, - timeout=None, - env=None, - text=None, - restore_signals=True, - preexec_fn=None, - pass_fds=(), - input=None, - start_new_session=False - ): - """.strip() - else: - check_output_signature = """ - check_output( - args, *, - stdin=None, - stderr=None, - shell=False, - cwd=None, - encoding=None, - errors=None, - universal_newlines=False, - timeout=None, - env=None, - restore_signals=True, - preexec_fn=None, - pass_fds=(), - input=None, - start_new_session=False - ): - """.strip() - - code = textwrap.dedent( - """ - def %(check_output_signature)s - if universal_newlines: - return "" - return b"" - - class Popen(object): - returncode = pid = 0 - stdin = stdout = stderr = file() - %(py3_args)s - - %(communicate_signature)s: - return %(communicate)r - %(wait_signature)s: - return self.returncode - def poll(self): - return self.returncode - def send_signal(self, signal): - pass - def terminate(self): - pass - def kill(self): - pass - %(ctx_manager)s - """ - % { - "check_output_signature": check_output_signature, - "communicate": communicate, - "communicate_signature": communicate_signature, - "wait_signature": wait_signature, - "ctx_manager": ctx_manager, - "py3_args": py3_args, - } - ) - - init_lines = textwrap.dedent(init).splitlines() - indented_init = "\n".join(" " * 4 + line for line in init_lines) - code += indented_init - return astroid.parse(code) - - -astroid.register_module_extender(astroid.MANAGER, "subprocess", _subprocess_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_threading.py b/backend/venv/Lib/site-packages/astroid/brain/brain_threading.py deleted file mode 100644 index ba3085b5e4c47d1df58349669e4e8757c3992538..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_threading.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2016, 2018-2019 Claudiu Popa -# Copyright (c) 2017 Łukasz Rogalski - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER -import astroid - - -def _thread_transform(): - return astroid.parse( - """ - class lock(object): - def acquire(self, blocking=True, timeout=-1): - return False - def release(self): - pass - def __enter__(self): - return True - def __exit__(self, *args): - pass - def locked(self): - return False - - def Lock(): - return lock() - """ - ) - - -astroid.register_module_extender(astroid.MANAGER, "threading", _thread_transform) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_typing.py b/backend/venv/Lib/site-packages/astroid/brain/brain_typing.py deleted file mode 100644 index 9ff72274ddd99e81d64d482c4502005ffde70588..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_typing.py +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2017-2018 Claudiu Popa -# Copyright (c) 2017 Łukasz Rogalski -# Copyright (c) 2017 David Euresti -# Copyright (c) 2018 Bryce Guinta - -"""Astroid hooks for typing.py support.""" -import typing - -from astroid import ( - MANAGER, - UseInferenceDefault, - extract_node, - inference_tip, - nodes, - InferenceError, -) - - -TYPING_NAMEDTUPLE_BASENAMES = {"NamedTuple", "typing.NamedTuple"} -TYPING_TYPEVARS = {"TypeVar", "NewType"} -TYPING_TYPEVARS_QUALIFIED = {"typing.TypeVar", "typing.NewType"} -TYPING_TYPE_TEMPLATE = """ -class Meta(type): - def __getitem__(self, item): - return self - - @property - def __args__(self): - return () - -class {0}(metaclass=Meta): - pass -""" -TYPING_MEMBERS = set(typing.__all__) - - -def looks_like_typing_typevar_or_newtype(node): - func = node.func - if isinstance(func, nodes.Attribute): - return func.attrname in TYPING_TYPEVARS - if isinstance(func, nodes.Name): - return func.name in TYPING_TYPEVARS - return False - - -def infer_typing_typevar_or_newtype(node, context=None): - """Infer a typing.TypeVar(...) or typing.NewType(...) call""" - try: - func = next(node.func.infer(context=context)) - except InferenceError as exc: - raise UseInferenceDefault from exc - - if func.qname() not in TYPING_TYPEVARS_QUALIFIED: - raise UseInferenceDefault - if not node.args: - raise UseInferenceDefault - - typename = node.args[0].as_string().strip("'") - node = extract_node(TYPING_TYPE_TEMPLATE.format(typename)) - return node.infer(context=context) - - -def _looks_like_typing_subscript(node): - """Try to figure out if a Subscript node *might* be a typing-related subscript""" - if isinstance(node, nodes.Name): - return node.name in TYPING_MEMBERS - elif isinstance(node, nodes.Attribute): - return node.attrname in TYPING_MEMBERS - elif isinstance(node, nodes.Subscript): - return _looks_like_typing_subscript(node.value) - return False - - -def infer_typing_attr(node, context=None): - """Infer a typing.X[...] subscript""" - try: - value = next(node.value.infer()) - except InferenceError as exc: - raise UseInferenceDefault from exc - - if not value.qname().startswith("typing."): - raise UseInferenceDefault - - node = extract_node(TYPING_TYPE_TEMPLATE.format(value.qname().split(".")[-1])) - return node.infer(context=context) - - -MANAGER.register_transform( - nodes.Call, - inference_tip(infer_typing_typevar_or_newtype), - looks_like_typing_typevar_or_newtype, -) -MANAGER.register_transform( - nodes.Subscript, inference_tip(infer_typing_attr), _looks_like_typing_subscript -) diff --git a/backend/venv/Lib/site-packages/astroid/brain/brain_uuid.py b/backend/venv/Lib/site-packages/astroid/brain/brain_uuid.py deleted file mode 100644 index 5a33fc2514c33f501d162f7fd4d09e67755fa257..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/brain/brain_uuid.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2017-2018 Claudiu Popa - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Astroid hooks for the UUID module.""" - - -from astroid import MANAGER -from astroid import nodes - - -def _patch_uuid_class(node): - # The .int member is patched using __dict__ - node.locals["int"] = [nodes.Const(0, parent=node)] - - -MANAGER.register_transform( - nodes.ClassDef, _patch_uuid_class, lambda node: node.qname() == "uuid.UUID" -) diff --git a/backend/venv/Lib/site-packages/astroid/builder.py b/backend/venv/Lib/site-packages/astroid/builder.py deleted file mode 100644 index 142764b140b34e3f1375ab909f85dee92399dd3f..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/builder.py +++ /dev/null @@ -1,455 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2006-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2013 Phil Schaf -# Copyright (c) 2014-2019 Claudiu Popa -# Copyright (c) 2014-2015 Google, Inc. -# Copyright (c) 2014 Alexander Presnyakov -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2016 Derek Gustafson -# Copyright (c) 2017 Łukasz Rogalski -# Copyright (c) 2018 Anthony Sottile - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""The AstroidBuilder makes astroid from living object and / or from _ast - -The builder is not thread safe and can't be used to parse different sources -at the same time. -""" - -import os -import textwrap -from tokenize import detect_encoding - -from astroid._ast import get_parser_module -from astroid import bases -from astroid import exceptions -from astroid import manager -from astroid import modutils -from astroid import raw_building -from astroid import rebuilder -from astroid import nodes -from astroid import util - -objects = util.lazy_import("objects") - -# The name of the transient function that is used to -# wrap expressions to be extracted when calling -# extract_node. -_TRANSIENT_FUNCTION = "__" - -# The comment used to select a statement to be extracted -# when calling extract_node. -_STATEMENT_SELECTOR = "#@" -MISPLACED_TYPE_ANNOTATION_ERROR = "misplaced type annotation" -MANAGER = manager.AstroidManager() - - -def open_source_file(filename): - with open(filename, "rb") as byte_stream: - encoding = detect_encoding(byte_stream.readline)[0] - stream = open(filename, "r", newline=None, encoding=encoding) - data = stream.read() - return stream, encoding, data - - -def _can_assign_attr(node, attrname): - try: - slots = node.slots() - except NotImplementedError: - pass - else: - if slots and attrname not in {slot.value for slot in slots}: - return False - return True - - -class AstroidBuilder(raw_building.InspectBuilder): - """Class for building an astroid tree from source code or from a live module. - - The param *manager* specifies the manager class which should be used. - If no manager is given, then the default one will be used. The - param *apply_transforms* determines if the transforms should be - applied after the tree was built from source or from a live object, - by default being True. - """ - - # pylint: disable=redefined-outer-name - def __init__(self, manager=None, apply_transforms=True): - super().__init__() - self._manager = manager or MANAGER - self._apply_transforms = apply_transforms - - def module_build(self, module, modname=None): - """Build an astroid from a living module instance.""" - node = None - path = getattr(module, "__file__", None) - if path is not None: - path_, ext = os.path.splitext(modutils._path_from_filename(path)) - if ext in (".py", ".pyc", ".pyo") and os.path.exists(path_ + ".py"): - node = self.file_build(path_ + ".py", modname) - if node is None: - # this is a built-in module - # get a partial representation by introspection - node = self.inspect_build(module, modname=modname, path=path) - if self._apply_transforms: - # We have to handle transformation by ourselves since the - # rebuilder isn't called for builtin nodes - node = self._manager.visit_transforms(node) - return node - - def file_build(self, path, modname=None): - """Build astroid from a source code file (i.e. from an ast) - - *path* is expected to be a python source file - """ - try: - stream, encoding, data = open_source_file(path) - except IOError as exc: - raise exceptions.AstroidBuildingError( - "Unable to load file {path}:\n{error}", - modname=modname, - path=path, - error=exc, - ) from exc - except (SyntaxError, LookupError) as exc: - raise exceptions.AstroidSyntaxError( - "Python 3 encoding specification error or unknown encoding:\n" - "{error}", - modname=modname, - path=path, - error=exc, - ) from exc - except UnicodeError as exc: # wrong encoding - # detect_encoding returns utf-8 if no encoding specified - raise exceptions.AstroidBuildingError( - "Wrong or no encoding specified for {filename}.", filename=path - ) from exc - with stream: - # get module name if necessary - if modname is None: - try: - modname = ".".join(modutils.modpath_from_file(path)) - except ImportError: - modname = os.path.splitext(os.path.basename(path))[0] - # build astroid representation - module = self._data_build(data, modname, path) - return self._post_build(module, encoding) - - def string_build(self, data, modname="", path=None): - """Build astroid from source code string.""" - module = self._data_build(data, modname, path) - module.file_bytes = data.encode("utf-8") - return self._post_build(module, "utf-8") - - def _post_build(self, module, encoding): - """Handles encoding and delayed nodes after a module has been built""" - module.file_encoding = encoding - self._manager.cache_module(module) - # post tree building steps after we stored the module in the cache: - for from_node in module._import_from_nodes: - if from_node.modname == "__future__": - for symbol, _ in from_node.names: - module.future_imports.add(symbol) - self.add_from_names_to_locals(from_node) - # handle delayed assattr nodes - for delayed in module._delayed_assattr: - self.delayed_assattr(delayed) - - # Visit the transforms - if self._apply_transforms: - module = self._manager.visit_transforms(module) - return module - - def _data_build(self, data, modname, path): - """Build tree node from data and add some informations""" - try: - node, parser_module = _parse_string(data, type_comments=True) - except (TypeError, ValueError, SyntaxError) as exc: - raise exceptions.AstroidSyntaxError( - "Parsing Python code failed:\n{error}", - source=data, - modname=modname, - path=path, - error=exc, - ) from exc - - if path is not None: - node_file = os.path.abspath(path) - else: - node_file = "" - if modname.endswith(".__init__"): - modname = modname[:-9] - package = True - else: - package = ( - path is not None - and os.path.splitext(os.path.basename(path))[0] == "__init__" - ) - builder = rebuilder.TreeRebuilder(self._manager, parser_module) - module = builder.visit_module(node, modname, node_file, package) - module._import_from_nodes = builder._import_from_nodes - module._delayed_assattr = builder._delayed_assattr - return module - - def add_from_names_to_locals(self, node): - """Store imported names to the locals - - Resort the locals if coming from a delayed node - """ - _key_func = lambda node: node.fromlineno - - def sort_locals(my_list): - my_list.sort(key=_key_func) - - for (name, asname) in node.names: - if name == "*": - try: - imported = node.do_import_module() - except exceptions.AstroidBuildingError: - continue - for name in imported.public_names(): - node.parent.set_local(name, node) - sort_locals(node.parent.scope().locals[name]) - else: - node.parent.set_local(asname or name, node) - sort_locals(node.parent.scope().locals[asname or name]) - - def delayed_assattr(self, node): - """Visit a AssAttr node - - This adds name to locals and handle members definition. - """ - try: - frame = node.frame() - for inferred in node.expr.infer(): - if inferred is util.Uninferable: - continue - try: - cls = inferred.__class__ - if cls is bases.Instance or cls is objects.ExceptionInstance: - inferred = inferred._proxied - iattrs = inferred.instance_attrs - if not _can_assign_attr(inferred, node.attrname): - continue - elif isinstance(inferred, bases.Instance): - # Const, Tuple or other containers that inherit from - # `Instance` - continue - elif inferred.is_function: - iattrs = inferred.instance_attrs - else: - iattrs = inferred.locals - except AttributeError: - # XXX log error - continue - values = iattrs.setdefault(node.attrname, []) - if node in values: - continue - # get assign in __init__ first XXX useful ? - if ( - frame.name == "__init__" - and values - and values[0].frame().name != "__init__" - ): - values.insert(0, node) - else: - values.append(node) - except exceptions.InferenceError: - pass - - -def build_namespace_package_module(name, path): - return nodes.Module(name, doc="", path=path, package=True) - - -def parse(code, module_name="", path=None, apply_transforms=True): - """Parses a source string in order to obtain an astroid AST from it - - :param str code: The code for the module. - :param str module_name: The name for the module, if any - :param str path: The path for the module - :param bool apply_transforms: - Apply the transforms for the give code. Use it if you - don't want the default transforms to be applied. - """ - code = textwrap.dedent(code) - builder = AstroidBuilder(manager=MANAGER, apply_transforms=apply_transforms) - return builder.string_build(code, modname=module_name, path=path) - - -def _extract_expressions(node): - """Find expressions in a call to _TRANSIENT_FUNCTION and extract them. - - The function walks the AST recursively to search for expressions that - are wrapped into a call to _TRANSIENT_FUNCTION. If it finds such an - expression, it completely removes the function call node from the tree, - replacing it by the wrapped expression inside the parent. - - :param node: An astroid node. - :type node: astroid.bases.NodeNG - :yields: The sequence of wrapped expressions on the modified tree - expression can be found. - """ - if ( - isinstance(node, nodes.Call) - and isinstance(node.func, nodes.Name) - and node.func.name == _TRANSIENT_FUNCTION - ): - real_expr = node.args[0] - real_expr.parent = node.parent - # Search for node in all _astng_fields (the fields checked when - # get_children is called) of its parent. Some of those fields may - # be lists or tuples, in which case the elements need to be checked. - # When we find it, replace it by real_expr, so that the AST looks - # like no call to _TRANSIENT_FUNCTION ever took place. - for name in node.parent._astroid_fields: - child = getattr(node.parent, name) - if isinstance(child, (list, tuple)): - for idx, compound_child in enumerate(child): - if compound_child is node: - child[idx] = real_expr - elif child is node: - setattr(node.parent, name, real_expr) - yield real_expr - else: - for child in node.get_children(): - yield from _extract_expressions(child) - - -def _find_statement_by_line(node, line): - """Extracts the statement on a specific line from an AST. - - If the line number of node matches line, it will be returned; - otherwise its children are iterated and the function is called - recursively. - - :param node: An astroid node. - :type node: astroid.bases.NodeNG - :param line: The line number of the statement to extract. - :type line: int - :returns: The statement on the line, or None if no statement for the line - can be found. - :rtype: astroid.bases.NodeNG or None - """ - if isinstance(node, (nodes.ClassDef, nodes.FunctionDef)): - # This is an inaccuracy in the AST: the nodes that can be - # decorated do not carry explicit information on which line - # the actual definition (class/def), but .fromline seems to - # be close enough. - node_line = node.fromlineno - else: - node_line = node.lineno - - if node_line == line: - return node - - for child in node.get_children(): - result = _find_statement_by_line(child, line) - if result: - return result - - return None - - -def extract_node(code, module_name=""): - """Parses some Python code as a module and extracts a designated AST node. - - Statements: - To extract one or more statement nodes, append #@ to the end of the line - - Examples: - >>> def x(): - >>> def y(): - >>> return 1 #@ - - The return statement will be extracted. - - >>> class X(object): - >>> def meth(self): #@ - >>> pass - - The function object 'meth' will be extracted. - - Expressions: - To extract arbitrary expressions, surround them with the fake - function call __(...). After parsing, the surrounded expression - will be returned and the whole AST (accessible via the returned - node's parent attribute) will look like the function call was - never there in the first place. - - Examples: - >>> a = __(1) - - The const node will be extracted. - - >>> def x(d=__(foo.bar)): pass - - The node containing the default argument will be extracted. - - >>> def foo(a, b): - >>> return 0 < __(len(a)) < b - - The node containing the function call 'len' will be extracted. - - If no statements or expressions are selected, the last toplevel - statement will be returned. - - If the selected statement is a discard statement, (i.e. an expression - turned into a statement), the wrapped expression is returned instead. - - For convenience, singleton lists are unpacked. - - :param str code: A piece of Python code that is parsed as - a module. Will be passed through textwrap.dedent first. - :param str module_name: The name of the module. - :returns: The designated node from the parse tree, or a list of nodes. - :rtype: astroid.bases.NodeNG, or a list of nodes. - """ - - def _extract(node): - if isinstance(node, nodes.Expr): - return node.value - - return node - - requested_lines = [] - for idx, line in enumerate(code.splitlines()): - if line.strip().endswith(_STATEMENT_SELECTOR): - requested_lines.append(idx + 1) - - tree = parse(code, module_name=module_name) - if not tree.body: - raise ValueError("Empty tree, cannot extract from it") - - extracted = [] - if requested_lines: - extracted = [_find_statement_by_line(tree, line) for line in requested_lines] - - # Modifies the tree. - extracted.extend(_extract_expressions(tree)) - - if not extracted: - extracted.append(tree.body[-1]) - - extracted = [_extract(node) for node in extracted] - if len(extracted) == 1: - return extracted[0] - return extracted - - -def _parse_string(data, type_comments=True): - parser_module = get_parser_module(type_comments=type_comments) - try: - parsed = parser_module.parse(data + "\n", type_comments=type_comments) - except SyntaxError as exc: - # If the type annotations are misplaced for some reason, we do not want - # to fail the entire parsing of the file, so we need to retry the parsing without - # type comment support. - if exc.args[0] != MISPLACED_TYPE_ANNOTATION_ERROR or not type_comments: - raise - - parser_module = get_parser_module(type_comments=False) - parsed = parser_module.parse(data + "\n", type_comments=False) - return parsed, parser_module diff --git a/backend/venv/Lib/site-packages/astroid/context.py b/backend/venv/Lib/site-packages/astroid/context.py deleted file mode 100644 index 40cebf222bb788146798474b4ece97daa44f3523..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/context.py +++ /dev/null @@ -1,179 +0,0 @@ -# Copyright (c) 2015-2016, 2018-2019 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2018 Bryce Guinta -# Copyright (c) 2018 Nick Drozd - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""Various context related utilities, including inference and call contexts.""" -import contextlib -import pprint -from typing import Optional - - -class InferenceContext: - """Provide context for inference - - Store already inferred nodes to save time - Account for already visited nodes to infinite stop infinite recursion - """ - - __slots__ = ( - "path", - "lookupname", - "callcontext", - "boundnode", - "inferred", - "extra_context", - ) - - def __init__(self, path=None, inferred=None): - self.path = path or set() - """ - :type: set(tuple(NodeNG, optional(str))) - - Path of visited nodes and their lookupname - - Currently this key is ``(node, context.lookupname)`` - """ - self.lookupname = None - """ - :type: optional[str] - - The original name of the node - - e.g. - foo = 1 - The inference of 'foo' is nodes.Const(1) but the lookup name is 'foo' - """ - self.callcontext = None - """ - :type: optional[CallContext] - - The call arguments and keywords for the given context - """ - self.boundnode = None - """ - :type: optional[NodeNG] - - The bound node of the given context - - e.g. the bound node of object.__new__(cls) is the object node - """ - self.inferred = inferred or {} - """ - :type: dict(seq, seq) - - Inferred node contexts to their mapped results - Currently the key is ``(node, lookupname, callcontext, boundnode)`` - and the value is tuple of the inferred results - """ - self.extra_context = {} - """ - :type: dict(NodeNG, Context) - - Context that needs to be passed down through call stacks - for call arguments - """ - - def push(self, node): - """Push node into inference path - - :return: True if node is already in context path else False - :rtype: bool - - Allows one to see if the given node has already - been looked at for this inference context""" - name = self.lookupname - if (node, name) in self.path: - return True - - self.path.add((node, name)) - return False - - def clone(self): - """Clone inference path - - For example, each side of a binary operation (BinOp) - starts with the same context but diverge as each side is inferred - so the InferenceContext will need be cloned""" - # XXX copy lookupname/callcontext ? - clone = InferenceContext(self.path, inferred=self.inferred) - clone.callcontext = self.callcontext - clone.boundnode = self.boundnode - clone.extra_context = self.extra_context - return clone - - def cache_generator(self, key, generator): - """Cache result of generator into dictionary - - Used to cache inference results""" - results = [] - for result in generator: - results.append(result) - yield result - - self.inferred[key] = tuple(results) - - @contextlib.contextmanager - def restore_path(self): - path = set(self.path) - yield - self.path = path - - def __str__(self): - state = ( - "%s=%s" - % (field, pprint.pformat(getattr(self, field), width=80 - len(field))) - for field in self.__slots__ - ) - return "%s(%s)" % (type(self).__name__, ",\n ".join(state)) - - -class CallContext: - """Holds information for a call site.""" - - __slots__ = ("args", "keywords") - - def __init__(self, args, keywords=None): - """ - :param List[NodeNG] args: Call positional arguments - :param Union[List[nodes.Keyword], None] keywords: Call keywords - """ - self.args = args - if keywords: - keywords = [(arg.arg, arg.value) for arg in keywords] - else: - keywords = [] - self.keywords = keywords - - -def copy_context(context: Optional[InferenceContext]) -> InferenceContext: - """Clone a context if given, or return a fresh contexxt""" - if context is not None: - return context.clone() - - return InferenceContext() - - -def bind_context_to_node(context, node): - """Give a context a boundnode - to retrieve the correct function name or attribute value - with from further inference. - - Do not use an existing context since the boundnode could then - be incorrectly propagated higher up in the call stack. - - :param context: Context to use - :type context: Optional(context) - - :param node: Node to do name lookups from - :type node NodeNG: - - :returns: A new context - :rtype: InferenceContext - """ - context = copy_context(context) - context.boundnode = node - return context diff --git a/backend/venv/Lib/site-packages/astroid/decorators.py b/backend/venv/Lib/site-packages/astroid/decorators.py deleted file mode 100644 index 0f3632c48db1df5144f64794e12775c4bea9c4a2..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/decorators.py +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright (c) 2015-2016, 2018 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2015 Florian Bruhin -# Copyright (c) 2016 Derek Gustafson -# Copyright (c) 2018 Nick Drozd -# Copyright (c) 2018 Tomas Gavenciak -# Copyright (c) 2018 Ashley Whetter -# Copyright (c) 2018 HoverHell -# Copyright (c) 2018 Bryce Guinta - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -""" A few useful function/method decorators.""" - -import functools - -import wrapt - -from astroid import context as contextmod -from astroid import exceptions -from astroid import util - - -@wrapt.decorator -def cached(func, instance, args, kwargs): - """Simple decorator to cache result of method calls without args.""" - cache = getattr(instance, "__cache", None) - if cache is None: - instance.__cache = cache = {} - try: - return cache[func] - except KeyError: - cache[func] = result = func(*args, **kwargs) - return result - - -class cachedproperty: - """ Provides a cached property equivalent to the stacking of - @cached and @property, but more efficient. - - After first usage, the becomes part of the object's - __dict__. Doing: - - del obj. empties the cache. - - Idea taken from the pyramid_ framework and the mercurial_ project. - - .. _pyramid: http://pypi.python.org/pypi/pyramid - .. _mercurial: http://pypi.python.org/pypi/Mercurial - """ - - __slots__ = ("wrapped",) - - def __init__(self, wrapped): - try: - wrapped.__name__ - except AttributeError as exc: - raise TypeError("%s must have a __name__ attribute" % wrapped) from exc - self.wrapped = wrapped - - @property - def __doc__(self): - doc = getattr(self.wrapped, "__doc__", None) - return "%s" % ( - "\n%s" % doc if doc else "" - ) - - def __get__(self, inst, objtype=None): - if inst is None: - return self - val = self.wrapped(inst) - setattr(inst, self.wrapped.__name__, val) - return val - - -def path_wrapper(func): - """return the given infer function wrapped to handle the path - - Used to stop inference if the node has already been looked - at for a given `InferenceContext` to prevent infinite recursion - """ - - @functools.wraps(func) - def wrapped(node, context=None, _func=func, **kwargs): - """wrapper function handling context""" - if context is None: - context = contextmod.InferenceContext() - if context.push(node): - return None - - yielded = set() - generator = _func(node, context, **kwargs) - try: - while True: - res = next(generator) - # unproxy only true instance, not const, tuple, dict... - if res.__class__.__name__ == "Instance": - ares = res._proxied - else: - ares = res - if ares not in yielded: - yield res - yielded.add(ares) - except StopIteration as error: - if error.args: - return error.args[0] - return None - - return wrapped - - -@wrapt.decorator -def yes_if_nothing_inferred(func, instance, args, kwargs): - generator = func(*args, **kwargs) - - try: - yield next(generator) - except StopIteration: - # generator is empty - yield util.Uninferable - return - - yield from generator - - -@wrapt.decorator -def raise_if_nothing_inferred(func, instance, args, kwargs): - generator = func(*args, **kwargs) - - try: - yield next(generator) - except StopIteration as error: - # generator is empty - if error.args: - # pylint: disable=not-a-mapping - raise exceptions.InferenceError(**error.args[0]) - raise exceptions.InferenceError( - "StopIteration raised without any error information." - ) - - yield from generator diff --git a/backend/venv/Lib/site-packages/astroid/exceptions.py b/backend/venv/Lib/site-packages/astroid/exceptions.py deleted file mode 100644 index 08e72c13709dbfa3ebeb290f35806c5babaf69c2..0000000000000000000000000000000000000000 --- a/backend/venv/Lib/site-packages/astroid/exceptions.py +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright (c) 2007, 2009-2010, 2013 LOGILAB S.A. (Paris, FRANCE) -# Copyright (c) 2014 Google, Inc. -# Copyright (c) 2015-2018 Claudiu Popa -# Copyright (c) 2015-2016 Ceridwen -# Copyright (c) 2016 Derek Gustafson -# Copyright (c) 2018 Bryce Guinta - -# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html -# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER - -"""this module contains exceptions used in the astroid library -""" -from astroid import util - - -class AstroidError(Exception): - """base exception class for all astroid related exceptions - - AstroidError and its subclasses are structured, intended to hold - objects representing state when the exception is thrown. Field - values are passed to the constructor as keyword-only arguments. - Each subclass has its own set of standard fields, but use your - best judgment to decide whether a specific exception instance - needs more or fewer fields for debugging. Field values may be - used to lazily generate the error message: self.message.format() - will be called with the field names and values supplied as keyword - arguments. - """ - - def __init__(self, message="", **kws): - super().__init__(message) - self.message = message - for key, value in kws.items(): - setattr(self, key, value) - - def __str__(self): - return self.message.format(**vars(self)) - - -class AstroidBuildingError(AstroidError): - """exception class when we are unable to build an astroid representation - - Standard attributes: - modname: Name of the module that AST construction failed for. - error: Exception raised during construction. - """ - - def __init__(self, message="Failed to import module {modname}.", **kws): - super().__init__(message, **kws) - - -class AstroidImportError(AstroidBuildingError): - """Exception class used when a module can't be imported by astroid.""" - - -class TooManyLevelsError(AstroidImportError): - """Exception class which is raised when a relative import was beyond the top-level. - - Standard attributes: - level: The level which was attempted. - name: the name of the module on which the relative import was attempted. - """ - - level = None - name = None - - def __init__( - self, - message="Relative import with too many levels " "({level}) for module {name!r}", - **kws - ): - super().__init__(message, **kws) - - -class AstroidSyntaxError(AstroidBuildingError): - """Exception class used when a module can't be parsed.""" - - -class NoDefault(AstroidError): - """raised by function's `default_value` method when an argument has - no default value - - Standard attributes: - func: Function node. - name: Name of argument without a default. - """ - - func = None - name = None - - def __init__(self, message="{func!r} has no default for {name!r}.", **kws): - super().__init__(message, **kws) - - -class ResolveError(AstroidError): - """Base class of astroid resolution/inference error. - - ResolveError is not intended to be raised. - - Standard attributes: - context: InferenceContext object. - """ - - context = None - - -class MroError(ResolveError): - """Error raised when there is a problem with method resolution of a class. - - Standard attributes: - mros: A sequence of sequences containing ClassDef nodes. - cls: ClassDef node whose MRO resolution failed. - context: InferenceContext object. - """ - - mros = () - cls = None - - def __str__(self): - mro_names = ", ".join( - "({})".format(", ".join(b.name for b in m)) for m in self.mros - ) - return self.message.format(mros=mro_names, cls=self.cls) - - -class DuplicateBasesError(MroError): - """Error raised when there are duplicate bases in the same class bases.""" - - -class InconsistentMroError(MroError): - """Error raised when a class's MRO is inconsistent.""" - - -class SuperError(ResolveError): - """Error raised when there is a problem with a *super* call. - - Standard attributes: - *super_*: The Super instance that raised the exception. - context: InferenceContext object. - """ - - super_ = None - - def __str__(self): - return self.message.format(**vars(self.super_)) - - -class InferenceError(ResolveError): - """raised when we are unable to infer a node - - Standard attributes: - node: The node inference was called on. -