cuenca 1.0.3.dev0__tar.gz → 1.0.3.dev1__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.
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/PKG-INFO +1 -1
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/__init__.py +2 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/__init__.py +2 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/base.py +12 -13
- cuenca-1.0.3.dev1/cuenca/resources/otps.py +24 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/version.py +1 -1
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca.egg-info/PKG-INFO +1 -1
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca.egg-info/SOURCES.txt +2 -0
- cuenca-1.0.3.dev1/tests/resources/test_otps.py +28 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/LICENSE +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/README.md +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/exc.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/http/__init__.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/http/client.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/jwt.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/py.typed +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/accounts.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/api_keys.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/arpc.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/balance_entries.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/bill_payments.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/card_activations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/card_transactions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/card_validations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/cards.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/cash_references.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/clabes.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/commissions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/curp_validations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/deposits.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/endpoints.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/file_batches.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/files.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/identities.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/identity_events.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/kyc_validations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/kyc_verifications.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/limited_wallets.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/login_tokens.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/platforms.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/questionnaires.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/resources.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/savings.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/service_providers.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/sessions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/statements.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/transfers.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/user_credentials.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/user_events.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/user_lists_validation.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/user_logins.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/users.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/verifications.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/wallet_transactions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/webhooks.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca/resources/whatsapp_transfers.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca.egg-info/dependency_links.txt +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca.egg-info/requires.txt +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/cuenca.egg-info/top_level.txt +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/setup.cfg +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/setup.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/__init__.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/conftest.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/http/__init__.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/http/conftest.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/http/test_client.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/__init__.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_accounts.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_api_keys.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_arpc.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_balance_entries.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_bill_payments.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_card_activations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_card_transactions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_card_validations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_cards.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_cash_references.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_clabes.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_commissions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_curp_validations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_deposits.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_endpoints.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_file_batches.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_files.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_identities.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_identity_events.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_kyc_validations.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_kyc_verifications.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_limited_wallets.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_login_tokens.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_platforms.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_questionnaires.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_resources.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_savings.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_service_providers.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_sessions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_statements.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_transfers.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_user_credentials.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_user_events.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_user_lists_validation.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_user_logins.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_users.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_verifications.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_wallet_transactions.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_webhooks.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/resources/test_whatsapp_transfers.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/test_cuenca.py +0 -0
- {cuenca-1.0.3.dev0 → cuenca-1.0.3.dev1}/tests/test_jwt.py +0 -0
|
@@ -23,6 +23,7 @@ __all__ = [
|
|
|
23
23
|
'KYCVerification',
|
|
24
24
|
'LimitedWallet',
|
|
25
25
|
'LoginToken',
|
|
26
|
+
'Otp',
|
|
26
27
|
'Platform',
|
|
27
28
|
'Questionnaires',
|
|
28
29
|
'Saving',
|
|
@@ -70,6 +71,7 @@ from .resources import (
|
|
|
70
71
|
KYCVerification,
|
|
71
72
|
LimitedWallet,
|
|
72
73
|
LoginToken,
|
|
74
|
+
Otp,
|
|
73
75
|
Platform,
|
|
74
76
|
Questionnaires,
|
|
75
77
|
Saving,
|
|
@@ -22,6 +22,7 @@ __all__ = [
|
|
|
22
22
|
'KYCVerification',
|
|
23
23
|
'LimitedWallet',
|
|
24
24
|
'LoginToken',
|
|
25
|
+
'Otp',
|
|
25
26
|
'Platform',
|
|
26
27
|
'Questionnaires',
|
|
27
28
|
'Saving',
|
|
@@ -62,6 +63,7 @@ from .kyc_validations import KYCValidation
|
|
|
62
63
|
from .kyc_verifications import KYCVerification
|
|
63
64
|
from .limited_wallets import LimitedWallet
|
|
64
65
|
from .login_tokens import LoginToken
|
|
66
|
+
from .otps import Otp
|
|
65
67
|
from .platforms import Platform
|
|
66
68
|
from .questionnaires import Questionnaires
|
|
67
69
|
from .resources import RESOURCES
|
|
@@ -2,7 +2,7 @@ import base64
|
|
|
2
2
|
import datetime as dt
|
|
3
3
|
import json
|
|
4
4
|
from io import BytesIO
|
|
5
|
-
from typing import ClassVar, Generator, Optional, Type, TypeVar
|
|
5
|
+
from typing import ClassVar, Generator, Optional, Type, TypeVar, cast
|
|
6
6
|
from urllib.parse import urlencode
|
|
7
7
|
|
|
8
8
|
from cuenca_validations.types import (
|
|
@@ -18,7 +18,6 @@ from ..exc import MultipleResultsFound, NoResultFound
|
|
|
18
18
|
from ..http import Session, session as global_session
|
|
19
19
|
|
|
20
20
|
R_co = TypeVar('R_co', bound='Resource', covariant=True)
|
|
21
|
-
Q_co = TypeVar('Q_co', bound='Queryable', covariant=True)
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
class Resource(BaseModel):
|
|
@@ -138,9 +137,9 @@ class Queryable(Resource):
|
|
|
138
137
|
|
|
139
138
|
@classmethod
|
|
140
139
|
def one(
|
|
141
|
-
cls: Type[
|
|
142
|
-
) ->
|
|
143
|
-
q = cls._query_params(limit=2, **query_params)
|
|
140
|
+
cls: Type[R_co], *, session: Session = global_session, **query_params
|
|
141
|
+
) -> R_co:
|
|
142
|
+
q = cast(Queryable, cls)._query_params(limit=2, **query_params)
|
|
144
143
|
resp = session.get(cls._resource, q.dict())
|
|
145
144
|
items = resp['items']
|
|
146
145
|
len_items = len(items)
|
|
@@ -152,9 +151,9 @@ class Queryable(Resource):
|
|
|
152
151
|
|
|
153
152
|
@classmethod
|
|
154
153
|
def first(
|
|
155
|
-
cls: Type[
|
|
156
|
-
) -> Optional[
|
|
157
|
-
q = cls._query_params(limit=1, **query_params)
|
|
154
|
+
cls: Type[R_co], *, session: Session = global_session, **query_params
|
|
155
|
+
) -> Optional[R_co]:
|
|
156
|
+
q = cast(Queryable, cls)._query_params(limit=1, **query_params)
|
|
158
157
|
resp = session.get(cls._resource, q.dict())
|
|
159
158
|
try:
|
|
160
159
|
item = resp['items'][0]
|
|
@@ -166,18 +165,18 @@ class Queryable(Resource):
|
|
|
166
165
|
|
|
167
166
|
@classmethod
|
|
168
167
|
def count(
|
|
169
|
-
cls: Type[
|
|
168
|
+
cls: Type[R_co], *, session: Session = global_session, **query_params
|
|
170
169
|
) -> int:
|
|
171
|
-
q = cls._query_params(count=True, **query_params)
|
|
170
|
+
q = cast(Queryable, cls)._query_params(count=True, **query_params)
|
|
172
171
|
resp = session.get(cls._resource, q.dict())
|
|
173
172
|
return resp['count']
|
|
174
173
|
|
|
175
174
|
@classmethod
|
|
176
175
|
def all(
|
|
177
|
-
cls: Type[
|
|
178
|
-
) -> Generator[
|
|
176
|
+
cls: Type[R_co], *, session: Session = global_session, **query_params
|
|
177
|
+
) -> Generator[R_co, None, None]:
|
|
179
178
|
session = session or global_session
|
|
180
|
-
q = cls._query_params(**query_params)
|
|
179
|
+
q = cast(Queryable, cls)._query_params(**query_params)
|
|
181
180
|
next_page_uri = f'{cls._resource}?{urlencode(q.dict())}'
|
|
182
181
|
while next_page_uri:
|
|
183
182
|
page = session.get(next_page_uri)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import ClassVar, cast
|
|
2
|
+
|
|
3
|
+
from ..http import Session, session as global_session
|
|
4
|
+
from .base import Creatable
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Otp(Creatable):
|
|
8
|
+
_resource: ClassVar = 'otps'
|
|
9
|
+
secret: str
|
|
10
|
+
|
|
11
|
+
class Config:
|
|
12
|
+
schema_extra = {
|
|
13
|
+
'example': {
|
|
14
|
+
'id': 'OTNEUInh69SuKXXmK95sROwQ',
|
|
15
|
+
'secret': 'somesecret',
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@classmethod
|
|
20
|
+
def create(cls, session: Session = global_session) -> 'Otp':
|
|
21
|
+
"""
|
|
22
|
+
Use this method to create a OTP seed
|
|
23
|
+
"""
|
|
24
|
+
return cast('Otp', cls._create(session=session))
|
|
@@ -39,6 +39,7 @@ cuenca/resources/kyc_validations.py
|
|
|
39
39
|
cuenca/resources/kyc_verifications.py
|
|
40
40
|
cuenca/resources/limited_wallets.py
|
|
41
41
|
cuenca/resources/login_tokens.py
|
|
42
|
+
cuenca/resources/otps.py
|
|
42
43
|
cuenca/resources/platforms.py
|
|
43
44
|
cuenca/resources/questionnaires.py
|
|
44
45
|
cuenca/resources/resources.py
|
|
@@ -87,6 +88,7 @@ tests/resources/test_kyc_validations.py
|
|
|
87
88
|
tests/resources/test_kyc_verifications.py
|
|
88
89
|
tests/resources/test_limited_wallets.py
|
|
89
90
|
tests/resources/test_login_tokens.py
|
|
91
|
+
tests/resources/test_otps.py
|
|
90
92
|
tests/resources/test_platforms.py
|
|
91
93
|
tests/resources/test_questionnaires.py
|
|
92
94
|
tests/resources/test_resources.py
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from cuenca import LoginToken, Otp, UserLogin
|
|
4
|
+
from cuenca.http.client import Session
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@pytest.fixture(scope='function')
|
|
8
|
+
def session():
|
|
9
|
+
session = Session()
|
|
10
|
+
session.configure(
|
|
11
|
+
'api_key',
|
|
12
|
+
'api_secret',
|
|
13
|
+
sandbox=True,
|
|
14
|
+
)
|
|
15
|
+
return session
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@pytest.mark.vcr
|
|
19
|
+
def test_otps(session):
|
|
20
|
+
UserLogin.create('111111', session=session)
|
|
21
|
+
login_token = LoginToken.create(session=session)
|
|
22
|
+
session.headers.pop(
|
|
23
|
+
'X-Cuenca-LoginId',
|
|
24
|
+
)
|
|
25
|
+
session.configure(login_token=login_token.id)
|
|
26
|
+
otp = Otp.create()
|
|
27
|
+
assert otp
|
|
28
|
+
assert type(otp.secret) == str
|
|
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
|