jamlib 3.2.0b1__tar.gz → 3.2.0b2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jamlib-3.2.0b1/src/jamlib.egg-info → jamlib-3.2.0b2}/PKG-INFO +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/pyproject.toml +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__init__.py +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/flask/extensions.py +3 -2
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/middleware.py +4 -3
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/plugins.py +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/starlette/backends.py +3 -2
- jamlib-3.2.0b2/src/jam/jose/__init__.py +55 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__init__.py +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/tests/clients.py +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/tests/fakers.py +1 -1
- {jamlib-3.2.0b1 → jamlib-3.2.0b2/src/jamlib.egg-info}/PKG-INFO +1 -1
- jamlib-3.2.0b1/src/jam/jose/__init__.py +0 -19
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/LICENSE.md +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/README.md +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/setup.cfg +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__base_encoder__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__deprecated__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/instance.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/jwt/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/github.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/gitlab.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/google.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/yandex.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/client.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/json.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/redis.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/cli.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/commands/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/commands/keys.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/commands/password.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/encoders.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/base.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/jose.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/jwt.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/oauth2.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/paseto.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/plugins.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/sessions.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/fastapi/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/flask/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/flask/objects.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/objects.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/starlette/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/starlette/objects.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/instance.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/__algorithms__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jwe.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jwk.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jws.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jwt.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/json.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/memory.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/redis.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/utils.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__algorithms__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__types__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/json.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/redis.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/module.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/utils.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/logger.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/github.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/gitlab.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/google.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/yandex.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/client.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/hotp.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/totp.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/utils.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v1.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v2.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v3.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v4.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/py.typed +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/__base__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/json.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/redis.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/tests/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/__init__.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/aes.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/await_maybe.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/basic_auth.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/config_maker.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/ed.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/otp_keys.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/rsa.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/salt_hash.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/symmetric.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/xchacha20poly1305.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/xor.py +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/SOURCES.txt +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/dependency_links.txt +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/entry_points.txt +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/requires.txt +0 -0
- {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/top_level.txt +0 -0
|
@@ -5,7 +5,7 @@ from typing import Any
|
|
|
5
5
|
import flask
|
|
6
6
|
|
|
7
7
|
from jam.exceptions import JamFlaskPluginConfigError
|
|
8
|
-
from jam.
|
|
8
|
+
from jam.jose import create_instance as create_jwt
|
|
9
9
|
from jam.oauth2 import create_instance as create_oauth2
|
|
10
10
|
from jam.paseto import create_instance as create_paseto
|
|
11
11
|
from jam.sessions import create_instance as create_session
|
|
@@ -170,7 +170,8 @@ class JWTExtension(BaseAuthExtension):
|
|
|
170
170
|
if not token:
|
|
171
171
|
return None
|
|
172
172
|
try:
|
|
173
|
-
|
|
173
|
+
result = self._auth.decode(token)
|
|
174
|
+
payload = result.get("payload", result)
|
|
174
175
|
flask.g.payload = payload
|
|
175
176
|
return payload
|
|
176
177
|
except Exception:
|
|
@@ -11,7 +11,7 @@ from litestar.middleware import (
|
|
|
11
11
|
from jam.aio.sessions.__base__ import BaseAsyncSessionModule
|
|
12
12
|
from jam.exceptions import JamLitestarPluginConfigError, JamLitestarPluginError
|
|
13
13
|
from jam.ext.litestar.objects import BaseUser, Token
|
|
14
|
-
from jam.
|
|
14
|
+
from jam.jose.__base__ import BaseJWT as JWTClass
|
|
15
15
|
from jam.paseto import BasePASETO
|
|
16
16
|
|
|
17
17
|
|
|
@@ -46,7 +46,7 @@ class BaseMiddleware(AbstractAuthenticationMiddleware):
|
|
|
46
46
|
class JWTMiddleware(BaseMiddleware):
|
|
47
47
|
"""JWT Middleware for litestar."""
|
|
48
48
|
|
|
49
|
-
AUTH_MODULE:
|
|
49
|
+
AUTH_MODULE: JWTClass
|
|
50
50
|
LIST: bool = False
|
|
51
51
|
|
|
52
52
|
async def authenticate_request( # noqa
|
|
@@ -57,7 +57,8 @@ class JWTMiddleware(BaseMiddleware):
|
|
|
57
57
|
if not token:
|
|
58
58
|
return AuthenticationResult(user=None, auth=token_model)
|
|
59
59
|
try:
|
|
60
|
-
|
|
60
|
+
result = self.AUTH_MODULE.decode(token)
|
|
61
|
+
data = result.get("payload", result)
|
|
61
62
|
if self.AUTH_MODULE.list and self.LIST:
|
|
62
63
|
match self.AUTH_MODULE.list.__list_type__:
|
|
63
64
|
case "white":
|
|
@@ -16,7 +16,7 @@ from jam.ext.litestar.middleware import (
|
|
|
16
16
|
SessionMiddleware,
|
|
17
17
|
)
|
|
18
18
|
from jam.ext.litestar.objects import BaseUser
|
|
19
|
-
from jam.
|
|
19
|
+
from jam.jose import create_instance as create_jwt
|
|
20
20
|
from jam.oauth2 import create_instance as create_oauth2
|
|
21
21
|
from jam.paseto import create_instance as create_paseto
|
|
22
22
|
from jam.utils.config_maker import GENERIC_POINTER, __config_maker__
|
|
@@ -14,7 +14,7 @@ from starlette.requests import HTTPConnection
|
|
|
14
14
|
from jam.aio.sessions import create_instance as create_session
|
|
15
15
|
from jam.exceptions import JamStarlettePluginConfigError
|
|
16
16
|
from jam.ext.starlette.objects import BaseUser, SimpleUser
|
|
17
|
-
from jam.
|
|
17
|
+
from jam.jose import create_instance as create_jwt
|
|
18
18
|
from jam.paseto import create_instance as create_paseto
|
|
19
19
|
from jam.utils.config_maker import GENERIC_POINTER, __config_maker__
|
|
20
20
|
|
|
@@ -141,7 +141,8 @@ class JWTBackend(BaseBackend):
|
|
|
141
141
|
if self._auth.list.check(token):
|
|
142
142
|
return AuthCredentials(None), UnauthenticatedUser()
|
|
143
143
|
data = self._auth.decode(token)
|
|
144
|
-
|
|
144
|
+
payload = data.get("payload", data)
|
|
145
|
+
user = self._user.from_payload(payload)
|
|
145
146
|
return AuthCredentials(["authenticated"]), user
|
|
146
147
|
|
|
147
148
|
return AuthCredentials(None), UnauthenticatedUser()
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
"""JOSE tools."""
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from jam.jose.jwk import JWK, JWKOct, JWKSet, JWKRSA, JWKEC
|
|
8
|
+
from jam.jose.jws import JWS
|
|
9
|
+
from jam.jose.jwe import JWE
|
|
10
|
+
from jam.jose.jwt import JWT
|
|
11
|
+
from jam.logger import BaseLogger, logger
|
|
12
|
+
from jam.encoders import BaseEncoder, JsonEncoder
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def create_instance(
|
|
16
|
+
alg: str,
|
|
17
|
+
secret: Any = None,
|
|
18
|
+
secret_key: Any = None,
|
|
19
|
+
password: str | bytes | None = None,
|
|
20
|
+
list: dict[str, Any] | None = None,
|
|
21
|
+
logger: BaseLogger = logger,
|
|
22
|
+
serializer: BaseEncoder | type[BaseEncoder] = JsonEncoder,
|
|
23
|
+
**kwargs: Any,
|
|
24
|
+
) -> JWT:
|
|
25
|
+
"""Create JWT instance."""
|
|
26
|
+
if secret is None and secret_key is not None:
|
|
27
|
+
secret = secret_key
|
|
28
|
+
elif secret is None:
|
|
29
|
+
raise ValueError("Either 'secret' or 'secret_key' must be provided")
|
|
30
|
+
|
|
31
|
+
key = secret
|
|
32
|
+
if isinstance(secret, JWK):
|
|
33
|
+
key = secret._to_keylike()
|
|
34
|
+
|
|
35
|
+
return JWT(
|
|
36
|
+
alg=alg,
|
|
37
|
+
secret_key=key,
|
|
38
|
+
password=password,
|
|
39
|
+
list=list,
|
|
40
|
+
serializer=serializer,
|
|
41
|
+
logger=logger,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
__all__ = [
|
|
46
|
+
"JWK",
|
|
47
|
+
"JWKSet",
|
|
48
|
+
"JWS",
|
|
49
|
+
"JWE",
|
|
50
|
+
"JWT",
|
|
51
|
+
"JWKRSA",
|
|
52
|
+
"JWKEC",
|
|
53
|
+
"JWKOct",
|
|
54
|
+
"create_instance",
|
|
55
|
+
]
|
|
@@ -7,7 +7,7 @@ import uuid
|
|
|
7
7
|
|
|
8
8
|
from jam.aio import Jam as AioJam
|
|
9
9
|
from jam.instance import Jam
|
|
10
|
-
from jam.
|
|
10
|
+
from jam.jose.utils import __base64url_decode__ as base64url_decode
|
|
11
11
|
from jam.tests.fakers import (
|
|
12
12
|
fake_jwt_token,
|
|
13
13
|
fake_oauth2_token,
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
"""JOSE tools."""
|
|
4
|
-
|
|
5
|
-
from jam.jose.jwk import JWK, JWKOct, JWKSet, JWKRSA, JWKEC
|
|
6
|
-
from jam.jose.jws import JWS
|
|
7
|
-
from jam.jose.jwe import JWE
|
|
8
|
-
from jam.jose.jwt import JWT
|
|
9
|
-
|
|
10
|
-
__all__ = [
|
|
11
|
-
"JWK",
|
|
12
|
-
"JWKSet",
|
|
13
|
-
"JWS",
|
|
14
|
-
"JWE",
|
|
15
|
-
"JWT",
|
|
16
|
-
"JWKRSA",
|
|
17
|
-
"JWKEC",
|
|
18
|
-
"JWKOct",
|
|
19
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|