remove yfinance provider from repo (#7576)

This commit is contained in:
Danglewood
2026-07-08 03:19:12 -07:00
committed by GitHub
parent 6ba0fb59f8
commit 7a9ad1ecf1
68 changed files with 0 additions and 110819 deletions

View File

@@ -1,13 +0,0 @@
# OpenBB Yahoo!Finance Provider
This extension integrates the [Yahoo!Finance](https://finance.yahoo.com/) data provider into the OpenBB Platform.
## Installation
To install the extension:
```bash
pip install openbb-yfinance
```
Documentation available [here](https://docs.openbb.co/platform/developer_guide/contributing).

View File

@@ -1 +0,0 @@
"""YFinance provider."""

View File

@@ -1,79 +0,0 @@
"""Yahoo Finance provider module."""
from openbb_core.provider.abstract.provider import Provider
from openbb_yfinance.models.active import YFActiveFetcher
from openbb_yfinance.models.aggressive_small_caps import YFAggressiveSmallCapsFetcher
from openbb_yfinance.models.available_indices import YFinanceAvailableIndicesFetcher
from openbb_yfinance.models.balance_sheet import YFinanceBalanceSheetFetcher
from openbb_yfinance.models.cash_flow import YFinanceCashFlowStatementFetcher
from openbb_yfinance.models.company_news import YFinanceCompanyNewsFetcher
from openbb_yfinance.models.crypto_historical import YFinanceCryptoHistoricalFetcher
from openbb_yfinance.models.currency_historical import YFinanceCurrencyHistoricalFetcher
from openbb_yfinance.models.equity_historical import YFinanceEquityHistoricalFetcher
from openbb_yfinance.models.equity_profile import YFinanceEquityProfileFetcher
from openbb_yfinance.models.equity_quote import YFinanceEquityQuoteFetcher
from openbb_yfinance.models.equity_screener import YFinanceEquityScreenerFetcher
from openbb_yfinance.models.etf_info import YFinanceEtfInfoFetcher
from openbb_yfinance.models.futures_curve import YFinanceFuturesCurveFetcher
from openbb_yfinance.models.futures_historical import YFinanceFuturesHistoricalFetcher
from openbb_yfinance.models.gainers import YFGainersFetcher
from openbb_yfinance.models.growth_tech_equities import YFGrowthTechEquitiesFetcher
from openbb_yfinance.models.historical_dividends import (
YFinanceHistoricalDividendsFetcher,
)
from openbb_yfinance.models.income_statement import YFinanceIncomeStatementFetcher
from openbb_yfinance.models.index_historical import (
YFinanceIndexHistoricalFetcher,
)
from openbb_yfinance.models.key_executives import YFinanceKeyExecutivesFetcher
from openbb_yfinance.models.key_metrics import YFinanceKeyMetricsFetcher
from openbb_yfinance.models.losers import YFLosersFetcher
from openbb_yfinance.models.options_chains import YFinanceOptionsChainsFetcher
from openbb_yfinance.models.price_target_consensus import (
YFinancePriceTargetConsensusFetcher,
)
from openbb_yfinance.models.share_statistics import YFinanceShareStatisticsFetcher
from openbb_yfinance.models.undervalued_growth_equities import (
YFUndervaluedGrowthEquitiesFetcher,
)
from openbb_yfinance.models.undervalued_large_caps import YFUndervaluedLargeCapsFetcher
yfinance_provider = Provider(
name="yfinance",
website="https://finance.yahoo.com",
description="""Yahoo! Finance is a web-based platform that offers financial news,
data, and tools for investors and individuals interested in tracking and analyzing
financial markets and assets.""",
fetcher_dict={
"AvailableIndices": YFinanceAvailableIndicesFetcher,
"BalanceSheet": YFinanceBalanceSheetFetcher,
"CashFlowStatement": YFinanceCashFlowStatementFetcher,
"CompanyNews": YFinanceCompanyNewsFetcher,
"CryptoHistorical": YFinanceCryptoHistoricalFetcher,
"CurrencyHistorical": YFinanceCurrencyHistoricalFetcher,
"EquityActive": YFActiveFetcher,
"EquityAggressiveSmallCaps": YFAggressiveSmallCapsFetcher,
"EquityGainers": YFGainersFetcher,
"EquityHistorical": YFinanceEquityHistoricalFetcher,
"EquityInfo": YFinanceEquityProfileFetcher,
"EquityLosers": YFLosersFetcher,
"EquityQuote": YFinanceEquityQuoteFetcher,
"EquityScreener": YFinanceEquityScreenerFetcher,
"EquityUndervaluedGrowth": YFUndervaluedGrowthEquitiesFetcher,
"EquityUndervaluedLargeCaps": YFUndervaluedLargeCapsFetcher,
"EtfHistorical": YFinanceEquityHistoricalFetcher,
"EtfInfo": YFinanceEtfInfoFetcher,
"FuturesCurve": YFinanceFuturesCurveFetcher,
"FuturesHistorical": YFinanceFuturesHistoricalFetcher,
"GrowthTechEquities": YFGrowthTechEquitiesFetcher,
"HistoricalDividends": YFinanceHistoricalDividendsFetcher,
"IncomeStatement": YFinanceIncomeStatementFetcher,
"IndexHistorical": YFinanceIndexHistoricalFetcher,
"KeyExecutives": YFinanceKeyExecutivesFetcher,
"KeyMetrics": YFinanceKeyMetricsFetcher,
"OptionsChains": YFinanceOptionsChainsFetcher,
"PriceTargetConsensus": YFinancePriceTargetConsensusFetcher,
"ShareStatistics": YFinanceShareStatisticsFetcher,
},
repr_name="Yahoo Finance",
)

View File

@@ -1 +0,0 @@
"""Yahoo Finance models directory."""

View File

@@ -1,90 +0,0 @@
"""Yahoo Finance Asset Performance Active Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFActiveQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Most Active Query.
Source: https://finance.yahoo.com/screener/predefined/most_actives
"""
limit: int | None = Field(
default=200,
description="Limit the number of results.",
)
class YFActiveData(YFPredefinedScreenerData):
"""Yahoo Finance Most Active Data."""
class YFActiveFetcher(Fetcher[YFActiveQueryParams, list[YFActiveData]]):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFActiveQueryParams:
"""Transform query params."""
return YFActiveQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFActiveQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
body = {
"offset": 0,
"size": 250,
"sortField": "eodvolume",
"sortType": "desc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "gt", "operands": ["intradaymarketcap", 2000000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{"operator": "gt", "operands": ["davolume", 1000000]},
{"operator": "gt", "operands": ["intradayprice", 5]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFActiveData]:
"""Transform data."""
return [
YFActiveData.model_validate(d)
for d in sorted(
data,
key=lambda x: x["regularMarketVolume"],
reverse=query.sort == "desc",
)
]

View File

@@ -1,89 +0,0 @@
"""Yahoo Finance Aggressive Small Caps Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFAggressiveSmallCapsQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Aggressive Small Caps Query.
Source: https://finance.yahoo.com/screener/predefined/aggressive_small_caps
"""
limit: int | None = Field(
default=None,
description="Limit the number of results. Default is all.",
)
class YFAggressiveSmallCapsData(YFPredefinedScreenerData):
"""Yahoo Finance Aggressive Small Caps Data."""
class YFAggressiveSmallCapsFetcher(
Fetcher[YFAggressiveSmallCapsQueryParams, list[YFAggressiveSmallCapsData]]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFAggressiveSmallCapsQueryParams:
"""Transform query params."""
return YFAggressiveSmallCapsQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFAggressiveSmallCapsQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
# The predefined screener doesn't match what yFinance has for the settings. We'll have to create our own.
body = {
"offset": 0,
"size": 250,
"sortField": "totalrevenues1yrgrowth.lasttwelvemonths",
"sortType": "desc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "lt", "operands": ["intradaymarketcap", 2000000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{"operator": "gt", "operands": ["epsgrowth.lasttwelvemonths", 25]},
{"operator": "gt", "operands": ["intradayprice", 5]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFAggressiveSmallCapsData]:
"""Transform data."""
return sorted(
[YFAggressiveSmallCapsData.model_validate(d) for d in data],
key=lambda x: x.percent_change,
reverse=query.sort == "desc",
)

View File

@@ -1,68 +0,0 @@
"""Yahoo Finance Available Indices Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.available_indices import (
AvailableIndicesData,
AvailableIndicesQueryParams,
)
from openbb_yfinance.utils.references import INDICES
from pydantic import Field
class YFinanceAvailableIndicesQueryParams(AvailableIndicesQueryParams):
"""Yahoo Finance Available Indices Query.
Source: https://finance.yahoo.com/
"""
class YFinanceAvailableIndicesData(AvailableIndicesData):
"""Yahoo Finance Available Indices Data."""
__alias_dict__ = {
"symbol": "ticker",
}
code: str = Field(
description="ID code for keying the index in the OpenBB Terminal."
)
symbol: str = Field(description="Symbol for the index.")
class YFinanceAvailableIndicesFetcher(
Fetcher[
YFinanceAvailableIndicesQueryParams,
list[YFinanceAvailableIndicesData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceAvailableIndicesQueryParams:
"""Transform the query params."""
return YFinanceAvailableIndicesQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceAvailableIndicesQueryParams, # pylint disable=unused-argument
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the data."""
from pandas import DataFrame # pylint: disable=import-outside-toplevel
indices = DataFrame(INDICES).transpose().reset_index()
indices.columns = ["code", "name", "ticker"]
return indices.to_dict("records")
@staticmethod
def transform_data(
query: YFinanceAvailableIndicesQueryParams, data: list[dict], **kwargs: Any
) -> list[YFinanceAvailableIndicesData]:
"""Return the transformed data."""
return [YFinanceAvailableIndicesData.model_validate(d) for d in data]

View File

@@ -1,118 +0,0 @@
"""Yahoo Finance Balance Sheet Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.balance_sheet import (
BalanceSheetData,
BalanceSheetQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from pydantic import Field, field_validator
class YFinanceBalanceSheetQueryParams(BalanceSheetQueryParams):
"""Yahoo Finance Balance Sheet Query.
Source: https://finance.yahoo.com/
"""
__json_schema_extra__ = {
"period": {
"choices": ["annual", "quarter"],
}
}
period: Literal["annual", "quarter"] = Field(
default="annual",
description=QUERY_DESCRIPTIONS.get("period", ""),
)
limit: int | None = Field(
default=5,
description=QUERY_DESCRIPTIONS.get("limit", ""),
le=5,
)
class YFinanceBalanceSheetData(BalanceSheetData):
"""Yahoo Finance Balance Sheet Data."""
__alias_dict__ = {
"short_term_investments": "other_short_term_investments",
"net_receivables": "receivables",
"inventories": "inventory",
"total_current_assets": "current_assets",
"plant_property_equipment_gross": "gross_ppe",
"plant_property_equipment_net": "net_ppe",
"total_common_equity": "stockholders_equity",
"total_equity_non_controlling_interests": "total_equity_gross_minority_interest",
}
@field_validator("period_ending", mode="before", check_fields=False)
@classmethod
def date_validate(cls, v): # pylint: disable=E0213
"""Return datetime object from string."""
if isinstance(v, str):
return datetime.strptime(v, "%Y-%m-%d %H:%M:%S").date()
return v
class YFinanceBalanceSheetFetcher(
Fetcher[
YFinanceBalanceSheetQueryParams,
list[YFinanceBalanceSheetData],
]
):
"""Yahoo Finance Balance Sheet Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceBalanceSheetQueryParams:
"""Transform the query parameters."""
return YFinanceBalanceSheetQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceBalanceSheetQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the data from the Yahoo Finance endpoints."""
# pylint: disable=import-outside-toplevel
import json # noqa
from numpy import nan
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_core.provider.utils.helpers import (
to_snake_case,
)
from yfinance import Ticker
period = "yearly" if query.period == "annual" else "quarterly" # type: ignore
data = Ticker(query.symbol).get_balance_sheet(
as_dict=False, pretty=False, freq=period
)
if data is None:
raise EmptyDataError()
if query.limit:
data = data.iloc[:, : query.limit]
data.index = [to_snake_case(i) for i in data.index]
data = data.reset_index().sort_index(ascending=False).set_index("index")
data = data.replace({nan: None}).to_dict()
data = [{"period_ending": str(key), **value} for key, value in data.items()]
data = json.loads(json.dumps(data))
return data
@staticmethod
def transform_data(
query: YFinanceBalanceSheetQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceBalanceSheetData]:
"""Transform the data."""
return [YFinanceBalanceSheetData.model_validate(d) for d in data]

View File

@@ -1,116 +0,0 @@
"""Yahoo Finance Cash Flow Statement Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.cash_flow import (
CashFlowStatementData,
CashFlowStatementQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from pydantic import Field, field_validator
class YFinanceCashFlowStatementQueryParams(CashFlowStatementQueryParams):
"""Yahoo Finance Cash Flow Statement Query.
Source: https://finance.yahoo.com/
"""
__json_schema_extra__ = {
"period": {
"choices": ["annual", "quarter"],
}
}
period: Literal["annual", "quarter"] = Field(
default="annual",
description=QUERY_DESCRIPTIONS.get("period", ""),
)
limit: int | None = Field(
default=5,
description=QUERY_DESCRIPTIONS.get("limit", ""),
le=5,
)
class YFinanceCashFlowStatementData(CashFlowStatementData):
"""Yahoo Finance Cash Flow Statement Data."""
__alias_dict__ = {
"investments_in_property_plant_and_equipment": "purchase_of_ppe",
"issuance_of_common_equity": "common_stock_issuance",
"repurchase_of_common_equity": "common_stock_payments",
"cash_dividends_paid": "payment_of_dividends",
"net_change_in_cash_and_equivalents": "changes_in_cash",
}
@field_validator("period_ending", mode="before", check_fields=False)
@classmethod
def date_validate(cls, v):
"""Return datetime object from string."""
if isinstance(v, str):
return datetime.strptime(v, "%Y-%m-%d %H:%M:%S").date()
return v
class YFinanceCashFlowStatementFetcher(
Fetcher[
YFinanceCashFlowStatementQueryParams,
list[YFinanceCashFlowStatementData],
]
):
"""Yahoo Finance Cash Flow Statement Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceCashFlowStatementQueryParams:
"""Transform the query parameters."""
return YFinanceCashFlowStatementQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceCashFlowStatementQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[YFinanceCashFlowStatementData]:
"""Extract the data from the Yahoo Finance endpoints."""
# pylint: disable=import-outside-toplevel
import json # noqa
from numpy import nan
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_core.provider.utils.helpers import (
to_snake_case,
)
from yfinance import Ticker
period = "yearly" if query.period == "annual" else "quarterly" # type: ignore
data = Ticker(query.symbol).get_cash_flow(
as_dict=False, pretty=False, freq=period
)
if data is None:
raise EmptyDataError()
if query.limit:
data = data.iloc[:, : query.limit]
data.index = [to_snake_case(i) for i in data.index]
data = data.reset_index().sort_index(ascending=False).set_index("index")
data = data.replace({nan: None}).to_dict()
data = [{"period_ending": str(key), **value} for key, value in data.items()]
data = json.loads(json.dumps(data))
return data
@staticmethod
def transform_data(
query: YFinanceCashFlowStatementQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceCashFlowStatementData]:
"""Transform the data."""
return [YFinanceCashFlowStatementData.model_validate(d) for d in data]

View File

@@ -1,157 +0,0 @@
"""Yahoo Finance Company News Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.company_news import (
CompanyNewsData,
CompanyNewsQueryParams,
)
from pydantic import Field, field_validator
class YFinanceCompanyNewsQueryParams(CompanyNewsQueryParams):
"""YFinance Company News Query.
Source: https://finance.yahoo.com/news/
"""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
@field_validator("symbol", mode="before", check_fields=False)
@classmethod
def _symbol_mandatory(cls, v):
"""Symbol mandatory validator."""
if not v:
raise ValueError("Required field missing -> symbol")
return v
class YFinanceCompanyNewsData(CompanyNewsData):
"""YFinance Company News Data."""
source: str | None = Field(default=None, description="Source of the news article")
class YFinanceCompanyNewsFetcher(
Fetcher[
YFinanceCompanyNewsQueryParams,
list[YFinanceCompanyNewsData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceCompanyNewsQueryParams:
"""Transform query params."""
return YFinanceCompanyNewsQueryParams(**params)
@staticmethod
async def aextract_data(
query,
credentials=None,
**kwargs,
) -> list[dict]:
"""Extract the raw data from YFinance and normalize to CompanyNewsData schema."""
# pylint: disable=import-outside-toplevel
import asyncio
from warnings import warn
from openbb_core.provider.utils.errors import EmptyDataError
from yfinance import Ticker
symbols = [s.strip() for s in query.symbol.split(",") if s.strip()]
results: list[dict] = []
def _normalize_news_item(item: dict, sym: str) -> dict | None:
"""Flatten the response."""
if not isinstance(item, dict):
return None
content = item.get("content")
if not isinstance(content, dict):
return None
title = content.get("title") or content.get("summary")
# Prefer clickThroughUrl; fallback to canonicalUrl; fallback to previewUrl
url = None
ctu = content.get("clickThroughUrl")
if isinstance(ctu, dict):
url = ctu.get("url")
if not url:
can = content.get("canonicalUrl")
if isinstance(can, dict):
url = can.get("url")
if not url:
url = content.get("previewUrl")
date = content.get("pubDate") or content.get("displayTime")
# Optional fields
provider = content.get("provider")
source = provider.get("displayName") if isinstance(provider, dict) else None
summary = content.get("summary") or content.get("description") or ""
# If CompanyNewsData requires these, don't emit invalid items
if not (sym and title and url and date):
return None
# CompanyNewsData typically includes: symbol, title, url, date, summary/text
# We include both "summary" and "text" to be resilient across schema variants.
normalized: dict[str, Any] = {
"symbol": sym,
"title": title,
"url": url,
"date": date,
"source": source,
}
# Only add if non-empty to avoid weird validation rules
if summary:
normalized["summary"] = summary
normalized["text"] = summary
# Keep an id if present (harmless if the model ignores it)
if item.get("id"):
normalized["id"] = item["id"]
elif content.get("id"):
normalized["id"] = content["id"]
return normalized
def _fetch_news(sym: str) -> list[dict]:
"""Fetch the data in a worker thread."""
raw = Ticker(sym).get_news() or []
out: list[dict] = []
for item in raw:
norm = _normalize_news_item(item, sym)
if norm:
out.append(norm)
return out
async def get_one(sym: str) -> None:
"""Get the data for one ticker symbol."""
try:
items = await asyncio.to_thread(_fetch_news, sym)
except Exception as e:
warn(f"Error getting news for {sym}: {e}")
return
if items:
results.extend(items)
await asyncio.gather(*(get_one(sym) for sym in symbols))
if not results:
raise EmptyDataError("No data was returned for the given symbol(s)")
return results
@staticmethod
def transform_data(
query: YFinanceCompanyNewsQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceCompanyNewsData]:
"""Transform data."""
return [YFinanceCompanyNewsData.model_validate(d) for d in data]

View File

@@ -1,137 +0,0 @@
"""Yahoo Finance Crypto Historical Price Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.crypto_historical import (
CryptoHistoricalData,
CryptoHistoricalQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import INTERVALS_DICT
from pydantic import Field
class YFinanceCryptoHistoricalQueryParams(CryptoHistoricalQueryParams):
"""Yahoo Finance Crypto Historical Price Query.
Source: https://finance.yahoo.com/crypto/
"""
__json_schema_extra__ = {
"symbol": {"multiple_items_allowed": True},
"interval": {
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
]
},
}
interval: Literal[
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
] = Field(
default="1d",
description=QUERY_DESCRIPTIONS.get("interval", ""),
)
class YFinanceCryptoHistoricalData(CryptoHistoricalData):
"""Yahoo Finance Crypto Historical Price Data."""
class YFinanceCryptoHistoricalFetcher(
Fetcher[
YFinanceCryptoHistoricalQueryParams,
list[YFinanceCryptoHistoricalData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceCryptoHistoricalQueryParams:
"""Transform the query."""
# pylint: disable=import-outside-toplevel
from dateutil.relativedelta import relativedelta
transformed_params = params
now = datetime.now().date()
if params.get("start_date") is None:
transformed_params["start_date"] = now - relativedelta(years=1)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return YFinanceCryptoHistoricalQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: YFinanceCryptoHistoricalQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Return the raw data from the Yahoo Finance endpoint."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import yf_download
tickers = query.symbol.split(",")
new_tickers = []
for ticker in tickers:
new_ticker = (
ticker[:-3] + "-" + ticker[-3:] if "-" not in ticker else ticker
)
new_tickers.append(new_ticker)
symbols = ",".join(new_tickers)
data = yf_download(
symbols,
start_date=query.start_date,
end_date=query.end_date,
interval=INTERVALS_DICT.get(query.interval, "1d"), # type: ignore
auto_adjust=False,
actions=False,
prepost=True,
)
if data.empty:
raise EmptyDataError()
return data.to_dict("records")
@staticmethod
def transform_data(
query: YFinanceCryptoHistoricalQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceCryptoHistoricalData]:
"""Transform the data to the standard format."""
return [YFinanceCryptoHistoricalData.model_validate(d) for d in data]

View File

@@ -1,135 +0,0 @@
"""Yahoo Finance Currency Price Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.currency_historical import (
CurrencyHistoricalData,
CurrencyHistoricalQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import INTERVALS_DICT
from pydantic import Field
class YFinanceCurrencyHistoricalQueryParams(CurrencyHistoricalQueryParams):
"""Yahoo Finance Currency Price Query.
Source: https://finance.yahoo.com/currencies/
"""
__json_schema_extra__ = {
"symbol": {"multiple_items_allowed": True},
"interval": {
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
]
},
}
interval: Literal[
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
] = Field(
default="1d",
description=QUERY_DESCRIPTIONS.get("interval", ""),
)
class YFinanceCurrencyHistoricalData(CurrencyHistoricalData):
"""Yahoo Finance Currency Price Data."""
class YFinanceCurrencyHistoricalFetcher(
Fetcher[
YFinanceCurrencyHistoricalQueryParams,
list[YFinanceCurrencyHistoricalData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(
params: dict[str, Any],
) -> YFinanceCurrencyHistoricalQueryParams:
"""Transform the query."""
# pylint: disable=import-outside-toplevel
from dateutil.relativedelta import relativedelta
transformed_params = params
symbols = params["symbol"].split(",")
new_symbols = [
f"{s.upper()}=X" if "=X" not in s.upper() else s.upper() for s in symbols
]
transformed_params["symbol"] = ",".join(new_symbols)
now = datetime.now().date()
if params.get("start_date") is None:
transformed_params["start_date"] = now - relativedelta(years=1)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return YFinanceCurrencyHistoricalQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: YFinanceCurrencyHistoricalQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Return the raw data from the Yahoo Finance endpoint."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import yf_download
data = yf_download(
query.symbol,
start_date=query.start_date,
end_date=query.end_date,
interval=INTERVALS_DICT.get(query.interval, "1d"), # type: ignore
auto_adjust=False,
actions=False,
prepost=True,
)
if data.empty:
raise EmptyDataError()
return data.to_dict("records")
@staticmethod
def transform_data(
query: YFinanceCurrencyHistoricalQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceCurrencyHistoricalData]:
"""Transform the data to the standard format."""
return [YFinanceCurrencyHistoricalData.model_validate(d) for d in data]

View File

@@ -1,193 +0,0 @@
"""Yahoo Finance Equity Historical Price Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import TYPE_CHECKING, Any, Literal
from warnings import warn
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_historical import (
EquityHistoricalData,
EquityHistoricalQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import INTERVALS_DICT, PERIODS
from pydantic import Field, PrivateAttr
if TYPE_CHECKING:
from pandas import DataFrame
class YFinanceEquityHistoricalQueryParams(EquityHistoricalQueryParams):
"""Yahoo Finance Equity Historical Price Query.
Source: https://finance.yahoo.com/
"""
__json_schema_extra__ = {
"symbol": {"multiple_items_allowed": True},
"interval": {
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
]
},
}
interval: Literal[
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
] = Field(
default="1d",
description=QUERY_DESCRIPTIONS.get("interval", ""),
)
extended_hours: bool = Field(
default=False,
description="Include Pre and Post market data.",
)
include_actions: bool = Field(
default=True,
description="Include dividends and stock splits in results.",
)
adjustment: Literal["splits_only", "splits_and_dividends"] = Field(
default="splits_only",
description="The adjustment factor to apply. Default is splits only.",
)
_ignore_tz: bool = PrivateAttr(default=True)
_progress: bool = PrivateAttr(default=False)
_keepna: bool = PrivateAttr(default=False)
_period: PERIODS = PrivateAttr(default="max")
_rounding: bool = PrivateAttr(default=False)
_repair: bool = PrivateAttr(default=False)
_group_by: Literal["ticker", "column"] = PrivateAttr(default="ticker")
class YFinanceEquityHistoricalData(EquityHistoricalData):
"""Yahoo Finance Equity Historical Price Data."""
__alias_dict__ = {
"split_ratio": "stock_splits",
"dividend": "dividends",
}
split_ratio: float | None = Field(
default=None,
description="Ratio of the equity split, if a split occurred.",
)
dividend: float | None = Field(
default=None,
description="Dividend amount (split-adjusted), if a dividend was paid.",
)
class YFinanceEquityHistoricalFetcher(
Fetcher[
YFinanceEquityHistoricalQueryParams,
list[YFinanceEquityHistoricalData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceEquityHistoricalQueryParams:
"""Transform the query."""
# pylint: disable=import-outside-toplevel
from dateutil.relativedelta import relativedelta
transformed_params = params
now = datetime.now().date()
if params.get("start_date") is None:
transformed_params["start_date"] = now - relativedelta(years=1)
if params.get("end_date") is None:
transformed_params["end_date"] = now
return YFinanceEquityHistoricalQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceEquityHistoricalQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> "DataFrame":
"""Return the raw data from the Yahoo Finance endpoint."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import yf_download
adjusted = query.adjustment == "splits_and_dividends"
kwargs = {"auto_adjust": True, "back_adjust": True} if adjusted is True else {}
# pylint: disable=protected-access
data = yf_download(
symbol=query.symbol,
start_date=query.start_date,
end_date=query.end_date,
interval=INTERVALS_DICT[query.interval], # type: ignore
period=query._period,
prepost=query.extended_hours,
actions=query.include_actions,
progress=query._progress,
ignore_tz=query._ignore_tz,
keepna=query._keepna,
repair=query._repair,
rounding=query._rounding,
group_by=query._group_by,
adjusted=adjusted,
**kwargs,
)
if data.empty:
raise EmptyDataError()
return data
@staticmethod
def transform_data(
query: YFinanceEquityHistoricalQueryParams,
data: "DataFrame",
**kwargs: Any,
) -> list[YFinanceEquityHistoricalData]:
"""Transform the data to the standard format."""
if "capital_gains" in data.columns:
data = (
data.drop(columns=["capital_gains"])
if query.include_actions is False
else data
)
query_symbols = query.symbol.upper().split(",")
if len(query_symbols) > 1:
symbols = data.symbol.unique().tolist()
for symbol in query_symbols:
if symbol not in symbols:
warn(f"Data for '{symbol}' was not found.")
return [
YFinanceEquityHistoricalData.model_validate(d)
for d in data.to_dict("records")
]

View File

@@ -1,203 +0,0 @@
"""YFinance Equity Profile Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_info import (
EquityInfoData,
EquityInfoQueryParams,
)
from pydantic import Field, field_validator
class YFinanceEquityProfileQueryParams(EquityInfoQueryParams):
"""YFinance Equity Profile Query."""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
class YFinanceEquityProfileData(EquityInfoData):
"""YFinance Equity Profile Data."""
__alias_dict__ = {
"name": "longName",
"issue_type": "quoteType",
"stock_exchange": "exchange",
"first_stock_price_date": "firstTradeDateEpochUtc",
"exchange_timezone": "timeZoneFullName",
"industry_category": "industry",
"hq_country": "country",
"hq_address1": "address1",
"hq_address_city": "city",
"hq_address_postal_code": "zip",
"hq_state": "state",
"business_phone_no": "phone",
"company_url": "website",
"long_description": "longBusinessSummary",
"employees": "fullTimeEmployees",
"market_cap": "marketCap",
"shares_outstanding": "sharesOutstanding",
"shares_float": "floatShares",
"shares_implied_outstanding": "impliedSharesOutstanding",
"shares_short": "sharesShort",
"dividend_yield": "yield",
}
exchange_timezone: str | None = Field(
description="The timezone of the exchange.",
default=None,
)
issue_type: str | None = Field(
description="The issuance type of the asset.",
default=None,
)
currency: str | None = Field(
description="The currency in which the asset is traded.", default=None
)
market_cap: int | None = Field(
description="The market capitalization of the asset.",
default=None,
)
shares_outstanding: int | None = Field(
description="The number of listed shares outstanding.",
default=None,
)
shares_float: int | None = Field(
description="The number of shares in the public float.",
default=None,
)
shares_implied_outstanding: int | None = Field(
description=(
"Implied shares outstanding of common equity"
"assuming the conversion of all convertible subsidiary equity into common."
),
default=None,
)
shares_short: int | None = Field(
description="The reported number of shares short.",
default=None,
)
dividend_yield: float | None = Field(
description="The dividend yield of the asset, as a normalized percent.",
default=None,
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
beta: float | None = Field(
description="The beta of the asset relative to the broad market.",
default=None,
)
@field_validator("first_stock_price_date", mode="before", check_fields=False)
@classmethod
def validate_first_trade_date(cls, v):
"""Validate first stock price date."""
# pylint: disable=import-outside-toplevel
from datetime import timezone # noqa
from openbb_core.provider.utils.helpers import safe_fromtimestamp # noqa
return safe_fromtimestamp(v, tz=timezone.utc).date() if v else None
class YFinanceEquityProfileFetcher(
Fetcher[YFinanceEquityProfileQueryParams, list[YFinanceEquityProfileData]]
):
"""YFinance Equity Profile fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceEquityProfileQueryParams:
"""Transform the query."""
return YFinanceEquityProfileQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceEquityProfileQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.utils.errors import EmptyDataError
from warnings import warn
from yfinance import Ticker
symbols = query.symbol.split(",")
results = []
fields = [
"symbol",
"longName",
"exchange",
"timeZoneFullName",
"quoteType",
"firstTradeDateEpochUtc",
"currency",
"sharesOutstanding",
"floatShares",
"impliedSharesOutstanding",
"sharesShort",
"sector",
"industry",
"address1",
"city",
"state",
"zip",
"country",
"phone",
"website",
"fullTimeEmployees",
"longBusinessSummary",
"marketCap",
"yield",
"dividendYield",
"beta",
]
messages: list = []
async def get_one(symbol):
"""Get the data for one ticker symbol."""
result: dict = {}
ticker: dict = {}
try:
ticker = await asyncio.to_thread(lambda: Ticker(symbol).get_info())
except Exception as e:
messages.append(
f"Error getting data for {symbol} -> {e.__class__.__name__}: {e}"
)
if ticker:
for field in fields:
if field in ticker:
result[
field.replace("dividendYield", "dividend_yield").replace(
"issueType", "issue_type"
)
] = ticker.get(field, None)
if result:
results.append(result)
tasks = [get_one(symbol) for symbol in symbols]
await asyncio.gather(*tasks)
if not results and messages:
raise OpenBBError("\n".join(messages))
if not results and not messages:
raise EmptyDataError("No data was returned for any symbol")
if results and messages:
for message in messages:
warn(message)
return results
@staticmethod
def transform_data(
query: YFinanceEquityProfileQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceEquityProfileData]:
"""Transform the data."""
return [YFinanceEquityProfileData.model_validate(d) for d in data]

View File

@@ -1,131 +0,0 @@
"""YFinance Equity Quote Model."""
# pylint: disable=unused-argument
from typing import Any
from warnings import warn
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_quote import (
EquityQuoteData,
EquityQuoteQueryParams,
)
from pydantic import Field
class YFinanceEquityQuoteQueryParams(EquityQuoteQueryParams):
"""YFinance Equity Quote Query."""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
class YFinanceEquityQuoteData(EquityQuoteData):
"""YFinance Equity Quote Data."""
__alias_dict__ = {
"name": "longName",
"asset_type": "quoteType",
"last_price": "currentPrice",
"high": "dayHigh",
"low": "dayLow",
"prev_close": "previousClose",
"year_high": "fiftyTwoWeekHigh",
"year_low": "fiftyTwoWeekLow",
"ma_50d": "fiftyDayAverage",
"ma_200d": "twoHundredDayAverage",
"volume_average": "averageVolume",
"volume_average_10d": "averageDailyVolume10Day",
}
ma_50d: float | None = Field(
default=None,
description="50-day moving average price.",
)
ma_200d: float | None = Field(
default=None,
description="200-day moving average price.",
)
volume_average: float | None = Field(
default=None,
description="Average daily trading volume.",
)
volume_average_10d: float | None = Field(
default=None,
description="Average daily trading volume in the last 10 days.",
)
currency: str | None = Field(
default=None,
description="Currency of the price.",
)
class YFinanceEquityQuoteFetcher(
Fetcher[YFinanceEquityQuoteQueryParams, list[YFinanceEquityQuoteData]]
):
"""YFinance Equity Quote Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceEquityQuoteQueryParams:
"""Transform the query."""
return YFinanceEquityQuoteQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceEquityQuoteQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from yfinance import Ticker
symbols = [s.strip() for s in query.symbol.split(",") if s.strip()]
results: list[dict] = []
fields = [
"symbol",
"longName",
"exchange",
"quoteType",
"bid",
"bidSize",
"ask",
"askSize",
"currentPrice",
"open",
"dayHigh",
"dayLow",
"previousClose",
"volume",
"averageVolume",
"averageDailyVolume10Day",
"fiftyTwoWeekHigh",
"fiftyTwoWeekLow",
"fiftyDayAverage",
"twoHundredDayAverage",
"currency",
]
async def get_one(symbol: str) -> None:
try:
ticker = await asyncio.to_thread(lambda: Ticker(symbol).get_info())
except Exception as e:
warn(f"Error getting data for {symbol}: {e}")
return
result = {f: ticker.get(f) for f in fields if f in ticker}
if result:
results.append(result)
await asyncio.gather(*(get_one(symbol) for symbol in symbols))
return results
@staticmethod
def transform_data(
query: YFinanceEquityQuoteQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceEquityQuoteData]:
"""Transform the data."""
return [YFinanceEquityQuoteData.model_validate(d) for d in data]

View File

@@ -1,273 +0,0 @@
"""YFinance Equity Screener Model."""
# pylint: disable=unused-argument, too-many-statements, too-many-branches
from typing import Any
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_screener import (
EquityScreenerData,
EquityScreenerQueryParams,
)
from openbb_core.provider.utils.country_utils import Country
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import (
COUNTRIES,
EXCHANGES,
INDUSTRIES,
INDUSTRY_MAP,
PEER_GROUPS,
SECTOR_MAP,
SECTORS,
Exchanges,
YFPredefinedScreenerData,
get_industry_sector,
)
from pydantic import Field, field_validator
class YFinanceEquityScreenerQueryParams(EquityScreenerQueryParams):
"""YFinance Equity Screener Query."""
__json_schema_extra__ = {
"country": {
"multiple_items_allowed": False,
"choices": COUNTRIES,
},
"exchange": {
"multiple_items_allowed": False,
"choices": EXCHANGES,
},
"sector": {
"multiple_items_allowed": False,
"choices": list(SECTOR_MAP),
},
"industry": {
"multiple_items_allowed": False,
"choices": INDUSTRIES,
},
}
country: str | None = Field(
default="us",
description="Filter by country. Accepts ISO 3166-1 alpha-2 codes (e.g., 'US', 'DE'), "
"alpha-3 codes (e.g., 'USA'), country names (e.g., 'United States'), or 'all' for all countries.",
)
exchange: Exchanges | None = Field(
default=None,
description="Filter by exchange.",
)
sector: SECTORS | None = Field(default=None, description="Filter by sector.")
industry: str | None = Field(
default=None,
description="Filter by industry.",
)
mktcap_min: int | None = Field(
default=500000000,
description="Filter by market cap greater than this value. Default is 500M.",
)
mktcap_max: int | None = Field(
default=None,
description="Filter by market cap less than this value.",
)
price_min: float | None = Field(
default=5,
description="Filter by price greater than this value. Default is, 5",
)
price_max: float | None = Field(
default=None,
description="Filter by price less than this value.",
)
volume_min: int | None = Field(
default=10000,
description="Filter by volume greater than this value. Default is, 10K",
)
volume_max: int | None = Field(
default=None,
description="Filter by volume less than this value.",
)
beta_min: float | None = Field(
default=None,
description="Filter by a beta greater than this value.",
)
beta_max: float | None = Field(
default=None,
description="Filter by a beta less than this value.",
)
limit: int | None = Field(
default=200,
description="Limit the number of results returned. Default is, 200. Set to, 0, for all results.",
)
@field_validator("country", mode="before")
@classmethod
def _validate_country(cls, v):
"""Validate and normalize country input."""
if v is None or v == "all":
return v
# Convert Country type or string to lowercase alpha-2 for YFinance
if isinstance(v, Country):
country_code = v.alpha_2.lower()
else:
try:
country_code = Country(v).alpha_2.lower()
except ValueError:
country_code = v.strip().lower()
if country_code not in COUNTRIES:
raise ValueError(
f"Country '{v}' ({country_code.upper()}) is not supported by YFinance. "
f"Valid options: {', '.join(sorted(COUNTRIES))}",
)
return country_code
class YFinanceEquityScreenerData(EquityScreenerData, YFPredefinedScreenerData):
"""YFinance Equity Screener Data."""
class YFinanceEquityScreenerFetcher(
Fetcher[YFinanceEquityScreenerQueryParams, list[YFinanceEquityScreenerData]],
):
"""YFinance Equity Screener Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceEquityScreenerQueryParams:
"""Transform query."""
sector = params.get("sector")
industry = params.get("industry")
if industry and sector:
sec = get_industry_sector(industry)
if sec and sec != sector:
choices = "\n ".join(sorted(INDUSTRY_MAP[sector]))
raise OpenBBError(
ValueError(
f"Industry {industry} does not belong to sector {sector}."
" Valid choices are:" + "\n\n " + f"{choices}",
),
)
elif industry and not sector:
choices = "\n".join(INDUSTRIES)
sector = get_industry_sector(industry)
if not sector:
raise OpenBBError(
ValueError(
f"Industry {industry} not found. Valid choices are:\n"
f"{choices}",
),
)
_industry = INDUSTRY_MAP[sector][industry]
if _industry not in PEER_GROUPS:
params["sector"] = get_industry_sector(industry)
return YFinanceEquityScreenerQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceEquityScreenerQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
operands: list = []
if query.exchange is not None:
operands.append(
{"operator": "eq", "operands": ["exchange", query.exchange.upper()]},
)
query.country = "all"
if query.country and query.country != "all":
operands.append({"operator": "EQ", "operands": ["region", query.country]})
if query.sector is not None:
sector = SECTOR_MAP[query.sector]
operands.append({"operator": "EQ", "operands": ["sector", sector]})
if query.industry is not None:
sector = (
query.sector
if query.sector is not None
else get_industry_sector(query.industry)
)
industry = INDUSTRY_MAP[sector][query.industry]
if industry in PEER_GROUPS:
operands.append(
{"operator": "EQ", "operands": ["peer_group", industry]},
)
else:
operands.append({"operator": "EQ", "operands": ["industry", industry]})
if query.mktcap_min is not None:
operands.append(
{"operator": "gt", "operands": ["intradaymarketcap", query.mktcap_min]},
)
if query.mktcap_max is not None:
operands.append(
{"operator": "lt", "operands": ["intradaymarketcap", query.mktcap_max]},
)
if query.price_min is not None:
operands.append(
{"operator": "gt", "operands": ["intradayprice", query.price_min]},
)
if query.price_max is not None:
operands.append(
{"operator": "lt", "operands": ["intradayprice", query.price_max]},
)
if query.volume_min is not None:
operands.append(
{"operator": "gt", "operands": ["dayvolume", query.volume_min]},
)
if query.volume_max is not None:
operands.append(
{"operator": "lt", "operands": ["dayvolume", query.volume_max]},
)
if query.beta_min is not None:
operands.append({"operator": "gt", "operands": ["beta", query.beta_min]})
if query.beta_max is not None:
operands.append({"operator": "lt", "operands": ["beta", query.beta_max]})
payload = {
"offset": 0,
"size": 100,
"sortField": "percentchange",
"sortType": "DESC",
"quoteType": "EQUITY",
"query": {
"operands": operands,
"operator": "AND",
},
"userId": "",
"userIdType": "guid",
}
response = await get_custom_screener(
body=payload,
limit=query.limit if query.limit and query.limit not in (0, None) else None,
)
if not response:
raise EmptyDataError("No results found for the combination of filters.")
return response
@staticmethod
def transform_data(
query: YFinanceEquityScreenerQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceEquityScreenerData]:
"""Transform the data."""
return [YFinanceEquityScreenerData(**d) for d in data]

View File

@@ -1,324 +0,0 @@
"""YFinance ETF Info Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.etf_info import (
EtfInfoData,
EtfInfoQueryParams,
)
from pydantic import Field, field_validator
class YFinanceEtfInfoQueryParams(EtfInfoQueryParams):
"""YFinance ETF Info Query."""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
class YFinanceEtfInfoData(EtfInfoData):
"""YFinance ETF Info Data."""
__alias_dict__ = {
"name": "longName",
"inception_date": "fundInceptionDate",
"description": "longBusinessSummary",
"fund_type": "legalType",
"fund_family": "fundFamily",
"exchange_timezone": "timeZoneFullName",
"nav_price": "navPrice",
"total_assets": "totalAssets",
"trailing_pe": "trailingPE",
"dividend_yield": "yield",
"dividend_rate_ttm": "trailingAnnualDividendRate",
"dividend_yield_ttm": "trailingAnnualDividendYield",
"year_high": "fiftyTwoWeekHigh",
"year_low": "fiftyTwoWeekLow",
"ma_50d": "fiftyDayAverage",
"ma_200d": "twoHundredDayAverage",
"return_ytd": "ytdReturn",
"return_3y_avg": "threeYearAverageReturn",
"return_5y_avg": "fiveYearAverageReturn",
"beta_3y_avg": "beta3Year",
"volume_avg": "averageVolume",
"volume_avg_10d": "averageDailyVolume10Day",
"bid_size": "bidSize",
"ask_size": "askSize",
"high": "dayHigh",
"low": "dayLow",
"prev_close": "previousClose",
}
fund_type: str | None = Field(
default=None,
description="The legal type of fund.",
)
fund_family: str | None = Field(
default=None,
description="The fund family.",
)
category: str | None = Field(
default=None,
description="The fund category.",
)
exchange: str | None = Field(
default=None,
description="The exchange the fund is listed on.",
)
exchange_timezone: str | None = Field(
default=None,
description="The timezone of the exchange.",
)
currency: str | None = Field(
default=None,
description="The currency in which the fund is listed.",
)
nav_price: float | None = Field(
default=None,
description="The net asset value per unit of the fund.",
)
total_assets: int | None = Field(
default=None,
description="The total value of assets held by the fund.",
)
trailing_pe: float | None = Field(
default=None,
description="The trailing twelve month P/E ratio of the fund's assets.",
)
dividend_yield: float | None = Field(
default=None,
description="The dividend yield of the fund, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
dividend_rate_ttm: float | None = Field(
default=None,
description="The trailing twelve month annual dividend rate of the fund, in currency units.",
)
dividend_yield_ttm: float | None = Field(
default=None,
description="The trailing twelve month annual dividend yield of the fund, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_high: float | None = Field(
default=None,
description="The fifty-two week high price.",
)
year_low: float | None = Field(
default=None,
description="The fifty-two week low price.",
)
ma_50d: float | None = Field(
default=None,
description="50-day moving average price.",
)
ma_200d: float | None = Field(
default=None,
description="200-day moving average price.",
)
return_ytd: float | None = Field(
default=None,
description="The year-to-date return of the fund, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
return_3y_avg: float | None = Field(
default=None,
description="The three year average return of the fund, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
return_5y_avg: float | None = Field(
default=None,
description="The five year average return of the fund, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
beta_3y_avg: float | None = Field(
default=None,
description="The three year average beta of the fund.",
)
volume_avg: float | None = Field(
default=None,
description="The average daily trading volume of the fund.",
)
volume_avg_10d: float | None = Field(
default=None,
description="The average daily trading volume of the fund over the past ten days.",
)
bid: float | None = Field(
default=None,
description="The current bid price.",
)
bid_size: float | None = Field(
default=None,
description="The current bid size.",
)
ask: float | None = Field(
default=None,
description="The current ask price.",
)
ask_size: float | None = Field(
default=None,
description="The current ask size.",
)
open: float | None = Field(
default=None,
description="The open price of the most recent trading session.",
)
high: float | None = Field(
default=None,
description="The highest price of the most recent trading session.",
)
low: float | None = Field(
default=None,
description="The lowest price of the most recent trading session.",
)
volume: int | None = Field(
default=None,
description="The trading volume of the most recent trading session.",
)
prev_close: float | None = Field(
default=None,
description="The previous closing price.",
)
@field_validator("inception_date", mode="before", check_fields=False)
@classmethod
def validate_date(cls, v):
"""Validate first stock price date."""
from datetime import datetime # pylint: disable=import-outside-toplevel
if isinstance(v, datetime):
return v.date().strftime("%Y-%m-%d")
return datetime.fromtimestamp(v).date().strftime("%Y-%m-%d") if v else None
class YFinanceEtfInfoFetcher(
Fetcher[YFinanceEtfInfoQueryParams, list[YFinanceEtfInfoData]]
):
"""YFinance ETF Info fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceEtfInfoQueryParams:
"""Transform the query."""
return YFinanceEtfInfoQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceEtfInfoQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_core.provider.utils.helpers import (
safe_fromtimestamp,
)
from warnings import warn
from yfinance import Ticker
symbols = query.symbol.split(",")
results: list = []
fields = [
"symbol",
"quoteType",
"legalType",
"longName",
"fundFamily",
"category",
"exchange",
"timeZoneFullName",
"fundInceptionDate",
"currency",
"navPrice",
"totalAssets",
"trailingPE",
"yield",
"trailingAnnualDividendRate",
"trailingAnnualDividendYield",
"bid",
"bidSize",
"ask",
"askSize",
"open",
"dayHigh",
"dayLow",
"previousClose",
"volume",
"averageVolume",
"averageDailyVolume10Day",
"fiftyTwoWeekHigh",
"fiftyTwoWeekLow",
"fiftyDayAverage",
"twoHundredDayAverage",
"ytdReturn",
"threeYearAverageReturn",
"fiveYearAverageReturn",
"beta3Year",
"longBusinessSummary",
"firstTradeDateEpochUtc",
]
messages: list = []
async def get_one(symbol):
"""Get the data for one ticker symbol."""
result: dict = {}
ticker: dict = {}
try:
ticker = await asyncio.to_thread(lambda: Ticker(symbol).get_info())
except Exception as e:
messages.append(
f"Error getting data for {symbol} -> {e.__class__.__name__}: {e}"
)
if ticker:
quote_type = ticker.pop("quoteType", "")
if quote_type == "ETF":
try:
for field in fields:
if field in ticker and ticker.get(field) is not None:
result[field] = ticker.get(field, None)
if "firstTradeDateEpochUtc" in result:
_first_trade = result.pop("firstTradeDateEpochUtc")
if (
"fundInceptionDate" not in result
and _first_trade is not None
):
result["fundInceptionDate"] = safe_fromtimestamp(
_first_trade
)
except Exception as e:
messages.append(
f"Error processing data for {symbol} -> {e.__class__.__name__}: {e}"
)
result = {}
if quote_type != "ETF":
messages.append(f"{symbol} is not an ETF.")
if result:
results.append(result)
tasks = [get_one(symbol) for symbol in symbols]
await asyncio.gather(*tasks)
if not results and not messages:
raise EmptyDataError("No data was returned for the given symbol(s).")
if not results and messages:
raise OpenBBError("\n".join(messages))
if results and messages:
for message in messages:
warn(message)
return results
@staticmethod
def transform_data(
query: YFinanceEtfInfoQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceEtfInfoData]:
"""Transform the data."""
return [YFinanceEtfInfoData.model_validate(d) for d in data]

View File

@@ -1,69 +0,0 @@
"""Yahoo Finance Futures Curve Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.futures_curve import (
FuturesCurveData,
FuturesCurveQueryParams,
)
from openbb_core.provider.utils.errors import EmptyDataError
class YFinanceFuturesCurveQueryParams(FuturesCurveQueryParams):
"""Yahoo Finance Futures Curve Query.
Source: https://finance.yahoo.com/
"""
__json_schema_extra__ = {
"date": {"multiple_items_allowed": True},
}
class YFinanceFuturesCurveData(FuturesCurveData):
"""Yahoo Finance Futures Curve Data."""
class YFinanceFuturesCurveFetcher(
Fetcher[
YFinanceFuturesCurveQueryParams,
list[YFinanceFuturesCurveData],
]
):
"""YFiannce Futures Curve Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceFuturesCurveQueryParams:
"""Transform the query."""
return YFinanceFuturesCurveQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceFuturesCurveQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the data from Yahoo."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_futures_curve
# TODO: Find a better way to do this.
data = await get_futures_curve(query.symbol, query.date) # type: ignore
data = data.to_dict(orient="records")
if not data:
raise EmptyDataError()
return data
@staticmethod
def transform_data(
query: YFinanceFuturesCurveQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceFuturesCurveData]:
"""Transform the data to the standard format."""
return [YFinanceFuturesCurveData.model_validate(d) for d in data]

View File

@@ -1,151 +0,0 @@
"""Yahoo Finance Futures Historical Price Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.futures_historical import (
FuturesHistoricalData,
FuturesHistoricalQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import INTERVALS_DICT, MONTHS
from pydantic import Field, field_validator
class YFinanceFuturesHistoricalQueryParams(FuturesHistoricalQueryParams):
"""Yahoo Finance Futures historical Price Query.
Source: https://finance.yahoo.com/crypto/
"""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
interval: Literal[
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
] = Field(
default="1d",
description=QUERY_DESCRIPTIONS.get("interval", ""),
)
class YFinanceFuturesHistoricalData(FuturesHistoricalData):
"""Yahoo Finance Futures Historical Price Data."""
@field_validator("date", mode="before", check_fields=False)
@classmethod
def date_validate(cls, v):
"""Return datetime object from string."""
# pylint: disable=import-outside-toplevel
from pandas import Timestamp
if isinstance(v, Timestamp):
return v.to_pydatetime()
return v
class YFinanceFuturesHistoricalFetcher(
Fetcher[
YFinanceFuturesHistoricalQueryParams,
list[YFinanceFuturesHistoricalData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceFuturesHistoricalQueryParams:
"""Transform the query."""
# pylint: disable=import-outside-toplevel
from dateutil.relativedelta import relativedelta
from openbb_yfinance.utils.helpers import get_futures_data
transformed_params = params.copy()
symbols = params["symbol"].split(",")
new_symbols = []
futures_data = get_futures_data()
for symbol in symbols:
if params.get("expiration"):
expiry_date = datetime.strptime(
transformed_params["expiration"], "%Y-%m"
)
if "." not in symbol:
exchange = futures_data[futures_data["Ticker"] == symbol][
"Exchange"
].values[0]
new_symbol = f"{symbol}{MONTHS[expiry_date.month]}{str(expiry_date.year)[-2:]}.{exchange}"
else:
new_symbol = symbol
new_symbols.append(new_symbol)
else:
new_symbols.append(symbol)
formatted_symbols = []
for s in new_symbols:
if "." not in s.upper() and "=F" not in s.upper():
formatted_symbols.append(f"{s.upper()}=F")
else:
formatted_symbols.append(s.upper())
transformed_params["symbol"] = ",".join(formatted_symbols)
now = datetime.now()
if params.get("start_date") is None:
transformed_params["start_date"] = (now - relativedelta(years=1)).strftime(
"%Y-%m-%d"
)
if params.get("end_date") is None:
transformed_params["end_date"] = now.strftime("%Y-%m-%d")
return YFinanceFuturesHistoricalQueryParams(**transformed_params)
@staticmethod
def extract_data(
query: YFinanceFuturesHistoricalQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Return the raw data from the Yahoo Finance endpoint."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import yf_download
data = yf_download(
query.symbol,
start_date=query.start_date,
end_date=query.end_date,
interval=INTERVALS_DICT[query.interval], # type: ignore
prepost=True,
auto_adjust=False,
actions=False,
)
if data.empty:
raise EmptyDataError()
return data.to_dict("records")
@staticmethod
def transform_data(
query: YFinanceFuturesHistoricalQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceFuturesHistoricalData]:
"""Transform the data to the standard format."""
return [YFinanceFuturesHistoricalData.model_validate(d) for d in data]

View File

@@ -1,90 +0,0 @@
"""Yahoo Finance Top Gainers Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFGainersQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Gainers Query.
Source: https://finance.yahoo.com/screener/predefined/day_gainers
"""
limit: int | None = Field(
default=200,
description="Limit the number of results.",
)
class YFGainersData(YFPredefinedScreenerData):
"""Yahoo Finance Gainers Data."""
class YFGainersFetcher(Fetcher[YFGainersQueryParams, list[YFGainersData]]):
"""Yahoo Finance Gainers Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFGainersQueryParams:
"""Transform query params."""
return YFGainersQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFGainersQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
body = {
"offset": 0,
"size": 250,
"sortField": "percentchange",
"sortType": "desc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "gt", "operands": ["intradaymarketcap", 500000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{"operator": "gt", "operands": ["percentchange", 3]},
{"operator": "gt", "operands": ["intradayprice", 5]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFGainersData]:
"""Transform data."""
return [
YFGainersData.model_validate(d)
for d in sorted(
data,
key=lambda x: x["regularMarketChangePercent"],
reverse=query.sort == "desc",
)
]

View File

@@ -1,96 +0,0 @@
"""Yahoo Finance Asset Performance Growth Tech Equities Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFGrowthTechEquitiesQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Growth Tech Stocks Query.
Source: https://finance.yahoo.com/screener/predefined/growth_technology_stocks
"""
limit: int | None = Field(
default=200,
description="Limit the number of results.",
)
class YFGrowthTechEquitiesData(YFPredefinedScreenerData):
"""Yahoo Finance Growth Tech Stocks Data."""
class YFGrowthTechEquitiesFetcher(
Fetcher[YFGrowthTechEquitiesQueryParams, list[YFGrowthTechEquitiesData]]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFGrowthTechEquitiesQueryParams:
"""Transform query params."""
return YFGrowthTechEquitiesQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFGrowthTechEquitiesQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
body = {
"offset": 0,
"size": 250,
"sortField": "eodvolume",
"sortType": "desc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "gt", "operands": ["intradaymarketcap", 500000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{
"operator": "gte",
"operands": ["quarterlyrevenuegrowth.quarterly", 25],
},
{"operator": "gte", "operands": ["epsgrowth.lasttwelvemonths", 25]},
{"operator": "eq", "operands": ["sector", "Technology"]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFGrowthTechEquitiesData]:
"""Transform data."""
return [
YFGrowthTechEquitiesData.model_validate(d)
for d in sorted(
data,
key=lambda x: x["regularMarketChangePercent"],
reverse=query.sort == "desc",
)
]

View File

@@ -1,77 +0,0 @@
"""YFinance Historical Dividends Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.historical_dividends import (
HistoricalDividendsData,
HistoricalDividendsQueryParams,
)
class YFinanceHistoricalDividendsQueryParams(HistoricalDividendsQueryParams):
"""YFinance Historical Dividends Query."""
class YFinanceHistoricalDividendsData(HistoricalDividendsData):
"""YFinance Historical Dividends Data. All data is split-adjusted."""
__alias_dict__ = {
"ex_dividend_date": "date",
"amount": "Dividends",
}
class YFinanceHistoricalDividendsFetcher(
Fetcher[
YFinanceHistoricalDividendsQueryParams, list[YFinanceHistoricalDividendsData]
]
):
"""YFinance Historical Dividends Fetcher."""
@staticmethod
def transform_query(
params: dict[str, Any],
) -> YFinanceHistoricalDividendsQueryParams:
"""Transform the query."""
return YFinanceHistoricalDividendsQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceHistoricalDividendsQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
from yfinance import Ticker
try:
ticker = Ticker(query.symbol).get_dividends()
if isinstance(ticker, list) and not ticker or ticker.empty: # type: ignore
raise OpenBBError(f"No dividend data found for {query.symbol}")
except Exception as e:
raise OpenBBError(f"Error getting data for {query.symbol}: {e}") from e
if query.start_date is not None:
ticker = ticker[ticker.index.astype(str) >= query.start_date.strftime("%Y-%m-%d")] # type: ignore
if query.end_date is not None:
ticker = ticker[ticker.index.astype(str) <= query.end_date.strftime("%Y-%m-%d")] # type: ignore
ticker = ticker.reset_index().rename(columns={"Date": "date"}) # type: ignore
ticker["date"] = ticker.date.apply(lambda x: x.date()).astype(str) # type: ignore
dividends = ticker.to_dict("records") # type: ignore
return dividends
@staticmethod
def transform_data(
query: YFinanceHistoricalDividendsQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceHistoricalDividendsData]:
"""Transform the data."""
return [YFinanceHistoricalDividendsData.model_validate(d) for d in data]

View File

@@ -1,118 +0,0 @@
"""Yahoo Finance Income Statement Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.income_statement import (
IncomeStatementData,
IncomeStatementQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from pydantic import Field, field_validator
class YFinanceIncomeStatementQueryParams(IncomeStatementQueryParams):
"""Yahoo Finance Income Statement Query.
Source: https://finance.yahoo.com/
"""
__json_schema_extra__ = {
"period": {
"choices": ["annual", "quarter"],
}
}
period: Literal["annual", "quarter"] = Field(
default="annual",
description=QUERY_DESCRIPTIONS.get("period", ""),
)
limit: int | None = Field(
default=5,
description=QUERY_DESCRIPTIONS.get("limit", ""),
le=5,
)
class YFinanceIncomeStatementData(IncomeStatementData):
"""Yahoo Finance Income Statement Data."""
__alias_dict__ = {
"selling_general_and_admin_expense": "selling_general_and_administration",
"research_and_development_expense": "research_and_development",
"total_pre_tax_income": "pretax_income",
"net_income_attributable_to_common_shareholders": "net_income_common_stockholders",
"weighted_average_basic_shares_outstanding": "basic_average_shares",
"weighted_average_diluted_shares_outstanding": "diluted_average_shares",
"basic_earnings_per_share": "basic_eps",
"diluted_earnings_per_share": "diluted_eps",
}
@field_validator("period_ending", mode="before", check_fields=False)
@classmethod
def date_validate(cls, v):
"""Validate the date field."""
if isinstance(v, str):
return datetime.strptime(v, "%Y-%m-%d %H:%M:%S").date()
return v
class YFinanceIncomeStatementFetcher(
Fetcher[
YFinanceIncomeStatementQueryParams,
list[YFinanceIncomeStatementData],
]
):
"""Yahoo Finance Income Statement Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceIncomeStatementQueryParams:
"""Transform the query parameters."""
return YFinanceIncomeStatementQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceIncomeStatementQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[YFinanceIncomeStatementData]:
"""Extract the data from the Yahoo Finance endpoints."""
# pylint: disable=import-outside-toplevel
import json # noqa
from numpy import nan
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_core.provider.utils.helpers import (
to_snake_case,
)
from yfinance import Ticker
period = "yearly" if query.period == "annual" else "quarterly"
data = Ticker(query.symbol).get_income_stmt(
as_dict=False, pretty=False, freq=period
)
if data is None:
raise EmptyDataError()
if query.limit:
data = data.iloc[:, : query.limit]
data.index = [to_snake_case(i) for i in data.index]
data = data.reset_index().sort_index(ascending=False).set_index("index")
data = data.replace({nan: None}).to_dict()
data = [{"period_ending": str(key), **value} for key, value in data.items()]
data = json.loads(json.dumps(data))
return data
@staticmethod
def transform_data(
query: YFinanceIncomeStatementQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceIncomeStatementData]:
"""Transform the data."""
return [YFinanceIncomeStatementData.model_validate(d) for d in data]

View File

@@ -1,154 +0,0 @@
"""Yahoo Finance Index Historical Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any, Literal
from warnings import warn
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.index_historical import (
IndexHistoricalData,
IndexHistoricalQueryParams,
)
from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import INDICES, INTERVALS_DICT
from pydantic import Field
class YFinanceIndexHistoricalQueryParams(IndexHistoricalQueryParams):
"""YFinance Index Historical Query.
Source: https://finance.yahoo.com/world-indices
"""
__json_schema_extra__ = {
"symbol": {"multiple_items_allowed": True},
"interval": {
"choices": [
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
]
},
}
interval: Literal[
"1m",
"2m",
"5m",
"15m",
"30m",
"60m",
"90m",
"1h",
"1d",
"5d",
"1W",
"1M",
"1Q",
] = Field(
default="1d",
description=QUERY_DESCRIPTIONS.get("interval", ""),
)
class YFinanceIndexHistoricalData(IndexHistoricalData):
"""YFinance Index Historical Data."""
class YFinanceIndexHistoricalFetcher(
Fetcher[
YFinanceIndexHistoricalQueryParams,
list[YFinanceIndexHistoricalData],
]
):
"""Transform the query, extract and transform the data from the Yahoo Finance endpoints."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceIndexHistoricalQueryParams:
"""Transform the query."""
# pylint: disable=import-outside-toplevel
from dateutil.relativedelta import relativedelta
from pandas import DataFrame
transformed_params = params
now = datetime.now().date()
if params.get("start_date") is None:
transformed_params["start_date"] = now - relativedelta(years=1)
if params.get("end_date") is None:
transformed_params["end_date"] = now
tickers = params.get("symbol").lower().split(",") # type: ignore
new_tickers = []
for ticker in tickers:
_ticker = ""
indices = DataFrame(INDICES).transpose().reset_index()
indices.columns = ["code", "name", "symbol"]
if ticker in indices["code"].values:
_ticker = indices[indices["code"] == ticker]["symbol"].values[0]
if ticker.title() in indices["name"].values:
_ticker = indices[indices["name"] == ticker.title()]["symbol"].values[0]
if "^" + ticker.upper() in indices["symbol"].values:
_ticker = "^" + ticker.upper()
if ticker.upper() in indices["symbol"].values:
_ticker = ticker.upper()
if _ticker != "":
new_tickers.append(_ticker)
else:
warn(f"Symbol Error: {ticker} is not a supported index.")
transformed_params["symbol"] = ",".join(new_tickers)
return YFinanceIndexHistoricalQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceIndexHistoricalQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Return the raw data from the Yahoo Finance endpoint."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import yf_download
data = yf_download(
symbol=query.symbol,
start_date=query.start_date,
end_date=query.end_date,
interval=INTERVALS_DICT[query.interval], # type: ignore
prepost=True,
)
if data.empty:
raise EmptyDataError()
return data.to_dict("records")
@staticmethod
def transform_data(
query: YFinanceIndexHistoricalQueryParams,
data: dict,
**kwargs: Any,
) -> list[YFinanceIndexHistoricalData]:
"""Transform the data to the standard format."""
return [YFinanceIndexHistoricalData.model_validate(d) for d in data]

View File

@@ -1,86 +0,0 @@
"""YFinance Key Executives Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.key_executives import (
KeyExecutivesData,
KeyExecutivesQueryParams,
)
from pydantic import Field
class YFinanceKeyExecutivesQueryParams(KeyExecutivesQueryParams):
"""YFinance Key Executives Query."""
class YFinanceKeyExecutivesData(KeyExecutivesData):
"""YFinance Key Executives Data."""
__alias_dict__ = {
"year_born": "yearBorn",
"fiscal_year": "fiscalYear",
"pay": "totalPay",
"exercised_value": "exercisedValue",
"unexercised_value": "unexercisedValue",
}
exercised_value: int | None = Field(
default=None,
description="Value of shares exercised.",
)
unexercised_value: int | None = Field(
default=None,
description="Value of shares not exercised.",
)
fiscal_year: int | None = Field(
default=None,
description="Fiscal year of the pay.",
)
class YFinanceKeyExecutivesFetcher(
Fetcher[YFinanceKeyExecutivesQueryParams, list[YFinanceKeyExecutivesData]]
):
"""YFinance Key Executives Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceKeyExecutivesQueryParams:
"""Transform the query."""
return YFinanceKeyExecutivesQueryParams(**params)
@staticmethod
def extract_data(
query: YFinanceKeyExecutivesQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
from openbb_core.app.model.abstract.error import OpenBBError
from yfinance import Ticker
try:
ticker = Ticker(query.symbol).get_info()
except Exception as e:
raise OpenBBError(
f"Error getting data for {query.symbol} -> {e.__class__.__name__}: {e}"
) from e
if ticker.get("companyOfficers") is None:
raise OpenBBError(f"No executive data found for {query.symbol}")
officers_data = ticker.get("companyOfficers", [])
_ = [d.pop("maxAge", None) for d in officers_data]
return officers_data
@staticmethod
def transform_data(
query: YFinanceKeyExecutivesQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceKeyExecutivesData]:
"""Transform the data."""
return [YFinanceKeyExecutivesData.model_validate(d) for d in data]

View File

@@ -1,335 +0,0 @@
"""YFinance Key Metrics Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.key_metrics import (
KeyMetricsData,
KeyMetricsQueryParams,
)
from pydantic import Field, field_validator
class YFinanceKeyMetricsQueryParams(KeyMetricsQueryParams):
"""YFinance Key Metrics Query."""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
class YFinanceKeyMetricsData(KeyMetricsData):
"""YFinance Key Metrics Data."""
__alias_dict__ = {
"market_cap": "marketCap",
"pe_ratio": "trailingPE",
"forward_pe": "forwardPE",
"peg_ratio": "pegRatio",
"peg_ratio_ttm": "trailingPegRatio",
"eps_ttm": "trailingEps",
"eps_forward": "forwardEps",
"enterprise_to_ebitda": "enterpriseToEbitda",
"earnings_growth": "earningsGrowth",
"earnings_growth_quarterly": "earningsQuarterlyGrowth",
"revenue_per_share": "revenuePerShare",
"revenue_growth": "revenueGrowth",
"enterprise_to_revenue": "enterpriseToRevenue",
"cash_per_share": "totalCashPerShare",
"quick_ratio": "quickRatio",
"current_ratio": "currentRatio",
"debt_to_equity": "debtToEquity",
"gross_margin": "grossMargins",
"operating_margin": "operatingMargins",
"ebitda_margin": "ebitdaMargins",
"profit_margin": "profitMargins",
"return_on_assets": "returnOnAssets",
"return_on_equity": "returnOnEquity",
"dividend_yield": "dividendYield",
"dividend_yield_5y_avg": "fiveYearAvgDividendYield",
"payout_ratio": "payoutRatio",
"book_value": "bookValue",
"price_to_book": "priceToBook",
"enterprise_value": "enterpriseValue",
"overall_risk": "overallRisk",
"audit_risk": "auditRisk",
"board_risk": "boardRisk",
"compensation_risk": "compensationRisk",
"shareholder_rights_risk": "shareHolderRightsRisk",
"price_return_1y": "52WeekChange",
"currency": "financialCurrency",
}
pe_ratio: float | None = Field(
default=None,
description="Price-to-earnings ratio (TTM).",
)
forward_pe: float | None = Field(
default=None,
description="Forward price-to-earnings ratio.",
)
peg_ratio: float | None = Field(
default=None,
description="PEG ratio (5-year expected).",
)
peg_ratio_ttm: float | None = Field(
default=None,
description="PEG ratio (TTM).",
)
eps_ttm: float | None = Field(
default=None,
description="Earnings per share (TTM).",
)
eps_forward: float | None = Field(
default=None,
description="Forward earnings per share.",
)
enterprise_to_ebitda: float | None = Field(
default=None,
description="Enterprise value to EBITDA ratio.",
)
earnings_growth: float | None = Field(
default=None,
description="Earnings growth (Year Over Year), as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
earnings_growth_quarterly: float | None = Field(
default=None,
description="Quarterly earnings growth (Year Over Year), as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
revenue_per_share: float | None = Field(
default=None,
description="Revenue per share (TTM).",
)
revenue_growth: float | None = Field(
default=None,
description="Revenue growth (Year Over Year), as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
enterprise_to_revenue: float | None = Field(
default=None,
description="Enterprise value to revenue ratio.",
)
cash_per_share: float | None = Field(
default=None,
description="Cash per share.",
)
quick_ratio: float | None = Field(
default=None,
description="Quick ratio.",
)
current_ratio: float | None = Field(
default=None,
description="Current ratio.",
)
debt_to_equity: float | None = Field(
default=None,
description="Debt-to-equity ratio.",
)
gross_margin: float | None = Field(
default=None,
description="Gross margin, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
operating_margin: float | None = Field(
default=None,
description="Operating margin, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
ebitda_margin: float | None = Field(
default=None,
description="EBITDA margin, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
profit_margin: float | None = Field(
default=None,
description="Profit margin, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
return_on_assets: float | None = Field(
default=None,
description="Return on assets, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
return_on_equity: float | None = Field(
default=None,
description="Return on equity, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
dividend_yield: float | None = Field(
default=None,
description="Dividend yield, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
dividend_yield_5y_avg: float | None = Field(
default=None,
description="5-year average dividend yield, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
payout_ratio: float | None = Field(
default=None,
description="Payout ratio.",
)
book_value: float | None = Field(
default=None,
description="Book value per share.",
)
price_to_book: float | None = Field(
default=None,
description="Price-to-book ratio.",
)
enterprise_value: int | None = Field(
default=None,
description="Enterprise value.",
)
overall_risk: float | None = Field(
default=None,
description="Overall risk score.",
)
audit_risk: float | None = Field(
default=None,
description="Audit risk score.",
)
board_risk: float | None = Field(
default=None,
description="Board risk score.",
)
compensation_risk: float | None = Field(
default=None,
description="Compensation risk score.",
)
shareholder_rights_risk: float | None = Field(
default=None,
description="Shareholder rights risk score.",
)
beta: float | None = Field(
default=None,
description="Beta relative to the broad market (5-year monthly).",
)
price_return_1y: float | None = Field(
default=None,
description="One-year price return, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
currency: str | None = Field(
default=None,
description="Currency in which the data is presented.",
)
@field_validator("dividend_yield_5y_avg")
@classmethod
def normalize_percent(cls, v: float):
"""Normalize the percent values."""
return float(v) / 100 if v else None
class YFinanceKeyMetricsFetcher(
Fetcher[YFinanceKeyMetricsQueryParams, list[YFinanceKeyMetricsData]]
):
"""YFinance Key Metrics fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceKeyMetricsQueryParams:
"""Transform the query."""
return YFinanceKeyMetricsQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceKeyMetricsQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.utils.errors import EmptyDataError
from warnings import warn
from yfinance import Ticker
symbols = query.symbol.split(",")
results = []
fields = [
"symbol",
"marketCap",
"trailingPE",
"forwardPE",
"pegRatio",
"trailingPegRatio",
"earningsQuarterlyGrowth",
"earningsGrowth",
"revenuePerShare",
"revenueGrowth",
"cashPerShare",
"quickRatio",
"currentRatio",
"debtToEquity",
"grossMargins",
"ebitdaMargins",
"operatingMargins",
"profitMargins",
"returnOnAssets",
"returnOnEquity",
"dividendYield",
"fiveYearAvgDividendYield",
"payoutRatio",
"bookValue",
"priceToBook",
"enterpriseValue",
"enterpriseToRevenue",
"enterpriseToEbitda",
"overallRisk",
"auditRisk",
"boardRisk",
"compensationRisk",
"shareHolderRightsRisk",
"beta",
"52WeekChange",
"financialCurrency",
]
messages: list = []
async def get_one(symbol):
"""Get the data for one ticker symbol."""
result: dict = {}
ticker: dict = {}
try:
ticker = await asyncio.to_thread(lambda: Ticker(symbol).get_info())
except Exception as e:
messages.append(
f"Error getting data for {symbol} -> {e.__class__.__name__}: {e}"
)
if not ticker:
messages.append(f"No data found for {symbol}")
elif ticker:
for field in fields:
if field in ticker:
result[field] = ticker.get(field, None)
if result and result.get("52WeekChange") is not None:
results.append(result)
tasks = [get_one(symbol) for symbol in symbols]
await asyncio.gather(*tasks)
if not results and not messages:
raise EmptyDataError("No data was returned for the given symbol(s).")
if not results and messages:
raise OpenBBError("\n".join(messages))
if results and messages:
for message in messages:
warn(message)
return results
@staticmethod
def transform_data(
query: YFinanceKeyMetricsQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceKeyMetricsData]:
"""Transform the data."""
return [YFinanceKeyMetricsData.model_validate(d) for d in data]

View File

@@ -1,90 +0,0 @@
"""Yahoo Finance Top Losers Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFLosersQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Losers Query.
Source: https://finance.yahoo.com/screener/predefined/day_losers
"""
limit: int | None = Field(
default=200,
description="Limit the number of results.",
)
class YFLosersData(YFPredefinedScreenerData):
"""Yahoo Finance Losers Data."""
class YFLosersFetcher(Fetcher[YFLosersQueryParams, list[YFLosersData]]):
"""Yahoo Finance Losers Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFLosersQueryParams:
"""Transform query params."""
return YFLosersQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFLosersQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
body = {
"offset": 0,
"size": 250,
"sortField": "percentchange",
"sortType": "asc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "gt", "operands": ["intradaymarketcap", 500000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{"operator": "gt", "operands": ["percentchange", -3]},
{"operator": "gt", "operands": ["intradayprice", 5]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFLosersData]:
"""Transform data."""
return [
YFLosersData.model_validate(d)
for d in sorted(
data,
key=lambda x: x["regularMarketChangePercent"],
reverse=query.sort == "desc",
)
]

View File

@@ -1,188 +0,0 @@
"""YFinance Options Chains Model."""
# pylint: disable=unused-argument
from datetime import datetime
from typing import Any
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.abstract.annotated_result import AnnotatedResult
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.options_chains import (
OptionsChainsData,
OptionsChainsQueryParams,
)
from openbb_core.provider.utils.errors import EmptyDataError
from pydantic import Field
class YFinanceOptionsChainsQueryParams(OptionsChainsQueryParams):
"""YFinance Options Chains Query Parameters."""
class YFinanceOptionsChainsData(OptionsChainsData):
"""YFinance Options Chains Data."""
__doc__ = OptionsChainsData.__doc__
__alias_dict__ = {
"contract_symbol": "contractSymbol",
"last_trade_time": "lastTradeDate",
"last_trade_price": "lastPrice",
"change_percent": "percentChange",
"open_interest": "openInterest",
"implied_volatility": "impliedVolatility",
"in_the_money": "inTheMoney",
}
in_the_money: list[bool | None] = Field(
default_factory=list,
description="Whether the option is in the money.",
)
currency: list[str | None] = Field(
default_factory=list,
description="Currency of the option.",
)
class YFinanceOptionsChainsFetcher(
Fetcher[YFinanceOptionsChainsQueryParams, YFinanceOptionsChainsData]
):
"""YFinance Options Chains Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceOptionsChainsQueryParams:
"""Transform the query."""
return YFinanceOptionsChainsQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceOptionsChainsQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> dict:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from pandas import concat
from yfinance import Ticker
from pytz import timezone
symbol = query.symbol.upper()
symbol = "^" + symbol if symbol in ["VIX", "RUT", "SPX", "NDX"] else symbol
def _get_all_data(symbol: str):
"""Get all options data in a single thread-safe operation."""
t = Ticker(symbol)
expirations = list(t.options)
if not expirations or len(expirations) == 0:
return None, None, []
underlying = t.option_chain(expirations[0])[2]
chains_output: list = []
tz = timezone(underlying.get("exchangeTimezoneName", "UTC"))
for expiration in expirations:
exp = datetime.strptime(expiration, "%Y-%m-%d").date()
now = datetime.now().date()
dte = (exp - now).days
chain_data = t.option_chain(expiration, tz=tz)
calls = chain_data[0]
calls["option_type"] = "call"
calls["expiration"] = expiration
puts = chain_data[1]
puts["option_type"] = "put"
puts["expiration"] = expiration
chain = concat([calls, puts])
chain = (
chain.set_index(["strike", "option_type", "contractSymbol"])
.sort_index()
.reset_index()
)
chain = chain.drop(columns=["contractSize"])
chain["dte"] = dte
underlying_price = underlying.get(
"postMarketPrice", underlying.get("regularMarketPrice")
)
if underlying_price is not None:
chain["underlying_price"] = underlying_price
chain["underlying_symbol"] = symbol
chain["percentChange"] = chain["percentChange"] / 100
if len(chain) > 0:
chains_output.extend(
chain.fillna("N/A").replace("N/A", None).to_dict("records")
)
return underlying, chains_output, expirations
underlying, chains_output, expirations = await asyncio.to_thread(
_get_all_data, symbol
)
if not expirations or len(expirations) == 0:
raise OpenBBError(f"No options found for {symbol}")
if not chains_output:
raise EmptyDataError(f"No data was returned for {symbol}")
underlying_output: dict = {
"symbol": symbol,
"name": underlying.get("longName"), # type: ignore
"exchange": underlying.get("fullExchangeName"), # type: ignore
"exchange_tz": underlying.get("exchangeTimezoneName"), # type: ignore
"currency": underlying.get("currency"), # type: ignore
"bid": underlying.get("bid"), # type: ignore
"bid_size": underlying.get("bidSize"), # type: ignore
"ask": underlying.get("ask"), # type: ignore
"ask_size": underlying.get("askSize"), # type: ignore
"last_price": underlying.get( # type: ignore
"postMarketPrice", underlying.get("regularMarketPrice") # type: ignore
),
"open": underlying.get("regularMarketOpen"), # type: ignore
"high": underlying.get("regularMarketDayHigh"), # type: ignore
"low": underlying.get("regularMarketDayLow"), # type: ignore
"close": underlying.get("regularMarketPrice"), # type: ignore
"prev_close": underlying.get("regularMarketPreviousClose"), # type: ignore
"change": underlying.get("regularMarketChange"), # type: ignore
"change_percent": underlying.get("regularMarketChangePercent"), # type: ignore
"volume": underlying.get("regularMarketVolume"), # type: ignore
"dividend_yield": float(underlying.get("dividendYield", 0)) / 100, # type: ignore
"dividend_yield_ttm": underlying.get("trailingAnnualDividendYield"), # type: ignore
"year_high": underlying.get("fiftyTwoWeekHigh"), # type: ignore
"year_low": underlying.get("fiftyTwoWeekLow"), # type: ignore
"ma_50": underlying.get("fiftyDayAverage"), # type: ignore
"ma_200": underlying.get("twoHundredDayAverage"), # type: ignore
"volume_avg_10d": underlying.get("averageDailyVolume10Day"), # type: ignore
"volume_avg_3m": underlying.get("averageDailyVolume3Month"), # type: ignore
"market_cap": underlying.get("marketCap"), # type: ignore
"shares_outstanding": underlying.get("sharesOutstanding"), # type: ignore
}
return {"underlying": underlying_output, "chains": chains_output}
@staticmethod
def transform_data(
query: YFinanceOptionsChainsQueryParams,
data: dict,
**kwargs: Any,
) -> AnnotatedResult[YFinanceOptionsChainsData]:
"""Transform the data."""
# pylint: disable=import-outside-toplevel
from numpy import nan
from pandas import DataFrame
if not data:
raise EmptyDataError()
metadata = data.get("underlying", {})
records = data.get("chains", [])
output = DataFrame(records)
for col in ["volume", "openInterest"]:
output[col] = output[col].infer_objects().replace({nan: 0}).astype("int64")
output = output.replace({nan: None})
return AnnotatedResult(
result=YFinanceOptionsChainsData.model_validate(output.to_dict("list")),
metadata=metadata,
)

View File

@@ -1,148 +0,0 @@
"""YFinance Price Target Consensus Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.price_target_consensus import (
PriceTargetConsensusData,
PriceTargetConsensusQueryParams,
)
from pydantic import Field, field_validator
class YFinancePriceTargetConsensusQueryParams(PriceTargetConsensusQueryParams):
"""YFinance Price Target Consensus Query."""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
@field_validator("symbol", mode="before", check_fields=False)
@classmethod
def check_symbol(cls, value):
"""Check the symbol."""
if not value:
raise OpenBBError("Error: Symbol is a required field for yFinance.")
return value
class YFinancePriceTargetConsensusData(PriceTargetConsensusData):
"""YFinance Price Target Consensus Data."""
__alias_dict__ = {
"target_high": "targetHighPrice",
"target_low": "targetLowPrice",
"target_consensus": "targetMeanPrice",
"target_median": "targetMedianPrice",
"recommendation": "recommendationKey",
"recommendation_mean": "recommendationMean",
"number_of_analysts": "numberOfAnalystOpinions",
"current_price": "currentPrice",
}
recommendation: str | None = Field(
default=None,
description="Recommendation - buy, sell, etc.",
)
recommendation_mean: float | None = Field(
default=None,
description="Mean recommendation score where 1 is strong buy and 5 is strong sell.",
)
number_of_analysts: int | None = Field(
default=None, description="Number of analysts providing opinions."
)
current_price: float | None = Field(
default=None,
description="Current price of the stock.",
)
currency: str | None = Field(
default=None,
description="Currency the stock is priced in.",
)
class YFinancePriceTargetConsensusFetcher(
Fetcher[
YFinancePriceTargetConsensusQueryParams, list[YFinancePriceTargetConsensusData]
]
):
"""YFinance Price Target Consensus Fetcher."""
@staticmethod
def transform_query(
params: dict[str, Any],
) -> YFinancePriceTargetConsensusQueryParams:
"""Transform the query."""
return YFinancePriceTargetConsensusQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinancePriceTargetConsensusQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from openbb_core.provider.utils.errors import EmptyDataError
from warnings import warn
from yfinance import Ticker
symbols = query.symbol.split(",") # type: ignore
results = []
fields = [
"symbol",
"currentPrice",
"currency",
"targetHighPrice",
"targetLowPrice",
"targetMeanPrice",
"targetMedianPrice",
"recommendationMean",
"recommendationKey",
"numberOfAnalystOpinions",
]
messages: list = []
async def get_one(symbol):
"""Get the data for one ticker symbol."""
result: dict = {}
ticker: dict = {}
try:
ticker = await asyncio.to_thread(lambda: Ticker(symbol).get_info())
except Exception as e:
messages.append(
f"Error getting data for {symbol}: {e.__class__.__name__}: {e}"
)
if ticker:
for field in fields:
if field in ticker:
result[field] = ticker.get(field, None)
if result and result.get("numberOfAnalystOpinions") is not None:
results.append(result)
tasks = [get_one(symbol) for symbol in symbols]
await asyncio.gather(*tasks)
if not results and not messages:
raise EmptyDataError("No data was returned for the given symbol(s)")
if not results and messages:
raise OpenBBError("\n".join(messages))
if results and messages:
for message in messages:
warn(message)
return results
@staticmethod
def transform_data(
query: YFinancePriceTargetConsensusQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinancePriceTargetConsensusData]:
"""Transform the data."""
return [YFinancePriceTargetConsensusData.model_validate(d) for d in data]

View File

@@ -1,190 +0,0 @@
"""YFinance Share Statistics Model."""
# pylint: disable=unused-argument
from datetime import (
date as dateType,
datetime,
timezone,
)
from typing import Any
from warnings import warn
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.share_statistics import (
ShareStatisticsData,
ShareStatisticsQueryParams,
)
from pydantic import Field, field_validator
class YFinanceShareStatisticsQueryParams(ShareStatisticsQueryParams):
"""YFinance Share Statistics Query."""
__json_schema_extra__ = {"symbol": {"multiple_items_allowed": True}}
class YFinanceShareStatisticsData(ShareStatisticsData):
"""YFinance Share Statistics Data."""
__alias_dict__ = {
"outstanding_shares": "sharesOutstanding",
"float_shares": "floatShares",
"date": "dateShortInterest",
"implied_shares_outstanding": "impliedSharesOutstanding",
"short_interest": "sharesShort",
"short_percent_of_float": "shortPercentOfFloat",
"days_to_cover": "shortRatio",
"short_interest_prev_month": "sharesShortPriorMonth",
"short_interest_prev_date": "sharesShortPreviousMonthDate",
"insider_ownership": "heldPercentInsiders",
"institution_ownership": "heldPercentInstitutions",
"institution_float_ownership": "institutionsFloatPercentHeld",
"institutions_count": "institutionsCount",
}
implied_shares_outstanding: int | None = Field(
default=None,
description="Implied Shares Outstanding of common equity,"
+ " assuming the conversion of all convertible subsidiary equity into common.",
)
short_interest: int | None = Field(
default=None,
description="Number of shares that are reported short.",
)
short_percent_of_float: float | None = Field(
default=None,
description="Percentage of shares that are reported short, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
days_to_cover: float | None = Field(
default=None,
description="Number of days to repurchase the shares as a ratio of average daily volume",
)
short_interest_prev_month: int | None = Field(
default=None,
description="Number of shares that were reported short in the previous month.",
)
short_interest_prev_date: dateType | None = Field(
default=None,
description="Date of the previous month's report.",
)
insider_ownership: float | None = Field(
default=None,
description="Percentage of shares held by insiders, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
institution_ownership: float | None = Field(
default=None,
description="Percentage of shares held by institutions, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
institution_float_ownership: float | None = Field(
default=None,
description="Percentage of float held by institutions, as a normalized percent.",
json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
institutions_count: int | None = Field(
default=None,
description="Number of institutions holding shares.",
)
@field_validator(
"date", "short_interest_prev_date", mode="before", check_fields=False
)
@classmethod
def validate_first_trade_date(cls, v):
"""Convert dates from UTC timestamp."""
return datetime.fromtimestamp(v, timezone.utc).date() if v else None
class YFinanceShareStatisticsFetcher(
Fetcher[YFinanceShareStatisticsQueryParams, list[YFinanceShareStatisticsData]]
):
"""YFinance Share Statistics Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFinanceShareStatisticsQueryParams:
"""Transform the query."""
return YFinanceShareStatisticsQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFinanceShareStatisticsQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Extract the raw data from YFinance."""
# pylint: disable=import-outside-toplevel
import asyncio # noqa
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.provider.utils.errors import EmptyDataError
from yfinance import Ticker
symbols = query.symbol.split(",")
results = []
fields = [
"symbol",
"sharesOutstanding",
"floatShares",
"impliedSharesOutstanding",
"sharesShort",
"sharesShortPriorMonth",
"sharesShortPreviousMonthDate",
"shortRatio",
"shortPercentOfFloat",
"dateShortInterest",
"heldPercentInsiders",
"heldPercentInstitutions",
"institutionsFloatPercentHeld",
"institutionsCount",
]
messages: list = []
async def get_one(symbol):
"""Get the data for one ticker symbol."""
result: dict = {}
ticker: dict = {}
try:
_ticker = await asyncio.to_thread(lambda: Ticker(symbol))
ticker = await asyncio.to_thread(lambda: _ticker.get_info())
major_holders = await asyncio.to_thread(
lambda: _ticker.get_major_holders(as_dict=True).get("Value")
)
if major_holders:
ticker.update(major_holders) # type: ignore
except Exception as e:
messages.append(
f"Error getting data for {symbol} -> {e.__class__.__name__}: {e}"
)
if ticker:
for field in fields:
if field in ticker:
result[field] = ticker.get(field, None)
if result and result.get("sharesOutstanding") is not None:
results.append(result)
tasks = [get_one(symbol) for symbol in symbols]
await asyncio.gather(*tasks)
if not results and messages:
raise OpenBBError("\n".join(messages))
if not results and not messages:
raise EmptyDataError("No data was returned for the given symbol(s).")
if results and messages:
for message in messages:
warn(message)
return results
@staticmethod
def transform_data(
query: YFinanceShareStatisticsQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFinanceShareStatisticsData]:
"""Transform the data."""
return [YFinanceShareStatisticsData.model_validate(d) for d in data]

View File

@@ -1,100 +0,0 @@
"""Yahoo Finance Asset Undervalued Growth Tech Equities Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFUndervaluedGrowthEquitiesQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Undervalued Growth Stocks Query.
Source: https://finance.yahoo.com/screener/predefined/undervalued_growth_stocks
"""
limit: int | None = Field(
default=200,
description="Limit the number of results.",
)
class YFUndervaluedGrowthEquitiesData(YFPredefinedScreenerData):
"""Yahoo Finance Undervalued Growth Stocks Data."""
class YFUndervaluedGrowthEquitiesFetcher(
Fetcher[
YFUndervaluedGrowthEquitiesQueryParams, list[YFUndervaluedGrowthEquitiesData]
]
):
"""Yahoo Finance Undervalued Growth Stocks Fetcher."""
@staticmethod
def transform_query(
params: dict[str, Any],
) -> YFUndervaluedGrowthEquitiesQueryParams:
"""Transform query params."""
return YFUndervaluedGrowthEquitiesQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFUndervaluedGrowthEquitiesQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
body = {
"offset": 0,
"size": 250,
"sortField": "eodvolume",
"sortType": "desc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "gt", "operands": ["intradaymarketcap", 500000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{
"operator": "btwn",
"operands": ["peratio.lasttwelvemonths", 0, 20],
},
{"operator": "lt", "operands": ["pegratio_5y", 1]},
{"operator": "gte", "operands": ["epsgrowth.lasttwelvemonths", 25]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFUndervaluedGrowthEquitiesData]:
"""Transform data."""
return [
YFUndervaluedGrowthEquitiesData.model_validate(d)
for d in sorted(
data,
key=lambda x: x["regularMarketChangePercent"],
reverse=query.sort == "desc",
)
]

View File

@@ -1,96 +0,0 @@
"""Yahoo Finance Asset Undervalued Large Caps Model."""
# pylint: disable=unused-argument
from typing import Any
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.equity_performance import (
EquityPerformanceQueryParams,
)
from openbb_yfinance.utils.references import YFPredefinedScreenerData
from pydantic import Field
class YFUndervaluedLargeCapsQueryParams(EquityPerformanceQueryParams):
"""Yahoo Finance Undervalued Large Caps Query.
Source: https://finance.yahoo.com/screener/predefined/undervalued_large_caps
"""
limit: int | None = Field(
default=200,
description="Limit the number of results.",
)
class YFUndervaluedLargeCapsData(YFPredefinedScreenerData):
"""Yahoo Finance Undervalued Large Caps Data."""
class YFUndervaluedLargeCapsFetcher(
Fetcher[YFUndervaluedLargeCapsQueryParams, list[YFUndervaluedLargeCapsData]]
):
"""Yahoo Finance Undervalued Large Caps Fetcher."""
@staticmethod
def transform_query(params: dict[str, Any]) -> YFUndervaluedLargeCapsQueryParams:
"""Transform query params."""
return YFUndervaluedLargeCapsQueryParams(**params)
@staticmethod
async def aextract_data(
query: YFUndervaluedLargeCapsQueryParams,
credentials: dict[str, str] | None,
**kwargs: Any,
) -> list[dict]:
"""Get data from YF."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.utils.helpers import get_custom_screener
body = {
"offset": 0,
"size": 250,
"sortField": "eodvolume",
"sortType": "desc",
"quoteType": "equity",
"query": {
"operator": "and",
"operands": [
{"operator": "gt", "operands": ["intradaymarketcap", 10000000000]},
{
"operator": "or",
"operands": [
{"operator": "eq", "operands": ["exchange", "NMS"]},
{"operator": "eq", "operands": ["exchange", "NYQ"]},
],
},
{
"operator": "btwn",
"operands": ["peratio.lasttwelvemonths", 0, 20],
},
{"operator": "lt", "operands": ["pegratio_5y", 1]},
{"operator": "gte", "operands": ["epsgrowth.lasttwelvemonths", 25]},
],
},
"userId": "",
"userIdType": "guid",
}
return await get_custom_screener(body=body, limit=query.limit)
@staticmethod
def transform_data(
query: EquityPerformanceQueryParams,
data: list[dict],
**kwargs: Any,
) -> list[YFUndervaluedLargeCapsData]:
"""Transform data."""
return [
YFUndervaluedLargeCapsData.model_validate(d)
for d in sorted(
data,
key=lambda x: x["regularMarketChangePercent"],
reverse=query.sort == "desc",
)
]

View File

@@ -1 +0,0 @@
"""Yahoo Finance utils directory."""

View File

@@ -1,189 +0,0 @@
Ticker,Description,Exchange,Category
YI,"1,000 oz Mini Silver Futures",NYB,metals
ALI,Aluminum Futures,CMX,metals
BLK,Block Cheese Futures,CME,agriculture
AW,Bloomberg Commodity Index Futures,CBT,index
BZ,Brent Crude Oil Last Day Finance Futures,NYM,hydrocarbon
BZT,Brent Crude Oil Last Day TAS Futures,NYM,hydrocarbon
CB,Cash-Settled Butter Futures,CME,agriculture
CSC,Cash-Settled Cheese Futures,CME,agriculture
GEO,CBL Global Emissions Offset Futures,NYM,hydrocarbon
ZW,Chicago SRW Wheat Futures,CBT,agriculture
ZWT,Chicago SRW Wheat TAS Futures,CBT,agriculture
DC,Class III Milk Futures,CME,agriculture
GDK,Class IV Milk Futures,CME,agriculture
HG0,Copper Spot TAS Futures,CMX,metals
HGT,Copper TAS Futures,CMX,metals
ZC,Corn Futures,CBT,agriculture
ZCT,Corn TAS Futures,CBT,agriculture
CLT,Crude Oil TAS Futures,NYM,hydrocarbon
DY,Dry Whey Futures,CME,agriculture
QC,E-mini Copper Futures,CMX,metals
QM,E-mini Crude Oil Futures,NYM,hydrocarbon
XAE,E-mini Energy Select Sector Futures,CME,index
QO,E-mini Gold Futures,CMX,metals
GC,CME Gold Futures,CMX,metals
SGU,Shanghai Gold (USD) Futures,CMX,metals
QG,E-mini Natural Gas Futures,NYM,hydrocarbon
QH,E-mini NY Harbor ULSD Futures,NYM,hydrocarbon
QU,E-mini RBOB Gasoline Futures,NYM,hydrocarbon
QI,E-mini Silver Futures,CMX,metals
GF,Feeder Cattle Futures,CME,agriculture
GFT,Feeder Cattle TAS Futures,CME,agriculture
GCT,Gold TAS Futures Futures,CMX,metals
KE,KC HRW Wheat Futures,CBT,agriculture
KET,KC HRW Wheat TAS Futures,CBT,agriculture
HE,Lean Hogs Futures,CME,agriculture
HET,Lean Hogs TAS Futures,CME,agriculture
LE,Live Cattle Futures,CME,agriculture
LET,Live Cattle TAS Futures,CME,agriculture
HG,Copper Futures,CMX,metals
MHG,E-mini Micro Copper Futures,CMX,metals
MGC,E-mini Micro Gold Futures,CMX,metals
SIL,E-mini Micro Silver Futures ,CMX,metals
MCL,Micro WTI Crude Oil Futures,NYM,hydrocarbon
YG,E-mini Gold Futures,NYB,metals
XK,Mini Soybean Futures,CBT,agriculture
XC,Mini Corn Futures,CBT,agriculture
XW,Mini Chicago SRW Wheat Futures,CBT,agriculture
GNF,Nonfat Dry Milk Futures,CME,agriculture
ZO,Oats Futures,CBT,agriculture
PRK,Pork Cutout Futures,CME,agriculture
RBT,RBOB Gasoline TAS Futures,NYM,hydrocarbon
ZR,Rough Rice Futures,CBT,agriculture
GD,S&P GSCI Commodity Index Futures,CME,index
SIT,Silver TAS Futures,CMX,metals
ZS,Soybean Futures,CBT,agriculture
ZM,Soybean Meal Futures,CBT,agriculture
ZMT,Soybean Meal TAS Futures,CBT,agriculture
ZL,Soybean Oil Futures,CBT,agriculture
ZLT,Soybean Oil TAS Futures,CBT,agriculture
SBT,Soybean TAS Futures,CBT,agriculture
ZN,10-Year T-Note Futures,CBT,bonds
N1U,10-Year USD MAC Swap Futures,CBT,bonds
TWE,20-Year U.S. Treasury Bond Futures,CBT,bonds
ZT,2-Year T-Note Futures,CBT,bonds
F1U,5-Year USD MAC Swap Futures,CBT,bonds
RX,Dow Jones Real Estate Index Futures,CBT,index
GE,Eurodollar Futures,CME,currency
GLB,One-Month Eurodollar Futures,CME,currency
ZF,Five-Year US Treasury Note Futures,CBT,bonds
10Y,Micro 10-Year Yield Futures,CBT,bonds
2YY,Micro 2-Year Yield Futures,CBT,bonds
30Y,Micro 30-Year Yield Futures,CBT,bonds
5YY,Micro 5-Year Yield Futures,CBT,bonds
SR1,One-Month SOFR Futures,CME,bonds
ZFT,TAS on 5-Year Treasury Note Futures,CBT,bonds
ZQ,Thirty-Day Fed Fund Futures,CBT,bonds
Z3N,Three Year Treasury Note Futures,CBT,bonds
SR3,Three-Month SOFR Futures,CME,bonds
ZB,U.S. Treasury Bond Futures,CBT,bonds
UB,Ultra U.S. Treasury Bond Futures,CBT,bonds
BTM,Bakkt BTC (USD) Monthly Futures,NYB,currency
BTC,Bitcoin Futures,CME,currency
ETH,Ether Futures,CME,currency
MBT,E-mini Micro Bitcoin Futures,CME,currency
MET,E-mini Micro Ether Futures,CME,currency
6A,Australian Dollar Futures,CME,currency
6L,Brazilian Real Futures,CME,currency
6B,British Pound Futures,CME,currency
PJY,British Pound/Japanese Yen Futures,CME,currency
PSF,British Pound/Swiss Franc Futures,CME,currency
6C,Canadian Dollar Futures,CME,currency
E7,E-mini Euro FX Futures,CME,currency
J7,E-mini Japanese Yen Futures,CME,currency
6E,Euro FX Futures,CME,currency
EAD,Euro/Australian Dollar Futures,CME,currency
RP,Euro/British Pound Futures,CME,currency
ECD,Euro/Canadian Dollar Futures,CME,currency
RY,Euro/Japanese Yen Futures,CME,currency
ENK,Euro/Norwegian Krone Futures,CME,currency
ESK,Euro/Swedish Krona Futures,CME,currency
RF,Euro/Swiss Franc Futures,CME,currency
SIR,Indian Rupee/USD Futures,CME,currency
6J,Japanese Yen Futures,CME,currency
KRW,Korean Won Futures,CME,currency
6M,Mexican Peso Futures,CME,currency
M6A,Micro AUD/USD Futures,CME,currency
MCD,Micro CAD/USD Futures,CME,currency
MSF,Micro CHF/USD Futures,CME,currency
M6E,Micro EUR/USD Futures,CME,currency
M6B,Micro GBP/USD Futures,CME,currency
MIR,Micro INR/USD Futures,CME,currency
M6C,Micro USD/CAD Futures,CME,currency
M6J,Micro USD/JPY Futures,CME,currency
6N,New Zealand Dollar Futures,CME,currency
NKD,Nikkei Index (USD) Futures,CME,index
NIY,Nikkei Index (YEN) Futures,CME,index
NOK,Norwegian Krone Futures,CME,currency
6R,Russian Ruble Futures,CME,currency
6Z,South African Rand Futures,CME,currency
SEK,Swedish Krona Futures,CME,currency
6S,Swiss Franc Futures,CME,currency
SJY,Swiss Franc/Japanese Yen Futures,CME,currency
TPY,Yen Denominated TOPIX Futures,CME,index
YMT,E-mini DJIA Index BTIC Futures,CBT,index
NQT,E-mini Nasdaq 100 BTIC Futures,CME,index
EST,E-mini S&P 500 BTIC Futures,CME,index
XAF,E-mini S&P 500 Financial Select Sector Index Futures,CME,index
RS1,E-mini Russell 1000 Index Futures,CME,index
RSG,E-mini Russell 1000 Growth Index Futures,CME,index
RSV,E-mini Russell 1000 Value Index Futures,CME,index
RTY,E-mini Russell 2000 Index Futures,CME,index
M2K,E-mini Micro Russell 2000 Index Futures,CME,index
ESG,E-mini S&P 500 ESG Index Futures,CME,index
EMT,E-mini S&P MidCap 400 Index BTIC Futures,CME,index
EMD,E-mini S&P MidCap 400 Index Futures,CME,index
MNQ,E-mini Micro Nasdaq 100 Index Futures,CME,index
MES,E-mini Micro S&P 500 Index Futures,CME,index
ES,E-Mini S&P 500 Index Futures,CME,index
FNG,ICE Micro FANG+ Index Futures,NYB,index
MMW,ICE MSCI ACWI NTR Index Futures,NYB,index
CHH,ICE MSCI China NTR Futures,NYB,index
MFS,ICE MSCI EAFE Index Futures,NYB,index
ASN,ICE MSCI EM Asia NTR Index Futures,NYB,index
LFM,ICE MSCI EM ESG Leaders NTR Index Futures,NYB,index
MML,ICE MSCI EM Latin America NTR Index Futures,NYB,index
MME,ICE MSCI Emerging Markets Index Futures,NYB,index
MIN,ICE MSCI India NTR Index Futures,NYB,index
USS,ICE MSCI USA GTR Index Futures,NYB,index
MWL,ICE MSCI World Index Futures,NYB,index
MWS,ICE MSCI World NTR Index Futures,NYB,index
VLQ,Nasdaq 100 Volatility Index Futures,CME,index
SDA,S&P 500 Annual Dividend Index Futures,CME,index
SED,SED (SOFR-Eurodollar) Spread Futures,CME,bonds
PL,Platinum Futures,NYM,metals
PA,Palladium Futures,NYM,metals
BUS,US Midwest Busheling Ferrous Futures,CMX,metals
AUP,Aluminum MW U.S. Transaction,CMX,metals
GLI,European Low Sulphur Gasoil Futures,NYM,hydrocarbon
DX,ICE U.S. Dollar Index Futures,NYB,index
FT5,E-mini FTSE China 50 Index Futures,CME,index
MMM,ICE MSCI Emerging Markets EMEA NTR Index Futures,NYB,index
MMN,ICE MSCI Emerging Markets NTR Index Futures,NYB,index
MLE,ICE MSCI Latin America Index Futures,NYB,index
YM,E-mini DJ $5 Index Futures,CBT,index
XAI,E-mini S&P 500 Industrial Select Sector Futures,CME,index
XAB,E-mini S&P 500 Materials Select Sector Futures,CME,index
XAK,E-mini S&P 500 Technology Select Sector Futures,CME,index
XAP,E-mini S&P 500 Consumer Staples Select Sector Futures,CME,index
XAR,E-mini S&P 500 Real Estate Select Sector Futures,CME,index
XAU,E-mini S&P 500 Utilities Select Sector Futures,CME,index
XAV,E-mini S&P 500 Health Care Select Sector Futures,CME,index
XAY,E-mini S&P 500 Consumer Discretionary Select Sector Futures,CME,index
XAZ,E-mini S&P 500 Communication Services Select Sector Futures,CME,index
BIO,E-mini Nasdaq Biotech Industry Futures,CME,index
NQ,CME Nasdaq 100 Index Futures,CME,index
NQQ,TACO on E-mini Nasdaq 100 Index Futures,CME,index
UFV,Urea (Granular) FOB US Gulf Futures,CBT,agriculture
CC,Cocoa Futures,NYB,agriculture
KC,Coffee Futures,NYB,agriculture
CT,Cotton Futures,NYB,agriculture
SF,Sugar No. 16 Futures,NYB,agriculture
SB,Sugar No. 11 Futures,NYB,agriculture
OJ,Orange Juice Futures,NYB,agriculture
NG,Natural Gas Futures,NYM,hydrocarbon
HO,Heating Oil Futures,NYM,hydrocarbon
RB,RBOB Gasoline Futures,NYM,hydrocarbon
CL,WTI Crude Oil Futures,NYM,hydrocarbon
TRM,ICE TRY/USD Futures,NYB,currency
1 Ticker Description Exchange Category
2 YI 1,000 oz Mini Silver Futures NYB metals
3 ALI Aluminum Futures CMX metals
4 BLK Block Cheese Futures CME agriculture
5 AW Bloomberg Commodity Index Futures CBT index
6 BZ Brent Crude Oil Last Day Finance Futures NYM hydrocarbon
7 BZT Brent Crude Oil Last Day TAS Futures NYM hydrocarbon
8 CB Cash-Settled Butter Futures CME agriculture
9 CSC Cash-Settled Cheese Futures CME agriculture
10 GEO CBL Global Emissions Offset Futures NYM hydrocarbon
11 ZW Chicago SRW Wheat Futures CBT agriculture
12 ZWT Chicago SRW Wheat TAS Futures CBT agriculture
13 DC Class III Milk Futures CME agriculture
14 GDK Class IV Milk Futures CME agriculture
15 HG0 Copper Spot TAS Futures CMX metals
16 HGT Copper TAS Futures CMX metals
17 ZC Corn Futures CBT agriculture
18 ZCT Corn TAS Futures CBT agriculture
19 CLT Crude Oil TAS Futures NYM hydrocarbon
20 DY Dry Whey Futures CME agriculture
21 QC E-mini Copper Futures CMX metals
22 QM E-mini Crude Oil Futures NYM hydrocarbon
23 XAE E-mini Energy Select Sector Futures CME index
24 QO E-mini Gold Futures CMX metals
25 GC CME Gold Futures CMX metals
26 SGU Shanghai Gold (USD) Futures CMX metals
27 QG E-mini Natural Gas Futures NYM hydrocarbon
28 QH E-mini NY Harbor ULSD Futures NYM hydrocarbon
29 QU E-mini RBOB Gasoline Futures NYM hydrocarbon
30 QI E-mini Silver Futures CMX metals
31 GF Feeder Cattle Futures CME agriculture
32 GFT Feeder Cattle TAS Futures CME agriculture
33 GCT Gold TAS Futures Futures CMX metals
34 KE KC HRW Wheat Futures CBT agriculture
35 KET KC HRW Wheat TAS Futures CBT agriculture
36 HE Lean Hogs Futures CME agriculture
37 HET Lean Hogs TAS Futures CME agriculture
38 LE Live Cattle Futures CME agriculture
39 LET Live Cattle TAS Futures CME agriculture
40 HG Copper Futures CMX metals
41 MHG E-mini Micro Copper Futures CMX metals
42 MGC E-mini Micro Gold Futures CMX metals
43 SIL E-mini Micro Silver Futures CMX metals
44 MCL Micro WTI Crude Oil Futures NYM hydrocarbon
45 YG E-mini Gold Futures NYB metals
46 XK Mini Soybean Futures CBT agriculture
47 XC Mini Corn Futures CBT agriculture
48 XW Mini Chicago SRW Wheat Futures CBT agriculture
49 GNF Nonfat Dry Milk Futures CME agriculture
50 ZO Oats Futures CBT agriculture
51 PRK Pork Cutout Futures CME agriculture
52 RBT RBOB Gasoline TAS Futures NYM hydrocarbon
53 ZR Rough Rice Futures CBT agriculture
54 GD S&P GSCI Commodity Index Futures CME index
55 SIT Silver TAS Futures CMX metals
56 ZS Soybean Futures CBT agriculture
57 ZM Soybean Meal Futures CBT agriculture
58 ZMT Soybean Meal TAS Futures CBT agriculture
59 ZL Soybean Oil Futures CBT agriculture
60 ZLT Soybean Oil TAS Futures CBT agriculture
61 SBT Soybean TAS Futures CBT agriculture
62 ZN 10-Year T-Note Futures CBT bonds
63 N1U 10-Year USD MAC Swap Futures CBT bonds
64 TWE 20-Year U.S. Treasury Bond Futures CBT bonds
65 ZT 2-Year T-Note Futures CBT bonds
66 F1U 5-Year USD MAC Swap Futures CBT bonds
67 RX Dow Jones Real Estate Index Futures CBT index
68 GE Eurodollar Futures CME currency
69 GLB One-Month Eurodollar Futures CME currency
70 ZF Five-Year US Treasury Note Futures CBT bonds
71 10Y Micro 10-Year Yield Futures CBT bonds
72 2YY Micro 2-Year Yield Futures CBT bonds
73 30Y Micro 30-Year Yield Futures CBT bonds
74 5YY Micro 5-Year Yield Futures CBT bonds
75 SR1 One-Month SOFR Futures CME bonds
76 ZFT TAS on 5-Year Treasury Note Futures CBT bonds
77 ZQ Thirty-Day Fed Fund Futures CBT bonds
78 Z3N Three Year Treasury Note Futures CBT bonds
79 SR3 Three-Month SOFR Futures CME bonds
80 ZB U.S. Treasury Bond Futures CBT bonds
81 UB Ultra U.S. Treasury Bond Futures CBT bonds
82 BTM Bakkt BTC (USD) Monthly Futures NYB currency
83 BTC Bitcoin Futures CME currency
84 ETH Ether Futures CME currency
85 MBT E-mini Micro Bitcoin Futures CME currency
86 MET E-mini Micro Ether Futures CME currency
87 6A Australian Dollar Futures CME currency
88 6L Brazilian Real Futures CME currency
89 6B British Pound Futures CME currency
90 PJY British Pound/Japanese Yen Futures CME currency
91 PSF British Pound/Swiss Franc Futures CME currency
92 6C Canadian Dollar Futures CME currency
93 E7 E-mini Euro FX Futures CME currency
94 J7 E-mini Japanese Yen Futures CME currency
95 6E Euro FX Futures CME currency
96 EAD Euro/Australian Dollar Futures CME currency
97 RP Euro/British Pound Futures CME currency
98 ECD Euro/Canadian Dollar Futures CME currency
99 RY Euro/Japanese Yen Futures CME currency
100 ENK Euro/Norwegian Krone Futures CME currency
101 ESK Euro/Swedish Krona Futures CME currency
102 RF Euro/Swiss Franc Futures CME currency
103 SIR Indian Rupee/USD Futures CME currency
104 6J Japanese Yen Futures CME currency
105 KRW Korean Won Futures CME currency
106 6M Mexican Peso Futures CME currency
107 M6A Micro AUD/USD Futures CME currency
108 MCD Micro CAD/USD Futures CME currency
109 MSF Micro CHF/USD Futures CME currency
110 M6E Micro EUR/USD Futures CME currency
111 M6B Micro GBP/USD Futures CME currency
112 MIR Micro INR/USD Futures CME currency
113 M6C Micro USD/CAD Futures CME currency
114 M6J Micro USD/JPY Futures CME currency
115 6N New Zealand Dollar Futures CME currency
116 NKD Nikkei Index (USD) Futures CME index
117 NIY Nikkei Index (YEN) Futures CME index
118 NOK Norwegian Krone Futures CME currency
119 6R Russian Ruble Futures CME currency
120 6Z South African Rand Futures CME currency
121 SEK Swedish Krona Futures CME currency
122 6S Swiss Franc Futures CME currency
123 SJY Swiss Franc/Japanese Yen Futures CME currency
124 TPY Yen Denominated TOPIX Futures CME index
125 YMT E-mini DJIA Index BTIC Futures CBT index
126 NQT E-mini Nasdaq 100 BTIC Futures CME index
127 EST E-mini S&P 500 BTIC Futures CME index
128 XAF E-mini S&P 500 Financial Select Sector Index Futures CME index
129 RS1 E-mini Russell 1000 Index Futures CME index
130 RSG E-mini Russell 1000 Growth Index Futures CME index
131 RSV E-mini Russell 1000 Value Index Futures CME index
132 RTY E-mini Russell 2000 Index Futures CME index
133 M2K E-mini Micro Russell 2000 Index Futures CME index
134 ESG E-mini S&P 500 ESG Index Futures CME index
135 EMT E-mini S&P MidCap 400 Index BTIC Futures CME index
136 EMD E-mini S&P MidCap 400 Index Futures CME index
137 MNQ E-mini Micro Nasdaq 100 Index Futures CME index
138 MES E-mini Micro S&P 500 Index Futures CME index
139 ES E-Mini S&P 500 Index Futures CME index
140 FNG ICE Micro FANG+ Index Futures NYB index
141 MMW ICE MSCI ACWI NTR Index Futures NYB index
142 CHH ICE MSCI China NTR Futures NYB index
143 MFS ICE MSCI EAFE Index Futures NYB index
144 ASN ICE MSCI EM Asia NTR Index Futures NYB index
145 LFM ICE MSCI EM ESG Leaders NTR Index Futures NYB index
146 MML ICE MSCI EM Latin America NTR Index Futures NYB index
147 MME ICE MSCI Emerging Markets Index Futures NYB index
148 MIN ICE MSCI India NTR Index Futures NYB index
149 USS ICE MSCI USA GTR Index Futures NYB index
150 MWL ICE MSCI World Index Futures NYB index
151 MWS ICE MSCI World NTR Index Futures NYB index
152 VLQ Nasdaq 100 Volatility Index Futures CME index
153 SDA S&P 500 Annual Dividend Index Futures CME index
154 SED SED (SOFR-Eurodollar) Spread Futures CME bonds
155 PL Platinum Futures NYM metals
156 PA Palladium Futures NYM metals
157 BUS US Midwest Busheling Ferrous Futures CMX metals
158 AUP Aluminum MW U.S. Transaction CMX metals
159 GLI European Low Sulphur Gasoil Futures NYM hydrocarbon
160 DX ICE U.S. Dollar Index Futures NYB index
161 FT5 E-mini FTSE China 50 Index Futures CME index
162 MMM ICE MSCI Emerging Markets EMEA NTR Index Futures NYB index
163 MMN ICE MSCI Emerging Markets NTR Index Futures NYB index
164 MLE ICE MSCI Latin America Index Futures NYB index
165 YM E-mini DJ $5 Index Futures CBT index
166 XAI E-mini S&P 500 Industrial Select Sector Futures CME index
167 XAB E-mini S&P 500 Materials Select Sector Futures CME index
168 XAK E-mini S&P 500 Technology Select Sector Futures CME index
169 XAP E-mini S&P 500 Consumer Staples Select Sector Futures CME index
170 XAR E-mini S&P 500 Real Estate Select Sector Futures CME index
171 XAU E-mini S&P 500 Utilities Select Sector Futures CME index
172 XAV E-mini S&P 500 Health Care Select Sector Futures CME index
173 XAY E-mini S&P 500 Consumer Discretionary Select Sector Futures CME index
174 XAZ E-mini S&P 500 Communication Services Select Sector Futures CME index
175 BIO E-mini Nasdaq Biotech Industry Futures CME index
176 NQ CME Nasdaq 100 Index Futures CME index
177 NQQ TACO on E-mini Nasdaq 100 Index Futures CME index
178 UFV Urea (Granular) FOB US Gulf Futures CBT agriculture
179 CC Cocoa Futures NYB agriculture
180 KC Coffee Futures NYB agriculture
181 CT Cotton Futures NYB agriculture
182 SF Sugar No. 16 Futures NYB agriculture
183 SB Sugar No. 11 Futures NYB agriculture
184 OJ Orange Juice Futures NYB agriculture
185 NG Natural Gas Futures NYM hydrocarbon
186 HO Heating Oil Futures NYM hydrocarbon
187 RB RBOB Gasoline Futures NYM hydrocarbon
188 CL WTI Crude Oil Futures NYM hydrocarbon
189 TRM ICE TRY/USD Futures NYB currency

View File

@@ -1,627 +0,0 @@
"""Yahoo Finance helpers module."""
# pylint: disable=unused-argument,too-many-arguments,too-many-branches,too-many-locals,too-many-statements
from typing import TYPE_CHECKING, Any, Literal, Union
from openbb_core.provider.utils.errors import EmptyDataError
from openbb_yfinance.utils.references import INTERVALS, MONTHS, PERIODS
if TYPE_CHECKING:
from datetime import date # noqa
from pandas import DataFrame
MONTH_MAP = {
"F": "01",
"G": "02",
"H": "03",
"J": "04",
"K": "05",
"M": "06",
"N": "07",
"Q": "08",
"U": "09",
"V": "10",
"X": "11",
"Z": "12",
}
PREDEFINED_SCREENERS = [
"aggressive_small_caps",
"day_gainers",
"day_losers",
"growth_technology_stocks",
"most_actives",
"most_shorted_stocks",
"small_cap_gainers",
"undervalued_growth_stocks",
"undervalued_large_caps",
"conservative_foreign_funds",
"high_yield_bond",
"portfolio_anchors",
"solid_large_growth_funds",
"solid_midcap_growth_funds",
"top_mutual_funds",
]
SCREENER_FIELDS = [
"symbol",
"shortName",
"regularMarketPrice",
"regularMarketChange",
"regularMarketChangePercent",
"regularMarketVolume",
"regularMarketOpen",
"regularMarketDayHigh",
"regularMarketDayLow",
"regularMarketPreviousClose",
"fiftyDayAverage",
"twoHundredDayAverage",
"fiftyTwoWeekHigh",
"fiftyTwoWeekLow",
"marketCap",
"sharesOutstanding",
"epsTrailingTwelveMonths",
"forwardPE",
"epsForward",
"bookValue",
"priceToBook",
"trailingAnnualDividendYield",
"currency",
"exchange",
"exchangeTimezoneName",
"earnings_date",
]
async def get_custom_screener(
body: dict[str, Any],
limit: int | None = None,
region: str = "US",
):
"""Get a custom screener."""
# pylint: disable=import-outside-toplevel
from openbb_core.provider.utils.helpers import ( # noqa
safe_fromtimestamp,
)
from pytz import timezone
from yfinance.data import YfData
params_dict = {
"corsDomain": "finance.yahoo.com",
"formatted": "false",
"lang": "en-US",
"region": region,
}
_data = YfData()
results: list = []
body = body.copy()
response = _data.post(
"https://query2.finance.yahoo.com/v1/finance/screener",
body=body,
params=params_dict,
)
response.raise_for_status()
res = response.json()["finance"]["result"][0]
if not res.get("quotes"):
raise EmptyDataError("No data found for the predefined screener.")
results.extend(res["quotes"])
total_results = res["total"]
while len(results) < total_results:
if limit is not None and len(results) >= limit:
break
offset = len(results)
body["offset"] = offset
response = _data.post(
"https://query2.finance.yahoo.com/v1/finance/screener",
body=body,
params=params_dict,
)
if not res:
break
res = response.json()["finance"]["result"][0]
results.extend(res.get("quotes", []))
output: list = []
for item in results:
tz = item["exchangeTimezoneName"]
earnings_date = (
safe_fromtimestamp(item["earningsTimestamp"], timezone(tz)).strftime("%Y-%m-%d %H:%M:%S%z") # type: ignore
if item.get("earningsTimestamp")
else None
)
item["earnings_date"] = earnings_date
result = {k: item.get(k, None) for k in SCREENER_FIELDS}
if result.get("regularMarketChange") and result.get("regularMarketVolume"):
output.append(result)
return output[:limit] if limit is not None else output
async def get_defined_screener(
name: str | None = None,
body: dict[str, Any] | None = None,
limit: int | None = None,
):
"""Get a predefined screener."""
# pylint: disable=import-outside-toplevel
import yfinance as yf # noqa
from openbb_core.provider.utils.helpers import (
safe_fromtimestamp,
)
from pytz import timezone
if name and name not in PREDEFINED_SCREENERS:
raise ValueError(
f"Invalid predefined screener name: {name}\n Valid names: {PREDEFINED_SCREENERS}"
)
results: list = []
offset = 0
response = yf.screen(
name, # type: ignore
size=250,
offset=offset,
)
if not response.get("quotes"):
raise EmptyDataError("No data found for the predefined screener.")
total_results = response["total"]
results.extend(response["quotes"])
while len(results) < total_results:
if limit is not None and len(results) >= limit:
break
offset = len(results)
res = yf.screen(
name, # type: ignore
size=250,
offset=offset,
)
if not res:
break
results.extend(res.get("quotes", []))
output: list = []
symbols: set = set()
for item in results:
sym = item.get("symbol")
if not sym or sym in symbols:
continue
symbols.add(sym)
tz = item["exchangeTimezoneName"]
earnings_date = (
safe_fromtimestamp(item["earningsTimestamp"], timezone(tz)).strftime("%Y-%m-%d %H:%M:%S%z") # type: ignore
if item.get("earningsTimestamp")
else None
)
item["earnings_date"] = earnings_date
result = {k: item.get(k, None) for k in SCREENER_FIELDS}
if result.get("regularMarketChange") and result.get("regularMarketVolume"):
output.append(result)
if not output:
raise EmptyDataError("No data found for the predefined screener.")
return output[:limit] if limit is not None else output
def get_expiration_month(symbol: str) -> str:
"""Get the expiration month for a given symbol."""
month = symbol.split(".")[0][-3]
year = "20" + symbol.split(".")[0][-2:]
return f"{year}-{MONTH_MAP[month]}"
def get_futures_data() -> "DataFrame":
"""Return the dataframe of the futures csv file."""
# pylint: disable=import-outside-toplevel
from pathlib import Path # noqa
from pandas import read_csv # noqa
return read_csv(Path(__file__).resolve().parent / "futures.csv")
def get_futures_symbols(symbol: str) -> list:
"""Get the list of futures symbols from the continuation symbol."""
# pylint: disable=import-outside-toplevel
from yfinance.data import YfData
_symbol = symbol.upper() + "%3DF"
URL = f"https://query2.finance.yahoo.com/v10/finance/quoteSummary/{_symbol}"
params = {"modules": "futuresChain"}
response: dict = YfData().get_raw_json(url=URL, params=params)
futures_symbols: list = []
if "quoteSummary" in response:
result = response["quoteSummary"].get("result", [])
if not result:
raise ValueError(f"No futures chain found for, {symbol}")
futures = result[0].get("futuresChain", {})
if futures:
futures_symbols = futures.get("futures", [])
return futures_symbols
async def get_futures_quotes(symbols: list) -> "DataFrame":
"""Get the current futures quotes for a list of symbols."""
# pylint: disable=import-outside-toplevel
import os # noqa
from contextlib import (
contextmanager,
redirect_stderr,
redirect_stdout,
suppress,
) # noqa
from aiohttp import ClientError # noqa
from openbb_yfinance.models.equity_quote import YFinanceEquityQuoteFetcher # noqa
from pandas import DataFrame # noqa
@contextmanager
def suppress_all_output():
with open(os.devnull, "w") as devnull, redirect_stdout(
devnull
), redirect_stderr(devnull):
yield
with suppress_all_output(), suppress(ClientError):
fetcher = YFinanceEquityQuoteFetcher()
data = await fetcher.fetch_data(
params={"symbol": ",".join(symbols)}, credentials={}
)
df = DataFrame([d.model_dump() for d in data]) # type: ignore
prices = df[["symbol", "bid", "ask", "prev_close"]].copy()
prices["price"] = round((prices.ask + prices.bid) / 2, 2)
prices["price"] = prices.price.fillna(prices.prev_close)
prices["expiration"] = [get_expiration_month(symbol) for symbol in prices.symbol]
return prices[["expiration", "price"]] # type: ignore
async def get_historical_futures_prices(
symbols: list, start_date: "date", end_date: "date"
):
"""Get historical futures prices for the list of symbols."""
# pylint: disable=import-outside-toplevel
from openbb_yfinance.models.equity_historical import ( # noqa
YFinanceEquityHistoricalFetcher,
)
fetcher = YFinanceEquityHistoricalFetcher()
return await fetcher.fetch_data(
params={
"symbol": ",".join(symbols),
"start_date": start_date,
"end_date": end_date,
},
credentials={},
)
async def get_futures_curve( # pylint: disable=too-many-return-statements
symbol: str, date: str | list | None = None
) -> "DataFrame":
"""Get the futures curve for a given symbol.
Parameters
----------
symbol: str
Symbol to get futures for
date: Optional[str]
Optional historical date to get curve for
Returns
-------
DataFrame
DataFrame with futures curve
"""
# pylint: disable=import-outside-toplevel
from datetime import date as dateType, datetime # noqa
from dateutil.relativedelta import relativedelta # noqa
from pandas import Categorical, DataFrame, DatetimeIndex, to_datetime # noqa
futures_symbols = get_futures_symbols(symbol)
today = datetime.today().date()
dates: list = []
if date:
if isinstance(date, dateType):
date = date.strftime("%Y-%m-%d")
if isinstance(date, list) and isinstance(date[0], dateType):
date = [d.strftime("%Y-%m-%d") for d in date]
dates = date.split(",") if isinstance(date, str) else date
dates = sorted([to_datetime(d).date() for d in dates])
if futures_symbols and (not date or len(dates) == 1 and dates[0] >= today):
futures_quotes = await get_futures_quotes(futures_symbols)
return futures_quotes
if dates and futures_symbols:
historical_futures_prices = await get_historical_futures_prices(
futures_symbols, dates[0], dates[-1]
)
df = DataFrame([d.model_dump() for d in historical_futures_prices]) # type: ignore
df = df.set_index("date").sort_index()
df.index = df.index.astype(str)
df.index = DatetimeIndex(df.index)
dates_list = DatetimeIndex(dates)
symbols = df.symbol.unique().tolist()
expiration_dict = {symbol: get_expiration_month(symbol) for symbol in symbols}
df = df.reset_index().pivot(columns="symbol", values="close", index="date").copy() # type: ignore
df = df.rename(columns=expiration_dict)
df.columns.name = "expiration"
# Find the nearest date in the DataFrame to each date in dates_list
nearest_dates = [df.index.asof(date) for date in dates_list]
# Filter for only the nearest dates
df = df[df.index.isin(nearest_dates)]
df = df.fillna("N/A").replace("N/A", None)
# Flatten the DataFrame
flattened_data = df.reset_index().melt(
id_vars="date", var_name="expiration", value_name="price"
)
flattened_data = flattened_data.sort_values("date")
flattened_data["expiration"] = Categorical(
flattened_data["expiration"],
categories=sorted(list(expiration_dict.values())),
ordered=True,
)
flattened_data = flattened_data.sort_values(
by=["date", "expiration"]
).reset_index(drop=True)
flattened_data["date"] = flattened_data["date"].dt.strftime("%Y-%m-%d")
return flattened_data
if not futures_symbols:
# pylint: disable=import-outside-toplevel
import os # noqa
from contextlib import contextmanager, redirect_stderr, redirect_stdout # noqa
futures_data = get_futures_data()
try:
exchange = futures_data[futures_data["Ticker"] == symbol]["Exchange"].values[0] # type: ignore
except IndexError as exc:
raise ValueError(f"Symbol {symbol} was not found.") from exc
futures_index: list = []
futures_curve: list = []
futures_date: list = []
historical_curve: list = []
if dates:
dates = [d.strftime("%Y-%m-%d") for d in dates]
dates_list = DatetimeIndex(dates)
i = 0
empty_count = 0
@contextmanager
def suppress_all_output():
with open(os.devnull, "w") as devnull, redirect_stdout(
devnull
), redirect_stderr(devnull):
yield
with suppress_all_output():
while empty_count < 12:
future = today + relativedelta(months=i)
future_symbol = (
f"{symbol}{MONTHS[future.month]}{str(future.year)[-2:]}.{exchange}"
)
data = yf_download(future_symbol)
if data.empty:
empty_count += 1
else:
empty_count = 0
if dates:
data = data.set_index("date").sort_index()
data.index = DatetimeIndex(data.index)
nearest_dates = [data.index.asof(date) for date in dates_list]
data = data[data.index.isin(nearest_dates)]
data.index = data.index.strftime("%Y-%m-%d") # type: ignore
for dt in dates:
try:
historical_curve.append(data.loc[dt, "close"])
futures_date.append(dt)
futures_index.append(future.strftime("%Y-%m"))
except KeyError:
historical_curve.append(None)
else:
futures_index.append(future.strftime("%Y-%m"))
futures_curve.append(
data.query("close.notnull()")["close"].values[-1]
)
i += 1
if not futures_index:
raise EmptyDataError()
if historical_curve:
df = DataFrame(
{
"date": futures_date,
"price": historical_curve,
"expiration": futures_index,
}
)
df["expiration"] = Categorical(
df["expiration"],
categories=sorted(list(set(futures_index))),
ordered=True,
)
df = df.sort_values(by=["date", "expiration"]).reset_index(drop=True)
if len(df.date.unique()) == 1:
df = df.drop(columns=["date"])
return df
return DataFrame({"price": futures_curve, "expiration": futures_index})
def yf_download( # pylint: disable=too-many-positional-arguments
symbol: str,
start_date: Union[str, "date"] | None = None,
end_date: Union[str, "date"] | None = None,
interval: INTERVALS = "1d",
period: PERIODS | None = None,
prepost: bool = False,
actions: bool = False,
progress: bool = False,
ignore_tz: bool = True,
keepna: bool = False,
repair: bool = False,
rounding: bool = False,
group_by: Literal["ticker", "column"] = "ticker",
adjusted: bool = False,
**kwargs: Any,
) -> "DataFrame":
"""Get yFinance OHLC data for any ticker and interval available."""
# pylint: disable=import-outside-toplevel
from datetime import datetime, timedelta # noqa
from pandas import DataFrame, concat, to_datetime
import yfinance as yf
symbol = symbol.upper()
_start_date = start_date
intraday = False
if interval in ["60m", "1h"]:
period = "2y" if period in ["5y", "10y", "max"] else period
_start_date = None
intraday = True
if interval in ["2m", "5m", "15m", "30m", "90m"]:
_start_date = (datetime.now().date() - timedelta(days=58)).strftime("%Y-%m-%d")
intraday = True
if interval == "1m":
period = "5d"
_start_date = None
intraday = True
if adjusted is False:
kwargs.update(dict(auto_adjust=False, back_adjust=False, period=period))
# Note: Proxy support via kwargs["proxy"] is preserved if provided.
# yfinance>=0.2.66 manages its own curl_cffi sessions internally.
# If a session was passed in kwargs, extract proxy info before removing it.
session = kwargs.pop("session", None)
if session and hasattr(session, "proxies") and session.proxies:
kwargs["proxy"] = session.proxies
try:
data = yf.download(
tickers=symbol,
start=_start_date,
end=None,
interval=interval,
prepost=prepost,
actions=actions,
progress=progress,
ignore_tz=ignore_tz,
keepna=keepna,
repair=repair,
rounding=rounding,
group_by=group_by,
threads=False,
**kwargs,
)
if hasattr(data.index, "tz") and data.index.tz is not None: # type: ignore
data = data.tz_convert(None) # type: ignore
except ValueError as exc:
raise EmptyDataError() from exc
tickers = symbol.split(",")
if len(tickers) == 1:
if hasattr(data.columns, "levels"):
try:
if symbol in data.columns.get_level_values(0):
data = data[symbol] # type: ignore
elif symbol in data.columns.get_level_values(1):
data = data.xs(symbol, level=1, axis=1) # type: ignore
except (KeyError, IndexError):
pass
elif len(tickers) > 1:
_data = DataFrame()
for ticker in tickers:
temp = data[ticker].copy().dropna(how="all") # type: ignore
if len(temp) > 0:
temp["symbol"] = ticker
temp = temp.reset_index().rename(
columns={"Date": "date", "Datetime": "date", "index": "date"}
)
_data = concat([_data, temp])
if not _data.empty:
index_keys = ["date", "symbol"] if "symbol" in _data.columns else "date"
_data = _data.set_index(index_keys).sort_index()
data = _data
if data.empty: # type: ignore
raise EmptyDataError()
if hasattr(data.columns, "levels") and len(data.columns.names) > 1:
data.columns = [col[0] if isinstance(col, tuple) else col for col in data.columns] # type: ignore
data = data.reset_index() # type: ignore
data = data.rename(columns={"Date": "date", "Datetime": "date", "index": "date"})
data["date"] = data["date"].apply(to_datetime)
data = data[data["Open"] > 0]
if start_date is not None:
data = data[data["date"] >= to_datetime(start_date)] # type: ignore
if (
end_date is not None and start_date is not None and to_datetime(end_date) > to_datetime(start_date) # type: ignore
):
data = data[
data["date"] <= (to_datetime(end_date) + timedelta(days=1 if intraday is True else 0)) # type: ignore
]
if intraday is True:
data["date"] = data["date"].dt.strftime("%Y-%m-%d %H:%M:%S") # type: ignore
else:
data["date"] = data["date"].dt.strftime("%Y-%m-%d") # type: ignore
if adjusted is False:
data = data.drop(columns=["Adj Close"]) # type: ignore
data.columns = data.columns.str.lower().str.replace(" ", "_").to_list() # type: ignore
# Remove columns with no information.
for col in ["dividends", "capital_gains", "stock_splits"]:
if col in data.columns and data[col].sum() == 0:
data = data.drop(columns=[col])
return data # type: ignore
def df_transform_numbers(data: "DataFrame", columns: list) -> "DataFrame":
"""Replace abbreviations of numbers with actual numbers."""
multipliers = {"M": 1e6, "B": 1e9, "T": 1e12}
def replace_suffix(x, suffix, multiplier):
return float(str(x).replace(suffix, "")) * multiplier if suffix in str(x) else x
for col in columns:
if col == "% Change":
data[col] = data[col].astype(str).str.replace("%", "").astype(float) / 100
else:
for suffix, multiplier in multipliers.items():
data[col] = data[col].apply(replace_suffix, args=(suffix, multiplier))
return data

File diff suppressed because it is too large Load Diff

View File

@@ -1,20 +0,0 @@
[tool.poetry]
name = "openbb-yfinance"
version = "1.6.3"
description = "yfinance extension for OpenBB"
authors = ["OpenBB Team <hello@openbb.co>"]
license = "AGPL-3.0-only"
readme = "README.md"
packages = [{ include = "openbb_yfinance" }]
[tool.poetry.dependencies]
python = ">=3.10,<4"
yfinance = "^1.4.0"
openbb-core = "^1.6.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.plugins."openbb_provider_extension"]
yfinance = "openbb_yfinance:yfinance_provider"

View File

@@ -1 +0,0 @@
"""YFinance tests."""

View File

@@ -1,953 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/AAPL?symbol=AAPL&type=annualTreasurySharesNumber%2CannualPreferredSharesNumber%2CannualOrdinarySharesNumber%2CannualShareIssued%2CannualNetDebt%2CannualTotalDebt%2CannualTangibleBookValue%2CannualInvestedCapital%2CannualWorkingCapital%2CannualNetTangibleAssets%2CannualCapitalLeaseObligations%2CannualCommonStockEquity%2CannualPreferredStockEquity%2CannualTotalCapitalization%2CannualTotalEquityGrossMinorityInterest%2CannualMinorityInterest%2CannualStockholdersEquity%2CannualOtherEquityInterest%2CannualGainsLossesNotAffectingRetainedEarnings%2CannualOtherEquityAdjustments%2CannualFixedAssetsRevaluationReserve%2CannualForeignCurrencyTranslationAdjustments%2CannualMinimumPensionLiabilities%2CannualUnrealizedGainLoss%2CannualTreasuryStock%2CannualRetainedEarnings%2CannualAdditionalPaidInCapital%2CannualCapitalStock%2CannualOtherCapitalStock%2CannualCommonStock%2CannualPreferredStock%2CannualTotalPartnershipCapital%2CannualGeneralPartnershipCapital%2CannualLimitedPartnershipCapital%2CannualTotalLiabilitiesNetMinorityInterest%2CannualTotalNonCurrentLiabilitiesNetMinorityInterest%2CannualOtherNonCurrentLiabilities%2CannualLiabilitiesHeldforSaleNonCurrent%2CannualRestrictedCommonStock%2CannualPreferredSecuritiesOutsideStockEquity%2CannualDerivativeProductLiabilities%2CannualEmployeeBenefits%2CannualNonCurrentPensionAndOtherPostretirementBenefitPlans%2CannualNonCurrentAccruedExpenses%2CannualDuetoRelatedPartiesNonCurrent%2CannualTradeandOtherPayablesNonCurrent%2CannualNonCurrentDeferredLiabilities%2CannualNonCurrentDeferredRevenue%2CannualNonCurrentDeferredTaxesLiabilities%2CannualLongTermDebtAndCapitalLeaseObligation%2CannualLongTermCapitalLeaseObligation%2CannualLongTermDebt%2CannualLongTermProvisions%2CannualCurrentLiabilities%2CannualOtherCurrentLiabilities%2CannualCurrentDeferredLiabilities%2CannualCurrentDeferredRevenue%2CannualCurrentDeferredTaxesLiabilities%2CannualCurrentDebtAndCapitalLeaseObligation%2CannualCurrentCapitalLeaseObligation%2CannualCurrentDebt%2CannualOtherCurrentBorrowings%2CannualLineOfCredit%2CannualCommercialPaper%2CannualCurrentNotesPayable%2CannualPensionandOtherPostRetirementBenefitPlansCurrent%2CannualCurrentProvisions%2CannualPayablesAndAccruedExpenses%2CannualCurrentAccruedExpenses%2CannualInterestPayable%2CannualPayables%2CannualOtherPayable%2CannualDuetoRelatedPartiesCurrent%2CannualDividendsPayable%2CannualTotalTaxPayable%2CannualIncomeTaxPayable%2CannualAccountsPayable%2CannualTotalAssets%2CannualTotalNonCurrentAssets%2CannualOtherNonCurrentAssets%2CannualDefinedPensionBenefit%2CannualNonCurrentPrepaidAssets%2CannualNonCurrentDeferredAssets%2CannualNonCurrentDeferredTaxesAssets%2CannualDuefromRelatedPartiesNonCurrent%2CannualNonCurrentNoteReceivables%2CannualNonCurrentAccountsReceivable%2CannualFinancialAssets%2CannualInvestmentsAndAdvances%2CannualOtherInvestments%2CannualInvestmentinFinancialAssets%2CannualHeldToMaturitySecurities%2CannualAvailableForSaleSecurities%2CannualFinancialAssetsDesignatedasFairValueThroughProfitorLossTotal%2CannualTradingSecurities%2CannualLongTermEquityInvestment%2CannualInvestmentsinJointVenturesatCost%2CannualInvestmentsInOtherVenturesUnderEquityMethod%2CannualInvestmentsinAssociatesatCost%2CannualInvestmentsinSubsidiariesatCost%2CannualInvestmentProperties%2CannualGoodwillAndOtherIntangibleAssets%2CannualOtherIntangibleAssets%2CannualGoodwill%2CannualNetPPE%2CannualAccumulatedDepreciation%2CannualGrossPPE%2CannualLeases%2CannualConstructionInProgress%2CannualOtherProperties%2CannualMachineryFurnitureEquipment%2CannualBuildingsAndImprovements%2CannualLandAndImprovements%2CannualProperties%2CannualCurrentAssets%2CannualOtherCurrentAssets%2CannualHedgingAssetsCurrent%2CannualAssetsHeldForSaleCurrent%2CannualCurrentDeferredAssets%2CannualCurrentDeferredTaxesAssets%2CannualRestrictedCash%2CannualPrepaidAssets%2CannualInventory%2CannualInventoriesAdjustmentsAllowances%2CannualOtherInventories%2CannualFinishedGoods%2CannualWorkInProcess%2CannualRawMaterials%2CannualReceivables%2CannualReceivablesAdjustmentsAllowances%2CannualOtherReceivables%2CannualDuefromRelatedPartiesCurrent%2CannualTaxesReceivable%2CannualAccruedInterestReceivable%2CannualNotesReceivable%2CannualLoansReceivable%2CannualAccountsReceivable%2CannualAllowanceForDoubtfulAccountsReceivable%2CannualGrossAccountsReceivable%2CannualCashCashEquivalentsAndShortTermInvestments%2CannualOtherShortTermInvestments%2CannualCashAndCashEquivalents%2CannualCashEquivalents%2CannualCashFinancial%2CannualCashCashEquivalentsAndFederalFundsSold&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
encoding: utf-8
string: !!binary |
eyJ0aW1lc2VyaWVzIjp7InJlc3VsdCI6W3sibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbENhc2hBbmRDYXNoRXF1aXZhbGVudHMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYw
MDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDYXNoQW5kQ2FzaEVx
dWl2YWxlbnRzIjpbeyJkYXRhSWQiOjIzMDMwLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjIuMzY0NkUxMCwiZm10IjoiMjMuNjVCIn19LHsiZGF0YUlkIjoyMzAzMCwiYXNPZkRhdGUiOiIy
MDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoyLjk5NjVFMTAsImZtdCI6IjI5Ljk2QiJ9fSx7ImRhdGFJZCI6MjMw
MzAsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi45OTQzRTEwLCJmbXQiOiIyOS45NEIi
fX0seyJkYXRhSWQiOjIzMDMwLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuNTkzNEUx
MCwiZm10IjoiMzUuOTNCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsTm9uQ3VycmVudERlZmVycmVkTGlhYmlsaXRpZXMiXX19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFN0b2NraG9sZGVyc0VxdWl0eSJdfSwidGltZXN0YW1w
IjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFN0
b2NraG9sZGVyc0VxdWl0eSI6W3siZGF0YUlkIjoyMzIxNSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3Ijo1LjA2NzJFMTAsImZtdCI6IjUwLjY3QiJ9fSx7ImRhdGFJZCI6MjMyMTUsImFzT2ZE
YXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni4yMTQ2RTEwLCJmbXQiOiI2Mi4xNUIifX0seyJkYXRh
SWQiOjIzMjE1LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjUuNjk1RTEwLCJmbXQiOiI1
Ni45NUIifX0seyJkYXRhSWQiOjIzMjE1LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjcu
MzczM0UxMCwiZm10IjoiNzMuNzNCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5
cGUiOlsiYW5udWFsQWxsb3dhbmNlRm9yRG91YnRmdWxBY2NvdW50c1JlY2VpdmFibGUiXX19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE1hY2hpbmVyeUZ1cm5pdHVy
ZUVxdWlwbWVudCJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0
MDAsMTc1OTE5MDQwMF0sImFubnVhbE1hY2hpbmVyeUZ1cm5pdHVyZUVxdWlwbWVudCI6W3siZGF0
YUlkIjoyMzMxOSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo4LjEwNkUxMCwiZm10Ijoi
ODEuMDZCIn19LHsiZGF0YUlkIjoyMzMxOSwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3
LjgzMTRFMTAsImZtdCI6Ijc4LjMxQiJ9fSx7ImRhdGFJZCI6MjMzMTksImFzT2ZEYXRlIjoiMjAy
NC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6OC4wMjA1RTEwLCJmbXQiOiI4MC4yMEIifX0seyJkYXRhSWQiOjIzMzE5
LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjguMzQyRTEwLCJmbXQiOiI4My40MkIifX1d
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQcm9wZXJ0aWVzIl19
LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAw
XSwiYW5udWFsUHJvcGVydGllcyI6W3siZGF0YUlkIjoyMzM1MSwiYXNPZkRhdGUiOiIyMDIyLTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjowLjAsImZtdCI6IjAuMDAifX0seyJkYXRhSWQiOjIzMzUxLCJhc09mRGF0ZSI6
IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjAuMCwiZm10IjoiMC4wMCJ9fSx7ImRhdGFJZCI6MjMzNTEsImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MC4wLCJmbXQiOiIwLjAwIn19LHsiZGF0YUlkIjoy
MzM1MSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjowLjAsImZtdCI6IjAuMDAifX1dfSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxHb29kd2lsbEFuZE90aGVy
SW50YW5naWJsZUFzc2V0cyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsSW52ZXN0bWVudHNBbmRBZHZhbmNlcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwx
Njk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEludmVzdG1lbnRzQW5kQWR2
YW5jZXMiOlt7ImRhdGFJZCI6MjMxMTEsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4y
MDgwNUUxMSwiZm10IjoiMTIwLjgxQiJ9fSx7ImRhdGFJZCI6MjMxMTEsImFzT2ZEYXRlIjoiMjAy
My0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6MS4wMDU0NEUxMSwiZm10IjoiMTAwLjU0QiJ9fSx7ImRhdGFJZCI6MjMx
MTEsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS4xNDc5RTEwLCJmbXQiOiI5MS40OEIi
fX0seyJkYXRhSWQiOjIzMTExLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjcuNzcyM0Ux
MCwiZm10IjoiNzcuNzJCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsQ29tbW9uU3RvY2tFcXVpdHkiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAz
MjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDb21tb25TdG9ja0VxdWl0eSI6W3si
ZGF0YUlkIjoyMzI4MCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo1LjA2NzJFMTAsImZt
dCI6IjUwLjY3QiJ9fSx7ImRhdGFJZCI6MjMyODAsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6Ni4yMTQ2RTEwLCJmbXQiOiI2Mi4xNUIifX0seyJkYXRhSWQiOjIzMjgwLCJhc09mRGF0ZSI6
IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjUuNjk1RTEwLCJmbXQiOiI1Ni45NUIifX0seyJkYXRhSWQiOjIz
MjgwLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjcuMzczM0UxMCwiZm10IjoiNzMuNzNC
In19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTm9uQ3VycmVu
dERlZmVycmVkVGF4ZXNMaWFiaWxpdGllcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsSW5jb21lVGF4UGF5YWJsZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAw
MCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEluY29tZVRheFBheWFi
bGUiOlt7ImRhdGFJZCI6MjMxMDMsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUi
OiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni41NTJF
OSwiZm10IjoiNi41NUIifX0seyJkYXRhSWQiOjIzMTAzLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAi
LCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6
eyJyYXciOjguODE5RTksImZtdCI6IjguODJCIn19LHsiZGF0YUlkIjoyMzEwMywiYXNPZkRhdGUi
OiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoyLjY2MDFFMTAsImZtdCI6IjI2LjYwQiJ9fSx7ImRhdGFJZCI6
MjMxMDMsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4zMDE2RTEwLCJmbXQiOiIxMy4w
MkIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxBdmFpbGFi
bGVGb3JTYWxlU2VjdXJpdGllcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAw
LDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEF2YWlsYWJsZUZvclNhbGVTZWN1cml0aWVz
IjpbeyJkYXRhSWQiOjIzMDIwLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMjA4MDVF
MTEsImZtdCI6IjEyMC44MUIifX0seyJkYXRhSWQiOjIzMDIwLCJhc09mRGF0ZSI6IjIwMjMtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjEuMDA1NDRFMTEsImZtdCI6IjEwMC41NEIifX0seyJkYXRhSWQiOjIzMDIwLCJh
c09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuMTQ3OUUxMCwiZm10IjoiOTEuNDhCIn19LHsi
ZGF0YUlkIjoyMzAyMCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3Ljc3MjNFMTAsImZt
dCI6Ijc3LjcyQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bExhbmRBbmRJbXByb3ZlbWVudHMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAw
MCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxMYW5kQW5kSW1wcm92ZW1lbnRzIjpbeyJk
YXRhSWQiOjIzMzEyLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuMjEyNkUxMCwiZm10
IjoiMjIuMTNCIn19LHsiZGF0YUlkIjoyMzMxMiwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjoyLjM0NDZFMTAsImZtdCI6IjIzLjQ1QiJ9fSx7ImRhdGFJZCI6MjMzMTIsImFzT2ZEYXRlIjoi
MjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6Mi40NjlFMTAsImZtdCI6IjI0LjY5QiJ9fSx7ImRhdGFJZCI6MjMz
MTIsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi43MzM3RTEwLCJmbXQiOiIyNy4zNEIi
fX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUb3RhbFRheFBh
eWFibGUiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3
NTkxOTA0MDBdLCJhbm51YWxUb3RhbFRheFBheWFibGUiOlt7ImRhdGFJZCI6MjMyMTcsImFzT2ZE
YXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni41NTJFOSwiZm10IjoiNi41NUIifX0seyJkYXRhSWQi
OjIzMjE3LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVu
Y3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjguODE5RTksImZtdCI6IjguODJC
In19LHsiZGF0YUlkIjoyMzIxNywiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjY2MDFF
MTAsImZtdCI6IjI2LjYwQiJ9fSx7ImRhdGFJZCI6MjMyMTcsImFzT2ZEYXRlIjoiMjAyNS0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6MS4zMDE2RTEwLCJmbXQiOiIxMy4wMkIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxDdXJyZW50QWNjcnVlZEV4cGVuc2VzIl19LCJ0aW1lc3Rh
bXAiOlsxNzU5MTkwNDAwXSwiYW5udWFsQ3VycmVudEFjY3J1ZWRFeHBlbnNlcyI6W3siZGF0YUlk
IjoyMzAwNCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo4LjkxOUU5LCJmbXQiOiI4Ljky
QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEludmVzdG1l
bnRpbkZpbmFuY2lhbEFzc2V0cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAw
LDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEludmVzdG1lbnRpbkZpbmFuY2lhbEFzc2V0
cyI6W3siZGF0YUlkIjoyMzQxNCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjIwODA1
RTExLCJmbXQiOiIxMjAuODFCIn19LHsiZGF0YUlkIjoyMzQxNCwiYXNPZkRhdGUiOiIyMDIzLTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoxLjAwNTQ0RTExLCJmbXQiOiIxMDAuNTRCIn19LHsiZGF0YUlkIjoyMzQxNCwi
YXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjE0NzlFMTAsImZtdCI6IjkxLjQ4QiJ9fSx7
ImRhdGFJZCI6MjM0MTQsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny43NzIzRTEwLCJm
bXQiOiI3Ny43MkIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxDdXJyZW50RGVmZXJyZWRSZXZlbnVlIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYw
MzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsQ3VycmVudERlZmVycmVkUmV2ZW51
ZSI6W3siZGF0YUlkIjoyMzA2MSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3LjkxMkU5
LCJmbXQiOiI3LjkxQiJ9fSx7ImRhdGFJZCI6MjMwNjEsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6OC4wNjFFOSwiZm10IjoiOC4wNkIifX0seyJkYXRhSWQiOjIzMDYxLCJhc09mRGF0ZSI6
IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjguMjQ5RTksImZtdCI6IjguMjVCIn19LHsiZGF0YUlkIjoyMzA2
MSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjA1NUU5LCJmbXQiOiI5LjA1QiJ9fV19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyRXF1aXR5QWRq
dXN0bWVudHMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAw
LDE3NTkxOTA0MDBdLCJhbm51YWxPdGhlckVxdWl0eUFkanVzdG1lbnRzIjpbeyJkYXRhSWQiOjIz
MzM1LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjExMDlFMTAsImZtdCI6Ii0xMS4x
MUIifX0seyJkYXRhSWQiOjIzMzM1LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjE0
NTJFMTAsImZtdCI6Ii0xMS40NUIifX0seyJkYXRhSWQiOjIzMzM1LCJhc09mRGF0ZSI6IjIwMjQt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOi03LjE3MkU5LCJmbXQiOiItNy4xN0IifX0seyJkYXRhSWQiOjIzMzM1LCJh
c09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi01LjU3MUU5LCJmbXQiOiItNS41N0IifX1dfSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUb3RhbENhcGl0YWxpemF0
aW9uIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5
MTkwNDAwXSwiYW5udWFsVG90YWxDYXBpdGFsaXphdGlvbiI6W3siZGF0YUlkIjoyMzM3NCwiYXNP
ZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjQ5NjMxRTExLCJmbXQiOiIxNDkuNjNCIn19LHsi
ZGF0YUlkIjoyMzM3NCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjU3NDI3RTExLCJm
bXQiOiIxNTcuNDNCIn19LHsiZGF0YUlkIjoyMzM3NCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwi
cGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsi
cmF3IjoxLjQyN0UxMSwiZm10IjoiMTQyLjcwQiJ9fSx7ImRhdGFJZCI6MjMzNzQsImFzT2ZEYXRl
IjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6MS41MjA2MUUxMSwiZm10IjoiMTUyLjA2QiJ9fV19LHsibWV0
YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENhcGl0YWxTdG9jayJdfSwidGlt
ZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFu
bnVhbENhcGl0YWxTdG9jayI6W3siZGF0YUlkIjoyMzAyNywiYXNPZkRhdGUiOiIyMDIyLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3Ijo2LjQ4NDlFMTAsImZtdCI6IjY0Ljg1QiJ9fSx7ImRhdGFJZCI6MjMwMjcsImFzT2ZE
YXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny4zODEyRTEwLCJmbXQiOiI3My44MUIifX0seyJkYXRh
SWQiOjIzMDI3LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjguMzI3NkUxMCwiZm10Ijoi
ODMuMjhCIn19LHsiZGF0YUlkIjoyMzAyNywiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5
LjM1NjhFMTAsImZtdCI6IjkzLjU3QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0
eXBlIjpbImFubnVhbE90aGVySW52ZXN0bWVudHMiXX0sInRpbWVzdGFtcCI6WzE2MzI5NjAwMDAs
MTY2NDQ5NjAwMF0sImFubnVhbE90aGVySW52ZXN0bWVudHMiOlt7ImRhdGFJZCI6MjM1NDAsImFz
T2ZEYXRlIjoiMjAyMS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yNzg3N0UxMSwiZm10IjoiMTI3Ljg4QiJ9fSx7
ImRhdGFJZCI6MjM1NDAsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yMDgwNUUxMSwi
Zm10IjoiMTIwLjgxQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbEFjY291bnRzUmVjZWl2YWJsZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMy
MDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEFjY291bnRzUmVjZWl2YWJsZSI6W3si
ZGF0YUlkIjoyMzAwMSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjgxODRFMTAsImZt
dCI6IjI4LjE4QiJ9fSx7ImRhdGFJZCI6MjMwMDEsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6Mi45NTA4RTEwLCJmbXQiOiIyOS41MUIifX0seyJkYXRhSWQiOjIzMDAxLCJhc09mRGF0ZSI6
IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjMuMzQxRTEwLCJmbXQiOiIzMy40MUIifX0seyJkYXRhSWQiOjIz
MDAxLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuOTc3N0UxMCwiZm10IjoiMzkuNzhC
In19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsU2hhcmVJc3N1
ZWQiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkx
OTA0MDBdLCJhbm51YWxTaGFyZUlzc3VlZCI6W3siZGF0YUlkIjoyMzUzMiwiYXNPZkRhdGUiOiIy
MDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoxLjU5NDM0MjVFMTAsImZtdCI6IjE1Ljk0QiJ9fSx7ImRhdGFJZCI6
MjM1MzIsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS41NTUwMDYxRTEwLCJmbXQiOiIx
NS41NUIifX0seyJkYXRhSWQiOjIzNTMyLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEu
NTExNjc4NkUxMCwiZm10IjoiMTUuMTJCIn19LHsiZGF0YUlkIjoyMzUzMiwiYXNPZkRhdGUiOiIy
MDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoxLjQ3NzMyNkUxMCwiZm10IjoiMTQuNzdCIn19XX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUGF5YWJsZXNBbmRBY2NydWVkRXhwZW5z
ZXMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkx
OTA0MDBdLCJhbm51YWxQYXlhYmxlc0FuZEFjY3J1ZWRFeHBlbnNlcyI6W3siZGF0YUlkIjoyMzE2
NiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3LjA2NjdFMTAsImZtdCI6IjcwLjY3QiJ9
fSx7ImRhdGFJZCI6MjMxNjYsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny4xNDNFMTAs
ImZtdCI6IjcxLjQzQiJ9fSx7ImRhdGFJZCI6MjMxNjYsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6MS4wMzI0RTExLCJmbXQiOiIxMDMuMjRCIn19LHsiZGF0YUlkIjoyMzE2NiwiYXNPZkRh
dGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjE3OTVFMTAsImZtdCI6IjkxLjgwQiJ9fV19LHsibWV0
YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRvdGFsTm9uQ3VycmVudExpYWJp
bGl0aWVzTmV0TWlub3JpdHlJbnRlcmVzdCJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2
MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFRvdGFsTm9uQ3VycmVudExpYWJp
bGl0aWVzTmV0TWlub3JpdHlJbnRlcmVzdCI6W3siZGF0YUlkIjoyMzI2MCwiYXNPZkRhdGUiOiIy
MDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoxLjQ4MTAxRTExLCJmbXQiOiIxNDguMTBCIn19LHsiZGF0YUlkIjoy
MzI2MCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjQ1MTI5RTExLCJmbXQiOiIxNDUu
MTNCIn19LHsiZGF0YUlkIjoyMzI2MCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjMx
NjM4RTExLCJmbXQiOiIxMzEuNjRCIn19LHsiZGF0YUlkIjoyMzI2MCwiYXNPZkRhdGUiOiIyMDI1
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoxLjE5ODc3RTExLCJmbXQiOiIxMTkuODhCIn19XX0seyJtZXRhIjp7InN5
bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsT3RoZXJDdXJyZW50Qm9ycm93aW5ncyJdfSwi
dGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0s
ImFubnVhbE90aGVyQ3VycmVudEJvcnJvd2luZ3MiOlt7ImRhdGFJZCI6MjMzMzIsImFzT2ZEYXRl
IjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xMTI4RTEwLCJmbXQiOiIxMS4xM0IifX0seyJkYXRhSWQi
OjIzMzMyLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVu
Y3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuODIyRTksImZtdCI6IjkuODJC
In19LHsiZGF0YUlkIjoyMzMzMiwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjA5MTJF
MTAsImZtdCI6IjEwLjkxQiJ9fSx7ImRhdGFJZCI6MjMzMzIsImFzT2ZEYXRlIjoiMjAyNS0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6MS4yMzVFMTAsImZtdCI6IjEyLjM1QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbENhc2hGaW5hbmNpYWwiXX0sInRpbWVzdGFtcCI6WzE2NjQ0
OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDYXNoRmluYW5j
aWFsIjpbeyJkYXRhSWQiOjIzMDI4LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuODU0
NkUxMCwiZm10IjoiMTguNTVCIn19LHsiZGF0YUlkIjoyMzAyOCwiYXNPZkRhdGUiOiIyMDIzLTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoyLjgzNTlFMTAsImZtdCI6IjI4LjM2QiJ9fSx7ImRhdGFJZCI6MjMwMjgsImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi43MTk5RTEwLCJmbXQiOiIyNy4yMEIifX0seyJk
YXRhSWQiOjIzMDI4LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuODI2N0UxMCwiZm10
IjoiMjguMjdCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
TG9uZ1Rlcm1EZWJ0QW5kQ2FwaXRhbExlYXNlT2JsaWdhdGlvbiJdfSwidGltZXN0YW1wIjpbMTY2
NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbExvbmdUZXJt
RGVidEFuZENhcGl0YWxMZWFzZU9ibGlnYXRpb24iOlt7ImRhdGFJZCI6MjMxMjQsImFzT2ZEYXRl
IjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4wOTcwN0UxMSwiZm10IjoiMTA5LjcxQiJ9fSx7ImRhdGFJ
ZCI6MjMxMjQsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS41MjgxRTEwLCJmbXQiOiI5
NS4yOEIifX0seyJkYXRhSWQiOjIzMTI0LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjgu
NTc1RTEwLCJmbXQiOiI4NS43NUIifX0seyJkYXRhSWQiOjIzMTI0LCJhc09mRGF0ZSI6IjIwMjUt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjcuODMyOEUxMCwiZm10IjoiNzguMzNCIn19XX0seyJtZXRhIjp7InN5bWJv
bCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsT3RoZXJTaG9ydFRlcm1JbnZlc3RtZW50cyJdfSwi
dGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0s
ImFubnVhbE90aGVyU2hvcnRUZXJtSW52ZXN0bWVudHMiOlt7ImRhdGFJZCI6MjMxNjMsImFzT2ZE
YXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi40NjU4RTEwLCJmbXQiOiIyNC42NkIifX0seyJkYXRh
SWQiOjIzMTYzLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuMTU5RTEwLCJmbXQiOiIz
MS41OUIifX0seyJkYXRhSWQiOjIzMTYzLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMu
NTIyOEUxMCwiZm10IjoiMzUuMjNCIn19LHsiZGF0YUlkIjoyMzE2MywiYXNPZkRhdGUiOiIyMDI1
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoxLjg3NjNFMTAsImZtdCI6IjE4Ljc2QiJ9fV19LHsibWV0YSI6eyJzeW1i
b2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENhc2hDYXNoRXF1aXZhbGVudHNBbmRTaG9ydFRl
cm1JbnZlc3RtZW50cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2
NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbENhc2hDYXNoRXF1aXZhbGVudHNBbmRTaG9ydFRlcm1J
bnZlc3RtZW50cyI6W3siZGF0YUlkIjoyMzAzMywiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
Ijo0LjgzMDRFMTAsImZtdCI6IjQ4LjMwQiJ9fSx7ImRhdGFJZCI6MjMwMzMsImFzT2ZEYXRlIjoi
MjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6Ni4xNTU1RTEwLCJmbXQiOiI2MS41NUIifX0seyJkYXRhSWQiOjIz
MDMzLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuNTE3MUUxMCwiZm10IjoiNjUuMTdC
In19LHsiZGF0YUlkIjoyMzAzMywiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo1LjQ2OTdF
MTAsImZtdCI6IjU0LjcwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpb
ImFubnVhbFJlY2VpdmFibGVzIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAs
MTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsUmVjZWl2YWJsZXMiOlt7ImRhdGFJZCI6MjMx
ODksImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni4wOTMyRTEwLCJmbXQiOiI2MC45M0Ii
fX0seyJkYXRhSWQiOjIzMTg5LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuMDk4NUUx
MCwiZm10IjoiNjAuOThCIn19LHsiZGF0YUlkIjoyMzE4OSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3Ijo2LjYyNDNFMTAsImZtdCI6IjY2LjI0QiJ9fSx7ImRhdGFJZCI6MjMxODksImFzT2ZE
YXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny4yOTU3RTEwLCJmbXQiOiI3Mi45NkIifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDYXBpdGFsTGVhc2VPYmxpZ2F0
aW9ucyJdfSwidGltZXN0YW1wIjpbMTYzMjk2MDAwMCwxNjY0NDk2MDAwLDE2OTYwMzIwMDBdLCJh
bm51YWxDYXBpdGFsTGVhc2VPYmxpZ2F0aW9ucyI6W3siZGF0YUlkIjoyMzM4MCwiYXNPZkRhdGUi
OiIyMDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjE4MDNFMTAsImZtdCI6IjExLjgwQiJ9fSx7ImRhdGFJZCI6
MjMzODAsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yNDExRTEwLCJmbXQiOiIxMi40
MUIifX0seyJkYXRhSWQiOjIzMzgwLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMjg0
MkUxMCwiZm10IjoiMTIuODRCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsT3RoZXJJbnRhbmdpYmxlQXNzZXRzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFB
UEwiXSwidHlwZSI6WyJhbm51YWxJbnZlbnRvcnkiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAs
MTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxJbnZlbnRvcnkiOlt7ImRh
dGFJZCI6MjMxMDgsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NC45NDZFOSwiZm10Ijoi
NC45NUIifX0seyJkYXRhSWQiOjIzMTA4LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYu
MzMxRTksImZtdCI6IjYuMzNCIn19LHsiZGF0YUlkIjoyMzEwOCwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3Ijo3LjI4NkU5LCJmbXQiOiI3LjI5QiJ9fSx7ImRhdGFJZCI6MjMxMDgsImFzT2ZE
YXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NS43MThFOSwiZm10IjoiNS43MkIifX1dfSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxBY2N1bXVsYXRlZERlcHJlY2lhdGlv
biJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5
MDQwMF0sImFubnVhbEFjY3VtdWxhdGVkRGVwcmVjaWF0aW9uIjpbeyJkYXRhSWQiOjIzMDA4LCJh
c09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi03LjIzNEUxMCwiZm10IjoiLTcyLjM0QiJ9fSx7
ImRhdGFJZCI6MjMwMDgsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTcuMDg4NEUxMCwi
Zm10IjoiLTcwLjg4QiJ9fSx7ImRhdGFJZCI6MjMwMDgsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6LTcuMzQ0OEUxMCwiZm10IjoiLTczLjQ1QiJ9fSx7ImRhdGFJZCI6MjMwMDgsImFzT2ZE
YXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTcuNjAxNEUxMCwiZm10IjoiLTc2LjAxQiJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEN1cnJlbnRMaWFiaWxpdGll
cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5
MDQwMF0sImFubnVhbEN1cnJlbnRMaWFiaWxpdGllcyI6W3siZGF0YUlkIjoyMzA0NywiYXNPZkRh
dGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjUzOTgyRTExLCJmbXQiOiIxNTMuOThCIn19LHsiZGF0
YUlkIjoyMzA0NywiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjQ1MzA4RTExLCJmbXQi
OiIxNDUuMzFCIn19LHsiZGF0YUlkIjoyMzA0NywiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjoxLjc2MzkyRTExLCJmbXQiOiIxNzYuMzlCIn19LHsiZGF0YUlkIjoyMzA0NywiYXNPZkRhdGUi
OiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjY1NjMxRTExLCJmbXQiOiIxNjUuNjNCIn19XX0seyJtZXRh
Ijp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVG90YWxEZWJ0Il19LCJ0aW1lc3Rh
bXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFs
VG90YWxEZWJ0IjpbeyJkYXRhSWQiOjIzMzg2LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjEuMzI0OEUxMSwiZm10IjoiMTMyLjQ4QiJ9fSx7ImRhdGFJZCI6MjMzODYsImFzT2ZEYXRlIjoi
MjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6MS4xMTA4OEUxMSwiZm10IjoiMTExLjA5QiJ9fSx7ImRhdGFJZCI6
MjMzODYsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4wNjYyOUUxMSwiZm10IjoiMTA2
LjYzQiJ9fSx7ImRhdGFJZCI6MjMzODYsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS44
NjU3RTEwLCJmbXQiOiI5OC42NkIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlw
ZSI6WyJhbm51YWxOZXRQUEUiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwx
NzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxOZXRQUEUiOlt7ImRhdGFJZCI6MjMxMzksImFz
T2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NC4yMTE3RTEwLCJmbXQiOiI0Mi4xMkIifX0seyJk
YXRhSWQiOjIzMTM5LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjQuMzcxNUUxMCwiZm10
IjoiNDMuNzJCIn19LHsiZGF0YUlkIjoyMzEzOSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
Ijo0LjU2OEUxMCwiZm10IjoiNDUuNjhCIn19LHsiZGF0YUlkIjoyMzEzOSwiYXNPZkRhdGUiOiIy
MDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3Ijo0Ljk4MzRFMTAsImZtdCI6IjQ5LjgzQiJ9fV19LHsibWV0YSI6eyJz
eW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRhbmdpYmxlQm9va1ZhbHVlIl19LCJ0aW1l
c3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5u
dWFsVGFuZ2libGVCb29rVmFsdWUiOlt7ImRhdGFJZCI6MjMzODMsImFzT2ZEYXRlIjoiMjAyMi0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6NS4wNjcyRTEwLCJmbXQiOiI1MC42N0IifX0seyJkYXRhSWQiOjIzMzgzLCJh
c09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuMjE0NkUxMCwiZm10IjoiNjIuMTVCIn19LHsi
ZGF0YUlkIjoyMzM4MywiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo1LjY5NUUxMCwiZm10
IjoiNTYuOTVCIn19LHsiZGF0YUlkIjoyMzM4MywiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
Ijo3LjM3MzNFMTAsImZtdCI6IjczLjczQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbExlYXNlcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMy
MDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbExlYXNlcyI6W3siZGF0YUlkIjoyMzMx
MywiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjEyNzFFMTAsImZtdCI6IjExLjI3QiJ9
fSx7ImRhdGFJZCI6MjMzMTMsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yODM5RTEw
LCJmbXQiOiIxMi44NEIifX0seyJkYXRhSWQiOjIzMzEzLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAi
LCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6
eyJyYXciOjEuNDIzM0UxMCwiZm10IjoiMTQuMjNCIn19LHsiZGF0YUlkIjoyMzMxMywiYXNPZkRh
dGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjUwOTFFMTAsImZtdCI6IjE1LjA5QiJ9fV19LHsibWV0
YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyTm9uQ3VycmVudEFzc2V0
cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5
MDQwMF0sImFubnVhbE90aGVyTm9uQ3VycmVudEFzc2V0cyI6W3siZGF0YUlkIjoyMzMzOSwiYXNP
ZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjozLjkwNTNFMTAsImZtdCI6IjM5LjA1QiJ9fSx7ImRh
dGFJZCI6MjMzMzksImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NC42OTA2RTEwLCJmbXQi
OiI0Ni45MUIifX0seyJkYXRhSWQiOjIzMzM5LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjUuNTMzNUUxMCwiZm10IjoiNTUuMzRCIn19LHsiZGF0YUlkIjoyMzMzOSwiYXNPZkRhdGUiOiIy
MDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3Ijo2LjI5NUUxMCwiZm10IjoiNjIuOTVCIn19XX0seyJtZXRhIjp7InN5
bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ3VycmVudEFzc2V0cyJdfSwidGltZXN0YW1w
IjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEN1
cnJlbnRBc3NldHMiOlt7ImRhdGFJZCI6MjMwNDQsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6MS4zNTQwNUUxMSwiZm10IjoiMTM1LjQxQiJ9fSx7ImRhdGFJZCI6MjMwNDQsImFzT2ZEYXRl
IjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6MS40MzU2NkUxMSwiZm10IjoiMTQzLjU3QiJ9fSx7ImRhdGFJ
ZCI6MjMwNDQsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS41Mjk4N0UxMSwiZm10Ijoi
MTUyLjk5QiJ9fSx7ImRhdGFJZCI6MjMwNDQsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
MS40Nzk1N0UxMSwiZm10IjoiMTQ3Ljk2QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbFRyZWFzdXJ5U2hhcmVzTnVtYmVyIl19LCJ0aW1lc3RhbXAiOlsxNjk2
MDMyMDAwXSwiYW5udWFsVHJlYXN1cnlTaGFyZXNOdW1iZXIiOlt7ImRhdGFJZCI6MjMzOTUsImFz
T2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MC4wLCJmbXQiOiIwLjAwIn19XX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTG9uZ1Rlcm1DYXBpdGFsTGVhc2VPYmxp
Z2F0aW9uIl19LCJ0aW1lc3RhbXAiOlsxNjMyOTYwMDAwLDE2NjQ0OTYwMDAsMTY5NjAzMjAwMF0s
ImFubnVhbExvbmdUZXJtQ2FwaXRhbExlYXNlT2JsaWdhdGlvbiI6W3siZGF0YUlkIjoyMzEyNywi
YXNPZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjAyNzVFMTAsImZtdCI6IjEwLjI4QiJ9fSx7
ImRhdGFJZCI6MjMxMjcsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4wNzQ4RTEwLCJm
bXQiOiIxMC43NUIifX0seyJkYXRhSWQiOjIzMTI3LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjEuMTI2N0UxMCwiZm10IjoiMTEuMjdCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsT3RoZXJOb25DdXJyZW50TGlhYmlsaXRpZXMiXX0sInRpbWVzdGFt
cCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxP
dGhlck5vbkN1cnJlbnRMaWFiaWxpdGllcyI6W3siZGF0YUlkIjoyMzM3OSwiYXNPZkRhdGUiOiIy
MDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoyLjE3MzdFMTAsImZtdCI6IjIxLjc0QiJ9fSx7ImRhdGFJZCI6MjMz
NzksImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My40MzkxRTEwLCJmbXQiOiIzNC4zOUIi
fX0seyJkYXRhSWQiOjIzMzc5LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjQuNTg4OEUx
MCwiZm10IjoiNDUuODlCIn19LHsiZGF0YUlkIjoyMzM3OSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3Ijo0LjE1NDlFMTAsImZtdCI6IjQxLjU1QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyQ3VycmVudExpYWJpbGl0aWVzIl19LCJ0aW1lc3Rh
bXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFs
T3RoZXJDdXJyZW50TGlhYmlsaXRpZXMiOlt7ImRhdGFJZCI6MjMxNTEsImFzT2ZEYXRlIjoiMjAy
Mi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6NS4yNjNFMTAsImZtdCI6IjUyLjYzQiJ9fSx7ImRhdGFJZCI6MjMxNTEs
ImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NS4wMDFFMTAsImZtdCI6IjUwLjAxQiJ9fSx7
ImRhdGFJZCI6MjMxNTEsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NC40MDI0RTEwLCJm
bXQiOiI0NC4wMkIifX0seyJkYXRhSWQiOjIzMTUxLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjQuNDQ1MkUxMCwiZm10IjoiNDQuNDVCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsQ3VycmVudERlZmVycmVkTGlhYmlsaXRpZXMiXX0sInRpbWVzdGFt
cCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxD
dXJyZW50RGVmZXJyZWRMaWFiaWxpdGllcyI6W3siZGF0YUlkIjoyMzA1OCwiYXNPZkRhdGUiOiIy
MDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3Ijo3LjkxMkU5LCJmbXQiOiI3LjkxQiJ9fSx7ImRhdGFJZCI6MjMwNTgs
ImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OC4wNjFFOSwiZm10IjoiOC4wNkIifX0seyJk
YXRhSWQiOjIzMDU4LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjguMjQ5RTksImZtdCI6
IjguMjVCIn19LHsiZGF0YUlkIjoyMzA1OCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5
LjA1NUU5LCJmbXQiOiI5LjA1QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbFdvcmtpbmdDYXBpdGFsIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYw
MzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsV29ya2luZ0NhcGl0YWwiOlt7ImRh
dGFJZCI6MjMzODUsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuODU3N0UxMCwiZm10
IjoiLTE4LjU4QiJ9fSx7ImRhdGFJZCI6MjMzODUsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6LTEuNzQyRTksImZtdCI6Ii0xLjc0QiJ9fSx7ImRhdGFJZCI6MjMzODUsImFzT2ZEYXRlIjoi
MjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6LTIuMzQwNUUxMCwiZm10IjoiLTIzLjQxQiJ9fSx7ImRhdGFJZCI6
MjMzODUsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuNzY3NEUxMCwiZm10IjoiLTE3
LjY3QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRvdGFs
TGlhYmlsaXRpZXNOZXRNaW5vcml0eUludGVyZXN0Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAw
LDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsVG90YWxMaWFiaWxpdGll
c05ldE1pbm9yaXR5SW50ZXJlc3QiOlt7ImRhdGFJZCI6MjMyNTksImFzT2ZEYXRlIjoiMjAyMi0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6My4wMjA4M0UxMSwiZm10IjoiMzAyLjA4QiJ9fSx7ImRhdGFJZCI6MjMyNTks
ImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi45MDQzN0UxMSwiZm10IjoiMjkwLjQ0QiJ9
fSx7ImRhdGFJZCI6MjMyNTksImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My4wODAzRTEx
LCJmbXQiOiIzMDguMDNCIn19LHsiZGF0YUlkIjoyMzI1OSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoyLjg1NTA4RTExLCJmbXQiOiIyODUuNTFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6
WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVHJhZGVhbmRPdGhlclBheWFibGVzTm9uQ3VycmVudCJd
fSwidGltZXN0YW1wIjpbMTYzMjk2MDAwMCwxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQw
MF0sImFubnVhbFRyYWRlYW5kT3RoZXJQYXlhYmxlc05vbkN1cnJlbnQiOlt7ImRhdGFJZCI6MjM0
NzIsImFzT2ZEYXRlIjoiMjAyMS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi40Njg5RTEwLCJmbXQiOiIyNC42OUIi
fX0seyJkYXRhSWQiOjIzNDcyLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNjY1N0Ux
MCwiZm10IjoiMTYuNjZCIn19LHsiZGF0YUlkIjoyMzQ3MiwiYXNPZkRhdGUiOiIyMDIzLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoxLjU0NTdFMTAsImZtdCI6IjE1LjQ2QiJ9fSx7ImRhdGFJZCI6MjM0NzIsImFzT2ZE
YXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS4yNTRFOSwiZm10IjoiOS4yNUIifX1dfSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxHb29kd2lsbCJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ3VycmVudERlYnRBbmRDYXBpdGFsTGVh
c2VPYmxpZ2F0aW9uIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1
NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsQ3VycmVudERlYnRBbmRDYXBpdGFsTGVhc2VPYmxpZ2F0
aW9uIjpbeyJkYXRhSWQiOjIzMDQ2LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuMjc3
M0UxMCwiZm10IjoiMjIuNzdCIn19LHsiZGF0YUlkIjoyMzA0NiwiYXNPZkRhdGUiOiIyMDIzLTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoxLjU4MDdFMTAsImZtdCI6IjE1LjgxQiJ9fSx7ImRhdGFJZCI6MjMwNDYsImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi4wODc5RTEwLCJmbXQiOiIyMC44OEIifX0seyJk
YXRhSWQiOjIzMDQ2LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuMDMyOUUxMCwiZm10
IjoiMjAuMzNCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
UmV0YWluZWRFYXJuaW5ncyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3
Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFJldGFpbmVkRWFybmluZ3MiOlt7ImRhdGFJZCI6
MjMyMDQsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTMuMDY4RTksImZtdCI6Ii0zLjA3
QiJ9fSx7ImRhdGFJZCI6MjMyMDQsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUi
OiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTIuMTRF
OCwiZm10IjoiLTIxNC4wME0ifX0seyJkYXRhSWQiOjIzMjA0LCJhc09mRGF0ZSI6IjIwMjQtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOi0xLjkxNTRFMTAsImZtdCI6Ii0xOS4xNUIifX0seyJkYXRhSWQiOjIzMjA0LCJh
c09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjQyNjRFMTAsImZtdCI6Ii0xNC4yNkIifX1d
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDb21tb25TdG9jayJd
fSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQw
MF0sImFubnVhbENvbW1vblN0b2NrIjpbeyJkYXRhSWQiOjIzMDM4LCJhc09mRGF0ZSI6IjIwMjIt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjYuNDg0OUUxMCwiZm10IjoiNjQuODVCIn19LHsiZGF0YUlkIjoyMzAzOCwi
YXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3LjM4MTJFMTAsImZtdCI6IjczLjgxQiJ9fSx7
ImRhdGFJZCI6MjMwMzgsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OC4zMjc2RTEwLCJm
bXQiOiI4My4yOEIifX0seyJkYXRhSWQiOjIzMDM4LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjkuMzU2OEUxMCwiZm10IjoiOTMuNTdCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsTm9uQ3VycmVudERlZmVycmVkVGF4ZXNBc3NldHMiXX0sInRpbWVz
dGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51
YWxOb25DdXJyZW50RGVmZXJyZWRUYXhlc0Fzc2V0cyI6W3siZGF0YUlkIjoyMzA2NiwiYXNPZkRh
dGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjUzNzVFMTAsImZtdCI6IjE1LjM4QiJ9fSx7ImRhdGFJ
ZCI6MjMwNjYsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS43ODUyRTEwLCJmbXQiOiIx
Ny44NUIifX0seyJkYXRhSWQiOjIzMDY2LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEu
OTQ5OUUxMCwiZm10IjoiMTkuNTBCIn19LHsiZGF0YUlkIjoyMzA2NiwiYXNPZkRhdGUiOiIyMDI1
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoyLjA3NzdFMTAsImZtdCI6IjIwLjc4QiJ9fV19LHsibWV0YSI6eyJzeW1i
b2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5vbkN1cnJlbnREZWZlcnJlZEFzc2V0cyJdfSwi
dGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0s
ImFubnVhbE5vbkN1cnJlbnREZWZlcnJlZEFzc2V0cyI6W3siZGF0YUlkIjoyMzI1MywiYXNPZkRh
dGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjUzNzVFMTAsImZtdCI6IjE1LjM4QiJ9fSx7ImRhdGFJ
ZCI6MjMyNTMsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS43ODUyRTEwLCJmbXQiOiIx
Ny44NUIifX0seyJkYXRhSWQiOjIzMjUzLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEu
OTQ5OUUxMCwiZm10IjoiMTkuNTBCIn19LHsiZGF0YUlkIjoyMzI1MywiYXNPZkRhdGUiOiIyMDI1
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoyLjA3NzdFMTAsImZtdCI6IjIwLjc4QiJ9fV19LHsibWV0YSI6eyJzeW1i
b2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyUHJvcGVydGllcyJdfSwidGltZXN0YW1w
IjpbMTYzMjk2MDAwMCwxNjY0NDk2MDAwLDE2OTYwMzIwMDBdLCJhbm51YWxPdGhlclByb3BlcnRp
ZXMiOlt7ImRhdGFJZCI6MjMzNDAsImFzT2ZEYXRlIjoiMjAyMS0wOS0zMCIsInBlcmlvZFR5cGUi
OiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4wMDg3
RTEwLCJmbXQiOiIxMC4wOUIifX0seyJkYXRhSWQiOjIzMzQwLCJhc09mRGF0ZSI6IjIwMjItMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjEuMDQxN0UxMCwiZm10IjoiMTAuNDJCIn19LHsiZGF0YUlkIjoyMzM0MCwiYXNP
ZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjA2NjFFMTAsImZtdCI6IjEwLjY2QiJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEN1cnJlbnRDYXBpdGFsTGVh
c2VPYmxpZ2F0aW9uIl19LCJ0aW1lc3RhbXAiOlsxNjMyOTYwMDAwLDE2NjQ0OTYwMDAsMTY5NjAz
MjAwMF0sImFubnVhbEN1cnJlbnRDYXBpdGFsTGVhc2VPYmxpZ2F0aW9uIjpbeyJkYXRhSWQiOjIz
MDQ4LCJhc09mRGF0ZSI6IjIwMjEtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNTI4RTksImZtdCI6IjEuNTNCIn19
LHsiZGF0YUlkIjoyMzA0OCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjY2M0U5LCJm
bXQiOiIxLjY2QiJ9fSx7ImRhdGFJZCI6MjMwNDgsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6MS41NzVFOSwiZm10IjoiMS41N0IifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwi
dHlwZSI6WyJhbm51YWxHYWluc0xvc3Nlc05vdEFmZmVjdGluZ1JldGFpbmVkRWFybmluZ3MiXX0s
InRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBd
LCJhbm51YWxHYWluc0xvc3Nlc05vdEFmZmVjdGluZ1JldGFpbmVkRWFybmluZ3MiOlt7ImRhdGFJ
ZCI6MjMwMDksImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuMTEwOUUxMCwiZm10Ijoi
LTExLjExQiJ9fSx7ImRhdGFJZCI6MjMwMDksImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
LTEuMTQ1MkUxMCwiZm10IjoiLTExLjQ1QiJ9fSx7ImRhdGFJZCI6MjMwMDksImFzT2ZEYXRlIjoi
MjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6LTcuMTcyRTksImZtdCI6Ii03LjE3QiJ9fSx7ImRhdGFJZCI6MjMw
MDksImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTUuNTcxRTksImZtdCI6Ii01LjU3QiJ9
fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRvdGFsRXF1aXR5
R3Jvc3NNaW5vcml0eUludGVyZXN0Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIw
MDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsVG90YWxFcXVpdHlHcm9zc01pbm9yaXR5
SW50ZXJlc3QiOlt7ImRhdGFJZCI6MjMyNjEsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
NS4wNjcyRTEwLCJmbXQiOiI1MC42N0IifX0seyJkYXRhSWQiOjIzMjYxLCJhc09mRGF0ZSI6IjIw
MjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0
ZWRWYWx1ZSI6eyJyYXciOjYuMjE0NkUxMCwiZm10IjoiNjIuMTVCIn19LHsiZGF0YUlkIjoyMzI2
MSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo1LjY5NUUxMCwiZm10IjoiNTYuOTVCIn19
LHsiZGF0YUlkIjoyMzI2MSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3LjM3MzNFMTAs
ImZtdCI6IjczLjczQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbE90aGVyQ3VycmVudEFzc2V0cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMy
MDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbE90aGVyQ3VycmVudEFzc2V0cyI6W3si
ZGF0YUlkIjoyMzMzMSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjEyMjNFMTAsImZt
dCI6IjIxLjIyQiJ9fSx7ImRhdGFJZCI6MjMzMzEsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6MS40Njk1RTEwLCJmbXQiOiIxNC43MEIifX0seyJkYXRhSWQiOjIzMzMxLCJhc09mRGF0ZSI6
IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjEuNDI4N0UxMCwiZm10IjoiMTQuMjlCIn19LHsiZGF0YUlkIjoy
MzMzMSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjQ1ODVFMTAsImZtdCI6IjE0LjU5
QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFBheWFibGVz
Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkw
NDAwXSwiYW5udWFsUGF5YWJsZXMiOlt7ImRhdGFJZCI6MjMxNjUsImFzT2ZEYXRlIjoiMjAyMi0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6Ny4wNjY3RTEwLCJmbXQiOiI3MC42N0IifX0seyJkYXRhSWQiOjIzMTY1LCJh
c09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjcuMTQzRTEwLCJmbXQiOiI3MS40M0IifX0seyJk
YXRhSWQiOjIzMTY1LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuNTU2MUUxMCwiZm10
IjoiOTUuNTZCIn19LHsiZGF0YUlkIjoyMzE2NSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
Ijo4LjI4NzZFMTAsImZtdCI6IjgyLjg4QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbEFjY291bnRzUGF5YWJsZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAw
MCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEFjY291bnRzUGF5YWJs
ZSI6W3siZGF0YUlkIjoyMzAwMCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo2LjQxMTVF
MTAsImZtdCI6IjY0LjExQiJ9fSx7ImRhdGFJZCI6MjMwMDAsImFzT2ZEYXRlIjoiMjAyMy0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6Ni4yNjExRTEwLCJmbXQiOiI2Mi42MUIifX0seyJkYXRhSWQiOjIzMDAwLCJhc09m
RGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuODk2RTEwLCJmbXQiOiI2OC45NkIifX0seyJkYXRh
SWQiOjIzMDAwLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuOTg2RTEwLCJmbXQiOiI2
OS44NkIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDb21t
ZXJjaWFsUGFwZXIiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0
NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDb21tZXJjaWFsUGFwZXIiOlt7ImRhdGFJZCI6MjMyNzks
ImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS45ODJFOSwiZm10IjoiOS45OEIifX0seyJk
YXRhSWQiOjIzMjc5LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjUuOTg1RTksImZtdCI6
IjUuOTlCIn19LHsiZGF0YUlkIjoyMzI3OSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5
Ljk2N0U5LCJmbXQiOiI5Ljk3QiJ9fSx7ImRhdGFJZCI6MjMyNzksImFzT2ZEYXRlIjoiMjAyNS0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6Ny45NzlFOSwiZm10IjoiNy45OEIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxMb25nVGVybURlYnQiXX0sInRpbWVzdGFtcCI6WzE2NjQ0
OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxMb25nVGVybURl
YnQiOlt7ImRhdGFJZCI6MjMxMjMsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUi
OiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS44OTU5
RTEwLCJmbXQiOiI5OC45NkIifX0seyJkYXRhSWQiOjIzMTIzLCJhc09mRGF0ZSI6IjIwMjMtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjkuNTI4MUUxMCwiZm10IjoiOTUuMjhCIn19LHsiZGF0YUlkIjoyMzEyMywiYXNP
ZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo4LjU3NUUxMCwiZm10IjoiODUuNzVCIn19LHsiZGF0
YUlkIjoyMzEyMywiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo3LjgzMjhFMTAsImZtdCI6
Ijc4LjMzQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbElu
dmVzdGVkQ2FwaXRhbCJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2
NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEludmVzdGVkQ2FwaXRhbCI6W3siZGF0YUlkIjoyMzI0
NSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjcwNzQxRTExLCJmbXQiOiIxNzAuNzRC
In19LHsiZGF0YUlkIjoyMzI0NSwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjczMjM0
RTExLCJmbXQiOiIxNzMuMjNCIn19LHsiZGF0YUlkIjoyMzI0NSwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoxLjYzNTc5RTExLCJmbXQiOiIxNjMuNThCIn19LHsiZGF0YUlkIjoyMzI0NSwi
YXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjcyMzlFMTEsImZtdCI6IjE3Mi4zOUIifX1d
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDdXJyZW50RGVidCJd
fSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQw
MF0sImFubnVhbEN1cnJlbnREZWJ0IjpbeyJkYXRhSWQiOjIzMDQ1LCJhc09mRGF0ZSI6IjIwMjIt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjIuMTExRTEwLCJmbXQiOiIyMS4xMUIifX0seyJkYXRhSWQiOjIzMDQ1LCJh
c09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNTgwN0UxMCwiZm10IjoiMTUuODFCIn19LHsi
ZGF0YUlkIjoyMzA0NSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjA4NzlFMTAsImZt
dCI6IjIwLjg4QiJ9fSx7ImRhdGFJZCI6MjMwNDUsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6Mi4wMzI5RTEwLCJmbXQiOiIyMC4zM0IifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxOZXRUYW5naWJsZUFzc2V0cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5
NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbE5ldFRhbmdpYmxl
QXNzZXRzIjpbeyJkYXRhSWQiOjIzNDAzLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjUu
MDY3MkUxMCwiZm10IjoiNTAuNjdCIn19LHsiZGF0YUlkIjoyMzQwMywiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3Ijo2LjIxNDZFMTAsImZtdCI6IjYyLjE1QiJ9fSx7ImRhdGFJZCI6MjM0MDMs
ImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NS42OTVFMTAsImZtdCI6IjU2Ljk1QiJ9fSx7
ImRhdGFJZCI6MjM0MDMsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny4zNzMzRTEwLCJm
bXQiOiI3My43M0IifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxUb3RhbEFzc2V0cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2
NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFRvdGFsQXNzZXRzIjpbeyJkYXRhSWQiOjIzMjIwLCJh
c09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuNTI3NTVFMTEsImZtdCI6IjM1Mi43NUIifX0s
eyJkYXRhSWQiOjIzMjIwLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuNTI1ODNFMTEs
ImZtdCI6IjM1Mi41OEIifX0seyJkYXRhSWQiOjIzMjIwLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAi
LCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6
eyJyYXciOjMuNjQ5OEUxMSwiZm10IjoiMzY0Ljk4QiJ9fSx7ImRhdGFJZCI6MjMyMjAsImFzT2ZE
YXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My41OTI0MUUxMSwiZm10IjoiMzU5LjI0QiJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE9yZGluYXJ5U2hhcmVzTnVt
YmVyIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5
MTkwNDAwXSwiYW5udWFsT3JkaW5hcnlTaGFyZXNOdW1iZXIiOlt7ImRhdGFJZCI6MjMzOTMsImFz
T2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS41OTQzNDI1RTEwLCJmbXQiOiIxNS45NEIifX0s
eyJkYXRhSWQiOjIzMzkzLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNTU1MDA2MUUx
MCwiZm10IjoiMTUuNTVCIn19LHsiZGF0YUlkIjoyMzM5MywiYXNPZkRhdGUiOiIyMDI0LTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoxLjUxMTY3ODZFMTAsImZtdCI6IjE1LjEyQiJ9fSx7ImRhdGFJZCI6MjMzOTMsImFz
T2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS40NzczMjZFMTAsImZtdCI6IjE0Ljc3QiJ9fV19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyUmVjZWl2YWJs
ZXMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkx
OTA0MDBdLCJhbm51YWxPdGhlclJlY2VpdmFibGVzIjpbeyJkYXRhSWQiOjIzMzQyLCJhc09mRGF0
ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwi
cmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuMjc0OEUxMCwiZm10IjoiMzIuNzVCIn19LHsiZGF0YUlk
IjoyMzM0MiwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjozLjE0NzdFMTAsImZtdCI6IjMx
LjQ4QiJ9fSx7ImRhdGFJZCI6MjMzNDIsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My4y
ODMzRTEwLCJmbXQiOiIzMi44M0IifX0seyJkYXRhSWQiOjIzMzQyLCJhc09mRGF0ZSI6IjIwMjUt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjMuMzE4RTEwLCJmbXQiOiIzMy4xOEIifX1dfSx7Im1ldGEiOnsic3ltYm9s
IjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDYXNoRXF1aXZhbGVudHMiXX0sInRpbWVzdGFtcCI6
WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDYXNo
RXF1aXZhbGVudHMiOlt7ImRhdGFJZCI6MjMwMjksImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6NS4xRTksImZtdCI6IjUuMTBCIn19LHsiZGF0YUlkIjoyMzAyOSwiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoxLjYwNkU5LCJmbXQiOiIxLjYxQiJ9fSx7ImRhdGFJZCI6MjMwMjksImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi43NDRFOSwiZm10IjoiMi43NEIifX0seyJkYXRh
SWQiOjIzMDI5LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjcuNjY3RTksImZtdCI6Ijcu
NjdCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsR3Jvc3NB
Y2NvdW50c1JlY2VpdmFibGUiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpb
ImFubnVhbE5vbkN1cnJlbnREZWZlcnJlZFJldmVudWUiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbEdyb3NzUFBFIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAw
LDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsR3Jvc3NQUEUiOlt7ImRh
dGFJZCI6MjMxMDAsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xNDQ1N0UxMSwiZm10
IjoiMTE0LjQ2QiJ9fSx7ImRhdGFJZCI6MjMxMDAsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6MS4xNDU5OUUxMSwiZm10IjoiMTE0LjYwQiJ9fSx7ImRhdGFJZCI6MjMxMDAsImFzT2ZEYXRl
IjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xOTEyOEUxMSwiZm10IjoiMTE5LjEzQiJ9fSx7ImRhdGFJ
ZCI6MjMxMDAsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yNTg0OEUxMSwiZm10Ijoi
MTI1Ljg1QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRv
dGFsTm9uQ3VycmVudEFzc2V0cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAw
LDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFRvdGFsTm9uQ3VycmVudEFzc2V0cyI6W3si
ZGF0YUlkIjoyMzIyNiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjE3MzVFMTEsImZt
dCI6IjIxNy4zNUIifSwiZ2VvZ3JhcGhpY1NlZ21lbnREYXRhIjpbeyJkYXRhVmFsdWUiOjcuMjZF
OSwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJHcmVhdGVyIENoaW5h
IiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjEuMjA4MDVFMTEsInNlZ21lbnRU
eXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiTWFya2V0YWJsZSBzZWN1cml0aWVzIiwi
aXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjMuNzM4RTksInNlZ21lbnRUeXBlIjoi
R2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiT3RoZXIgY291bnRyaWVzIiwiaXNQcmltYXJ5U2Vn
bWVudCI6MH0seyJkYXRhVmFsdWUiOjUuNDQyOEUxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGlj
Iiwic2VnbWVudE5hbWUiOiJPdGhlciBub24tY3VycmVudCBhc3NldHMiLCJpc1ByaW1hcnlTZWdt
ZW50IjowfSx7ImRhdGFWYWx1ZSI6My4xMTE5RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMi
LCJzZWdtZW50TmFtZSI6IlVuaXRlZCBTdGF0ZXMiLCJpc1ByaW1hcnlTZWdtZW50IjoxfV19LHsi
ZGF0YUlkIjoyMzIyNiwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjA5MDE3RTExLCJm
bXQiOiIyMDkuMDJCIn0sImdlb2dyYXBoaWNTZWdtZW50RGF0YSI6W3siZGF0YVZhbHVlIjo1Ljc3
OEU5LCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkdyZWF0ZXIgQ2hp
bmEiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6MS4wMDU0NEUxMSwic2VnbWVu
dFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJNYXJrZXRhYmxlIHNlY3VyaXRpZXMi
LCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6NC42NjFFOSwic2VnbWVudFR5cGUi
OiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJPdGhlciBjb3VudHJpZXMiLCJpc1ByaW1hcnlT
ZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6Ni40NzU4RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBo
aWMiLCJzZWdtZW50TmFtZSI6Ik90aGVyIG5vbi1jdXJyZW50IGFzc2V0cyIsImlzUHJpbWFyeVNl
Z21lbnQiOjB9LHsiZGF0YVZhbHVlIjozLjMyNzZFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhp
YyIsInNlZ21lbnROYW1lIjoiVW5pdGVkIFN0YXRlcyIsImlzUHJpbWFyeVNlZ21lbnQiOjF9XX0s
eyJkYXRhSWQiOjIzMjI2LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuMTE5OTNFMTEs
ImZtdCI6IjIxMS45OUIifSwiZ2VvZ3JhcGhpY1NlZ21lbnREYXRhIjpbeyJkYXRhVmFsdWUiOjQu
Nzk3RTksInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiR3JlYXRlciBD
aGluYSIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjo5LjE0NzlFMTAsInNlZ21l
bnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiTWFya2V0YWJsZSBzZWN1cml0aWVz
IiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjUuMjE5RTksInNlZ21lbnRUeXBl
IjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiT3RoZXIgY291bnRyaWVzIiwiaXNQcmltYXJ5
U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjcuNDgzNEUxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFw
aGljIiwic2VnbWVudE5hbWUiOiJPdGhlciBub24tY3VycmVudCBhc3NldHMiLCJpc1ByaW1hcnlT
ZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6My41NjY0RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBo
aWMiLCJzZWdtZW50TmFtZSI6IlVuaXRlZCBTdGF0ZXMiLCJpc1ByaW1hcnlTZWdtZW50IjoxfV19
LHsiZGF0YUlkIjoyMzIyNiwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjExMjg0RTEx
LCJmbXQiOiIyMTEuMjhCIn0sImdlb2dyYXBoaWNTZWdtZW50RGF0YSI6W3siZGF0YVZhbHVlIjoz
LjYxN0U5LCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkNoaW5hIiwi
aXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjcuNzcyM0UxMCwic2VnbWVudFR5cGUi
OiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJNYXJrZXRhYmxlIHNlY3VyaXRpZXMiLCJpc1By
aW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6NS45NDNFOSwic2VnbWVudFR5cGUiOiJHZW9n
cmFwaGljIiwic2VnbWVudE5hbWUiOiJPdGhlciBjb3VudHJpZXMiLCJpc1ByaW1hcnlTZWdtZW50
IjowfSx7ImRhdGFWYWx1ZSI6OC4zNzI3RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJz
ZWdtZW50TmFtZSI6Ik90aGVyIG5vbi1jdXJyZW50IGFzc2V0cyIsImlzUHJpbWFyeVNlZ21lbnQi
OjB9LHsiZGF0YVZhbHVlIjo0LjAyNzRFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNl
Z21lbnROYW1lIjoiVW5pdGVkIFN0YXRlcyIsImlzUHJpbWFyeVNlZ21lbnQiOjF9XX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXREZWJ0Il19LCJ0aW1lc3Rh
bXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFs
TmV0RGVidCI6W3siZGF0YUlkIjoyMzUzMSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5
LjY0MjNFMTAsImZtdCI6Ijk2LjQyQiJ9fSx7ImRhdGFJZCI6MjM1MzEsImFzT2ZEYXRlIjoiMjAy
My0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6OC4xMTIzRTEwLCJmbXQiOiI4MS4xMkIifX0seyJkYXRhSWQiOjIzNTMx
LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjcuNjY4NkUxMCwiZm10IjoiNzYuNjlCIn19
LHsiZGF0YUlkIjoyMzUzMSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo2LjI3MjNFMTAs
ImZtdCI6IjYyLjcyQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbENhc2hDYXNoRXF1aXZhbGVudHNBbmRGZWRlcmFsRnVuZHNTb2xkIl19fSx7Im1ldGEiOnsi
c3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOb25DdXJyZW50QWNjcnVlZEV4cGVuc2Vz
Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxGaXhlZEFzc2V0
c1JldmFsdWF0aW9uUmVzZXJ2ZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsRmluYW5jaWFsQXNzZXRzRGVzaWduYXRlZGFzRmFpclZhbHVlVGhyb3VnaFByb2Zp
dG9yTG9zc1RvdGFsIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxQcmVmZXJyZWRTdG9jayJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsSW52ZXN0bWVudHNpblN1YnNpZGlhcmllc2F0Q29zdCJdfX0seyJtZXRhIjp7InN5bWJv
bCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUmVzdHJpY3RlZENvbW1vblN0b2NrIl19fSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQZW5zaW9uYW5kT3RoZXJQb3N0
UmV0aXJlbWVudEJlbmVmaXRQbGFuc0N1cnJlbnQiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQ
TCJdLCJ0eXBlIjpbImFubnVhbEN1cnJlbnREZWZlcnJlZEFzc2V0cyJdfX0seyJtZXRhIjp7InN5
bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsT3RoZXJJbnZlbnRvcmllcyJdfX0seyJtZXRh
Ijp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ29uc3RydWN0aW9uSW5Qcm9ncmVz
cyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUHJlZmVycmVk
U2VjdXJpdGllc091dHNpZGVTdG9ja0VxdWl0eSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsRHVldG9SZWxhdGVkUGFydGllc0N1cnJlbnQiXX19LHsibWV0YSI6
eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRheGVzUmVjZWl2YWJsZSJdfX0seyJt
ZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsT3RoZXJFcXVpdHlJbnRlcmVz
dCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ3VycmVudFBy
b3Zpc2lvbnMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbER1
ZXRvUmVsYXRlZFBhcnRpZXNOb25DdXJyZW50Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxMaW5lT2ZDcmVkaXQiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQ
TCJdLCJ0eXBlIjpbImFubnVhbExvbmdUZXJtUHJvdmlzaW9ucyJdfX0seyJtZXRhIjp7InN5bWJv
bCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRGl2aWRlbmRzUGF5YWJsZSJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsR2VuZXJhbFBhcnRuZXJzaGlwQ2FwaXRh
bCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTm90ZXNSZWNl
aXZhYmxlIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnRl
cmVzdFBheWFibGUiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bEludmVzdG1lbnRzaW5Kb2ludFZlbnR1cmVzYXRDb3N0Il19fSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnZlc3RtZW50c0luT3RoZXJWZW50dXJlc1VuZGVyRXF1
aXR5TWV0aG9kIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxS
ZWNlaXZhYmxlc0FkanVzdG1lbnRzQWxsb3dhbmNlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsTm9uQ3VycmVudFByZXBhaWRBc3NldHMiXX19LHsibWV0YSI6
eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRyZWFzdXJ5U3RvY2siXX19LHsibWV0
YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyQ2FwaXRhbFN0b2NrIl19
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZXN0cmljdGVkQ2Fz
aCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsSGVsZFRvTWF0
dXJpdHlTZWN1cml0aWVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJh
bm51YWxQcmVmZXJyZWRTdG9ja0VxdWl0eSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsTWlub3JpdHlJbnRlcmVzdCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsRHVlZnJvbVJlbGF0ZWRQYXJ0aWVzTm9uQ3VycmVudCJdfX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVHJhZGluZ1NlY3VyaXRp
ZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEludmVzdG1l
bnRQcm9wZXJ0aWVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxEZWZpbmVkUGVuc2lvbkJlbmVmaXQiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0
eXBlIjpbImFubnVhbEZpbmFuY2lhbEFzc2V0cyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsQ3VycmVudERlZmVycmVkVGF4ZXNMaWFiaWxpdGllcyJdfX0seyJt
ZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQWNjcnVlZEludGVyZXN0UmVj
ZWl2YWJsZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUmF3
TWF0ZXJpYWxzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQ
cmVmZXJyZWRTaGFyZXNOdW1iZXIiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbEFkZGl0aW9uYWxQYWlkSW5DYXBpdGFsIl19fSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxQcmVwYWlkQXNzZXRzIl19fSx7Im1ldGEiOnsic3ltYm9s
IjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxEdWVmcm9tUmVsYXRlZFBhcnRpZXNDdXJyZW50Il19
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUb3RhbFBhcnRuZXJz
aGlwQ2FwaXRhbCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
T3RoZXJQYXlhYmxlIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxDdXJyZW50Tm90ZXNQYXlhYmxlIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlw
ZSI6WyJhbm51YWxMb25nVGVybUVxdWl0eUludmVzdG1lbnQiXX19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5vbkN1cnJlbnRBY2NvdW50c1JlY2VpdmFibGUiXX19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEZpbmlzaGVkR29vZHMi
XX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5vbkN1cnJlbnRQ
ZW5zaW9uQW5kT3RoZXJQb3N0cmV0aXJlbWVudEJlbmVmaXRQbGFucyJdfX0seyJtZXRhIjp7InN5
bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRm9yZWlnbkN1cnJlbmN5VHJhbnNsYXRpb25B
ZGp1c3RtZW50cyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
TGltaXRlZFBhcnRuZXJzaGlwQ2FwaXRhbCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsRGVyaXZhdGl2ZVByb2R1Y3RMaWFiaWxpdGllcyJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVW5yZWFsaXplZEdhaW5Mb3NzIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxNaW5pbXVtUGVuc2lvbkxp
YWJpbGl0aWVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxM
aWFiaWxpdGllc0hlbGRmb3JTYWxlTm9uQ3VycmVudCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsQXNzZXRzSGVsZEZvclNhbGVDdXJyZW50Il19fSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnZlc3RtZW50c2luQXNzb2NpYXRl
c2F0Q29zdCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsSW52
ZW50b3JpZXNBZGp1c3RtZW50c0FsbG93YW5jZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQ
TCJdLCJ0eXBlIjpbImFubnVhbEVtcGxveWVlQmVuZWZpdHMiXX19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEN1cnJlbnREZWZlcnJlZFRheGVzQXNzZXRzIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxXb3JrSW5Qcm9jZXNzIl19
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxMb2Fuc1JlY2VpdmFi
bGUiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEJ1aWxkaW5n
c0FuZEltcHJvdmVtZW50cyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsTm9uQ3VycmVudE5vdGVSZWNlaXZhYmxlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsSGVkZ2luZ0Fzc2V0c0N1cnJlbnQiXX19XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=60, stale-while-revalidate=30
content-encoding: gzip
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:14 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '120'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,710 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/AAPL?symbol=AAPL&type=annualForeignSales%2CannualDomesticSales%2CannualAdjustedGeographySegmentData%2CannualFreeCashFlow%2CannualRepurchaseOfCapitalStock%2CannualRepaymentOfDebt%2CannualIssuanceOfDebt%2CannualIssuanceOfCapitalStock%2CannualCapitalExpenditure%2CannualInterestPaidSupplementalData%2CannualIncomeTaxPaidSupplementalData%2CannualEndCashPosition%2CannualOtherCashAdjustmentOutsideChangeinCash%2CannualBeginningCashPosition%2CannualEffectOfExchangeRateChanges%2CannualChangesInCash%2CannualOtherCashAdjustmentInsideChangeinCash%2CannualCashFlowFromDiscontinuedOperation%2CannualFinancingCashFlow%2CannualCashFromDiscontinuedFinancingActivities%2CannualCashFlowFromContinuingFinancingActivities%2CannualNetOtherFinancingCharges%2CannualInterestPaidCFF%2CannualProceedsFromStockOptionExercised%2CannualCashDividendsPaid%2CannualPreferredStockDividendPaid%2CannualCommonStockDividendPaid%2CannualNetPreferredStockIssuance%2CannualPreferredStockPayments%2CannualPreferredStockIssuance%2CannualNetCommonStockIssuance%2CannualCommonStockPayments%2CannualCommonStockIssuance%2CannualNetIssuancePaymentsOfDebt%2CannualNetShortTermDebtIssuance%2CannualShortTermDebtPayments%2CannualShortTermDebtIssuance%2CannualNetLongTermDebtIssuance%2CannualLongTermDebtPayments%2CannualLongTermDebtIssuance%2CannualInvestingCashFlow%2CannualCashFromDiscontinuedInvestingActivities%2CannualCashFlowFromContinuingInvestingActivities%2CannualNetOtherInvestingChanges%2CannualInterestReceivedCFI%2CannualDividendsReceivedCFI%2CannualNetInvestmentPurchaseAndSale%2CannualSaleOfInvestment%2CannualPurchaseOfInvestment%2CannualNetInvestmentPropertiesPurchaseAndSale%2CannualSaleOfInvestmentProperties%2CannualPurchaseOfInvestmentProperties%2CannualNetBusinessPurchaseAndSale%2CannualSaleOfBusiness%2CannualPurchaseOfBusiness%2CannualNetIntangiblesPurchaseAndSale%2CannualSaleOfIntangibles%2CannualPurchaseOfIntangibles%2CannualNetPPEPurchaseAndSale%2CannualSaleOfPPE%2CannualPurchaseOfPPE%2CannualCapitalExpenditureReported%2CannualOperatingCashFlow%2CannualCashFromDiscontinuedOperatingActivities%2CannualCashFlowFromContinuingOperatingActivities%2CannualTaxesRefundPaid%2CannualInterestReceivedCFO%2CannualInterestPaidCFO%2CannualDividendReceivedCFO%2CannualDividendPaidCFO%2CannualChangeInWorkingCapital%2CannualChangeInOtherWorkingCapital%2CannualChangeInOtherCurrentLiabilities%2CannualChangeInOtherCurrentAssets%2CannualChangeInPayablesAndAccruedExpense%2CannualChangeInAccruedExpense%2CannualChangeInInterestPayable%2CannualChangeInPayable%2CannualChangeInDividendPayable%2CannualChangeInAccountPayable%2CannualChangeInTaxPayable%2CannualChangeInIncomeTaxPayable%2CannualChangeInPrepaidAssets%2CannualChangeInInventory%2CannualChangeInReceivables%2CannualChangesInAccountReceivables%2CannualOtherNonCashItems%2CannualExcessTaxBenefitFromStockBasedCompensation%2CannualStockBasedCompensation%2CannualUnrealizedGainLossOnInvestmentSecurities%2CannualProvisionandWriteOffofAssets%2CannualAssetImpairmentCharge%2CannualAmortizationOfSecurities%2CannualDeferredTax%2CannualDeferredIncomeTax%2CannualDepreciationAmortizationDepletion%2CannualDepletion%2CannualDepreciationAndAmortization%2CannualAmortizationCashFlow%2CannualAmortizationOfIntangibles%2CannualDepreciation%2CannualOperatingGainsLosses%2CannualPensionAndEmployeeBenefitExpense%2CannualEarningsLossesFromEquityInvestments%2CannualGainLossOnInvestmentSecurities%2CannualNetForeignCurrencyExchangeGainLoss%2CannualGainLossOnSaleOfPPE%2CannualGainLossOnSaleOfBusiness%2CannualNetIncomeFromContinuingOperations%2CannualCashFlowsfromusedinOperatingActivitiesDirect%2CannualTaxesRefundPaidDirect%2CannualInterestReceivedDirect%2CannualInterestPaidDirect%2CannualDividendsReceivedDirect%2CannualDividendsPaidDirect%2CannualClassesofCashPayments%2CannualOtherCashPaymentsfromOperatingActivities%2CannualPaymentsonBehalfofEmployees%2CannualPaymentstoSuppliersforGoodsandServices%2CannualClassesofCashReceiptsfromOperatingActivities%2CannualOtherCashReceiptsfromOperatingActivities%2CannualReceiptsfromGovernmentGrants%2CannualReceiptsfromCustomers&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
encoding: utf-8
string: !!binary |
eyJ0aW1lc2VyaWVzIjp7InJlc3VsdCI6W3sibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbElzc3VhbmNlT2ZEZWJ0Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYw
MzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsSXNzdWFuY2VPZkRlYnQiOlt7ImRh
dGFJZCI6MjYxODIsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NS40NjVFOSwiZm10Ijoi
NS40NkIifX0seyJkYXRhSWQiOjI2MTgyLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjUu
MjI4RTksImZtdCI6IjUuMjNCIn19LHsiZGF0YUlkIjoyNjE4MiwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjowLjAsImZtdCI6IjAuMDAifX0seyJkYXRhSWQiOjI2MTgyLCJhc09mRGF0ZSI6
IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjQuNDgxRTksImZtdCI6IjQuNDhCIn19XX0seyJtZXRhIjp7InN5
bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUHVyY2hhc2VPZkJ1c2luZXNzIl19LCJ0aW1l
c3RhbXAiOlsxNjMyOTYwMDAwLDE2NjQ0OTYwMDBdLCJhbm51YWxQdXJjaGFzZU9mQnVzaW5lc3Mi
Olt7ImRhdGFJZCI6MjYxMTUsImFzT2ZEYXRlIjoiMjAyMS0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTMuM0U3LCJm
bXQiOiItMzMuMDBNIn19LHsiZGF0YUlkIjoyNjExNSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwi
cGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsi
cmF3IjotMy4wNkU4LCJmbXQiOiItMzA2LjAwTSJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQ
TCJdLCJ0eXBlIjpbImFubnVhbERlcHJlY2lhdGlvbkFuZEFtb3J0aXphdGlvbiJdfSwidGltZXN0
YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVh
bERlcHJlY2lhdGlvbkFuZEFtb3J0aXphdGlvbiI6W3siZGF0YUlkIjoyNjA2MCwiYXNPZkRhdGUi
OiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjExMDRFMTAsImZtdCI6IjExLjEwQiJ9fSx7ImRhdGFJZCI6
MjYwNjAsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xNTE5RTEwLCJmbXQiOiIxMS41
MkIifX0seyJkYXRhSWQiOjI2MDYwLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMTQ0
NUUxMCwiZm10IjoiMTEuNDVCIn19LHsiZGF0YUlkIjoyNjA2MCwiYXNPZkRhdGUiOiIyMDI1LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoxLjE2OThFMTAsImZtdCI6IjExLjcwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENoYW5nZUluSW52ZW50b3J5Il19LCJ0aW1lc3RhbXAi
OlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsQ2hh
bmdlSW5JbnZlbnRvcnkiOlt7ImRhdGFJZCI6MjYwMzQsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6MS40ODRFOSwiZm10IjoiMS40OEIifX0seyJkYXRhSWQiOjI2MDM0LCJhc09mRGF0ZSI6
IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjYxOEU5LCJmbXQiOiItMS42MkIifX0seyJkYXRhSWQiOjI2
MDM0LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjA0NkU5LCJmbXQiOiItMS4wNUIi
fX0seyJkYXRhSWQiOjI2MDM0LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNEU5LCJm
bXQiOiIxLjQwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bFNhbGVPZkludmVzdG1lbnQiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwx
NzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxTYWxlT2ZJbnZlc3RtZW50IjpbeyJkYXRhSWQi
OjI2MTI1LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVu
Y3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuNzM2M0UxMCwiZm10IjoiNjcu
MzZCIn19LHsiZGF0YUlkIjoyNjEyNSwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo0LjU1
MTRFMTAsImZtdCI6IjQ1LjUxQiJ9fSx7ImRhdGFJZCI6MjYxMjUsImFzT2ZEYXRlIjoiMjAyNC0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6Ni4yMzQ2RTEwLCJmbXQiOiI2Mi4zNUIifX0seyJkYXRhSWQiOjI2MTI1LCJh
c09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjUuMzc5N0UxMCwiZm10IjoiNTMuODBCIn19XX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTmV0T3RoZXJGaW5hbmNp
bmdDaGFyZ2VzIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQw
MCwxNzU5MTkwNDAwXSwiYW5udWFsTmV0T3RoZXJGaW5hbmNpbmdDaGFyZ2VzIjpbeyJkYXRhSWQi
OjI2MTY0LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVu
Y3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi02LjM4M0U5LCJmbXQiOiItNi4z
OEIifX0seyJkYXRhSWQiOjI2MTY0LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi02LjAx
MkU5LCJmbXQiOiItNi4wMUIifX0seyJkYXRhSWQiOjI2MTY0LCJhc09mRGF0ZSI6IjIwMjQtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOi01LjgwMkU5LCJmbXQiOiItNS44MEIifX0seyJkYXRhSWQiOjI2MTY0LCJhc09m
RGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi02LjA3MUU5LCJmbXQiOiItNi4wN0IifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnRlcmVzdFBhaWRTdXBwbGVt
ZW50YWxEYXRhIl19LCJ0aW1lc3RhbXAiOlsxNjMyOTYwMDAwLDE2NjQ0OTYwMDAsMTY5NjAzMjAw
MF0sImFubnVhbEludGVyZXN0UGFpZFN1cHBsZW1lbnRhbERhdGEiOlt7ImRhdGFJZCI6MjYxODAs
ImFzT2ZEYXRlIjoiMjAyMS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi42ODdFOSwiZm10IjoiMi42OUIifX0seyJk
YXRhSWQiOjI2MTgwLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuODY1RTksImZtdCI6
IjIuODdCIn19LHsiZGF0YUlkIjoyNjE4MCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijoz
LjgwM0U5LCJmbXQiOiIzLjgwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbFN0b2NrQmFzZWRDb21wZW5zYXRpb24iXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYw
MDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxTdG9ja0Jhc2VkQ29t
cGVuc2F0aW9uIjpbeyJkYXRhSWQiOjI2MTcyLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjkuMDM4RTksImZtdCI6IjkuMDRCIn19LHsiZGF0YUlkIjoyNjE3MiwiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoxLjA4MzNFMTAsImZtdCI6IjEwLjgzQiJ9fSx7ImRhdGFJZCI6MjYxNzIs
ImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xNjg4RTEwLCJmbXQiOiIxMS42OUIifX0s
eyJkYXRhSWQiOjI2MTcyLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMjg2M0UxMCwi
Zm10IjoiMTIuODZCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsQ2hhbmdlSW5PdGhlckN1cnJlbnRBc3NldHMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAs
MTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDaGFuZ2VJbk90aGVyQ3Vy
cmVudEFzc2V0cyI6W3siZGF0YUlkIjoyNjE0NiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjotNi40OTlFOSwiZm10IjoiLTYuNTBCIn19LHsiZGF0YUlkIjoyNjE0NiwiYXNPZkRhdGUiOiIy
MDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjotNS42ODRFOSwiZm10IjoiLTUuNjhCIn19LHsiZGF0YUlkIjoyNjE0
NiwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4xNzMxRTEwLCJmbXQiOiItMTEuNzNC
In19LHsiZGF0YUlkIjoyNjE0NiwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOS4xOTdF
OSwiZm10IjoiLTkuMjBCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsTmV0SW5jb21lRnJvbUNvbnRpbnVpbmdPcGVyYXRpb25zIl19LCJ0aW1lc3RhbXAiOlsx
NjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsTmV0SW5j
b21lRnJvbUNvbnRpbnVpbmdPcGVyYXRpb25zIjpbeyJkYXRhSWQiOjI2MDgwLCJhc09mRGF0ZSI6
IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjkuOTgwM0UxMCwiZm10IjoiOTkuODBCIn19LHsiZGF0YUlkIjoy
NjA4MCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjY5OTVFMTAsImZtdCI6Ijk3LjAw
QiJ9fSx7ImRhdGFJZCI6MjYwODAsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUi
OiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS4zNzM2
RTEwLCJmbXQiOiI5My43NEIifX0seyJkYXRhSWQiOjI2MDgwLCJhc09mRGF0ZSI6IjIwMjUtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjEuMTIwMUUxMSwiZm10IjoiMTEyLjAxQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldFNob3J0VGVybURlYnRJc3N1YW5jZSJdfSwidGlt
ZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFu
bnVhbE5ldFNob3J0VGVybURlYnRJc3N1YW5jZSI6W3siZGF0YUlkIjoyNjA3NSwiYXNPZkRhdGUi
OiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjozLjk1NUU5LCJmbXQiOiIzLjk2QiJ9fSx7ImRhdGFJZCI6MjYw
NzUsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTMuOTc4RTksImZtdCI6Ii0zLjk4QiJ9
fSx7ImRhdGFJZCI6MjYwNzUsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My45NkU5LCJm
bXQiOiIzLjk2QiJ9fSx7ImRhdGFJZCI6MjYwNzUsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6LTIuMDMyRTksImZtdCI6Ii0yLjAzQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbENhcGl0YWxFeHBlbmRpdHVyZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5
NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbENhcGl0YWxFeHBl
bmRpdHVyZSI6W3siZGF0YUlkIjoyNjAwNSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijot
MS4wNzA4RTEwLCJmbXQiOiItMTAuNzFCIn19LHsiZGF0YUlkIjoyNjAwNSwiYXNPZkRhdGUiOiIy
MDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjotMS4wOTU5RTEwLCJmbXQiOiItMTAuOTZCIn19LHsiZGF0YUlkIjoy
NjAwNSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOS40NDdFOSwiZm10IjoiLTkuNDVC
In19LHsiZGF0YUlkIjoyNjAwNSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4yNzE1
RTEwLCJmbXQiOiItMTIuNzFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsQ29tbW9uU3RvY2tEaXZpZGVuZFBhaWQiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYw
MDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDb21tb25TdG9ja0Rp
dmlkZW5kUGFpZCI6W3siZGF0YUlkIjoyNjE1NCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjotMS40ODQxRTEwLCJmbXQiOiItMTQuODRCIn19LHsiZGF0YUlkIjoyNjE1NCwiYXNPZkRhdGUi
OiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjotMS41MDI1RTEwLCJmbXQiOiItMTUuMDNCIn19LHsiZGF0YUlk
IjoyNjE1NCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS41MjM0RTEwLCJmbXQiOiIt
MTUuMjNCIn19LHsiZGF0YUlkIjoyNjE1NCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijot
MS41NDIxRTEwLCJmbXQiOiItMTUuNDJCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsT3BlcmF0aW5nQ2FzaEZsb3ciXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYw
MDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxPcGVyYXRpbmdDYXNo
RmxvdyI6W3siZGF0YUlkIjoyNjAxNCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjIy
MTUxRTExLCJmbXQiOiIxMjIuMTVCIn19LHsiZGF0YUlkIjoyNjAxNCwiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoxLjEwNTQzRTExLCJmbXQiOiIxMTAuNTRCIn19LHsiZGF0YUlkIjoyNjAx
NCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjE4MjU0RTExLCJmbXQiOiIxMTguMjVC
In19LHsiZGF0YUlkIjoyNjAxNCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjExNDgy
RTExLCJmbXQiOiIxMTEuNDhCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsRGVmZXJyZWRUYXgiXX0sInRpbWVzdGFtcCI6WzE2MzI5NjAwMDAsMTY2NDQ5NjAw
MF0sImFubnVhbERlZmVycmVkVGF4IjpbeyJkYXRhSWQiOjI2MDU3LCJhc09mRGF0ZSI6IjIwMjEt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOi00Ljc3NEU5LCJmbXQiOiItNC43N0IifX0seyJkYXRhSWQiOjI2MDU3LCJh
c09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjguOTVFOCwiZm10IjoiODk1LjAwTSJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENoYW5nZXNJbkFjY291bnRS
ZWNlaXZhYmxlcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0
MDAsMTc1OTE5MDQwMF0sImFubnVhbENoYW5nZXNJbkFjY291bnRSZWNlaXZhYmxlcyI6W3siZGF0
YUlkIjoyNjEzNywiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS44MjNFOSwiZm10Ijoi
LTEuODJCIn19LHsiZGF0YUlkIjoyNjEzNywiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijot
MS42ODhFOSwiZm10IjoiLTEuNjlCIn19LHsiZGF0YUlkIjoyNjEzNywiYXNPZkRhdGUiOiIyMDI0
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjotMy43ODhFOSwiZm10IjoiLTMuNzlCIn19LHsiZGF0YUlkIjoyNjEzNywi
YXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotNi42ODJFOSwiZm10IjoiLTYuNjhCIn19XX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ2hhbmdlSW5BY2NvdW50
UGF5YWJsZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAs
MTc1OTE5MDQwMF0sImFubnVhbENoYW5nZUluQWNjb3VudFBheWFibGUiOlt7ImRhdGFJZCI6MjYw
MjIsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS40NDhFOSwiZm10IjoiOS40NUIifX0s
eyJkYXRhSWQiOjI2MDIyLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjg4OUU5LCJm
bXQiOiItMS44OUIifX0seyJkYXRhSWQiOjI2MDIyLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjYuMDJFOSwiZm10IjoiNi4wMkIifX0seyJkYXRhSWQiOjI2MDIyLCJhc09mRGF0ZSI6IjIw
MjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0
ZWRWYWx1ZSI6eyJyYXciOjkuMDJFOCwiZm10IjoiOTAyLjAwTSJ9fV19LHsibWV0YSI6eyJzeW1i
b2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbERlZmVycmVkSW5jb21lVGF4Il19LCJ0aW1lc3Rh
bXAiOlsxNjMyOTYwMDAwLDE2NjQ0OTYwMDBdLCJhbm51YWxEZWZlcnJlZEluY29tZVRheCI6W3si
ZGF0YUlkIjoyNjA1NiwiYXNPZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotNC43NzRFOSwiZm10
IjoiLTQuNzdCIn19LHsiZGF0YUlkIjoyNjA1NiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
Ijo4Ljk1RTgsImZtdCI6Ijg5NS4wME0ifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwi
dHlwZSI6WyJhbm51YWxMb25nVGVybURlYnRJc3N1YW5jZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5
NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbExvbmdUZXJtRGVi
dElzc3VhbmNlIjpbeyJkYXRhSWQiOjI2MDk5LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjUuNDY1RTksImZtdCI6IjUuNDZCIn19LHsiZGF0YUlkIjoyNjA5OSwiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3Ijo1LjIyOEU5LCJmbXQiOiI1LjIzQiJ9fSx7ImRhdGFJZCI6MjYwOTksImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MC4wLCJmbXQiOiIwLjAwIn19LHsiZGF0YUlkIjoy
NjA5OSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo0LjQ4MUU5LCJmbXQiOiI0LjQ4QiJ9
fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldExvbmdUZXJt
RGVidElzc3VhbmNlIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1
NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsTmV0TG9uZ1Rlcm1EZWJ0SXNzdWFuY2UiOlt7ImRhdGFJ
ZCI6MjYwNzMsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTQuMDc4RTksImZtdCI6Ii00
LjA4QiJ9fSx7ImRhdGFJZCI6MjYwNzMsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTUu
OTIzRTksImZtdCI6Ii01LjkyQiJ9fSx7ImRhdGFJZCI6MjYwNzMsImFzT2ZEYXRlIjoiMjAyNC0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6LTkuOTU4RTksImZtdCI6Ii05Ljk2QiJ9fSx7ImRhdGFJZCI6MjYwNzMsImFz
T2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTYuNDUxRTksImZtdCI6Ii02LjQ1QiJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldElzc3VhbmNlUGF5bWVu
dHNPZkRlYnQiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAw
LDE3NTkxOTA0MDBdLCJhbm51YWxOZXRJc3N1YW5jZVBheW1lbnRzT2ZEZWJ0IjpbeyJkYXRhSWQi
OjI2MDcyLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVu
Y3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjIzRTgsImZtdCI6Ii0xMjMu
MDBNIn19LHsiZGF0YUlkIjoyNjA3MiwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOS45
MDFFOSwiZm10IjoiLTkuOTBCIn19LHsiZGF0YUlkIjoyNjA3MiwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjotNS45OThFOSwiZm10IjoiLTYuMDBCIn19LHsiZGF0YUlkIjoyNjA3MiwiYXNP
ZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOC40ODNFOSwiZm10IjoiLTguNDhCIn19XX0seyJt
ZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTmV0SW50YW5naWJsZXNQdXJj
aGFzZUFuZFNhbGUiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bFJlcHVyY2hhc2VPZkNhcGl0YWxTdG9jayJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2
MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFJlcHVyY2hhc2VPZkNhcGl0YWxT
dG9jayI6W3siZGF0YUlkIjoyNjE4NCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOC45
NDAyRTEwLCJmbXQiOiItODkuNDBCIn19LHsiZGF0YUlkIjoyNjE4NCwiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjotNy43NTVFMTAsImZtdCI6Ii03Ny41NUIifX0seyJkYXRhSWQiOjI2MTg0
LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi05LjQ5NDlFMTAsImZtdCI6Ii05NC45NUIi
fX0seyJkYXRhSWQiOjI2MTg0LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi05LjA3MTFF
MTAsImZtdCI6Ii05MC43MUIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6
WyJhbm51YWxDYXNoRmxvd0Zyb21Db250aW51aW5nSW52ZXN0aW5nQWN0aXZpdGllcyJdfSwidGlt
ZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFu
bnVhbENhc2hGbG93RnJvbUNvbnRpbnVpbmdJbnZlc3RpbmdBY3Rpdml0aWVzIjpbeyJkYXRhSWQi
OjI2MDA5LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVu
Y3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0yLjIzNTRFMTAsImZtdCI6Ii0y
Mi4zNUIifX0seyJkYXRhSWQiOjI2MDA5LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMu
NzA1RTksImZtdCI6IjMuNzFCIn19LHsiZGF0YUlkIjoyNjAwOSwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoyLjkzNUU5LCJmbXQiOiIyLjk0QiJ9fSx7ImRhdGFJZCI6MjYwMDksImFzT2ZE
YXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS41MTk1RTEwLCJmbXQiOiIxNS4yMEIifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDaGFuZ2VJbk90aGVyV29ya2lu
Z0NhcGl0YWwiXX0sInRpbWVzdGFtcCI6WzE2MzI5NjAwMDAsMTY2NDQ5NjAwMF0sImFubnVhbENo
YW5nZUluT3RoZXJXb3JraW5nQ2FwaXRhbCI6W3siZGF0YUlkIjoyNjE0OCwiYXNPZkRhdGUiOiIy
MDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoxLjY3NkU5LCJmbXQiOiIxLjY4QiJ9fSx7ImRhdGFJZCI6MjYxNDgs
ImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6NC43OEU4LCJmbXQiOiI0NzguMDBNIn19XX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ2hhbmdlSW5SZWNlaXZh
YmxlcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1
OTE5MDQwMF0sImFubnVhbENoYW5nZUluUmVjZWl2YWJsZXMiOlt7ImRhdGFJZCI6MjYwNDUsImFz
T2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTkuMzQzRTksImZtdCI6Ii05LjM0QiJ9fSx7ImRh
dGFJZCI6MjYwNDUsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTQuMTdFOCwiZm10Ijoi
LTQxNy4wME0ifX0seyJkYXRhSWQiOjI2MDQ1LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
Oi01LjE0NEU5LCJmbXQiOiItNS4xNEIifX0seyJkYXRhSWQiOjI2MDQ1LCJhc09mRGF0ZSI6IjIw
MjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0
ZWRWYWx1ZSI6eyJyYXciOi03LjAyOUU5LCJmbXQiOiItNy4wM0IifX1dfSx7Im1ldGEiOnsic3lt
Ym9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDaGFuZ2VJbldvcmtpbmdDYXBpdGFsIl19LCJ0
aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwi
YW5udWFsQ2hhbmdlSW5Xb3JraW5nQ2FwaXRhbCI6W3siZGF0YUlkIjoyNjA1MywiYXNPZkRhdGUi
OiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjJFOSwiZm10IjoiMS4yMEIifX0seyJkYXRhSWQiOjI2MDUz
LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi02LjU3N0U5LCJmbXQiOiItNi41OEIifX0s
eyJkYXRhSWQiOjI2MDUzLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuNjUxRTksImZt
dCI6IjMuNjVCIn19LHsiZGF0YUlkIjoyNjA1MywiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjotMi41RTEwLCJmbXQiOiItMjUuMDBCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsSW5jb21lVGF4UGFpZFN1cHBsZW1lbnRhbERhdGEiXX0sInRpbWVzdGFt
cCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxJ
bmNvbWVUYXhQYWlkU3VwcGxlbWVudGFsRGF0YSI6W3siZGF0YUlkIjoyNjE3OSwiYXNPZkRhdGUi
OiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjk1NzNFMTAsImZtdCI6IjE5LjU3QiJ9fSx7ImRhdGFJZCI6
MjYxNzksImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS44Njc5RTEwLCJmbXQiOiIxOC42
OEIifX0seyJkYXRhSWQiOjI2MTc5LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuNjEw
MkUxMCwiZm10IjoiMjYuMTBCIn19LHsiZGF0YUlkIjoyNjE3OSwiYXNPZkRhdGUiOiIyMDI1LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3Ijo0LjMzNjlFMTAsImZtdCI6IjQzLjM3QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbERlcHJlY2lhdGlvbkFtb3J0aXphdGlvbkRlcGxldGlv
biJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5
MDQwMF0sImFubnVhbERlcHJlY2lhdGlvbkFtb3J0aXphdGlvbkRlcGxldGlvbiI6W3siZGF0YUlk
IjoyNjA2MSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjExMDRFMTAsImZtdCI6IjEx
LjEwQiJ9fSx7ImRhdGFJZCI6MjYwNjEsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4x
NTE5RTEwLCJmbXQiOiIxMS41MkIifX0seyJkYXRhSWQiOjI2MDYxLCJhc09mRGF0ZSI6IjIwMjQt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjEuMTQ0NUUxMCwiZm10IjoiMTEuNDVCIn19LHsiZGF0YUlkIjoyNjA2MSwi
YXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjE2OThFMTAsImZtdCI6IjExLjcwQiJ9fV19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldE90aGVySW52ZXN0
aW5nQ2hhbmdlcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0
MDAsMTc1OTE5MDQwMF0sImFubnVhbE5ldE90aGVySW52ZXN0aW5nQ2hhbmdlcyI6W3siZGF0YUlk
IjoyNjE2NSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMi4wODZFOSwiZm10IjoiLTIu
MDlCIn19LHsiZGF0YUlkIjoyNjE2NSwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4z
MzdFOSwiZm10IjoiLTEuMzRCIn19LHsiZGF0YUlkIjoyNjE2NSwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjotMS4zMDhFOSwiZm10IjoiLTEuMzFCIn19LHsiZGF0YUlkIjoyNjE2NSwiYXNP
ZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS40OEU5LCJmbXQiOiItMS40OEIifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJc3N1YW5jZU9mQ2FwaXRhbFN0
b2NrIl19LCJ0aW1lc3RhbXAiOlsxNjMyOTYwMDAwXSwiYW5udWFsSXNzdWFuY2VPZkNhcGl0YWxT
dG9jayI6W3siZGF0YUlkIjoyNjE4MSwiYXNPZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjEw
NUU5LCJmbXQiOiIxLjEwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpb
ImFubnVhbE5ldEJ1c2luZXNzUHVyY2hhc2VBbmRTYWxlIl19LCJ0aW1lc3RhbXAiOlsxNjMyOTYw
MDAwLDE2NjQ0OTYwMDBdLCJhbm51YWxOZXRCdXNpbmVzc1B1cmNoYXNlQW5kU2FsZSI6W3siZGF0
YUlkIjoyNjExNiwiYXNPZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMy4zRTcsImZtdCI6Ii0z
My4wME0ifX0seyJkYXRhSWQiOjI2MTE2LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0z
LjA2RTgsImZtdCI6Ii0zMDYuMDBNIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5
cGUiOlsiYW5udWFsUHVyY2hhc2VPZkludGFuZ2libGVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxQdXJjaGFzZU9mUFBFIl19LCJ0aW1lc3RhbXAiOlsxNjY0
NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsUHVyY2hhc2VP
ZlBQRSI6W3siZGF0YUlkIjoyNjExMiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4w
NzA4RTEwLCJmbXQiOiItMTAuNzFCIn19LHsiZGF0YUlkIjoyNjExMiwiYXNPZkRhdGUiOiIyMDIz
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjotMS4wOTU5RTEwLCJmbXQiOiItMTAuOTZCIn19LHsiZGF0YUlkIjoyNjEx
MiwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOS40NDdFOSwiZm10IjoiLTkuNDVCIn19
LHsiZGF0YUlkIjoyNjExMiwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4yNzE1RTEw
LCJmbXQiOiItMTIuNzFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsRmluYW5jaW5nQ2FzaEZsb3ciXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAz
MjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxGaW5hbmNpbmdDYXNoRmxvdyI6W3si
ZGF0YUlkIjoyNjAxMiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4xMDc0OUUxMSwi
Zm10IjoiLTExMC43NUIifX0seyJkYXRhSWQiOjI2MDEyLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAi
LCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6
eyJyYXciOi0xLjA4NDg4RTExLCJmbXQiOiItMTA4LjQ5QiJ9fSx7ImRhdGFJZCI6MjYwMTIsImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuMjE5ODNFMTEsImZtdCI6Ii0xMjEuOThCIn19
LHsiZGF0YUlkIjoyNjAxMiwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4yMDY4NkUx
MSwiZm10IjoiLTEyMC42OUIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6
WyJhbm51YWxDaGFuZ2VJbk90aGVyQ3VycmVudExpYWJpbGl0aWVzIl19LCJ0aW1lc3RhbXAiOlsx
NjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsQ2hhbmdl
SW5PdGhlckN1cnJlbnRMaWFiaWxpdGllcyI6W3siZGF0YUlkIjoyNjE0NywiYXNPZkRhdGUiOiIy
MDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3Ijo2LjExRTksImZtdCI6IjYuMTFCIn19LHsiZGF0YUlkIjoyNjE0Nywi
YXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjozLjAzMUU5LCJmbXQiOiIzLjAzQiJ9fSx7ImRh
dGFJZCI6MjYxNDcsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS41NTUyRTEwLCJmbXQi
OiIxNS41NUIifX0seyJkYXRhSWQiOjI2MTQ3LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
Oi0xLjEwNzZFMTAsImZtdCI6Ii0xMS4wOEIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxDb21tb25TdG9ja0lzc3VhbmNlIl19LCJ0aW1lc3RhbXAiOlsxNjMy
OTYwMDAwXSwiYW5udWFsQ29tbW9uU3RvY2tJc3N1YW5jZSI6W3siZGF0YUlkIjoyNjA5OCwiYXNP
ZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjEwNUU5LCJmbXQiOiIxLjEwQiJ9fV19LHsibWV0
YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEZyZWVDYXNoRmxvdyJdfSwidGlt
ZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFu
bnVhbEZyZWVDYXNoRmxvdyI6W3siZGF0YUlkIjoyNjE4NSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoxLjExNDQzRTExLCJmbXQiOiIxMTEuNDRCIn19LHsiZGF0YUlkIjoyNjE4NSwiYXNP
ZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5Ljk1ODRFMTAsImZtdCI6Ijk5LjU4QiJ9fSx7ImRh
dGFJZCI6MjYxODUsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4wODgwN0UxMSwiZm10
IjoiMTA4LjgxQiJ9fSx7ImRhdGFJZCI6MjYxODUsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6OS44NzY3RTEwLCJmbXQiOiI5OC43N0IifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxDaGFuZ2VJblBheWFibGVzQW5kQWNjcnVlZEV4cGVuc2UiXX0sInRp
bWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJh
bm51YWxDaGFuZ2VJblBheWFibGVzQW5kQWNjcnVlZEV4cGVuc2UiOlt7ImRhdGFJZCI6MjYwNDEs
ImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS40NDhFOSwiZm10IjoiOS40NUIifX0seyJk
YXRhSWQiOjI2MDQxLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwi
Y3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjg4OUU5LCJmbXQi
OiItMS44OUIifX0seyJkYXRhSWQiOjI2MDQxLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjYuMDJFOSwiZm10IjoiNi4wMkIifX0seyJkYXRhSWQiOjI2MDQxLCJhc09mRGF0ZSI6IjIwMjUt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjkuMDJFOCwiZm10IjoiOTAyLjAwTSJ9fV19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldEludmVzdG1lbnRQdXJjaGFzZUFuZFNhbGUiXX0s
InRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBd
LCJhbm51YWxOZXRJbnZlc3RtZW50UHVyY2hhc2VBbmRTYWxlIjpbeyJkYXRhSWQiOjI2MTE4LCJh
c09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi05LjU2RTksImZtdCI6Ii05LjU2QiJ9fSx7ImRh
dGFJZCI6MjYxMTgsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS42MDAxRTEwLCJmbXQi
OiIxNi4wMEIifX0seyJkYXRhSWQiOjI2MTE4LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjEuMzY5RTEwLCJmbXQiOiIxMy42OUIifX0seyJkYXRhSWQiOjI2MTE4LCJhc09mRGF0ZSI6IjIw
MjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0
ZWRWYWx1ZSI6eyJyYXciOjIuOTM5RTEwLCJmbXQiOiIyOS4zOUIifX1dfSx7Im1ldGEiOnsic3lt
Ym9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDb21tb25TdG9ja1BheW1lbnRzIl19LCJ0aW1l
c3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5u
dWFsQ29tbW9uU3RvY2tQYXltZW50cyI6W3siZGF0YUlkIjoyNjA4OCwiYXNPZkRhdGUiOiIyMDIy
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjotOC45NDAyRTEwLCJmbXQiOiItODkuNDBCIn19LHsiZGF0YUlkIjoyNjA4
OCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotNy43NTVFMTAsImZtdCI6Ii03Ny41NUIi
fX0seyJkYXRhSWQiOjI2MDg4LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi05LjQ5NDlF
MTAsImZtdCI6Ii05NC45NUIifX0seyJkYXRhSWQiOjI2MDg4LCJhc09mRGF0ZSI6IjIwMjUtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOi05LjA3MTFFMTAsImZtdCI6Ii05MC43MUIifX1dfSx7Im1ldGEiOnsic3ltYm9s
IjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZXBheW1lbnRPZkRlYnQiXX0sInRpbWVzdGFtcCI6
WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxSZXBh
eW1lbnRPZkRlYnQiOlt7ImRhdGFJZCI6MjYxODMsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6LTkuNTQzRTksImZtdCI6Ii05LjU0QiJ9fSx7ImRhdGFJZCI6MjYxODMsImFzT2ZEYXRlIjoi
MjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6LTEuMTE1MUUxMCwiZm10IjoiLTExLjE1QiJ9fSx7ImRhdGFJZCI6
MjYxODMsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTkuOTU4RTksImZtdCI6Ii05Ljk2
QiJ9fSx7ImRhdGFJZCI6MjYxODMsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUi
OiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuMDkz
MkUxMCwiZm10IjoiLTEwLjkzQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbENhc2hGbG93RnJvbUNvbnRpbnVpbmdPcGVyYXRpbmdBY3Rpdml0aWVzIl19LCJ0
aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwi
YW5udWFsQ2FzaEZsb3dGcm9tQ29udGludWluZ09wZXJhdGluZ0FjdGl2aXRpZXMiOlt7ImRhdGFJ
ZCI6MjYwMTAsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yMjE1MUUxMSwiZm10Ijoi
MTIyLjE1QiJ9fSx7ImRhdGFJZCI6MjYwMTAsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
MS4xMDU0M0UxMSwiZm10IjoiMTEwLjU0QiJ9fSx7ImRhdGFJZCI6MjYwMTAsImFzT2ZEYXRlIjoi
MjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6MS4xODI1NEUxMSwiZm10IjoiMTE4LjI1QiJ9fSx7ImRhdGFJZCI6
MjYwMTAsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xMTQ4MkUxMSwiZm10IjoiMTEx
LjQ4QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFB1cmNo
YXNlT2ZJbnZlc3RtZW50Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcy
NzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsUHVyY2hhc2VPZkludmVzdG1lbnQiOlt7ImRhdGFJ
ZCI6MjYxMTAsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTcuNjkyM0UxMCwiZm10Ijoi
LTc2LjkyQiJ9fSx7ImRhdGFJZCI6MjYxMTAsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
LTIuOTUxM0UxMCwiZm10IjoiLTI5LjUxQiJ9fSx7ImRhdGFJZCI6MjYxMTAsImFzT2ZEYXRlIjoi
MjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6LTQuODY1NkUxMCwiZm10IjoiLTQ4LjY2QiJ9fSx7ImRhdGFJZCI6
MjYxMTAsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTIuNDQwN0UxMCwiZm10IjoiLTI0
LjQxQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEJlZ2lu
bmluZ0Nhc2hQb3NpdGlvbiJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3
Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEJlZ2lubmluZ0Nhc2hQb3NpdGlvbiI6W3siZGF0
YUlkIjoyNjAxNSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjozLjU5MjlFMTAsImZtdCI6
IjM1LjkzQiJ9fSx7ImRhdGFJZCI6MjYwMTUsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
Mi40OTc3RTEwLCJmbXQiOiIyNC45OEIifX0seyJkYXRhSWQiOjI2MDE1LCJhc09mRGF0ZSI6IjIw
MjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0
ZWRWYWx1ZSI6eyJyYXciOjMuMDczN0UxMCwiZm10IjoiMzAuNzRCIn19LHsiZGF0YUlkIjoyNjAx
NSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjk5NDNFMTAsImZtdCI6IjI5Ljk0QiJ9
fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENhc2hEaXZpZGVu
ZHNQYWlkIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwx
NzU5MTkwNDAwXSwiYW5udWFsQ2FzaERpdmlkZW5kc1BhaWQiOlt7ImRhdGFJZCI6MjYwMDcsImFz
T2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuNDg0MUUxMCwiZm10IjoiLTE0Ljg0QiJ9fSx7
ImRhdGFJZCI6MjYwMDcsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuNTAyNUUxMCwi
Zm10IjoiLTE1LjAzQiJ9fSx7ImRhdGFJZCI6MjYwMDcsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6LTEuNTIzNEUxMCwiZm10IjoiLTE1LjIzQiJ9fSx7ImRhdGFJZCI6MjYwMDcsImFzT2ZE
YXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuNTQyMUUxMCwiZm10IjoiLTE1LjQyQiJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEludmVzdGluZ0Nhc2hGbG93
Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkw
NDAwXSwiYW5udWFsSW52ZXN0aW5nQ2FzaEZsb3ciOlt7ImRhdGFJZCI6MjYwMTMsImFzT2ZEYXRl
IjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6LTIuMjM1NEUxMCwiZm10IjoiLTIyLjM1QiJ9fSx7ImRhdGFJ
ZCI6MjYwMTMsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My43MDVFOSwiZm10IjoiMy43
MUIifX0seyJkYXRhSWQiOjI2MDEzLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuOTM1
RTksImZtdCI6IjIuOTRCIn19LHsiZGF0YUlkIjoyNjAxMywiYXNPZkRhdGUiOiIyMDI1LTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoxLjUxOTVFMTAsImZtdCI6IjE1LjIwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbEVuZENhc2hQb3NpdGlvbiJdfSwidGltZXN0YW1wIjpbMTY2
NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEVuZENhc2hQ
b3NpdGlvbiI6W3siZGF0YUlkIjoyNjAxNiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijoy
LjQ5NzdFMTAsImZtdCI6IjI0Ljk4QiJ9fSx7ImRhdGFJZCI6MjYwMTYsImFzT2ZEYXRlIjoiMjAy
My0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6My4wNzM3RTEwLCJmbXQiOiIzMC43NEIifX0seyJkYXRhSWQiOjI2MDE2
LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuOTk0M0UxMCwiZm10IjoiMjkuOTRCIn19
LHsiZGF0YUlkIjoyNjAxNiwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjozLjU5MzRFMTAs
ImZtdCI6IjM1LjkzQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbENhc2hGbG93RnJvbUNvbnRpbnVpbmdGaW5hbmNpbmdBY3Rpdml0aWVzIl19LCJ0aW1lc3Rh
bXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFs
Q2FzaEZsb3dGcm9tQ29udGludWluZ0ZpbmFuY2luZ0FjdGl2aXRpZXMiOlt7ImRhdGFJZCI6MjYw
MDgsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuMTA3NDlFMTEsImZtdCI6Ii0xMTAu
NzVCIn19LHsiZGF0YUlkIjoyNjAwOCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4w
ODQ4OEUxMSwiZm10IjoiLTEwOC40OUIifX0seyJkYXRhSWQiOjI2MDA4LCJhc09mRGF0ZSI6IjIw
MjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0
ZWRWYWx1ZSI6eyJyYXciOi0xLjIxOTgzRTExLCJmbXQiOiItMTIxLjk4QiJ9fSx7ImRhdGFJZCI6
MjYwMDgsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuMjA2ODZFMTEsImZtdCI6Ii0x
MjAuNjlCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTG9u
Z1Rlcm1EZWJ0UGF5bWVudHMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwx
NzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxMb25nVGVybURlYnRQYXltZW50cyI6W3siZGF0
YUlkIjoyNjA5MCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOS41NDNFOSwiZm10Ijoi
LTkuNTRCIn19LHsiZGF0YUlkIjoyNjA5MCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijot
MS4xMTUxRTEwLCJmbXQiOiItMTEuMTVCIn19LHsiZGF0YUlkIjoyNjA5MCwiYXNPZkRhdGUiOiIy
MDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjotOS45NThFOSwiZm10IjoiLTkuOTZCIn19LHsiZGF0YUlkIjoyNjA5
MCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS4wOTMyRTEwLCJmbXQiOiItMTAuOTNC
In19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTmV0Q29tbW9u
U3RvY2tJc3N1YW5jZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2
NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbE5ldENvbW1vblN0b2NrSXNzdWFuY2UiOlt7ImRhdGFJ
ZCI6MjYwNzEsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTguOTQwMkUxMCwiZm10Ijoi
LTg5LjQwQiJ9fSx7ImRhdGFJZCI6MjYwNzEsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
LTcuNzU1RTEwLCJmbXQiOiItNzcuNTVCIn19LHsiZGF0YUlkIjoyNjA3MSwiYXNPZkRhdGUiOiIy
MDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjotOS40OTQ5RTEwLCJmbXQiOiItOTQuOTVCIn19LHsiZGF0YUlkIjoy
NjA3MSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotOS4wNzExRTEwLCJmbXQiOiItOTAu
NzFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ2hhbmdl
SW5QYXlhYmxlIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQw
MCwxNzU5MTkwNDAwXSwiYW5udWFsQ2hhbmdlSW5QYXlhYmxlIjpbeyJkYXRhSWQiOjI2MDQwLCJh
c09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuNDQ4RTksImZtdCI6IjkuNDVCIn19LHsiZGF0
YUlkIjoyNjA0MCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMS44ODlFOSwiZm10Ijoi
LTEuODlCIn19LHsiZGF0YUlkIjoyNjA0MCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9k
VHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo2
LjAyRTksImZtdCI6IjYuMDJCIn19LHsiZGF0YUlkIjoyNjA0MCwiYXNPZkRhdGUiOiIyMDI1LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3Ijo5LjAyRTgsImZtdCI6IjkwMi4wME0ifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXRQUEVQdXJjaGFzZUFuZFNhbGUiXX0sInRpbWVzdGFt
cCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxO
ZXRQUEVQdXJjaGFzZUFuZFNhbGUiOlt7ImRhdGFJZCI6MjYxMTksImFzT2ZEYXRlIjoiMjAyMi0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6LTEuMDcwOEUxMCwiZm10IjoiLTEwLjcxQiJ9fSx7ImRhdGFJZCI6MjYxMTks
ImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTEuMDk1OUUxMCwiZm10IjoiLTEwLjk2QiJ9
fSx7ImRhdGFJZCI6MjYxMTksImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTkuNDQ3RTks
ImZtdCI6Ii05LjQ1QiJ9fSx7ImRhdGFJZCI6MjYxMTksImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6LTEuMjcxNUUxMCwiZm10IjoiLTEyLjcxQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbENoYW5nZXNJbkNhc2giXX0sInRpbWVzdGFtcCI6WzE2NjQ0
OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxDaGFuZ2VzSW5D
YXNoIjpbeyJkYXRhSWQiOjI2MDI3LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjA5
NTJFMTAsImZtdCI6Ii0xMC45NUIifX0seyJkYXRhSWQiOjI2MDI3LCJhc09mRGF0ZSI6IjIwMjMt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjUuNzZFOSwiZm10IjoiNS43NkIifX0seyJkYXRhSWQiOjI2MDI3LCJhc09m
RGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi03Ljk0RTgsImZtdCI6Ii03OTQuMDBNIn19LHsiZGF0
YUlkIjoyNjAyNywiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo1Ljk5MUU5LCJmbXQiOiI1
Ljk5QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVy
Tm9uQ2FzaEl0ZW1zIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1
NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsT3RoZXJOb25DYXNoSXRlbXMiOlt7ImRhdGFJZCI6MjYx
NjYsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4wMDZFOSwiZm10IjoiMS4wMUIifX0s
eyJkYXRhSWQiOjI2MTY2LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0yLjIyN0U5LCJm
bXQiOiItMi4yM0IifX0seyJkYXRhSWQiOjI2MTY2LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOi0yLjI2NkU5LCJmbXQiOiItMi4yN0IifX0seyJkYXRhSWQiOjI2MTY2LCJhc09mRGF0ZSI6
IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOi04LjlFNywiZm10IjoiLTg5LjAwTSJ9fV19LHsibWV0YSI6eyJz
eW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbERpdmlkZW5kc1JlY2VpdmVkQ0ZJIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQYXltZW50c29uQmVoYWxm
b2ZFbXBsb3llZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bERpdmlkZW5kUmVjZWl2ZWRDRk8iXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbEFtb3J0aXphdGlvbkNhc2hGbG93Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFB
UEwiXSwidHlwZSI6WyJhbm51YWxPdGhlckNhc2hBZGp1c3RtZW50T3V0c2lkZUNoYW5nZWluQ2Fz
aCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUHJlZmVycmVk
U3RvY2tJc3N1YW5jZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsVW5yZWFsaXplZEdhaW5Mb3NzT25JbnZlc3RtZW50U2VjdXJpdGllcyJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRGl2aWRlbmRzUmVjZWl2ZWREaXJlY3Qi
XX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEFtb3J0aXphdGlv
bk9mU2VjdXJpdGllcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsQ2FzaEZyb21EaXNjb250aW51ZWRGaW5hbmNpbmdBY3Rpdml0aWVzIl19fSx7Im1ldGEiOnsi
c3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxGb3JlaWduU2FsZXMiXX19LHsibWV0YSI6
eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENoYW5nZUluQWNjcnVlZEV4cGVuc2Ui
XX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENoYW5nZUluSW5j
b21lVGF4UGF5YWJsZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsSW50ZXJlc3RSZWNlaXZlZENGTyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5
cGUiOlsiYW5udWFsQ2FzaEZyb21EaXNjb250aW51ZWRPcGVyYXRpbmdBY3Rpdml0aWVzIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxPdGhlckNhc2hQYXltZW50
c2Zyb21PcGVyYXRpbmdBY3Rpdml0aWVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwi
dHlwZSI6WyJhbm51YWxPcGVyYXRpbmdHYWluc0xvc3NlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6
WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRWFybmluZ3NMb3NzZXNGcm9tRXF1aXR5SW52ZXN0bWVu
dHMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFNhbGVPZklu
dGFuZ2libGVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJ
bnRlcmVzdFJlY2VpdmVkQ0ZJIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6
WyJhbm51YWxJbnRlcmVzdFJlY2VpdmVkRGlyZWN0Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFB
UEwiXSwidHlwZSI6WyJhbm51YWxEaXZpZGVuZHNQYWlkRGlyZWN0Il19fSx7Im1ldGEiOnsic3lt
Ym9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZWNlaXB0c2Zyb21Hb3Zlcm5tZW50R3JhbnRz
Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxTaG9ydFRlcm1E
ZWJ0SXNzdWFuY2UiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bFNhbGVPZlBQRSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
Q2FzaEZsb3dzZnJvbXVzZWRpbk9wZXJhdGluZ0FjdGl2aXRpZXNEaXJlY3QiXX19LHsibWV0YSI6
eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldFByZWZlcnJlZFN0b2NrSXNzdWFu
Y2UiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFByZWZlcnJl
ZFN0b2NrUGF5bWVudHMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbENhc2hGbG93RnJvbURpc2NvbnRpbnVlZE9wZXJhdGlvbiJdfX0seyJtZXRhIjp7InN5bWJv
bCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsSW50ZXJlc3RQYWlkRGlyZWN0Il19fSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxFZmZlY3RPZkV4Y2hhbmdlUmF0ZUNo
YW5nZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFNhbGVP
ZkludmVzdG1lbnRQcm9wZXJ0aWVzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlw
ZSI6WyJhbm51YWxOZXRJbnZlc3RtZW50UHJvcGVydGllc1B1cmNoYXNlQW5kU2FsZSJdfX0seyJt
ZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ2hhbmdlSW5QcmVwYWlkQXNz
ZXRzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZWNlaXB0
c2Zyb21DdXN0b21lcnMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbENhc2hGcm9tRGlzY29udGludWVkSW52ZXN0aW5nQWN0aXZpdGllcyJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ2hhbmdlSW5JbnRlcmVzdFBheWFibGUi
XX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEFzc2V0SW1wYWly
bWVudENoYXJnZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
Q2xhc3Nlc29mQ2FzaFJlY2VpcHRzZnJvbU9wZXJhdGluZ0FjdGl2aXRpZXMiXX19LHsibWV0YSI6
eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFBheW1lbnRzdG9TdXBwbGllcnNmb3JH
b29kc2FuZFNlcnZpY2VzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJh
bm51YWxEZXByZWNpYXRpb24iXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpb
ImFubnVhbEdhaW5Mb3NzT25TYWxlT2ZCdXNpbmVzcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsU2FsZU9mQnVzaW5lc3MiXX19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENhcGl0YWxFeHBlbmRpdHVyZVJlcG9ydGVkIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxFeGNlc3NUYXhCZW5lZml0
RnJvbVN0b2NrQmFzZWRDb21wZW5zYXRpb24iXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbEludGVyZXN0UGFpZENGTyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsVGF4ZXNSZWZ1bmRQYWlkRGlyZWN0Il19fSx7Im1ldGEiOnsi
c3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxTaG9ydFRlcm1EZWJ0UGF5bWVudHMiXX19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEFkanVzdGVkR2VvZ3Jh
cGh5U2VnbWVudERhdGEiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbFBlbnNpb25BbmRFbXBsb3llZUJlbmVmaXRFeHBlbnNlIl19fSx7Im1ldGEiOnsic3ltYm9s
IjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnRlcmVzdFBhaWRDRkYiXX19LHsibWV0YSI6eyJz
eW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbENsYXNzZXNvZkNhc2hQYXltZW50cyJdfX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQ2hhbmdlSW5UYXhQYXlh
YmxlIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQcm9jZWVk
c0Zyb21TdG9ja09wdGlvbkV4ZXJjaXNlZCJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsUHVyY2hhc2VPZkludmVzdG1lbnRQcm9wZXJ0aWVzIl19fSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQcm92aXNpb25hbmRXcml0ZU9mZm9m
QXNzZXRzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxHYWlu
TG9zc09uSW52ZXN0bWVudFNlY3VyaXRpZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbEdhaW5Mb3NzT25TYWxlT2ZQUEUiXX19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyQ2FzaFJlY2VpcHRzZnJvbU9wZXJhdGluZ0Fj
dGl2aXRpZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbERl
cGxldGlvbiJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsT3Ro
ZXJDYXNoQWRqdXN0bWVudEluc2lkZUNoYW5nZWluQ2FzaCJdfX0seyJtZXRhIjp7InN5bWJvbCI6
WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVGF4ZXNSZWZ1bmRQYWlkIl19fSx7Im1ldGEiOnsic3lt
Ym9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXRGb3JlaWduQ3VycmVuY3lFeGNoYW5nZUdh
aW5Mb3NzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDaGFu
Z2VJbkRpdmlkZW5kUGF5YWJsZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsUHJlZmVycmVkU3RvY2tEaXZpZGVuZFBhaWQiXX19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEFtb3J0aXphdGlvbk9mSW50YW5naWJsZXMiXX19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbERvbWVzdGljU2FsZXMiXX19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbERpdmlkZW5kUGFpZENG
TyJdfX1dLCJlcnJvciI6bnVsbH19
headers:
age: '0'
cache-control: public, max-age=60, stale-while-revalidate=30
content-encoding: gzip
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:15 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '82'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,286 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsiYWRkcmVzczEiOiJP
bmUgQXBwbGUgUGFyayBXYXkiLCJjaXR5IjoiQ3VwZXJ0aW5vIiwic3RhdGUiOiJDQSIsInppcCI6
Ijk1MDE0IiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJwaG9uZSI6Iig0MDgpIDk5Ni0xMDEw
Iiwid2Vic2l0ZSI6Imh0dHBzOi8vd3d3LmFwcGxlLmNvbSIsImluZHVzdHJ5IjoiQ29uc3VtZXIg
RWxlY3Ryb25pY3MiLCJpbmR1c3RyeUtleSI6ImNvbnN1bWVyLWVsZWN0cm9uaWNzIiwiaW5kdXN0
cnlEaXNwIjoiQ29uc3VtZXIgRWxlY3Ryb25pY3MiLCJzZWN0b3IiOiJUZWNobm9sb2d5Iiwic2Vj
dG9yS2V5IjoidGVjaG5vbG9neSIsInNlY3RvckRpc3AiOiJUZWNobm9sb2d5IiwibG9uZ0J1c2lu
ZXNzU3VtbWFyeSI6IkFwcGxlIEluYy4gZGVzaWducywgbWFudWZhY3R1cmVzLCBhbmQgbWFya2V0
cyBzbWFydHBob25lcywgcGVyc29uYWwgY29tcHV0ZXJzLCB0YWJsZXRzLCB3ZWFyYWJsZXMsIGFu
ZCBhY2Nlc3NvcmllcyB3b3JsZHdpZGUuIFRoZSBjb21wYW55IG9mZmVycyBpUGhvbmUsIGEgbGlu
ZSBvZiBzbWFydHBob25lczsgTWFjLCBhIGxpbmUgb2YgcGVyc29uYWwgY29tcHV0ZXJzOyBpUGFk
LCBhIGxpbmUgb2YgbXVsdGktcHVycG9zZSB0YWJsZXRzOyBhbmQgd2VhcmFibGVzLCBob21lLCBh
bmQgYWNjZXNzb3JpZXMgY29tcHJpc2luZyBBaXJQb2RzLCBBcHBsZSBWaXNpb24gUHJvLCBBcHBs
ZSBUViwgQXBwbGUgV2F0Y2gsIEJlYXRzIHByb2R1Y3RzLCBhbmQgSG9tZVBvZCwgYXMgd2VsbCBh
cyBBcHBsZSBicmFuZGVkIGFuZCB0aGlyZC1wYXJ0eSBhY2Nlc3Nvcmllcy4gSXQgYWxzbyBwcm92
aWRlcyBBcHBsZUNhcmUgc3VwcG9ydCBhbmQgY2xvdWQgc2VydmljZXM7IGFuZCBvcGVyYXRlcyB2
YXJpb3VzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHRoZSBBcHAgU3RvcmUgdGhhdCBhbGxvdyBjdXN0
b21lcnMgdG8gZGlzY292ZXIgYW5kIGRvd25sb2FkIGFwcGxpY2F0aW9ucyBhbmQgZGlnaXRhbCBj
b250ZW50LCBzdWNoIGFzIGJvb2tzLCBtdXNpYywgdmlkZW8sIGdhbWVzLCBhbmQgcG9kY2FzdHMs
IGFzIHdlbGwgYXMgYWR2ZXJ0aXNpbmcgc2VydmljZXMgaW5jbHVkZSB0aGlyZC1wYXJ0eSBsaWNl
bnNpbmcgYXJyYW5nZW1lbnRzIGFuZCBpdHMgb3duIGFkdmVydGlzaW5nIHBsYXRmb3Jtcy4gSW4g
YWRkaXRpb24sIHRoZSBjb21wYW55IG9mZmVycyB2YXJpb3VzIHN1YnNjcmlwdGlvbi1iYXNlZCBz
ZXJ2aWNlcywgc3VjaCBhcyBBcHBsZSBBcmNhZGUsIGEgZ2FtZSBzdWJzY3JpcHRpb24gc2Vydmlj
ZTsgQXBwbGUgRml0bmVzcyssIGEgcGVyc29uYWxpemVkIGZpdG5lc3Mgc2VydmljZTsgQXBwbGUg
TXVzaWMsIHdoaWNoIG9mZmVycyB1c2VycyBhIGN1cmF0ZWQgbGlzdGVuaW5nIGV4cGVyaWVuY2Ug
d2l0aCBvbi1kZW1hbmQgcmFkaW8gc3RhdGlvbnM7IEFwcGxlIE5ld3MrLCBhIHN1YnNjcmlwdGlv
biBuZXdzIGFuZCBtYWdhemluZSBzZXJ2aWNlOyBBcHBsZSBUViwgd2hpY2ggb2ZmZXJzIGV4Y2x1
c2l2ZSBvcmlnaW5hbCBjb250ZW50IGFuZCBsaXZlIHNwb3J0czsgQXBwbGUgQ2FyZCwgYSBjby1i
cmFuZGVkIGNyZWRpdCBjYXJkOyBhbmQgQXBwbGUgUGF5LCBhIGNhc2hsZXNzIHBheW1lbnQgc2Vy
dmljZSwgYXMgd2VsbCBhcyBsaWNlbnNlcyBpdHMgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBUaGUg
Y29tcGFueSBzZXJ2ZXMgY29uc3VtZXJzLCBhbmQgc21hbGwgYW5kIG1pZC1zaXplZCBidXNpbmVz
c2VzOyBhbmQgdGhlIGVkdWNhdGlvbiwgZW50ZXJwcmlzZSwgYW5kIGdvdmVybm1lbnQgbWFya2V0
cy4gSXQgZGlzdHJpYnV0ZXMgdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIGZvciBpdHMgcHJvZHVj
dHMgdGhyb3VnaCB0aGUgQXBwIFN0b3JlLiBUaGUgY29tcGFueSBhbHNvIHNlbGxzIGl0cyBwcm9k
dWN0cyB0aHJvdWdoIGl0cyByZXRhaWwgYW5kIG9ubGluZSBzdG9yZXMsIGFuZCBkaXJlY3Qgc2Fs
ZXMgZm9yY2U7IGFuZCB0aGlyZC1wYXJ0eSBjZWxsdWxhciBuZXR3b3JrIGNhcnJpZXJzIGFuZCBy
ZXNlbGxlcnMuIFRoZSBjb21wYW55IHdhcyBmb3JtZXJseSBrbm93biBhcyBBcHBsZSBDb21wdXRl
ciwgSW5jLiBhbmQgY2hhbmdlZCBpdHMgbmFtZSB0byBBcHBsZSBJbmMuIGluIEphbnVhcnkgMjAw
Ny4gQXBwbGUgSW5jLiB3YXMgZm91bmRlZCBpbiAxOTc2IGFuZCBpcyBoZWFkcXVhcnRlcmVkIGlu
IEN1cGVydGlubywgQ2FsaWZvcm5pYS4iLCJmdWxsVGltZUVtcGxveWVlcyI6MTY2MDAwLCJjb21w
YW55T2ZmaWNlcnMiOlt7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBUaW1vdGh5IEQuIENvb2siLCJh
Z2UiOjYzLCJ0aXRsZSI6IkNFTyAmIERpcmVjdG9yIiwieWVhckJvcm4iOjE5NjEsImZpc2NhbFll
YXIiOjIwMjQsInRvdGFsUGF5Ijp7InJhdyI6MTY1MjA4NTYsImZtdCI6IjE2LjUyTSIsImxvbmdG
bXQiOiIxNiw1MjAsODU2In0sImV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJs
b25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25n
Rm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1zLiBLYXRoZXJpbmUgTC4gQWRhbXMiLCJh
Z2UiOjYwLCJ0aXRsZSI6IlNlbmlvciBWUCAmIEdlbmVyYWwgQ291bnNlbCIsInllYXJCb3JuIjox
OTY0LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJyYXciOjUwMjIxODIsImZtdCI6IjUu
MDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gRGVpcmRyZSAgTydC
cmllbiIsImFnZSI6NTcsInRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFJldGFpbCAm
IFBlb3BsZSIsInllYXJCb3JuIjoxOTY3LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJy
YXciOjUwMjIxODIsImZtdCI6IjUuMDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lz
ZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJNci4gS2V2YW4gIFBhcmVraCIsImFnZSI6NTIsInRpdGxlIjoiU2VuaW9yIFZQICYgQ0ZP
IiwieWVhckJvcm4iOjE5NzIsImZpc2NhbFllYXIiOjIwMjQsImV4ZXJjaXNlZFZhbHVlIjp7InJh
dyI6MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6
MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBTYWJp
aCAgS2hhbiIsInRpdGxlIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJmaXNjYWxZZWFyIjoy
MDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwi
dW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJt
YXhBZ2UiOjEsIm5hbWUiOiJNci4gQ2hyaXMgIEtvbmRvIiwidGl0bGUiOiJTZW5pb3IgRGlyZWN0
b3Igb2YgQ29ycG9yYXRlIEFjY291bnRpbmciLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJTdWhhc2luaSAgQ2hhbmRyYW1vdWxpIiwidGl0bGUiOiJEaXJlY3RvciBvZiBJbnZlc3RvciBS
ZWxhdGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gS3Jpc3RpbiBIdWd1
ZXQgUXVheWxlIiwidGl0bGUiOiJWaWNlIFByZXNpZGVudCBvZiBXb3JsZHdpZGUgQ29tbXVuaWNh
dGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVs
bCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gR3JlZyAgSm9zd2lhayIs
InRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFdvcmxkd2lkZSBNYXJrZXRpbmciLCJm
aXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9u
Z0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gQWRyaWFuICBQZXJpY2EiLCJhZ2UiOjUw
LCJ0aXRsZSI6IlZpY2UgUHJlc2lkZW50IG9mIENvcnBvcmF0ZSBEZXZlbG9wbWVudCIsInllYXJC
b3JuIjoxOTc0LCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX1dLCJhdWRpdFJpc2siOjcsImJvYXJkUmlzayI6MSwiY29tcGVu
c2F0aW9uUmlzayI6Mywic2hhcmVIb2xkZXJSaWdodHNSaXNrIjoxLCJvdmVyYWxsUmlzayI6MSwi
Z292ZXJuYW5jZUVwb2NoRGF0ZSI6MTc2NDU0NzIwMCwiY29tcGVuc2F0aW9uQXNPZkVwb2NoRGF0
ZSI6MTczNTYwMzIwMCwiaXJXZWJzaXRlIjoiaHR0cDovL2ludmVzdG9yLmFwcGxlLmNvbS8iLCJl
eGVjdXRpdmVUZWFtIjpbXSwibWF4QWdlIjo4NjQwMH0sInN1bW1hcnlEZXRhaWwiOnsibWF4QWdl
IjoxLCJwcmljZUhpbnQiOjIsInByZXZpb3VzQ2xvc2UiOjI3My42Nywib3BlbiI6MjcyLjg2LCJk
YXlMb3ciOjI3MC41MDUsImRheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xv
c2UiOjI3My42NywicmVndWxhck1hcmtldE9wZW4iOjI3Mi44NiwicmVndWxhck1hcmtldERheUxv
dyI6MjcwLjUwNSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwiZGl2aWRlbmRSYXRlIjox
LjA0LCJkaXZpZGVuZFlpZWxkIjowLjAwMzgsImV4RGl2aWRlbmREYXRlIjoxNzYyNzMyODAwLCJw
YXlvdXRSYXRpbyI6MC4xMzY3LCJmaXZlWWVhckF2Z0RpdmlkZW5kWWllbGQiOjAuNTMsImJldGEi
OjEuMTA3LCJ0cmFpbGluZ1BFIjozNi42MTc1NywiZm9yd2FyZFBFIjoyOS42MjkyOTcsInZvbHVt
ZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJhdmVyYWdlVm9sdW1l
Ijo0NzQ0ODk2NiwiYXZlcmFnZVZvbHVtZTEwZGF5cyI6NTEwNjUwNjAsImF2ZXJhZ2VEYWlseVZv
bHVtZTEwRGF5Ijo1MTA2NTA2MCwiYmlkIjoyNzIuMCwiYXNrIjoyNzQuOTcsImJpZFNpemUiOjEw
MCwiYXNrU2l6ZSI6NDAwLCJtYXJrZXRDYXAiOjQwMjEzMDA0OTQzMzYsImZpZnR5VHdvV2Vla0xv
dyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIsImFsbFRpbWVIaWdoIjoyODguNjIs
ImFsbFRpbWVMb3ciOjAuMDQ5MTA3LCJwcmljZVRvU2FsZXNUcmFpbGluZzEyTW9udGhzIjo5LjY2
Mjg0NzUsImZpZnR5RGF5QXZlcmFnZSI6MjY5LjUxNzgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjoy
MjkuOTExOCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjEuMDIsInRyYWlsaW5nQW5udWFs
RGl2aWRlbmRZaWVsZCI6MC4wMDM3MjcxMTY0LCJjdXJyZW5jeSI6IlVTRCIsImZyb21DdXJyZW5j
eSI6bnVsbCwidG9DdXJyZW5jeSI6bnVsbCwibGFzdE1hcmtldCI6bnVsbCwiY29pbk1hcmtldENh
cExpbmsiOm51bGwsImFsZ29yaXRobSI6bnVsbCwidHJhZGVhYmxlIjpmYWxzZX0sImRlZmF1bHRL
ZXlTdGF0aXN0aWNzIjp7Im1heEFnZSI6MSwicHJpY2VIaW50IjoyLCJlbnRlcnByaXNlVmFsdWUi
OjQwNTk1NTk2MjQ3MDQsImZvcndhcmRQRSI6MjkuNjI5Mjk3LCJwcm9maXRNYXJnaW5zIjowLjI2
OTE1MDAyLCJmbG9hdFNoYXJlcyI6MTQ3NTA2NDIxNDYsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3
NjM1MzAwMCwic2hhcmVzU2hvcnQiOjEyOTQ1ODU1OSwic2hhcmVzU2hvcnRQcmlvck1vbnRoIjox
MTU1NTc4MzYsInNoYXJlc1Nob3J0UHJldmlvdXNNb250aERhdGUiOjE3NjE4Njg4MDAsImRhdGVT
aG9ydEludGVyZXN0IjoxNzY0Mjg4MDAwLCJzaGFyZXNQZXJjZW50U2hhcmVzT3V0IjowLjAwODgs
ImhlbGRQZXJjZW50SW5zaWRlcnMiOjAuMDE2OTcwMDAxLCJoZWxkUGVyY2VudEluc3RpdHV0aW9u
cyI6MC42NDQwNjk5Nywic2hvcnRSYXRpbyI6Mi42NCwic2hvcnRQZXJjZW50T2ZGbG9hdCI6MC4w
MDg4LCJiZXRhIjoxLjEwNywiaW1wbGllZFNoYXJlc091dHN0YW5kaW5nIjoxNDg0MDM5MDAwMCwi
Y2F0ZWdvcnkiOm51bGwsImJvb2tWYWx1ZSI6NC45OTEsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
ImZ1bmRGYW1pbHkiOm51bGwsImxlZ2FsVHlwZSI6bnVsbCwibGFzdEZpc2NhbFllYXJFbmQiOjE3
NTg5MzEyMDAsIm5leHRGaXNjYWxZZWFyRW5kIjoxNzkwNDY3MjAwLCJtb3N0UmVjZW50UXVhcnRl
ciI6MTc1ODkzMTIwMCwiZWFybmluZ3NRdWFydGVybHlHcm93dGgiOjAuODY0LCJuZXRJbmNvbWVU
b0NvbW1vbiI6MTEyMDEwMDAyNDMyLCJ0cmFpbGluZ0VwcyI6Ny40LCJmb3J3YXJkRXBzIjo5LjE0
NTM0LCJsYXN0U3BsaXRGYWN0b3IiOiI0OjEiLCJsYXN0U3BsaXREYXRlIjoxNTk4ODMyMDAwLCJl
bnRlcnByaXNlVG9SZXZlbnVlIjo5Ljc1NSwiZW50ZXJwcmlzZVRvRWJpdGRhIjoyOC4wNDYsIjUy
V2Vla0NoYW5nZSI6MC4wNTk5MTQ4MjcsIlNhbmRQNTJXZWVrQ2hhbmdlIjowLjEzMTUzMjE5LCJs
YXN0RGl2aWRlbmRWYWx1ZSI6MC4yNiwibGFzdERpdmlkZW5kRGF0ZSI6MTc2MjczMjgwMCwibGF0
ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwicXVvdGVUeXBlIjp7ImV4
Y2hhbmdlIjoiTk1TIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwic3ltYm9sIjoiQUFQTCIsInVuZGVy
bHlpbmdTeW1ib2wiOiJBQVBMIiwic2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoi
QXBwbGUgSW5jLiIsImZpcnN0VHJhZGVEYXRlRXBvY2hVdGMiOjM0NTQ3OTQwMCwidGltZVpvbmVG
dWxsTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJ0aW1lWm9uZVNob3J0TmFtZSI6IkVTVCIsInV1
aWQiOiI4YjEwZTRhZS05ZWViLTM2ODQtOTIxYS05YWIyN2U0ZDg3YWEiLCJtZXNzYWdlQm9hcmRJ
ZCI6ImZpbm1iXzI0OTM3IiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFn
ZSI6MX0sImZpbmFuY2lhbERhdGEiOnsibWF4QWdlIjo4NjQwMCwiY3VycmVudFByaWNlIjoyNzAu
OTcsInRhcmdldEhpZ2hQcmljZSI6MzUwLjAsInRhcmdldExvd1ByaWNlIjoyMTUuMCwidGFyZ2V0
TWVhblByaWNlIjoyODcuNzA2ODIsInRhcmdldE1lZGlhblByaWNlIjozMDAuMCwicmVjb21tZW5k
YXRpb25NZWFuIjoyLjAsInJlY29tbWVuZGF0aW9uS2V5IjoiYnV5IiwibnVtYmVyT2ZBbmFseXN0
T3BpbmlvbnMiOjQxLCJ0b3RhbENhc2giOjU0Njk3MDAwOTYwLCJ0b3RhbENhc2hQZXJTaGFyZSI6
My43MDIsImViaXRkYSI6MTQ0NzQ4MDAzMzI4LCJ0b3RhbERlYnQiOjExMjM3NzAwNDAzMiwicXVp
Y2tSYXRpbyI6MC43NzEsImN1cnJlbnRSYXRpbyI6MC44OTMsInRvdGFsUmV2ZW51ZSI6NDE2MTYx
MDA1NTY4LCJkZWJ0VG9FcXVpdHkiOjE1Mi40MTEsInJldmVudWVQZXJTaGFyZSI6MjcuODQsInJl
dHVybk9uQXNzZXRzIjowLjIyOTY0LCJyZXR1cm5PbkVxdWl0eSI6MS43MTQyMTk5LCJncm9zc1By
b2ZpdHMiOjE5NTIwMTAwNzYxNiwiZnJlZUNhc2hmbG93Ijo3ODg2MjI1NDA4MCwib3BlcmF0aW5n
Q2FzaGZsb3ciOjExMTQ4MjAwMzQ1NiwiZWFybmluZ3NHcm93dGgiOjAuOTEyLCJyZXZlbnVlR3Jv
d3RoIjowLjA3OSwiZ3Jvc3NNYXJnaW5zIjowLjQ2OTA1LCJlYml0ZGFNYXJnaW5zIjowLjM0Nzgy
LCJvcGVyYXRpbmdNYXJnaW5zIjowLjMxNjQ3LCJwcm9maXRNYXJnaW5zIjowLjI2OTE1MDAyLCJm
aW5hbmNpYWxDdXJyZW5jeSI6IlVTRCJ9fV0sImVycm9yIjpudWxsfX0=
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '3168'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '5'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJFcXVpdHkiLCJxdW90ZVNvdXJj
ZU5hbWUiOiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3Rv
bVByaWNlQWxlcnRDb25maWRlbmNlIjoiSElHSCIsIm1hcmtldFN0YXRlIjoiUE9TVFBPU1QiLCJz
aG9ydE5hbWUiOiJBcHBsZSBJbmMuIiwibG9uZ05hbWUiOiJBcHBsZSBJbmMuIiwiY3VycmVuY3ki
OiJVU0QiLCJmaXJzdFRyYWRlRGF0ZU1pbGxpc2Vjb25kcyI6MzQ1NDc5NDAwMDAwLCJwcmljZUhp
bnQiOjIsInBvc3RNYXJrZXRDaGFuZ2VQZXJjZW50IjotMC4wNzM4MTM0MTYsInBvc3RNYXJrZXRQ
cmljZSI6MjcwLjc3LCJwb3N0TWFya2V0Q2hhbmdlIjotMC4yMDAwMTIyLCJyZWd1bGFyTWFya2V0
Q2hhbmdlIjotMi43MDAwMSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwicmVndWxhck1h
cmtldERheVJhbmdlIjoiMjcwLjUwNSAtIDI3My44OCIsInJlZ3VsYXJNYXJrZXREYXlMb3ciOjI3
MC41MDUsInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJyZWd1bGFyTWFya2V0UHJldmlv
dXNDbG9zZSI6MjczLjY3LCJiaWQiOjI3Mi4wLCJhc2siOjI3NC45NywiYmlkU2l6ZSI6MSwiYXNr
U2l6ZSI6NCwiZnVsbEV4Y2hhbmdlTmFtZSI6Ik5hc2RhcUdTIiwiZmluYW5jaWFsQ3VycmVuY3ki
OiJVU0QiLCJyZWd1bGFyTWFya2V0T3BlbiI6MjcyLjg2LCJhdmVyYWdlRGFpbHlWb2x1bWUzTW9u
dGgiOjQ3NDQ4OTY2LCJhdmVyYWdlRGFpbHlWb2x1bWUxMERheSI6NTEwNjUwNjAsImZpZnR5VHdv
V2Vla0xvd0NoYW5nZSI6MTAxLjc1OTk5NSwiZmlmdHlUd29XZWVrTG93Q2hhbmdlUGVyY2VudCI6
MC42MDEzODI4NSwiZmlmdHlUd29XZWVrUmFuZ2UiOiIxNjkuMjEgLSAyODguNjIiLCJmaWZ0eVR3
b1dlZWtIaWdoQ2hhbmdlIjotMTcuNjQ5OTk0LCJmaWZ0eVR3b1dlZWtIaWdoQ2hhbmdlUGVyY2Vu
dCI6LTAuMDYxMTUzMDU0LCJmaWZ0eVR3b1dlZWtMb3ciOjE2OS4yMSwiZmlmdHlUd29XZWVrSGln
aCI6Mjg4LjYyLCJmaWZ0eVR3b1dlZWtDaGFuZ2VQZXJjZW50Ijo1Ljk5MTQ4MjcsImRpdmlkZW5k
RGF0ZSI6MTc2Mjk5MjAwMCwiZWFybmluZ3NUaW1lc3RhbXAiOjE3NjE4NTQ0MDAsImVhcm5pbmdz
VGltZXN0YW1wU3RhcnQiOjE3Njk3MjA0MDAsImVhcm5pbmdzVGltZXN0YW1wRW5kIjoxNzY5NzIw
NDAwLCJlYXJuaW5nc0NhbGxUaW1lc3RhbXBTdGFydCI6MTc2MTg1ODAwMCwiZWFybmluZ3NDYWxs
VGltZXN0YW1wRW5kIjoxNzYxODU4MDAwLCJpc0Vhcm5pbmdzRGF0ZUVzdGltYXRlIjp0cnVlLCJ0
cmFpbGluZ0FubnVhbERpdmlkZW5kUmF0ZSI6MS4wMiwidHJhaWxpbmdQRSI6MzYuNjE3NTcsImRp
dmlkZW5kUmF0ZSI6MS4wNCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFlpZWxkIjowLjAwMzcyNzEx
NjQsImRpdmlkZW5kWWllbGQiOjAuMzgsImVwc1RyYWlsaW5nVHdlbHZlTW9udGhzIjo3LjQsImVw
c0ZvcndhcmQiOjkuMTQ1MzQsImVwc0N1cnJlbnRZZWFyIjo4LjI0Mzk3LCJwcmljZUVwc0N1cnJl
bnRZZWFyIjozMi44Njg4NzQsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3NjM1MzAwMCwiYm9va1Zh
bHVlIjo0Ljk5MSwiZmlmdHlEYXlBdmVyYWdlIjoyNjkuNTE3OCwiZmlmdHlEYXlBdmVyYWdlQ2hh
bmdlIjoxLjQ1MjIwOTUsImZpZnR5RGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMDA1Mzg4MTc2
NSwidHdvSHVuZHJlZERheUF2ZXJhZ2UiOjIyOS45MTE4LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNo
YW5nZSI6NDEuMDU4MTk3LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMTc4
NTgyMzksIm1hcmtldENhcCI6NDAyMTMwMDQ5NDMzNiwiZm9yd2FyZFBFIjoyOS42MjkyOTcsInBy
aWNlVG9Cb29rIjo1NC4yOTE3MjUsInNvdXJjZUludGVydmFsIjoxNSwiZXhjaGFuZ2VEYXRhRGVs
YXllZEJ5IjowLCJhdmVyYWdlQW5hbHlzdFJhdGluZyI6IjIuMCAtIEJ1eSIsInRyYWRlYWJsZSI6
ZmFsc2UsImNyeXB0b1RyYWRlYWJsZSI6ZmFsc2UsImhhc1ByZVBvc3RNYXJrZXREYXRhIjp0cnVl
LCJjb3Jwb3JhdGVBY3Rpb25zIjpbXSwicG9zdE1hcmtldFRpbWUiOjE3NjY0NTE1OTcsInJlZ3Vs
YXJNYXJrZXRUaW1lIjoxNzY2NDM3MjA2LCJleGNoYW5nZSI6Ik5NUyIsIm1lc3NhZ2VCb2FyZElk
IjoiZmlubWJfMjQ5MzciLCJleGNoYW5nZVRpbWV6b25lTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsi
LCJleGNoYW5nZVRpbWV6b25lU2hvcnROYW1lIjoiRVNUIiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRz
IjotMTgwMDAwMDAsIm1hcmtldCI6InVzX21hcmtldCIsImVzZ1BvcHVsYXRlZCI6ZmFsc2UsInJl
Z3VsYXJNYXJrZXRDaGFuZ2VQZXJjZW50IjotMC45ODY1OTQsInJlZ3VsYXJNYXJrZXRQcmljZSI6
MjcwLjk3LCJkaXNwbGF5TmFtZSI6IkFwcGxlIiwic3ltYm9sIjoiQUFQTCJ9XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1154'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '5'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/AAPL?symbol=AAPL&type=trailingPegRatio&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
encoding: utf-8
string: !!binary |
eyJ0aW1lc2VyaWVzIjp7InJlc3VsdCI6W3sibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbInRyYWlsaW5nUGVnUmF0aW8iXX0sInRpbWVzdGFtcCI6WzE3NTkzNjMyMDAsMTc2NjEwMjQw
MF0sInRyYWlsaW5nUGVnUmF0aW8iOlt7ImRhdGFJZCI6MTQwMjEsImFzT2ZEYXRlIjoiMjAyNS0x
MC0wMiIsInBlcmlvZFR5cGUiOiJUVE0iLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi40NjYyLCJm
bXQiOiIyLjQ3In19LHsiZGF0YUlkIjoxNDAyMSwiYXNPZkRhdGUiOiIyMDI1LTEyLTE5IiwicGVy
aW9kVHlwZSI6IlRUTSIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjc2OTUsImZtdCI6IjIuNzci
fX1dfV0sImVycm9yIjpudWxsfX0=
headers:
age: '1'
cache-control: public, max-age=60, stale-while-revalidate=30
content-length: '362'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:20 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '2'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,250 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsiYWRkcmVzczEiOiJP
bmUgQXBwbGUgUGFyayBXYXkiLCJjaXR5IjoiQ3VwZXJ0aW5vIiwic3RhdGUiOiJDQSIsInppcCI6
Ijk1MDE0IiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJwaG9uZSI6Iig0MDgpIDk5Ni0xMDEw
Iiwid2Vic2l0ZSI6Imh0dHBzOi8vd3d3LmFwcGxlLmNvbSIsImluZHVzdHJ5IjoiQ29uc3VtZXIg
RWxlY3Ryb25pY3MiLCJpbmR1c3RyeUtleSI6ImNvbnN1bWVyLWVsZWN0cm9uaWNzIiwiaW5kdXN0
cnlEaXNwIjoiQ29uc3VtZXIgRWxlY3Ryb25pY3MiLCJzZWN0b3IiOiJUZWNobm9sb2d5Iiwic2Vj
dG9yS2V5IjoidGVjaG5vbG9neSIsInNlY3RvckRpc3AiOiJUZWNobm9sb2d5IiwibG9uZ0J1c2lu
ZXNzU3VtbWFyeSI6IkFwcGxlIEluYy4gZGVzaWducywgbWFudWZhY3R1cmVzLCBhbmQgbWFya2V0
cyBzbWFydHBob25lcywgcGVyc29uYWwgY29tcHV0ZXJzLCB0YWJsZXRzLCB3ZWFyYWJsZXMsIGFu
ZCBhY2Nlc3NvcmllcyB3b3JsZHdpZGUuIFRoZSBjb21wYW55IG9mZmVycyBpUGhvbmUsIGEgbGlu
ZSBvZiBzbWFydHBob25lczsgTWFjLCBhIGxpbmUgb2YgcGVyc29uYWwgY29tcHV0ZXJzOyBpUGFk
LCBhIGxpbmUgb2YgbXVsdGktcHVycG9zZSB0YWJsZXRzOyBhbmQgd2VhcmFibGVzLCBob21lLCBh
bmQgYWNjZXNzb3JpZXMgY29tcHJpc2luZyBBaXJQb2RzLCBBcHBsZSBWaXNpb24gUHJvLCBBcHBs
ZSBUViwgQXBwbGUgV2F0Y2gsIEJlYXRzIHByb2R1Y3RzLCBhbmQgSG9tZVBvZCwgYXMgd2VsbCBh
cyBBcHBsZSBicmFuZGVkIGFuZCB0aGlyZC1wYXJ0eSBhY2Nlc3Nvcmllcy4gSXQgYWxzbyBwcm92
aWRlcyBBcHBsZUNhcmUgc3VwcG9ydCBhbmQgY2xvdWQgc2VydmljZXM7IGFuZCBvcGVyYXRlcyB2
YXJpb3VzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHRoZSBBcHAgU3RvcmUgdGhhdCBhbGxvdyBjdXN0
b21lcnMgdG8gZGlzY292ZXIgYW5kIGRvd25sb2FkIGFwcGxpY2F0aW9ucyBhbmQgZGlnaXRhbCBj
b250ZW50LCBzdWNoIGFzIGJvb2tzLCBtdXNpYywgdmlkZW8sIGdhbWVzLCBhbmQgcG9kY2FzdHMs
IGFzIHdlbGwgYXMgYWR2ZXJ0aXNpbmcgc2VydmljZXMgaW5jbHVkZSB0aGlyZC1wYXJ0eSBsaWNl
bnNpbmcgYXJyYW5nZW1lbnRzIGFuZCBpdHMgb3duIGFkdmVydGlzaW5nIHBsYXRmb3Jtcy4gSW4g
YWRkaXRpb24sIHRoZSBjb21wYW55IG9mZmVycyB2YXJpb3VzIHN1YnNjcmlwdGlvbi1iYXNlZCBz
ZXJ2aWNlcywgc3VjaCBhcyBBcHBsZSBBcmNhZGUsIGEgZ2FtZSBzdWJzY3JpcHRpb24gc2Vydmlj
ZTsgQXBwbGUgRml0bmVzcyssIGEgcGVyc29uYWxpemVkIGZpdG5lc3Mgc2VydmljZTsgQXBwbGUg
TXVzaWMsIHdoaWNoIG9mZmVycyB1c2VycyBhIGN1cmF0ZWQgbGlzdGVuaW5nIGV4cGVyaWVuY2Ug
d2l0aCBvbi1kZW1hbmQgcmFkaW8gc3RhdGlvbnM7IEFwcGxlIE5ld3MrLCBhIHN1YnNjcmlwdGlv
biBuZXdzIGFuZCBtYWdhemluZSBzZXJ2aWNlOyBBcHBsZSBUViwgd2hpY2ggb2ZmZXJzIGV4Y2x1
c2l2ZSBvcmlnaW5hbCBjb250ZW50IGFuZCBsaXZlIHNwb3J0czsgQXBwbGUgQ2FyZCwgYSBjby1i
cmFuZGVkIGNyZWRpdCBjYXJkOyBhbmQgQXBwbGUgUGF5LCBhIGNhc2hsZXNzIHBheW1lbnQgc2Vy
dmljZSwgYXMgd2VsbCBhcyBsaWNlbnNlcyBpdHMgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBUaGUg
Y29tcGFueSBzZXJ2ZXMgY29uc3VtZXJzLCBhbmQgc21hbGwgYW5kIG1pZC1zaXplZCBidXNpbmVz
c2VzOyBhbmQgdGhlIGVkdWNhdGlvbiwgZW50ZXJwcmlzZSwgYW5kIGdvdmVybm1lbnQgbWFya2V0
cy4gSXQgZGlzdHJpYnV0ZXMgdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIGZvciBpdHMgcHJvZHVj
dHMgdGhyb3VnaCB0aGUgQXBwIFN0b3JlLiBUaGUgY29tcGFueSBhbHNvIHNlbGxzIGl0cyBwcm9k
dWN0cyB0aHJvdWdoIGl0cyByZXRhaWwgYW5kIG9ubGluZSBzdG9yZXMsIGFuZCBkaXJlY3Qgc2Fs
ZXMgZm9yY2U7IGFuZCB0aGlyZC1wYXJ0eSBjZWxsdWxhciBuZXR3b3JrIGNhcnJpZXJzIGFuZCBy
ZXNlbGxlcnMuIFRoZSBjb21wYW55IHdhcyBmb3JtZXJseSBrbm93biBhcyBBcHBsZSBDb21wdXRl
ciwgSW5jLiBhbmQgY2hhbmdlZCBpdHMgbmFtZSB0byBBcHBsZSBJbmMuIGluIEphbnVhcnkgMjAw
Ny4gQXBwbGUgSW5jLiB3YXMgZm91bmRlZCBpbiAxOTc2IGFuZCBpcyBoZWFkcXVhcnRlcmVkIGlu
IEN1cGVydGlubywgQ2FsaWZvcm5pYS4iLCJmdWxsVGltZUVtcGxveWVlcyI6MTY2MDAwLCJjb21w
YW55T2ZmaWNlcnMiOlt7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBUaW1vdGh5IEQuIENvb2siLCJh
Z2UiOjYzLCJ0aXRsZSI6IkNFTyAmIERpcmVjdG9yIiwieWVhckJvcm4iOjE5NjEsImZpc2NhbFll
YXIiOjIwMjQsInRvdGFsUGF5Ijp7InJhdyI6MTY1MjA4NTYsImZtdCI6IjE2LjUyTSIsImxvbmdG
bXQiOiIxNiw1MjAsODU2In0sImV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJs
b25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25n
Rm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1zLiBLYXRoZXJpbmUgTC4gQWRhbXMiLCJh
Z2UiOjYwLCJ0aXRsZSI6IlNlbmlvciBWUCAmIEdlbmVyYWwgQ291bnNlbCIsInllYXJCb3JuIjox
OTY0LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJyYXciOjUwMjIxODIsImZtdCI6IjUu
MDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gRGVpcmRyZSAgTydC
cmllbiIsImFnZSI6NTcsInRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFJldGFpbCAm
IFBlb3BsZSIsInllYXJCb3JuIjoxOTY3LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJy
YXciOjUwMjIxODIsImZtdCI6IjUuMDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lz
ZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJNci4gS2V2YW4gIFBhcmVraCIsImFnZSI6NTIsInRpdGxlIjoiU2VuaW9yIFZQICYgQ0ZP
IiwieWVhckJvcm4iOjE5NzIsImZpc2NhbFllYXIiOjIwMjQsImV4ZXJjaXNlZFZhbHVlIjp7InJh
dyI6MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6
MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBTYWJp
aCAgS2hhbiIsInRpdGxlIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJmaXNjYWxZZWFyIjoy
MDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwi
dW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJt
YXhBZ2UiOjEsIm5hbWUiOiJNci4gQ2hyaXMgIEtvbmRvIiwidGl0bGUiOiJTZW5pb3IgRGlyZWN0
b3Igb2YgQ29ycG9yYXRlIEFjY291bnRpbmciLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJTdWhhc2luaSAgQ2hhbmRyYW1vdWxpIiwidGl0bGUiOiJEaXJlY3RvciBvZiBJbnZlc3RvciBS
ZWxhdGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gS3Jpc3RpbiBIdWd1
ZXQgUXVheWxlIiwidGl0bGUiOiJWaWNlIFByZXNpZGVudCBvZiBXb3JsZHdpZGUgQ29tbXVuaWNh
dGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVs
bCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gR3JlZyAgSm9zd2lhayIs
InRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFdvcmxkd2lkZSBNYXJrZXRpbmciLCJm
aXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9u
Z0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gQWRyaWFuICBQZXJpY2EiLCJhZ2UiOjUw
LCJ0aXRsZSI6IlZpY2UgUHJlc2lkZW50IG9mIENvcnBvcmF0ZSBEZXZlbG9wbWVudCIsInllYXJC
b3JuIjoxOTc0LCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX1dLCJhdWRpdFJpc2siOjcsImJvYXJkUmlzayI6MSwiY29tcGVu
c2F0aW9uUmlzayI6Mywic2hhcmVIb2xkZXJSaWdodHNSaXNrIjoxLCJvdmVyYWxsUmlzayI6MSwi
Z292ZXJuYW5jZUVwb2NoRGF0ZSI6MTc2NDU0NzIwMCwiY29tcGVuc2F0aW9uQXNPZkVwb2NoRGF0
ZSI6MTczNTYwMzIwMCwiaXJXZWJzaXRlIjoiaHR0cDovL2ludmVzdG9yLmFwcGxlLmNvbS8iLCJl
eGVjdXRpdmVUZWFtIjpbXSwibWF4QWdlIjo4NjQwMH0sInN1bW1hcnlEZXRhaWwiOnsibWF4QWdl
IjoxLCJwcmljZUhpbnQiOjIsInByZXZpb3VzQ2xvc2UiOjI3My42Nywib3BlbiI6MjcyLjg2LCJk
YXlMb3ciOjI3MC41MDUsImRheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xv
c2UiOjI3My42NywicmVndWxhck1hcmtldE9wZW4iOjI3Mi44NiwicmVndWxhck1hcmtldERheUxv
dyI6MjcwLjUwNSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwiZGl2aWRlbmRSYXRlIjox
LjA0LCJkaXZpZGVuZFlpZWxkIjowLjAwMzgsImV4RGl2aWRlbmREYXRlIjoxNzYyNzMyODAwLCJw
YXlvdXRSYXRpbyI6MC4xMzY3LCJmaXZlWWVhckF2Z0RpdmlkZW5kWWllbGQiOjAuNTMsImJldGEi
OjEuMTA3LCJ0cmFpbGluZ1BFIjozNi42MTc1NywiZm9yd2FyZFBFIjoyOS42MjkyOTcsInZvbHVt
ZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJhdmVyYWdlVm9sdW1l
Ijo0NzQ0ODk2NiwiYXZlcmFnZVZvbHVtZTEwZGF5cyI6NTEwNjUwNjAsImF2ZXJhZ2VEYWlseVZv
bHVtZTEwRGF5Ijo1MTA2NTA2MCwiYmlkIjoyNzIuMCwiYXNrIjoyNzQuOTcsImJpZFNpemUiOjEw
MCwiYXNrU2l6ZSI6NDAwLCJtYXJrZXRDYXAiOjQwMjEzMDA0OTQzMzYsImZpZnR5VHdvV2Vla0xv
dyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIsImFsbFRpbWVIaWdoIjoyODguNjIs
ImFsbFRpbWVMb3ciOjAuMDQ5MTA3LCJwcmljZVRvU2FsZXNUcmFpbGluZzEyTW9udGhzIjo5LjY2
Mjg0NzUsImZpZnR5RGF5QXZlcmFnZSI6MjY5LjUxNzgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjoy
MjkuOTExOCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjEuMDIsInRyYWlsaW5nQW5udWFs
RGl2aWRlbmRZaWVsZCI6MC4wMDM3MjcxMTY0LCJjdXJyZW5jeSI6IlVTRCIsImZyb21DdXJyZW5j
eSI6bnVsbCwidG9DdXJyZW5jeSI6bnVsbCwibGFzdE1hcmtldCI6bnVsbCwiY29pbk1hcmtldENh
cExpbmsiOm51bGwsImFsZ29yaXRobSI6bnVsbCwidHJhZGVhYmxlIjpmYWxzZX0sImRlZmF1bHRL
ZXlTdGF0aXN0aWNzIjp7Im1heEFnZSI6MSwicHJpY2VIaW50IjoyLCJlbnRlcnByaXNlVmFsdWUi
OjQwNTk1NTk2MjQ3MDQsImZvcndhcmRQRSI6MjkuNjI5Mjk3LCJwcm9maXRNYXJnaW5zIjowLjI2
OTE1MDAyLCJmbG9hdFNoYXJlcyI6MTQ3NTA2NDIxNDYsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3
NjM1MzAwMCwic2hhcmVzU2hvcnQiOjEyOTQ1ODU1OSwic2hhcmVzU2hvcnRQcmlvck1vbnRoIjox
MTU1NTc4MzYsInNoYXJlc1Nob3J0UHJldmlvdXNNb250aERhdGUiOjE3NjE4Njg4MDAsImRhdGVT
aG9ydEludGVyZXN0IjoxNzY0Mjg4MDAwLCJzaGFyZXNQZXJjZW50U2hhcmVzT3V0IjowLjAwODgs
ImhlbGRQZXJjZW50SW5zaWRlcnMiOjAuMDE2OTcwMDAxLCJoZWxkUGVyY2VudEluc3RpdHV0aW9u
cyI6MC42NDQwNjk5Nywic2hvcnRSYXRpbyI6Mi42NCwic2hvcnRQZXJjZW50T2ZGbG9hdCI6MC4w
MDg4LCJiZXRhIjoxLjEwNywiaW1wbGllZFNoYXJlc091dHN0YW5kaW5nIjoxNDg0MDM5MDAwMCwi
Y2F0ZWdvcnkiOm51bGwsImJvb2tWYWx1ZSI6NC45OTEsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
ImZ1bmRGYW1pbHkiOm51bGwsImxlZ2FsVHlwZSI6bnVsbCwibGFzdEZpc2NhbFllYXJFbmQiOjE3
NTg5MzEyMDAsIm5leHRGaXNjYWxZZWFyRW5kIjoxNzkwNDY3MjAwLCJtb3N0UmVjZW50UXVhcnRl
ciI6MTc1ODkzMTIwMCwiZWFybmluZ3NRdWFydGVybHlHcm93dGgiOjAuODY0LCJuZXRJbmNvbWVU
b0NvbW1vbiI6MTEyMDEwMDAyNDMyLCJ0cmFpbGluZ0VwcyI6Ny40LCJmb3J3YXJkRXBzIjo5LjE0
NTM0LCJsYXN0U3BsaXRGYWN0b3IiOiI0OjEiLCJsYXN0U3BsaXREYXRlIjoxNTk4ODMyMDAwLCJl
bnRlcnByaXNlVG9SZXZlbnVlIjo5Ljc1NSwiZW50ZXJwcmlzZVRvRWJpdGRhIjoyOC4wNDYsIjUy
V2Vla0NoYW5nZSI6MC4wNTk5MTQ4MjcsIlNhbmRQNTJXZWVrQ2hhbmdlIjowLjEzMTUzMjE5LCJs
YXN0RGl2aWRlbmRWYWx1ZSI6MC4yNiwibGFzdERpdmlkZW5kRGF0ZSI6MTc2MjczMjgwMCwibGF0
ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwicXVvdGVUeXBlIjp7ImV4
Y2hhbmdlIjoiTk1TIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwic3ltYm9sIjoiQUFQTCIsInVuZGVy
bHlpbmdTeW1ib2wiOiJBQVBMIiwic2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoi
QXBwbGUgSW5jLiIsImZpcnN0VHJhZGVEYXRlRXBvY2hVdGMiOjM0NTQ3OTQwMCwidGltZVpvbmVG
dWxsTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJ0aW1lWm9uZVNob3J0TmFtZSI6IkVTVCIsInV1
aWQiOiI4YjEwZTRhZS05ZWViLTM2ODQtOTIxYS05YWIyN2U0ZDg3YWEiLCJtZXNzYWdlQm9hcmRJ
ZCI6ImZpbm1iXzI0OTM3IiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFn
ZSI6MX0sImZpbmFuY2lhbERhdGEiOnsibWF4QWdlIjo4NjQwMCwiY3VycmVudFByaWNlIjoyNzAu
OTcsInRhcmdldEhpZ2hQcmljZSI6MzUwLjAsInRhcmdldExvd1ByaWNlIjoyMTUuMCwidGFyZ2V0
TWVhblByaWNlIjoyODcuNzA2ODIsInRhcmdldE1lZGlhblByaWNlIjozMDAuMCwicmVjb21tZW5k
YXRpb25NZWFuIjoyLjAsInJlY29tbWVuZGF0aW9uS2V5IjoiYnV5IiwibnVtYmVyT2ZBbmFseXN0
T3BpbmlvbnMiOjQxLCJ0b3RhbENhc2giOjU0Njk3MDAwOTYwLCJ0b3RhbENhc2hQZXJTaGFyZSI6
My43MDIsImViaXRkYSI6MTQ0NzQ4MDAzMzI4LCJ0b3RhbERlYnQiOjExMjM3NzAwNDAzMiwicXVp
Y2tSYXRpbyI6MC43NzEsImN1cnJlbnRSYXRpbyI6MC44OTMsInRvdGFsUmV2ZW51ZSI6NDE2MTYx
MDA1NTY4LCJkZWJ0VG9FcXVpdHkiOjE1Mi40MTEsInJldmVudWVQZXJTaGFyZSI6MjcuODQsInJl
dHVybk9uQXNzZXRzIjowLjIyOTY0LCJyZXR1cm5PbkVxdWl0eSI6MS43MTQyMTk5LCJncm9zc1By
b2ZpdHMiOjE5NTIwMTAwNzYxNiwiZnJlZUNhc2hmbG93Ijo3ODg2MjI1NDA4MCwib3BlcmF0aW5n
Q2FzaGZsb3ciOjExMTQ4MjAwMzQ1NiwiZWFybmluZ3NHcm93dGgiOjAuOTEyLCJyZXZlbnVlR3Jv
d3RoIjowLjA3OSwiZ3Jvc3NNYXJnaW5zIjowLjQ2OTA1LCJlYml0ZGFNYXJnaW5zIjowLjM0Nzgy
LCJvcGVyYXRpbmdNYXJnaW5zIjowLjMxNjQ3LCJwcm9maXRNYXJnaW5zIjowLjI2OTE1MDAyLCJm
aW5hbmNpYWxDdXJyZW5jeSI6IlVTRCJ9fV0sImVycm9yIjpudWxsfX0=
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '3168'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '7'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJFcXVpdHkiLCJxdW90ZVNvdXJj
ZU5hbWUiOiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3Rv
bVByaWNlQWxlcnRDb25maWRlbmNlIjoiSElHSCIsImN1cnJlbmN5IjoiVVNEIiwiaGFzUHJlUG9z
dE1hcmtldERhdGEiOnRydWUsImZpcnN0VHJhZGVEYXRlTWlsbGlzZWNvbmRzIjozNDU0Nzk0MDAw
MDAsInByaWNlSGludCI6MiwicG9zdE1hcmtldENoYW5nZVBlcmNlbnQiOi0wLjA3MzgxMzQxNiwi
c2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoiQXBwbGUgSW5jLiIsInBvc3RNYXJr
ZXRQcmljZSI6MjcwLjc3LCJwb3N0TWFya2V0Q2hhbmdlIjotMC4yMDAwMTIyLCJyZWd1bGFyTWFy
a2V0Q2hhbmdlIjotMi43MDAwMSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwicmVndWxh
ck1hcmtldERheVJhbmdlIjoiMjcwLjUwNSAtIDI3My44OCIsInJlZ3VsYXJNYXJrZXREYXlMb3ci
OjI3MC41MDUsInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJyZWd1bGFyTWFya2V0UHJl
dmlvdXNDbG9zZSI6MjczLjY3LCJiaWQiOjI3Mi4wLCJhc2siOjI3NC45NywiYmlkU2l6ZSI6MSwi
YXNrU2l6ZSI6NCwiZnVsbEV4Y2hhbmdlTmFtZSI6Ik5hc2RhcUdTIiwiZmluYW5jaWFsQ3VycmVu
Y3kiOiJVU0QiLCJyZWd1bGFyTWFya2V0T3BlbiI6MjcyLjg2LCJhdmVyYWdlRGFpbHlWb2x1bWUz
TW9udGgiOjQ3NDQ4OTY2LCJhdmVyYWdlRGFpbHlWb2x1bWUxMERheSI6NTEwNjUwNjAsImZpZnR5
VHdvV2Vla0xvd0NoYW5nZSI6MTAxLjc1OTk5NSwiZmlmdHlUd29XZWVrTG93Q2hhbmdlUGVyY2Vu
dCI6MC42MDEzODI4NSwiZmlmdHlUd29XZWVrUmFuZ2UiOiIxNjkuMjEgLSAyODguNjIiLCJmaWZ0
eVR3b1dlZWtIaWdoQ2hhbmdlIjotMTcuNjQ5OTk0LCJmaWZ0eVR3b1dlZWtIaWdoQ2hhbmdlUGVy
Y2VudCI6LTAuMDYxMTUzMDU0LCJmaWZ0eVR3b1dlZWtMb3ciOjE2OS4yMSwiZmlmdHlUd29XZWVr
SGlnaCI6Mjg4LjYyLCJmaWZ0eVR3b1dlZWtDaGFuZ2VQZXJjZW50Ijo1Ljk5MTQ4MjcsImRpdmlk
ZW5kRGF0ZSI6MTc2Mjk5MjAwMCwiZWFybmluZ3NUaW1lc3RhbXAiOjE3NjE4NTQ0MDAsImVhcm5p
bmdzVGltZXN0YW1wU3RhcnQiOjE3Njk3MjA0MDAsImVhcm5pbmdzVGltZXN0YW1wRW5kIjoxNzY5
NzIwNDAwLCJlYXJuaW5nc0NhbGxUaW1lc3RhbXBTdGFydCI6MTc2MTg1ODAwMCwiZWFybmluZ3ND
YWxsVGltZXN0YW1wRW5kIjoxNzYxODU4MDAwLCJpc0Vhcm5pbmdzRGF0ZUVzdGltYXRlIjp0cnVl
LCJ0cmFpbGluZ0FubnVhbERpdmlkZW5kUmF0ZSI6MS4wMiwidHJhaWxpbmdQRSI6MzYuNjE3NTcs
ImRpdmlkZW5kUmF0ZSI6MS4wNCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFlpZWxkIjowLjAwMzcy
NzExNjQsImRpdmlkZW5kWWllbGQiOjAuMzgsImVwc1RyYWlsaW5nVHdlbHZlTW9udGhzIjo3LjQs
ImVwc0ZvcndhcmQiOjkuMTQ1MzQsImVwc0N1cnJlbnRZZWFyIjo4LjI0Mzk3LCJwcmljZUVwc0N1
cnJlbnRZZWFyIjozMi44Njg4NzQsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3NjM1MzAwMCwiYm9v
a1ZhbHVlIjo0Ljk5MSwiZmlmdHlEYXlBdmVyYWdlIjoyNjkuNTE3OCwiZmlmdHlEYXlBdmVyYWdl
Q2hhbmdlIjoxLjQ1MjIwOTUsImZpZnR5RGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMDA1Mzg4
MTc2NSwidHdvSHVuZHJlZERheUF2ZXJhZ2UiOjIyOS45MTE4LCJ0d29IdW5kcmVkRGF5QXZlcmFn
ZUNoYW5nZSI6NDEuMDU4MTk3LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAu
MTc4NTgyMzksIm1hcmtldENhcCI6NDAyMTMwMDQ5NDMzNiwiZm9yd2FyZFBFIjoyOS42MjkyOTcs
InByaWNlVG9Cb29rIjo1NC4yOTE3MjUsInNvdXJjZUludGVydmFsIjoxNSwiZXhjaGFuZ2VEYXRh
RGVsYXllZEJ5IjowLCJhdmVyYWdlQW5hbHlzdFJhdGluZyI6IjIuMCAtIEJ1eSIsInRyYWRlYWJs
ZSI6ZmFsc2UsImNyeXB0b1RyYWRlYWJsZSI6ZmFsc2UsIm1hcmtldFN0YXRlIjoiUE9TVFBPU1Qi
LCJleGNoYW5nZSI6Ik5NUyIsIm1lc3NhZ2VCb2FyZElkIjoiZmlubWJfMjQ5MzciLCJleGNoYW5n
ZVRpbWV6b25lTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJleGNoYW5nZVRpbWV6b25lU2hvcnRO
YW1lIjoiRVNUIiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1hcmtldCI6InVz
X21hcmtldCIsImVzZ1BvcHVsYXRlZCI6ZmFsc2UsInJlZ3VsYXJNYXJrZXRDaGFuZ2VQZXJjZW50
IjotMC45ODY1OTQsInJlZ3VsYXJNYXJrZXRQcmljZSI6MjcwLjk3LCJjb3Jwb3JhdGVBY3Rpb25z
IjpbXSwicG9zdE1hcmtldFRpbWUiOjE3NjY0NTE1OTcsInJlZ3VsYXJNYXJrZXRUaW1lIjoxNzY2
NDM3MjA2LCJkaXNwbGF5TmFtZSI6IkFwcGxlIiwic3ltYm9sIjoiQUFQTCJ9XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1154'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '3'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,152 +0,0 @@
interactions:
- request:
body:
offset: 0
query:
operands:
- operands:
- region
- us
operator: EQ
- operands:
- sector
- Consumer Cyclical
operator: EQ
- operands:
- industry
- Auto Manufacturers
operator: EQ
- operands:
- intradaymarketcap
- 60000000000
operator: gt
- operands:
- intradayprice
- 10.0
operator: gt
- operands:
- dayvolume
- 5000000
operator: gt
operator: AND
quoteType: EQUITY
size: 100
sortField: percentchange
sortType: DESC
userId: ''
userIdType: guid
headers: {}
method: POST
uri: https://query2.finance.yahoo.com/v1/finance/screener
response:
body:
encoding: utf-8
string: !!binary |
eyJmaW5hbmNlIjp7InJlc3VsdCI6W3sic3RhcnQiOjAsImNvdW50IjoyLCJ0b3RhbCI6MiwicXVv
dGVzIjpbeyJsYW5ndWFnZSI6ImVuLVVTIiwicmVnaW9uIjoiVVMiLCJxdW90ZVR5cGUiOiJFUVVJ
VFkiLCJ0eXBlRGlzcCI6IkVxdWl0eSIsInF1b3RlU291cmNlTmFtZSI6Ik5hc2RhcSBSZWFsIFRp
bWUgUHJpY2UiLCJ0cmlnZ2VyYWJsZSI6dHJ1ZSwiY3VzdG9tUHJpY2VBbGVydENvbmZpZGVuY2Ui
OiJISUdIIiwiY3VycmVuY3kiOiJVU0QiLCJyZWd1bGFyTWFya2V0Q2hhbmdlUGVyY2VudCI6MS41
NjQ4NCwiaGFzUHJlUG9zdE1hcmtldERhdGEiOnRydWUsImZpcnN0VHJhZGVEYXRlTWlsbGlzZWNv
bmRzIjoxMjc3ODE4MjAwMDAwLCJwcmljZUhpbnQiOjIsInBvc3RNYXJrZXRDaGFuZ2VQZXJjZW50
IjowLjI1NzgwNjgsInBvc3RNYXJrZXRUaW1lIjoxNzY2NDUxNTk4LCJwb3N0TWFya2V0UHJpY2Ui
OjQ4OS45OSwicG9zdE1hcmtldENoYW5nZSI6MS4yNTk5NzkyLCJyZWd1bGFyTWFya2V0Q2hhbmdl
Ijo3LjUzLCJyZWd1bGFyTWFya2V0VGltZSI6MTc2NjQzNzIwMSwicmVndWxhck1hcmtldFByaWNl
Ijo0ODguNzMsInJlZ3VsYXJNYXJrZXREYXlIaWdoIjo0OTguODIsInJlZ3VsYXJNYXJrZXREYXlS
YW5nZSI6IjQ4NS4zMyAtIDQ5OC44MiIsInJlZ3VsYXJNYXJrZXREYXlMb3ciOjQ4NS4zMywicmVn
dWxhck1hcmtldFZvbHVtZSI6ODY1NTUwMDAsInJlZ3VsYXJNYXJrZXRQcmV2aW91c0Nsb3NlIjo0
ODEuMiwiYmlkU2l6ZSI6MiwiYXNrU2l6ZSI6MSwibWFya2V0IjoidXNfbWFya2V0IiwibWVzc2Fn
ZUJvYXJkSWQiOiJmaW5tYl8yNzQ0NDc1MiIsImZ1bGxFeGNoYW5nZU5hbWUiOiJOYXNkYXFHUyIs
ImxvbmdOYW1lIjoiVGVzbGEsIEluYy4iLCJyZWd1bGFyTWFya2V0T3BlbiI6NDg5Ljg4LCJhdmVy
YWdlRGFpbHlWb2x1bWUzTW9udGgiOjg1ODM1NTg4LCJhdmVyYWdlRGFpbHlWb2x1bWUxMERheSI6
ODczMzAyMjAsImNvcnBvcmF0ZUFjdGlvbnMiOltdLCJmaWZ0eVR3b1dlZWtMb3dDaGFuZ2UiOjI3
NC40OCwiZmlmdHlUd29XZWVrTG93Q2hhbmdlUGVyY2VudCI6MS4yODExMjAyLCJmaWZ0eVR3b1dl
ZWtSYW5nZSI6IjIxNC4yNSAtIDQ5OC44MiIsImZpZnR5VHdvV2Vla0hpZ2hDaGFuZ2UiOi0xMC4w
ODk5OTYsImZpZnR5VHdvV2Vla0hpZ2hDaGFuZ2VQZXJjZW50IjotMC4wMjAyMjc3MywiZmlmdHlU
d29XZWVrQ2hhbmdlUGVyY2VudCI6NC4wOTI3NTMsImVhcm5pbmdzVGltZXN0YW1wIjoxNzYxMTYz
MjAwLCJlYXJuaW5nc1RpbWVzdGFtcFN0YXJ0IjoxNzY5NjM0MDAwLCJlYXJuaW5nc1RpbWVzdGFt
cEVuZCI6MTc2OTYzNDAwMCwiZWFybmluZ3NDYWxsVGltZXN0YW1wU3RhcnQiOjE3NjExNjg2MDAs
ImVhcm5pbmdzQ2FsbFRpbWVzdGFtcEVuZCI6MTc2MTE2ODYwMCwiaXNFYXJuaW5nc0RhdGVFc3Rp
bWF0ZSI6dHJ1ZSwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjAuMCwidHJhaWxpbmdQRSI6
MzMyLjQ2OTQsInRyYWlsaW5nQW5udWFsRGl2aWRlbmRZaWVsZCI6MC4wLCJtYXJrZXRTdGF0ZSI6
IlBPU1RQT1NUIiwiZXBzVHJhaWxpbmdUd2VsdmVNb250aHMiOjEuNDcsImVwc0ZvcndhcmQiOjIu
MjI4NjksImVwc0N1cnJlbnRZZWFyIjoxLjY0NzE2LCJwcmljZUVwc0N1cnJlbnRZZWFyIjoyOTYu
NzEwNywic2hhcmVzT3V0c3RhbmRpbmciOjMzMjU4MTkxNjcsImJvb2tWYWx1ZSI6MjQuMDU4LCJm
aWZ0eURheUF2ZXJhZ2UiOjQzOS43MTQ2LCJmaWZ0eURheUF2ZXJhZ2VDaGFuZ2UiOjQ5LjAxNTQx
LCJmaWZ0eURheUF2ZXJhZ2VDaGFuZ2VQZXJjZW50IjowLjExMTQ3MDk3LCJ0d29IdW5kcmVkRGF5
QXZlcmFnZSI6MzUxLjEwNDc0LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZSI6MTM3LjYyNTI3
LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMzkxOTc3ODUsImZvcndhcmRQ
RSI6MjE5LjI5MDI3LCJwcmljZVRvQm9vayI6MjAuMzE0NjU1LCJzb3VyY2VJbnRlcnZhbCI6MTUs
ImV4Y2hhbmdlRGF0YURlbGF5ZWRCeSI6MCwiZXhjaGFuZ2VUaW1lem9uZU5hbWUiOiJBbWVyaWNh
L05ld19Zb3JrIiwiZXhjaGFuZ2VUaW1lem9uZVNob3J0TmFtZSI6IkVTVCIsImdtdE9mZlNldE1p
bGxpc2Vjb25kcyI6LTE4MDAwMDAwLCJlc2dQb3B1bGF0ZWQiOmZhbHNlLCJ0cmFkZWFibGUiOmZh
bHNlLCJjcnlwdG9UcmFkZWFibGUiOmZhbHNlLCJleGNoYW5nZSI6Ik5NUyIsImFzayI6NDcwLjEs
Im1hcmtldENhcCI6MTYyNTQyNzY3MzA4OCwiYmlkIjo0NjkuNjYsImZpZnR5VHdvV2Vla0hpZ2gi
OjQ5OC44MiwiZmlmdHlUd29XZWVrTG93IjoyMTQuMjUsImF2ZXJhZ2VBbmFseXN0UmF0aW5nIjoi
Mi42IC0gSG9sZCIsImZpbmFuY2lhbEN1cnJlbmN5IjoiVVNEIiwic2hvcnROYW1lIjoiVGVzbGEs
IEluYy4iLCJkaXNwbGF5TmFtZSI6IlRlc2xhIiwic3ltYm9sIjoiVFNMQSJ9LHsibGFuZ3VhZ2Ui
OiJlbi1VUyIsInJlZ2lvbiI6IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJF
cXVpdHkiLCJxdW90ZVNvdXJjZU5hbWUiOiJEZWxheWVkIFF1b3RlIiwidHJpZ2dlcmFibGUiOmZh
bHNlLCJjdXN0b21QcmljZUFsZXJ0Q29uZmlkZW5jZSI6IkxPVyIsImN1cnJlbmN5IjoiVVNEIiwi
cmVndWxhck1hcmtldENoYW5nZVBlcmNlbnQiOjAuODI1NzQ0LCJoYXNQcmVQb3N0TWFya2V0RGF0
YSI6dHJ1ZSwiZmlyc3RUcmFkZURhdGVNaWxsaXNlY29uZHMiOjEyOTAwOTA2MDAwMDAsInByaWNl
SGludCI6MiwicG9zdE1hcmtldENoYW5nZVBlcmNlbnQiOjAuMTQ0NTI5MzksInBvc3RNYXJrZXRU
aW1lIjoxNzY2NDUxNTc1LCJwb3N0TWFya2V0UHJpY2UiOjgzLjE1LCJwb3N0TWFya2V0Q2hhbmdl
IjowLjEyMDAwMjc1LCJyZWd1bGFyTWFya2V0Q2hhbmdlIjowLjY4LCJyZWd1bGFyTWFya2V0VGlt
ZSI6MTc2NjQzNzIwMiwicmVndWxhck1hcmtldFByaWNlIjo4My4wMywicmVndWxhck1hcmtldERh
eUhpZ2giOjgzLjY4LCJyZWd1bGFyTWFya2V0RGF5UmFuZ2UiOiI4Mi41ODEyIC0gODMuNjgiLCJy
ZWd1bGFyTWFya2V0RGF5TG93Ijo4Mi41ODEyLCJyZWd1bGFyTWFya2V0Vm9sdW1lIjo1NTE0NDk1
LCJyZWd1bGFyTWFya2V0UHJldmlvdXNDbG9zZSI6ODIuMzUsImJpZFNpemUiOjMwMCwiYXNrU2l6
ZSI6NDAwLCJtYXJrZXQiOiJ1c19tYXJrZXQiLCJtZXNzYWdlQm9hcmRJZCI6ImZpbm1iXzYxMjA2
MTAwIiwiZnVsbEV4Y2hhbmdlTmFtZSI6Ik5ZU0UiLCJsb25nTmFtZSI6IkdlbmVyYWwgTW90b3Jz
IENvbXBhbnkiLCJyZWd1bGFyTWFya2V0T3BlbiI6ODIuNiwiYXZlcmFnZURhaWx5Vm9sdW1lM01v
bnRoIjo5OTY1ODIzLCJhdmVyYWdlRGFpbHlWb2x1bWUxMERheSI6MTE4NTM4NDAsImNvcnBvcmF0
ZUFjdGlvbnMiOltdLCJmaWZ0eVR3b1dlZWtMb3dDaGFuZ2UiOjQxLjQzLCJmaWZ0eVR3b1dlZWtM
b3dDaGFuZ2VQZXJjZW50IjowLjk5NTkxMzUsImZpZnR5VHdvV2Vla1JhbmdlIjoiNDEuNiAtIDgz
LjY4IiwiZmlmdHlUd29XZWVrSGlnaENoYW5nZSI6LTAuNjUwMDAxNSwiZmlmdHlUd29XZWVrSGln
aENoYW5nZVBlcmNlbnQiOi0wLjAwNzc2NzcwNSwiZmlmdHlUd29XZWVrQ2hhbmdlUGVyY2VudCI6
NTYuNjc4MDgsImRpdmlkZW5kRGF0ZSI6MTc2NjAxNjAwMCwiZWFybmluZ3NUaW1lc3RhbXAiOjE3
Njk1MjA2MDAsImVhcm5pbmdzVGltZXN0YW1wU3RhcnQiOjE3Njk1MjA2MDAsImVhcm5pbmdzVGlt
ZXN0YW1wRW5kIjoxNzY5NTIwNjAwLCJlYXJuaW5nc0NhbGxUaW1lc3RhbXBTdGFydCI6MTc2OTUy
MDYwMCwiZWFybmluZ3NDYWxsVGltZXN0YW1wRW5kIjoxNzY5NTIwNjAwLCJpc0Vhcm5pbmdzRGF0
ZUVzdGltYXRlIjpmYWxzZSwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjAuNTQsInRyYWls
aW5nUEUiOjE1LjcyNTM3OCwiZGl2aWRlbmRSYXRlIjowLjYsInRyYWlsaW5nQW5udWFsRGl2aWRl
bmRZaWVsZCI6MC4wMDY1NTczNzc1LCJtYXJrZXRTdGF0ZSI6IlBPU1RQT1NUIiwiZXBzVHJhaWxp
bmdUd2VsdmVNb250aHMiOjUuMjgsImVwc0ZvcndhcmQiOjExLjY1NDI4LCJlcHNDdXJyZW50WWVh
ciI6MTAuMjk3NzQsInByaWNlRXBzQ3VycmVudFllYXIiOjguMDYyOTM0LCJzaGFyZXNPdXRzdGFu
ZGluZyI6OTMyODYxMzAzLCJib29rVmFsdWUiOjcxLjE0LCJmaWZ0eURheUF2ZXJhZ2UiOjcwLjQ5
NjYsImZpZnR5RGF5QXZlcmFnZUNoYW5nZSI6MTIuNTMzNDAxNSwiZmlmdHlEYXlBdmVyYWdlQ2hh
bmdlUGVyY2VudCI6MC4xNzc3ODczMiwidHdvSHVuZHJlZERheUF2ZXJhZ2UiOjU2LjM1MTIsInR3
b0h1bmRyZWREYXlBdmVyYWdlQ2hhbmdlIjoyNi42Nzg3OTksInR3b0h1bmRyZWREYXlBdmVyYWdl
Q2hhbmdlUGVyY2VudCI6MC40NzM0MzgsImZvcndhcmRQRSI6Ny4xMjQ0MjEsInByaWNlVG9Cb29r
IjoxLjE2NzEzNTIsInNvdXJjZUludGVydmFsIjoxNSwiZXhjaGFuZ2VEYXRhRGVsYXllZEJ5Ijow
LCJleGNoYW5nZVRpbWV6b25lTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJleGNoYW5nZVRpbWV6
b25lU2hvcnROYW1lIjoiRVNUIiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsImVz
Z1BvcHVsYXRlZCI6ZmFsc2UsInRyYWRlYWJsZSI6ZmFsc2UsImNyeXB0b1RyYWRlYWJsZSI6ZmFs
c2UsImV4Y2hhbmdlIjoiTllRIiwiYXNrIjo4My4wMiwibWFya2V0Q2FwIjo3OTA1MTAyMjMzNiwi
YmlkIjo4My4yMywiZmlmdHlUd29XZWVrSGlnaCI6ODMuNjgsImZpZnR5VHdvV2Vla0xvdyI6NDEu
NiwiYXZlcmFnZUFuYWx5c3RSYXRpbmciOiIyLjAgLSBCdXkiLCJkaXZpZGVuZFlpZWxkIjowLjcz
LCJmaW5hbmNpYWxDdXJyZW5jeSI6IlVTRCIsInNob3J0TmFtZSI6IkdlbmVyYWwgTW90b3JzIENv
bXBhbnkiLCJzeW1ib2wiOiJHTSJ9XSwidXNlUmVjb3JkcyI6ZmFsc2V9XSwiZXJyb3IiOm51bGx9
fQ==
headers:
age: '0'
cache-control: private, no-cache, no-store
content-encoding: gzip
content-length: '1629'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:23 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '51'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,172 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/QQQ
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsibG9uZ0J1c2luZXNz
U3VtbWFyeSI6IlRvIG1haW50YWluIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHRoZSBjb21w
b3NpdGlvbiBhbmQgd2VpZ2h0cyBvZiB0aGUgc2VjdXJpdGllcyBpbiB0aGUgdHJ1c3QgKHRoZSBc
InNlY3VyaXRpZXNcIikgYW5kIHRoZSBzdG9ja3MgaW4gdGhlIE5BU0RBUS0xMDAgSW5kZXjCriwg
dGhlIGFkdmlzZXIgYWRqdXN0cyB0aGUgc2VjdXJpdGllcyBmcm9tIHRpbWUgdG8gdGltZSB0byBj
b25mb3JtIHRvIHBlcmlvZGljIGNoYW5nZXMgaW4gdGhlIGlkZW50aXR5IGFuZC9vciByZWxhdGl2
ZSB3ZWlnaHRzIG9mIGluZGV4IHNlY3VyaXRpZXMuIFRoZSBjb21wb3NpdGlvbiBhbmQgd2VpZ2h0
aW5nIG9mIHRoZSBzZWN1cml0aWVzIHBvcnRpb24gb2YgYSBwb3J0Zm9saW8gZGVwb3NpdCBhcmUg
YWxzbyBhZGp1c3RlZCB0byBjb25mb3JtIHRvIGNoYW5nZXMgaW4gdGhlIGluZGV4LiIsImNvbXBh
bnlPZmZpY2VycyI6W10sImV4ZWN1dGl2ZVRlYW0iOltdLCJtYXhBZ2UiOjg2NDAwfSwic3VtbWFy
eURldGFpbCI6eyJtYXhBZ2UiOjEsInByaWNlSGludCI6MiwicHJldmlvdXNDbG9zZSI6NjE2LjI1
NTksIm9wZW4iOjYyMS4zOCwiZGF5TG93Ijo2MTcuNzcsImRheUhpZ2giOjYyMS42NSwicmVndWxh
ck1hcmtldFByZXZpb3VzQ2xvc2UiOjYxNi4yNTU5LCJyZWd1bGFyTWFya2V0T3BlbiI6NjIxLjM4
LCJyZWd1bGFyTWFya2V0RGF5TG93Ijo2MTcuNzcsInJlZ3VsYXJNYXJrZXREYXlIaWdoIjo2MjEu
NjUsInRyYWlsaW5nUEUiOjM0LjA5MjU4Mywidm9sdW1lIjo0MjE5MzE4OCwicmVndWxhck1hcmtl
dFZvbHVtZSI6NDIxOTMxODgsImF2ZXJhZ2VWb2x1bWUiOjU4ODc2MTQ1LCJhdmVyYWdlVm9sdW1l
MTBkYXlzIjo1ODM2MDI5MCwiYXZlcmFnZURhaWx5Vm9sdW1lMTBEYXkiOjU4MzYwMjkwLCJiaWQi
OjYwMi4xNCwiYXNrIjo2MDIuNjQsImJpZFNpemUiOjMwMCwiYXNrU2l6ZSI6OTQwMCwieWllbGQi
OjAuMDA0NiwidG90YWxBc3NldHMiOjQwMzAyNzI2MzQ4OCwiZmlmdHlUd29XZWVrTG93Ijo0MDIu
MzksImZpZnR5VHdvV2Vla0hpZ2giOjYzNy4wMSwiYWxsVGltZUhpZ2giOjYzNy4wMSwiYWxsVGlt
ZUxvdyI6MTkuNzYsImZpZnR5RGF5QXZlcmFnZSI6NjEzLjY0MTIsInR3b0h1bmRyZWREYXlBdmVy
YWdlIjo1NTIuNzk4MDMsInRyYWlsaW5nQW5udWFsRGl2aWRlbmRSYXRlIjoxLjc3LCJ0cmFpbGlu
Z0FubnVhbERpdmlkZW5kWWllbGQiOjAuMDAyODcyMTgzMiwibmF2UHJpY2UiOjYxMy42MSwiY3Vy
cmVuY3kiOiJVU0QiLCJmcm9tQ3VycmVuY3kiOm51bGwsInRvQ3VycmVuY3kiOm51bGwsImxhc3RN
YXJrZXQiOm51bGwsImNvaW5NYXJrZXRDYXBMaW5rIjpudWxsLCJhbGdvcml0aG0iOm51bGwsInRy
YWRlYWJsZSI6ZmFsc2V9LCJkZWZhdWx0S2V5U3RhdGlzdGljcyI6eyJtYXhBZ2UiOjEsInByaWNl
SGludCI6MiwiY2F0ZWdvcnkiOiJMYXJnZSBHcm93dGgiLCJ5dGRSZXR1cm4iOjAuMjA0NzU1NzEs
ImJldGEzWWVhciI6MS4xOSwidG90YWxBc3NldHMiOjQwMzAyNzI2MzQ4OCwieWllbGQiOjAuMDA0
NiwiZnVuZEZhbWlseSI6IkludmVzY28iLCJmdW5kSW5jZXB0aW9uRGF0ZSI6OTIxMDI0MDAwLCJs
ZWdhbFR5cGUiOiJFeGNoYW5nZSBUcmFkZWQgRnVuZCIsInRocmVlWWVhckF2ZXJhZ2VSZXR1cm4i
OjAuMjk4NTgxNiwiZml2ZVllYXJBdmVyYWdlUmV0dXJuIjowLjE1OTQ5NjQsImxhc3RTcGxpdEZh
Y3RvciI6bnVsbCwibGF0ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwi
cXVvdGVUeXBlIjp7ImV4Y2hhbmdlIjoiTkdNIiwicXVvdGVUeXBlIjoiRVRGIiwic3ltYm9sIjoi
UVFRIiwidW5kZXJseWluZ1N5bWJvbCI6IlFRUSIsInNob3J0TmFtZSI6IkludmVzY28gUVFRIFRy
dXN0LCBTZXJpZXMgMSIsImxvbmdOYW1lIjoiSW52ZXNjbyBRUVEgVHJ1c3QiLCJmaXJzdFRyYWRl
RGF0ZUVwb2NoVXRjIjo5MjEwNzYyMDAsInRpbWVab25lRnVsbE5hbWUiOiJBbWVyaWNhL05ld19Z
b3JrIiwidGltZVpvbmVTaG9ydE5hbWUiOiJFU1QiLCJ1dWlkIjoiNzE0ZDMyZDQtNWY2Yy0zM2Jj
LWIzNmEtNzY1MTE5Y2IzYzRjIiwibWVzc2FnZUJvYXJkSWQiOiJmaW5tYl84MTA4NTU4IiwiZ210
T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFnZSI6MX19XSwiZXJyb3IiOm51bGx9
fQ==
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1122'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:23 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '7'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVRGIiwidHlwZURpc3AiOiJFVEYiLCJxdW90ZVNvdXJjZU5hbWUi
OiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3RvbVByaWNl
QWxlcnRDb25maWRlbmNlIjoiSElHSCIsImN1cnJlbmN5IjoiVVNEIiwiY29ycG9yYXRlQWN0aW9u
cyI6W10sInBvc3RNYXJrZXRUaW1lIjoxNzY2NDUxNTk0LCJyZWd1bGFyTWFya2V0VGltZSI6MTc2
NjQzNzIwNiwiZXhjaGFuZ2UiOiJOR00iLCJtZXNzYWdlQm9hcmRJZCI6ImZpbm1iXzgxMDg1NTgi
LCJleGNoYW5nZVRpbWV6b25lTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJleGNoYW5nZVRpbWV6
b25lU2hvcnROYW1lIjoiRVNUIiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1h
cmtldCI6InVzX21hcmtldCIsImVzZ1BvcHVsYXRlZCI6ZmFsc2UsIm1hcmtldFN0YXRlIjoiUE9T
VFBPU1QiLCJyZWd1bGFyTWFya2V0Q2hhbmdlUGVyY2VudCI6MC40NzkzNjMsInJlZ3VsYXJNYXJr
ZXRQcmljZSI6NjE5LjIxLCJzaG9ydE5hbWUiOiJJbnZlc2NvIFFRUSBUcnVzdCwgU2VyaWVzIDEi
LCJsb25nTmFtZSI6IkludmVzY28gUVFRIFRydXN0IiwiaGFzUHJlUG9zdE1hcmtldERhdGEiOnRy
dWUsImZpcnN0VHJhZGVEYXRlTWlsbGlzZWNvbmRzIjo5MjEwNzYyMDAwMDAsInByaWNlSGludCI6
MiwicG9zdE1hcmtldENoYW5nZVBlcmNlbnQiOjAuMTI0MzQ1MjksInBvc3RNYXJrZXRQcmljZSI6
NjE5Ljk4LCJwb3N0TWFya2V0Q2hhbmdlIjowLjc2OTk1ODUsInJlZ3VsYXJNYXJrZXRDaGFuZ2Ui
OjIuOTU0MSwicmVndWxhck1hcmtldERheUhpZ2giOjYyMS42NSwicmVndWxhck1hcmtldERheVJh
bmdlIjoiNjE3Ljc3IC0gNjIxLjY1IiwicmVndWxhck1hcmtldERheUxvdyI6NjE3Ljc3LCJyZWd1
bGFyTWFya2V0Vm9sdW1lIjo0MjE5MzE4OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xvc2UiOjYx
Ni4yNTU5LCJiaWQiOjYwMi4xNCwiYXNrIjo2MDIuNjQsImJpZFNpemUiOjMsImFza1NpemUiOjk0
LCJmdWxsRXhjaGFuZ2VOYW1lIjoiTmFzZGFxR00iLCJmaW5hbmNpYWxDdXJyZW5jeSI6IlVTRCIs
InJlZ3VsYXJNYXJrZXRPcGVuIjo2MjEuMzgsImF2ZXJhZ2VEYWlseVZvbHVtZTNNb250aCI6NTg4
NzYxNDUsImF2ZXJhZ2VEYWlseVZvbHVtZTEwRGF5Ijo1ODM2MDI5MCwiZmlmdHlUd29XZWVrTG93
Q2hhbmdlIjoyMTYuODIsImZpZnR5VHdvV2Vla0xvd0NoYW5nZVBlcmNlbnQiOjAuNTM4ODMwNDYs
ImZpZnR5VHdvV2Vla1JhbmdlIjoiNDAyLjM5IC0gNjM3LjAxIiwiZmlmdHlUd29XZWVrSGlnaENo
YW5nZSI6LTE3Ljc5OTk4OCwiZmlmdHlUd29XZWVrSGlnaENoYW5nZVBlcmNlbnQiOi0wLjAyNzk0
MzAyNiwiZmlmdHlUd29XZWVrTG93Ijo0MDIuMzksImZpZnR5VHdvV2Vla0hpZ2giOjYzNy4wMSwi
ZmlmdHlUd29XZWVrQ2hhbmdlUGVyY2VudCI6MTYuNDMzMzExLCJ0cmFpbGluZ0FubnVhbERpdmlk
ZW5kUmF0ZSI6MS43NywidHJhaWxpbmdQRSI6MzQuMDkyNTgzLCJ0cmFpbGluZ0FubnVhbERpdmlk
ZW5kWWllbGQiOjAuMDAyODcyMTgzMiwiZGl2aWRlbmRZaWVsZCI6MC40NiwieXRkUmV0dXJuIjoy
MS42MDU0LCJ0cmFpbGluZ1RocmVlTW9udGhSZXR1cm5zIjo4Ljc0MSwidHJhaWxpbmdUaHJlZU1v
bnRoTmF2UmV0dXJucyI6OC43NDEsIm5ldEFzc2V0cyI6NC4wMzAyNzI2M0UxMSwiZXBzVHJhaWxp
bmdUd2VsdmVNb250aHMiOjE4LjE2MjYwMSwic2hhcmVzT3V0c3RhbmRpbmciOjM5MzEwMDAwMCwi
Ym9va1ZhbHVlIjozNTcuNzc0LCJmaWZ0eURheUF2ZXJhZ2UiOjYxMy42NDEyLCJmaWZ0eURheUF2
ZXJhZ2VDaGFuZ2UiOjUuNTY4ODQ3NywiZmlmdHlEYXlBdmVyYWdlQ2hhbmdlUGVyY2VudCI6MC4w
MDkwNzUwODgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjo1NTIuNzk4MDMsInR3b0h1bmRyZWREYXlB
dmVyYWdlQ2hhbmdlIjo2Ni40MTE5OSwidHdvSHVuZHJlZERheUF2ZXJhZ2VDaGFuZ2VQZXJjZW50
IjowLjEyMDEzNzg4NSwibmV0RXhwZW5zZVJhdGlvIjowLjIsIm1hcmtldENhcCI6MjQzNDExNDUx
OTA0LCJwcmljZVRvQm9vayI6MS43MzA3Mjk2LCJzb3VyY2VJbnRlcnZhbCI6MTUsImV4Y2hhbmdl
RGF0YURlbGF5ZWRCeSI6MCwidHJhZGVhYmxlIjpmYWxzZSwiY3J5cHRvVHJhZGVhYmxlIjpmYWxz
ZSwic3ltYm9sIjoiUVFRIn1dLCJlcnJvciI6bnVsbH19
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1066'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:23 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '4'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/QQQ?symbol=QQQ&type=trailingPegRatio&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
encoding: utf-8
string: !!binary |
eyJ0aW1lc2VyaWVzIjp7InJlc3VsdCI6W3sibWV0YSI6eyJzeW1ib2wiOlsiUVFRIl0sInR5cGUi
OlsidHJhaWxpbmdQZWdSYXRpbyJdfX1dLCJlcnJvciI6bnVsbH19
headers:
age: '0'
cache-control: public, max-age=60, stale-while-revalidate=30
content-length: '96'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:23 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '1'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,795 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v8/finance/chart/ES=F
response:
body:
encoding: utf-8
string: !!binary |
eyJjaGFydCI6eyJyZXN1bHQiOlt7Im1ldGEiOnsiY3VycmVuY3kiOiJVU0QiLCJzeW1ib2wiOiJF
Uz1GIiwiZXhjaGFuZ2VOYW1lIjoiQ01FIiwiZnVsbEV4Y2hhbmdlTmFtZSI6IkNNRSIsImluc3Ry
dW1lbnRUeXBlIjoiRlVUVVJFIiwiZmlyc3RUcmFkZURhdGUiOjk2OTI0OTYwMCwicmVndWxhck1h
cmtldFRpbWUiOjE3NjY0NTM2NTAsImhhc1ByZVBvc3RNYXJrZXREYXRhIjpmYWxzZSwiZ210b2Zm
c2V0IjotMTgwMDAsInRpbWV6b25lIjoiRVNUIiwiZXhjaGFuZ2VUaW1lem9uZU5hbWUiOiJBbWVy
aWNhL05ld19Zb3JrIiwicmVndWxhck1hcmtldFByaWNlIjo2OTMwLjI1LCJmaWZ0eVR3b1dlZWtI
aWdoIjo2OTUzLjc1LCJmaWZ0eVR3b1dlZWtMb3ciOjQ4MzIuMCwicmVndWxhck1hcmtldERheUhp
Z2giOjY5MzMuNzUsInJlZ3VsYXJNYXJrZXREYXlMb3ciOjY5MjkuNSwicmVndWxhck1hcmtldFZv
bHVtZSI6MTE4NzQsInNob3J0TmFtZSI6IkUtTWluaSBTJlAgNTAwIE1hciAyNiIsImNoYXJ0UHJl
dmlvdXNDbG9zZSI6Mzg0Ni4wLCJwcmljZUhpbnQiOjIsImN1cnJlbnRUcmFkaW5nUGVyaW9kIjp7
InByZSI6eyJ0aW1lem9uZSI6IkVTVCIsInN0YXJ0IjoxNzY2Mzc5NjAwLCJlbmQiOjE3NjYzNzk2
MDAsImdtdG9mZnNldCI6LTE4MDAwfSwicmVndWxhciI6eyJ0aW1lem9uZSI6IkVTVCIsInN0YXJ0
IjoxNzY2Mzc5NjAwLCJlbmQiOjE3NjY0NjU5NDAsImdtdG9mZnNldCI6LTE4MDAwfSwicG9zdCI6
eyJ0aW1lem9uZSI6IkVTVCIsInN0YXJ0IjoxNzY2NDY1OTQwLCJlbmQiOjE3NjY0NjU5NDAsImdt
dG9mZnNldCI6LTE4MDAwfX0sImRhdGFHcmFudWxhcml0eSI6IjFkIiwicmFuZ2UiOiIiLCJ2YWxp
ZFJhbmdlcyI6WyIxZCIsIjVkIiwiMW1vIiwiM21vIiwiNm1vIiwiMXkiLCIyeSIsIjV5IiwiMTB5
IiwieXRkIiwibWF4Il19LCJ0aW1lc3RhbXAiOlsxNjcyNzIyMDAwLDE2NzI4MDg0MDAsMTY3Mjg5
NDgwMCwxNjcyOTgxMjAwLDE2NzMyNDA0MDAsMTY3MzMyNjgwMCwxNjczNDEzMjAwLDE2NzM0OTk2
MDAsMTY3MzU4NjAwMCwxNjczOTMxNjAwLDE2NzQwMTgwMDAsMTY3NDEwNDQwMCwxNjc0MTkwODAw
LDE2NzQ0NTAwMDAsMTY3NDUzNjQwMCwxNjc0NjIyODAwLDE2NzQ3MDkyMDAsMTY3NDc5NTYwMCwx
Njc1MDU0ODAwLDE2NzUxNDEyMDAsMTY3NTIyNzYwMCwxNjc1MzE0MDAwLDE2NzU0MDA0MDAsMTY3
NTY1OTYwMCwxNjc1NzQ2MDAwLDE2NzU4MzI0MDAsMTY3NTkxODgwMCwxNjc2MDA1MjAwLDE2NzYy
NjQ0MDAsMTY3NjM1MDgwMCwxNjc2NDM3MjAwLDE2NzY1MjM2MDAsMTY3NjYxMDAwMCwxNjc2OTU1
NjAwLDE2NzcwNDIwMDAsMTY3NzEyODQwMCwxNjc3MjE0ODAwLDE2Nzc0NzQwMDAsMTY3NzU2MDQw
MCwxNjc3NjQ2ODAwLDE2Nzc3MzMyMDAsMTY3NzgxOTYwMCwxNjc4MDc4ODAwLDE2NzgxNjUyMDAs
MTY3ODI1MTYwMCwxNjc4MzM4MDAwLDE2Nzg0MjQ0MDAsMTY3ODY4MDAwMCwxNjc4NzY2NDAwLDE2
Nzg4NTI4MDAsMTY3ODkzOTIwMCwxNjc5MDI1NjAwLDE2NzkyODQ4MDAsMTY3OTM3MTIwMCwxNjc5
NDU3NjAwLDE2Nzk1NDQwMDAsMTY3OTYzMDQwMCwxNjc5ODg5NjAwLDE2Nzk5NzYwMDAsMTY4MDA2
MjQwMCwxNjgwMTQ4ODAwLDE2ODAyMzUyMDAsMTY4MDQ5NDQwMCwxNjgwNTgwODAwLDE2ODA2Njcy
MDAsMTY4MDc1MzYwMCwxNjgxMDk5MjAwLDE2ODExODU2MDAsMTY4MTI3MjAwMCwxNjgxMzU4NDAw
LDE2ODE0NDQ4MDAsMTY4MTcwNDAwMCwxNjgxNzkwNDAwLDE2ODE4NzY4MDAsMTY4MTk2MzIwMCwx
NjgyMDQ5NjAwLDE2ODIzMDg4MDAsMTY4MjM5NTIwMCwxNjgyNDgxNjAwLDE2ODI1NjgwMDAsMTY4
MjY1NDQwMCwxNjgyOTEzNjAwLDE2ODMwMDAwMDAsMTY4MzA4NjQwMCwxNjgzMTcyODAwLDE2ODMy
NTkyMDAsMTY4MzUxODQwMCwxNjgzNjA0ODAwLDE2ODM2OTEyMDAsMTY4Mzc3NzYwMCwxNjgzODY0
MDAwLDE2ODQxMjMyMDAsMTY4NDIwOTYwMCwxNjg0Mjk2MDAwLDE2ODQzODI0MDAsMTY4NDQ2ODgw
MCwxNjg0NzI4MDAwLDE2ODQ4MTQ0MDAsMTY4NDkwMDgwMCwxNjg0OTg3MjAwLDE2ODUwNzM2MDAs
MTY4NTQxOTIwMCwxNjg1NTA1NjAwLDE2ODU1OTIwMDAsMTY4NTY3ODQwMCwxNjg1OTM3NjAwLDE2
ODYwMjQwMDAsMTY4NjExMDQwMCwxNjg2MTk2ODAwLDE2ODYyODMyMDAsMTY4NjU0MjQwMCwxNjg2
NjI4ODAwLDE2ODY3MTUyMDAsMTY4NjgwMTYwMCwxNjg2ODg4MDAwLDE2ODcyMzM2MDAsMTY4NzMy
MDAwMCwxNjg3NDA2NDAwLDE2ODc0OTI4MDAsMTY4Nzc1MjAwMCwxNjg3ODM4NDAwLDE2ODc5MjQ4
MDAsMTY4ODAxMTIwMCwxNjg4MDk3NjAwLDE2ODgzOTEwMDAsMTY4ODUyOTYwMCwxNjg4NjE2MDAw
LDE2ODg3MDI0MDAsMTY4ODk2MTYwMCwxNjg5MDQ4MDAwLDE2ODkxMzQ0MDAsMTY4OTIyMDgwMCwx
Njg5MzA3MjAwLDE2ODk1NjY0MDAsMTY4OTY1MjgwMCwxNjg5NzM5MjAwLDE2ODk4MjU2MDAsMTY4
OTkxMjAwMCwxNjkwMTcxMjAwLDE2OTAyNTc2MDAsMTY5MDM0NDAwMCwxNjkwNDMwNDAwLDE2OTA1
MTY4MDAsMTY5MDc3NjAwMCwxNjkwODYyNDAwLDE2OTA5NDg4MDAsMTY5MTAzNTIwMCwxNjkxMTIx
NjAwLDE2OTEzODA4MDAsMTY5MTQ2NzIwMCwxNjkxNTUzNjAwLDE2OTE2NDAwMDAsMTY5MTcyNjQw
MCwxNjkxOTg1NjAwLDE2OTIwNzIwMDAsMTY5MjE1ODQwMCwxNjkyMjQ0ODAwLDE2OTIzMzEyMDAs
MTY5MjU5MDQwMCwxNjkyNjc2ODAwLDE2OTI3NjMyMDAsMTY5Mjg0OTYwMCwxNjkyOTM2MDAwLDE2
OTMxOTUyMDAsMTY5MzI4MTYwMCwxNjkzMzY4MDAwLDE2OTM0NTQ0MDAsMTY5MzU0MDgwMCwxNjkz
ODg2NDAwLDE2OTM5NzI4MDAsMTY5NDA1OTIwMCwxNjk0MTQ1NjAwLDE2OTQ0MDQ4MDAsMTY5NDQ5
MTIwMCwxNjk0NTc3NjAwLDE2OTQ2NjQwMDAsMTY5NDc1MDQwMCwxNjk1MDA5NjAwLDE2OTUwOTYw
MDAsMTY5NTE4MjQwMCwxNjk1MjY4ODAwLDE2OTUzNTUyMDAsMTY5NTYxNDQwMCwxNjk1NzAwODAw
LDE2OTU3ODcyMDAsMTY5NTg3MzYwMCwxNjk1OTYwMDAwLDE2OTYyMTkyMDAsMTY5NjMwNTYwMCwx
Njk2MzkyMDAwLDE2OTY0Nzg0MDAsMTY5NjU2NDgwMCwxNjk2ODI0MDAwLDE2OTY5MTA0MDAsMTY5
Njk5NjgwMCwxNjk3MDgzMjAwLDE2OTcxNjk2MDAsMTY5NzQyODgwMCwxNjk3NTE1MjAwLDE2OTc2
MDE2MDAsMTY5NzY4ODAwMCwxNjk3Nzc0NDAwLDE2OTgwMzM2MDAsMTY5ODEyMDAwMCwxNjk4MjA2
NDAwLDE2OTgyOTI4MDAsMTY5ODM3OTIwMCwxNjk4NjM4NDAwLDE2OTg3MjQ4MDAsMTY5ODgxMTIw
MCwxNjk4ODk3NjAwLDE2OTg5ODQwMDAsMTY5OTI0NjgwMCwxNjk5MzMzMjAwLDE2OTk0MTk2MDAs
MTY5OTUwNjAwMCwxNjk5NTkyNDAwLDE2OTk4NTE2MDAsMTY5OTkzODAwMCwxNzAwMDI0NDAwLDE3
MDAxMTA4MDAsMTcwMDE5NzIwMCwxNzAwNDU2NDAwLDE3MDA1NDI4MDAsMTcwMDYyOTIwMCwxNzAw
NzE1NjAwLDE3MDA4MzYyMDAsMTcwMTA2MTIwMCwxNzAxMTQ3NjAwLDE3MDEyMzQwMDAsMTcwMTMy
MDQwMCwxNzAxNDA2ODAwLDE3MDE2NjYwMDAsMTcwMTc1MjQwMCwxNzAxODM4ODAwLDE3MDE5MjUy
MDAsMTcwMjAxMTYwMCwxNzAyMjcwODAwLDE3MDIzNTcyMDAsMTcwMjQ0MzYwMCwxNzAyNTMwMDAw
LDE3MDI2MTY0MDAsMTcwMjg3NTYwMCwxNzAyOTYyMDAwLDE3MDMwNDg0MDAsMTcwMzEzNDgwMCwx
NzAzMjIxMjAwLDE3MDM1NjY4MDAsMTcwMzY1MzIwMCwxNzAzNzM5NjAwLDE3MDM4MjYwMDAsMTcw
NDE3MTYwMCwxNzA0MjU4MDAwLDE3MDQzNDQ0MDAsMTcwNDQzMDgwMCwxNzA0NjkwMDAwLDE3MDQ3
NzY0MDAsMTcwNDg2MjgwMCwxNzA0OTQ5MjAwLDE3MDUwMzU2MDAsMTcwNTM4MTIwMCwxNzA1NDY3
NjAwLDE3MDU1NTQwMDAsMTcwNTY0MDQwMCwxNzA1ODk5NjAwLDE3MDU5ODYwMDAsMTcwNjA3MjQw
MCwxNzA2MTU4ODAwLDE3MDYyNDUyMDAsMTcwNjUwNDQwMCwxNzA2NTkwODAwLDE3MDY2NzcyMDAs
MTcwNjc2MzYwMCwxNzA2ODUwMDAwLDE3MDcxMDkyMDAsMTcwNzE5NTYwMCwxNzA3MjgyMDAwLDE3
MDczNjg0MDAsMTcwNzQ1NDgwMCwxNzA3NzE0MDAwLDE3MDc4MDA0MDAsMTcwNzg4NjgwMCwxNzA3
OTczMjAwLDE3MDgwNTk2MDAsMTcwODQwNTIwMCwxNzA4NDkxNjAwLDE3MDg1NzgwMDAsMTcwODY2
NDQwMCwxNzA4OTIzNjAwLDE3MDkwMTAwMDAsMTcwOTA5NjQwMCwxNzA5MTgyODAwLDE3MDkyNjky
MDAsMTcwOTUyODQwMCwxNzA5NjE0ODAwLDE3MDk3MDEyMDAsMTcwOTc4NzYwMCwxNzA5ODc0MDAw
LDE3MTAxMjk2MDAsMTcxMDIxNjAwMCwxNzEwMzAyNDAwLDE3MTAzODg4MDAsMTcxMDQ3NTIwMCwx
NzEwNzM0NDAwLDE3MTA4MjA4MDAsMTcxMDkwNzIwMCwxNzEwOTkzNjAwLDE3MTEwODAwMDAsMTcx
MTMzOTIwMCwxNzExNDI1NjAwLDE3MTE1MTIwMDAsMTcxMTU5ODQwMCwxNzExOTQ0MDAwLDE3MTIw
MzA0MDAsMTcxMjExNjgwMCwxNzEyMjAzMjAwLDE3MTIyODk2MDAsMTcxMjU0ODgwMCwxNzEyNjM1
MjAwLDE3MTI3MjE2MDAsMTcxMjgwODAwMCwxNzEyODk0NDAwLDE3MTMxNTM2MDAsMTcxMzI0MDAw
MCwxNzEzMzI2NDAwLDE3MTM0MTI4MDAsMTcxMzQ5OTIwMCwxNzEzNzU4NDAwLDE3MTM4NDQ4MDAs
MTcxMzkzMTIwMCwxNzE0MDE3NjAwLDE3MTQxMDQwMDAsMTcxNDM2MzIwMCwxNzE0NDQ5NjAwLDE3
MTQ1MzYwMDAsMTcxNDYyMjQwMCwxNzE0NzA4ODAwLDE3MTQ5NjgwMDAsMTcxNTA1NDQwMCwxNzE1
MTQwODAwLDE3MTUyMjcyMDAsMTcxNTMxMzYwMCwxNzE1NTcyODAwLDE3MTU2NTkyMDAsMTcxNTc0
NTYwMCwxNzE1ODMyMDAwLDE3MTU5MTg0MDAsMTcxNjE3NzYwMCwxNzE2MjY0MDAwLDE3MTYzNTA0
MDAsMTcxNjQzNjgwMCwxNzE2NTIzMjAwLDE3MTY4Njg4MDAsMTcxNjk1NTIwMCwxNzE3MDQxNjAw
LDE3MTcxMjgwMDAsMTcxNzM4NzIwMCwxNzE3NDczNjAwLDE3MTc1NjAwMDAsMTcxNzY0NjQwMCwx
NzE3NzMyODAwLDE3MTc5OTIwMDAsMTcxODA3ODQwMCwxNzE4MTY0ODAwLDE3MTgyNTEyMDAsMTcx
ODMzNzYwMCwxNzE4NTk2ODAwLDE3MTg2ODMyMDAsMTcxODg1NjAwMCwxNzE4OTQyNDAwLDE3MTky
MDE2MDAsMTcxOTI4ODAwMCwxNzE5Mzc0NDAwLDE3MTk0NjA4MDAsMTcxOTU0NzIwMCwxNzE5ODA2
NDAwLDE3MTk4OTI4MDAsMTcyMDAxMzQwMCwxNzIwMTUyMDAwLDE3MjA0MTEyMDAsMTcyMDQ5NzYw
MCwxNzIwNTg0MDAwLDE3MjA2NzA0MDAsMTcyMDc1NjgwMCwxNzIxMDE2MDAwLDE3MjExMDI0MDAs
MTcyMTE4ODgwMCwxNzIxMjc1MjAwLDE3MjEzNjE2MDAsMTcyMTYyMDgwMCwxNzIxNzA3MjAwLDE3
MjE3OTM2MDAsMTcyMTg4MDAwMCwxNzIxOTY2NDAwLDE3MjIyMjU2MDAsMTcyMjMxMjAwMCwxNzIy
Mzk4NDAwLDE3MjI0ODQ4MDAsMTcyMjU3MTIwMCwxNzIyODMwNDAwLDE3MjI5MTY4MDAsMTcyMzAw
MzIwMCwxNzIzMDg5NjAwLDE3MjMxNzYwMDAsMTcyMzQzNTIwMCwxNzIzNTIxNjAwLDE3MjM2MDgw
MDAsMTcyMzY5NDQwMCwxNzIzNzgwODAwLDE3MjQwNDAwMDAsMTcyNDEyNjQwMCwxNzI0MjEyODAw
LDE3MjQyOTkyMDAsMTcyNDM4NTYwMCwxNzI0NjQ0ODAwLDE3MjQ3MzEyMDAsMTcyNDgxNzYwMCwx
NzI0OTA0MDAwLDE3MjQ5OTA0MDAsMTcyNTMzNjAwMCwxNzI1NDIyNDAwLDE3MjU1MDg4MDAsMTcy
NTU5NTIwMCwxNzI1ODU0NDAwLDE3MjU5NDA4MDAsMTcyNjAyNzIwMCwxNzI2MTEzNjAwLDE3MjYy
MDAwMDAsMTcyNjQ1OTIwMCwxNzI2NTQ1NjAwLDE3MjY2MzIwMDAsMTcyNjcxODQwMCwxNzI2ODA0
ODAwLDE3MjcwNjQwMDAsMTcyNzE1MDQwMCwxNzI3MjM2ODAwLDE3MjczMjMyMDAsMTcyNzQwOTYw
MCwxNzI3NjY4ODAwLDE3Mjc3NTUyMDAsMTcyNzg0MTYwMCwxNzI3OTI4MDAwLDE3MjgwMTQ0MDAs
MTcyODI3MzYwMCwxNzI4MzYwMDAwLDE3Mjg0NDY0MDAsMTcyODUzMjgwMCwxNzI4NjE5MjAwLDE3
Mjg4Nzg0MDAsMTcyODk2NDgwMCwxNzI5MDUxMjAwLDE3MjkxMzc2MDAsMTcyOTIyNDAwMCwxNzI5
NDgzMjAwLDE3Mjk1Njk2MDAsMTcyOTY1NjAwMCwxNzI5NzQyNDAwLDE3Mjk4Mjg4MDAsMTczMDA4
ODAwMCwxNzMwMTc0NDAwLDE3MzAyNjA4MDAsMTczMDM0NzIwMCwxNzMwNDMzNjAwLDE3MzA2OTY0
MDAsMTczMDc4MjgwMCwxNzMwODY5MjAwLDE3MzA5NTU2MDAsMTczMTA0MjAwMCwxNzMxMzAxMjAw
LDE3MzEzODc2MDAsMTczMTQ3NDAwMCwxNzMxNTYwNDAwLDE3MzE2NDY4MDAsMTczMTkwNjAwMCwx
NzMxOTkyNDAwLDE3MzIwNzg4MDAsMTczMjE2NTIwMCwxNzMyMjUxNjAwLDE3MzI1MTA4MDAsMTcz
MjU5NzIwMCwxNzMyNjgzNjAwLDE3MzI4OTA2MDAsMTczMzExNTYwMCwxNzMzMjAyMDAwLDE3MzMy
ODg0MDAsMTczMzM3NDgwMCwxNzMzNDYxMjAwLDE3MzM3MjA0MDAsMTczMzgwNjgwMCwxNzMzODkz
MjAwLDE3MzM5Nzk2MDAsMTczNDA2NjAwMCwxNzM0MzI1MjAwLDE3MzQ0MTE2MDAsMTczNDQ5ODAw
MCwxNzM0NTg0NDAwLDE3MzQ2NzA4MDAsMTczNDkzMDAwMCwxNzM1MDUwNjAwLDE3MzUxODkyMDAs
MTczNTI3NTYwMCwxNzM1NTM0ODAwLDE3MzU2MjEyMDAsMTczNTc5NDAwMCwxNzM1ODgwNDAwLDE3
MzYxMzk2MDAsMTczNjIyNjAwMCwxNzM2MzEyNDAwLDE3MzYzOTg4MDAsMTczNjQ4NTIwMCwxNzM2
NzQ0NDAwLDE3MzY4MzA4MDAsMTczNjkxNzIwMCwxNzM3MDAzNjAwLDE3MzcwOTAwMDAsMTczNzQz
NTYwMCwxNzM3NTIyMDAwLDE3Mzc2MDg0MDAsMTczNzY5NDgwMCwxNzM3OTU0MDAwLDE3MzgwNDA0
MDAsMTczODEyNjgwMCwxNzM4MjEzMjAwLDE3MzgyOTk2MDAsMTczODU1ODgwMCwxNzM4NjQ1MjAw
LDE3Mzg3MzE2MDAsMTczODgxODAwMCwxNzM4OTA0NDAwLDE3MzkxNjM2MDAsMTczOTI1MDAwMCwx
NzM5MzM2NDAwLDE3Mzk0MjI4MDAsMTczOTUwOTIwMCwxNzM5ODU0ODAwLDE3Mzk5NDEyMDAsMTc0
MDAyNzYwMCwxNzQwMTE0MDAwLDE3NDAzNzMyMDAsMTc0MDQ1OTYwMCwxNzQwNTQ2MDAwLDE3NDA2
MzI0MDAsMTc0MDcxODgwMCwxNzQwOTc4MDAwLDE3NDEwNjQ0MDAsMTc0MTE1MDgwMCwxNzQxMjM3
MjAwLDE3NDEzMjM2MDAsMTc0MTU3OTIwMCwxNzQxNjY1NjAwLDE3NDE3NTIwMDAsMTc0MTgzODQw
MCwxNzQxOTI0ODAwLDE3NDIxODQwMDAsMTc0MjI3MDQwMCwxNzQyMzU2ODAwLDE3NDI0NDMyMDAs
MTc0MjUyOTYwMCwxNzQyNzg4ODAwLDE3NDI4NzUyMDAsMTc0Mjk2MTYwMCwxNzQzMDQ4MDAwLDE3
NDMxMzQ0MDAsMTc0MzM5MzYwMCwxNzQzNDgwMDAwLDE3NDM1NjY0MDAsMTc0MzY1MjgwMCwxNzQz
NzM5MjAwLDE3NDM5OTg0MDAsMTc0NDA4NDgwMCwxNzQ0MTcxMjAwLDE3NDQyNTc2MDAsMTc0NDM0
NDAwMCwxNzQ0NjAzMjAwLDE3NDQ2ODk2MDAsMTc0NDc3NjAwMCwxNzQ0ODYyNDAwLDE3NDUyMDgw
MDAsMTc0NTI5NDQwMCwxNzQ1MzgwODAwLDE3NDU0NjcyMDAsMTc0NTU1MzYwMCwxNzQ1ODEyODAw
LDE3NDU4OTkyMDAsMTc0NTk4NTYwMCwxNzQ2MDcyMDAwLDE3NDYxNTg0MDAsMTc0NjQxNzYwMCwx
NzQ2NTA0MDAwLDE3NDY1OTA0MDAsMTc0NjY3NjgwMCwxNzQ2NzYzMjAwLDE3NDcwMjI0MDAsMTc0
NzEwODgwMCwxNzQ3MTk1MjAwLDE3NDcyODE2MDAsMTc0NzM2ODAwMCwxNzQ3NjI3MjAwLDE3NDc3
MTM2MDAsMTc0NzgwMDAwMCwxNzQ3ODg2NDAwLDE3NDc5NzI4MDAsMTc0ODIzMjAwMCwxNzQ4MzE4
NDAwLDE3NDg0MDQ4MDAsMTc0ODQ5MTIwMCwxNzQ4NTc3NjAwLDE3NDg4MzY4MDAsMTc0ODkyMzIw
MCwxNzQ5MDA5NjAwLDE3NDkwOTYwMDAsMTc0OTE4MjQwMCwxNzQ5NDQxNjAwLDE3NDk1MjgwMDAs
MTc0OTYxNDQwMCwxNzQ5NzAwODAwLDE3NDk3ODcyMDAsMTc1MDA0NjQwMCwxNzUwMTMyODAwLDE3
NTAyMTkyMDAsMTc1MDMwNTYwMCwxNzUwMzkyMDAwLDE3NTA2NTEyMDAsMTc1MDczNzYwMCwxNzUw
ODI0MDAwLDE3NTA5MTA0MDAsMTc1MDk5NjgwMCwxNzUxMjU2MDAwLDE3NTEzNDI0MDAsMTc1MTQy
ODgwMCwxNzUxNTQ5NDAwLDE3NTE2MDE2MDAsMTc1MTg2MDgwMCwxNzUxOTQ3MjAwLDE3NTIwMzM2
MDAsMTc1MjEyMDAwMCwxNzUyMjA2NDAwLDE3NTI0NjU2MDAsMTc1MjU1MjAwMCwxNzUyNjM4NDAw
LDE3NTI3MjQ4MDAsMTc1MjgxMTIwMCwxNzUzMDcwNDAwLDE3NTMxNTY4MDAsMTc1MzI0MzIwMCwx
NzUzMzI5NjAwLDE3NTM0MTYwMDAsMTc1MzY3NTIwMCwxNzUzNzYxNjAwLDE3NTM4NDgwMDAsMTc1
MzkzNDQwMCwxNzU0MDIwODAwLDE3NTQyODAwMDAsMTc1NDM2NjQwMCwxNzU0NDUyODAwLDE3NTQ1
MzkyMDAsMTc1NDYyNTYwMCwxNzU0ODg0ODAwLDE3NTQ5NzEyMDAsMTc1NTA1NzYwMCwxNzU1MTQ0
MDAwLDE3NTUyMzA0MDAsMTc1NTQ4OTYwMCwxNzU1NTc2MDAwLDE3NTU2NjI0MDAsMTc1NTc0ODgw
MCwxNzU1ODM1MjAwLDE3NTYwOTQ0MDAsMTc1NjE4MDgwMCwxNzU2MjY3MjAwLDE3NTYzNTM2MDAs
MTc1NjQ0MDAwMCwxNzU2Nzg1NjAwLDE3NTY4NzIwMDAsMTc1Njk1ODQwMCwxNzU3MDQ0ODAwLDE3
NTczMDQwMDAsMTc1NzM5MDQwMCwxNzU3NDc2ODAwLDE3NTc1NjMyMDAsMTc1NzY0OTYwMCwxNzU3
OTA4ODAwLDE3NTc5OTUyMDAsMTc1ODA4MTYwMCwxNzU4MTY4MDAwLDE3NTgyNTQ0MDAsMTc1ODUx
MzYwMCwxNzU4NjAwMDAwLDE3NTg2ODY0MDAsMTc1ODc3MjgwMCwxNzU4ODU5MjAwLDE3NTkxMTg0
MDAsMTc1OTIwNDgwMCwxNzU5MjkxMjAwLDE3NTkzNzc2MDAsMTc1OTQ2NDAwMCwxNzU5NzIzMjAw
LDE3NTk4MDk2MDAsMTc1OTg5NjAwMCwxNzU5OTgyNDAwLDE3NjAwNjg4MDAsMTc2MDMyODAwMCwx
NzYwNDE0NDAwLDE3NjA1MDA4MDAsMTc2MDU4NzIwMCwxNzYwNjczNjAwLDE3NjA5MzI4MDAsMTc2
MTAxOTIwMCwxNzYxMTA1NjAwLDE3NjExOTIwMDAsMTc2MTI3ODQwMCwxNzYxNTM3NjAwLDE3NjE2
MjQwMDAsMTc2MTcxMDQwMCwxNzYxNzk2ODAwLDE3NjE4ODMyMDAsMTc2MjE0NjAwMCwxNzYyMjMy
NDAwLDE3NjIzMTg4MDAsMTc2MjQwNTIwMCwxNzYyNDkxNjAwLDE3NjI3NTA4MDAsMTc2MjgzNzIw
MCwxNzYyOTIzNjAwLDE3NjMwMTAwMDAsMTc2MzA5NjQwMCwxNzYzMzU1NjAwLDE3NjM0NDIwMDAs
MTc2MzUyODQwMCwxNzYzNjE0ODAwLDE3NjM3MDEyMDAsMTc2Mzk2MDQwMCwxNzY0MDQ2ODAwLDE3
NjQxMzMyMDAsMTc2NDM0MDIwMCwxNzY0NTY1MjAwLDE3NjQ2NTE2MDAsMTc2NDczODAwMCwxNzY0
ODI0NDAwLDE3NjQ5MTA4MDAsMTc2NTE3MDAwMCwxNzY1MjU2NDAwLDE3NjUzNDI4MDAsMTc2NTQy
OTIwMCwxNzY1NTE1NjAwLDE3NjU3NzQ4MDAsMTc2NTg2MTIwMCwxNzY1OTQ3NjAwLDE3NjYwMzQw
MDAsMTc2NjEyMDQwMCwxNzY2NDUzNjUwXSwiaW5kaWNhdG9ycyI6eyJxdW90ZSI6W3siY2xvc2Ui
OlszODQ2LjAsMzg3NC41LDM4MjkuMCwzOTE1LjUsMzkxMy43NSwzOTQwLjc1LDM5OTAuMCw0MDAz
LjUsNDAxOC4yNSw0MDA5LjUsMzk0NS43NSwzOTE1LjUsMzk4OC41LDQwMzYuNSw0MDMyLjc1LDQw
MzIuMCw0MDc1LjUsNDA4NC4yNSw0MDMyLjUsNDA5MC4wLDQxMzIuMjUsNDE5MS41LDQxNDcuNzUs
NDEyMy41LDQxNzUuNzUsNDEzMC41LDQwOTEuNzUsNDA5OS43NSw0MTQ3LjI1LDQxNDUuNSw0MTU4
LjI1LDQwOTkuNzUsNDA4Ny41LDQwMDUuNzUsMzk5OS4wLDQwMTguNzUsMzk3NS43NSwzOTg4LjAs
Mzk3NS41LDM5NTYuNSwzOTg0Ljc1LDQwNDkuNzUsNDA1Mi41LDM5ODkuNzUsMzk5NS4wLDM5MjAu
MCwzODYyLjc1LDM4NTYuNzUsMzkyMC41LDM4OTIuNzUsMzk2MC41LDM5NTcuMDUwMDQ4ODI4MTI1
LDM5ODMuMCw0MDM1Ljc1LDM5NzAuNSwzOTc4LjAsNDAwMS4yNSw0MDA3LjI1LDQwMDEuNSw0MDU3
LjUsNDA4MC4wLDQxMzcuNzUsNDE1My43NSw0MTI5LjAsNDExNy4yNSw0MTMyLjAsNDEzNi4yNSw0
MTM2LjUsNDExOS4wLDQxNzIuNzUsNDE2My43NSw0MTc2Ljc1LDQxODAuMCw0MTc4LjUsNDE1Mi41
LDQxNTYuNzUsNDE1OS41LDQwOTMuMjUsNDA3Ni4wLDQxNTMuNzUsNDE4OC41LDQxODUuNzUsNDEz
Ni43NSw0MTA3LjUsNDA3NS43NSw0MTUwLjI1LDQxNTIuNzUsNDEzNC4wLDQxNTIuMCw0MTQzLjc1
LDQxMzguMCw0MTUwLjAsNDEyMy4wLDQxNzEuNSw0MjEyLjAsNDIwNC43NSw0MjA1LjAsNDE1OC43
NSw0MTI2LjAsNDE1OS43NSw0MjEzLjI1LDQyMTUuMCw0MTkwLjUsNDIyOC4wLDQyODguMCw0Mjgx
LjAsNDI4OS43NSw0Mjc0LjI1LDQyOTguMjUsNDMwNC43NSw0MzQyLjc1LDQzNzEuNzUsNDM3NC4y
NSw0NDI2LjUsNDQ1My4zNTAwOTc2NTYyNSw0NDM0Ljc1LDQ0MDkuMjUsNDQyMy43NSw0Mzg5LjAs
NDM3MC4yNSw0NDE4Ljc1LDQ0MTcuNSw0NDM1Ljc1LDQ0ODguMjUsNDQ5Mi4yNSw0NDgzLjc1LDQ0
NDcuMCw0NDM0LjAsNDQ0NC4yNSw0NDczLjUsNDUwNy41LDQ1NDMuNSw0NTM2Ljc1LDQ1NTMuNzUs
NDU4Ny43NSw0NTk3LjAsNDU2NS41LDQ1NjQuNzUsNDU4My41LDQ1OTYuMCw0NTk1LjI1LDQ1NjQu
MjUsNDYwNi41LDQ2MTQuNSw0NjAxLjI1LDQ1MzcuMjUsNDUyMS43NSw0NDk4LjAsNDUzNy43NSw0
NTE4LjUsNDQ4NS43NSw0NDg1Ljc1LDQ0ODAuNzUsNDUwNi4wLDQ0NTQuMCw0NDIwLjAsNDM4NC41
LDQzODIuNzUsNDQxMi41LDQzOTkuMjUsNDQ0Ny4wLDQzODYuMCw0NDE0LjI1LDQ0NDIuMjUsNDUw
Ni43NSw0NTI0LjI1LDQ1MTYuMCw0NTIxLjUsNDUwMi41LDQ0NzEuNSw0NDU2LjI1LDQ0NjEuNzUs
NDQ5MC4yNSw0NDY1LjAsNDQ2OC43NSw0NTA2LjAsNDQ5MS43MjAyMTQ4NDM3NSw0NTAxLjUsNDQ5
MC4wLDQ0NDcuMCw0MzcyLjAsNDM2MS4wLDQzNzguNzUsNDMxNC43NSw0MzEzLjUsNDMzNy41LDQz
MjUuNSw0MzI0LjI1LDQyNjQuNzUsNDI5Ny43NSw0MjkwLjc1LDQzNDEuNSw0MzY4Ljc1LDQzOTEu
NSw0NDA5Ljc1LDQzODAuNSw0MzU3LjI1LDQ0MDEuMCw0NDAxLjc1LDQzNDIuMjUsNDMwMy4wLDQy
NDguNSw0MjQxLjc1LDQyNzEuMjUsNDIwOS43NSw0MTU2LjUsNDEzNy43NSw0MTg1Ljc1LDQyMTIu
MjUsNDI1Ni4wLDQzMzUuNzUsNDM3Ni4wLDQzODQuMjUsNDM5Ni4wLDQzOTkuNSw0MzYyLjI1LDQ0
MzAuNSw0NDI1LjI1LDQ1MTEuMCw0NTE5LjI1LDQ1MjMuMjUsNDUyNy41LDQ1NjIuMjUsNDU1MS4y
NSw0NTY3LjI1LDQ1NjkuNSw0NTY4LjI1LDQ1NjEuMCw0NTYzLjAsNDU1OS4yNSw0NTc2Ljc1LDQ2
MDAuNzUsNDU3Ni41LDQ1NzUuMCw0NTU2LjAsNDU4OS41LDQ2MDcuNSw0NjI2LjAsNDY0NS43NSw0
NzA4LjI1LDQ3MjEuNzUsNDY5NC4yNzAwMTk1MzEyNSw0NzkzLjAsNDgyMC4yNSw0NzQ5Ljc1LDQ3
OTYuNzUsNDgwNS4yNSw0ODI1LjAsNDgzMy41LDQ4MzIuMjUsNDgyMC4wLDQ3ODcuMjUsNDc0Ni41
LDQ3MjkuNSw0NzM0Ljc1LDQ4MDEuMjUsNDc5Mi43NSw0ODIwLjI1LDQ4MTUuNSw0ODE2LjUsNDc5
OC41LDQ3NzEuMjUsNDgxMS4yNSw0ODY5LjUsNDg4MS4wLDQ4OTUuMCw0ODk4LjAsNDkyMy4yNSw0
OTE2LjI1LDQ5NTQuNSw0OTUxLjAsNDg3MC41LDQ5MjguNSw0OTgwLjI1LDQ5NjIuMCw0OTc0Ljc1
LDUwMTUuMjUsNTAxNy43NSw1MDQ0LjAsNTA0MS4yNSw0OTcxLjI1LDUwMTguMCw1MDQ2LjUsNTAx
OS43NSw0OTkxLjUsNDk5Ni4yNSw1MDk3Ljc1LDUxMDEuNSw1MDgwLjI1LDUwOTAuMCw1MDgxLjAs
NTEwMy43NSw1MTQ2LjAsNTEzOC4yNSw1MDg1Ljc1LDUxMTEuNzUsNTE2MS43NSw1MTI5LjAsNTEy
My4wLDUxNzcuMjUsNTE2OC4wLDUxNTMuNzUsNTEwMS42Njk5MjE4NzUsNTIxNC43NSw1MjQxLjc1
LDUyODYuNzUsNTMwMi41LDUyOTMuMjUsNTI3OC4yNSw1MjY1LjI1LDUzMDguMjUsNTMwOC41LDUy
OTUuMjUsNTI2MC41LDUyNjYuNSw1MTk3LjI1LDUyNTMuMCw1MjUzLjI1LDUyNjAuMjUsNTIwNy43
NSw1MjQzLjI1LDUxNjcuNSw1MTA0LjAsNTA5Mi41LDUwNjIuMjUsNTA0OS4wLDUwMDMuNzUsNTA0
Ny41LDUxMDYuNSw1MTA3LjUsNTA4Mi4yNSw1MTMxLjUsNTE0Ny4wLDUwNjcuMCw1MDQ2LjUsNTA5
MS41LDUxNTQuNzUsNTIwNi41LDUyMTMuNzUsNTIxMi43NSw1MjM5LjAsNTI0Ni4yNSw1MjQ1LjUs
NTI2OS41LDUzMzMuMCw1MzIwLjI1LDUzMjcuMjUsNTMzMS43NSw1MzQ1LjI1LDUzMjguMCw1Mjg1
LjI1LDUzMjEuNSw1MzI0Ljc1LDUyODQuMCw1MjUzLjAsNTI5NS41LDUyOTcuMjUsNTMwNC4wLDUz
NjYuMCw1MzY0LjAsNTM1NS43NSw1MzcxLjI1LDUzODQuMCw1NDI3LjUsNTQzOC41LDU0MzcuNSw1
NDc4LjUsNTQ5MS4wLDU0NzYuNzUsNTQ3MS44OTAxMzY3MTg3NSw1NTE3LjAsNTUzNy4wLDU1NDMu
NSw1NTQ2LjAsNTUyMS41LDU1MzMuNzUsNTU2OC43NSw1NTkwLjI1LDU2MjEuNSw1NjI1LjI1LDU2
MzEuMjUsNTY4OC4wLDU2MzkuNzUsNTY2NC43NSw1NjgzLjAsNTcxNy4yNSw1NjM5LjAsNTU5NC41
LDU1NTMuNzUsNTYxMC43NSw1NTk5LjI1LDU0NzIuMCw1NDQxLjI1LDU0OTkuMCw1NTAzLjAsNTQ3
Mi41LDU1NTguMCw1NDgwLjI1LDUzNzYuMCw1MjE3LjUsNTI2Ni4yNSw1MjI3LjUsNTM0OC4yNSw1
MzcwLjI1LDUzNjkuNzUsNTQ1OS4wLDU0NzcuMCw1NTY3LjUsNTU3OC4yNSw1NjMwLjAsNTYxOS43
NSw1NjQxLjUsNTU5NC4wLDU2NTIuNSw1NjM3LjAsNTY0NC43NSw1NjEwLjI1LDU2MTAuMCw1NjYx
LjAsNTU0MS43NSw1NTMwLjAsNTUxMi4yNSw1NDE5LjUsNTQ3OS41LDU1MDQuMCw1NTYxLjI1LDU2
MDIuMjUsNTYyOS43NSw1NjM4LjAsNTYzOS4wLDU2MjAuNzUsNTcxNy43NSw1Njk5Ljk5MDIzNDM3
NSw1Nzc2Ljc1LDU3OTIuMCw1Nzc5LjAsNTgwNC41LDU3OTEuMjUsNTgxNC4yNSw1NzU5Ljc1LDU3
NjAuMjUsNTc0OS41LDU4MDAuMCw1NzQ0Ljc1LDU4MDAuNSw1ODQxLjI1LDU4MjkuMCw1ODU5Ljc1
LDU5MDguMjUsNTg2Mi43NSw1ODg3LjAsNTg4Ny4wLDU5MDYuMCw1ODk2LjI1LDU4OTIuNSw1ODM3
Ljc1LDU4NDkuMCw1ODQ2LjAsNTg2MS41LDU4NzEuMCw1ODUyLjAsNTczOC41LDU3NTguMjUsNTc0
My4yNSw1ODEyLjI1LDU5NTguMjUsNjAwMy43NSw2MDI1LjI1LDYwMzEuNzUsNjAxMy4wLDYwMTYu
MCw1OTc4LjI1LDU4OTYuNSw1OTIwLjAsNTkzOC43NSw1OTM3Ljc1LDU5NzAuNSw1OTg3LjAsNjAw
Ni41LDYwMzguMjUsNjAxNS4wLDYwNTEuNSw2MDYxLjc1LDYwNjMuMjUsNjA5OC41LDYwODguNzUs
NjA5OS4wLDYwNjUuNzUsNjA0Ni4yNSw2MDkyLjc1LDYwNjAuNzUsNjA1NS41LDYwODAuNSw2MDUz
Ljc1LDU4NzIuMjUsNTg2OC43NSw1ODQwLjI1OTc2NTYyNSw2MDM2LjAsNjA5OC4wLDYwOTUuMjUs
NjAyNy4wLDU5NTguNzUsNTkzNS43NSw1OTE2LjUsNTk4OS41LDYwMjAuNSw1OTU0LjI1LDU5NTku
MjUsNTk0NC43NSw1ODY2LjI1LDU4NzQuNSw1ODgyLjI1LDU5ODkuMCw1OTc1LjUsNjAzMy41LDYw
ODQuMjUsNjEyMC41LDYxNTIuMCw2MTMzLjI1LDYwNDYuNzUsNjA5Ny4wLDYwNjcuNSw2MDk5LjI1
LDYwNjcuMjUsNjAyMi4yNSw2MDYzLjAsNjA4Ni41LDYxMDYuMCw2MDQ5LjUsNjA4OC43NSw2MDky
LjI1LDYwNzIuNzUsNjEzNS4yNSw2MTMyLjAsNjE0Ni43NSw2MTYzLjAsNjEzNi41LDYwMjkuMCw2
MDAwLjc1LDU5NzAuMCw1OTcwLjc1LDU4NzYuMjUsNTk2My4yNSw1ODYwLjc1LDU3ODkuNSw1ODUx
LjI1LDU3NDYuMjUsNTc3Ni4wLDU2MjAuNzUsNTU3Ny4wLDU2MDQuNzUsNTUyNy41LDU2NDAuMCw1
NjgwLjI1LDU2MTguMCw1Njc4LjUsNTY2Mi41LDU2MTcuNzk5ODA0Njg3NSw1ODE1LjUsNTgyNi41
LDU3NTkuNSw1NzM5LjI1LDU2MjMuMCw1NjUzLjI1LDU2NzQuNSw1NzEyLjI1LDU0MzIuNzUsNTEx
MC4yNSw1MDk3LjI1LDUwMjAuMjUsNTQ5MS4wLDUzMDIuMCw1MzkxLjI1LDU0NDAuNzUsNTQyOC4y
NSw1MzA1Ljc1LDUzMTIuNzUsNTE4NC43NSw1MzE0Ljc1LDU0MDEuNzUsNTUxMS4yNSw1NTQ5Ljc1
LDU1NTMuMCw1NTgzLjc1LDU1ODcuMCw1NjIzLjI1LDU3MDkuMCw1NjcxLjc1LDU2MjUuNzUsNTY1
Mi4wLDU2ODQuNSw1Njc4LjAsNTg2NS4wLDU5MDQuNSw1OTA4LjUsNTkzMy4yNSw1OTc1LjUsNTk4
Mi41LDU5NTkuNzUsNTg2MS4yNSw1ODU2Ljc1LDU4MTcuMCxudWxsLDU5MzQuMjUsNTkwMi43NSw1
OTIyLjc1LDU5MTYuMCw1OTQ3LjI1LDU5ODEuNSw1OTgxLjAsNTk0Ni4wLDYwMDYuNzUsNjAxMC4y
NSw2MDQ1LjAsNjAyOS4wLDYwNDkuNSw1OTc5LjI1LDYwMzUuNzUsNTk4NS4wLDU5ODEuNSxudWxs
LDYwMTAuMjA5OTYwOTM3NSw2MDc3LjAsNjE0Ni4yNSw2MTQ3LjAsNjE5NS4wLDYyMjMuNzUsNjI1
My43NSw2MjQ4Ljc1LDYyNzUuMCw2MzI0LjI1LDYyODMuNSw2Mjc2LjAsNjI3Mi4wLDYzMDcuMjUs
NjMyNC4yNSw2MzAwLjAsNjMxMS4wLDYyODQuMCw2MzAzLjI1LDYzNDAuNSw2MzM0Ljc1LDYzNDQu
NzUsNjM0Ni43NSw2Mzk2LjI1LDY0MDEuNSw2NDI1LjAsNjQyMi43NSw2NDA2LjAsNjM5Ni4yNSw2
Mzc0LjI1LDYyNjQuNSw2MzU2LjAsNjMyNS4yNSw2MzcxLjAsNjM2Ni41LDY0MTMuNSw2Mzk5Ljc1
LDY0NjguNSw2NDg4Ljc1LDY0OTAuNSw2NDcxLjUsNjQ2OS4yNSw2NDMyLjUsNjQxMy4yNSw2Mzg4
LjI1LDY0ODMuMjUsNjQ1NS41LDY0ODIuNSw2NDk2LjAsNjUxNy41LDY0NzIuNzUsNjQyNS41LDY0
NTcuMjUsNjUxMC43NSw2NDg5Ljc1LDY1MDYuMCw2NTIxLjc1LDY1MzkuNzUsNjU5Mi41LDY1ODgu
MjUsNjYyMS41LDY2MTAuNzUsNjYwMS4yNSw2NjM1LjAsNjY1OC43NzAwMTk1MzEyNSw2NzUyLjUs
NjcxNS4wLDY2OTIuMjUsNjY1OS43NSw2Njk2LjUsNjcxMy41LDY3MzguNzUsNjc2MS41LDY3NjYu
NzUsNjc2NC4wLDY3ODguNzUsNjc2MS41LDY4MDEuMjUsNjc3OS4yNSw2NTk1LjI1LDY2OTQuNzUs
NjY4Ni41LDY3MTUuMCw2NjY4Ljc1LDY3MDIuNSw2NzczLjc1LDY3NzMuMjUsNjczNy4wLDY3NzUu
MCw2ODI3LjAsNjkwOC4yNSw2OTI1Ljc1LDY5MjIuNzUsNjg1NS41LDY4NzQuMCw2ODgyLjc1LDY4
MDEuNzUsNjgyNS4yNSw2NzQ3LjUsNjc1My43NSw2ODU2Ljc1LDY4NzEuNSw2ODc1Ljc1LDY3NjAu
MCw2NzU1LjI1LDY2OTIuMCw2NjM5Ljc1LDY2NjEuNSw2NTU3LjUsNjYyMC4yNSw2NzIxLjI1LDY3
ODEuNSw2ODI4LjAsNjg1OS41LDY4MjYuNzUsNjg0MC4yNSw2ODYyLjAsNjg2Ni43NSw2ODc4LjI1
LDY4NTUuNzUsNjg0OC4yNSw2ODkxLjc1LDY5MDcuMjUsNjgzMC43NSw2ODIzLjAsNjgwMS4wLDY3
MjYuNSw2Nzc4LjI1LDY3OTYuNTQwMDM5MDYyNSw2OTMwLjI1XSwibG93IjpbMzgxNC41LDM4MzYu
NSwzODIyLjUsMzgxOS4wLDM5MDkuNzUsMzg5MS41LDM5MzQuNSwzOTU0LjAsMzk2MS43NSwzOTk2
Ljc1LDM5NDMuNzUsMzkwMS43NSwzOTExLjc1LDM5ODAuMjUsNDAwNS4yNSwzOTYzLjI1LDQwMjcu
MjUsNDA1Ny4yNSw0MDI5LjUsNDAwNy41LDQwNDguNSw0MTM2Ljc1LDQxMzIuNSw0MTA0LjAsNDA5
OC4yNSw0MTIxLjI1LDQwNzguMjUsNDA2MC43NSw0MDc4Ljc1LDQxMDMuNzUsNDExMy4wLDQwOTUu
MCw0MDU1Ljc1LDQwMDIuMCwzOTgzLjc1LDM5NzQuMjUsMzk0Ny41LDM5NzMuMCwzOTY1LjAsMzk0
My4wLDM5MjUuMCwzOTc0LjAsNDA0MS43NSwzOTgyLjUsMzk3MS41LDM5MDkuNSwzODQ2LjI1LDM4
MDguNzUsMzg1NS4yNSwzODM0LjAsMzg2My4yNSwzOTIzLjAsMzg5Ny4yNSwzOTgxLjc1LDM5NjYu
MjUsMzk0OC41LDM5MzcuMCwzOTk3LjUsMzk4MC43NSw0MDA2LjAsNDA1Mi41LDQwNzguMCw0MTIy
Ljc1LDQxMTUuMjUsNDA5OS4wLDQwOTYuNSw0MDk4Ljc1LDQxMjguNzUsNDExMy41LDQxMTAuMjUs
NDEzOC4wLDQxNDguMCw0MTY0LjUsNDE1MC41LDQxMzcuMCw0MTM1LjI1LDQxMzMuNSw0MDkxLjUs
NDA2OC43NSw0MDgwLjc1LDQxMzEuNSw0MTc4LjUsNDEwNS41LDQwOTUuMCw0MDYyLjI1LDQwNzYu
NzUsNDEzNy41LDQxMzEuMCw0MTEyLjI1LDQxMjEuNSw0MTExLjc1LDQxMjMuMCw0MTIwLjAsNDEy
Mi4wLDQxNjEuMjUsNDE5MS41LDQxODYuNSw0MTUzLjAsNDExNC4wLDQxMzEuNSw0MTQ2LjAsNDIw
MC4wLDQxNzQuMCw0MTc4LjAsNDIyOS4wLDQyNzMuMCw0MjY4LjUsNDI2OS4yNSw0MjYyLjc1LDQy
ODQuMCw0MzA1LjI1LDQzMzUuNzUsNDMzOS43NSw0MzUwLjAsNDQxNS4yNSw0NDEwLjUsNDQwMy41
LDQzOTMuMCw0MzgxLjUsNDM2OC41LDQzNzEuNSw0Mzk5LjI1LDQ0MDkuNzUsNDQzMy4wLDQ0Nzku
NSw0NDY2LjI1LDQ0MTkuNSw0NDMxLjUsNDQxMS4yNSw0NDM5LjAsNDQ3MC4wLDQ1MDkuMjUsNDUz
MS4wLDQ1MjguMCw0NTQ0Ljc1LDQ1ODIuMjUsNDU1Ny4yNSw0NTYxLjc1LDQ1NjAuMCw0NTc5LjI1
LDQ1NzMuNzUsNDU1My43NSw0NTU4LjAsNDU5NS4yNSw0NTkxLjAsNDUyNy43NSw0NTA1Ljc1LDQ0
OTMuNzUsNDUwMC41LDQ0ODIuMCw0NDc4LjI1LDQ0NzMuNSw0NDU5LjAsNDQ2NS4wLDQ0NDcuMCw0
NDE3LjAsNDM3Ny43NSw0MzUwLjAsNDM3Mi4yNSw0Mzk0LjI1LDQzOTkuNSw0Mzc4LjUsNDM2NS4y
NSw0NDE0LjUsNDQzMy41LDQ0OTYuMjUsNDUxMi43NSw0NTA3LjI1LDQ0OTkuMjUsNDQ0Ny4wLDQ0
MzQuMjUsNDQ0My4wLDQ0NTkuMjUsNDQ1OC43NSw0NDQ2Ljc1LDQ0NzAuMjUsNDQ4MC4wLDQ0ODcu
MCw0NDYyLjI1LDQ0NDMuMjUsNDM2Ni41LDQzNTcuMjUsNDMzOC4yNSw0MzA1LjUsNDI3Ny4wLDQz
MDEuMCw0MzExLjAsNDI5NS41LDQyNTEuMjUsNDIzNS41LDQyNTguMCw0MjQyLjI1LDQyOTkuNSw0
MzY2LjI1LDQzNzcuMjUsNDM1NS41LDQzNDAuNzUsNDM1NC41LDQzNjUuNzUsNDMzMC43NSw0Mjky
Ljc1LDQyNDMuNSw0MjEzLjI1LDQyNDIuMCw0MjAzLjc1LDQxNDYuMjUsNDEyMi4yNSw0MTQzLjUs
NDE2Ni43NSw0MTkxLjI1LDQyNTcuNzUsNDMyNS41LDQzNjQuMjUsNDM2Ni4wLDQzNzUuMCw0MzU3
Ljc1LDQzNTQuMjUsNDQwNy4yNSw0NDIwLjI1LDQ1MTAuNzUsNDUwMS43NSw0NTEyLjc1LDQ1MjAu
MCw0NTM2Ljc1LDQ1NDMuMCw0NTYyLjAsNDU2Mi4wLDQ1NTIuMCw0NTQ3LjAsNDU1NS41LDQ1NDQu
NzUsNDU2Mi41LDQ1NTMuNSw0NTU1LjUsNDU1Mi4wLDQ1NDguNzUsNDU2MS43NSw0NTk5LjUsNDYx
MC41LDQ2NDUuMCw0Njk0LjI1LDQ2OTQuMjcwMDE5NTMxMjUsNDc2OS41LDQ3ODcuNzUsNDc0My4y
NSw0NzUxLjAsNDc4NC43NSw0ODAwLjI1LDQ4MTYuNSw0ODI4LjAsNDc5Ni43NSw0NzY1LjUsNDc0
MS4wLDQ3MjcuMCw0NzAyLjAsNDcxNS4yNSw0NzY3LjUsNDc4Ni4wLDQ3NzIuNzUsNDc5MS41LDQ3
NzkuNSw0NzQ2LjI1LDQ3NjMuNSw0ODA4LjUsNDg3Mi41LDQ4NzQuMjUsNDg4OS4wLDQ4OTMuMjUs
NDg5OC41LDQ5MDEuNzUsNDkzMy4wLDQ4NjYuMCw0ODcyLjUsNDkyNS43NSw0OTM3Ljc1LDQ5NTQu
NSw0OTcwLjAsNTAwMy43NSw1MDEzLjAsNTAzMS41LDQ5MzYuNSw0OTY4Ljc1LDUwMTEuMCw1MDEy
Ljc1LDQ5NjguMjUsNDk1OS4wLDUwMTUuMjUsNTA5Mi4wLDUwNzYuMjUsNTA2Ny4wLDUwNjMuMjUs
NTA2MC4wLDUwODkuMjUsNTEzMi4wLDUwNjMuMCw1MDgzLjc1LDUwODYuNSw1MTIxLjc1LDUwOTQu
NzUsNTExMi43NSw1MTUzLjAsNTEyNC4yNSw1MTAxLjY2OTkyMTg3NSw1MTgxLjc1LDUxODYuMCw1
MjMzLjAsNTI5My41LDUyODcuNzUsNTI3Mi41LDUyNjMuMCw1MjcwLjc1LDUzMDEuMCw1MjgyLjI1
LDUyMzUuMCw1MjQ0LjUsNTE5Mi41LDUxOTEuNSw1MjM2LjUsNTIwOC4yNSw1MTc2LjUsNTE3My41
LDUxNTAuMCw1MDk0LjAsNTA3OC43NSw1MDQ3LjAsNTAzOC41LDQ5NjMuNSw1MDA2LjAsNTAzNy43
NSw1MDcyLjI1LDUwMjIuMjUsNTEwNC41LDUxMTguNzUsNTA1MS4wLDUwMzcuNzUsNTAzNi4yNSw1
MDk5LjI1LDUxNTUuNzUsNTIwMi4yNSw1MTg4Ljc1LDUxOTUuMCw1MjMyLjc1LDUyMzMuMjUsNTIx
Ni43NSw1MjY2LjI1LDUzMTUuNSw1MzA1Ljc1LDUzMjMuNzUsNTMyMi41LDUzMDYuNzUsNTI3My41
LDUyODUuNzUsNTI5Ni43NSw1MjY4LjI1LDUyMzguMjUsNTIwNS41LDUyNDYuNzUsNTI2Mi4wLDUz
MDIuNSw1MzQ1LjI1LDUzMjkuMCw1MzM4LjI1LDUzMzQuNSw1MzgwLjAsNTQwOC41LDUzOTcuNzUs
NTQyNC43NSw1NDczLjUsNTQ1OC41LDU0NjAuNSw1NTEwLjI1LDU1MTEuMCw1NTE2LjI1LDU1MTUu
NzUsNTUxMC43NSw1NTA0LjUsNTUwMi43NSw1NTU5Ljc1LDU1ODUuMCw1NjEwLjc1LDU2MjYuMjUs
NTYzMC43NSw1NjMwLjAsNTYyMS4yNSw1NjY1LjUsNTY3My4wLDU2MzEuNzUsNTU3MC4yNSw1NTQy
LjAsNTU1My41LDU1ODcuNzUsNTQ2Mi4wLDU0MzIuNSw1NDQ1LjI1LDU0ODEuMCw1NDMzLjAsNTQ1
MS41LDU0NDQuNzUsNTMzMS43NSw1MTIwLjAsNTIyMS43NSw1MTk2Ljc1LDUxODIuMCw1MzE5LjUs
NTM0Ny43NSw1MzY3LjUsNTQzOC43NSw1NDcxLjc1LDU1MzYuNSw1NTY1LjI1LDU2MDcuNzUsNTYx
My41LDU1ODIuNzUsNTU5Ny43NSw1NjE5Ljc1LDU2MTEuNSw1NTc2LjAsNTU2MS4yNSw1NTk0LjI1
LDU1MTYuNzUsNTUwNi43NSw1NDkwLjAsNTM5NC4wLDU0MDUuMjUsNTQ0OC4yNSw1NDEyLjAsNTU0
MC4yNSw1NTk3LjI1LDU2MDkuMjUsNTYxNy4wLDU2MTMuNzUsNTYzMS41LDU2OTkuMjUsNTc0NS4y
NSw1NzU0Ljc1LDU3NjguMCw1Nzc4LjI1LDU3ODIuMCw1NzU2LjI1LDU3MzMuMCw1NzI0LjAsNTcy
NS43NSw1NzQxLjAsNTczNC4yNSw1NzI1LjI1LDU3ODAuNzUsNTgxMS41LDU4MTYuMCw1ODUwLjAs
NTg1MC4wLDU4NTMuMjUsNTg3MS4yNSw1ODc2LjI1LDU4NjUuMCw1ODYxLjI1LDU4MDEuMCw1ODIy
LjUsNTgzNS4wLDU4NTcuMCw1ODM3LjUsNTg0MC4yNSw1NzMzLjI1LDU3MzIuNSw1NzI0LjI1LDU3
MzUuMCw1ODE0Ljc1LDU5NTEuMCw1OTkwLjI1LDYwMTMuNSw1OTg2Ljc1LDU5OTEuNzUsNTk2NC4y
NSw1ODc2Ljc1LDU4ODYuNSw1ODU1LjAsNTg4MC4wLDU5MDUuMjUsNTk0MC43NSw1OTgyLjUsNTk3
Ni4yNSw2MDAwLjI1LDYwMTQuNzUsNjAzNi4wLDYwNDcuNSw2MDYzLjAsNjA4MS41LDYwNzYuMCw2
MDYwLjAsNjAzOS43NSw2MDQ1LjUsNjA1NS41LDYwNDEuMjUsNjA1MS41LDYwNDAuNzUsNTg0MC4w
LDU4NjUuNSw1ODAwLjc1LDU5NjUuMCw2MDMwLjAsNjA2My4yNSw1OTgyLjc1LDU5MTguMjUsNTkx
Ny4yNSw1ODc0Ljc1LDU5MTEuMjUsNTk4MC43NSw1OTM1LjAsNTkxNy4wLDU5MjkuMjUsNTg0NS4y
NSw1ODA5LjAsNTg0Mi41LDU4NzkuNSw1OTYxLjc1LDU5NjguMCw1OTk0LjUsNjA4Ny4wLDYxMDEu
NSw2MTIyLjAsNTk0OC4wLDYwMjMuNSw2MDQyLjI1LDYwNTYuNSw2MDU3Ljc1LDU5MzUuNSw1OTg3
LjAsNjAyMC4yNSw2MDcwLjAsNjA0MS4yNSw2MDE0LjAsNjA1Ny43NSw2MDIwLjc1LDYwNTMuNSw2
MTIxLjI1LDYxMTguMjUsNjEyOS4yNSw2MTAyLjc1LDYwMjQuNSw1OTk0LjUsNTkyNC4wLDU5NDUu
NSw1ODczLjAsNTg0OC4wLDU4MjEuNzUsNTc0NC4wLDU3NTAuNzUsNTcyMC4wLDU2NzMuMCw1NTcx
LjUsNTUzNC4wLDU1NTAuMjUsNTUwOS4yNSw1NTM4Ljc1LDU1OTkuMCw1NjAwLjAsNTYwNi4yNSw1
NjMxLjUsNTU5Ny41LDU3MzkuMCw1ODAyLjI1LDU3NDMuMCw1NzIwLjAsNTYwMi4yNSw1NTMzLjc1
LDU2MDAuMjUsNTU2Ni4yNSw1NDE1LjI1LDUwNzQuMCw0ODMyLjAsNDk0MC41LDQ4NzEuNzUsNTE0
Ni43NSw1MjA2LjAsNTM5MS4wLDU0MTMuMCw1MjUxLjAsNTI4NS41LDUxMjcuMjUsNTE3MS43NSw1
Mzc3Ljc1LDUzNTUuMjUsNTQ4MC4yNSw1NDkyLjAsNTUyMS41LDU0NTUuNSw1NjAxLjc1LDU2MDEu
MCw1NjU1LjI1LDU2MDUuMCw1NTk2LjAsNTYzNi41LDU2NjIuNSw1NzM0LjI1LDU4MzUuNzUsNTg5
MC4wLDU4NjcuMCw1OTIzLjAsNTg5Mi43NSw1OTI2Ljc1LDU4NDcuNzUsNTgyOC43NSw1NzU2LjUs
bnVsbCw1ODEzLjAsNTg5MC4wLDU4ODQuMCw1ODUzLjI1LDU4NjcuNSw1OTA5LjI1LDU5NzQuMCw1
OTI4Ljc1LDU5MzAuMCw1OTkyLjI1LDU5OTEuMjUsNjAwNi4yNSw1OTg3Ljc1LDU5MjcuNSw1OTQ0
LjAsNTk3Ni43NSw1OTY0Ljc1LG51bGwsNTkxOC4yNSw1OTU5LjAsNjA3NS4yNSw2MTMwLjc1LDYx
NDEuMjUsNjE4My4yNSw2MjIzLjI1LDYyMjcuMjUsNjIzNS41LDYyNzAuNSw2Mjc2LjUsNjI0Ni4y
NSw2MjU0LjUsNjI2MC4wLDYyODcuNSw2Mjc2Ljc1LDYyNTkuNzUsNjI3Mi41LDYyNDEuMCw2Mjg4
LjI1LDYzMjMuMjUsNjMyOS43NSw2MzE4Ljc1LDYzNDIuNzUsNjM5MS41LDY0MDEuMCw2NDA4Ljc1
LDYzOTYuMjUsNjM2Ni43NSw2MzU3LjUsNjIzOS41LDYyNTEuMjUsNjMxNS41LDYzMTMuMjUsNjMz
NC41LDYzNjkuMjUsNjM4Ny41LDYzOTEuMjUsNjQ2MS4wLDY0NTMuMjUsNjQ2MS41LDY0NTYuMCw2
NDE5LjI1LDYzNjIuNzUsNjM3MC4yNSw2MzY0LjAsNjQ1My4wLDY0MzAuNzUsNjQ1OS4yNSw2NDcx
LjAsNjQ1NS41LDYzNzEuNzUsNjQyNS41LDY0NTQuNSw2NDUyLjAsNjQ4MC4yNSw2NDg5LjI1LDY1
MjIuNSw2NTM1LjUsNjU3Ni4wLDY1ODUuMjUsNjYwNC4yNSw2NTU0LjAsNjYwNS43NSw2NjIyLjc1
LDY2OTUuMjUsNjcwMS43NSw2Njc4LjAsNjYyNC4yNSw2NjUzLjI1LDY2OTYuMjUsNjY5My4wLDY2
ODAuMCw2NzQxLjUsNjc1NC4wLDY3NjYuNSw2NzQ3LjI1LDY3NTguMjUsNjc2MC43NSw2NTQwLjI1
LDY2MzIuMCw2NTkzLjI1LDY2NTEuNSw2NjMyLjAsNjU3MS4yNSw2Njk0LjAsNjc1OS4yNSw2Njkw
Ljc1LDY3MTcuNSw2Nzc2LjUsNjg2NS43NSw2OTAxLjUsNjg4Mi4yNSw2ODUxLjAsNjg0My41LDY4
NDkuNSw2Nzg2LjI1LDY3NDguNSw2NzMzLjUsNjY1NS41LDY3NzIuMCw2ODMwLjUsNjg1Mi4wLDY3
NDYuMCw2NjcwLjUsNjY1OC41LDY1OTQuMCw2NjEzLjI1LDY1NTAuNSw2NTI1LjAsNjYyNS4wLDY2
NzQuNSw2Nzc4LjI1LDY4MjQuMjUsNjgwMi4wLDY4MTIuMjUsNjgxNy41LDY4MzYuMjUsNjg1Ni43
NSw2ODM1LjI1LDY4NDQuMCw2ODMwLjc1LDY4MTcuNSw2ODA1LjAsNjgwNi4yNSw2NzYyLjAsNjcy
My43NSw2NzIwLjI1LDY3NjguMCw2OTI5LjVdLCJoaWdoIjpbMzkwNi43NSwzODk2LjI1LDM4ODUu
NSwzOTI4Ljc1LDM5NzMuMjUsMzk0My43NSwzOTkyLjUsNDAyMS41LDQwMjQuMjUsNDAzNS4yNSw0
MDMzLjUsMzk0OC43NSwzOTkwLjUsNDA1Ni43NSw0MDQ3LjUsNDA0MC41LDQwNzcuMCw0MTA5LjI1
LDQwODYuMCw0MDkxLjI1LDQxNjMuMjUsNDIwOC41LDQxOTQuMCw0MTQzLjAsNDE4OC4yNSw0MTc5
LjI1LDQxNzAuMjUsNDEwNC4yNSw0MTUwLjc1LDQxODYuNSw0MTYxLjc1LDQxNjguNSw0MDk2LjAs
NDA4OS4yNSw0MDI1LjAsNDAzNC4yNSw0MDIzLjI1LDQwMjQuNzUsNDAwMy43NSwzOTkxLjAsMzk5
NS4yNSw0MDUzLjAsNDA4Mi41LDQwNjQuNSw0MDAzLjI1LDQwMTkuNzUsMzk0MS43NSwzOTM4Ljc1
LDM5MzguMCwzOTMxLjAsMzk2Ni41LDM5NzQuMCwzOTg5LjUsNDA0My4yNSw0MDczLjc1LDQwMzku
NSw0MDEwLjc1LDQwMzQuMjUsNDAyMy43NSw0MDYxLjI1LDQwODcuNzUsNDE0Mi41LDQxNTcuNzUs
NDE3MS43NSw0MTM1LjUsNDEzNS4yNSw0MTQzLjAsNDE1MS43NSw0MTc3Ljc1LDQxNzcuMCw0MTg5
LjAsNDE4MC41LDQxOTguMjUsNDE4Ny41LDQxNzMuNSw0MTYxLjAsNDE2NC4yNSw0MTU4LjUsNDEx
Ni4yNSw0MTY2LjUsNDE5My43NSw0MjA2LjI1LDQxOTEuNSw0MTY3LjAsNDExOC4wLDQxNjMuMjUs
NDE2MS4wLDQxNTMuMCw0MTczLjI1LDQxNjguNSw0MTY0LjUsNDE1Ni4yNSw0MTUxLjUsNDE3OS4w
LDQyMTUuNzUsNDIyNy4yNSw0MjIxLjc1LDQyMjIuNzUsNDE2Ni4yNSw0MTc1LjUsNDIyMS4yNSw0
MjQzLjI1LDQyMTcuNzUsNDIzOS43NSw0Mjk3Ljc1LDQzMDUuNzUsNDI5NC43NSw0MzA0Ljc1LDQz
MDIuNSw0MzI1LjUsNDM0Ni41LDQzNzcuNzUsNDM5NC43NSw0NDQxLjAsNDQ1My4zNTAwOTc2NTYy
NSw0NDYyLjAsNDQzOC41LDQ0MjcuMCw0NDI2LjI1LDQ0MDMuMCw0NDI0Ljc1LDQ0MzAuMjUsNDQz
OC4wLDQ0OTguMCw0NDk0LjAsNDQ5My43NSw0NDgzLjUsNDQ3Ni4wLDQ0NDguMjUsNDQ3OC41LDQ1
MjMuNzUsNDU1MS41LDQ1NjAuNSw0NTY1Ljc1LDQ1OTQuNSw0NjA5LjI1LDQ1OTQuMjUsNDU5MC4w
LDQ1OTIuNSw0NjA4Ljc1LDQ2MTAuNzUsNDYzNC41LDQ2MTYuNSw0NjE5LjI1LDQ2MjEuNzUsNDU5
My41LDQ1NDcuNSw0NTYwLjc1LDQ1NDEuNzUsNDU0MS4wLDQ1MzYuMjUsNDU0NC43NSw0NDk2LjI1
LDQ1MDcuNzUsNDUxNy43NSw0NDY3LjI1LDQ0MzYuNzUsNDM5Ni4wLDQ0MjEuMCw0NDQwLjAsNDQ3
Ni4yNSw0NDg1LjUsNDQyOS4wLDQ0NDkuNSw0NTA5LjUsNDUzMC43NSw0NTQxLjI1LDQ1NDcuNzUs
NDUzMS4yNSw0NTAzLjc1LDQ0NzEuNzUsNDQ3Ny41LDQ0OTMuNSw0NDkxLjAsNDQ4MS4wLDQ1MTMu
MCw0NTE3Ljc1LDQ1MTQuNSw0NTA5LjUsNDUwOC4wLDQ0NDcuMCw0Mzk5LjAsNDM4My41LDQzODIu
MCw0MzM2LjUsNDM1NS43NSw0MzcxLjI1LDQzNTUuNSw0MzM1Ljc1LDQzMDQuMCw0MzAyLjAsNDM1
OC41LDQzNzUuNzUsNDQxOS4wLDQ0MTkuNzUsNDQzMC41LDQ0MDcuNzUsNDQxNC4yNSw0NDIzLjI1
LDQzOTkuMjUsNDM2Ni41LDQzMDQuMjUsNDI4MC43NSw0MjkwLjUsNDI3My41LDQyMDUuMCw0MTg1
LjAsNDE5Ny41LDQyMTUuMCw0MjY0Ljc1LDQzMzkuNzUsNDM5MS43NSw0Mzg5LjUsNDQwMy4yNSw0
NDA3Ljc1LDQ0MTMuMCw0NDM1LjUsNDQzNi43NSw0NTI0LjI1LDQ1NDEuMjUsNDUyOS41LDQ1Mzku
NSw0NTcxLjAsNDU2Ny4wLDQ1ODAuNSw0NTcyLjc1LDQ1NzQuMCw0NTcwLjAsNDU3Ny4yNSw0NTk3
LjAsNDU3OS41LDQ2MDcuNzUsNDYwNC41LDQ1ODUuNSw0NTk4LjUsNDU5Ni4wLDQ2MTMuNzUsNDYy
Ny4yNSw0NjQ5Ljc1LDQ3MTEuNzUsNDczOS4yNSw0NzM2LjUsNDgwMi4yNSw0ODIxLjUsNDgzMC43
NSw0Nzk4LjI1LDQ4MjEuNzUsNDgzNC41LDQ4MzYuNSw0ODQxLjUsNDg0MS4wLDQ4MjguMCw0Nzkw
Ljc1LDQ3NjYuNSw0NzYwLjI1LDQ4MDMuMjUsNDgwNC4wLDQ4MjguNSw0ODM4LjAsNDgzNi41LDQ4
MjMuMCw0ODAwLjc1LDQ4MTcuMCw0ODc0LjI1LDQ4OTguMjUsNDkwMi4wLDQ5MzMuMjUsNDkyNi41
LDQ5MzQuMjUsNDk1Ni4wLDQ5NTcuMjUsNDkzOC4wLDQ5NjMuNzUsNDk5Ny43NSw0OTgwLjc1LDQ5
NzguMjUsNTAyMC4wLDUwMjAuMCw1MDQ4LjUsNTA2Ni41LDUwNDAuMCw1MDIyLjUsNTA1MS43NSw1
MDU5LjI1LDUwMjkuNSw1MDIwLjUsNTEwNy43NSw1MTIzLjUsNTEwOC4wLDUwOTMuMCw1MDkxLjI1
LDUxMTQuNSw1MTQ5LjI1LDUxNTcuNzUsNTEzNS41LDUxMzQuNSw1MTcwLjUsNTE5My4wLDUxMzMu
MjUsNTE4My4wLDUxODMuNzUsNTE4OS41LDUxNjcuMCw1MjQwLjI1LDUyNDQuNzUsNTI5Ny43NSw1
MzIyLjc1LDUzMTEuNzUsNTI5NS4wLDUzMDAuNSw1MzEzLjc1LDUzMjEuMCw1MzMzLjUsNTI5Ni4w
LDUyODAuNzUsNTMwOC41LDUyNzIuNSw1MjY5LjI1LDUyNzQuMjUsNTI4NS4wLDUyNTcuNSw1MjQ4
Ljc1LDUyMTMuMjUsNTEyMy4yNSw1MTIwLjUsNTA5NS4yNSw1MDU4LjAsNTA3Ni43NSw1MTEzLjUs
NTEyOC43NSw1MTMyLjc1LDUxNDYuNSw1MTU0LjI1LDUxNDguNSw1MTI2Ljc1LDUxMTMuMCw1MTY2
Ljc1LDUyMDcuNzUsNTIyNi43NSw1MjE4LjAsNTI0NC43NSw1MjY0LjAsNTI2NC4wLDUyNzQuMjUs
NTMzNy4yNSw1MzQ5LjAsNTMyOC43NSw1MzQ4LjI1LDUzNDcuNSw1MzQ5LjI1LDUzNjguMjUsNTMy
OS4yNSw1MzM5LjAsNTMyNC4wLDUyNzcuMCw1MzA3LjAsNTMxMy4yNSw1MzEyLjI1LDUzNjguMjUs
NTM3My4yNSw1Mzg1LjUsNTM3NS43NSw1Mzg2LjI1LDU0NTQuNSw1NDUyLjc1LDU0NDMuMCw1NDk0
LjAsNTQ5NC4wLDU1MTguNSw1NDgzLjc1LDU1NTguNSw1NTM5Ljc1LDU1NTEuNzUsNTU1NS4wLDU1
ODUuMCw1NTQxLjAsNTU2OS43NSw1NTk1Ljc1LDU2MjYuMCw1NjM3LjUsNTY0NS43NSw1NjkwLjUs
NTcwNy43NSw1NzA4LjI1LDU3MTguNzUsNTcyMS4yNSw1NzE3Ljc1LDU2NjQuMCw1NjA3LjUsNTYx
Ni4wLDU2MjkuNzUsNTU4NS4wLDU1MzMuMjUsNTUyOC4yNSw1NTM0LjUsNTUyNy41LDU1ODguNSw1
NjAwLjc1LDU0NzMuMjUsNTM0NS41LDUzNDIuMCw1MzU5LjI1LDUzNjEuMCw1Mzg1LjI1LDUzOTYu
NzUsNTQ2MS4yNSw1NDg3Ljc1LDU1NzEuNzUsNTU4Ni4yNSw1NjMxLjc1LDU2NDMuNzUsNTY1NS4y
NSw1NjY1LjI1LDU2NjIuMjUsNTY2OS4wLDU2NDkuNSw1NjUwLjUsNTY2My43NSw1NjY1LjAsNTY2
OS43NSw1NTY1LjAsNTU1Ny4yNSw1NTMyLjUsNTQ5My4wLDU1MDYuMCw1NTY3LjUsNTYwNy4wLDU2
NDEuNSw1NjQxLjUsNTY3NS41LDU2OTYuMjUsNTczNy41LDU3MTcuMjUsNTc4NC41LDU3OTQuMjUs
NTc5OC43NSw1ODMwLjAsNTgyMS41LDU4MjAuMjUsNTgyMi41LDU3NzMuMjUsNTc3Mi43NSw1ODA0
Ljc1LDU4MDguMCw1ODA2Ljc1LDU4NDYuNSw1ODQ0LjAsNTg2OC4yNSw1OTE4LjUsNTkxNS41LDU4
OTIuNzUsNTkyNy4yNSw1OTE1LjUsNTkxNS41LDU5MDQuMjUsNTg5My43NSw1ODcwLjAsNTkwMC43
NSw1ODg0LjUsNTg4My43NSw1ODkzLjAsNTg0NC4wLDU4MDMuNzUsNTc3Ni41LDU4MjMuMjUsNTk2
Ny4wLDYwMTMuMCw2MDQwLjUsNjA1My4yNSw2MDM2LjUsNjAzNS4yNSw2MDI1LjI1LDU5NzQuMjUs
NTkzMy4wLDU5NDcuNSw1OTU3Ljc1LDU5ODUuMCw1OTkzLjUsNjA0MC4wLDYwNDQuMCw2MDQ3LjAs
NjA2MC4wLDYwNjguNSw2MDcwLjc1LDYxMDIuMjUsNjEwNy4yNSw2MTExLjAsNjEwNS43NSw2MDc1
LjI1LDYxMDIuNSw2MDg4LjI1LDYwODUuMjUsNjA5MC41LDYwNzkuMjUsNjA3NC41LDU5MzguMCw1
ODc5LjUsNjA0My4wLDYwOTkuNSw2MTA3LjUsNjA5NS4yNSw2MDM2LjI1LDU5ODMuMjUsNTk5NS4y
NSw1OTk2Ljc1LDYwNjguMjUsNjA0NS41LDU5NzUuMCw1OTU3LjAsNTk1OS4yNSw1ODgzLjI1LDU5
MTguNSw2MDAxLjI1LDYwMTcuNSw2MDUxLjUsNjA5My4yNSw2MTM1Ljc1LDYxNTQuMCw2MTYyLjI1
LDYxMDUuMjUsNjEwNS41LDYxMTEuNSw2MTE2LjI1LDYxNDcuNzUsNjA2Mi4wLDYwNjkuMCw2MDky
LjAsNjEwOC41LDYxMjMuMjUsNjA5Ni4wLDYwOTguNzUsNjA5OC4wLDYxMzguMCw2MTQ2Ljc1LDYx
NTcuNzUsNjE2Ni41LDYxNTkuNSw2MTQyLjUsNjA2Ny41LDYwMTYuMCw2MDIzLjc1LDYwMTQuNSw1
OTcxLjAsNjAwMC41LDU4ODQuMCw1ODY5LjUsNTg1My41LDU3OTEuMCw1NzU3Ljc1LDU2NTEuNzUs
NTY3NS4wLDU2MjMuMCw1NjQ4Ljc1LDU3MDcuNSw1Njg2LjI1LDU3MTguNSw1NzE0LjI1LDU2NzQu
MjUsNTgyNS41LDU4MzcuMjUsNTgzNi41LDU3NzkuNzUsNTc0Ny43NSw1NjcyLjc1LDU2OTQuNzUs
NTc3My4yNSw1NTY0Ljc1LDU0MzUuMCw1Mjg2LjUsNTMwNS4yNSw1NTIwLjAsNTUyOC43NSw1NDE4
LjI1LDU0OTcuNzUsNTQ4NS4wLDU0MjUuMCw1MzcxLjI1LDUzMDYuNzUsNTMzOS4yNSw1NDk5Ljc1
LDU1NDEuNSw1NTYyLjI1LDU1NzguNzUsNTU5Ny4yNSw1NjI2LjI1LDU2ODIuNSw1NzI0Ljc1LDU3
MDYuMjUsNTY3My4yNSw1Njg5Ljc1LDU3NDEuMCw1NzE1LjI1LDU4NzYuMjUsNTkyNy4wLDU5MjUu
MCw1OTQ0LjUsNTk3Ny41LDU5ODcuNSw1OTkzLjUsNTk1OC4yNSw1ODk1LjAsNTg3Mi4wLG51bGws
NTk0MS43NSw1OTUyLjUsNjAwOC4wLDU5MzIuNzUsNTk1NS41LDU5OTEuMjUsNTk5OS4wLDYwMTYu
NSw2MDI1LjAsNjAyNy43NSw2MDQ5LjUsNjA3NC43NSw2MDUxLjI1LDYwNDUuMCw2MDU1LjI1LDYw
NDAuNSw2MDIwLjc1LG51bGwsNjAxOS4yNSw2MDgxLjUsNjE1NS4yNSw2MTYwLjI1LDYyMDAuMCw2
MjM5LjAsNjI2NS41LDYyNjEuNSw2Mjc5LjUsNjMzMy4yNSw2MzIyLjc1LDYzMTUuMCw2Mjg5LjAs
NjMxNS4yNSw2MzM1LjUsNjMzMC4yNSw2MzE1LjAsNjM0My4wLDYzMDguNzUsNjM0NS41LDYzNTcu
MCw2Mzc0LjAsNjM1My43NSw2NDA3LjI1LDY0MTguMjUsNjQzMS4wLDY0NTcuNzUsNjQ0Mi41LDY0
MzUuMjUsNjQ2OC41LDYzNzMuNSw2MzcwLjAsNjM3Ny41LDYzNzkuNSw2NDI2Ljc1LDY0MjUuNzUs
NjQzMS41LDY0NzAuMCw2NTAyLjUsNjQ5Ni4wLDY1MDguNzUsNjQ4NC4yNSw2NDc3LjUsNjQzOC4w
LDY0MTkuMCw2NDk2LjI1LDY0OTQuMCw2NDg3LjUsNjUwNS41LDY1MjMuMCw2NTE4LjAsNjQ5MS41
LDY0NjQuMjUsNjUxNi43NSw2NTQxLjc1LDY1MTYuNSw2NTM2LjI1LDY1NjUuMjUsNjYwMC4wLDY2
MDYuMCw2NjIzLjUsNjYzOS4wLDY2MjkuMCw2NjYyLjAsNjY2MC43NSw2NzU2Ljc1LDY3NTYuNSw2
NzI4Ljc1LDY3MDUuMjUsNjcwMy43NSw2NzM2LjAsNjc0My41LDY3NjkuNSw2NzgyLjI1LDY4MDAu
MCw2Nzk3Ljc1LDY4MDIuNzUsNjgwNy43NSw2ODEyLjI1LDY4MDYuNSw2NzExLjUsNjcyMi41LDY3
NjYuNzUsNjc1MC41LDY3MTguMCw2NzgzLjAsNjc4OS43NSw2Nzg4Ljc1LDY3ODUuNzUsNjg0MS4y
NSw2OTE2LjI1LDY5NDQuNzUsNjk1Mi4wLDY5NTMuNzUsNjkxOC41LDY5MDkuNSw2ODg0LjAsNjg1
Ny43NSw2ODQzLjUsNjc3Mi4wLDY4NjUuNzUsNjg4MC4wLDY5MDAuNSw2ODkyLjUsNjc5NS41LDY4
MDEuNSw2NzA4Ljc1LDY3MDkuMCw2NzkxLjI1LDY2NzcuNSw2NzMxLjc1LDY3OTIuNSw2ODQ2Ljc1
LDY4NjMuNzUsNjg2NC41LDY4NjMuNSw2ODczLjI1LDY4ODAuNzUsNjkwNS4wLDY4OTMuNzUsNjg3
Mi43NSw2OTA4LjAsNjkyOC43NSw2OTE1LjUsNjg3Mi41LDY4MzMuNzUsNjgyNi43NSw2ODE4LjUs
NjgwMi43NSw2OTMzLjc1XSwib3BlbiI6WzM4OTUuMCwzODQyLjc1LDM4NzEuMCwzODMzLjAsMzkx
OC41LDM5MTQuNSwzOTQxLjAsMzk5MS43NSw0MDAzLjAsNDAyMC4wLDQwMDguNSwzOTQ1LjI1LDM5
MjUuMCwzOTg3LjAsNDAzNi41LDQwMzkuMCw0MDMxLjAsNDA2NS4wLDQwNzcuMCw0MDM5LjI1LDQw
ODUuNzUsNDE0NS41LDQxNzYuMCw0MTM0LjI1LDQxMjMuNSw0MTY3LjI1LDQxMzIuMjUsNDA5OC4w
LDQxMDUuMCw0MTQ5Ljc1LDQxNDEuMjUsNDE1OS4wLDQwOTUuNSw0MDgzLjAsNDAwNy41LDQwMTAu
MCw0MDE1LjI1LDM5NzYuNSwzOTkxLjUsMzk2OC41LDM5NTkuNzUsMzk4My4wLDQwNDkuMjUsNDA1
My43NSwzOTkwLjAsMzk5Ny4wLDM5MTkuMCwzODg3Ljc1LDM4NjUuNzUsMzkyMC41LDM4OTIuNzUs
Mzk2Mi4yNSwzOTYzLjc1LDM5ODYuNSw0MDM4Ljc1LDM5NzIuNzUsMzk4OC43NSw0MDA4LjAsNDAx
My41LDQwMDYuNSw0MDU4LjAsNDA4MS4wLDQxMjcuMCw0MTUyLjUsNDEzNC4wLDQxMTMuNzUsNDEz
OS4wLDQxMzguNSw0MTM3LjUsNDExNy41LDQxNjguNzUsNDE3NC4yNSw0MTc3LjAsNDE3Ni4wLDQx
NzIuMjUsNDE1My43NSw0MTUwLjAsNDE1Ny4yNSw0MTEwLjI1LDQwODUuNSw0MTUxLjAsNDE5MC4w
LDQxNzkuNSw0MTMzLjI1LDQwODcuMCw0MDc3LjI1LDQxNTEuMCw0MTUwLjUsNDEzMy4wLDQxNTIu
NzUsNDE0NC41LDQxMzIuMjUsNDE0OC4yNSw0MTI2LjAsNDE3MS4yNSw0MjE1LjUsNDE4OS4wLDQy
MDcuNSw0MTU4LjAsNDE1Ny4wLDQxNTcuMCw0MjM5Ljc1LDQyMTMuMCw0MTg4LjUsNDIzMS43NSw0
Mjg4LjAsNDI3OS43NSw0MjkyLjI1LDQyNzMuMjUsNDI5Ny43NSw0MzA2LjUsNDM0NS4wLDQzNzIu
MCw0Mzc4Ljc1LDQ0MjQuNzUsNDQ1OC4wLDQ0MzAuMjUsNDQxMC4wLDQ0MjUuNzUsNDM5MC4wLDQz
NzUuNzUsNDQxNC4wLDQ0MjMuNzUsNDQzNS4yNSw0NDg1LjUsNDQ5Mi4wLDQ0ODEuNzUsNDQ0MS4y
NSw0NDM3LjUsNDQ0NS43NSw0NDcxLjAsNDUxMC41LDQ1MzkuNSw0NTM2LjAsNDU1MC4yNSw0NTgy
Ljc1LDQ1OTMuMjUsNDU2Ni4yNSw0NTY0LjI1LDQ1ODQuNSw0NjA0Ljc1LDQ1OTQuNzUsNDU2Ni4w
LDQ2MDguNzUsNDYxNy43NSw0NTgwLjAsNDUzNC4yNSw0NTIzLjUsNDUwMC41LDQ1MzkuNSw0NTE2
LjUsNDQ5My4yNSw0NDg3Ljc1LDQ0ODUuMCw0NTA1Ljc1LDQ0NTMuMjUsNDQyMC41LDQzNzkuMjUs
NDM4Mi41LDQ0MTAuMjUsNDQwMC4wLDQ0NzAuNSw0Mzg0LjUsNDQxOC4wLDQ0NDQuMCw0NTA4Ljc1
LDQ1MjcuMCw0NTE2Ljc1LDQ1MjEuMjUsNDUwMC4wLDQ0NjkuNSw0NDU4LjI1LDQ0NjMuNSw0NDg3
Ljc1LDQ0NjQuNSw0NDcxLjc1LDQ1MDguMCw0NDk5LjUsNDUwMy4yNSw0NDkxLjI1LDQ0NDUuMCw0
MzcwLjI1LDQzNjUuMCw0MzgyLjAsNDMyMC4yNSw0MzIzLjI1LDQzNDIuMCw0MzQ5LjAsNDMyNi4w
LDQyNjIuNzUsNDI5MS41LDQyODcuNSw0MzE1LjAsNDM2OC43NSw0MzkyLjAsNDQxNy43NSw0Mzgw
Ljc1LDQzNTYuNzUsNDQwNi4yNSw0Mzk4LjAsNDM0Ni41LDQyOTUuMCw0MjU2LjI1LDQyNTAuMjUs
NDI2OS41LDQyMDIuMCw0MTY3LjAsNDE0OC4wLDQxODQuMjUsNDIwNS4wLDQyNTguNSw0MzI3LjUs
NDM3OS4yNSw0MzgwLjAsNDM5Ny41LDQzOTMuMjUsNDM2NC41LDQ0MjUuNzUsNDQyNy4yNSw0NTE1
LjUsNDUxNC4yNSw0NTI3Ljc1LDQ1MjYuNzUsNDU2MS43NSw0NTQ3Ljc1LDQ1NjQuMCw0NTY0LjAs
NDU2OC41LDQ1NjEuNSw0NTY0LjAsNDU2Mi4yNSw0NTcxLjc1LDQ2MDMuMjUsNDU3My4wLDQ1NzMu
MjUsNDU1Ni4wLDQ1ODYuNSw0NjA3Ljc1LDQ2MjUuMCw0NjQ5LjAsNDcwOC4wLDQ3MTYuMCw0Nzcw
LjUsNDc5MC41LDQ4MTguNSw0NzUxLjAsNDc5NS43NSw0ODAwLjI1LDQ4MjcuNzUsNDgzNC41LDQ4
MzQuNzUsNDgxOC4wLDQ3OTAuNzUsNDc1MC4wLDQ3MzIuNzUsNDczNS43NSw0Nzk3Ljc1LDQ3OTAu
NzUsNDgyMC41LDQ4MTEuMjUsNDgxMi4wLDQ3OTkuNzUsNDc2OC4wLDQ4MTEuMjUsNDg3Mi41LDQ4
ODEuNzUsNDkwMC4yNSw0ODk5LjUsNDkxOS4yNSw0OTA4Ljc1LDQ5NTAuMjUsNDkzMC4yNSw0ODc0
LjUsNDk1Mi43NSw0OTc2LjAsNDk1OS41LDQ5NzEuNSw1MDE1Ljc1LDUwMTQuNSw1MDQyLjUsNTAz
NC4wLDQ5NzQuMjUsNTAxNy41LDUwNDkuNSw1MDE2LjUsNDk5MC4wLDUwMTYuMCw1MDk0LjI1LDUw
OTUuMCw1MDc3LjUsNTA5MC43NSw1MDcyLjAsNTEwMS41LDUxNDIuMCw1MTMzLjc1LDUwOTEuMCw1
MTE0LjI1LDUxNTkuMjUsNTEzMi41LDUxMjkuMCw1MTc2LjAsNTE3MS41LDUxNTIuMjUsNTE4NS43
NSw1MjE1LjI1LDUyMzkuNzUsNTI5NC43NSw1MzA2Ljc1LDUyOTAuNSw1MjgwLjc1LDUyNzMuMjUs
NTMwOC4wLDUzMTQuMjUsNTI5NC41LDUyNjIuNSw1MjcwLjc1LDUxOTkuNzUsNTI2My4yNSw1MjU4
LjAsNTI2NC4yNSw1MjAyLjAsNTI0NC4wLDUxNjYuNSw1MTAxLjI1LDUwOTYuMjUsNTA2My4wLDUw
NDcuMjUsNTAxNC4yNSw1MDUxLjAsNTExNS4yNSw1MDcwLjAsNTEzMi4wLDUxNDAuMjUsNTE0OC41
LDUwNTAuMCw1MDU3LjAsNTExMC4yNSw1MTY2Ljc1LDUyMDQuNzUsNTIxMS43NSw1MjA5LjI1LDUy
NDAuNzUsNTI0MC41LDUyNDEuNzUsNTI2OC41LDUzMzEuNSw1MzE4LjI1LDUzMjkuMjUsNTMzMS43
NSw1MzQzLjUsNTMzOS4wLDUyODUuNzUsNTMyMS43NSw1MzIzLjc1LDUyNzAuNSw1MjUwLjUsNTI5
OS41LDUzMDAuMjUsNTMwNS4wLDUzNjcuNzUsNTM2Mi4wLDUzNTEuNSw1MzY5Ljc1LDUzODQuNSw1
NDM2LjI1LDU0MzYuMCw1NDM1LjUsNTQ4MC4yNSw1NDkyLjc1LDU0NzcuMCw1NTM4LjUsNTUxNi4w
LDU1MzUuMCw1NTMzLjAsNTU0OC4yNSw1NTM0LjI1LDU1MzMuNSw1NTYzLjc1LDU1OTEuMCw1NjEy
LjAsNTYyNy43NSw1NjMxLjc1LDU2ODQuMjUsNTYzOC41LDU2ODEuMCw1Njg4Ljc1LDU3MTUuMCw1
NjQ0LjAsNTYwMi41LDU1NjQuNSw1NjA3Ljc1LDU1ODUuMCw1NDgyLjUsNTQ0Ni4wLDU0OTYuNSw1
NTA0LjUsNTQ1NC43NSw1NTc0Ljc1LDU0NjQuMjUsNTMzMC4wLDUyNTAuMCw1MjQxLjUsNTIwOC4y
NSw1MzQ4LjI1LDUzNjQuMjUsNTM3Mi41LDU0NTcuNSw1NDgxLjI1LDU1NjguNSw1NTg0LjAsNTYy
OS41LDU2MTkuNSw1NjQyLjAsNTU5Ny43NSw1NjUwLjUsNTYzMC4wLDU2NDMuNzUsNTU4MC41LDU2
MTguNSw1NjU2LjI1LDU1MzguNSw1NTI3LjUsNTUxMy4wLDU0MTAuMCw1NDg4LjI1LDU0OTkuMjUs
NTU1OC4wLDU1OTguNSw1NjIyLjc1LDU2MzMuMjUsNTYzOS41LDU2MzEuNSw1NzE0Ljc1LDU3NjIu
MCw1Nzc0LjAsNTc5Mi4yNSw1NzgzLjUsNTgwNC4yNSw1Nzg0LjAsNTgwNy4wLDU3NjAuMjUsNTc2
OS41LDU3NDUuNzUsNTgwMi4wLDU3NTIuNSw1Nzk5LjI1LDU4MzYuMCw1ODMxLjAsNTg1NC41LDU5
MTQuMjUsNTg2MS4wLDU4ODIuNzUsNTg4OC4yNSw1OTExLjUsNTkwMC43NSw1ODg3LjI1LDU4NDQu
MCw1ODUzLjI1LDU4NTcuMCw1ODY3LjAsNTg4My4wLDU4NDAuMCw1NzQyLjAsNTc0MS43NSw1NzUy
LjI1LDU4MjAuMjUsNTk2My41LDYwMDcuNzUsNjAzMC4wLDYwMjkuMjUsNjAxMi4yNSw2MDE3Ljc1
LDU5NzIuMCw1ODk5Ljc1LDU5MTkuMCw1OTM3Ljc1LDU5MzcuMjUsNTk2Ny4wLDYwMDYuMCw2MDEz
LjI1LDYwNDEuNzUsNjAxNS4wLDYwNTEuNSw2MDY0LjAsNjA2Ny4wLDYwOTUuMjUsNjA4NS41LDYw
OTYuMjUsNjA2NS4yNSw2MDUyLjc1LDYwODcuNSw2MDY1LjAsNjA1NS41LDYwNzcuMCw2MDUzLjUs
NTg4MS43NSw1ODc5LjUsNjAwMS43NSw2MDM3Ljc1LDYwOTkuMjUsNjA5Mi4wLDYwMjguNzUsNTk1
NS4wLDU5NDkuMjUsNTkyMS4wLDU5OTQuNSw2MDI4LjAsNTk1NS41LDU5NTUuMCw1OTQzLjc1LDU4
NjQuNSw1ODg3LjI1LDU4OTEuNSw1OTg4LjUsNTk3MC4yNSw2MDMyLjI1LDYwOTQuMCw2MTIwLjAs
NjE0OC4wLDYxMDIuMjUsNjA1OS41LDYwOTAuNzUsNjA2OC41LDYxMDYuMCw1OTgyLjI1LDYwNjku
MCw2MDQyLjc1LDYwOTAuMjUsNjA4OS43NSw2MDE2LjAsNjA4NS41LDYwOTAuNzUsNjA3OS43NSw2
MTMxLjc1LDYxMzguMjUsNjE0My43NSw2MTUzLjc1LDYxMzIuNSw2MDQwLjc1LDYwMDYuNSw1OTgy
LjAsNTk4MC4wLDU4ODMuMCw1OTY3LjUsNTg3NC4wLDU4MzIuMCw1ODQ0Ljc1LDU3NjYuMCw1NzUz
LjAsNTYyMi4wLDU1ODAuMCw1NTk2LjUsNTU0MC4wLDU2MjYuNzUsNTY4MC4wLDU2MTguNSw1Njgw
LjAsNTY2NC4wLDU3NDAuMCw1ODEzLjAsNTgzMS4wLDU3MzcuMjUsNTc0MS43NSw1NTkwLjAsNTY0
NC4yNSw1NjcyLjAsNTU1MC41LDU0MjMuMCw1MDA3LjAsNTEyNi41LDUwMDYuMjUsNTUwMi41LDUy
OTkuMjUsNTQ1Mi41LDU0MzEuNzUsNTQwMy43NSw1MzA4LjAsNTI4My43NSw1MTgyLjUsNTM3OS43
NSw1NDA5LjAsNTUyOS4wLDU1NDQuMCw1NTQzLjAsNTU3OS41LDU2MTcuNSw1NjA4LjUsNTcwNS4w
LDU2NjYuMjUsNTYwOC41LDU2NDMuMjUsNTY4OC41LDU3NjEuMCw1ODY4LjAsNTkwMi4wLDU5MDQu
MCw1OTM1LjAsNTkzMC4yNSw1OTgwLjAsNTk1My41LDU4NTguMCw1ODY5LjI1LG51bGwsNTgyMC4w
LDU5NDAuNzUsNTkyMy41LDU5MTIuMjUsNTg5OC43NSw1OTQ5LjAsNTk4MC4wLDU5NzQuMjUsNTkz
MS43NSw2MDEwLjAsNjAxMi4yNSw2MDM4Ljc1LDYwMjIuMjUsNjA0NS4wLDU5NDkuMCw2MDM4LjUs
NTk3Ny4yNSxudWxsLDU5ODQuMCw1OTY0LjAsNjA3OC4wLDYxNDQuNzUsNjE0NC43NSw2MTk3LjUs
NjIyMy4yNSw2MjQ1Ljc1LDYyNDcuNzUsNjI3Ni41LDYzMjAuNzUsNjMwNy43NSw2MjYyLjUsNjI3
Mi4wLDYzMDYuMCw2MzIzLjAsNjI3NC4wLDYzMDkuNSw2MjczLjc1LDYyOTkuMjUsNjM0Mi41LDYz
MzUuNzUsNjM0Ny4wLDYzNDYuNSw2NDA0LjAsNjQwNi43NSw2NDUwLjAsNjQyNC4yNSw2NDA0LjAs
NjQzNS41LDYzNTkuNSw2MjU3LjAsNjM3MC4wLDYzMjMuMCw2MzcxLjAsNjM3Mi41LDY0MjIuNzUs
NjM5Ni4wLDY0NjguMCw2NDg1LjAsNjQ4OS4yNSw2NDY3LjAsNjQ2OC41LDY0MzMuMCw2NDE0LjI1
LDYzOTIuMCw2NDkzLjAsNjQ2MC4yNSw2NDg2Ljc1LDY0ODUuMCw2NTE2LjAsNjQ3OC43NSw2NDQ4
LjAsNjQ2MC4wLDY1MTUuNzUsNjQ4My43NSw2NTA3Ljc1LDY1MzIuMjUsNjUzNS43NSw2NTk2LjI1
LDY1ODguMjUsNjYxNi4yNSw2NjEzLjAsNjYwNi4wLDY2NDAuMCw2NzE2LjAsNjc0OS41LDY3MTcu
NzUsNjY5Ny4yNSw2NjYyLjc1LDY2OTcuMCw2NzA4LjAsNjcyNS41LDY3NTcuMCw2NzY0Ljc1LDY3
NjguMCw2Nzg5LjUsNjc2Ni4wLDY4MDIuNzUsNjc3OS41LDY2MzIuMCw2NjkxLjAsNjY4NC4yNSw2
NzE1LjI1LDY2NTkuMjUsNjcyMS4wLDY3NzkuNSw2Nzc2LjAsNjczMy41LDY3NzguMjUsNjg4MS4w
LDY5MTQuMCw2OTI5LjI1LDY5MDYuNSw2ODk3LjAsNjg3OC4wLDY4ODQuMCw2ODAxLjAsNjgyOC41
LDY3NjMuMCw2Nzg4LjAsNjg1Ny4yNSw2ODc0LjAsNjg3My4yNSw2NzYyLjc1LDY3NjQuNzUsNjY5
Ni41LDY2MzAuNzUsNjY5Ny41LDY1NjAuMCw2NjU0Ljc1LDY3MjYuMjUsNjc4MS4wLDY4MzAuMjUs
Njg1NC43NSw2ODI5LjAsNjg0My4wLDY4NjYuMCw2ODY1LjUsNjg4My4wLDY4NjUuMCw2ODQ3LjI1
LDY4ODcuMCw2OTE0LjAsNjgzMS4wLDY4MjUuMjUsNjc5Ni4wLDY3MzkuMjUsNjc3Mi4yNSw2OTMw
Ljc1XSwidm9sdW1lIjpbMTc4MjQ3MywxOTEyMTU1LDE2Nzk5NzMsMjAyNjE1NCwxNjk3ODg3LDE1
MjA5NTUsMTM5ODc2OSwyMTAyNTg3LDE0NTY3ODQsMTQyMzkzMSwxOTAyNTUxLDE4OTY4OTAsMTYy
MDM1NSwxNTk0NzM2LDE0NzI4NTYsMTc2MDUxNSwxNjEzODA0LDE1ODc5MzYsMTc4NjExMiwxNzkw
NzUxLDIwMDA0MDAsMjI5MDcyOSwyMzU0OTk2LDE1NjAzMjQsMjE4MDkzNiwxODA0MTAxLDE4Mjg1
NzEsMTc0NDk1NiwxMzc2MzI1LDIzNzkwMzQsMTYxMTU1MCwyMDQyOTkzLDIwMDg0NDgsMTg4MzA0
MCwxOTI1MzAwLDE5NTU4MjAsMjA2MzI0MiwxNjIxOTYxLDE4NDc5MzAsMjA0MjMyMSwxODM2NTU1
LDE2NjUxMDIsMTUyODg0NSwyMTQxNjE1LDE4MzE3MTIsMjU0NzQyMywzMjg1ODExLDI3NTA0Nzcs
MTYwNjUwOSw4MzM2NDMsNDY2OTE0LDIyMjQyNjgsMTgxODgwNywxNTMxNjcwLDE4MDI5MjksMjIz
Njk1NCwxOTQ0OTgxLDEzMDQ1NzIsMTIyNDQ5NSwxMzg5MzUyLDEzMjg1MjksMTY5NTg0MCwxMzgw
Mjg2LDE1ODI0MTQsMTQ3MDE3Niw3MzAwOSwxMTY3NzE1LDEyMjE4MjQsMTg1MzY3MSwxNDU4Nzg1
LDE4ODI4OTYsMTI5ODEyMywxNDI3Nzk3LDEyOTI2MjIsMTc2ODM3OSwxNjQ1MTYxLDEzMjgwNDEs
MTc3MDkwOCwxODE0NzQxLDE2ODY2OTIsMTc1MzgwMywxMjQwNDkwLDIwMzQxNzYsMTY1ODM5Miwx
OTk0NzcyLDE1NDU4OTUsMTAyNjAxNCwxMDAwOTI0LDE4ODc1ODcsMTQ3MzM4MywxNDM0NjAxLDEx
NzkxNjUsMTMxNjY5MSwxNTg0OTEwLDE3NjA2NjgsMTcxMzM1MSwxMzAyODQ1LDE2ODUwNTYsMTkx
MTkwMywxOTY2NjI2LDE3NDQ0MjUsMTk1NzU3OSwyMTM4NTY2LDE4NjgzNjMsMTk1NTYwMywxNjY4
NzU5LDE1NDgxMjUsMTkyNTE5NSwxNjY0MzMzLDIxNzY2NDUsMTY2NTE3NSwxMzE3MTE4LDc1ODMx
Niw0ODY0MTQsMTg5NTEwNSwxNTQwNDE2LDE0NjgyNTgsMTM4NDAwMiwxNTUwOTkyLDE2MjI0MTYs
MTUxMjI1NiwxNjg5NDYxLDE2Mjg3NTAsMTc3NDk0MCw2NDEyODksMTE5Mzc1OSwxNzQxNTIwLDE2
OTE2NDQsMTM2MTE1NSwxMzQwMjMyLDE3ODQyOTYsMTE1ODE5MywxMzgxMDY5LDEwNTc5NjUsMTMw
MTQ2MCwxNTM4NzQ3LDE1Mjc3MjcsMTQzMjY0MywxMjAzNjYxLDEyMTk3MzcsMTM3MjQyNiwxOTI0
NTY1LDE1NzM5NzMsMTI5OTQzNCwxMjEyMjYxLDE5MTc4NjUsMTc2NDA3NiwyMDQ0OTM2LDEzOTcz
MDEsMTY5NjU0NiwxNjQwMjg1LDIyMjcwMjIsMTUxMTA0OCwxMjc3MTMyLDE0OTI1MTYsMTQ5OTIx
OCwxNjMwNDgxLDE3NDYyODksMTM2MTQ3MCwxMzc1NjUxLDEzMDY2NDAsMTc4Mzc5NSwxODUzMzM1
LDEyNjY0MTQsMTQ0NDcxNCwxMzk3NjY5LDEzOTU3NTEsMTQxNjc2MiwxMzkxODA1LDE2MDAxMjgs
MTYwMjIyNiwxNjg2MTU4LDE3MTQyNjYsMTE1Mzk2MSw2OTA4NzIsNDU0OTA2LDE4MjU5NjYsMTE1
NTE1OCwxNDIyOTUwLDE0ODIyMDYsMTk5ODYzOCwxNzM2NTc2LDE1NjE1OTUsMTc1ODA0OCwxOTY1
OTEzLDIwMTIwODgsMjEwNjA1MywxOTUwNDYzLDIyNTY4MDgsMjE2ODI3MSwxNjczNDc3LDIyMTY0
NTYsMTQ4NTI1NCwxNjEwMjcxLDE0ODk2NDQsMTg4MTU3MywyMTU5MTAxLDE2Njg5NDgsMTg3OTcz
NiwyMjcxNTcyLDI3NDE5NDIsMjMyODgwNiwxOTYzNjcwLDE4MDcwOTIsMTk4MTYzMywyNDE5NDA3
LDIxOTU3NjcsMTkwNDYxMCwxODM2MjEyLDIwMjcwODAsMTgxOTU5NiwxODAzNTUyLDEzNDg4Nzgs
MTM3MTI1NywxMzkwMjg4LDE5NzI2MzAsMTc1MjAwMiwxMjc2MTgyLDE5MDE4NDcsMTU3MzQ1Miwx
NDkxNzM0LDEzMzE5MTIsMTIyMDc5MCwxMTAxNjY5LDE0MDM2MzYsMTQwMzYzNiw1NzI3MDIsMTEy
NDIxMywxNDQxMTE5LDE1OTIzOTgsMjA1NjI2OCwxOTE0MTUxLDE4MTg5OTEsMTg5MDgyNSwxODM3
OTYxLDE4MzIzNjEsMjI4OTQyNSwxNjYzMjI5LDEwNTIwNzcsNzM5Njg0LDU2MDgxOSwxODAxODIz
LDExMzkwMjksMTEyMjk3MywxNzQ5MTQ1LDE2ODcwNjUsMTMyNjY5Nyw2ODgyMDEsMTA0MjI4NCw5
MjcwMzUsMTI4MTczMywxNjc4MTQyLDE3MDcxNzQsMTM5NTM2NiwxNzY3MjQ1LDE0MTc3MjgsMTM2
OTEwMywxMzc3NzgwLDE3OTU1NjQsMTUxOTg5OSwxOTA1NTMyLDE2NjMzMjgsMTc0NjkzNiwxODc2
NzU3LDEzNTYwNTAsMTEzMDc0OSwxNTg2ODI0LDE1MzIwMjYsMTM2MzYxMiwxMTk3OTg5LDExNTc0
MjUsMjI4NTk5MywxODM1NTEwLDE5NTc3OTYsMTUwNDY3NiwxMjY3NDE5LDEzMzYxNzIsOTk3NDMx
LDEyMTIzMzYsMTE0MTQ4NywyMTEyNzI2LDE2MzIwNzEsMTM2MTc1NywxNTI3NzI5LDE2MDk4Mjcs
MTQ4NTY4NywxNzM4ODY5LDEzNDAwNTAsMTA5NDY4MiwxMDI2ODE5LDEyMDEwMTEsMTc5MDcwMiwx
NTk3MzMxLDEyMDgwNDAsMTg4NTc2OSwxOTk2MjIzLDE3OTE2NjYsMjc4NjY4MCwxODQwMDAwLDEy
MTE5MTEsNTQwMTcwLDQ3NjA3NCwxOTI3Nzc1LDEzNzcyNzYsMTQ0MDI4OSwxNDA0OTc0LDEzMjY5
OTQsMTE2MjYwNiw5MjA2MDgsMTA5MjcwNiwxNDg3NjcxLDEzMTc4MzYsMTEyNTIzNCwxNDI2Njkx
LDE0MDI5ODEsMTk0MTI3NCwxOTA4MzA2LDExNjc2NDgsMTY1MTk3MywyMzY5ODY0LDE3NjI0NzAs
MjAwNTEwNiwyMjI2MTA1LDIwOTgwMTUsMTkyODY0NSwxNzAxNDAxLDIzNTcxNDMsMTU4NDM5Mywx
MzU3NDkzLDE1MTI0NjksMTg4NzYzNSwxNDU1ODU1LDExNjM0NDAsMTY3NTMzNSwxOTU1MTYwLDE1
NzMxMzEsMTYwNDE3MiwxMDE5MzA3LDExMDY0NTcsMTAxMzQxOCwxMDk0OTMxLDExMTI5MjUsOTIy
NzYzLDEyNTI2MTUsMTM5MTAyOSwxMjA3ODQzLDEwNTI3NjUsMTAzMTQ1NiwxMDExODQ5LDEyNTc0
NzcsMjAxMjE1MywxMjY0MjQ0LDEzODc4NzIsMTQ0NTg1NSwxNDk1MTQ4LDI0NTI4OTQsMTc4NTUz
MiwxNjc5MDkzLDE0NTA1OTYsMTIyODI0MCwxNTkxNDM5LDExODU4ODEsMTQxMzQzMywxODk5Nzg2
LDE2ODI4NTgsMTc4OTc5MywxNTg5NjQzLDgyMDA1Myw1NzEzMzIsMTM5MjIxMywxNDEwMzU5LDEx
NDExODMsMTE5NzM3MiwxMjU3MTIxLDE4NTU3NzcsMTQzMjM1NSwxMzE1MDk3LDgwODk2NiwxMjMz
MTczLDk4MTE4NiwxMDYzNTY4LDEyMDAyMjQsMTk3MDc2NiwxNjg0NDM3LDE3MDEzNDksMTQ4NTEx
MywyMDU5ODYyLDI1MjgzNzksMjEwNjU4MSwxNjcxOTE4LDEzODU2NTMsMjE3ODY5MCwyODg4MDg2
LDE5Nzc2OTgsMTY5NzY0NywyMDUzOTU2LDIxNTY1MDUsMjc1MTY5MCwzMjM5NzM4LDM0MzYwOTAs
MjE3MjA2NywyMjQ3MjI5LDE5MTIzNDcsMTQxMjAxNywxMjE5OTk1LDEyNzExNzEsMTMwMTgyNiwx
NDQwMzc3LDExODM0OTgsMTAxMDYxMiwxMDIwMzkzLDEwODY4MTQsMTQwOTQ3NCwxNDE1NDcyLDEw
OTAzNjEsMTAyNzY1OCwxMzgxMDk5LDE1NzE2ODgsMTU1ODg3NCwxOTEwNTc3LDE3NDk1OTEsMTcz
NzIxMCwyMzc3NTMyLDIzNzc1MzIsMTUyNTYyMCwyMzA5MTM5LDE3MjY0MzQsMTcwNjMyMiwxNTg4
MDEwLDEwNTYxODQsNjA1NjUxLDQ2MTQzMywxNjIzNjU1LDEwNzc5NDEsMTE4MTIyMSwxMDQzNjY1
LDEzNjAwMjYsMTI4MDI3MiwxNTAyNzI5LDE5NDcxNzcsMTI1MDM1MywxNDIxNDI5LDE0NjA2NDUs
MTIxMTM2OCwxMTcyMjYxLDExMTM4NzUsMTExNjA0NiwxMDI4ODE2LDkxOTA3MiwxMzY1MzEwLDkz
NTcyMSwxMjM2MDgzLDk1MjYxMiwxMDYzNzgwLDEwMzMyOTYsMTQ2ODI2OSwxMTU5NDQ4LDEzNjgy
NDUsMTAxNzQ0MCwxMTk1NzUzLDEzNDcxNzAsMTk3MzUxMywxNTkyMDMxLDEzMzM2ODUsMTE5ODc5
NywyMDIzMjU3LDEyODU1ODUsMTE4NDUxMiwxMDY5OTI5LDE0MDcxMjAsMTQ0NTI1OCwxNTM4OTI3
LDIwMDgzMzksMTMzMjMyNiwxNjM2MzQ2LDE1OTcyNTcsMTg2NzEwMSwxNTUwNzM0LDE2MTk5MTcs
MTMzNjg0MywxMTU3MTcxLDg0Nzk4NCw5ODkwMzMsOTkxOTYxLDExNDIxMzcsMTExODc4NCwxMTY3
Njc3LDEzNTExOTQsMTM1MDczMSwxMjcxNzk1LDE1NjU3MzEsMTk5NjM1NCwxNjEyMTk5LDExMTMz
MjUsODQ3NDUyLDUzMjA4MSwyMzQwODczLDE0MDYwMTksNjM0MjAxLDkxMTQ4NiwxNjQxMTAwLDE1
NzUxMzQsMTM4MjE4NywxODI2MDMxLDEyMDY1NzAsMTU0NzI5OCwxNzcxNzY3LDE3NjQzMTUsMTEz
ODMxLDIxMzAwNjcsMTc1NTM0MSwxODM5OTYxLDE2NTc2NzAsMTU2NjQzOSwxNDE3MzA0LDE3MjU5
NTIsMTI0OTg1MCwxMTM2MDA5LDEyNTQyODAsMjM4NTYxNCwxNTg1MjE2LDE1NTI5NDEsMTYwNjc1
MywxODY2NDY3LDIzMTQ4MjQsMTMzMzM3NiwxMjE2NDMzLDExNzkxMTIsMTY4MzQ3NSwxMDA1NTYw
LDEwMTczNjYsMTU1ODM5NSwxNTIzOTUzLDEwMTgzNzAsMTIwMDU5OSwxMDc4OTk3LDE0MDUzNDMs
MTk0MDU2MywxNzk3ODQ3LDIyMTUzMzIsMTkwMTMwNiwyNTc5ODk1LDI3ODQzNDcsMjYxMDg4Miwz
MzUzNTUxLDIyODQwMzIsMjU1MzgxOSwyMzE1MDA1LDI1OTAxMDIsMjYyMzk2MywyMDA0NzQwLDIx
NjM3NzYsMjE5MTk1NCwyMDg2NzM0LDExMTE3MzMsNzA0Mzk0LDQxMjc4NSwxNjI5ODcxLDE0MDQ2
MjksMTA3ODU0OCwxNDgzOTU5LDE1NzU4NTUsMTkxMDkxNCwyMjI5ODM5LDE4NzE1MDUsMjA2MDQ1
NiwyNDcwNDEyLDM2NzgxNjIsMzY3MzU4MywyNDM4MDYxLDMwOTYxOTQsMjUyNDIxNCwxNzU5NjYw
LDEzMDM5MDAsMTE1ODcwMywxNTU5MDY0LDEzODEzOTYsMTE5MTIxOCwxNTcyMDA2LDE4NDY0OTQs
MTQxMTQxOSwxMzM5ODg4LDExOTg4MDEsMTIyNzE4MiwxODMzNjQ2LDEzODg2MTksMTM4MzM2Nyw5
ODkzNzMsMTMwMzg3NywxMzkwNTYxLDE0Mjg2MTMsMTAyOTQxOCwxNzY1NTkzLDEzMzU0NTcsMTIw
NzIwMiwxMjkxOTg2LDExODA4NzUsMTI0NTg1OSwxMTEyOTA4LDE1NDg5NDYsMTQxOTUyMiwxNTM3
NjkzLG51bGwsMTI4ODM2OSwxMTgxMzMwLDE0MTQ4NjQsMTYzMzMzNCwxMTk0MTI1LDExNTQyOTcs
MTA5NzA4OCwwLDEyNzgxMDIsOTEyMzcxLDExMDQzNzMsMTYxMDMxMywxMzMwOTUzLDIxNjIxNjcs
MTc0NDg2Nyw4NzA1NzEsMCxudWxsLDE2OTQ0NDMsMTM1ODAzNCwxMDc3MzMzLDkwMjUwMCwxMDM5
NDI4LDEzNTMzOTksMTM2NDEwMSwxMzIwNjE4LDEwNDQyNjEsMCwwLDEzNzY2MTMsMTA3MzkxNCwx
MTQ0NzIzLDk0ODM5MywxMTAwMDQ3LDkwOTIyMywxMjc5MDY4LDE0NjI5NjksMTA1Mjg0MywxMDUw
MzA3LDkzNDI3MSwxMTMwMzU2LDEyMDM1NDEsMTA3MzU5NSw4Mjk4NTYsOTcyNjQ2LDExMjI1MDgs
MTMwMjc5NSwxODU3MDIwLDIyODc2OTksMTMwNDY1MiwxNDAyNDQ4LDEyMzMzNDYsMTQ1ODU3Mywx
MTk2NDk3LDEwNzMzNTksMTI3MTE4MCwxMTExNjgzLDExODYwNzAsMTEyMjE1Nyw4NjA0NTEsMTIy
NDMxNywxNjA5NDY5LDEyMDA2ODksMTQyMDcyMyw5MzI1MTUsMTEzMzc2MSw5NTc3MzAsMTE3MDM5
NywwLDE4MDI1ODQsMTQzNTk5NywxMTg2NDc3LDE3MTA3ODQsMTE4Nzk4NSwxMTY5NTE0LDEzODE3
NTksMTI4MjY2OSwxNjAxMDU2LDE1Mzk3MzIsODM3MDM0LDU2MDg0MSwzMzk5NjcsMTM2OTAwMywx
MDgxNTY5LDEyNjQxOTUsMTI1MDE3MywxNzEwNTA3LDEzMzg0MTMsMTIwOTk1MywxNTIxNzM3LDEz
MTI3NDMsMTE4Mjg3NSwxMzY2MjM5LDEwODczMzksMTQzMzgwOCwxMDQ3OTI1LDEzNzA0NjYsMjU3
MDA0MywyNTcwMDQzLDIxNDcyNTIsMjAwOTg1NCwyMjIxMzUxLDIwODE0NTYsMTIwNzU4NiwxMjg1
NzQ1LDE5MDU1NjUsMTM3NTQ5NCwxMjc5Mzg3LDExOTEyNzgsMTIyMTgzOCwxNTM2OTk1LDE4MTc2
MjEsMTc2NDEzMywwLDE3MDI5NzEsMTQ2NzczNCwxODYwMjc5LDIxMjc1OTUsMTU5NzMwNSwxMzQ4
NzYzLDE0MDIwMzIsMjA4NzIyMCwyMTA1MjM0LDE4ODM4MTAsMjUxNDk4NSwyMDQxMTMwLDI5ODcz
NTcsMjU5Mjg1OSwxNjExMTA1LDE2NTYwNjIsMTQ1OTE4NCw0NjAwNTMsMTQ3MjExMSwxNDU1MDE4
LDEzMTAxMDMsMTMyMzY3NiwxMzM2NTQwLDEyNTc3NzYsMTAwODUxOCwxNDczNzA3LDE4MTU5Nzgs
MjYwOTM2MiwxNzcxMDQ3LDEwNzAyNDAsNTkwNTU4LDQxNjM5NCw0MTYzOTQsMTE4NzRdfV0sImFk
amNsb3NlIjpbeyJhZGpjbG9zZSI6WzM4NDYuMCwzODc0LjUsMzgyOS4wLDM5MTUuNSwzOTEzLjc1
LDM5NDAuNzUsMzk5MC4wLDQwMDMuNSw0MDE4LjI1LDQwMDkuNSwzOTQ1Ljc1LDM5MTUuNSwzOTg4
LjUsNDAzNi41LDQwMzIuNzUsNDAzMi4wLDQwNzUuNSw0MDg0LjI1LDQwMzIuNSw0MDkwLjAsNDEz
Mi4yNSw0MTkxLjUsNDE0Ny43NSw0MTIzLjUsNDE3NS43NSw0MTMwLjUsNDA5MS43NSw0MDk5Ljc1
LDQxNDcuMjUsNDE0NS41LDQxNTguMjUsNDA5OS43NSw0MDg3LjUsNDAwNS43NSwzOTk5LjAsNDAx
OC43NSwzOTc1Ljc1LDM5ODguMCwzOTc1LjUsMzk1Ni41LDM5ODQuNzUsNDA0OS43NSw0MDUyLjUs
Mzk4OS43NSwzOTk1LjAsMzkyMC4wLDM4NjIuNzUsMzg1Ni43NSwzOTIwLjUsMzg5Mi43NSwzOTYw
LjUsMzk1Ny4wNTAwNDg4MjgxMjUsMzk4My4wLDQwMzUuNzUsMzk3MC41LDM5NzguMCw0MDAxLjI1
LDQwMDcuMjUsNDAwMS41LDQwNTcuNSw0MDgwLjAsNDEzNy43NSw0MTUzLjc1LDQxMjkuMCw0MTE3
LjI1LDQxMzIuMCw0MTM2LjI1LDQxMzYuNSw0MTE5LjAsNDE3Mi43NSw0MTYzLjc1LDQxNzYuNzUs
NDE4MC4wLDQxNzguNSw0MTUyLjUsNDE1Ni43NSw0MTU5LjUsNDA5My4yNSw0MDc2LjAsNDE1My43
NSw0MTg4LjUsNDE4NS43NSw0MTM2Ljc1LDQxMDcuNSw0MDc1Ljc1LDQxNTAuMjUsNDE1Mi43NSw0
MTM0LjAsNDE1Mi4wLDQxNDMuNzUsNDEzOC4wLDQxNTAuMCw0MTIzLjAsNDE3MS41LDQyMTIuMCw0
MjA0Ljc1LDQyMDUuMCw0MTU4Ljc1LDQxMjYuMCw0MTU5Ljc1LDQyMTMuMjUsNDIxNS4wLDQxOTAu
NSw0MjI4LjAsNDI4OC4wLDQyODEuMCw0Mjg5Ljc1LDQyNzQuMjUsNDI5OC4yNSw0MzA0Ljc1LDQz
NDIuNzUsNDM3MS43NSw0Mzc0LjI1LDQ0MjYuNSw0NDUzLjM1MDA5NzY1NjI1LDQ0MzQuNzUsNDQw
OS4yNSw0NDIzLjc1LDQzODkuMCw0MzcwLjI1LDQ0MTguNzUsNDQxNy41LDQ0MzUuNzUsNDQ4OC4y
NSw0NDkyLjI1LDQ0ODMuNzUsNDQ0Ny4wLDQ0MzQuMCw0NDQ0LjI1LDQ0NzMuNSw0NTA3LjUsNDU0
My41LDQ1MzYuNzUsNDU1My43NSw0NTg3Ljc1LDQ1OTcuMCw0NTY1LjUsNDU2NC43NSw0NTgzLjUs
NDU5Ni4wLDQ1OTUuMjUsNDU2NC4yNSw0NjA2LjUsNDYxNC41LDQ2MDEuMjUsNDUzNy4yNSw0NTIx
Ljc1LDQ0OTguMCw0NTM3Ljc1LDQ1MTguNSw0NDg1Ljc1LDQ0ODUuNzUsNDQ4MC43NSw0NTA2LjAs
NDQ1NC4wLDQ0MjAuMCw0Mzg0LjUsNDM4Mi43NSw0NDEyLjUsNDM5OS4yNSw0NDQ3LjAsNDM4Ni4w
LDQ0MTQuMjUsNDQ0Mi4yNSw0NTA2Ljc1LDQ1MjQuMjUsNDUxNi4wLDQ1MjEuNSw0NTAyLjUsNDQ3
MS41LDQ0NTYuMjUsNDQ2MS43NSw0NDkwLjI1LDQ0NjUuMCw0NDY4Ljc1LDQ1MDYuMCw0NDkxLjcy
MDIxNDg0Mzc1LDQ1MDEuNSw0NDkwLjAsNDQ0Ny4wLDQzNzIuMCw0MzYxLjAsNDM3OC43NSw0MzE0
Ljc1LDQzMTMuNSw0MzM3LjUsNDMyNS41LDQzMjQuMjUsNDI2NC43NSw0Mjk3Ljc1LDQyOTAuNzUs
NDM0MS41LDQzNjguNzUsNDM5MS41LDQ0MDkuNzUsNDM4MC41LDQzNTcuMjUsNDQwMS4wLDQ0MDEu
NzUsNDM0Mi4yNSw0MzAzLjAsNDI0OC41LDQyNDEuNzUsNDI3MS4yNSw0MjA5Ljc1LDQxNTYuNSw0
MTM3Ljc1LDQxODUuNzUsNDIxMi4yNSw0MjU2LjAsNDMzNS43NSw0Mzc2LjAsNDM4NC4yNSw0Mzk2
LjAsNDM5OS41LDQzNjIuMjUsNDQzMC41LDQ0MjUuMjUsNDUxMS4wLDQ1MTkuMjUsNDUyMy4yNSw0
NTI3LjUsNDU2Mi4yNSw0NTUxLjI1LDQ1NjcuMjUsNDU2OS41LDQ1NjguMjUsNDU2MS4wLDQ1NjMu
MCw0NTU5LjI1LDQ1NzYuNzUsNDYwMC43NSw0NTc2LjUsNDU3NS4wLDQ1NTYuMCw0NTg5LjUsNDYw
Ny41LDQ2MjYuMCw0NjQ1Ljc1LDQ3MDguMjUsNDcyMS43NSw0Njk0LjI3MDAxOTUzMTI1LDQ3OTMu
MCw0ODIwLjI1LDQ3NDkuNzUsNDc5Ni43NSw0ODA1LjI1LDQ4MjUuMCw0ODMzLjUsNDgzMi4yNSw0
ODIwLjAsNDc4Ny4yNSw0NzQ2LjUsNDcyOS41LDQ3MzQuNzUsNDgwMS4yNSw0NzkyLjc1LDQ4MjAu
MjUsNDgxNS41LDQ4MTYuNSw0Nzk4LjUsNDc3MS4yNSw0ODExLjI1LDQ4NjkuNSw0ODgxLjAsNDg5
NS4wLDQ4OTguMCw0OTIzLjI1LDQ5MTYuMjUsNDk1NC41LDQ5NTEuMCw0ODcwLjUsNDkyOC41LDQ5
ODAuMjUsNDk2Mi4wLDQ5NzQuNzUsNTAxNS4yNSw1MDE3Ljc1LDUwNDQuMCw1MDQxLjI1LDQ5NzEu
MjUsNTAxOC4wLDUwNDYuNSw1MDE5Ljc1LDQ5OTEuNSw0OTk2LjI1LDUwOTcuNzUsNTEwMS41LDUw
ODAuMjUsNTA5MC4wLDUwODEuMCw1MTAzLjc1LDUxNDYuMCw1MTM4LjI1LDUwODUuNzUsNTExMS43
NSw1MTYxLjc1LDUxMjkuMCw1MTIzLjAsNTE3Ny4yNSw1MTY4LjAsNTE1My43NSw1MTAxLjY2OTky
MTg3NSw1MjE0Ljc1LDUyNDEuNzUsNTI4Ni43NSw1MzAyLjUsNTI5My4yNSw1Mjc4LjI1LDUyNjUu
MjUsNTMwOC4yNSw1MzA4LjUsNTI5NS4yNSw1MjYwLjUsNTI2Ni41LDUxOTcuMjUsNTI1My4wLDUy
NTMuMjUsNTI2MC4yNSw1MjA3Ljc1LDUyNDMuMjUsNTE2Ny41LDUxMDQuMCw1MDkyLjUsNTA2Mi4y
NSw1MDQ5LjAsNTAwMy43NSw1MDQ3LjUsNTEwNi41LDUxMDcuNSw1MDgyLjI1LDUxMzEuNSw1MTQ3
LjAsNTA2Ny4wLDUwNDYuNSw1MDkxLjUsNTE1NC43NSw1MjA2LjUsNTIxMy43NSw1MjEyLjc1LDUy
MzkuMCw1MjQ2LjI1LDUyNDUuNSw1MjY5LjUsNTMzMy4wLDUzMjAuMjUsNTMyNy4yNSw1MzMxLjc1
LDUzNDUuMjUsNTMyOC4wLDUyODUuMjUsNTMyMS41LDUzMjQuNzUsNTI4NC4wLDUyNTMuMCw1Mjk1
LjUsNTI5Ny4yNSw1MzA0LjAsNTM2Ni4wLDUzNjQuMCw1MzU1Ljc1LDUzNzEuMjUsNTM4NC4wLDU0
MjcuNSw1NDM4LjUsNTQzNy41LDU0NzguNSw1NDkxLjAsNTQ3Ni43NSw1NDcxLjg5MDEzNjcxODc1
LDU1MTcuMCw1NTM3LjAsNTU0My41LDU1NDYuMCw1NTIxLjUsNTUzMy43NSw1NTY4Ljc1LDU1OTAu
MjUsNTYyMS41LDU2MjUuMjUsNTYzMS4yNSw1Njg4LjAsNTYzOS43NSw1NjY0Ljc1LDU2ODMuMCw1
NzE3LjI1LDU2MzkuMCw1NTk0LjUsNTU1My43NSw1NjEwLjc1LDU1OTkuMjUsNTQ3Mi4wLDU0NDEu
MjUsNTQ5OS4wLDU1MDMuMCw1NDcyLjUsNTU1OC4wLDU0ODAuMjUsNTM3Ni4wLDUyMTcuNSw1MjY2
LjI1LDUyMjcuNSw1MzQ4LjI1LDUzNzAuMjUsNTM2OS43NSw1NDU5LjAsNTQ3Ny4wLDU1NjcuNSw1
NTc4LjI1LDU2MzAuMCw1NjE5Ljc1LDU2NDEuNSw1NTk0LjAsNTY1Mi41LDU2MzcuMCw1NjQ0Ljc1
LDU2MTAuMjUsNTYxMC4wLDU2NjEuMCw1NTQxLjc1LDU1MzAuMCw1NTEyLjI1LDU0MTkuNSw1NDc5
LjUsNTUwNC4wLDU1NjEuMjUsNTYwMi4yNSw1NjI5Ljc1LDU2MzguMCw1NjM5LjAsNTYyMC43NSw1
NzE3Ljc1LDU2OTkuOTkwMjM0Mzc1LDU3NzYuNzUsNTc5Mi4wLDU3NzkuMCw1ODA0LjUsNTc5MS4y
NSw1ODE0LjI1LDU3NTkuNzUsNTc2MC4yNSw1NzQ5LjUsNTgwMC4wLDU3NDQuNzUsNTgwMC41LDU4
NDEuMjUsNTgyOS4wLDU4NTkuNzUsNTkwOC4yNSw1ODYyLjc1LDU4ODcuMCw1ODg3LjAsNTkwNi4w
LDU4OTYuMjUsNTg5Mi41LDU4MzcuNzUsNTg0OS4wLDU4NDYuMCw1ODYxLjUsNTg3MS4wLDU4NTIu
MCw1NzM4LjUsNTc1OC4yNSw1NzQzLjI1LDU4MTIuMjUsNTk1OC4yNSw2MDAzLjc1LDYwMjUuMjUs
NjAzMS43NSw2MDEzLjAsNjAxNi4wLDU5NzguMjUsNTg5Ni41LDU5MjAuMCw1OTM4Ljc1LDU5Mzcu
NzUsNTk3MC41LDU5ODcuMCw2MDA2LjUsNjAzOC4yNSw2MDE1LjAsNjA1MS41LDYwNjEuNzUsNjA2
My4yNSw2MDk4LjUsNjA4OC43NSw2MDk5LjAsNjA2NS43NSw2MDQ2LjI1LDYwOTIuNzUsNjA2MC43
NSw2MDU1LjUsNjA4MC41LDYwNTMuNzUsNTg3Mi4yNSw1ODY4Ljc1LDU4NDAuMjU5NzY1NjI1LDYw
MzYuMCw2MDk4LjAsNjA5NS4yNSw2MDI3LjAsNTk1OC43NSw1OTM1Ljc1LDU5MTYuNSw1OTg5LjUs
NjAyMC41LDU5NTQuMjUsNTk1OS4yNSw1OTQ0Ljc1LDU4NjYuMjUsNTg3NC41LDU4ODIuMjUsNTk4
OS4wLDU5NzUuNSw2MDMzLjUsNjA4NC4yNSw2MTIwLjUsNjE1Mi4wLDYxMzMuMjUsNjA0Ni43NSw2
MDk3LjAsNjA2Ny41LDYwOTkuMjUsNjA2Ny4yNSw2MDIyLjI1LDYwNjMuMCw2MDg2LjUsNjEwNi4w
LDYwNDkuNSw2MDg4Ljc1LDYwOTIuMjUsNjA3Mi43NSw2MTM1LjI1LDYxMzIuMCw2MTQ2Ljc1LDYx
NjMuMCw2MTM2LjUsNjAyOS4wLDYwMDAuNzUsNTk3MC4wLDU5NzAuNzUsNTg3Ni4yNSw1OTYzLjI1
LDU4NjAuNzUsNTc4OS41LDU4NTEuMjUsNTc0Ni4yNSw1Nzc2LjAsNTYyMC43NSw1NTc3LjAsNTYw
NC43NSw1NTI3LjUsNTY0MC4wLDU2ODAuMjUsNTYxOC4wLDU2NzguNSw1NjYyLjUsNTYxNy43OTk4
MDQ2ODc1LDU4MTUuNSw1ODI2LjUsNTc1OS41LDU3MzkuMjUsNTYyMy4wLDU2NTMuMjUsNTY3NC41
LDU3MTIuMjUsNTQzMi43NSw1MTEwLjI1LDUwOTcuMjUsNTAyMC4yNSw1NDkxLjAsNTMwMi4wLDUz
OTEuMjUsNTQ0MC43NSw1NDI4LjI1LDUzMDUuNzUsNTMxMi43NSw1MTg0Ljc1LDUzMTQuNzUsNTQw
MS43NSw1NTExLjI1LDU1NDkuNzUsNTU1My4wLDU1ODMuNzUsNTU4Ny4wLDU2MjMuMjUsNTcwOS4w
LDU2NzEuNzUsNTYyNS43NSw1NjUyLjAsNTY4NC41LDU2NzguMCw1ODY1LjAsNTkwNC41LDU5MDgu
NSw1OTMzLjI1LDU5NzUuNSw1OTgyLjUsNTk1OS43NSw1ODYxLjI1LDU4NTYuNzUsNTgxNy4wLG51
bGwsNTkzNC4yNSw1OTAyLjc1LDU5MjIuNzUsNTkxNi4wLDU5NDcuMjUsNTk4MS41LDU5ODEuMCw1
OTQ2LjAsNjAwNi43NSw2MDEwLjI1LDYwNDUuMCw2MDI5LjAsNjA0OS41LDU5NzkuMjUsNjAzNS43
NSw1OTg1LjAsNTk4MS41LG51bGwsNjAxMC4yMDk5NjA5Mzc1LDYwNzcuMCw2MTQ2LjI1LDYxNDcu
MCw2MTk1LjAsNjIyMy43NSw2MjUzLjc1LDYyNDguNzUsNjI3NS4wLDYzMjQuMjUsNjI4My41LDYy
NzYuMCw2MjcyLjAsNjMwNy4yNSw2MzI0LjI1LDYzMDAuMCw2MzExLjAsNjI4NC4wLDYzMDMuMjUs
NjM0MC41LDYzMzQuNzUsNjM0NC43NSw2MzQ2Ljc1LDYzOTYuMjUsNjQwMS41LDY0MjUuMCw2NDIy
Ljc1LDY0MDYuMCw2Mzk2LjI1LDYzNzQuMjUsNjI2NC41LDYzNTYuMCw2MzI1LjI1LDYzNzEuMCw2
MzY2LjUsNjQxMy41LDYzOTkuNzUsNjQ2OC41LDY0ODguNzUsNjQ5MC41LDY0NzEuNSw2NDY5LjI1
LDY0MzIuNSw2NDEzLjI1LDYzODguMjUsNjQ4My4yNSw2NDU1LjUsNjQ4Mi41LDY0OTYuMCw2NTE3
LjUsNjQ3Mi43NSw2NDI1LjUsNjQ1Ny4yNSw2NTEwLjc1LDY0ODkuNzUsNjUwNi4wLDY1MjEuNzUs
NjUzOS43NSw2NTkyLjUsNjU4OC4yNSw2NjIxLjUsNjYxMC43NSw2NjAxLjI1LDY2MzUuMCw2NjU4
Ljc3MDAxOTUzMTI1LDY3NTIuNSw2NzE1LjAsNjY5Mi4yNSw2NjU5Ljc1LDY2OTYuNSw2NzEzLjUs
NjczOC43NSw2NzYxLjUsNjc2Ni43NSw2NzY0LjAsNjc4OC43NSw2NzYxLjUsNjgwMS4yNSw2Nzc5
LjI1LDY1OTUuMjUsNjY5NC43NSw2Njg2LjUsNjcxNS4wLDY2NjguNzUsNjcwMi41LDY3NzMuNzUs
Njc3My4yNSw2NzM3LjAsNjc3NS4wLDY4MjcuMCw2OTA4LjI1LDY5MjUuNzUsNjkyMi43NSw2ODU1
LjUsNjg3NC4wLDY4ODIuNzUsNjgwMS43NSw2ODI1LjI1LDY3NDcuNSw2NzUzLjc1LDY4NTYuNzUs
Njg3MS41LDY4NzUuNzUsNjc2MC4wLDY3NTUuMjUsNjY5Mi4wLDY2MzkuNzUsNjY2MS41LDY1NTcu
NSw2NjIwLjI1LDY3MjEuMjUsNjc4MS41LDY4MjguMCw2ODU5LjUsNjgyNi43NSw2ODQwLjI1LDY4
NjIuMCw2ODY2Ljc1LDY4NzguMjUsNjg1NS43NSw2ODQ4LjI1LDY4OTEuNzUsNjkwNy4yNSw2ODMw
Ljc1LDY4MjMuMCw2ODAxLjAsNjcyNi41LDY3NzguMjUsNjc5Ni41NDAwMzkwNjI1LDY5MzAuMjVd
fV19fV0sImVycm9yIjpudWxsfX0=
headers:
age: '0'
cache-control: public, max-age=10, stale-while-revalidate=20
content-encoding: gzip
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:12 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
set-cookie: MOCK_COOKIE
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '16'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,692 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/AAPL?symbol=AAPL&type=annualTaxEffectOfUnusualItems%2CannualTaxRateForCalcs%2CannualNormalizedEBITDA%2CannualNormalizedDilutedEPS%2CannualNormalizedBasicEPS%2CannualTotalUnusualItems%2CannualTotalUnusualItemsExcludingGoodwill%2CannualNetIncomeFromContinuingOperationNetMinorityInterest%2CannualReconciledDepreciation%2CannualReconciledCostOfRevenue%2CannualEBITDA%2CannualEBIT%2CannualNetInterestIncome%2CannualInterestExpense%2CannualInterestIncome%2CannualContinuingAndDiscontinuedDilutedEPS%2CannualContinuingAndDiscontinuedBasicEPS%2CannualNormalizedIncome%2CannualNetIncomeFromContinuingAndDiscontinuedOperation%2CannualTotalExpenses%2CannualRentExpenseSupplemental%2CannualReportedNormalizedDilutedEPS%2CannualReportedNormalizedBasicEPS%2CannualTotalOperatingIncomeAsReported%2CannualDividendPerShare%2CannualDilutedAverageShares%2CannualBasicAverageShares%2CannualDilutedEPS%2CannualDilutedEPSOtherGainsLosses%2CannualTaxLossCarryforwardDilutedEPS%2CannualDilutedAccountingChange%2CannualDilutedExtraordinary%2CannualDilutedDiscontinuousOperations%2CannualDilutedContinuousOperations%2CannualBasicEPS%2CannualBasicEPSOtherGainsLosses%2CannualTaxLossCarryforwardBasicEPS%2CannualBasicAccountingChange%2CannualBasicExtraordinary%2CannualBasicDiscontinuousOperations%2CannualBasicContinuousOperations%2CannualDilutedNIAvailtoComStockholders%2CannualAverageDilutionEarnings%2CannualNetIncomeCommonStockholders%2CannualOtherunderPreferredStockDividend%2CannualPreferredStockDividends%2CannualNetIncome%2CannualMinorityInterests%2CannualNetIncomeIncludingNoncontrollingInterests%2CannualNetIncomeFromTaxLossCarryforward%2CannualNetIncomeExtraordinary%2CannualNetIncomeDiscontinuousOperations%2CannualNetIncomeContinuousOperations%2CannualEarningsFromEquityInterestNetOfTax%2CannualTaxProvision%2CannualPretaxIncome%2CannualOtherIncomeExpense%2CannualOtherNonOperatingIncomeExpenses%2CannualSpecialIncomeCharges%2CannualGainOnSaleOfPPE%2CannualGainOnSaleOfBusiness%2CannualOtherSpecialCharges%2CannualWriteOff%2CannualImpairmentOfCapitalAssets%2CannualRestructuringAndMergernAcquisition%2CannualSecuritiesAmortization%2CannualEarningsFromEquityInterest%2CannualGainOnSaleOfSecurity%2CannualNetNonOperatingInterestIncomeExpense%2CannualTotalOtherFinanceCost%2CannualInterestExpenseNonOperating%2CannualInterestIncomeNonOperating%2CannualOperatingIncome%2CannualOperatingExpense%2CannualOtherOperatingExpenses%2CannualOtherTaxes%2CannualProvisionForDoubtfulAccounts%2CannualDepreciationAmortizationDepletionIncomeStatement%2CannualDepletionIncomeStatement%2CannualDepreciationAndAmortizationInIncomeStatement%2CannualAmortization%2CannualAmortizationOfIntangiblesIncomeStatement%2CannualDepreciationIncomeStatement%2CannualResearchAndDevelopment%2CannualSellingGeneralAndAdministration%2CannualSellingAndMarketingExpense%2CannualGeneralAndAdministrativeExpense%2CannualOtherGandA%2CannualInsuranceAndClaims%2CannualRentAndLandingFees%2CannualSalariesAndWages%2CannualGrossProfit%2CannualCostOfRevenue%2CannualTotalRevenue%2CannualExciseTaxes%2CannualOperatingRevenue%2CannualLossAdjustmentExpense%2CannualNetPolicyholderBenefitsAndClaims%2CannualPolicyholderBenefitsGross%2CannualPolicyholderBenefitsCeded%2CannualOccupancyAndEquipment%2CannualProfessionalExpenseAndContractServicesExpense%2CannualOtherNonInterestExpense&period1=MOCK_PERIOD_1&period2=MOCK_PERIOD_2
response:
body:
encoding: utf-8
string: !!binary |
eyJ0aW1lc2VyaWVzIjp7InJlc3VsdCI6W3sibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbE5ldEluY29tZUNvbnRpbnVvdXNPcGVyYXRpb25zIl19LCJ0aW1lc3RhbXAiOlsx
NjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsTmV0SW5j
b21lQ29udGludW91c09wZXJhdGlvbnMiOlt7ImRhdGFJZCI6MjAwOTQsImFzT2ZEYXRlIjoiMjAy
Mi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6OS45ODAzRTEwLCJmbXQiOiI5OS44MEIifX0seyJkYXRhSWQiOjIwMDk0
LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuNjk5NUUxMCwiZm10IjoiOTcuMDBCIn19
LHsiZGF0YUlkIjoyMDA5NCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjM3MzZFMTAs
ImZtdCI6IjkzLjc0QiJ9fSx7ImRhdGFJZCI6MjAwOTQsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6MS4xMjAxRTExLCJmbXQiOiIxMTIuMDFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJB
QVBMIl0sInR5cGUiOlsiYW5udWFsVGF4RWZmZWN0T2ZVbnVzdWFsSXRlbXMiXX0sInRpbWVzdGFt
cCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxU
YXhFZmZlY3RPZlVudXN1YWxJdGVtcyI6W3siZGF0YUlkIjoyMDQxOSwiYXNPZkRhdGUiOiIyMDIy
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjowLjAsImZtdCI6IjAuMDAifX0seyJkYXRhSWQiOjIwNDE5LCJhc09mRGF0
ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwi
cmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjAuMCwiZm10IjoiMC4wMCJ9fSx7ImRhdGFJZCI6MjA0MTks
ImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MC4wLCJmbXQiOiIwLjAwIn19LHsiZGF0YUlk
IjoyMDQxOSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjowLjAsImZtdCI6IjAuMDAifX1d
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXRJbmNvbWVGcm9t
Q29udGludWluZ09wZXJhdGlvbk5ldE1pbm9yaXR5SW50ZXJlc3QiXX0sInRpbWVzdGFtcCI6WzE2
NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxOZXRJbmNv
bWVGcm9tQ29udGludWluZ09wZXJhdGlvbk5ldE1pbm9yaXR5SW50ZXJlc3QiOlt7ImRhdGFJZCI6
MjAzMzEsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS45ODAzRTEwLCJmbXQiOiI5OS44
MEIifX0seyJkYXRhSWQiOjIwMzMxLCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuNjk5
NUUxMCwiZm10IjoiOTcuMDBCIn19LHsiZGF0YUlkIjoyMDMzMSwiYXNPZkRhdGUiOiIyMDI0LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3Ijo5LjM3MzZFMTAsImZtdCI6IjkzLjc0QiJ9fSx7ImRhdGFJZCI6MjAzMzEsImFz
T2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xMjAxRTExLCJmbXQiOiIxMTIuMDFCIn19XX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVG90YWxPcGVyYXRpbmdJ
bmNvbWVBc1JlcG9ydGVkIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcy
NzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsVG90YWxPcGVyYXRpbmdJbmNvbWVBc1JlcG9ydGVk
IjpbeyJkYXRhSWQiOjIwNDM1LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMTk0MzdF
MTEsImZtdCI6IjExOS40NEIifX0seyJkYXRhSWQiOjIwNDM1LCJhc09mRGF0ZSI6IjIwMjMtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjEuMTQzMDFFMTEsImZtdCI6IjExNC4zMEIifX0seyJkYXRhSWQiOjIwNDM1LCJh
c09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMjMyMTZFMTEsImZtdCI6IjEyMy4yMkIifX0s
eyJkYXRhSWQiOjIwNDM1LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMzMwNUUxMSwi
Zm10IjoiMTMzLjA1QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbEJhc2ljQXZlcmFnZVNoYXJlcyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMy
MDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEJhc2ljQXZlcmFnZVNoYXJlcyI6W3si
ZGF0YUlkIjoyOTAxMCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjYyMTU5NjNFMTAs
ImZtdCI6IjE2LjIyQiJ9fSx7ImRhdGFJZCI6MjkwMTAsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6MS41NzQ0MjMxRTEwLCJmbXQiOiIxNS43NEIifX0seyJkYXRhSWQiOjI5MDEwLCJhc09m
RGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNTM0Mzc4M0UxMCwiZm10IjoiMTUuMzRCIn19LHsi
ZGF0YUlkIjoyOTAxMCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjQ5NDg1RTEwLCJm
bXQiOiIxNC45NUIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxSZWNvbmNpbGVkRGVwcmVjaWF0aW9uIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYw
MzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsUmVjb25jaWxlZERlcHJlY2lhdGlv
biI6W3siZGF0YUlkIjoyMDMxNSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjExMDRF
MTAsImZtdCI6IjExLjEwQiJ9fSx7ImRhdGFJZCI6MjAzMTUsImFzT2ZEYXRlIjoiMjAyMy0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6MS4xNTE5RTEwLCJmbXQiOiIxMS41MkIifX0seyJkYXRhSWQiOjIwMzE1LCJhc09m
RGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMTQ0NUUxMCwiZm10IjoiMTEuNDVCIn19LHsiZGF0
YUlkIjoyMDMxNSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjE2OThFMTAsImZtdCI6
IjExLjcwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE9w
ZXJhdGluZ0V4cGVuc2UiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3
NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxPcGVyYXRpbmdFeHBlbnNlIjpbeyJkYXRhSWQiOjIw
MTA4LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjUuMTM0NUUxMCwiZm10IjoiNTEuMzRC
In19LHsiZGF0YUlkIjoyMDEwOCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6
IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo1LjQ4NDdF
MTAsImZtdCI6IjU0Ljg1QiJ9fSx7ImRhdGFJZCI6MjAxMDgsImFzT2ZEYXRlIjoiMjAyNC0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6NS43NDY3RTEwLCJmbXQiOiI1Ny40N0IifX0seyJkYXRhSWQiOjIwMTA4LCJhc09m
RGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjYuMjE1MUUxMCwiZm10IjoiNjIuMTVCIn19XX0seyJt
ZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsVG90YWxSZXZlbnVlIl19LCJ0
aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwi
YW5udWFsVG90YWxSZXZlbnVlIjpbeyJkYXRhSWQiOjIwMTAwLCJhc09mRGF0ZSI6IjIwMjItMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjMuOTQzMjhFMTEsImZtdCI6IjM5NC4zM0IifX0seyJkYXRhSWQiOjIwMTAwLCJh
c09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuODMyODVFMTEsImZtdCI6IjM4My4yOUIifX0s
eyJkYXRhSWQiOjIwMTAwLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuOTEwMzVFMTEs
ImZtdCI6IjM5MS4wNEIifX0seyJkYXRhSWQiOjIwMTAwLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAi
LCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6
eyJyYXciOjQuMTYxNjFFMTEsImZtdCI6IjQxNi4xNkIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZXNlYXJjaEFuZERldmVsb3BtZW50Il19LCJ0aW1lc3Rh
bXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFs
UmVzZWFyY2hBbmREZXZlbG9wbWVudCI6W3siZGF0YUlkIjoyMDE1MSwiYXNPZkRhdGUiOiIyMDIy
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoyLjYyNTFFMTAsImZtdCI6IjI2LjI1QiJ9fSx7ImRhdGFJZCI6MjAxNTEs
ImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi45OTE1RTEwLCJmbXQiOiIyOS45MUIifX0s
eyJkYXRhSWQiOjIwMTUxLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuMTM3RTEwLCJm
bXQiOiIzMS4zN0IifX0seyJkYXRhSWQiOjIwMTUxLCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjMuNDU1RTEwLCJmbXQiOiIzNC41NUIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxJbnRlcmVzdEV4cGVuc2UiXX0sInRpbWVzdGFtcCI6WzE2MzI5NjAw
MDAsMTY2NDQ5NjAwMCwxNjk2MDMyMDAwXSwiYW5udWFsSW50ZXJlc3RFeHBlbnNlIjpbeyJkYXRh
SWQiOjIwMDU3LCJhc09mRGF0ZSI6IjIwMjEtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuNjQ1RTksImZtdCI6IjIu
NjVCIn19LHsiZGF0YUlkIjoyMDA1NywiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjkz
MUU5LCJmbXQiOiIyLjkzQiJ9fSx7ImRhdGFJZCI6MjAwNTcsImFzT2ZEYXRlIjoiMjAyMy0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6My45MzNFOSwiZm10IjoiMy45M0IifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFB
UEwiXSwidHlwZSI6WyJhbm51YWxEaWx1dGVkTklBdmFpbHRvQ29tU3RvY2tob2xkZXJzIl19LCJ0
aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwi
YW5udWFsRGlsdXRlZE5JQXZhaWx0b0NvbVN0b2NraG9sZGVycyI6W3siZGF0YUlkIjoyMDQyNCwi
YXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5Ljk4MDNFMTAsImZtdCI6Ijk5LjgwQiJ9fSx7
ImRhdGFJZCI6MjA0MjQsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS42OTk1RTEwLCJm
bXQiOiI5Ny4wMEIifX0seyJkYXRhSWQiOjIwNDI0LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjkuMzczNkUxMCwiZm10IjoiOTMuNzRCIn19LHsiZGF0YUlkIjoyMDQyNCwiYXNPZkRhdGUi
OiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjEyMDFFMTEsImZtdCI6IjExMi4wMUIifX1dfSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXRJbmNvbWVJbmNsdWRpbmdOb25j
b250cm9sbGluZ0ludGVyZXN0cyJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAw
LDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbE5ldEluY29tZUluY2x1ZGluZ05vbmNvbnRy
b2xsaW5nSW50ZXJlc3RzIjpbeyJkYXRhSWQiOjIwMzQ2LCJhc09mRGF0ZSI6IjIwMjItMDktMzAi
LCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6
eyJyYXciOjkuOTgwM0UxMCwiZm10IjoiOTkuODBCIn19LHsiZGF0YUlkIjoyMDM0NiwiYXNPZkRh
dGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjY5OTVFMTAsImZtdCI6Ijk3LjAwQiJ9fSx7ImRhdGFJ
ZCI6MjAzNDYsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS4zNzM2RTEwLCJmbXQiOiI5
My43NEIifX0seyJkYXRhSWQiOjIwMzQ2LCJhc09mRGF0ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEu
MTIwMUUxMSwiZm10IjoiMTEyLjAxQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0
eXBlIjpbImFubnVhbE5vcm1hbGl6ZWRFQklUREEiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAs
MTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxOb3JtYWxpemVkRUJJVERB
IjpbeyJkYXRhSWQiOjIwNDIwLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuMzA1NDFF
MTEsImZtdCI6IjEzMC41NEIifX0seyJkYXRhSWQiOjIwNDIwLCJhc09mRGF0ZSI6IjIwMjMtMDkt
MzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1
ZSI6eyJyYXciOjEuMjU4MkUxMSwiZm10IjoiMTI1LjgyQiJ9fSx7ImRhdGFJZCI6MjA0MjAsImFz
T2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4zNDY2MUUxMSwiZm10IjoiMTM0LjY2QiJ9fSx7
ImRhdGFJZCI6MjA0MjAsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS40NDc0OEUxMSwi
Zm10IjoiMTQ0Ljc1QiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbEdyb3NzUHJvZml0Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcy
NzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsR3Jvc3NQcm9maXQiOlt7ImRhdGFJZCI6MjAwNDYs
ImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS43MDc4MkUxMSwiZm10IjoiMTcwLjc4QiJ9
fSx7ImRhdGFJZCI6MjAwNDYsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIx
Mk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS42OTE0OEUx
MSwiZm10IjoiMTY5LjE1QiJ9fSx7ImRhdGFJZCI6MjAwNDYsImFzT2ZEYXRlIjoiMjAyNC0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6MS44MDY4M0UxMSwiZm10IjoiMTgwLjY4QiJ9fSx7ImRhdGFJZCI6MjAwNDYsImFz
T2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJV
U0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS45NTIwMUUxMSwiZm10IjoiMTk1LjIwQiJ9fV19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEJhc2ljRVBTIl19LCJ0
aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwi
YW5udWFsQmFzaWNFUFMiOlt7ImRhdGFJZCI6MjkwMDQsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIs
InBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7
InJhdyI6Ni4xNSwiZm10IjoiNi4xNSJ9fSx7ImRhdGFJZCI6MjkwMDQsImFzT2ZEYXRlIjoiMjAy
My0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6Ni4xNiwiZm10IjoiNi4xNiJ9fSx7ImRhdGFJZCI6MjkwMDQsImFzT2ZE
YXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni4xMSwiZm10IjoiNi4xMSJ9fSx7ImRhdGFJZCI6Mjkw
MDQsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNv
ZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny40OSwiZm10IjoiNy40OSJ9fV19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyTm9uT3BlcmF0aW5n
SW5jb21lRXhwZW5zZXMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3
NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxPdGhlck5vbk9wZXJhdGluZ0luY29tZUV4cGVuc2Vz
IjpbeyJkYXRhSWQiOjIwNDEyLCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoi
MTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOi0zLjM0RTgs
ImZtdCI6Ii0zMzQuMDBNIn19LHsiZGF0YUlkIjoyMDQxMiwiYXNPZkRhdGUiOiIyMDIzLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjotNS42NUU4LCJmbXQiOiItNTY1LjAwTSJ9fSx7ImRhdGFJZCI6MjA0MTIsImFzT2ZE
YXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi42OUU4LCJmbXQiOiIyNjkuMDBNIn19LHsiZGF0YUlk
IjoyMDQxMiwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjotMy4yMUU4LCJmbXQiOiItMzIx
LjAwTSJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE9wZXJh
dGluZ1JldmVudWUiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0
NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxPcGVyYXRpbmdSZXZlbnVlIjpbeyJkYXRhSWQiOjIwMTEy
LCJhc09mRGF0ZSI6IjIwMjItMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2Rl
IjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuOTQzMjhFMTEsImZtdCI6IjM5NC4zM0Ii
fSwiYnVzaW5lc3NTZWdtZW50RGF0YSI6W3siZGF0YVZhbHVlIjoyLjkyOTJFMTAsInNlZ21lbnRU
eXBlIjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6ImlQYWQiLCJpc1ByaW1hcnlTZWdtZW50Ijow
fSx7ImRhdGFWYWx1ZSI6Mi4wNTQ4OUUxMSwic2VnbWVudFR5cGUiOiJCdXNpbmVzcyIsInNlZ21l
bnROYW1lIjoiaVBob25lIiwiaXNQcmltYXJ5U2VnbWVudCI6MX0seyJkYXRhVmFsdWUiOjQuMDE3
N0UxMCwic2VnbWVudFR5cGUiOiJCdXNpbmVzcyIsInNlZ21lbnROYW1lIjoiTWFjIiwiaXNQcmlt
YXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjcuODEyOUUxMCwic2VnbWVudFR5cGUiOiJCdXNp
bmVzcyIsInNlZ21lbnROYW1lIjoiU2VydmljZXMiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRh
dGFWYWx1ZSI6NC4xMjQxRTEwLCJzZWdtZW50VHlwZSI6IkJ1c2luZXNzIiwic2VnbWVudE5hbWUi
OiJXZWFyYWJsZXMsIEhvbWUgYW5kIEFjY2Vzc29yaWVzIiwiaXNQcmltYXJ5U2VnbWVudCI6MH1d
LCJnZW9ncmFwaGljU2VnbWVudERhdGEiOlt7ImRhdGFWYWx1ZSI6Mi4xNzk5RTEwLCJzZWdtZW50
VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkFtZXJpY2FzIiwiaXNQcmltYXJ5U2Vn
bWVudCI6MH0seyJkYXRhVmFsdWUiOjkuNTExOEUxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGlj
Iiwic2VnbWVudE5hbWUiOiJFdXJvcGUiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1
ZSI6Ny40MkUxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJHcmVh
dGVyIENoaW5hIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjIuNTk3N0UxMCwi
c2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJKYXBhbiIsImlzUHJpbWFy
eVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjoyLjkzNzVFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3Jh
cGhpYyIsInNlZ21lbnROYW1lIjoiUmVzdCBvZiBBc2lhIFBhY2lmaWMiLCJpc1ByaW1hcnlTZWdt
ZW50IjowfSx7ImRhdGFWYWx1ZSI6MS40Nzg1OUUxMSwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGlj
Iiwic2VnbWVudE5hbWUiOiJVbml0ZWQgU3RhdGVzIiwiaXNQcmltYXJ5U2VnbWVudCI6MX1dfSx7
ImRhdGFJZCI6MjAxMTIsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6My44MzI4NUUxMSwi
Zm10IjoiMzgzLjI5QiJ9LCJidXNpbmVzc1NlZ21lbnREYXRhIjpbeyJkYXRhVmFsdWUiOjIuODNF
MTAsInNlZ21lbnRUeXBlIjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6ImlQYWQiLCJpc1ByaW1h
cnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6Mi4wMDU4M0UxMSwic2VnbWVudFR5cGUiOiJCdXNp
bmVzcyIsInNlZ21lbnROYW1lIjoiaVBob25lIiwiaXNQcmltYXJ5U2VnbWVudCI6MX0seyJkYXRh
VmFsdWUiOjIuOTM1N0UxMCwic2VnbWVudFR5cGUiOiJCdXNpbmVzcyIsInNlZ21lbnROYW1lIjoi
TWFjIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjguNTJFMTAsInNlZ21lbnRU
eXBlIjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6IlNlcnZpY2VzIiwiaXNQcmltYXJ5U2VnbWVu
dCI6MH0seyJkYXRhVmFsdWUiOjMuOTg0NUUxMCwic2VnbWVudFR5cGUiOiJCdXNpbmVzcyIsInNl
Z21lbnROYW1lIjoiV2VhcmFibGVzLCBIb21lIGFuZCBBY2Nlc3NvcmllcyIsImlzUHJpbWFyeVNl
Z21lbnQiOjB9XSwiZ2VvZ3JhcGhpY1NlZ21lbnREYXRhIjpbeyJkYXRhVmFsdWUiOjIuMzk4N0Ux
MCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJBbWVyaWNhcyIsImlz
UHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjo5LjQyOTRFMTAsInNlZ21lbnRUeXBlIjoi
R2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiRXVyb3BlIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0s
eyJkYXRhVmFsdWUiOjcuMjU1OUUxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVu
dE5hbWUiOiJHcmVhdGVyIENoaW5hIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUi
OjIuNDI1N0UxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJKYXBh
biIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjoyLjk2MTVFMTAsInNlZ21lbnRU
eXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiUmVzdCBvZiBBc2lhIFBhY2lmaWMiLCJp
c1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6MS4zODU3M0UxMSwic2VnbWVudFR5cGUi
OiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJVbml0ZWQgU3RhdGVzIiwiaXNQcmltYXJ5U2Vn
bWVudCI6MX1dfSx7ImRhdGFJZCI6MjAxMTIsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
My45MTAzNUUxMSwiZm10IjoiMzkxLjA0QiJ9LCJidXNpbmVzc1NlZ21lbnREYXRhIjpbeyJkYXRh
VmFsdWUiOjIuNjY5NEUxMCwic2VnbWVudFR5cGUiOiJCdXNpbmVzcyIsInNlZ21lbnROYW1lIjoi
aVBhZCIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjoyLjAxMTgzRTExLCJzZWdt
ZW50VHlwZSI6IkJ1c2luZXNzIiwic2VnbWVudE5hbWUiOiJpUGhvbmUiLCJpc1ByaW1hcnlTZWdt
ZW50IjoxfSx7ImRhdGFWYWx1ZSI6Mi45OTg0RTEwLCJzZWdtZW50VHlwZSI6IkJ1c2luZXNzIiwi
c2VnbWVudE5hbWUiOiJNYWMiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6OS42
MTY5RTEwLCJzZWdtZW50VHlwZSI6IkJ1c2luZXNzIiwic2VnbWVudE5hbWUiOiJTZXJ2aWNlcyIs
ImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjozLjcwMDVFMTAsInNlZ21lbnRUeXBl
IjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6IldlYXJhYmxlcywgSG9tZSBhbmQgQWNjZXNzb3Jp
ZXMiLCJpc1ByaW1hcnlTZWdtZW50IjowfV0sImdlb2dyYXBoaWNTZWdtZW50RGF0YSI6W3siZGF0
YVZhbHVlIjoyLjQ4NDlFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1l
IjoiQW1lcmljYXMiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6MS4wMTMyOEUx
MSwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJFdXJvcGUiLCJpc1By
aW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6Ni42OTUyRTEwLCJzZWdtZW50VHlwZSI6Ikdl
b2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkdyZWF0ZXIgQ2hpbmEiLCJpc1ByaW1hcnlTZWdtZW50
IjowfSx7ImRhdGFWYWx1ZSI6Mi41MDUyRTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJz
ZWdtZW50TmFtZSI6IkphcGFuIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjMu
MDY1OEUxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJSZXN0IG9m
IEFzaWEgUGFjaWZpYyIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjoxLjQyMTk2
RTExLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IlVuaXRlZCBTdGF0
ZXMiLCJpc1ByaW1hcnlTZWdtZW50IjoxfV19LHsiZGF0YUlkIjoyMDExMiwiYXNPZkRhdGUiOiIy
MDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3Ijo0LjE2MTYxRTExLCJmbXQiOiI0MTYuMTZCIn0sImJ1c2luZXNzU2Vn
bWVudERhdGEiOlt7ImRhdGFWYWx1ZSI6Mi44MDIzRTEwLCJzZWdtZW50VHlwZSI6IkJ1c2luZXNz
Iiwic2VnbWVudE5hbWUiOiJpUGFkIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUi
OjIuMDk1ODZFMTEsInNlZ21lbnRUeXBlIjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6ImlQaG9u
ZSIsImlzUHJpbWFyeVNlZ21lbnQiOjF9LHsiZGF0YVZhbHVlIjozLjM3MDhFMTAsInNlZ21lbnRU
eXBlIjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6Ik1hYyIsImlzUHJpbWFyeVNlZ21lbnQiOjB9
LHsiZGF0YVZhbHVlIjoxLjA5MTU4RTExLCJzZWdtZW50VHlwZSI6IkJ1c2luZXNzIiwic2VnbWVu
dE5hbWUiOiJTZXJ2aWNlcyIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjozLjU2
ODZFMTAsInNlZ21lbnRUeXBlIjoiQnVzaW5lc3MiLCJzZWdtZW50TmFtZSI6IldlYXJhYmxlcywg
SG9tZSBhbmQgQWNjZXNzb3JpZXMiLCJpc1ByaW1hcnlTZWdtZW50IjowfV0sImdlb2dyYXBoaWNT
ZWdtZW50RGF0YSI6W3siZGF0YVZhbHVlIjoyLjY1NjNFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3Jh
cGhpYyIsInNlZ21lbnROYW1lIjoiQW1lcmljYXMiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRh
dGFWYWx1ZSI6MC4wLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkNv
cnBvcmF0ZSIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjoxLjExMDMyRTExLCJz
ZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkV1cm9wZSIsImlzUHJpbWFy
eVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjo2LjQzNzdFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3Jh
cGhpYyIsInNlZ21lbnROYW1lIjoiR3JlYXRlciBDaGluYSIsImlzUHJpbWFyeVNlZ21lbnQiOjB9
LHsiZGF0YVZhbHVlIjoyLjg3MDNFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21l
bnROYW1lIjoiSmFwYW4iLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6My4zNjk2
RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IlJlc3Qgb2YgQXNp
YSBQYWNpZmljIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjEuNTE3OUUxMSwi
c2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJVbml0ZWQgU3RhdGVzIiwi
aXNQcmltYXJ5U2VnbWVudCI6MX1dfV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBl
IjpbImFubnVhbEVCSVREQSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3
Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbEVCSVREQSI6W3siZGF0YUlkIjoyMDE5MCwiYXNP
ZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjMwNTQxRTExLCJmbXQiOiIxMzAuNTRCIn19LHsi
ZGF0YUlkIjoyMDE5MCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjI1ODJFMTEsImZt
dCI6IjEyNS44MkIifX0seyJkYXRhSWQiOjIwMTkwLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjEuMzQ2NjFFMTEsImZtdCI6IjEzNC42NkIifX0seyJkYXRhSWQiOjIwMTkwLCJhc09mRGF0
ZSI6IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwi
cmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNDQ3NDhFMTEsImZtdCI6IjE0NC43NUIifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnRlcmVzdEluY29tZSJdfSwi
dGltZXN0YW1wIjpbMTYzMjk2MDAwMCwxNjY0NDk2MDAwLDE2OTYwMzIwMDBdLCJhbm51YWxJbnRl
cmVzdEluY29tZSI6W3siZGF0YUlkIjoyMDE3NywiYXNPZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjoyLjg0M0U5LCJmbXQiOiIyLjg0QiJ9fSx7ImRhdGFJZCI6MjAxNzcsImFzT2ZEYXRlIjoiMjAy
Mi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6Mi44MjVFOSwiZm10IjoiMi44M0IifX0seyJkYXRhSWQiOjIwMTc3LCJh
c09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuNzVFOSwiZm10IjoiMy43NUIifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXROb25PcGVyYXRpbmdJbnRl
cmVzdEluY29tZUV4cGVuc2UiXX0sInRpbWVzdGFtcCI6WzE2MzI5NjAwMDAsMTY2NDQ5NjAwMCwx
Njk2MDMyMDAwXSwiYW5udWFsTmV0Tm9uT3BlcmF0aW5nSW50ZXJlc3RJbmNvbWVFeHBlbnNlIjpb
eyJkYXRhSWQiOjIwMDc3LCJhc09mRGF0ZSI6IjIwMjEtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJN
IiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuOThFOCwiZm10
IjoiMTk4LjAwTSJ9fSx7ImRhdGFJZCI6MjAwNzcsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6LTEuMDZFOCwiZm10IjoiLTEwNi4wME0ifX0seyJkYXRhSWQiOjIwMDc3LCJhc09mRGF0ZSI6
IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOi0xLjgzRTgsImZtdCI6Ii0xODMuMDBNIn19XX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUmVjb25jaWxlZENvc3RPZlJldmVudWUi
XX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0
MDBdLCJhbm51YWxSZWNvbmNpbGVkQ29zdE9mUmV2ZW51ZSI6W3siZGF0YUlkIjoyMDMxNCwiYXNP
ZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjIzNTQ2RTExLCJmbXQiOiIyMjMuNTVCIn19LHsi
ZGF0YUlkIjoyMDMxNCwiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjE0MTM3RTExLCJm
bXQiOiIyMTQuMTRCIn19LHsiZGF0YUlkIjoyMDMxNCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwi
cGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsi
cmF3IjoyLjEwMzUyRTExLCJmbXQiOiIyMTAuMzVCIn19LHsiZGF0YUlkIjoyMDMxNCwiYXNPZkRh
dGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjIwOTZFMTEsImZtdCI6IjIyMC45NkIifX1dfSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUYXhSYXRlRm9yQ2FsY3MiXX0s
InRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBd
LCJhbm51YWxUYXhSYXRlRm9yQ2FsY3MiOlt7ImRhdGFJZCI6MjA0MTgsImFzT2ZEYXRlIjoiMjAy
Mi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRl
ZFZhbHVlIjp7InJhdyI6MC4xNjIsImZtdCI6IjAuMTYifX0seyJkYXRhSWQiOjIwNDE4LCJhc09m
RGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNE
IiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjAuMTQ3LCJmbXQiOiIwLjE1In19LHsiZGF0YUlkIjoy
MDQxOCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjowLjI0MSwiZm10IjoiMC4yNCJ9fSx7
ImRhdGFJZCI6MjA0MTgsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MC4xNTYsImZtdCI6
IjAuMTYifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOZXRJ
bmNvbWVDb21tb25TdG9ja2hvbGRlcnMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAz
MjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxOZXRJbmNvbWVDb21tb25TdG9ja2hv
bGRlcnMiOlt7ImRhdGFJZCI6MjAwOTMsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS45
ODAzRTEwLCJmbXQiOiI5OS44MEIifX0seyJkYXRhSWQiOjIwMDkzLCJhc09mRGF0ZSI6IjIwMjMt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjkuNjk5NUUxMCwiZm10IjoiOTcuMDBCIn19LHsiZGF0YUlkIjoyMDA5Mywi
YXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjM3MzZFMTAsImZtdCI6IjkzLjc0QiJ9fSx7
ImRhdGFJZCI6MjAwOTMsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xMjAxRTExLCJm
bXQiOiIxMTIuMDFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsRGlsdXRlZEF2ZXJhZ2VTaGFyZXMiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5NjAz
MjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxEaWx1dGVkQXZlcmFnZVNoYXJlcyI6
W3siZGF0YUlkIjoyOTAxMSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjYzMjU4MTlF
MTAsImZtdCI6IjE2LjMzQiJ9fSx7ImRhdGFJZCI6MjkwMTEsImFzT2ZEYXRlIjoiMjAyMy0wOS0z
MCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVl
Ijp7InJhdyI6MS41ODEyNTQ3RTEwLCJmbXQiOiIxNS44MUIifX0seyJkYXRhSWQiOjI5MDExLCJh
c09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEuNTQwODA5NUUxMCwiZm10IjoiMTUuNDFCIn19
LHsiZGF0YUlkIjoyOTAxMSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjUwMDQ2OTdF
MTAsImZtdCI6IjE1LjAwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpb
ImFubnVhbE5ldEluY29tZSJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3
Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbE5ldEluY29tZSI6W3siZGF0YUlkIjoyMDA5MSwi
YXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5Ljk4MDNFMTAsImZtdCI6Ijk5LjgwQiJ9fSx7
ImRhdGFJZCI6MjAwOTEsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS42OTk1RTEwLCJm
bXQiOiI5Ny4wMEIifX0seyJkYXRhSWQiOjIwMDkxLCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJw
ZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJy
YXciOjkuMzczNkUxMCwiZm10IjoiOTMuNzRCIn19LHsiZGF0YUlkIjoyMDA5MSwiYXNPZkRhdGUi
OiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoxLjEyMDFFMTEsImZtdCI6IjExMi4wMUIifX1dfSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxFQklUIl19LCJ0aW1lc3RhbXAiOlsx
NjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsRUJJVCI6
W3siZGF0YUlkIjoyMDE4OSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEy
TSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjE5NDM3RTEx
LCJmbXQiOiIxMTkuNDRCIn19LHsiZGF0YUlkIjoyMDE4OSwiYXNPZkRhdGUiOiIyMDIzLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoxLjE0MzAxRTExLCJmbXQiOiIxMTQuMzBCIn19LHsiZGF0YUlkIjoyMDE4OSwiYXNP
ZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVT
RCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjIzMjE2RTExLCJmbXQiOiIxMjMuMjJCIn19LHsi
ZGF0YUlkIjoyMDE4OSwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjMzMDVFMTEsImZt
dCI6IjEzMy4wNUIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxOb3JtYWxpemVkSW5jb21lIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAs
MTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsTm9ybWFsaXplZEluY29tZSI6W3siZGF0YUlk
IjoyMDMxNiwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJl
bmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5Ljk4MDNFMTAsImZtdCI6Ijk5
LjgwQiJ9fSx7ImRhdGFJZCI6MjAzMTYsImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6OS42
OTk1RTEwLCJmbXQiOiI5Ny4wMEIifX0seyJkYXRhSWQiOjIwMzE2LCJhc09mRGF0ZSI6IjIwMjQt
MDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRW
YWx1ZSI6eyJyYXciOjkuMzczNkUxMCwiZm10IjoiOTMuNzRCIn19LHsiZGF0YUlkIjoyMDMxNiwi
YXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6
IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjEyMDFFMTEsImZtdCI6IjExMi4wMUIifX1d
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxDb3N0T2ZSZXZlbnVl
Il19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkw
NDAwXSwiYW5udWFsQ29zdE9mUmV2ZW51ZSI6W3siZGF0YUlkIjoyMDAxMywiYXNPZkRhdGUiOiIy
MDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9y
dGVkVmFsdWUiOnsicmF3IjoyLjIzNTQ2RTExLCJmbXQiOiIyMjMuNTVCIn19LHsiZGF0YUlkIjoy
MDAxMywiYXNPZkRhdGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5
Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjE0MTM3RTExLCJmbXQiOiIyMTQu
MTRCIn19LHsiZGF0YUlkIjoyMDAxMywiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlw
ZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjEw
MzUyRTExLCJmbXQiOiIyMTAuMzVCIn19LHsiZGF0YUlkIjoyMDAxMywiYXNPZkRhdGUiOiIyMDI1
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoyLjIwOTZFMTEsImZtdCI6IjIyMC45NkIifX1dfSx7Im1ldGEiOnsic3lt
Ym9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxQcmV0YXhJbmNvbWUiXX0sInRpbWVzdGFtcCI6
WzE2NjQ0OTYwMDAsMTY5NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxQcmV0
YXhJbmNvbWUiOlt7ImRhdGFJZCI6MjAxMzYsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlv
ZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6
MS4xOTEwM0UxMSwiZm10IjoiMTE5LjEwQiJ9fSx7ImRhdGFJZCI6MjAxMzYsImFzT2ZEYXRlIjoi
MjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6MS4xMzczNkUxMSwiZm10IjoiMTEzLjc0QiJ9fSx7ImRhdGFJZCI6
MjAxMzYsImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yMzQ4NUUxMSwiZm10IjoiMTIz
LjQ4QiJ9fSx7ImRhdGFJZCI6MjAxMzYsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4z
MjcyOUUxMSwiZm10IjoiMTMyLjczQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0
eXBlIjpbImFubnVhbFRheFByb3Zpc2lvbiJdfSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2
MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbFRheFByb3Zpc2lvbiI6W3siZGF0
YUlkIjoyMDE0NSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoxLjkzRTEwLCJmbXQiOiIx
OS4zMEIifX0seyJkYXRhSWQiOjIwMTQ1LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RU
eXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjEu
Njc0MUUxMCwiZm10IjoiMTYuNzRCIn19LHsiZGF0YUlkIjoyMDE0NSwiYXNPZkRhdGUiOiIyMDI0
LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVk
VmFsdWUiOnsicmF3IjoyLjk3NDlFMTAsImZtdCI6IjI5Ljc1QiJ9fSx7ImRhdGFJZCI6MjAxNDUs
ImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi4wNzE5RTEwLCJmbXQiOiIyMC43MkIifX1d
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbnRlcmVzdEluY29t
ZU5vbk9wZXJhdGluZyJdfSwidGltZXN0YW1wIjpbMTYzMjk2MDAwMCwxNjY0NDk2MDAwLDE2OTYw
MzIwMDBdLCJhbm51YWxJbnRlcmVzdEluY29tZU5vbk9wZXJhdGluZyI6W3siZGF0YUlkIjoyMDA3
NSwiYXNPZkRhdGUiOiIyMDIxLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29k
ZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjg0M0U5LCJmbXQiOiIyLjg0QiJ9fSx7
ImRhdGFJZCI6MjAwNzUsImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi44MjVFOSwiZm10
IjoiMi44M0IifX0seyJkYXRhSWQiOjIwMDc1LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJp
b2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXci
OjMuNzVFOSwiZm10IjoiMy43NUIifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlw
ZSI6WyJhbm51YWxTZWxsaW5nR2VuZXJhbEFuZEFkbWluaXN0cmF0aW9uIl19LCJ0aW1lc3RhbXAi
OlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsU2Vs
bGluZ0dlbmVyYWxBbmRBZG1pbmlzdHJhdGlvbiI6W3siZGF0YUlkIjoyMDE1OSwiYXNPZkRhdGUi
OiIyMDIyLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJl
cG9ydGVkVmFsdWUiOnsicmF3IjoyLjUwOTRFMTAsImZtdCI6IjI1LjA5QiJ9fSx7ImRhdGFJZCI6
MjAxNTksImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5j
eUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi40OTMyRTEwLCJmbXQiOiIyNC45
M0IifX0seyJkYXRhSWQiOjIwMTU5LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBl
IjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuNjA5
N0UxMCwiZm10IjoiMjYuMTBCIn19LHsiZGF0YUlkIjoyMDE1OSwiYXNPZkRhdGUiOiIyMDI1LTA5
LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFs
dWUiOnsicmF3IjoyLjc2MDFFMTAsImZtdCI6IjI3LjYwQiJ9fV19LHsibWV0YSI6eyJzeW1ib2wi
OlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVySW5jb21lRXhwZW5zZSJdfSwidGltZXN0YW1w
IjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQwMF0sImFubnVhbE90
aGVySW5jb21lRXhwZW5zZSI6W3siZGF0YUlkIjoyMDExNywiYXNPZkRhdGUiOiIyMDIyLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjotMy4zNEU4LCJmbXQiOiItMzM0LjAwTSJ9fSx7ImRhdGFJZCI6MjAxMTcsImFzT2ZE
YXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0Qi
LCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTUuNjVFOCwiZm10IjoiLTU2NS4wME0ifX0seyJkYXRh
SWQiOjIwMTE3LCJhc09mRGF0ZSI6IjIwMjQtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3Vy
cmVuY3lDb2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjIuNjlFOCwiZm10IjoiMjY5
LjAwTSJ9fSx7ImRhdGFJZCI6MjAxMTcsImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5
cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6LTMu
MjFFOCwiZm10IjoiLTMyMS4wME0ifX1dfSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlw
ZSI6WyJhbm51YWxPcGVyYXRpbmdJbmNvbWUiXX0sInRpbWVzdGFtcCI6WzE2NjQ0OTYwMDAsMTY5
NjAzMjAwMCwxNzI3NjU0NDAwLDE3NTkxOTA0MDBdLCJhbm51YWxPcGVyYXRpbmdJbmNvbWUiOlt7
ImRhdGFJZCI6MjAxMDksImFzT2ZEYXRlIjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xOTQzN0UxMSwi
Zm10IjoiMTE5LjQ0QiJ9LCJnZW9ncmFwaGljU2VnbWVudERhdGEiOlt7ImRhdGFWYWx1ZSI6Ni4y
NjgzRTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkFtZXJpY2Fz
LCBleGNsdWRpbmcgVS5TIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjMuNTIz
M0UxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJFdXJvcGUiLCJp
c1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6My4xMTUzRTEwLCJzZWdtZW50VHlwZSI6
Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkdyZWF0ZXIgQ2hpbmEiLCJpc1ByaW1hcnlTZWdt
ZW50IjowfSx7ImRhdGFWYWx1ZSI6MS4yMjU3RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMi
LCJzZWdtZW50TmFtZSI6IkphcGFuIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUi
Oi03LjIwN0U5LCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6Ik90aGVy
IGNvcnBvcmF0ZSBleHBlbnNlcywgbmV0IiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFs
dWUiOi0yLjYyNTFFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoi
UmVzZWFyY2ggYW5kIGRldmVsb3BtZW50IGV4cGVuc2UiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7
ImRhdGFWYWx1ZSI6MS4xNTY5RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50
TmFtZSI6IlJlc3Qgb2YgQXNpYSBQYWNpZmljIiwiaXNQcmltYXJ5U2VnbWVudCI6MH1dfSx7ImRh
dGFJZCI6MjAxMDksImFzT2ZEYXRlIjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJj
dXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4xNDMwMUUxMSwiZm10
IjoiMTE0LjMwQiJ9LCJnZW9ncmFwaGljU2VnbWVudERhdGEiOlt7ImRhdGFWYWx1ZSI6Ni4wNTA4
RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkFtZXJpY2FzLCBl
eGNsdWRpbmcgVS5TIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjMuNjA5OEUx
MCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJFdXJvcGUiLCJpc1By
aW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6My4wMzI4RTEwLCJzZWdtZW50VHlwZSI6Ikdl
b2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkdyZWF0ZXIgQ2hpbmEiLCJpc1ByaW1hcnlTZWdtZW50
IjowfSx7ImRhdGFWYWx1ZSI6MS4xODg4RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJz
ZWdtZW50TmFtZSI6IkphcGFuIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOi02
LjY3MkU5LCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6Ik90aGVyIGNv
cnBvcmF0ZSBleHBlbnNlcywgbmV0IiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUi
Oi0yLjk5MTVFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiUmVz
ZWFyY2ggYW5kIGRldmVsb3BtZW50IGV4cGVuc2UiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRh
dGFWYWx1ZSI6MS4yMDY2RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFt
ZSI6IlJlc3Qgb2YgQXNpYSBQYWNpZmljIiwiaXNQcmltYXJ5U2VnbWVudCI6MH1dfSx7ImRhdGFJ
ZCI6MjAxMDksImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS4yMzIxNkUxMSwiZm10Ijoi
MTIzLjIyQiJ9LCJnZW9ncmFwaGljU2VnbWVudERhdGEiOlt7ImRhdGFWYWx1ZSI6Ni43NjU2RTEw
LCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkFtZXJpY2FzIiwiaXNQ
cmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjQuMTc5RTEwLCJzZWdtZW50VHlwZSI6Ikdl
b2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkV1cm9wZSIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsi
ZGF0YVZhbHVlIjoyLjcwODJFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnRO
YW1lIjoiR3JlYXRlciBDaGluYSIsImlzUHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjox
LjI0NTRFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiSmFwYW4i
LCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6LTcuNDU4RTksInNlZ21lbnRUeXBl
IjoiR2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiT3RoZXIgY29ycG9yYXRlIGV4cGVuc2VzLCBu
ZXQiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6LTMuMTM3RTEwLCJzZWdtZW50
VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IlJlc2VhcmNoIGFuZCBkZXZlbG9wbWVu
dCBleHBlbnNlIiwiaXNQcmltYXJ5U2VnbWVudCI6MH0seyJkYXRhVmFsdWUiOjEuMzA2MkUxMCwi
c2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5hbWUiOiJSZXN0IG9mIEFzaWEgUGFj
aWZpYyIsImlzUHJpbWFyeVNlZ21lbnQiOjB9XX0seyJkYXRhSWQiOjIwMTA5LCJhc09mRGF0ZSI6
IjIwMjUtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoiVVNEIiwicmVw
b3J0ZWRWYWx1ZSI6eyJyYXciOjEuMzMwNUUxMSwiZm10IjoiMTMzLjA1QiJ9LCJnZW9ncmFwaGlj
U2VnbWVudERhdGEiOlt7ImRhdGFWYWx1ZSI6Ny4yNDhFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3Jh
cGhpYyIsInNlZ21lbnROYW1lIjoiQW1lcmljYXMiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRh
dGFWYWx1ZSI6LTQuMjYyN0UxMCwic2VnbWVudFR5cGUiOiJHZW9ncmFwaGljIiwic2VnbWVudE5h
bWUiOiJDb3Jwb3JhdGUiLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6NC43NzM5
RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IkV1cm9wZSIsImlz
UHJpbWFyeVNlZ21lbnQiOjB9LHsiZGF0YVZhbHVlIjoyLjY5MTdFMTAsInNlZ21lbnRUeXBlIjoi
R2VvZ3JhcGhpYyIsInNlZ21lbnROYW1lIjoiR3JlYXRlciBDaGluYSIsImlzUHJpbWFyeVNlZ21l
bnQiOjB9LHsiZGF0YVZhbHVlIjoxLjM5NTVFMTAsInNlZ21lbnRUeXBlIjoiR2VvZ3JhcGhpYyIs
InNlZ21lbnROYW1lIjoiSmFwYW4iLCJpc1ByaW1hcnlTZWdtZW50IjowfSx7ImRhdGFWYWx1ZSI6
MS40NTg2RTEwLCJzZWdtZW50VHlwZSI6Ikdlb2dyYXBoaWMiLCJzZWdtZW50TmFtZSI6IlJlc3Qg
b2YgQXNpYSBQYWNpZmljIiwiaXNQcmltYXJ5U2VnbWVudCI6MH1dfV19LHsibWV0YSI6eyJzeW1i
b2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldEluY29tZUZyb21Db250aW51aW5nQW5kRGlz
Y29udGludWVkT3BlcmF0aW9uIl19LCJ0aW1lc3RhbXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAs
MTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFsTmV0SW5jb21lRnJvbUNvbnRpbnVpbmdBbmRE
aXNjb250aW51ZWRPcGVyYXRpb24iOlt7ImRhdGFJZCI6MjAzMDksImFzT2ZEYXRlIjoiMjAyMi0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6OS45ODAzRTEwLCJmbXQiOiI5OS44MEIifX0seyJkYXRhSWQiOjIwMzA5LCJh
c09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lDb2RlIjoi
VVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjkuNjk5NUUxMCwiZm10IjoiOTcuMDBCIn19LHsi
ZGF0YUlkIjoyMDMwOSwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIs
ImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3Ijo5LjM3MzZFMTAsImZt
dCI6IjkzLjc0QiJ9fSx7ImRhdGFJZCI6MjAzMDksImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBl
cmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJh
dyI6MS4xMjAxRTExLCJmbXQiOiIxMTIuMDFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsTmV0SW50ZXJlc3RJbmNvbWUiXX0sInRpbWVzdGFtcCI6WzE2MzI5
NjAwMDAsMTY2NDQ5NjAwMCwxNjk2MDMyMDAwXSwiYW5udWFsTmV0SW50ZXJlc3RJbmNvbWUiOlt7
ImRhdGFJZCI6MjAwOTUsImFzT2ZEYXRlIjoiMjAyMS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0i
LCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6MS45OEU4LCJmbXQi
OiIxOTguMDBNIn19LHsiZGF0YUlkIjoyMDA5NSwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjotMS4wNkU4LCJmbXQiOiItMTA2LjAwTSJ9fSx7ImRhdGFJZCI6MjAwOTUsImFzT2ZEYXRlIjoi
MjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBv
cnRlZFZhbHVlIjp7InJhdyI6LTEuODNFOCwiZm10IjoiLTE4My4wME0ifX1dfSx7Im1ldGEiOnsi
c3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUb3RhbEV4cGVuc2VzIl19LCJ0aW1lc3Rh
bXAiOlsxNjY0NDk2MDAwLDE2OTYwMzIwMDAsMTcyNzY1NDQwMCwxNzU5MTkwNDAwXSwiYW5udWFs
VG90YWxFeHBlbnNlcyI6W3siZGF0YUlkIjoyMDE2NCwiYXNPZkRhdGUiOiIyMDIyLTA5LTMwIiwi
cGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsi
cmF3IjoyLjc0ODkxRTExLCJmbXQiOiIyNzQuODlCIn19LHsiZGF0YUlkIjoyMDE2NCwiYXNPZkRh
dGUiOiIyMDIzLTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIs
InJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjY4OTg0RTExLCJmbXQiOiIyNjguOThCIn19LHsiZGF0
YUlkIjoyMDE2NCwiYXNPZkRhdGUiOiIyMDI0LTA5LTMwIiwicGVyaW9kVHlwZSI6IjEyTSIsImN1
cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3IjoyLjY3ODE5RTExLCJmbXQi
OiIyNjcuODJCIn19LHsiZGF0YUlkIjoyMDE2NCwiYXNPZkRhdGUiOiIyMDI1LTA5LTMwIiwicGVy
aW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUiOnsicmF3
IjoyLjgzMTExRTExLCJmbXQiOiIyODMuMTFCIn19XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsSW50ZXJlc3RFeHBlbnNlTm9uT3BlcmF0aW5nIl19LCJ0aW1lc3Rh
bXAiOlsxNjMyOTYwMDAwLDE2NjQ0OTYwMDAsMTY5NjAzMjAwMF0sImFubnVhbEludGVyZXN0RXhw
ZW5zZU5vbk9wZXJhdGluZyI6W3siZGF0YUlkIjoyMDA2NCwiYXNPZkRhdGUiOiIyMDIxLTA5LTMw
IiwicGVyaW9kVHlwZSI6IjEyTSIsImN1cnJlbmN5Q29kZSI6IlVTRCIsInJlcG9ydGVkVmFsdWUi
OnsicmF3IjoyLjY0NUU5LCJmbXQiOiIyLjY1QiJ9fSx7ImRhdGFJZCI6MjAwNjQsImFzT2ZEYXRl
IjoiMjAyMi0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6Mi45MzFFOSwiZm10IjoiMi45M0IifX0seyJkYXRhSWQiOjIw
MDY0LCJhc09mRGF0ZSI6IjIwMjMtMDktMzAiLCJwZXJpb2RUeXBlIjoiMTJNIiwiY3VycmVuY3lD
b2RlIjoiVVNEIiwicmVwb3J0ZWRWYWx1ZSI6eyJyYXciOjMuOTMzRTksImZtdCI6IjMuOTNCIn19
XX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRGlsdXRlZEVQUyJd
fSwidGltZXN0YW1wIjpbMTY2NDQ5NjAwMCwxNjk2MDMyMDAwLDE3Mjc2NTQ0MDAsMTc1OTE5MDQw
MF0sImFubnVhbERpbHV0ZWRFUFMiOlt7ImRhdGFJZCI6MjkwMDksImFzT2ZEYXRlIjoiMjAyMi0w
OS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZh
bHVlIjp7InJhdyI6Ni4xMSwiZm10IjoiNi4xMSJ9fSx7ImRhdGFJZCI6MjkwMDksImFzT2ZEYXRl
IjoiMjAyMy0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUiOiJVU0QiLCJy
ZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni4xMywiZm10IjoiNi4xMyJ9fSx7ImRhdGFJZCI6MjkwMDks
ImFzT2ZEYXRlIjoiMjAyNC0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJyZW5jeUNvZGUi
OiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ni4wOCwiZm10IjoiNi4wOCJ9fSx7ImRhdGFJ
ZCI6MjkwMDksImFzT2ZEYXRlIjoiMjAyNS0wOS0zMCIsInBlcmlvZFR5cGUiOiIxMk0iLCJjdXJy
ZW5jeUNvZGUiOiJVU0QiLCJyZXBvcnRlZFZhbHVlIjp7InJhdyI6Ny40NiwiZm10IjoiNy40NiJ9
fV19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbEJhc2ljRVBTT3Ro
ZXJHYWluc0xvc3NlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsR2Fpbk9uU2FsZU9mQnVzaW5lc3MiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0
eXBlIjpbImFubnVhbFNwZWNpYWxJbmNvbWVDaGFyZ2VzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxMb3NzQWRqdXN0bWVudEV4cGVuc2UiXX19LHsibWV0YSI6
eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFRvdGFsVW51c3VhbEl0ZW1zIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxNaW5vcml0eUludGVyZXN0
cyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsU2VjdXJpdGll
c0Ftb3J0aXphdGlvbiJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsVG90YWxVbnVzdWFsSXRlbXNFeGNsdWRpbmdHb29kd2lsbCJdfX0seyJtZXRhIjp7InN5bWJv
bCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRGl2aWRlbmRQZXJTaGFyZSJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRWFybmluZ3NGcm9tRXF1aXR5SW50ZXJl
c3QiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFJlbnRBbmRM
YW5kaW5nRmVlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFs
RGlsdXRlZENvbnRpbnVvdXNPcGVyYXRpb25zIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxCYXNpY0Rpc2NvbnRpbnVvdXNPcGVyYXRpb25zIl19fSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxCYXNpY0NvbnRpbnVvdXNPcGVyYXRp
b25zIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxPY2N1cGFu
Y3lBbmRFcXVpcG1lbnQiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbE5ldEluY29tZURpc2NvbnRpbnVvdXNPcGVyYXRpb25zIl19fSx7Im1ldGEiOnsic3ltYm9s
IjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZXBvcnRlZE5vcm1hbGl6ZWRCYXNpY0VQUyJdfX0s
eyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUmVzdHJ1Y3R1cmluZ0Fu
ZE1lcmdlcm5BY3F1aXNpdGlvbiJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsQW1vcnRpemF0aW9uIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlw
ZSI6WyJhbm51YWxOZXRJbmNvbWVGcm9tVGF4TG9zc0NhcnJ5Zm9yd2FyZCJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsQmFzaWNBY2NvdW50aW5nQ2hhbmdlIl19
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxHYWluT25TYWxlT2ZT
ZWN1cml0eSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsT3Ro
ZXJPcGVyYXRpbmdFeHBlbnNlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUi
OlsiYW5udWFsQ29udGludWluZ0FuZERpc2NvbnRpbnVlZEJhc2ljRVBTIl19fSx7Im1ldGEiOnsi
c3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxPdGhlck5vbkludGVyZXN0RXhwZW5zZSJd
fX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsU2VsbGluZ0FuZE1h
cmtldGluZ0V4cGVuc2UiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFu
bnVhbFdyaXRlT2ZmIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxQcm92aXNpb25Gb3JEb3VidGZ1bEFjY291bnRzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFB
UEwiXSwidHlwZSI6WyJhbm51YWxSZXBvcnRlZE5vcm1hbGl6ZWREaWx1dGVkRVBTIl19fSx7Im1l
dGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxHYWluT25TYWxlT2ZQUEUiXX19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbFBvbGljeWhvbGRlckJl
bmVmaXRzR3Jvc3MiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bE90aGVyR2FuZEEiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVh
bENvbnRpbnVpbmdBbmREaXNjb250aW51ZWREaWx1dGVkRVBTIl19fSx7Im1ldGEiOnsic3ltYm9s
IjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxSZW50RXhwZW5zZVN1cHBsZW1lbnRhbCJdfX0seyJt
ZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsUHJvZmVzc2lvbmFsRXhwZW5z
ZUFuZENvbnRyYWN0U2VydmljZXNFeHBlbnNlIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxEaWx1dGVkRVBTT3RoZXJHYWluc0xvc3NlcyJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsSW5zdXJhbmNlQW5kQ2xhaW1zIl19fSx7
Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUYXhMb3NzQ2Fycnlmb3J3
YXJkRGlsdXRlZEVQUyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsRGlsdXRlZERpc2NvbnRpbnVvdXNPcGVyYXRpb25zIl19fSx7Im1ldGEiOnsic3ltYm9sIjpb
IkFBUEwiXSwidHlwZSI6WyJhbm51YWxUYXhMb3NzQ2Fycnlmb3J3YXJkQmFzaWNFUFMiXX19LHsi
bWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVyU3BlY2lhbENoYXJn
ZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE90aGVydW5k
ZXJQcmVmZXJyZWRTdG9ja0RpdmlkZW5kIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwi
dHlwZSI6WyJhbm51YWxEZXBsZXRpb25JbmNvbWVTdGF0ZW1lbnQiXX19LHsibWV0YSI6eyJzeW1i
b2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5ldFBvbGljeWhvbGRlckJlbmVmaXRzQW5kQ2xh
aW1zIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxFYXJuaW5n
c0Zyb21FcXVpdHlJbnRlcmVzdE5ldE9mVGF4Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwi
XSwidHlwZSI6WyJhbm51YWxFeGNpc2VUYXhlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsT3RoZXJUYXhlcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBM
Il0sInR5cGUiOlsiYW5udWFsUG9saWN5aG9sZGVyQmVuZWZpdHNDZWRlZCJdfX0seyJtZXRhIjp7
InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRGVwcmVjaWF0aW9uSW5jb21lU3RhdGVt
ZW50Il19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxEaWx1dGVk
RXh0cmFvcmRpbmFyeSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5u
dWFsQXZlcmFnZURpbHV0aW9uRWFybmluZ3MiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJd
LCJ0eXBlIjpbImFubnVhbFNhbGFyaWVzQW5kV2FnZXMiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbEJhc2ljRXh0cmFvcmRpbmFyeSJdfX0seyJtZXRhIjp7InN5
bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsR2VuZXJhbEFuZEFkbWluaXN0cmF0aXZlRXhw
ZW5zZSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsTmV0SW5j
b21lRXh0cmFvcmRpbmFyeSJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsi
YW5udWFsRGVwcmVjaWF0aW9uQW1vcnRpemF0aW9uRGVwbGV0aW9uSW5jb21lU3RhdGVtZW50Il19
fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxJbXBhaXJtZW50T2ZD
YXBpdGFsQXNzZXRzIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51
YWxQcmVmZXJyZWRTdG9ja0RpdmlkZW5kcyJdfX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0s
InR5cGUiOlsiYW5udWFsQW1vcnRpemF0aW9uT2ZJbnRhbmdpYmxlc0luY29tZVN0YXRlbWVudCJd
fX0seyJtZXRhIjp7InN5bWJvbCI6WyJBQVBMIl0sInR5cGUiOlsiYW5udWFsRGVwcmVjaWF0aW9u
QW5kQW1vcnRpemF0aW9uSW5JbmNvbWVTdGF0ZW1lbnQiXX19LHsibWV0YSI6eyJzeW1ib2wiOlsi
QUFQTCJdLCJ0eXBlIjpbImFubnVhbERpbHV0ZWRBY2NvdW50aW5nQ2hhbmdlIl19fSx7Im1ldGEi
Onsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxOb3JtYWxpemVkQmFzaWNFUFMiXX19
LHsibWV0YSI6eyJzeW1ib2wiOlsiQUFQTCJdLCJ0eXBlIjpbImFubnVhbE5vcm1hbGl6ZWREaWx1
dGVkRVBTIl19fSx7Im1ldGEiOnsic3ltYm9sIjpbIkFBUEwiXSwidHlwZSI6WyJhbm51YWxUb3Rh
bE90aGVyRmluYW5jZUNvc3QiXX19XSwiZXJyb3IiOm51bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=60, stale-while-revalidate=30
content-encoding: gzip
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:15 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '113'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,250 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsiYWRkcmVzczEiOiJP
bmUgQXBwbGUgUGFyayBXYXkiLCJjaXR5IjoiQ3VwZXJ0aW5vIiwic3RhdGUiOiJDQSIsInppcCI6
Ijk1MDE0IiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJwaG9uZSI6Iig0MDgpIDk5Ni0xMDEw
Iiwid2Vic2l0ZSI6Imh0dHBzOi8vd3d3LmFwcGxlLmNvbSIsImluZHVzdHJ5IjoiQ29uc3VtZXIg
RWxlY3Ryb25pY3MiLCJpbmR1c3RyeUtleSI6ImNvbnN1bWVyLWVsZWN0cm9uaWNzIiwiaW5kdXN0
cnlEaXNwIjoiQ29uc3VtZXIgRWxlY3Ryb25pY3MiLCJzZWN0b3IiOiJUZWNobm9sb2d5Iiwic2Vj
dG9yS2V5IjoidGVjaG5vbG9neSIsInNlY3RvckRpc3AiOiJUZWNobm9sb2d5IiwibG9uZ0J1c2lu
ZXNzU3VtbWFyeSI6IkFwcGxlIEluYy4gZGVzaWducywgbWFudWZhY3R1cmVzLCBhbmQgbWFya2V0
cyBzbWFydHBob25lcywgcGVyc29uYWwgY29tcHV0ZXJzLCB0YWJsZXRzLCB3ZWFyYWJsZXMsIGFu
ZCBhY2Nlc3NvcmllcyB3b3JsZHdpZGUuIFRoZSBjb21wYW55IG9mZmVycyBpUGhvbmUsIGEgbGlu
ZSBvZiBzbWFydHBob25lczsgTWFjLCBhIGxpbmUgb2YgcGVyc29uYWwgY29tcHV0ZXJzOyBpUGFk
LCBhIGxpbmUgb2YgbXVsdGktcHVycG9zZSB0YWJsZXRzOyBhbmQgd2VhcmFibGVzLCBob21lLCBh
bmQgYWNjZXNzb3JpZXMgY29tcHJpc2luZyBBaXJQb2RzLCBBcHBsZSBWaXNpb24gUHJvLCBBcHBs
ZSBUViwgQXBwbGUgV2F0Y2gsIEJlYXRzIHByb2R1Y3RzLCBhbmQgSG9tZVBvZCwgYXMgd2VsbCBh
cyBBcHBsZSBicmFuZGVkIGFuZCB0aGlyZC1wYXJ0eSBhY2Nlc3Nvcmllcy4gSXQgYWxzbyBwcm92
aWRlcyBBcHBsZUNhcmUgc3VwcG9ydCBhbmQgY2xvdWQgc2VydmljZXM7IGFuZCBvcGVyYXRlcyB2
YXJpb3VzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHRoZSBBcHAgU3RvcmUgdGhhdCBhbGxvdyBjdXN0
b21lcnMgdG8gZGlzY292ZXIgYW5kIGRvd25sb2FkIGFwcGxpY2F0aW9ucyBhbmQgZGlnaXRhbCBj
b250ZW50LCBzdWNoIGFzIGJvb2tzLCBtdXNpYywgdmlkZW8sIGdhbWVzLCBhbmQgcG9kY2FzdHMs
IGFzIHdlbGwgYXMgYWR2ZXJ0aXNpbmcgc2VydmljZXMgaW5jbHVkZSB0aGlyZC1wYXJ0eSBsaWNl
bnNpbmcgYXJyYW5nZW1lbnRzIGFuZCBpdHMgb3duIGFkdmVydGlzaW5nIHBsYXRmb3Jtcy4gSW4g
YWRkaXRpb24sIHRoZSBjb21wYW55IG9mZmVycyB2YXJpb3VzIHN1YnNjcmlwdGlvbi1iYXNlZCBz
ZXJ2aWNlcywgc3VjaCBhcyBBcHBsZSBBcmNhZGUsIGEgZ2FtZSBzdWJzY3JpcHRpb24gc2Vydmlj
ZTsgQXBwbGUgRml0bmVzcyssIGEgcGVyc29uYWxpemVkIGZpdG5lc3Mgc2VydmljZTsgQXBwbGUg
TXVzaWMsIHdoaWNoIG9mZmVycyB1c2VycyBhIGN1cmF0ZWQgbGlzdGVuaW5nIGV4cGVyaWVuY2Ug
d2l0aCBvbi1kZW1hbmQgcmFkaW8gc3RhdGlvbnM7IEFwcGxlIE5ld3MrLCBhIHN1YnNjcmlwdGlv
biBuZXdzIGFuZCBtYWdhemluZSBzZXJ2aWNlOyBBcHBsZSBUViwgd2hpY2ggb2ZmZXJzIGV4Y2x1
c2l2ZSBvcmlnaW5hbCBjb250ZW50IGFuZCBsaXZlIHNwb3J0czsgQXBwbGUgQ2FyZCwgYSBjby1i
cmFuZGVkIGNyZWRpdCBjYXJkOyBhbmQgQXBwbGUgUGF5LCBhIGNhc2hsZXNzIHBheW1lbnQgc2Vy
dmljZSwgYXMgd2VsbCBhcyBsaWNlbnNlcyBpdHMgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBUaGUg
Y29tcGFueSBzZXJ2ZXMgY29uc3VtZXJzLCBhbmQgc21hbGwgYW5kIG1pZC1zaXplZCBidXNpbmVz
c2VzOyBhbmQgdGhlIGVkdWNhdGlvbiwgZW50ZXJwcmlzZSwgYW5kIGdvdmVybm1lbnQgbWFya2V0
cy4gSXQgZGlzdHJpYnV0ZXMgdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIGZvciBpdHMgcHJvZHVj
dHMgdGhyb3VnaCB0aGUgQXBwIFN0b3JlLiBUaGUgY29tcGFueSBhbHNvIHNlbGxzIGl0cyBwcm9k
dWN0cyB0aHJvdWdoIGl0cyByZXRhaWwgYW5kIG9ubGluZSBzdG9yZXMsIGFuZCBkaXJlY3Qgc2Fs
ZXMgZm9yY2U7IGFuZCB0aGlyZC1wYXJ0eSBjZWxsdWxhciBuZXR3b3JrIGNhcnJpZXJzIGFuZCBy
ZXNlbGxlcnMuIFRoZSBjb21wYW55IHdhcyBmb3JtZXJseSBrbm93biBhcyBBcHBsZSBDb21wdXRl
ciwgSW5jLiBhbmQgY2hhbmdlZCBpdHMgbmFtZSB0byBBcHBsZSBJbmMuIGluIEphbnVhcnkgMjAw
Ny4gQXBwbGUgSW5jLiB3YXMgZm91bmRlZCBpbiAxOTc2IGFuZCBpcyBoZWFkcXVhcnRlcmVkIGlu
IEN1cGVydGlubywgQ2FsaWZvcm5pYS4iLCJmdWxsVGltZUVtcGxveWVlcyI6MTY2MDAwLCJjb21w
YW55T2ZmaWNlcnMiOlt7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBUaW1vdGh5IEQuIENvb2siLCJh
Z2UiOjYzLCJ0aXRsZSI6IkNFTyAmIERpcmVjdG9yIiwieWVhckJvcm4iOjE5NjEsImZpc2NhbFll
YXIiOjIwMjQsInRvdGFsUGF5Ijp7InJhdyI6MTY1MjA4NTYsImZtdCI6IjE2LjUyTSIsImxvbmdG
bXQiOiIxNiw1MjAsODU2In0sImV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJs
b25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25n
Rm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1zLiBLYXRoZXJpbmUgTC4gQWRhbXMiLCJh
Z2UiOjYwLCJ0aXRsZSI6IlNlbmlvciBWUCAmIEdlbmVyYWwgQ291bnNlbCIsInllYXJCb3JuIjox
OTY0LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJyYXciOjUwMjIxODIsImZtdCI6IjUu
MDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gRGVpcmRyZSAgTydC
cmllbiIsImFnZSI6NTcsInRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFJldGFpbCAm
IFBlb3BsZSIsInllYXJCb3JuIjoxOTY3LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJy
YXciOjUwMjIxODIsImZtdCI6IjUuMDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lz
ZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJNci4gS2V2YW4gIFBhcmVraCIsImFnZSI6NTIsInRpdGxlIjoiU2VuaW9yIFZQICYgQ0ZP
IiwieWVhckJvcm4iOjE5NzIsImZpc2NhbFllYXIiOjIwMjQsImV4ZXJjaXNlZFZhbHVlIjp7InJh
dyI6MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6
MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBTYWJp
aCAgS2hhbiIsInRpdGxlIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJmaXNjYWxZZWFyIjoy
MDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwi
dW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJt
YXhBZ2UiOjEsIm5hbWUiOiJNci4gQ2hyaXMgIEtvbmRvIiwidGl0bGUiOiJTZW5pb3IgRGlyZWN0
b3Igb2YgQ29ycG9yYXRlIEFjY291bnRpbmciLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJTdWhhc2luaSAgQ2hhbmRyYW1vdWxpIiwidGl0bGUiOiJEaXJlY3RvciBvZiBJbnZlc3RvciBS
ZWxhdGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gS3Jpc3RpbiBIdWd1
ZXQgUXVheWxlIiwidGl0bGUiOiJWaWNlIFByZXNpZGVudCBvZiBXb3JsZHdpZGUgQ29tbXVuaWNh
dGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVs
bCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gR3JlZyAgSm9zd2lhayIs
InRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFdvcmxkd2lkZSBNYXJrZXRpbmciLCJm
aXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9u
Z0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gQWRyaWFuICBQZXJpY2EiLCJhZ2UiOjUw
LCJ0aXRsZSI6IlZpY2UgUHJlc2lkZW50IG9mIENvcnBvcmF0ZSBEZXZlbG9wbWVudCIsInllYXJC
b3JuIjoxOTc0LCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX1dLCJhdWRpdFJpc2siOjcsImJvYXJkUmlzayI6MSwiY29tcGVu
c2F0aW9uUmlzayI6Mywic2hhcmVIb2xkZXJSaWdodHNSaXNrIjoxLCJvdmVyYWxsUmlzayI6MSwi
Z292ZXJuYW5jZUVwb2NoRGF0ZSI6MTc2NDU0NzIwMCwiY29tcGVuc2F0aW9uQXNPZkVwb2NoRGF0
ZSI6MTczNTYwMzIwMCwiaXJXZWJzaXRlIjoiaHR0cDovL2ludmVzdG9yLmFwcGxlLmNvbS8iLCJl
eGVjdXRpdmVUZWFtIjpbXSwibWF4QWdlIjo4NjQwMH0sInN1bW1hcnlEZXRhaWwiOnsibWF4QWdl
IjoxLCJwcmljZUhpbnQiOjIsInByZXZpb3VzQ2xvc2UiOjI3My42Nywib3BlbiI6MjcyLjg2LCJk
YXlMb3ciOjI3MC41MDUsImRheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xv
c2UiOjI3My42NywicmVndWxhck1hcmtldE9wZW4iOjI3Mi44NiwicmVndWxhck1hcmtldERheUxv
dyI6MjcwLjUwNSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwiZGl2aWRlbmRSYXRlIjox
LjA0LCJkaXZpZGVuZFlpZWxkIjowLjAwMzgsImV4RGl2aWRlbmREYXRlIjoxNzYyNzMyODAwLCJw
YXlvdXRSYXRpbyI6MC4xMzY3LCJmaXZlWWVhckF2Z0RpdmlkZW5kWWllbGQiOjAuNTMsImJldGEi
OjEuMTA3LCJ0cmFpbGluZ1BFIjozNi42MTc1NywiZm9yd2FyZFBFIjoyOS42MjkyOTcsInZvbHVt
ZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJhdmVyYWdlVm9sdW1l
Ijo0NzQ0ODk2NiwiYXZlcmFnZVZvbHVtZTEwZGF5cyI6NTEwNjUwNjAsImF2ZXJhZ2VEYWlseVZv
bHVtZTEwRGF5Ijo1MTA2NTA2MCwiYmlkIjoyNzIuMCwiYXNrIjoyNzQuOTcsImJpZFNpemUiOjEw
MCwiYXNrU2l6ZSI6NDAwLCJtYXJrZXRDYXAiOjQwMjEzMDA0OTQzMzYsImZpZnR5VHdvV2Vla0xv
dyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIsImFsbFRpbWVIaWdoIjoyODguNjIs
ImFsbFRpbWVMb3ciOjAuMDQ5MTA3LCJwcmljZVRvU2FsZXNUcmFpbGluZzEyTW9udGhzIjo5LjY2
Mjg0NzUsImZpZnR5RGF5QXZlcmFnZSI6MjY5LjUxNzgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjoy
MjkuOTExOCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjEuMDIsInRyYWlsaW5nQW5udWFs
RGl2aWRlbmRZaWVsZCI6MC4wMDM3MjcxMTY0LCJjdXJyZW5jeSI6IlVTRCIsImZyb21DdXJyZW5j
eSI6bnVsbCwidG9DdXJyZW5jeSI6bnVsbCwibGFzdE1hcmtldCI6bnVsbCwiY29pbk1hcmtldENh
cExpbmsiOm51bGwsImFsZ29yaXRobSI6bnVsbCwidHJhZGVhYmxlIjpmYWxzZX0sImRlZmF1bHRL
ZXlTdGF0aXN0aWNzIjp7Im1heEFnZSI6MSwicHJpY2VIaW50IjoyLCJlbnRlcnByaXNlVmFsdWUi
OjQwNTk1NTk2MjQ3MDQsImZvcndhcmRQRSI6MjkuNjI5Mjk3LCJwcm9maXRNYXJnaW5zIjowLjI2
OTE1MDAyLCJmbG9hdFNoYXJlcyI6MTQ3NTA2NDIxNDYsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3
NjM1MzAwMCwic2hhcmVzU2hvcnQiOjEyOTQ1ODU1OSwic2hhcmVzU2hvcnRQcmlvck1vbnRoIjox
MTU1NTc4MzYsInNoYXJlc1Nob3J0UHJldmlvdXNNb250aERhdGUiOjE3NjE4Njg4MDAsImRhdGVT
aG9ydEludGVyZXN0IjoxNzY0Mjg4MDAwLCJzaGFyZXNQZXJjZW50U2hhcmVzT3V0IjowLjAwODgs
ImhlbGRQZXJjZW50SW5zaWRlcnMiOjAuMDE2OTcwMDAxLCJoZWxkUGVyY2VudEluc3RpdHV0aW9u
cyI6MC42NDQwNjk5Nywic2hvcnRSYXRpbyI6Mi42NCwic2hvcnRQZXJjZW50T2ZGbG9hdCI6MC4w
MDg4LCJiZXRhIjoxLjEwNywiaW1wbGllZFNoYXJlc091dHN0YW5kaW5nIjoxNDg0MDM5MDAwMCwi
Y2F0ZWdvcnkiOm51bGwsImJvb2tWYWx1ZSI6NC45OTEsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
ImZ1bmRGYW1pbHkiOm51bGwsImxlZ2FsVHlwZSI6bnVsbCwibGFzdEZpc2NhbFllYXJFbmQiOjE3
NTg5MzEyMDAsIm5leHRGaXNjYWxZZWFyRW5kIjoxNzkwNDY3MjAwLCJtb3N0UmVjZW50UXVhcnRl
ciI6MTc1ODkzMTIwMCwiZWFybmluZ3NRdWFydGVybHlHcm93dGgiOjAuODY0LCJuZXRJbmNvbWVU
b0NvbW1vbiI6MTEyMDEwMDAyNDMyLCJ0cmFpbGluZ0VwcyI6Ny40LCJmb3J3YXJkRXBzIjo5LjE0
NTM0LCJsYXN0U3BsaXRGYWN0b3IiOiI0OjEiLCJsYXN0U3BsaXREYXRlIjoxNTk4ODMyMDAwLCJl
bnRlcnByaXNlVG9SZXZlbnVlIjo5Ljc1NSwiZW50ZXJwcmlzZVRvRWJpdGRhIjoyOC4wNDYsIjUy
V2Vla0NoYW5nZSI6MC4wNTk5MTQ4MjcsIlNhbmRQNTJXZWVrQ2hhbmdlIjowLjEzMTUzMjE5LCJs
YXN0RGl2aWRlbmRWYWx1ZSI6MC4yNiwibGFzdERpdmlkZW5kRGF0ZSI6MTc2MjczMjgwMCwibGF0
ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwicXVvdGVUeXBlIjp7ImV4
Y2hhbmdlIjoiTk1TIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwic3ltYm9sIjoiQUFQTCIsInVuZGVy
bHlpbmdTeW1ib2wiOiJBQVBMIiwic2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoi
QXBwbGUgSW5jLiIsImZpcnN0VHJhZGVEYXRlRXBvY2hVdGMiOjM0NTQ3OTQwMCwidGltZVpvbmVG
dWxsTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJ0aW1lWm9uZVNob3J0TmFtZSI6IkVTVCIsInV1
aWQiOiI4YjEwZTRhZS05ZWViLTM2ODQtOTIxYS05YWIyN2U0ZDg3YWEiLCJtZXNzYWdlQm9hcmRJ
ZCI6ImZpbm1iXzI0OTM3IiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFn
ZSI6MX0sImZpbmFuY2lhbERhdGEiOnsibWF4QWdlIjo4NjQwMCwiY3VycmVudFByaWNlIjoyNzAu
OTcsInRhcmdldEhpZ2hQcmljZSI6MzUwLjAsInRhcmdldExvd1ByaWNlIjoyMTUuMCwidGFyZ2V0
TWVhblByaWNlIjoyODcuNzA2ODIsInRhcmdldE1lZGlhblByaWNlIjozMDAuMCwicmVjb21tZW5k
YXRpb25NZWFuIjoyLjAsInJlY29tbWVuZGF0aW9uS2V5IjoiYnV5IiwibnVtYmVyT2ZBbmFseXN0
T3BpbmlvbnMiOjQxLCJ0b3RhbENhc2giOjU0Njk3MDAwOTYwLCJ0b3RhbENhc2hQZXJTaGFyZSI6
My43MDIsImViaXRkYSI6MTQ0NzQ4MDAzMzI4LCJ0b3RhbERlYnQiOjExMjM3NzAwNDAzMiwicXVp
Y2tSYXRpbyI6MC43NzEsImN1cnJlbnRSYXRpbyI6MC44OTMsInRvdGFsUmV2ZW51ZSI6NDE2MTYx
MDA1NTY4LCJkZWJ0VG9FcXVpdHkiOjE1Mi40MTEsInJldmVudWVQZXJTaGFyZSI6MjcuODQsInJl
dHVybk9uQXNzZXRzIjowLjIyOTY0LCJyZXR1cm5PbkVxdWl0eSI6MS43MTQyMTk5LCJncm9zc1By
b2ZpdHMiOjE5NTIwMTAwNzYxNiwiZnJlZUNhc2hmbG93Ijo3ODg2MjI1NDA4MCwib3BlcmF0aW5n
Q2FzaGZsb3ciOjExMTQ4MjAwMzQ1NiwiZWFybmluZ3NHcm93dGgiOjAuOTEyLCJyZXZlbnVlR3Jv
d3RoIjowLjA3OSwiZ3Jvc3NNYXJnaW5zIjowLjQ2OTA1LCJlYml0ZGFNYXJnaW5zIjowLjM0Nzgy
LCJvcGVyYXRpbmdNYXJnaW5zIjowLjMxNjQ3LCJwcm9maXRNYXJnaW5zIjowLjI2OTE1MDAyLCJm
aW5hbmNpYWxDdXJyZW5jeSI6IlVTRCJ9fV0sImVycm9yIjpudWxsfX0=
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '3168'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:22 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '7'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJFcXVpdHkiLCJxdW90ZVNvdXJj
ZU5hbWUiOiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3Rv
bVByaWNlQWxlcnRDb25maWRlbmNlIjoiSElHSCIsImN1cnJlbmN5IjoiVVNEIiwiZXhjaGFuZ2Ui
OiJOTVMiLCJtZXNzYWdlQm9hcmRJZCI6ImZpbm1iXzI0OTM3IiwiZXhjaGFuZ2VUaW1lem9uZU5h
bWUiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXhjaGFuZ2VUaW1lem9uZVNob3J0TmFtZSI6IkVTVCIs
ImdtdE9mZlNldE1pbGxpc2Vjb25kcyI6LTE4MDAwMDAwLCJtYXJrZXQiOiJ1c19tYXJrZXQiLCJl
c2dQb3B1bGF0ZWQiOmZhbHNlLCJyZWd1bGFyTWFya2V0Q2hhbmdlUGVyY2VudCI6LTAuOTg2NTk0
LCJyZWd1bGFyTWFya2V0UHJpY2UiOjI3MC45Nywic291cmNlSW50ZXJ2YWwiOjE1LCJleGNoYW5n
ZURhdGFEZWxheWVkQnkiOjAsImF2ZXJhZ2VBbmFseXN0UmF0aW5nIjoiMi4wIC0gQnV5IiwidHJh
ZGVhYmxlIjpmYWxzZSwiY3J5cHRvVHJhZGVhYmxlIjpmYWxzZSwibWFya2V0U3RhdGUiOiJQT1NU
UE9TVCIsImhhc1ByZVBvc3RNYXJrZXREYXRhIjp0cnVlLCJmaXJzdFRyYWRlRGF0ZU1pbGxpc2Vj
b25kcyI6MzQ1NDc5NDAwMDAwLCJwcmljZUhpbnQiOjIsInBvc3RNYXJrZXRDaGFuZ2VQZXJjZW50
IjotMC4wNzM4MTM0MTYsInBvc3RNYXJrZXRQcmljZSI6MjcwLjc3LCJwb3N0TWFya2V0Q2hhbmdl
IjotMC4yMDAwMTIyLCJyZWd1bGFyTWFya2V0Q2hhbmdlIjotMi43MDAwMSwicmVndWxhck1hcmtl
dERheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldERheVJhbmdlIjoiMjcwLjUwNSAtIDI3My44
OCIsInJlZ3VsYXJNYXJrZXREYXlMb3ciOjI3MC41MDUsInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2
NDQ1MTk5LCJyZWd1bGFyTWFya2V0UHJldmlvdXNDbG9zZSI6MjczLjY3LCJiaWQiOjI3Mi4wLCJh
c2siOjI3NC45NywiYmlkU2l6ZSI6MSwiYXNrU2l6ZSI6NCwiZnVsbEV4Y2hhbmdlTmFtZSI6Ik5h
c2RhcUdTIiwiZmluYW5jaWFsQ3VycmVuY3kiOiJVU0QiLCJyZWd1bGFyTWFya2V0T3BlbiI6Mjcy
Ljg2LCJhdmVyYWdlRGFpbHlWb2x1bWUzTW9udGgiOjQ3NDQ4OTY2LCJhdmVyYWdlRGFpbHlWb2x1
bWUxMERheSI6NTEwNjUwNjAsImZpZnR5VHdvV2Vla0xvd0NoYW5nZSI6MTAxLjc1OTk5NSwiZmlm
dHlUd29XZWVrTG93Q2hhbmdlUGVyY2VudCI6MC42MDEzODI4NSwiZmlmdHlUd29XZWVrUmFuZ2Ui
OiIxNjkuMjEgLSAyODguNjIiLCJmaWZ0eVR3b1dlZWtIaWdoQ2hhbmdlIjotMTcuNjQ5OTk0LCJm
aWZ0eVR3b1dlZWtIaWdoQ2hhbmdlUGVyY2VudCI6LTAuMDYxMTUzMDU0LCJmaWZ0eVR3b1dlZWtM
b3ciOjE2OS4yMSwiZmlmdHlUd29XZWVrSGlnaCI6Mjg4LjYyLCJmaWZ0eVR3b1dlZWtDaGFuZ2VQ
ZXJjZW50Ijo1Ljk5MTQ4MjcsImRpdmlkZW5kRGF0ZSI6MTc2Mjk5MjAwMCwiZWFybmluZ3NUaW1l
c3RhbXAiOjE3NjE4NTQ0MDAsImVhcm5pbmdzVGltZXN0YW1wU3RhcnQiOjE3Njk3MjA0MDAsImVh
cm5pbmdzVGltZXN0YW1wRW5kIjoxNzY5NzIwNDAwLCJlYXJuaW5nc0NhbGxUaW1lc3RhbXBTdGFy
dCI6MTc2MTg1ODAwMCwiZWFybmluZ3NDYWxsVGltZXN0YW1wRW5kIjoxNzYxODU4MDAwLCJpc0Vh
cm5pbmdzRGF0ZUVzdGltYXRlIjp0cnVlLCJ0cmFpbGluZ0FubnVhbERpdmlkZW5kUmF0ZSI6MS4w
MiwidHJhaWxpbmdQRSI6MzYuNjE3NTcsImRpdmlkZW5kUmF0ZSI6MS4wNCwidHJhaWxpbmdBbm51
YWxEaXZpZGVuZFlpZWxkIjowLjAwMzcyNzExNjQsImRpdmlkZW5kWWllbGQiOjAuMzgsImVwc1Ry
YWlsaW5nVHdlbHZlTW9udGhzIjo3LjQsImVwc0ZvcndhcmQiOjkuMTQ1MzQsImVwc0N1cnJlbnRZ
ZWFyIjo4LjI0Mzk3LCJwcmljZUVwc0N1cnJlbnRZZWFyIjozMi44Njg4NzQsInNoYXJlc091dHN0
YW5kaW5nIjoxNDc3NjM1MzAwMCwiYm9va1ZhbHVlIjo0Ljk5MSwiZmlmdHlEYXlBdmVyYWdlIjoy
NjkuNTE3OCwiZmlmdHlEYXlBdmVyYWdlQ2hhbmdlIjoxLjQ1MjIwOTUsImZpZnR5RGF5QXZlcmFn
ZUNoYW5nZVBlcmNlbnQiOjAuMDA1Mzg4MTc2NSwidHdvSHVuZHJlZERheUF2ZXJhZ2UiOjIyOS45
MTE4LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZSI6NDEuMDU4MTk3LCJ0d29IdW5kcmVkRGF5
QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMTc4NTgyMzksIm1hcmtldENhcCI6NDAyMTMwMDQ5NDMz
NiwiZm9yd2FyZFBFIjoyOS42MjkyOTcsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUsImNvcnBvcmF0
ZUFjdGlvbnMiOltdLCJwb3N0TWFya2V0VGltZSI6MTc2NjQ1MTU5NywicmVndWxhck1hcmtldFRp
bWUiOjE3NjY0MzcyMDYsInNob3J0TmFtZSI6IkFwcGxlIEluYy4iLCJsb25nTmFtZSI6IkFwcGxl
IEluYy4iLCJkaXNwbGF5TmFtZSI6IkFwcGxlIiwic3ltYm9sIjoiQUFQTCJ9XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1150'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:22 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '2'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,250 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsiYWRkcmVzczEiOiJP
bmUgQXBwbGUgUGFyayBXYXkiLCJjaXR5IjoiQ3VwZXJ0aW5vIiwic3RhdGUiOiJDQSIsInppcCI6
Ijk1MDE0IiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJwaG9uZSI6Iig0MDgpIDk5Ni0xMDEw
Iiwid2Vic2l0ZSI6Imh0dHBzOi8vd3d3LmFwcGxlLmNvbSIsImluZHVzdHJ5IjoiQ29uc3VtZXIg
RWxlY3Ryb25pY3MiLCJpbmR1c3RyeUtleSI6ImNvbnN1bWVyLWVsZWN0cm9uaWNzIiwiaW5kdXN0
cnlEaXNwIjoiQ29uc3VtZXIgRWxlY3Ryb25pY3MiLCJzZWN0b3IiOiJUZWNobm9sb2d5Iiwic2Vj
dG9yS2V5IjoidGVjaG5vbG9neSIsInNlY3RvckRpc3AiOiJUZWNobm9sb2d5IiwibG9uZ0J1c2lu
ZXNzU3VtbWFyeSI6IkFwcGxlIEluYy4gZGVzaWducywgbWFudWZhY3R1cmVzLCBhbmQgbWFya2V0
cyBzbWFydHBob25lcywgcGVyc29uYWwgY29tcHV0ZXJzLCB0YWJsZXRzLCB3ZWFyYWJsZXMsIGFu
ZCBhY2Nlc3NvcmllcyB3b3JsZHdpZGUuIFRoZSBjb21wYW55IG9mZmVycyBpUGhvbmUsIGEgbGlu
ZSBvZiBzbWFydHBob25lczsgTWFjLCBhIGxpbmUgb2YgcGVyc29uYWwgY29tcHV0ZXJzOyBpUGFk
LCBhIGxpbmUgb2YgbXVsdGktcHVycG9zZSB0YWJsZXRzOyBhbmQgd2VhcmFibGVzLCBob21lLCBh
bmQgYWNjZXNzb3JpZXMgY29tcHJpc2luZyBBaXJQb2RzLCBBcHBsZSBWaXNpb24gUHJvLCBBcHBs
ZSBUViwgQXBwbGUgV2F0Y2gsIEJlYXRzIHByb2R1Y3RzLCBhbmQgSG9tZVBvZCwgYXMgd2VsbCBh
cyBBcHBsZSBicmFuZGVkIGFuZCB0aGlyZC1wYXJ0eSBhY2Nlc3Nvcmllcy4gSXQgYWxzbyBwcm92
aWRlcyBBcHBsZUNhcmUgc3VwcG9ydCBhbmQgY2xvdWQgc2VydmljZXM7IGFuZCBvcGVyYXRlcyB2
YXJpb3VzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHRoZSBBcHAgU3RvcmUgdGhhdCBhbGxvdyBjdXN0
b21lcnMgdG8gZGlzY292ZXIgYW5kIGRvd25sb2FkIGFwcGxpY2F0aW9ucyBhbmQgZGlnaXRhbCBj
b250ZW50LCBzdWNoIGFzIGJvb2tzLCBtdXNpYywgdmlkZW8sIGdhbWVzLCBhbmQgcG9kY2FzdHMs
IGFzIHdlbGwgYXMgYWR2ZXJ0aXNpbmcgc2VydmljZXMgaW5jbHVkZSB0aGlyZC1wYXJ0eSBsaWNl
bnNpbmcgYXJyYW5nZW1lbnRzIGFuZCBpdHMgb3duIGFkdmVydGlzaW5nIHBsYXRmb3Jtcy4gSW4g
YWRkaXRpb24sIHRoZSBjb21wYW55IG9mZmVycyB2YXJpb3VzIHN1YnNjcmlwdGlvbi1iYXNlZCBz
ZXJ2aWNlcywgc3VjaCBhcyBBcHBsZSBBcmNhZGUsIGEgZ2FtZSBzdWJzY3JpcHRpb24gc2Vydmlj
ZTsgQXBwbGUgRml0bmVzcyssIGEgcGVyc29uYWxpemVkIGZpdG5lc3Mgc2VydmljZTsgQXBwbGUg
TXVzaWMsIHdoaWNoIG9mZmVycyB1c2VycyBhIGN1cmF0ZWQgbGlzdGVuaW5nIGV4cGVyaWVuY2Ug
d2l0aCBvbi1kZW1hbmQgcmFkaW8gc3RhdGlvbnM7IEFwcGxlIE5ld3MrLCBhIHN1YnNjcmlwdGlv
biBuZXdzIGFuZCBtYWdhemluZSBzZXJ2aWNlOyBBcHBsZSBUViwgd2hpY2ggb2ZmZXJzIGV4Y2x1
c2l2ZSBvcmlnaW5hbCBjb250ZW50IGFuZCBsaXZlIHNwb3J0czsgQXBwbGUgQ2FyZCwgYSBjby1i
cmFuZGVkIGNyZWRpdCBjYXJkOyBhbmQgQXBwbGUgUGF5LCBhIGNhc2hsZXNzIHBheW1lbnQgc2Vy
dmljZSwgYXMgd2VsbCBhcyBsaWNlbnNlcyBpdHMgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBUaGUg
Y29tcGFueSBzZXJ2ZXMgY29uc3VtZXJzLCBhbmQgc21hbGwgYW5kIG1pZC1zaXplZCBidXNpbmVz
c2VzOyBhbmQgdGhlIGVkdWNhdGlvbiwgZW50ZXJwcmlzZSwgYW5kIGdvdmVybm1lbnQgbWFya2V0
cy4gSXQgZGlzdHJpYnV0ZXMgdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIGZvciBpdHMgcHJvZHVj
dHMgdGhyb3VnaCB0aGUgQXBwIFN0b3JlLiBUaGUgY29tcGFueSBhbHNvIHNlbGxzIGl0cyBwcm9k
dWN0cyB0aHJvdWdoIGl0cyByZXRhaWwgYW5kIG9ubGluZSBzdG9yZXMsIGFuZCBkaXJlY3Qgc2Fs
ZXMgZm9yY2U7IGFuZCB0aGlyZC1wYXJ0eSBjZWxsdWxhciBuZXR3b3JrIGNhcnJpZXJzIGFuZCBy
ZXNlbGxlcnMuIFRoZSBjb21wYW55IHdhcyBmb3JtZXJseSBrbm93biBhcyBBcHBsZSBDb21wdXRl
ciwgSW5jLiBhbmQgY2hhbmdlZCBpdHMgbmFtZSB0byBBcHBsZSBJbmMuIGluIEphbnVhcnkgMjAw
Ny4gQXBwbGUgSW5jLiB3YXMgZm91bmRlZCBpbiAxOTc2IGFuZCBpcyBoZWFkcXVhcnRlcmVkIGlu
IEN1cGVydGlubywgQ2FsaWZvcm5pYS4iLCJmdWxsVGltZUVtcGxveWVlcyI6MTY2MDAwLCJjb21w
YW55T2ZmaWNlcnMiOlt7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBUaW1vdGh5IEQuIENvb2siLCJh
Z2UiOjYzLCJ0aXRsZSI6IkNFTyAmIERpcmVjdG9yIiwieWVhckJvcm4iOjE5NjEsImZpc2NhbFll
YXIiOjIwMjQsInRvdGFsUGF5Ijp7InJhdyI6MTY1MjA4NTYsImZtdCI6IjE2LjUyTSIsImxvbmdG
bXQiOiIxNiw1MjAsODU2In0sImV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJs
b25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25n
Rm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1zLiBLYXRoZXJpbmUgTC4gQWRhbXMiLCJh
Z2UiOjYwLCJ0aXRsZSI6IlNlbmlvciBWUCAmIEdlbmVyYWwgQ291bnNlbCIsInllYXJCb3JuIjox
OTY0LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJyYXciOjUwMjIxODIsImZtdCI6IjUu
MDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gRGVpcmRyZSAgTydC
cmllbiIsImFnZSI6NTcsInRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFJldGFpbCAm
IFBlb3BsZSIsInllYXJCb3JuIjoxOTY3LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJy
YXciOjUwMjIxODIsImZtdCI6IjUuMDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lz
ZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJNci4gS2V2YW4gIFBhcmVraCIsImFnZSI6NTIsInRpdGxlIjoiU2VuaW9yIFZQICYgQ0ZP
IiwieWVhckJvcm4iOjE5NzIsImZpc2NhbFllYXIiOjIwMjQsImV4ZXJjaXNlZFZhbHVlIjp7InJh
dyI6MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6
MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBTYWJp
aCAgS2hhbiIsInRpdGxlIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJmaXNjYWxZZWFyIjoy
MDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwi
dW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJt
YXhBZ2UiOjEsIm5hbWUiOiJNci4gQ2hyaXMgIEtvbmRvIiwidGl0bGUiOiJTZW5pb3IgRGlyZWN0
b3Igb2YgQ29ycG9yYXRlIEFjY291bnRpbmciLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJTdWhhc2luaSAgQ2hhbmRyYW1vdWxpIiwidGl0bGUiOiJEaXJlY3RvciBvZiBJbnZlc3RvciBS
ZWxhdGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gS3Jpc3RpbiBIdWd1
ZXQgUXVheWxlIiwidGl0bGUiOiJWaWNlIFByZXNpZGVudCBvZiBXb3JsZHdpZGUgQ29tbXVuaWNh
dGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVs
bCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gR3JlZyAgSm9zd2lhayIs
InRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFdvcmxkd2lkZSBNYXJrZXRpbmciLCJm
aXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9u
Z0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gQWRyaWFuICBQZXJpY2EiLCJhZ2UiOjUw
LCJ0aXRsZSI6IlZpY2UgUHJlc2lkZW50IG9mIENvcnBvcmF0ZSBEZXZlbG9wbWVudCIsInllYXJC
b3JuIjoxOTc0LCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX1dLCJhdWRpdFJpc2siOjcsImJvYXJkUmlzayI6MSwiY29tcGVu
c2F0aW9uUmlzayI6Mywic2hhcmVIb2xkZXJSaWdodHNSaXNrIjoxLCJvdmVyYWxsUmlzayI6MSwi
Z292ZXJuYW5jZUVwb2NoRGF0ZSI6MTc2NDU0NzIwMCwiY29tcGVuc2F0aW9uQXNPZkVwb2NoRGF0
ZSI6MTczNTYwMzIwMCwiaXJXZWJzaXRlIjoiaHR0cDovL2ludmVzdG9yLmFwcGxlLmNvbS8iLCJl
eGVjdXRpdmVUZWFtIjpbXSwibWF4QWdlIjo4NjQwMH0sInN1bW1hcnlEZXRhaWwiOnsibWF4QWdl
IjoxLCJwcmljZUhpbnQiOjIsInByZXZpb3VzQ2xvc2UiOjI3My42Nywib3BlbiI6MjcyLjg2LCJk
YXlMb3ciOjI3MC41MDUsImRheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xv
c2UiOjI3My42NywicmVndWxhck1hcmtldE9wZW4iOjI3Mi44NiwicmVndWxhck1hcmtldERheUxv
dyI6MjcwLjUwNSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwiZGl2aWRlbmRSYXRlIjox
LjA0LCJkaXZpZGVuZFlpZWxkIjowLjAwMzgsImV4RGl2aWRlbmREYXRlIjoxNzYyNzMyODAwLCJw
YXlvdXRSYXRpbyI6MC4xMzY3LCJmaXZlWWVhckF2Z0RpdmlkZW5kWWllbGQiOjAuNTMsImJldGEi
OjEuMTA3LCJ0cmFpbGluZ1BFIjozNi42MTc1NywiZm9yd2FyZFBFIjoyOS42MjkyOTcsInZvbHVt
ZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJhdmVyYWdlVm9sdW1l
Ijo0NzQ0ODk2NiwiYXZlcmFnZVZvbHVtZTEwZGF5cyI6NTEwNjUwNjAsImF2ZXJhZ2VEYWlseVZv
bHVtZTEwRGF5Ijo1MTA2NTA2MCwiYmlkIjoyNzIuMCwiYXNrIjoyNzQuOTcsImJpZFNpemUiOjEw
MCwiYXNrU2l6ZSI6NDAwLCJtYXJrZXRDYXAiOjQwMjEzMDA0OTQzMzYsImZpZnR5VHdvV2Vla0xv
dyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIsImFsbFRpbWVIaWdoIjoyODguNjIs
ImFsbFRpbWVMb3ciOjAuMDQ5MTA3LCJwcmljZVRvU2FsZXNUcmFpbGluZzEyTW9udGhzIjo5LjY2
Mjg0NzUsImZpZnR5RGF5QXZlcmFnZSI6MjY5LjUxNzgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjoy
MjkuOTExOCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjEuMDIsInRyYWlsaW5nQW5udWFs
RGl2aWRlbmRZaWVsZCI6MC4wMDM3MjcxMTY0LCJjdXJyZW5jeSI6IlVTRCIsImZyb21DdXJyZW5j
eSI6bnVsbCwidG9DdXJyZW5jeSI6bnVsbCwibGFzdE1hcmtldCI6bnVsbCwiY29pbk1hcmtldENh
cExpbmsiOm51bGwsImFsZ29yaXRobSI6bnVsbCwidHJhZGVhYmxlIjpmYWxzZX0sImRlZmF1bHRL
ZXlTdGF0aXN0aWNzIjp7Im1heEFnZSI6MSwicHJpY2VIaW50IjoyLCJlbnRlcnByaXNlVmFsdWUi
OjQwNTk1NTk2MjQ3MDQsImZvcndhcmRQRSI6MjkuNjI5Mjk3LCJwcm9maXRNYXJnaW5zIjowLjI2
OTE1MDAyLCJmbG9hdFNoYXJlcyI6MTQ3NTA2NDIxNDYsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3
NjM1MzAwMCwic2hhcmVzU2hvcnQiOjEyOTQ1ODU1OSwic2hhcmVzU2hvcnRQcmlvck1vbnRoIjox
MTU1NTc4MzYsInNoYXJlc1Nob3J0UHJldmlvdXNNb250aERhdGUiOjE3NjE4Njg4MDAsImRhdGVT
aG9ydEludGVyZXN0IjoxNzY0Mjg4MDAwLCJzaGFyZXNQZXJjZW50U2hhcmVzT3V0IjowLjAwODgs
ImhlbGRQZXJjZW50SW5zaWRlcnMiOjAuMDE2OTcwMDAxLCJoZWxkUGVyY2VudEluc3RpdHV0aW9u
cyI6MC42NDQwNjk5Nywic2hvcnRSYXRpbyI6Mi42NCwic2hvcnRQZXJjZW50T2ZGbG9hdCI6MC4w
MDg4LCJiZXRhIjoxLjEwNywiaW1wbGllZFNoYXJlc091dHN0YW5kaW5nIjoxNDg0MDM5MDAwMCwi
Y2F0ZWdvcnkiOm51bGwsImJvb2tWYWx1ZSI6NC45OTEsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
ImZ1bmRGYW1pbHkiOm51bGwsImxlZ2FsVHlwZSI6bnVsbCwibGFzdEZpc2NhbFllYXJFbmQiOjE3
NTg5MzEyMDAsIm5leHRGaXNjYWxZZWFyRW5kIjoxNzkwNDY3MjAwLCJtb3N0UmVjZW50UXVhcnRl
ciI6MTc1ODkzMTIwMCwiZWFybmluZ3NRdWFydGVybHlHcm93dGgiOjAuODY0LCJuZXRJbmNvbWVU
b0NvbW1vbiI6MTEyMDEwMDAyNDMyLCJ0cmFpbGluZ0VwcyI6Ny40LCJmb3J3YXJkRXBzIjo5LjE0
NTM0LCJsYXN0U3BsaXRGYWN0b3IiOiI0OjEiLCJsYXN0U3BsaXREYXRlIjoxNTk4ODMyMDAwLCJl
bnRlcnByaXNlVG9SZXZlbnVlIjo5Ljc1NSwiZW50ZXJwcmlzZVRvRWJpdGRhIjoyOC4wNDYsIjUy
V2Vla0NoYW5nZSI6MC4wNTk5MTQ4MjcsIlNhbmRQNTJXZWVrQ2hhbmdlIjowLjEzMTUzMjE5LCJs
YXN0RGl2aWRlbmRWYWx1ZSI6MC4yNiwibGFzdERpdmlkZW5kRGF0ZSI6MTc2MjczMjgwMCwibGF0
ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwicXVvdGVUeXBlIjp7ImV4
Y2hhbmdlIjoiTk1TIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwic3ltYm9sIjoiQUFQTCIsInVuZGVy
bHlpbmdTeW1ib2wiOiJBQVBMIiwic2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoi
QXBwbGUgSW5jLiIsImZpcnN0VHJhZGVEYXRlRXBvY2hVdGMiOjM0NTQ3OTQwMCwidGltZVpvbmVG
dWxsTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJ0aW1lWm9uZVNob3J0TmFtZSI6IkVTVCIsInV1
aWQiOiI4YjEwZTRhZS05ZWViLTM2ODQtOTIxYS05YWIyN2U0ZDg3YWEiLCJtZXNzYWdlQm9hcmRJ
ZCI6ImZpbm1iXzI0OTM3IiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFn
ZSI6MX0sImZpbmFuY2lhbERhdGEiOnsibWF4QWdlIjo4NjQwMCwiY3VycmVudFByaWNlIjoyNzAu
OTcsInRhcmdldEhpZ2hQcmljZSI6MzUwLjAsInRhcmdldExvd1ByaWNlIjoyMTUuMCwidGFyZ2V0
TWVhblByaWNlIjoyODcuNzA2ODIsInRhcmdldE1lZGlhblByaWNlIjozMDAuMCwicmVjb21tZW5k
YXRpb25NZWFuIjoyLjAsInJlY29tbWVuZGF0aW9uS2V5IjoiYnV5IiwibnVtYmVyT2ZBbmFseXN0
T3BpbmlvbnMiOjQxLCJ0b3RhbENhc2giOjU0Njk3MDAwOTYwLCJ0b3RhbENhc2hQZXJTaGFyZSI6
My43MDIsImViaXRkYSI6MTQ0NzQ4MDAzMzI4LCJ0b3RhbERlYnQiOjExMjM3NzAwNDAzMiwicXVp
Y2tSYXRpbyI6MC43NzEsImN1cnJlbnRSYXRpbyI6MC44OTMsInRvdGFsUmV2ZW51ZSI6NDE2MTYx
MDA1NTY4LCJkZWJ0VG9FcXVpdHkiOjE1Mi40MTEsInJldmVudWVQZXJTaGFyZSI6MjcuODQsInJl
dHVybk9uQXNzZXRzIjowLjIyOTY0LCJyZXR1cm5PbkVxdWl0eSI6MS43MTQyMTk5LCJncm9zc1By
b2ZpdHMiOjE5NTIwMTAwNzYxNiwiZnJlZUNhc2hmbG93Ijo3ODg2MjI1NDA4MCwib3BlcmF0aW5n
Q2FzaGZsb3ciOjExMTQ4MjAwMzQ1NiwiZWFybmluZ3NHcm93dGgiOjAuOTEyLCJyZXZlbnVlR3Jv
d3RoIjowLjA3OSwiZ3Jvc3NNYXJnaW5zIjowLjQ2OTA1LCJlYml0ZGFNYXJnaW5zIjowLjM0Nzgy
LCJvcGVyYXRpbmdNYXJnaW5zIjowLjMxNjQ3LCJwcm9maXRNYXJnaW5zIjowLjI2OTE1MDAyLCJm
aW5hbmNpYWxDdXJyZW5jeSI6IlVTRCJ9fV0sImVycm9yIjpudWxsfX0=
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '3168'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:22 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '6'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJFcXVpdHkiLCJxdW90ZVNvdXJj
ZU5hbWUiOiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3Rv
bVByaWNlQWxlcnRDb25maWRlbmNlIjoiSElHSCIsImN1cnJlbmN5IjoiVVNEIiwiY29ycG9yYXRl
QWN0aW9ucyI6W10sInBvc3RNYXJrZXRUaW1lIjoxNzY2NDUxNTk3LCJyZWd1bGFyTWFya2V0VGlt
ZSI6MTc2NjQzNzIwNiwiYXZlcmFnZUFuYWx5c3RSYXRpbmciOiIyLjAgLSBCdXkiLCJ0cmFkZWFi
bGUiOmZhbHNlLCJjcnlwdG9UcmFkZWFibGUiOmZhbHNlLCJ0cmFpbGluZ0FubnVhbERpdmlkZW5k
UmF0ZSI6MS4wMiwidHJhaWxpbmdQRSI6MzYuNjE3NTcsImRpdmlkZW5kUmF0ZSI6MS4wNCwidHJh
aWxpbmdBbm51YWxEaXZpZGVuZFlpZWxkIjowLjAwMzcyNzExNjQsImRpdmlkZW5kWWllbGQiOjAu
MzgsImVwc1RyYWlsaW5nVHdlbHZlTW9udGhzIjo3LjQsImVwc0ZvcndhcmQiOjkuMTQ1MzQsImVw
c0N1cnJlbnRZZWFyIjo4LjI0Mzk3LCJwcmljZUVwc0N1cnJlbnRZZWFyIjozMi44Njg4NzQsInNo
YXJlc091dHN0YW5kaW5nIjoxNDc3NjM1MzAwMCwiYm9va1ZhbHVlIjo0Ljk5MSwiZmlmdHlEYXlB
dmVyYWdlIjoyNjkuNTE3OCwiZmlmdHlEYXlBdmVyYWdlQ2hhbmdlIjoxLjQ1MjIwOTUsImZpZnR5
RGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMDA1Mzg4MTc2NSwidHdvSHVuZHJlZERheUF2ZXJh
Z2UiOjIyOS45MTE4LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZSI6NDEuMDU4MTk3LCJ0d29I
dW5kcmVkRGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMTc4NTgyMzksIm1hcmtldENhcCI6NDAy
MTMwMDQ5NDMzNiwiZm9yd2FyZFBFIjoyOS42MjkyOTcsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
InNvdXJjZUludGVydmFsIjoxNSwiZXhjaGFuZ2VEYXRhRGVsYXllZEJ5IjowLCJleGNoYW5nZSI6
Ik5NUyIsIm1lc3NhZ2VCb2FyZElkIjoiZmlubWJfMjQ5MzciLCJleGNoYW5nZVRpbWV6b25lTmFt
ZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJleGNoYW5nZVRpbWV6b25lU2hvcnROYW1lIjoiRVNUIiwi
Z210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1hcmtldCI6InVzX21hcmtldCIsImVz
Z1BvcHVsYXRlZCI6ZmFsc2UsInNob3J0TmFtZSI6IkFwcGxlIEluYy4iLCJsb25nTmFtZSI6IkFw
cGxlIEluYy4iLCJtYXJrZXRTdGF0ZSI6IlBPU1RQT1NUIiwiaGFzUHJlUG9zdE1hcmtldERhdGEi
OnRydWUsImZpcnN0VHJhZGVEYXRlTWlsbGlzZWNvbmRzIjozNDU0Nzk0MDAwMDAsInByaWNlSGlu
dCI6MiwicG9zdE1hcmtldENoYW5nZVBlcmNlbnQiOi0wLjA3MzgxMzQxNiwicG9zdE1hcmtldFBy
aWNlIjoyNzAuNzcsInBvc3RNYXJrZXRDaGFuZ2UiOi0wLjIwMDAxMjIsInJlZ3VsYXJNYXJrZXRD
aGFuZ2UiOi0yLjcwMDAxLCJyZWd1bGFyTWFya2V0RGF5SGlnaCI6MjczLjg4LCJyZWd1bGFyTWFy
a2V0RGF5UmFuZ2UiOiIyNzAuNTA1IC0gMjczLjg4IiwicmVndWxhck1hcmtldERheUxvdyI6Mjcw
LjUwNSwicmVndWxhck1hcmtldFZvbHVtZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRQcmV2aW91
c0Nsb3NlIjoyNzMuNjcsImJpZCI6MjcyLjAsImFzayI6Mjc0Ljk3LCJiaWRTaXplIjoxLCJhc2tT
aXplIjo0LCJmdWxsRXhjaGFuZ2VOYW1lIjoiTmFzZGFxR1MiLCJmaW5hbmNpYWxDdXJyZW5jeSI6
IlVTRCIsInJlZ3VsYXJNYXJrZXRPcGVuIjoyNzIuODYsImF2ZXJhZ2VEYWlseVZvbHVtZTNNb250
aCI6NDc0NDg5NjYsImF2ZXJhZ2VEYWlseVZvbHVtZTEwRGF5Ijo1MTA2NTA2MCwiZmlmdHlUd29X
ZWVrTG93Q2hhbmdlIjoxMDEuNzU5OTk1LCJmaWZ0eVR3b1dlZWtMb3dDaGFuZ2VQZXJjZW50Ijow
LjYwMTM4Mjg1LCJmaWZ0eVR3b1dlZWtSYW5nZSI6IjE2OS4yMSAtIDI4OC42MiIsImZpZnR5VHdv
V2Vla0hpZ2hDaGFuZ2UiOi0xNy42NDk5OTQsImZpZnR5VHdvV2Vla0hpZ2hDaGFuZ2VQZXJjZW50
IjotMC4wNjExNTMwNTQsImZpZnR5VHdvV2Vla0xvdyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdo
IjoyODguNjIsImZpZnR5VHdvV2Vla0NoYW5nZVBlcmNlbnQiOjUuOTkxNDgyNywiZGl2aWRlbmRE
YXRlIjoxNzYyOTkyMDAwLCJlYXJuaW5nc1RpbWVzdGFtcCI6MTc2MTg1NDQwMCwiZWFybmluZ3NU
aW1lc3RhbXBTdGFydCI6MTc2OTcyMDQwMCwiZWFybmluZ3NUaW1lc3RhbXBFbmQiOjE3Njk3MjA0
MDAsImVhcm5pbmdzQ2FsbFRpbWVzdGFtcFN0YXJ0IjoxNzYxODU4MDAwLCJlYXJuaW5nc0NhbGxU
aW1lc3RhbXBFbmQiOjE3NjE4NTgwMDAsImlzRWFybmluZ3NEYXRlRXN0aW1hdGUiOnRydWUsInJl
Z3VsYXJNYXJrZXRDaGFuZ2VQZXJjZW50IjotMC45ODY1OTQsInJlZ3VsYXJNYXJrZXRQcmljZSI6
MjcwLjk3LCJkaXNwbGF5TmFtZSI6IkFwcGxlIiwic3ltYm9sIjoiQUFQTCJ9XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1151'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:22 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '3'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,250 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsiYWRkcmVzczEiOiJP
bmUgQXBwbGUgUGFyayBXYXkiLCJjaXR5IjoiQ3VwZXJ0aW5vIiwic3RhdGUiOiJDQSIsInppcCI6
Ijk1MDE0IiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJwaG9uZSI6Iig0MDgpIDk5Ni0xMDEw
Iiwid2Vic2l0ZSI6Imh0dHBzOi8vd3d3LmFwcGxlLmNvbSIsImluZHVzdHJ5IjoiQ29uc3VtZXIg
RWxlY3Ryb25pY3MiLCJpbmR1c3RyeUtleSI6ImNvbnN1bWVyLWVsZWN0cm9uaWNzIiwiaW5kdXN0
cnlEaXNwIjoiQ29uc3VtZXIgRWxlY3Ryb25pY3MiLCJzZWN0b3IiOiJUZWNobm9sb2d5Iiwic2Vj
dG9yS2V5IjoidGVjaG5vbG9neSIsInNlY3RvckRpc3AiOiJUZWNobm9sb2d5IiwibG9uZ0J1c2lu
ZXNzU3VtbWFyeSI6IkFwcGxlIEluYy4gZGVzaWducywgbWFudWZhY3R1cmVzLCBhbmQgbWFya2V0
cyBzbWFydHBob25lcywgcGVyc29uYWwgY29tcHV0ZXJzLCB0YWJsZXRzLCB3ZWFyYWJsZXMsIGFu
ZCBhY2Nlc3NvcmllcyB3b3JsZHdpZGUuIFRoZSBjb21wYW55IG9mZmVycyBpUGhvbmUsIGEgbGlu
ZSBvZiBzbWFydHBob25lczsgTWFjLCBhIGxpbmUgb2YgcGVyc29uYWwgY29tcHV0ZXJzOyBpUGFk
LCBhIGxpbmUgb2YgbXVsdGktcHVycG9zZSB0YWJsZXRzOyBhbmQgd2VhcmFibGVzLCBob21lLCBh
bmQgYWNjZXNzb3JpZXMgY29tcHJpc2luZyBBaXJQb2RzLCBBcHBsZSBWaXNpb24gUHJvLCBBcHBs
ZSBUViwgQXBwbGUgV2F0Y2gsIEJlYXRzIHByb2R1Y3RzLCBhbmQgSG9tZVBvZCwgYXMgd2VsbCBh
cyBBcHBsZSBicmFuZGVkIGFuZCB0aGlyZC1wYXJ0eSBhY2Nlc3Nvcmllcy4gSXQgYWxzbyBwcm92
aWRlcyBBcHBsZUNhcmUgc3VwcG9ydCBhbmQgY2xvdWQgc2VydmljZXM7IGFuZCBvcGVyYXRlcyB2
YXJpb3VzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHRoZSBBcHAgU3RvcmUgdGhhdCBhbGxvdyBjdXN0
b21lcnMgdG8gZGlzY292ZXIgYW5kIGRvd25sb2FkIGFwcGxpY2F0aW9ucyBhbmQgZGlnaXRhbCBj
b250ZW50LCBzdWNoIGFzIGJvb2tzLCBtdXNpYywgdmlkZW8sIGdhbWVzLCBhbmQgcG9kY2FzdHMs
IGFzIHdlbGwgYXMgYWR2ZXJ0aXNpbmcgc2VydmljZXMgaW5jbHVkZSB0aGlyZC1wYXJ0eSBsaWNl
bnNpbmcgYXJyYW5nZW1lbnRzIGFuZCBpdHMgb3duIGFkdmVydGlzaW5nIHBsYXRmb3Jtcy4gSW4g
YWRkaXRpb24sIHRoZSBjb21wYW55IG9mZmVycyB2YXJpb3VzIHN1YnNjcmlwdGlvbi1iYXNlZCBz
ZXJ2aWNlcywgc3VjaCBhcyBBcHBsZSBBcmNhZGUsIGEgZ2FtZSBzdWJzY3JpcHRpb24gc2Vydmlj
ZTsgQXBwbGUgRml0bmVzcyssIGEgcGVyc29uYWxpemVkIGZpdG5lc3Mgc2VydmljZTsgQXBwbGUg
TXVzaWMsIHdoaWNoIG9mZmVycyB1c2VycyBhIGN1cmF0ZWQgbGlzdGVuaW5nIGV4cGVyaWVuY2Ug
d2l0aCBvbi1kZW1hbmQgcmFkaW8gc3RhdGlvbnM7IEFwcGxlIE5ld3MrLCBhIHN1YnNjcmlwdGlv
biBuZXdzIGFuZCBtYWdhemluZSBzZXJ2aWNlOyBBcHBsZSBUViwgd2hpY2ggb2ZmZXJzIGV4Y2x1
c2l2ZSBvcmlnaW5hbCBjb250ZW50IGFuZCBsaXZlIHNwb3J0czsgQXBwbGUgQ2FyZCwgYSBjby1i
cmFuZGVkIGNyZWRpdCBjYXJkOyBhbmQgQXBwbGUgUGF5LCBhIGNhc2hsZXNzIHBheW1lbnQgc2Vy
dmljZSwgYXMgd2VsbCBhcyBsaWNlbnNlcyBpdHMgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBUaGUg
Y29tcGFueSBzZXJ2ZXMgY29uc3VtZXJzLCBhbmQgc21hbGwgYW5kIG1pZC1zaXplZCBidXNpbmVz
c2VzOyBhbmQgdGhlIGVkdWNhdGlvbiwgZW50ZXJwcmlzZSwgYW5kIGdvdmVybm1lbnQgbWFya2V0
cy4gSXQgZGlzdHJpYnV0ZXMgdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIGZvciBpdHMgcHJvZHVj
dHMgdGhyb3VnaCB0aGUgQXBwIFN0b3JlLiBUaGUgY29tcGFueSBhbHNvIHNlbGxzIGl0cyBwcm9k
dWN0cyB0aHJvdWdoIGl0cyByZXRhaWwgYW5kIG9ubGluZSBzdG9yZXMsIGFuZCBkaXJlY3Qgc2Fs
ZXMgZm9yY2U7IGFuZCB0aGlyZC1wYXJ0eSBjZWxsdWxhciBuZXR3b3JrIGNhcnJpZXJzIGFuZCBy
ZXNlbGxlcnMuIFRoZSBjb21wYW55IHdhcyBmb3JtZXJseSBrbm93biBhcyBBcHBsZSBDb21wdXRl
ciwgSW5jLiBhbmQgY2hhbmdlZCBpdHMgbmFtZSB0byBBcHBsZSBJbmMuIGluIEphbnVhcnkgMjAw
Ny4gQXBwbGUgSW5jLiB3YXMgZm91bmRlZCBpbiAxOTc2IGFuZCBpcyBoZWFkcXVhcnRlcmVkIGlu
IEN1cGVydGlubywgQ2FsaWZvcm5pYS4iLCJmdWxsVGltZUVtcGxveWVlcyI6MTY2MDAwLCJjb21w
YW55T2ZmaWNlcnMiOlt7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBUaW1vdGh5IEQuIENvb2siLCJh
Z2UiOjYzLCJ0aXRsZSI6IkNFTyAmIERpcmVjdG9yIiwieWVhckJvcm4iOjE5NjEsImZpc2NhbFll
YXIiOjIwMjQsInRvdGFsUGF5Ijp7InJhdyI6MTY1MjA4NTYsImZtdCI6IjE2LjUyTSIsImxvbmdG
bXQiOiIxNiw1MjAsODU2In0sImV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJs
b25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25n
Rm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1zLiBLYXRoZXJpbmUgTC4gQWRhbXMiLCJh
Z2UiOjYwLCJ0aXRsZSI6IlNlbmlvciBWUCAmIEdlbmVyYWwgQ291bnNlbCIsInllYXJCb3JuIjox
OTY0LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJyYXciOjUwMjIxODIsImZtdCI6IjUu
MDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gRGVpcmRyZSAgTydC
cmllbiIsImFnZSI6NTcsInRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFJldGFpbCAm
IFBlb3BsZSIsInllYXJCb3JuIjoxOTY3LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJy
YXciOjUwMjIxODIsImZtdCI6IjUuMDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lz
ZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJNci4gS2V2YW4gIFBhcmVraCIsImFnZSI6NTIsInRpdGxlIjoiU2VuaW9yIFZQICYgQ0ZP
IiwieWVhckJvcm4iOjE5NzIsImZpc2NhbFllYXIiOjIwMjQsImV4ZXJjaXNlZFZhbHVlIjp7InJh
dyI6MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6
MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBTYWJp
aCAgS2hhbiIsInRpdGxlIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJmaXNjYWxZZWFyIjoy
MDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwi
dW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJt
YXhBZ2UiOjEsIm5hbWUiOiJNci4gQ2hyaXMgIEtvbmRvIiwidGl0bGUiOiJTZW5pb3IgRGlyZWN0
b3Igb2YgQ29ycG9yYXRlIEFjY291bnRpbmciLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJTdWhhc2luaSAgQ2hhbmRyYW1vdWxpIiwidGl0bGUiOiJEaXJlY3RvciBvZiBJbnZlc3RvciBS
ZWxhdGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gS3Jpc3RpbiBIdWd1
ZXQgUXVheWxlIiwidGl0bGUiOiJWaWNlIFByZXNpZGVudCBvZiBXb3JsZHdpZGUgQ29tbXVuaWNh
dGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVs
bCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gR3JlZyAgSm9zd2lhayIs
InRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFdvcmxkd2lkZSBNYXJrZXRpbmciLCJm
aXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9u
Z0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gQWRyaWFuICBQZXJpY2EiLCJhZ2UiOjUw
LCJ0aXRsZSI6IlZpY2UgUHJlc2lkZW50IG9mIENvcnBvcmF0ZSBEZXZlbG9wbWVudCIsInllYXJC
b3JuIjoxOTc0LCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX1dLCJhdWRpdFJpc2siOjcsImJvYXJkUmlzayI6MSwiY29tcGVu
c2F0aW9uUmlzayI6Mywic2hhcmVIb2xkZXJSaWdodHNSaXNrIjoxLCJvdmVyYWxsUmlzayI6MSwi
Z292ZXJuYW5jZUVwb2NoRGF0ZSI6MTc2NDU0NzIwMCwiY29tcGVuc2F0aW9uQXNPZkVwb2NoRGF0
ZSI6MTczNTYwMzIwMCwiaXJXZWJzaXRlIjoiaHR0cDovL2ludmVzdG9yLmFwcGxlLmNvbS8iLCJl
eGVjdXRpdmVUZWFtIjpbXSwibWF4QWdlIjo4NjQwMH0sInN1bW1hcnlEZXRhaWwiOnsibWF4QWdl
IjoxLCJwcmljZUhpbnQiOjIsInByZXZpb3VzQ2xvc2UiOjI3My42Nywib3BlbiI6MjcyLjg2LCJk
YXlMb3ciOjI3MC41MDUsImRheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xv
c2UiOjI3My42NywicmVndWxhck1hcmtldE9wZW4iOjI3Mi44NiwicmVndWxhck1hcmtldERheUxv
dyI6MjcwLjUwNSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwiZGl2aWRlbmRSYXRlIjox
LjA0LCJkaXZpZGVuZFlpZWxkIjowLjAwMzgsImV4RGl2aWRlbmREYXRlIjoxNzYyNzMyODAwLCJw
YXlvdXRSYXRpbyI6MC4xMzY3LCJmaXZlWWVhckF2Z0RpdmlkZW5kWWllbGQiOjAuNTMsImJldGEi
OjEuMTA3LCJ0cmFpbGluZ1BFIjozNi42MTc1NywiZm9yd2FyZFBFIjoyOS42MjkyOTcsInZvbHVt
ZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJhdmVyYWdlVm9sdW1l
Ijo0NzQ0ODk2NiwiYXZlcmFnZVZvbHVtZTEwZGF5cyI6NTEwNjUwNjAsImF2ZXJhZ2VEYWlseVZv
bHVtZTEwRGF5Ijo1MTA2NTA2MCwiYmlkIjoyNzIuMCwiYXNrIjoyNzQuOTcsImJpZFNpemUiOjEw
MCwiYXNrU2l6ZSI6NDAwLCJtYXJrZXRDYXAiOjQwMjEzMDA0OTQzMzYsImZpZnR5VHdvV2Vla0xv
dyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIsImFsbFRpbWVIaWdoIjoyODguNjIs
ImFsbFRpbWVMb3ciOjAuMDQ5MTA3LCJwcmljZVRvU2FsZXNUcmFpbGluZzEyTW9udGhzIjo5LjY2
Mjg0NzUsImZpZnR5RGF5QXZlcmFnZSI6MjY5LjUxNzgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjoy
MjkuOTExOCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjEuMDIsInRyYWlsaW5nQW5udWFs
RGl2aWRlbmRZaWVsZCI6MC4wMDM3MjcxMTY0LCJjdXJyZW5jeSI6IlVTRCIsImZyb21DdXJyZW5j
eSI6bnVsbCwidG9DdXJyZW5jeSI6bnVsbCwibGFzdE1hcmtldCI6bnVsbCwiY29pbk1hcmtldENh
cExpbmsiOm51bGwsImFsZ29yaXRobSI6bnVsbCwidHJhZGVhYmxlIjpmYWxzZX0sImRlZmF1bHRL
ZXlTdGF0aXN0aWNzIjp7Im1heEFnZSI6MSwicHJpY2VIaW50IjoyLCJlbnRlcnByaXNlVmFsdWUi
OjQwNTk1NTk2MjQ3MDQsImZvcndhcmRQRSI6MjkuNjI5Mjk3LCJwcm9maXRNYXJnaW5zIjowLjI2
OTE1MDAyLCJmbG9hdFNoYXJlcyI6MTQ3NTA2NDIxNDYsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3
NjM1MzAwMCwic2hhcmVzU2hvcnQiOjEyOTQ1ODU1OSwic2hhcmVzU2hvcnRQcmlvck1vbnRoIjox
MTU1NTc4MzYsInNoYXJlc1Nob3J0UHJldmlvdXNNb250aERhdGUiOjE3NjE4Njg4MDAsImRhdGVT
aG9ydEludGVyZXN0IjoxNzY0Mjg4MDAwLCJzaGFyZXNQZXJjZW50U2hhcmVzT3V0IjowLjAwODgs
ImhlbGRQZXJjZW50SW5zaWRlcnMiOjAuMDE2OTcwMDAxLCJoZWxkUGVyY2VudEluc3RpdHV0aW9u
cyI6MC42NDQwNjk5Nywic2hvcnRSYXRpbyI6Mi42NCwic2hvcnRQZXJjZW50T2ZGbG9hdCI6MC4w
MDg4LCJiZXRhIjoxLjEwNywiaW1wbGllZFNoYXJlc091dHN0YW5kaW5nIjoxNDg0MDM5MDAwMCwi
Y2F0ZWdvcnkiOm51bGwsImJvb2tWYWx1ZSI6NC45OTEsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
ImZ1bmRGYW1pbHkiOm51bGwsImxlZ2FsVHlwZSI6bnVsbCwibGFzdEZpc2NhbFllYXJFbmQiOjE3
NTg5MzEyMDAsIm5leHRGaXNjYWxZZWFyRW5kIjoxNzkwNDY3MjAwLCJtb3N0UmVjZW50UXVhcnRl
ciI6MTc1ODkzMTIwMCwiZWFybmluZ3NRdWFydGVybHlHcm93dGgiOjAuODY0LCJuZXRJbmNvbWVU
b0NvbW1vbiI6MTEyMDEwMDAyNDMyLCJ0cmFpbGluZ0VwcyI6Ny40LCJmb3J3YXJkRXBzIjo5LjE0
NTM0LCJsYXN0U3BsaXRGYWN0b3IiOiI0OjEiLCJsYXN0U3BsaXREYXRlIjoxNTk4ODMyMDAwLCJl
bnRlcnByaXNlVG9SZXZlbnVlIjo5Ljc1NSwiZW50ZXJwcmlzZVRvRWJpdGRhIjoyOC4wNDYsIjUy
V2Vla0NoYW5nZSI6MC4wNTk5MTQ4MjcsIlNhbmRQNTJXZWVrQ2hhbmdlIjowLjEzMTUzMjE5LCJs
YXN0RGl2aWRlbmRWYWx1ZSI6MC4yNiwibGFzdERpdmlkZW5kRGF0ZSI6MTc2MjczMjgwMCwibGF0
ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwicXVvdGVUeXBlIjp7ImV4
Y2hhbmdlIjoiTk1TIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwic3ltYm9sIjoiQUFQTCIsInVuZGVy
bHlpbmdTeW1ib2wiOiJBQVBMIiwic2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoi
QXBwbGUgSW5jLiIsImZpcnN0VHJhZGVEYXRlRXBvY2hVdGMiOjM0NTQ3OTQwMCwidGltZVpvbmVG
dWxsTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJ0aW1lWm9uZVNob3J0TmFtZSI6IkVTVCIsInV1
aWQiOiI4YjEwZTRhZS05ZWViLTM2ODQtOTIxYS05YWIyN2U0ZDg3YWEiLCJtZXNzYWdlQm9hcmRJ
ZCI6ImZpbm1iXzI0OTM3IiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFn
ZSI6MX0sImZpbmFuY2lhbERhdGEiOnsibWF4QWdlIjo4NjQwMCwiY3VycmVudFByaWNlIjoyNzAu
OTcsInRhcmdldEhpZ2hQcmljZSI6MzUwLjAsInRhcmdldExvd1ByaWNlIjoyMTUuMCwidGFyZ2V0
TWVhblByaWNlIjoyODcuNzA2ODIsInRhcmdldE1lZGlhblByaWNlIjozMDAuMCwicmVjb21tZW5k
YXRpb25NZWFuIjoyLjAsInJlY29tbWVuZGF0aW9uS2V5IjoiYnV5IiwibnVtYmVyT2ZBbmFseXN0
T3BpbmlvbnMiOjQxLCJ0b3RhbENhc2giOjU0Njk3MDAwOTYwLCJ0b3RhbENhc2hQZXJTaGFyZSI6
My43MDIsImViaXRkYSI6MTQ0NzQ4MDAzMzI4LCJ0b3RhbERlYnQiOjExMjM3NzAwNDAzMiwicXVp
Y2tSYXRpbyI6MC43NzEsImN1cnJlbnRSYXRpbyI6MC44OTMsInRvdGFsUmV2ZW51ZSI6NDE2MTYx
MDA1NTY4LCJkZWJ0VG9FcXVpdHkiOjE1Mi40MTEsInJldmVudWVQZXJTaGFyZSI6MjcuODQsInJl
dHVybk9uQXNzZXRzIjowLjIyOTY0LCJyZXR1cm5PbkVxdWl0eSI6MS43MTQyMTk5LCJncm9zc1By
b2ZpdHMiOjE5NTIwMTAwNzYxNiwiZnJlZUNhc2hmbG93Ijo3ODg2MjI1NDA4MCwib3BlcmF0aW5n
Q2FzaGZsb3ciOjExMTQ4MjAwMzQ1NiwiZWFybmluZ3NHcm93dGgiOjAuOTEyLCJyZXZlbnVlR3Jv
d3RoIjowLjA3OSwiZ3Jvc3NNYXJnaW5zIjowLjQ2OTA1LCJlYml0ZGFNYXJnaW5zIjowLjM0Nzgy
LCJvcGVyYXRpbmdNYXJnaW5zIjowLjMxNjQ3LCJwcm9maXRNYXJnaW5zIjowLjI2OTE1MDAyLCJm
aW5hbmNpYWxDdXJyZW5jeSI6IlVTRCJ9fV0sImVycm9yIjpudWxsfX0=
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '3168'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '7'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJFcXVpdHkiLCJxdW90ZVNvdXJj
ZU5hbWUiOiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3Rv
bVByaWNlQWxlcnRDb25maWRlbmNlIjoiSElHSCIsImN1cnJlbmN5IjoiVVNEIiwic2hvcnROYW1l
IjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoiQXBwbGUgSW5jLiIsInJlZ3VsYXJNYXJrZXRDaGFu
Z2VQZXJjZW50IjotMC45ODY1OTQsInJlZ3VsYXJNYXJrZXRQcmljZSI6MjcwLjk3LCJtYXJrZXRT
dGF0ZSI6IlBPU1RQT1NUIiwiY29ycG9yYXRlQWN0aW9ucyI6W10sInBvc3RNYXJrZXRUaW1lIjox
NzY2NDUxNTk3LCJyZWd1bGFyTWFya2V0VGltZSI6MTc2NjQzNzIwNiwiZXhjaGFuZ2UiOiJOTVMi
LCJtZXNzYWdlQm9hcmRJZCI6ImZpbm1iXzI0OTM3IiwiZXhjaGFuZ2VUaW1lem9uZU5hbWUiOiJB
bWVyaWNhL05ld19Zb3JrIiwiZXhjaGFuZ2VUaW1lem9uZVNob3J0TmFtZSI6IkVTVCIsImdtdE9m
ZlNldE1pbGxpc2Vjb25kcyI6LTE4MDAwMDAwLCJtYXJrZXQiOiJ1c19tYXJrZXQiLCJlc2dQb3B1
bGF0ZWQiOmZhbHNlLCJwcmljZUVwc0N1cnJlbnRZZWFyIjozMi44Njg4NzQsInNoYXJlc091dHN0
YW5kaW5nIjoxNDc3NjM1MzAwMCwiYm9va1ZhbHVlIjo0Ljk5MSwiZmlmdHlEYXlBdmVyYWdlIjoy
NjkuNTE3OCwiZmlmdHlEYXlBdmVyYWdlQ2hhbmdlIjoxLjQ1MjIwOTUsImZpZnR5RGF5QXZlcmFn
ZUNoYW5nZVBlcmNlbnQiOjAuMDA1Mzg4MTc2NSwidHdvSHVuZHJlZERheUF2ZXJhZ2UiOjIyOS45
MTE4LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZSI6NDEuMDU4MTk3LCJ0d29IdW5kcmVkRGF5
QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMTc4NTgyMzksIm1hcmtldENhcCI6NDAyMTMwMDQ5NDMz
NiwiZm9yd2FyZFBFIjoyOS42MjkyOTcsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUsInNvdXJjZUlu
dGVydmFsIjoxNSwiZXhjaGFuZ2VEYXRhRGVsYXllZEJ5IjowLCJhdmVyYWdlQW5hbHlzdFJhdGlu
ZyI6IjIuMCAtIEJ1eSIsInRyYWRlYWJsZSI6ZmFsc2UsImNyeXB0b1RyYWRlYWJsZSI6ZmFsc2Us
Imhhc1ByZVBvc3RNYXJrZXREYXRhIjp0cnVlLCJmaXJzdFRyYWRlRGF0ZU1pbGxpc2Vjb25kcyI6
MzQ1NDc5NDAwMDAwLCJwcmljZUhpbnQiOjIsInBvc3RNYXJrZXRDaGFuZ2VQZXJjZW50IjotMC4w
NzM4MTM0MTYsInBvc3RNYXJrZXRQcmljZSI6MjcwLjc3LCJwb3N0TWFya2V0Q2hhbmdlIjotMC4y
MDAwMTIyLCJyZWd1bGFyTWFya2V0Q2hhbmdlIjotMi43MDAwMSwicmVndWxhck1hcmtldERheUhp
Z2giOjI3My44OCwicmVndWxhck1hcmtldERheVJhbmdlIjoiMjcwLjUwNSAtIDI3My44OCIsInJl
Z3VsYXJNYXJrZXREYXlMb3ciOjI3MC41MDUsInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5
LCJyZWd1bGFyTWFya2V0UHJldmlvdXNDbG9zZSI6MjczLjY3LCJiaWQiOjI3Mi4wLCJhc2siOjI3
NC45NywiYmlkU2l6ZSI6MSwiYXNrU2l6ZSI6NCwiZnVsbEV4Y2hhbmdlTmFtZSI6Ik5hc2RhcUdT
IiwiZmluYW5jaWFsQ3VycmVuY3kiOiJVU0QiLCJyZWd1bGFyTWFya2V0T3BlbiI6MjcyLjg2LCJh
dmVyYWdlRGFpbHlWb2x1bWUzTW9udGgiOjQ3NDQ4OTY2LCJhdmVyYWdlRGFpbHlWb2x1bWUxMERh
eSI6NTEwNjUwNjAsImZpZnR5VHdvV2Vla0xvd0NoYW5nZSI6MTAxLjc1OTk5NSwiZmlmdHlUd29X
ZWVrTG93Q2hhbmdlUGVyY2VudCI6MC42MDEzODI4NSwiZmlmdHlUd29XZWVrUmFuZ2UiOiIxNjku
MjEgLSAyODguNjIiLCJmaWZ0eVR3b1dlZWtIaWdoQ2hhbmdlIjotMTcuNjQ5OTk0LCJmaWZ0eVR3
b1dlZWtIaWdoQ2hhbmdlUGVyY2VudCI6LTAuMDYxMTUzMDU0LCJmaWZ0eVR3b1dlZWtMb3ciOjE2
OS4yMSwiZmlmdHlUd29XZWVrSGlnaCI6Mjg4LjYyLCJmaWZ0eVR3b1dlZWtDaGFuZ2VQZXJjZW50
Ijo1Ljk5MTQ4MjcsImRpdmlkZW5kRGF0ZSI6MTc2Mjk5MjAwMCwiZWFybmluZ3NUaW1lc3RhbXAi
OjE3NjE4NTQ0MDAsImVhcm5pbmdzVGltZXN0YW1wU3RhcnQiOjE3Njk3MjA0MDAsImVhcm5pbmdz
VGltZXN0YW1wRW5kIjoxNzY5NzIwNDAwLCJlYXJuaW5nc0NhbGxUaW1lc3RhbXBTdGFydCI6MTc2
MTg1ODAwMCwiZWFybmluZ3NDYWxsVGltZXN0YW1wRW5kIjoxNzYxODU4MDAwLCJpc0Vhcm5pbmdz
RGF0ZUVzdGltYXRlIjp0cnVlLCJ0cmFpbGluZ0FubnVhbERpdmlkZW5kUmF0ZSI6MS4wMiwidHJh
aWxpbmdQRSI6MzYuNjE3NTcsImRpdmlkZW5kUmF0ZSI6MS4wNCwidHJhaWxpbmdBbm51YWxEaXZp
ZGVuZFlpZWxkIjowLjAwMzcyNzExNjQsImRpdmlkZW5kWWllbGQiOjAuMzgsImVwc1RyYWlsaW5n
VHdlbHZlTW9udGhzIjo3LjQsImVwc0ZvcndhcmQiOjkuMTQ1MzQsImVwc0N1cnJlbnRZZWFyIjo4
LjI0Mzk3LCJkaXNwbGF5TmFtZSI6IkFwcGxlIiwic3ltYm9sIjoiQUFQTCJ9XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '0'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1158'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '3'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,856 +0,0 @@
interactions:
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJhc3NldFByb2ZpbGUiOnsiYWRkcmVzczEiOiJP
bmUgQXBwbGUgUGFyayBXYXkiLCJjaXR5IjoiQ3VwZXJ0aW5vIiwic3RhdGUiOiJDQSIsInppcCI6
Ijk1MDE0IiwiY291bnRyeSI6IlVuaXRlZCBTdGF0ZXMiLCJwaG9uZSI6Iig0MDgpIDk5Ni0xMDEw
Iiwid2Vic2l0ZSI6Imh0dHBzOi8vd3d3LmFwcGxlLmNvbSIsImluZHVzdHJ5IjoiQ29uc3VtZXIg
RWxlY3Ryb25pY3MiLCJpbmR1c3RyeUtleSI6ImNvbnN1bWVyLWVsZWN0cm9uaWNzIiwiaW5kdXN0
cnlEaXNwIjoiQ29uc3VtZXIgRWxlY3Ryb25pY3MiLCJzZWN0b3IiOiJUZWNobm9sb2d5Iiwic2Vj
dG9yS2V5IjoidGVjaG5vbG9neSIsInNlY3RvckRpc3AiOiJUZWNobm9sb2d5IiwibG9uZ0J1c2lu
ZXNzU3VtbWFyeSI6IkFwcGxlIEluYy4gZGVzaWducywgbWFudWZhY3R1cmVzLCBhbmQgbWFya2V0
cyBzbWFydHBob25lcywgcGVyc29uYWwgY29tcHV0ZXJzLCB0YWJsZXRzLCB3ZWFyYWJsZXMsIGFu
ZCBhY2Nlc3NvcmllcyB3b3JsZHdpZGUuIFRoZSBjb21wYW55IG9mZmVycyBpUGhvbmUsIGEgbGlu
ZSBvZiBzbWFydHBob25lczsgTWFjLCBhIGxpbmUgb2YgcGVyc29uYWwgY29tcHV0ZXJzOyBpUGFk
LCBhIGxpbmUgb2YgbXVsdGktcHVycG9zZSB0YWJsZXRzOyBhbmQgd2VhcmFibGVzLCBob21lLCBh
bmQgYWNjZXNzb3JpZXMgY29tcHJpc2luZyBBaXJQb2RzLCBBcHBsZSBWaXNpb24gUHJvLCBBcHBs
ZSBUViwgQXBwbGUgV2F0Y2gsIEJlYXRzIHByb2R1Y3RzLCBhbmQgSG9tZVBvZCwgYXMgd2VsbCBh
cyBBcHBsZSBicmFuZGVkIGFuZCB0aGlyZC1wYXJ0eSBhY2Nlc3Nvcmllcy4gSXQgYWxzbyBwcm92
aWRlcyBBcHBsZUNhcmUgc3VwcG9ydCBhbmQgY2xvdWQgc2VydmljZXM7IGFuZCBvcGVyYXRlcyB2
YXJpb3VzIHBsYXRmb3JtcywgaW5jbHVkaW5nIHRoZSBBcHAgU3RvcmUgdGhhdCBhbGxvdyBjdXN0
b21lcnMgdG8gZGlzY292ZXIgYW5kIGRvd25sb2FkIGFwcGxpY2F0aW9ucyBhbmQgZGlnaXRhbCBj
b250ZW50LCBzdWNoIGFzIGJvb2tzLCBtdXNpYywgdmlkZW8sIGdhbWVzLCBhbmQgcG9kY2FzdHMs
IGFzIHdlbGwgYXMgYWR2ZXJ0aXNpbmcgc2VydmljZXMgaW5jbHVkZSB0aGlyZC1wYXJ0eSBsaWNl
bnNpbmcgYXJyYW5nZW1lbnRzIGFuZCBpdHMgb3duIGFkdmVydGlzaW5nIHBsYXRmb3Jtcy4gSW4g
YWRkaXRpb24sIHRoZSBjb21wYW55IG9mZmVycyB2YXJpb3VzIHN1YnNjcmlwdGlvbi1iYXNlZCBz
ZXJ2aWNlcywgc3VjaCBhcyBBcHBsZSBBcmNhZGUsIGEgZ2FtZSBzdWJzY3JpcHRpb24gc2Vydmlj
ZTsgQXBwbGUgRml0bmVzcyssIGEgcGVyc29uYWxpemVkIGZpdG5lc3Mgc2VydmljZTsgQXBwbGUg
TXVzaWMsIHdoaWNoIG9mZmVycyB1c2VycyBhIGN1cmF0ZWQgbGlzdGVuaW5nIGV4cGVyaWVuY2Ug
d2l0aCBvbi1kZW1hbmQgcmFkaW8gc3RhdGlvbnM7IEFwcGxlIE5ld3MrLCBhIHN1YnNjcmlwdGlv
biBuZXdzIGFuZCBtYWdhemluZSBzZXJ2aWNlOyBBcHBsZSBUViwgd2hpY2ggb2ZmZXJzIGV4Y2x1
c2l2ZSBvcmlnaW5hbCBjb250ZW50IGFuZCBsaXZlIHNwb3J0czsgQXBwbGUgQ2FyZCwgYSBjby1i
cmFuZGVkIGNyZWRpdCBjYXJkOyBhbmQgQXBwbGUgUGF5LCBhIGNhc2hsZXNzIHBheW1lbnQgc2Vy
dmljZSwgYXMgd2VsbCBhcyBsaWNlbnNlcyBpdHMgaW50ZWxsZWN0dWFsIHByb3BlcnR5LiBUaGUg
Y29tcGFueSBzZXJ2ZXMgY29uc3VtZXJzLCBhbmQgc21hbGwgYW5kIG1pZC1zaXplZCBidXNpbmVz
c2VzOyBhbmQgdGhlIGVkdWNhdGlvbiwgZW50ZXJwcmlzZSwgYW5kIGdvdmVybm1lbnQgbWFya2V0
cy4gSXQgZGlzdHJpYnV0ZXMgdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIGZvciBpdHMgcHJvZHVj
dHMgdGhyb3VnaCB0aGUgQXBwIFN0b3JlLiBUaGUgY29tcGFueSBhbHNvIHNlbGxzIGl0cyBwcm9k
dWN0cyB0aHJvdWdoIGl0cyByZXRhaWwgYW5kIG9ubGluZSBzdG9yZXMsIGFuZCBkaXJlY3Qgc2Fs
ZXMgZm9yY2U7IGFuZCB0aGlyZC1wYXJ0eSBjZWxsdWxhciBuZXR3b3JrIGNhcnJpZXJzIGFuZCBy
ZXNlbGxlcnMuIFRoZSBjb21wYW55IHdhcyBmb3JtZXJseSBrbm93biBhcyBBcHBsZSBDb21wdXRl
ciwgSW5jLiBhbmQgY2hhbmdlZCBpdHMgbmFtZSB0byBBcHBsZSBJbmMuIGluIEphbnVhcnkgMjAw
Ny4gQXBwbGUgSW5jLiB3YXMgZm91bmRlZCBpbiAxOTc2IGFuZCBpcyBoZWFkcXVhcnRlcmVkIGlu
IEN1cGVydGlubywgQ2FsaWZvcm5pYS4iLCJmdWxsVGltZUVtcGxveWVlcyI6MTY2MDAwLCJjb21w
YW55T2ZmaWNlcnMiOlt7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBUaW1vdGh5IEQuIENvb2siLCJh
Z2UiOjYzLCJ0aXRsZSI6IkNFTyAmIERpcmVjdG9yIiwieWVhckJvcm4iOjE5NjEsImZpc2NhbFll
YXIiOjIwMjQsInRvdGFsUGF5Ijp7InJhdyI6MTY1MjA4NTYsImZtdCI6IjE2LjUyTSIsImxvbmdG
bXQiOiIxNiw1MjAsODU2In0sImV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJs
b25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25n
Rm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1zLiBLYXRoZXJpbmUgTC4gQWRhbXMiLCJh
Z2UiOjYwLCJ0aXRsZSI6IlNlbmlvciBWUCAmIEdlbmVyYWwgQ291bnNlbCIsInllYXJCb3JuIjox
OTY0LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJyYXciOjUwMjIxODIsImZtdCI6IjUu
MDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gRGVpcmRyZSAgTydC
cmllbiIsImFnZSI6NTcsInRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFJldGFpbCAm
IFBlb3BsZSIsInllYXJCb3JuIjoxOTY3LCJmaXNjYWxZZWFyIjoyMDI0LCJ0b3RhbFBheSI6eyJy
YXciOjUwMjIxODIsImZtdCI6IjUuMDJNIiwibG9uZ0ZtdCI6IjUsMDIyLDE4MiJ9LCJleGVyY2lz
ZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJNci4gS2V2YW4gIFBhcmVraCIsImFnZSI6NTIsInRpdGxlIjoiU2VuaW9yIFZQICYgQ0ZP
IiwieWVhckJvcm4iOjE5NzIsImZpc2NhbFllYXIiOjIwMjQsImV4ZXJjaXNlZFZhbHVlIjp7InJh
dyI6MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9LCJ1bmV4ZXJjaXNlZFZhbHVlIjp7InJhdyI6
MCwiZm10IjpudWxsLCJsb25nRm10IjoiMCJ9fSx7Im1heEFnZSI6MSwibmFtZSI6Ik1yLiBTYWJp
aCAgS2hhbiIsInRpdGxlIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJmaXNjYWxZZWFyIjoy
MDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwi
dW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJt
YXhBZ2UiOjEsIm5hbWUiOiJNci4gQ2hyaXMgIEtvbmRvIiwidGl0bGUiOiJTZW5pb3IgRGlyZWN0
b3Igb2YgQ29ycG9yYXRlIEFjY291bnRpbmciLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRW
YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJTdWhhc2luaSAgQ2hhbmRyYW1vdWxpIiwidGl0bGUiOiJEaXJlY3RvciBvZiBJbnZlc3RvciBS
ZWxhdGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNcy4gS3Jpc3RpbiBIdWd1
ZXQgUXVheWxlIiwidGl0bGUiOiJWaWNlIFByZXNpZGVudCBvZiBXb3JsZHdpZGUgQ29tbXVuaWNh
dGlvbnMiLCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVs
bCwibG9uZ0ZtdCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gR3JlZyAgSm9zd2lhayIs
InRpdGxlIjoiU2VuaW9yIFZpY2UgUHJlc2lkZW50IG9mIFdvcmxkd2lkZSBNYXJrZXRpbmciLCJm
aXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9u
Z0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJNci4gQWRyaWFuICBQZXJpY2EiLCJhZ2UiOjUw
LCJ0aXRsZSI6IlZpY2UgUHJlc2lkZW50IG9mIENvcnBvcmF0ZSBEZXZlbG9wbWVudCIsInllYXJC
b3JuIjoxOTc0LCJmaXNjYWxZZWFyIjoyMDI0LCJleGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZt
dCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwidW5leGVyY2lzZWRWYWx1ZSI6eyJyYXciOjAsImZtdCI6
bnVsbCwibG9uZ0ZtdCI6IjAifX1dLCJhdWRpdFJpc2siOjcsImJvYXJkUmlzayI6MSwiY29tcGVu
c2F0aW9uUmlzayI6Mywic2hhcmVIb2xkZXJSaWdodHNSaXNrIjoxLCJvdmVyYWxsUmlzayI6MSwi
Z292ZXJuYW5jZUVwb2NoRGF0ZSI6MTc2NDU0NzIwMCwiY29tcGVuc2F0aW9uQXNPZkVwb2NoRGF0
ZSI6MTczNTYwMzIwMCwiaXJXZWJzaXRlIjoiaHR0cDovL2ludmVzdG9yLmFwcGxlLmNvbS8iLCJl
eGVjdXRpdmVUZWFtIjpbXSwibWF4QWdlIjo4NjQwMH0sInN1bW1hcnlEZXRhaWwiOnsibWF4QWdl
IjoxLCJwcmljZUhpbnQiOjIsInByZXZpb3VzQ2xvc2UiOjI3My42Nywib3BlbiI6MjcyLjg2LCJk
YXlMb3ciOjI3MC41MDUsImRheUhpZ2giOjI3My44OCwicmVndWxhck1hcmtldFByZXZpb3VzQ2xv
c2UiOjI3My42NywicmVndWxhck1hcmtldE9wZW4iOjI3Mi44NiwicmVndWxhck1hcmtldERheUxv
dyI6MjcwLjUwNSwicmVndWxhck1hcmtldERheUhpZ2giOjI3My44OCwiZGl2aWRlbmRSYXRlIjox
LjA0LCJkaXZpZGVuZFlpZWxkIjowLjAwMzgsImV4RGl2aWRlbmREYXRlIjoxNzYyNzMyODAwLCJw
YXlvdXRSYXRpbyI6MC4xMzY3LCJmaXZlWWVhckF2Z0RpdmlkZW5kWWllbGQiOjAuNTMsImJldGEi
OjEuMTA3LCJ0cmFpbGluZ1BFIjozNi42MTc1NywiZm9yd2FyZFBFIjoyOS42MjkyOTcsInZvbHVt
ZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRWb2x1bWUiOjM2NDQ1MTk5LCJhdmVyYWdlVm9sdW1l
Ijo0NzQ0ODk2NiwiYXZlcmFnZVZvbHVtZTEwZGF5cyI6NTEwNjUwNjAsImF2ZXJhZ2VEYWlseVZv
bHVtZTEwRGF5Ijo1MTA2NTA2MCwiYmlkIjoyNzIuMCwiYXNrIjoyNzQuOTcsImJpZFNpemUiOjEw
MCwiYXNrU2l6ZSI6NDAwLCJtYXJrZXRDYXAiOjQwMjEzMDA0OTQzMzYsImZpZnR5VHdvV2Vla0xv
dyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIsImFsbFRpbWVIaWdoIjoyODguNjIs
ImFsbFRpbWVMb3ciOjAuMDQ5MTA3LCJwcmljZVRvU2FsZXNUcmFpbGluZzEyTW9udGhzIjo5LjY2
Mjg0NzUsImZpZnR5RGF5QXZlcmFnZSI6MjY5LjUxNzgsInR3b0h1bmRyZWREYXlBdmVyYWdlIjoy
MjkuOTExOCwidHJhaWxpbmdBbm51YWxEaXZpZGVuZFJhdGUiOjEuMDIsInRyYWlsaW5nQW5udWFs
RGl2aWRlbmRZaWVsZCI6MC4wMDM3MjcxMTY0LCJjdXJyZW5jeSI6IlVTRCIsImZyb21DdXJyZW5j
eSI6bnVsbCwidG9DdXJyZW5jeSI6bnVsbCwibGFzdE1hcmtldCI6bnVsbCwiY29pbk1hcmtldENh
cExpbmsiOm51bGwsImFsZ29yaXRobSI6bnVsbCwidHJhZGVhYmxlIjpmYWxzZX0sImRlZmF1bHRL
ZXlTdGF0aXN0aWNzIjp7Im1heEFnZSI6MSwicHJpY2VIaW50IjoyLCJlbnRlcnByaXNlVmFsdWUi
OjQwNTk1NTk2MjQ3MDQsImZvcndhcmRQRSI6MjkuNjI5Mjk3LCJwcm9maXRNYXJnaW5zIjowLjI2
OTE1MDAyLCJmbG9hdFNoYXJlcyI6MTQ3NTA2NDIxNDYsInNoYXJlc091dHN0YW5kaW5nIjoxNDc3
NjM1MzAwMCwic2hhcmVzU2hvcnQiOjEyOTQ1ODU1OSwic2hhcmVzU2hvcnRQcmlvck1vbnRoIjox
MTU1NTc4MzYsInNoYXJlc1Nob3J0UHJldmlvdXNNb250aERhdGUiOjE3NjE4Njg4MDAsImRhdGVT
aG9ydEludGVyZXN0IjoxNzY0Mjg4MDAwLCJzaGFyZXNQZXJjZW50U2hhcmVzT3V0IjowLjAwODgs
ImhlbGRQZXJjZW50SW5zaWRlcnMiOjAuMDE2OTcwMDAxLCJoZWxkUGVyY2VudEluc3RpdHV0aW9u
cyI6MC42NDQwNjk5Nywic2hvcnRSYXRpbyI6Mi42NCwic2hvcnRQZXJjZW50T2ZGbG9hdCI6MC4w
MDg4LCJiZXRhIjoxLjEwNywiaW1wbGllZFNoYXJlc091dHN0YW5kaW5nIjoxNDg0MDM5MDAwMCwi
Y2F0ZWdvcnkiOm51bGwsImJvb2tWYWx1ZSI6NC45OTEsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUs
ImZ1bmRGYW1pbHkiOm51bGwsImxlZ2FsVHlwZSI6bnVsbCwibGFzdEZpc2NhbFllYXJFbmQiOjE3
NTg5MzEyMDAsIm5leHRGaXNjYWxZZWFyRW5kIjoxNzkwNDY3MjAwLCJtb3N0UmVjZW50UXVhcnRl
ciI6MTc1ODkzMTIwMCwiZWFybmluZ3NRdWFydGVybHlHcm93dGgiOjAuODY0LCJuZXRJbmNvbWVU
b0NvbW1vbiI6MTEyMDEwMDAyNDMyLCJ0cmFpbGluZ0VwcyI6Ny40LCJmb3J3YXJkRXBzIjo5LjE0
NTM0LCJsYXN0U3BsaXRGYWN0b3IiOiI0OjEiLCJsYXN0U3BsaXREYXRlIjoxNTk4ODMyMDAwLCJl
bnRlcnByaXNlVG9SZXZlbnVlIjo5Ljc1NSwiZW50ZXJwcmlzZVRvRWJpdGRhIjoyOC4wNDYsIjUy
V2Vla0NoYW5nZSI6MC4wNTk5MTQ4MjcsIlNhbmRQNTJXZWVrQ2hhbmdlIjowLjEzMTUzMjE5LCJs
YXN0RGl2aWRlbmRWYWx1ZSI6MC4yNiwibGFzdERpdmlkZW5kRGF0ZSI6MTc2MjczMjgwMCwibGF0
ZXN0U2hhcmVDbGFzcyI6bnVsbCwibGVhZEludmVzdG9yIjpudWxsfSwicXVvdGVUeXBlIjp7ImV4
Y2hhbmdlIjoiTk1TIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwic3ltYm9sIjoiQUFQTCIsInVuZGVy
bHlpbmdTeW1ib2wiOiJBQVBMIiwic2hvcnROYW1lIjoiQXBwbGUgSW5jLiIsImxvbmdOYW1lIjoi
QXBwbGUgSW5jLiIsImZpcnN0VHJhZGVEYXRlRXBvY2hVdGMiOjM0NTQ3OTQwMCwidGltZVpvbmVG
dWxsTmFtZSI6IkFtZXJpY2EvTmV3X1lvcmsiLCJ0aW1lWm9uZVNob3J0TmFtZSI6IkVTVCIsInV1
aWQiOiI4YjEwZTRhZS05ZWViLTM2ODQtOTIxYS05YWIyN2U0ZDg3YWEiLCJtZXNzYWdlQm9hcmRJ
ZCI6ImZpbm1iXzI0OTM3IiwiZ210T2ZmU2V0TWlsbGlzZWNvbmRzIjotMTgwMDAwMDAsIm1heEFn
ZSI6MX0sImZpbmFuY2lhbERhdGEiOnsibWF4QWdlIjo4NjQwMCwiY3VycmVudFByaWNlIjoyNzAu
OTcsInRhcmdldEhpZ2hQcmljZSI6MzUwLjAsInRhcmdldExvd1ByaWNlIjoyMTUuMCwidGFyZ2V0
TWVhblByaWNlIjoyODcuNzA2ODIsInRhcmdldE1lZGlhblByaWNlIjozMDAuMCwicmVjb21tZW5k
YXRpb25NZWFuIjoyLjAsInJlY29tbWVuZGF0aW9uS2V5IjoiYnV5IiwibnVtYmVyT2ZBbmFseXN0
T3BpbmlvbnMiOjQxLCJ0b3RhbENhc2giOjU0Njk3MDAwOTYwLCJ0b3RhbENhc2hQZXJTaGFyZSI6
My43MDIsImViaXRkYSI6MTQ0NzQ4MDAzMzI4LCJ0b3RhbERlYnQiOjExMjM3NzAwNDAzMiwicXVp
Y2tSYXRpbyI6MC43NzEsImN1cnJlbnRSYXRpbyI6MC44OTMsInRvdGFsUmV2ZW51ZSI6NDE2MTYx
MDA1NTY4LCJkZWJ0VG9FcXVpdHkiOjE1Mi40MTEsInJldmVudWVQZXJTaGFyZSI6MjcuODQsInJl
dHVybk9uQXNzZXRzIjowLjIyOTY0LCJyZXR1cm5PbkVxdWl0eSI6MS43MTQyMTk5LCJncm9zc1By
b2ZpdHMiOjE5NTIwMTAwNzYxNiwiZnJlZUNhc2hmbG93Ijo3ODg2MjI1NDA4MCwib3BlcmF0aW5n
Q2FzaGZsb3ciOjExMTQ4MjAwMzQ1NiwiZWFybmluZ3NHcm93dGgiOjAuOTEyLCJyZXZlbnVlR3Jv
d3RoIjowLjA3OSwiZ3Jvc3NNYXJnaW5zIjowLjQ2OTA1LCJlYml0ZGFNYXJnaW5zIjowLjM0Nzgy
LCJvcGVyYXRpbmdNYXJnaW5zIjowLjMxNjQ3LCJwcm9maXRNYXJnaW5zIjowLjI2OTE1MDAyLCJm
aW5hbmNpYWxDdXJyZW5jeSI6IlVTRCJ9fV0sImVycm9yIjpudWxsfX0=
headers:
age: '1'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '3168'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '6'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query1.finance.yahoo.com/v7/finance/quote
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVJlc3BvbnNlIjp7InJlc3VsdCI6W3sibGFuZ3VhZ2UiOiJlbi1VUyIsInJlZ2lvbiI6
IlVTIiwicXVvdGVUeXBlIjoiRVFVSVRZIiwidHlwZURpc3AiOiJFcXVpdHkiLCJxdW90ZVNvdXJj
ZU5hbWUiOiJOYXNkYXEgUmVhbCBUaW1lIFByaWNlIiwidHJpZ2dlcmFibGUiOnRydWUsImN1c3Rv
bVByaWNlQWxlcnRDb25maWRlbmNlIjoiSElHSCIsImN1cnJlbmN5IjoiVVNEIiwiZWFybmluZ3NU
aW1lc3RhbXAiOjE3NjE4NTQ0MDAsImVhcm5pbmdzVGltZXN0YW1wU3RhcnQiOjE3Njk3MjA0MDAs
ImVhcm5pbmdzVGltZXN0YW1wRW5kIjoxNzY5NzIwNDAwLCJlYXJuaW5nc0NhbGxUaW1lc3RhbXBT
dGFydCI6MTc2MTg1ODAwMCwiZWFybmluZ3NDYWxsVGltZXN0YW1wRW5kIjoxNzYxODU4MDAwLCJp
c0Vhcm5pbmdzRGF0ZUVzdGltYXRlIjp0cnVlLCJ0cmFpbGluZ0FubnVhbERpdmlkZW5kUmF0ZSI6
MS4wMiwidHJhaWxpbmdQRSI6MzYuNjE3NTcsImRpdmlkZW5kUmF0ZSI6MS4wNCwidHJhaWxpbmdB
bm51YWxEaXZpZGVuZFlpZWxkIjowLjAwMzcyNzExNjQsImRpdmlkZW5kWWllbGQiOjAuMzgsImVw
c1RyYWlsaW5nVHdlbHZlTW9udGhzIjo3LjQsImVwc0ZvcndhcmQiOjkuMTQ1MzQsImVwc0N1cnJl
bnRZZWFyIjo4LjI0Mzk3LCJwcmljZUVwc0N1cnJlbnRZZWFyIjozMi44Njg4NzQsInNoYXJlc091
dHN0YW5kaW5nIjoxNDc3NjM1MzAwMCwiYm9va1ZhbHVlIjo0Ljk5MSwiZmlmdHlEYXlBdmVyYWdl
IjoyNjkuNTE3OCwiZmlmdHlEYXlBdmVyYWdlQ2hhbmdlIjoxLjQ1MjIwOTUsImZpZnR5RGF5QXZl
cmFnZUNoYW5nZVBlcmNlbnQiOjAuMDA1Mzg4MTc2NSwidHdvSHVuZHJlZERheUF2ZXJhZ2UiOjIy
OS45MTE4LCJ0d29IdW5kcmVkRGF5QXZlcmFnZUNoYW5nZSI6NDEuMDU4MTk3LCJ0d29IdW5kcmVk
RGF5QXZlcmFnZUNoYW5nZVBlcmNlbnQiOjAuMTc4NTgyMzksIm1hcmtldENhcCI6NDAyMTMwMDQ5
NDMzNiwiZm9yd2FyZFBFIjoyOS42MjkyOTcsInByaWNlVG9Cb29rIjo1NC4yOTE3MjUsInNvdXJj
ZUludGVydmFsIjoxNSwiZXhjaGFuZ2VEYXRhRGVsYXllZEJ5IjowLCJhdmVyYWdlQW5hbHlzdFJh
dGluZyI6IjIuMCAtIEJ1eSIsInRyYWRlYWJsZSI6ZmFsc2UsImNyeXB0b1RyYWRlYWJsZSI6ZmFs
c2UsIm1hcmtldFN0YXRlIjoiUE9TVFBPU1QiLCJzaG9ydE5hbWUiOiJBcHBsZSBJbmMuIiwibG9u
Z05hbWUiOiJBcHBsZSBJbmMuIiwiY29ycG9yYXRlQWN0aW9ucyI6W10sInBvc3RNYXJrZXRUaW1l
IjoxNzY2NDUxNTk3LCJyZWd1bGFyTWFya2V0VGltZSI6MTc2NjQzNzIwNiwiZXhjaGFuZ2UiOiJO
TVMiLCJtZXNzYWdlQm9hcmRJZCI6ImZpbm1iXzI0OTM3IiwiZXhjaGFuZ2VUaW1lem9uZU5hbWUi
OiJBbWVyaWNhL05ld19Zb3JrIiwiZXhjaGFuZ2VUaW1lem9uZVNob3J0TmFtZSI6IkVTVCIsImdt
dE9mZlNldE1pbGxpc2Vjb25kcyI6LTE4MDAwMDAwLCJtYXJrZXQiOiJ1c19tYXJrZXQiLCJlc2dQ
b3B1bGF0ZWQiOmZhbHNlLCJyZWd1bGFyTWFya2V0Q2hhbmdlUGVyY2VudCI6LTAuOTg2NTk0LCJy
ZWd1bGFyTWFya2V0UHJpY2UiOjI3MC45NywiaGFzUHJlUG9zdE1hcmtldERhdGEiOnRydWUsImZp
cnN0VHJhZGVEYXRlTWlsbGlzZWNvbmRzIjozNDU0Nzk0MDAwMDAsInByaWNlSGludCI6MiwicG9z
dE1hcmtldENoYW5nZVBlcmNlbnQiOi0wLjA3MzgxMzQxNiwicG9zdE1hcmtldFByaWNlIjoyNzAu
NzcsInBvc3RNYXJrZXRDaGFuZ2UiOi0wLjIwMDAxMjIsInJlZ3VsYXJNYXJrZXRDaGFuZ2UiOi0y
LjcwMDAxLCJyZWd1bGFyTWFya2V0RGF5SGlnaCI6MjczLjg4LCJyZWd1bGFyTWFya2V0RGF5UmFu
Z2UiOiIyNzAuNTA1IC0gMjczLjg4IiwicmVndWxhck1hcmtldERheUxvdyI6MjcwLjUwNSwicmVn
dWxhck1hcmtldFZvbHVtZSI6MzY0NDUxOTksInJlZ3VsYXJNYXJrZXRQcmV2aW91c0Nsb3NlIjoy
NzMuNjcsImJpZCI6MjcyLjAsImFzayI6Mjc0Ljk3LCJiaWRTaXplIjoxLCJhc2tTaXplIjo0LCJm
dWxsRXhjaGFuZ2VOYW1lIjoiTmFzZGFxR1MiLCJmaW5hbmNpYWxDdXJyZW5jeSI6IlVTRCIsInJl
Z3VsYXJNYXJrZXRPcGVuIjoyNzIuODYsImF2ZXJhZ2VEYWlseVZvbHVtZTNNb250aCI6NDc0NDg5
NjYsImF2ZXJhZ2VEYWlseVZvbHVtZTEwRGF5Ijo1MTA2NTA2MCwiZmlmdHlUd29XZWVrTG93Q2hh
bmdlIjoxMDEuNzU5OTk1LCJmaWZ0eVR3b1dlZWtMb3dDaGFuZ2VQZXJjZW50IjowLjYwMTM4Mjg1
LCJmaWZ0eVR3b1dlZWtSYW5nZSI6IjE2OS4yMSAtIDI4OC42MiIsImZpZnR5VHdvV2Vla0hpZ2hD
aGFuZ2UiOi0xNy42NDk5OTQsImZpZnR5VHdvV2Vla0hpZ2hDaGFuZ2VQZXJjZW50IjotMC4wNjEx
NTMwNTQsImZpZnR5VHdvV2Vla0xvdyI6MTY5LjIxLCJmaWZ0eVR3b1dlZWtIaWdoIjoyODguNjIs
ImZpZnR5VHdvV2Vla0NoYW5nZVBlcmNlbnQiOjUuOTkxNDgyNywiZGl2aWRlbmREYXRlIjoxNzYy
OTkyMDAwLCJkaXNwbGF5TmFtZSI6IkFwcGxlIiwic3ltYm9sIjoiQUFQTCJ9XSwiZXJyb3IiOm51
bGx9fQ==
headers:
age: '1'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-length: '1149'
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '4'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync
- request:
body: null
headers: {}
method: GET
uri: https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL
response:
body:
encoding: utf-8
string: !!binary |
eyJxdW90ZVN1bW1hcnkiOnsicmVzdWx0IjpbeyJpbnN0aXR1dGlvbk93bmVyc2hpcCI6eyJtYXhB
Z2UiOjEsIm93bmVyc2hpcExpc3QiOlt7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXciOjE3
NTkxOTA0MDAsImZtdCI6IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiVmFuZ3VhcmQgR3Jv
dXAgSW5jIiwicGN0SGVsZCI6eyJyYXciOjAuMDk0NywiZm10IjoiOS40NyUifSwicG9zaXRpb24i
OnsicmF3IjoxMzk5NDI3MTYyLCJmbXQiOiIxLjRCIiwibG9uZ0ZtdCI6IjEsMzk5LDQyNywxNjIi
fSwidmFsdWUiOnsicmF3IjozNzkyMDI3Nzk3OTUsImZtdCI6IjM3OS4yQiIsImxvbmdGbXQiOiIz
NzksMjAyLDc3OSw3OTUifSwicGN0Q2hhbmdlIjp7InJhdyI6LTAuMDExNywiZm10IjoiLTEuMTcl
In19LHsibWF4QWdlIjoxLCJyZXBvcnREYXRlIjp7InJhdyI6MTc1OTE5MDQwMCwiZm10IjoiMjAy
NS0wOS0zMCJ9LCJvcmdhbml6YXRpb24iOiJCbGFja3JvY2sgSW5jLiIsInBjdEhlbGQiOnsicmF3
IjowLjA3NzYsImZtdCI6IjcuNzYlIn0sInBvc2l0aW9uIjp7InJhdyI6MTE0NjMzMjI3NCwiZm10
IjoiMS4xNUIiLCJsb25nRm10IjoiMSwxNDYsMzMyLDI3NCJ9LCJ2YWx1ZSI6eyJyYXciOjMxMDYy
MTY1NzY4NSwiZm10IjoiMzEwLjYyQiIsImxvbmdGbXQiOiIzMTAsNjIxLDY1Nyw2ODUifSwicGN0
Q2hhbmdlIjp7InJhdyI6LTAuMDAyMiwiZm10IjoiLTAuMjIlIn19LHsibWF4QWdlIjoxLCJyZXBv
cnREYXRlIjp7InJhdyI6MTc1OTE5MDQwMCwiZm10IjoiMjAyNS0wOS0zMCJ9LCJvcmdhbml6YXRp
b24iOiJTdGF0ZSBTdHJlZXQgQ29ycG9yYXRpb24iLCJwY3RIZWxkIjp7InJhdyI6MC4wNDA0LCJm
bXQiOiI0LjA0JSJ9LCJwb3NpdGlvbiI6eyJyYXciOjU5NzUwMTExMywiZm10IjoiNTk3LjVNIiwi
bG9uZ0ZtdCI6IjU5Nyw1MDEsMTEzIn0sInZhbHVlIjp7InJhdyI6MTYxOTA0ODc3MzE4LCJmbXQi
OiIxNjEuOUIiLCJsb25nRm10IjoiMTYxLDkwNCw4NzcsMzE4In0sInBjdENoYW5nZSI6eyJyYXci
Oi0wLjAwNjIsImZtdCI6Ii0wLjYyJSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXci
OjE3NTkxOTA0MDAsImZtdCI6IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiSlBNT1JHQU4g
Q0hBU0UgJiBDTyIsInBjdEhlbGQiOnsicmF3IjowLjAzMiwiZm10IjoiMy4yMCUifSwicG9zaXRp
b24iOnsicmF3Ijo0NzMzMTEwNjIsImZtdCI6IjQ3My4zMU0iLCJsb25nRm10IjoiNDczLDMxMSww
NjIifSwidmFsdWUiOnsicmF3IjoxMjgyNTMwOTkwNDcsImZtdCI6IjEyOC4yNUIiLCJsb25nRm10
IjoiMTI4LDI1MywwOTksMDQ3In0sInBjdENoYW5nZSI6eyJyYXciOjEuMjA1NSwiZm10IjoiMTIw
LjU1JSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXciOjE3NTkxOTA0MDAsImZtdCI6
IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiR2VvZGUgQ2FwaXRhbCBNYW5hZ2VtZW50LCBM
TEMiLCJwY3RIZWxkIjp7InJhdyI6MC4wMjQxLCJmbXQiOiIyLjQxJSJ9LCJwb3NpdGlvbiI6eyJy
YXciOjM1NjE2NjQxNCwiZm10IjoiMzU2LjE3TSIsImxvbmdGbXQiOiIzNTYsMTY2LDQxNCJ9LCJ2
YWx1ZSI6eyJyYXciOjk2NTEwNDEzNjM2LCJmbXQiOiI5Ni41MUIiLCJsb25nRm10IjoiOTYsNTEw
LDQxMyw2MzYifSwicGN0Q2hhbmdlIjp7InJhdyI6MC4wMDQsImZtdCI6IjAuNDAlIn19LHsibWF4
QWdlIjoxLCJyZXBvcnREYXRlIjp7InJhdyI6MTc1OTE5MDQwMCwiZm10IjoiMjAyNS0wOS0zMCJ9
LCJvcmdhbml6YXRpb24iOiJGTVIsIExMQyIsInBjdEhlbGQiOnsicmF3IjowLjAyMDQ5OTk5OSwi
Zm10IjoiMi4wNSUifSwicG9zaXRpb24iOnsicmF3IjozMDMyNTQwODEsImZtdCI6IjMwMy4yNU0i
LCJsb25nRm10IjoiMzAzLDI1NCwwODEifSwidmFsdWUiOnsicmF3Ijo4MjE3Mjc1ODY5OCwiZm10
IjoiODIuMTdCIiwibG9uZ0ZtdCI6IjgyLDE3Miw3NTgsNjk4In0sInBjdENoYW5nZSI6eyJyYXci
Oi0wLjAxMTQsImZtdCI6Ii0xLjE0JSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXci
OjE3NTkxOTA0MDAsImZtdCI6IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiQmVya3NoaXJl
IEhhdGhhd2F5LCBJbmMiLCJwY3RIZWxkIjp7InJhdyI6MC4wMTYxLCJmbXQiOiIxLjYxJSJ9LCJw
b3NpdGlvbiI6eyJyYXciOjIzODIxMjc2NCwiZm10IjoiMjM4LjIxTSIsImxvbmdGbXQiOiIyMzgs
MjEyLDc2NCJ9LCJ2YWx1ZSI6eyJyYXciOjY0NTQ4NTEyOTUxLCJmbXQiOiI2NC41NUIiLCJsb25n
Rm10IjoiNjQsNTQ4LDUxMiw5NTEifSwicGN0Q2hhbmdlIjp7InJhdyI6LTAuMTQ5MiwiZm10Ijoi
LTE0LjkyJSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXciOjE3NTkxOTA0MDAsImZt
dCI6IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiTW9yZ2FuIFN0YW5sZXkiLCJwY3RIZWxk
Ijp7InJhdyI6MC4wMTU1LCJmbXQiOiIxLjU1JSJ9LCJwb3NpdGlvbiI6eyJyYXciOjIyOTEwMzM4
NCwiZm10IjoiMjI5LjFNIiwibG9uZ0ZtdCI6IjIyOSwxMDMsMzg0In0sInZhbHVlIjp7InJhdyI6
NjIwODAxNDQyNDIsImZtdCI6IjYyLjA4QiIsImxvbmdGbXQiOiI2MiwwODAsMTQ0LDI0MiJ9LCJw
Y3RDaGFuZ2UiOnsicmF3IjotMC4wMTc2LCJmbXQiOiItMS43NiUifX0seyJtYXhBZ2UiOjEsInJl
cG9ydERhdGUiOnsicmF3IjoxNzU5MTkwNDAwLCJmbXQiOiIyMDI1LTA5LTMwIn0sIm9yZ2FuaXph
dGlvbiI6IlByaWNlIChULlJvd2UpIEFzc29jaWF0ZXMgSW5jIiwicGN0SGVsZCI6eyJyYXciOjAu
MDE0NDAwMDAxLCJmbXQiOiIxLjQ0JSJ9LCJwb3NpdGlvbiI6eyJyYXciOjIxMjc1NTA1MywiZm10
IjoiMjEyLjc2TSIsImxvbmdGbXQiOiIyMTIsNzU1LDA1MyJ9LCJ2YWx1ZSI6eyJyYXciOjU3NjUw
MjM2OTcxLCJmbXQiOiI1Ny42NUIiLCJsb25nRm10IjoiNTcsNjUwLDIzNiw5NzEifSwicGN0Q2hh
bmdlIjp7InJhdyI6MC4wNDk1LCJmbXQiOiI0Ljk1JSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0
ZSI6eyJyYXciOjE3NTEyNDE2MDAsImZtdCI6IjIwMjUtMDYtMzAifSwib3JnYW5pemF0aW9uIjoi
Tk9SR0VTIEJBTksiLCJwY3RIZWxkIjp7InJhdyI6MC4wMTI4LCJmbXQiOiIxLjI4JSJ9LCJwb3Np
dGlvbiI6eyJyYXciOjE4OTgwNDgyMCwiZm10IjoiMTg5LjhNIiwibG9uZ0ZtdCI6IjE4OSw4MDQs
ODIwIn0sInZhbHVlIjp7InJhdyI6NTE0MzE0MTIzMDcsImZtdCI6IjUxLjQzQiIsImxvbmdGbXQi
OiI1MSw0MzEsNDEyLDMwNyJ9LCJwY3RDaGFuZ2UiOnsicmF3IjowLjAxNDA5OTk5OSwiZm10Ijoi
MS40MSUifX1dfSwibWFqb3JIb2xkZXJzQnJlYWtkb3duIjp7Im1heEFnZSI6MSwiaW5zaWRlcnNQ
ZXJjZW50SGVsZCI6MC4wMTY5NzAwMDEsImluc3RpdHV0aW9uc1BlcmNlbnRIZWxkIjowLjY0NDA2
OTk3LCJpbnN0aXR1dGlvbnNGbG9hdFBlcmNlbnRIZWxkIjowLjY1NTE4LCJpbnN0aXR1dGlvbnND
b3VudCI6NzA3M30sImluc2lkZXJIb2xkZXJzIjp7ImhvbGRlcnMiOlt7Im1heEFnZSI6MSwibmFt
ZSI6IkFEQU1TIEtBVEhFUklORSBMIiwicmVsYXRpb24iOiJHZW5lcmFsIENvdW5zZWwiLCJ1cmwi
OiIiLCJ0cmFuc2FjdGlvbkRlc2NyaXB0aW9uIjoiU3RvY2sgR2lmdCIsImxhdGVzdFRyYW5zRGF0
ZSI6eyJyYXciOjE3NjI5MDU2MDAsImZtdCI6IjIwMjUtMTEtMTIifSwicG9zaXRpb25EaXJlY3Qi
OnsicmF3IjoxNzU0MDgsImZtdCI6IjE3NS40MWsiLCJsb25nRm10IjoiMTc1LDQwOCJ9LCJwb3Np
dGlvbkRpcmVjdERhdGUiOnsicmF3IjoxNzYyOTA1NjAwLCJmbXQiOiIyMDI1LTExLTEyIn19LHsi
bWF4QWdlIjoxLCJuYW1lIjoiQ09PSyBUSU1PVEhZIEQiLCJyZWxhdGlvbiI6IkNoaWVmIEV4ZWN1
dGl2ZSBPZmZpY2VyIiwidXJsIjoiIiwidHJhbnNhY3Rpb25EZXNjcmlwdGlvbiI6IlNhbGUiLCJs
YXRlc3RUcmFuc0RhdGUiOnsicmF3IjoxNzU5MzYzMjAwLCJmbXQiOiIyMDI1LTEwLTAyIn0sInBv
c2l0aW9uRGlyZWN0Ijp7InJhdyI6MzI4MDMwMCwiZm10IjoiMy4yOE0iLCJsb25nRm10IjoiMywy
ODAsMzAwIn0sInBvc2l0aW9uRGlyZWN0RGF0ZSI6eyJyYXciOjE3NTkzNjMyMDAsImZtdCI6IjIw
MjUtMTAtMDIifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJLSEFOIFNBQklIIiwicmVsYXRpb24iOiJD
aGllZiBPcGVyYXRpbmcgT2ZmaWNlciIsInVybCI6IiIsInRyYW5zYWN0aW9uRGVzY3JpcHRpb24i
OiJDb252ZXJzaW9uIG9mIEV4ZXJjaXNlIG9mIGRlcml2YXRpdmUgc2VjdXJpdHkiLCJsYXRlc3RU
cmFuc0RhdGUiOnsicmF3IjoxNzU5Mjc2ODAwLCJmbXQiOiIyMDI1LTEwLTAxIn0sInBvc2l0aW9u
RGlyZWN0Ijp7InJhdyI6MTA3NDQwMCwiZm10IjoiMS4wN00iLCJsb25nRm10IjoiMSwwNzQsNDAw
In0sInBvc2l0aW9uRGlyZWN0RGF0ZSI6eyJyYXciOjE3NTkyNzY4MDAsImZtdCI6IjIwMjUtMTAt
MDEifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJLT05ETyBDSFJJU1RPUEhFUiIsInJlbGF0aW9uIjoi
T2ZmaWNlciIsInVybCI6IiIsInRyYW5zYWN0aW9uRGVzY3JpcHRpb24iOiJTYWxlIiwibGF0ZXN0
VHJhbnNEYXRlIjp7InJhdyI6MTc2MjQ3MzYwMCwiZm10IjoiMjAyNS0xMS0wNyJ9LCJwb3NpdGlv
bkRpcmVjdCI6eyJyYXciOjE1MDk4LCJmbXQiOiIxNS4xayIsImxvbmdGbXQiOiIxNSwwOTgifSwi
cG9zaXRpb25EaXJlY3REYXRlIjp7InJhdyI6MTc2MjQ3MzYwMCwiZm10IjoiMjAyNS0xMS0wNyJ9
fSx7Im1heEFnZSI6MSwibmFtZSI6IkxFVklOU09OIEFSVEhVUiBEIiwicmVsYXRpb24iOiJEaXJl
Y3RvciIsInVybCI6IiIsInRyYW5zYWN0aW9uRGVzY3JpcHRpb24iOiJTYWxlIiwibGF0ZXN0VHJh
bnNEYXRlIjp7InJhdyI6MTc1NjMzOTIwMCwiZm10IjoiMjAyNS0wOC0yOCJ9LCJwb3NpdGlvbkRp
cmVjdCI6eyJyYXciOjQxMjU1ODAsImZtdCI6IjQuMTNNIiwibG9uZ0ZtdCI6IjQsMTI1LDU4MCJ9
LCJwb3NpdGlvbkRpcmVjdERhdGUiOnsicmF3IjoxNzU2MzM5MjAwLCJmbXQiOiIyMDI1LTA4LTI4
In19LHsibWF4QWdlIjoxLCJuYW1lIjoiTE9aQU5PIE1PTklDQSBDLiIsInJlbGF0aW9uIjoiRGly
ZWN0b3IiLCJ1cmwiOiIiLCJ0cmFuc2FjdGlvbkRlc2NyaXB0aW9uIjoiQ29udmVyc2lvbiBvZiBF
eGVyY2lzZSBvZiBkZXJpdmF0aXZlIHNlY3VyaXR5IiwibGF0ZXN0VHJhbnNEYXRlIjp7InJhdyI6
MTczODI4MTYwMCwiZm10IjoiMjAyNS0wMS0zMSJ9LCJwb3NpdGlvbkRpcmVjdCI6eyJyYXciOjg2
MDcsImZtdCI6IjguNjFrIiwibG9uZ0ZtdCI6IjgsNjA3In0sInBvc2l0aW9uRGlyZWN0RGF0ZSI6
eyJyYXciOjE3MzgyODE2MDAsImZtdCI6IjIwMjUtMDEtMzEifX0seyJtYXhBZ2UiOjEsIm5hbWUi
OiJPJ0JSSUVOIERFSVJEUkUiLCJyZWxhdGlvbiI6Ik9mZmljZXIiLCJ1cmwiOiIiLCJ0cmFuc2Fj
dGlvbkRlc2NyaXB0aW9uIjoiU2FsZSIsImxhdGVzdFRyYW5zRGF0ZSI6eyJyYXciOjE3NTkzNjMy
MDAsImZtdCI6IjIwMjUtMTAtMDIifSwicG9zaXRpb25EaXJlY3QiOnsicmF3IjoxMzY2ODcsImZt
dCI6IjEzNi42OWsiLCJsb25nRm10IjoiMTM2LDY4NyJ9LCJwb3NpdGlvbkRpcmVjdERhdGUiOnsi
cmF3IjoxNzU5MzYzMjAwLCJmbXQiOiIyMDI1LTEwLTAyIn19LHsibWF4QWdlIjoxLCJuYW1lIjoi
UEFSRUtIIEtFVkFOIiwicmVsYXRpb24iOiJDaGllZiBGaW5hbmNpYWwgT2ZmaWNlciIsInVybCI6
IiIsInRyYW5zYWN0aW9uRGVzY3JpcHRpb24iOiJTYWxlIiwibGF0ZXN0VHJhbnNEYXRlIjp7InJh
dyI6MTc2MDU3MjgwMCwiZm10IjoiMjAyNS0xMC0xNiJ9LCJwb3NpdGlvbkRpcmVjdCI6eyJyYXci
Ojg3NjUsImZtdCI6IjguNzdrIiwibG9uZ0ZtdCI6IjgsNzY1In0sInBvc2l0aW9uRGlyZWN0RGF0
ZSI6eyJyYXciOjE3NjA1NzI4MDAsImZtdCI6IjIwMjUtMTAtMTYifX0seyJtYXhBZ2UiOjEsIm5h
bWUiOiJXQUdORVIgU1VTQU4gTCIsInJlbGF0aW9uIjoiRGlyZWN0b3IiLCJ1cmwiOiIiLCJ0cmFu
c2FjdGlvbkRlc2NyaXB0aW9uIjoiQ29udmVyc2lvbiBvZiBFeGVyY2lzZSBvZiBkZXJpdmF0aXZl
IHNlY3VyaXR5IiwibGF0ZXN0VHJhbnNEYXRlIjp7InJhdyI6MTczODI4MTYwMCwiZm10IjoiMjAy
NS0wMS0zMSJ9LCJwb3NpdGlvbkRpcmVjdCI6eyJyYXciOjY4NTMzLCJmbXQiOiI2OC41M2siLCJs
b25nRm10IjoiNjgsNTMzIn0sInBvc2l0aW9uRGlyZWN0RGF0ZSI6eyJyYXciOjE3MzgyODE2MDAs
ImZtdCI6IjIwMjUtMDEtMzEifX0seyJtYXhBZ2UiOjEsIm5hbWUiOiJXSUxMSUFNUyBKRUZGUkVZ
IEUiLCJyZWxhdGlvbiI6IkNoaWVmIE9wZXJhdGluZyBPZmZpY2VyIiwidXJsIjoiIiwidHJhbnNh
Y3Rpb25EZXNjcmlwdGlvbiI6IlNhbGUiLCJsYXRlc3RUcmFuc0RhdGUiOnsicmF3IjoxNzQzNTUy
MDAwLCJmbXQiOiIyMDI1LTA0LTAyIn0sInBvc2l0aW9uRGlyZWN0Ijp7InJhdyI6MzkwMDU5LCJm
bXQiOiIzOTAuMDZrIiwibG9uZ0ZtdCI6IjM5MCwwNTkifSwicG9zaXRpb25EaXJlY3REYXRlIjp7
InJhdyI6MTc0MzU1MjAwMCwiZm10IjoiMjAyNS0wNC0wMiJ9fV0sIm1heEFnZSI6MX0sIm1ham9y
RGlyZWN0SG9sZGVycyI6eyJob2xkZXJzIjpbXSwibWF4QWdlIjoxfSwibmV0U2hhcmVQdXJjaGFz
ZUFjdGl2aXR5Ijp7Im1heEFnZSI6MSwicGVyaW9kIjoiNm0iLCJidXlJbmZvQ291bnQiOjgsImJ1
eUluZm9TaGFyZXMiOjU4MjQyOCwiYnV5UGVyY2VudEluc2lkZXJTaGFyZXMiOjAuMDAyLCJzZWxs
SW5mb0NvdW50Ijo3LCJzZWxsSW5mb1NoYXJlcyI6MzUyODczLCJzZWxsUGVyY2VudEluc2lkZXJT
aGFyZXMiOjAuMDAxLCJuZXRJbmZvQ291bnQiOjE1LCJuZXRJbmZvU2hhcmVzIjoyMjk1NTUsIm5l
dFBlcmNlbnRJbnNpZGVyU2hhcmVzIjowLjAwMSwidG90YWxJbnNpZGVyU2hhcmVzIjoyNTA3NTQ3
MjB9LCJpbnNpZGVyVHJhbnNhY3Rpb25zIjp7InRyYW5zYWN0aW9ucyI6W3sibWF4QWdlIjoxLCJz
aGFyZXMiOnsicmF3IjozNzUwLCJmbXQiOiIzLjc1ayIsImxvbmdGbXQiOiIzLDc1MCJ9LCJ2YWx1
ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwiZmlsZXJVcmwiOiIiLCJ0cmFu
c2FjdGlvblRleHQiOiJTdG9jayBHaWZ0IGF0IHByaWNlIDAuMDAgcGVyIHNoYXJlLiIsImZpbGVy
TmFtZSI6IkFEQU1TIEtBVEhFUklORSBMIiwiZmlsZXJSZWxhdGlvbiI6IkdlbmVyYWwgQ291bnNl
bCIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3NjI5MDU2MDAsImZtdCI6IjIw
MjUtMTEtMTIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3Ijoz
NzUyLCJmbXQiOiIzLjc1ayIsImxvbmdGbXQiOiIzLDc1MiJ9LCJ2YWx1ZSI6eyJyYXciOjEwMTc2
NTUsImZtdCI6IjEuMDJNIiwibG9uZ0ZtdCI6IjEsMDE3LDY1NSJ9LCJmaWxlclVybCI6IiIsInRy
YW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjcxLjIzIHBlciBzaGFyZS4iLCJmaWxlck5h
bWUiOiJLT05ETyBDSFJJU1RPUEhFUiIsImZpbGVyUmVsYXRpb24iOiJPZmZpY2VyIiwibW9uZXlU
ZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc2MjQ3MzYwMCwiZm10IjoiMjAyNS0xMS0wNyJ9
LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjQxOTksImZtdCI6
IjQuMmsiLCJsb25nRm10IjoiNCwxOTkifSwidmFsdWUiOnsicmF3IjoxMDM4Nzg3LCJmbXQiOiIx
LjA0TSIsImxvbmdGbXQiOiIxLDAzOCw3ODcifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRl
eHQiOiJTYWxlIGF0IHByaWNlIDI0NS44OSAtIDI0OC43MyBwZXIgc2hhcmUuIiwiZmlsZXJOYW1l
IjoiUEFSRUtIIEtFVkFOIiwiZmlsZXJSZWxhdGlvbiI6IkNoaWVmIEZpbmFuY2lhbCBPZmZpY2Vy
IiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc2MDU3MjgwMCwiZm10IjoiMjAy
NS0xMC0xNiJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjE2
NDU3LCJmbXQiOiIxNi40NmsiLCJsb25nRm10IjoiMTYsNDU3In0sImZpbGVyVXJsIjoiIiwidHJh
bnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiUEFSRUtIIEtFVkFOIiwiZmlsZXJSZWxhdGlv
biI6IkNoaWVmIEZpbmFuY2lhbCBPZmZpY2VyIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7
InJhdyI6MTc2MDQ4NjQwMCwiZm10IjoiMjAyNS0xMC0xNSJ9LCJvd25lcnNoaXAiOiJEIn0seyJt
YXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjczNzEsImZtdCI6IjcuMzdrIiwibG9uZ0ZtdCI6Ijcs
MzcxIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiS09O
RE8gQ0hSSVNUT1BIRVIiLCJmaWxlclJlbGF0aW9uIjoiT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIs
InN0YXJ0RGF0ZSI6eyJyYXciOjE3NjA0ODY0MDAsImZtdCI6IjIwMjUtMTAtMTUifSwib3duZXJz
aGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxMjk5NjMsImZtdCI6IjEyOS45
NmsiLCJsb25nRm10IjoiMTI5LDk2MyJ9LCJ2YWx1ZSI6eyJyYXciOjMzMzc1NzIzLCJmbXQiOiIz
My4zOE0iLCJsb25nRm10IjoiMzMsMzc1LDcyMyJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9u
VGV4dCI6IlNhbGUgYXQgcHJpY2UgMjU0LjgzIC0gMjU3LjU3IHBlciBzaGFyZS4iLCJmaWxlck5h
bWUiOiJDT09LIFRJTU9USFkgRCIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBFeGVjdXRpdmUgT2Zm
aWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3NTkzNjMyMDAsImZtdCI6
IjIwMjUtMTAtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3
Ijo0NzEyNSwiZm10IjoiNDcuMTJrIiwibG9uZ0ZtdCI6IjQ3LDEyNSJ9LCJ2YWx1ZSI6eyJyYXci
OjEyMTAxMTU0LCJmbXQiOiIxMi4xTSIsImxvbmdGbXQiOiIxMiwxMDEsMTU0In0sImZpbGVyVXJs
IjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiU2FsZSBhdCBwcmljZSAyNTQuODMgLSAyNTcuNTQgcGVy
IHNoYXJlLiIsImZpbGVyTmFtZSI6IkFEQU1TIEtBVEhFUklORSBMIiwiZmlsZXJSZWxhdGlvbiI6
IkdlbmVyYWwgQ291bnNlbCIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3NTkz
NjMyMDAsImZtdCI6IjIwMjUtMTAtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJz
aGFyZXMiOnsicmF3Ijo0MzAxMywiZm10IjoiNDMuMDFrIiwibG9uZ0ZtdCI6IjQzLDAxMyJ9LCJ2
YWx1ZSI6eyJyYXciOjExMDcxMDc4LCJmbXQiOiIxMS4wN00iLCJsb25nRm10IjoiMTEsMDcxLDA3
OCJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjU3LjM2
IC0gMjU4LjA4IHBlciBzaGFyZS4iLCJmaWxlck5hbWUiOiJPJ0JSSUVOIERFSVJEUkUiLCJmaWxl
clJlbGF0aW9uIjoiT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3
NTkzNjMyMDAsImZtdCI6IjIwMjUtMTAtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjox
LCJzaGFyZXMiOnsicmF3IjoyNzcyMDYsImZtdCI6IjI3Ny4yMWsiLCJsb25nRm10IjoiMjc3LDIw
NiJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IkNPT0sg
VElNT1RIWSBEIiwiZmlsZXJSZWxhdGlvbiI6IkNoaWVmIEV4ZWN1dGl2ZSBPZmZpY2VyIiwibW9u
ZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc1OTI3NjgwMCwiZm10IjoiMjAyNS0xMC0w
MSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjkyNDAzLCJm
bXQiOiI5Mi40ayIsImxvbmdGbXQiOiI5Miw0MDMifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlv
blRleHQiOiIiLCJmaWxlck5hbWUiOiJBREFNUyBLQVRIRVJJTkUgTCIsImZpbGVyUmVsYXRpb24i
OiJHZW5lcmFsIENvdW5zZWwiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzU5
Mjc2ODAwLCJmbXQiOiIyMDI1LTEwLTAxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwi
c2hhcmVzIjp7InJhdyI6OTI0MDMsImZtdCI6IjkyLjRrIiwibG9uZ0ZtdCI6IjkyLDQwMyJ9LCJm
aWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IktIQU4gU0FCSUgi
LCJmaWxlclJlbGF0aW9uIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJtb25leVRleHQiOiIi
LCJzdGFydERhdGUiOnsicmF3IjoxNzU5Mjc2ODAwLCJmbXQiOiIyMDI1LTEwLTAxIn0sIm93bmVy
c2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6OTI0MDMsImZtdCI6IjkyLjRr
IiwibG9uZ0ZtdCI6IjkyLDQwMyJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIs
ImZpbGVyTmFtZSI6Ik8nQlJJRU4gREVJUkRSRSIsImZpbGVyUmVsYXRpb24iOiJPZmZpY2VyIiwi
bW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc1OTI3NjgwMCwiZm10IjoiMjAyNS0x
MC0wMSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjkwMDAw
LCJmbXQiOiI5MGsiLCJsb25nRm10IjoiOTAsMDAwIn0sInZhbHVlIjp7InJhdyI6MjA4ODYzMDAs
ImZtdCI6IjIwLjg5TSIsImxvbmdGbXQiOiIyMCw4ODYsMzAwIn0sImZpbGVyVXJsIjoiIiwidHJh
bnNhY3Rpb25UZXh0IjoiU2FsZSBhdCBwcmljZSAyMzIuMDcgcGVyIHNoYXJlLiIsImZpbGVyTmFt
ZSI6IkxFVklOU09OIEFSVEhVUiBEIiwiZmlsZXJSZWxhdGlvbiI6IkRpcmVjdG9yIiwibW9uZXlU
ZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc1NjMzOTIwMCwiZm10IjoiMjAyNS0wOC0yOCJ9
LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjQzNSwiZm10Ijoi
NDM1IiwibG9uZ0ZtdCI6IjQzNSJ9LCJ2YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0Zt
dCI6IjAifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTdG9jayBHaWZ0IGF0IHBy
aWNlIDAuMDAgcGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6IktPTkRPIENIUklTVE9QSEVSIiwiZmls
ZXJSZWxhdGlvbiI6Ik9mZmljZXIiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3Ijox
NzU2MDgwMDAwLCJmbXQiOiIyMDI1LTA4LTI1In0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6
MSwic2hhcmVzIjp7InJhdyI6MzQ4MjEsImZtdCI6IjM0LjgyayIsImxvbmdGbXQiOiIzNCw4MjEi
fSwidmFsdWUiOnsicmF3Ijo3NzcyMDQ3LCJmbXQiOiI3Ljc3TSIsImxvbmdGbXQiOiI3LDc3Miww
NDcifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTYWxlIGF0IHByaWNlIDIyMy4y
MCBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoiTydCUklFTiBERUlSRFJFIiwiZmlsZXJSZWxhdGlv
biI6Ik9mZmljZXIiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzU0NjExMjAw
LCJmbXQiOiIyMDI1LTA4LTA4In0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVz
Ijp7InJhdyI6NDQ4NiwiZm10IjoiNC40OWsiLCJsb25nRm10IjoiNCw0ODYifSwidmFsdWUiOnsi
cmF3Ijo5MzM5NTUsImZtdCI6IjkzMy45NmsiLCJsb25nRm10IjoiOTMzLDk1NSJ9LCJmaWxlclVy
bCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjA4LjE5IHBlciBzaGFyZS4i
LCJmaWxlck5hbWUiOiJLT05ETyBDSFJJU1RPUEhFUiIsImZpbGVyUmVsYXRpb24iOiJPZmZpY2Vy
IiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc0NzAwODAwMCwiZm10IjoiMjAy
NS0wNS0xMiJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjQ1
NzAsImZtdCI6IjQuNTdrIiwibG9uZ0ZtdCI6IjQsNTcwIn0sInZhbHVlIjp7InJhdyI6OTQxNDIw
LCJmbXQiOiI5NDEuNDJrIiwibG9uZ0ZtdCI6Ijk0MSw0MjAifSwiZmlsZXJVcmwiOiIiLCJ0cmFu
c2FjdGlvblRleHQiOiJTYWxlIGF0IHByaWNlIDIwNi4wMCBwZXIgc2hhcmUuIiwiZmlsZXJOYW1l
IjoiUEFSRUtIIEtFVkFOIiwiZmlsZXJSZWxhdGlvbiI6IkNoaWVmIEZpbmFuY2lhbCBPZmZpY2Vy
IiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTc0NTM2NjQwMCwiZm10IjoiMjAy
NS0wNC0yMyJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjE2
NDU4LCJmbXQiOiIxNi40NmsiLCJsb25nRm10IjoiMTYsNDU4In0sImZpbGVyVXJsIjoiIiwidHJh
bnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiUEFSRUtIIEtFVkFOIiwiZmlsZXJSZWxhdGlv
biI6IkNoaWVmIEZpbmFuY2lhbCBPZmZpY2VyIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7
InJhdyI6MTc0NDY3NTIwMCwiZm10IjoiMjAyNS0wNC0xNSJ9LCJvd25lcnNoaXAiOiJEIn0seyJt
YXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjczNzMsImZtdCI6IjcuMzdrIiwibG9uZ0ZtdCI6Ijcs
MzczIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiS09O
RE8gQ0hSSVNUT1BIRVIiLCJmaWxlclJlbGF0aW9uIjoiT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIs
InN0YXJ0RGF0ZSI6eyJyYXciOjE3NDQ2NzUyMDAsImZtdCI6IjIwMjUtMDQtMTUifSwib3duZXJz
aGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxMDgxMzYsImZtdCI6IjEwOC4x
NGsiLCJsb25nRm10IjoiMTA4LDEzNiJ9LCJ2YWx1ZSI6eyJyYXciOjI0MTg0NjU4LCJmbXQiOiIy
NC4xOE0iLCJsb25nRm10IjoiMjQsMTg0LDY1OCJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9u
VGV4dCI6IlNhbGUgYXQgcHJpY2UgMjIxLjc3IC0gMjI0Ljc2IHBlciBzaGFyZS4iLCJmaWxlck5h
bWUiOiJDT09LIFRJTU9USFkgRCIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBFeGVjdXRpdmUgT2Zm
aWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3NDM1NTIwMDAsImZtdCI6
IjIwMjUtMDQtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3
IjozODgyMiwiZm10IjoiMzguODJrIiwibG9uZ0ZtdCI6IjM4LDgyMiJ9LCJ2YWx1ZSI6eyJyYXci
Ojg2ODMyNTIsImZtdCI6IjguNjhNIiwibG9uZ0ZtdCI6IjgsNjgzLDI1MiJ9LCJmaWxlclVybCI6
IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjIxLjY4IC0gMjI0LjYyIHBlciBz
aGFyZS4iLCJmaWxlck5hbWUiOiJBREFNUyBLQVRIRVJJTkUgTCIsImZpbGVyUmVsYXRpb24iOiJH
ZW5lcmFsIENvdW5zZWwiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzQzNTUy
MDAwLCJmbXQiOiIyMDI1LTA0LTAyIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hh
cmVzIjp7InJhdyI6MzU0OTMsImZtdCI6IjM1LjQ5ayIsImxvbmdGbXQiOiIzNSw0OTMifSwidmFs
dWUiOnsicmF3Ijo3OTUwNjkxLCJmbXQiOiI3Ljk1TSIsImxvbmdGbXQiOiI3LDk1MCw2OTEifSwi
ZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTYWxlIGF0IHByaWNlIDIyMy40OCAtIDIy
NS4wMyBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoiV0lMTElBTVMgSkVGRlJFWSBFIiwiZmlsZXJS
ZWxhdGlvbiI6IkNoaWVmIE9wZXJhdGluZyBPZmZpY2VyIiwibW9uZXlUZXh0IjoiIiwic3RhcnRE
YXRlIjp7InJhdyI6MTc0MzU1MjAwMCwiZm10IjoiMjAyNS0wNC0wMiJ9LCJvd25lcnNoaXAiOiJE
In0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjIxODU2OCwiZm10IjoiMjE4LjU3ayIsImxv
bmdGbXQiOiIyMTgsNTY4In0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmls
ZXJOYW1lIjoiQ09PSyBUSU1PVEhZIEQiLCJmaWxlclJlbGF0aW9uIjoiQ2hpZWYgRXhlY3V0aXZl
IE9mZmljZXIiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzQzNDY1NjAwLCJm
bXQiOiIyMDI1LTA0LTAxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7
InJhdyI6NzQ1MzUsImZtdCI6Ijc0LjUzayIsImxvbmdGbXQiOiI3NCw1MzUifSwiZmlsZXJVcmwi
OiIiLCJ0cmFuc2FjdGlvblRleHQiOiIiLCJmaWxlck5hbWUiOiJXSUxMSUFNUyBKRUZGUkVZIEUi
LCJmaWxlclJlbGF0aW9uIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJtb25leVRleHQiOiIi
LCJzdGFydERhdGUiOnsicmF3IjoxNzQzNDY1NjAwLCJmbXQiOiIyMDI1LTA0LTAxIn0sIm93bmVy
c2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6NzQ1MzUsImZtdCI6Ijc0LjUz
ayIsImxvbmdGbXQiOiI3NCw1MzUifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiIi
LCJmaWxlck5hbWUiOiJBREFNUyBLQVRIRVJJTkUgTCIsImZpbGVyUmVsYXRpb24iOiJHZW5lcmFs
IENvdW5zZWwiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzQzNDY1NjAwLCJm
bXQiOiIyMDI1LTA0LTAxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7
InJhdyI6NzQ1MzUsImZtdCI6Ijc0LjUzayIsImxvbmdGbXQiOiI3NCw1MzUifSwiZmlsZXJVcmwi
OiIiLCJ0cmFuc2FjdGlvblRleHQiOiIiLCJmaWxlck5hbWUiOiJPJ0JSSUVOIERFSVJEUkUiLCJm
aWxlclJlbGF0aW9uIjoiT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXci
OjE3NDM0NjU2MDAsImZtdCI6IjIwMjUtMDQtMDEifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdl
IjoxLCJzaGFyZXMiOnsicmF3IjoxNTE2LCJmbXQiOiIxLjUyayIsImxvbmdGbXQiOiIxLDUxNiJ9
LCJ2YWx1ZSI6eyJyYXciOjM0MzE0NywiZm10IjoiMzQzLjE1ayIsImxvbmdGbXQiOiIzNDMsMTQ3
In0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiU2FsZSBhdCBwcmljZSAyMjYuMzUg
cGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6IkxFVklOU09OIEFSVEhVUiBEIiwiZmlsZXJSZWxhdGlv
biI6IkRpcmVjdG9yIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTczODU0MDgw
MCwiZm10IjoiMjAyNS0wMi0wMyJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJl
cyI6eyJyYXciOjE1MTYsImZtdCI6IjEuNTJrIiwibG9uZ0ZtdCI6IjEsNTE2In0sImZpbGVyVXJs
IjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiTE9aQU5PIE1PTklDQSBDLiIs
ImZpbGVyUmVsYXRpb24iOiJEaXJlY3RvciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJy
YXciOjE3MzgyODE2MDAsImZtdCI6IjIwMjUtMDEtMzEifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4
QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxNTE2LCJmbXQiOiIxLjUyayIsImxvbmdGbXQiOiIxLDUx
NiJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IldBR05F
UiBTVVNBTiBMIiwiZmlsZXJSZWxhdGlvbiI6IkRpcmVjdG9yIiwibW9uZXlUZXh0IjoiIiwic3Rh
cnREYXRlIjp7InJhdyI6MTczODI4MTYwMCwiZm10IjoiMjAyNS0wMS0zMSJ9LCJvd25lcnNoaXAi
OiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjE1MTYsImZtdCI6IjEuNTJrIiwibG9u
Z0ZtdCI6IjEsNTE2In0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJO
YW1lIjoiSlVORyBBTkRSRUEiLCJmaWxlclJlbGF0aW9uIjoiRGlyZWN0b3IiLCJtb25leVRleHQi
OiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzM4MjgxNjAwLCJmbXQiOiIyMDI1LTAxLTMxIn0sIm93
bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6MTUxNiwiZm10IjoiMS41
MmsiLCJsb25nRm10IjoiMSw1MTYifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiIi
LCJmaWxlck5hbWUiOiJTVUdBUiBST05BTEQgRCIsImZpbGVyUmVsYXRpb24iOiJEaXJlY3RvciIs
Im1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MzgyODE2MDAsImZtdCI6IjIwMjUt
MDEtMzEifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxNTE2
LCJmbXQiOiIxLjUyayIsImxvbmdGbXQiOiIxLDUxNiJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0
aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IkxFVklOU09OIEFSVEhVUiBEIiwiZmlsZXJSZWxhdGlv
biI6IkRpcmVjdG9yIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTczODI4MTYw
MCwiZm10IjoiMjAyNS0wMS0zMSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJl
cyI6eyJyYXciOjE1MTYsImZtdCI6IjEuNTJrIiwibG9uZ0ZtdCI6IjEsNTE2In0sImZpbGVyVXJs
IjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiR09SU0tZIEFMRVgiLCJmaWxl
clJlbGF0aW9uIjoiRGlyZWN0b3IiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3Ijox
NzM4MjgxNjAwLCJmbXQiOiIyMDI1LTAxLTMxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6
MSwic2hhcmVzIjp7InJhdyI6MTUxNiwiZm10IjoiMS41MmsiLCJsb25nRm10IjoiMSw1MTYifSwi
ZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiIiLCJmaWxlck5hbWUiOiJBVVNUSU4gV0FO
REEgTSIsImZpbGVyUmVsYXRpb24iOiJEaXJlY3RvciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0
ZSI6eyJyYXciOjE3MzgyODE2MDAsImZtdCI6IjIwMjUtMDEtMzEifSwib3duZXJzaGlwIjoiRCJ9
LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxMDAwMDAsImZtdCI6IjEwMGsiLCJsb25nRm10
IjoiMTAwLDAwMCJ9LCJ2YWx1ZSI6eyJyYXciOjI0OTk3Mzk1LCJmbXQiOiIyNU0iLCJsb25nRm10
IjoiMjQsOTk3LDM5NSJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQg
cHJpY2UgMjQ4LjYxIC0gMjUxLjEwIHBlciBzaGFyZS4iLCJmaWxlck5hbWUiOiJXSUxMSUFNUyBK
RUZGUkVZIEUiLCJmaWxlclJlbGF0aW9uIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJtb25l
eVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzM0MzA3MjAwLCJmbXQiOiIyMDI0LTEyLTE2
In0sIm93bmVyc2hpcCI6IkkifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6MjAwMDAwLCJm
bXQiOiIyMDBrIiwibG9uZ0ZtdCI6IjIwMCwwMDAifSwidmFsdWUiOnsicmF3Ijo0NTQ2NDUwMCwi
Zm10IjoiNDUuNDZNIiwibG9uZ0ZtdCI6IjQ1LDQ2NCw1MDAifSwiZmlsZXJVcmwiOiIiLCJ0cmFu
c2FjdGlvblRleHQiOiJTYWxlIGF0IHByaWNlIDIyNC42OCAtIDIyOS4yOCBwZXIgc2hhcmUuIiwi
ZmlsZXJOYW1lIjoiTEVWSU5TT04gQVJUSFVSIEQiLCJmaWxlclJlbGF0aW9uIjoiRGlyZWN0b3Ii
LCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzMxOTc0NDAwLCJmbXQiOiIyMDI0
LTExLTE5In0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6NDEz
MCwiZm10IjoiNC4xM2siLCJsb25nRm10IjoiNCwxMzAifSwidmFsdWUiOnsicmF3Ijo5NDUyMzMs
ImZtdCI6Ijk0NS4yM2siLCJsb25nRm10IjoiOTQ1LDIzMyJ9LCJmaWxlclVybCI6IiIsInRyYW5z
YWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjI4Ljg3IHBlciBzaGFyZS4iLCJmaWxlck5hbWUi
OiJLT05ETyBDSFJJU1RPUEhFUiIsImZpbGVyUmVsYXRpb24iOiJPZmZpY2VyIiwibW9uZXlUZXh0
IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTczMTg4ODAwMCwiZm10IjoiMjAyNC0xMS0xOCJ9LCJv
d25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjgwMDAsImZtdCI6Ijhr
IiwibG9uZ0ZtdCI6IjgsMDAwIn0sInZhbHVlIjp7InJhdyI6MCwiZm10IjpudWxsLCJsb25nRm10
IjoiMCJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IlN0b2NrIEdpZnQgYXQgcHJp
Y2UgMC4wMCBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoiQURBTVMgS0FUSEVSSU5FIEwiLCJmaWxl
clJlbGF0aW9uIjoiR2VuZXJhbCBDb3Vuc2VsIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7
InJhdyI6MTczMDc2NDgwMCwiZm10IjoiMjAyNC0xMS0wNSJ9LCJvd25lcnNoaXAiOiJEIn0seyJt
YXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjgxMTUsImZtdCI6IjguMTJrIiwibG9uZ0ZtdCI6Ijgs
MTE1In0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiS09O
RE8gQ0hSSVNUT1BIRVIiLCJmaWxlclJlbGF0aW9uIjoiT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIs
InN0YXJ0RGF0ZSI6eyJyYXciOjE3Mjg5NTA0MDAsImZtdCI6IjIwMjQtMTAtMTUifSwib3duZXJz
aGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3Ijo1OTMwNSwiZm10IjoiNTkuM2si
LCJsb25nRm10IjoiNTksMzA1In0sInZhbHVlIjp7InJhdyI6MTM0MzM3NjksImZtdCI6IjEzLjQz
TSIsImxvbmdGbXQiOiIxMyw0MzMsNzY5In0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0
IjoiU2FsZSBhdCBwcmljZSAyMjYuNTIgcGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6Ik1BRVNUUkkg
TFVDQSIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBGaW5hbmNpYWwgT2ZmaWNlciIsIm1vbmV5VGV4
dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MjgwMDAwMDAsImZtdCI6IjIwMjQtMTAtMDQifSwi
b3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoyMjM5ODYsImZtdCI6
IjIyMy45OWsiLCJsb25nRm10IjoiMjIzLDk4NiJ9LCJ2YWx1ZSI6eyJyYXciOjUwMjc2MzU1LCJm
bXQiOiI1MC4yOE0iLCJsb25nRm10IjoiNTAsMjc2LDM1NSJ9LCJmaWxlclVybCI6IiIsInRyYW5z
YWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjIzLjc1IC0gMjI2LjU3IHBlciBzaGFyZS4iLCJm
aWxlck5hbWUiOiJDT09LIFRJTU9USFkgRCIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBFeGVjdXRp
dmUgT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3Mjc4MjcyMDAs
ImZtdCI6IjIwMjQtMTAtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMi
OnsicmF3Ijo2MTAxOSwiZm10IjoiNjEuMDJrIiwibG9uZ0ZtdCI6IjYxLDAxOSJ9LCJ2YWx1ZSI6
eyJyYXciOjEzODAyMjk3LCJmbXQiOiIxMy44TSIsImxvbmdGbXQiOiIxMyw4MDIsMjk3In0sImZp
bGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiU2FsZSBhdCBwcmljZSAyMjMuNzkgLSAyMjcu
MjQgcGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6IkFEQU1TIEtBVEhFUklORSBMIiwiZmlsZXJSZWxh
dGlvbiI6IkdlbmVyYWwgQ291bnNlbCIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXci
OjE3Mjc4MjcyMDAsImZtdCI6IjIwMjQtMTAtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdl
IjoxLCJzaGFyZXMiOnsicmF3Ijo1OTczMCwiZm10IjoiNTkuNzNrIiwibG9uZ0ZtdCI6IjU5LDcz
MCJ9LCJ2YWx1ZSI6eyJyYXciOjEzNTUwMTQ4LCJmbXQiOiIxMy41NU0iLCJsb25nRm10IjoiMTMs
NTUwLDE0OCJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2Ug
MjI2LjgwIC0gMjI3LjIyIHBlciBzaGFyZS4iLCJmaWxlck5hbWUiOiJXSUxMSUFNUyBKRUZGUkVZ
IEUiLCJmaWxlclJlbGF0aW9uIjoiQ2hpZWYgT3BlcmF0aW5nIE9mZmljZXIiLCJtb25leVRleHQi
OiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzI3ODI3MjAwLCJmbXQiOiIyMDI0LTEwLTAyIn0sIm93
bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6NjEwMTksImZtdCI6IjYx
LjAyayIsImxvbmdGbXQiOiI2MSwwMTkifSwidmFsdWUiOnsicmF3IjoxMzg0MzM4MiwiZm10Ijoi
MTMuODRNIiwibG9uZ0ZtdCI6IjEzLDg0MywzODIifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlv
blRleHQiOiJTYWxlIGF0IHByaWNlIDIyNi43MiAtIDIyNy4xMyBwZXIgc2hhcmUuIiwiZmlsZXJO
YW1lIjoiTydCUklFTiBERUlSRFJFIiwiZmlsZXJSZWxhdGlvbiI6Ik9mZmljZXIiLCJtb25leVRl
eHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzI3ODI3MjAwLCJmbXQiOiIyMDI0LTEwLTAyIn0s
Im93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6NDc3MzAxLCJmbXQi
OiI0NzcuM2siLCJsb25nRm10IjoiNDc3LDMwMSJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9u
VGV4dCI6IiIsImZpbGVyTmFtZSI6IkNPT0sgVElNT1RIWSBEIiwiZmlsZXJSZWxhdGlvbiI6IkNo
aWVmIEV4ZWN1dGl2ZSBPZmZpY2VyIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6
MTcyNzc0MDgwMCwiZm10IjoiMjAyNC0xMC0wMSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2Ui
OjEsInNoYXJlcyI6eyJyYXciOjEyNzI4MiwiZm10IjoiMTI3LjI4ayIsImxvbmdGbXQiOiIxMjcs
MjgyIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiTUFF
U1RSSSBMVUNBIiwiZmlsZXJSZWxhdGlvbiI6IkNoaWVmIEZpbmFuY2lhbCBPZmZpY2VyIiwibW9u
ZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcyNzc0MDgwMCwiZm10IjoiMjAyNC0xMC0w
MSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjEyNzI4Miwi
Zm10IjoiMTI3LjI4ayIsImxvbmdGbXQiOiIxMjcsMjgyIn0sImZpbGVyVXJsIjoiIiwidHJhbnNh
Y3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiV0lMTElBTVMgSkVGRlJFWSBFIiwiZmlsZXJSZWxh
dGlvbiI6IkNoaWVmIE9wZXJhdGluZyBPZmZpY2VyIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRl
Ijp7InJhdyI6MTcyNzc0MDgwMCwiZm10IjoiMjAyNC0xMC0wMSJ9LCJvd25lcnNoaXAiOiJEIn0s
eyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjEyNzI4MiwiZm10IjoiMTI3LjI4ayIsImxvbmdG
bXQiOiIxMjcsMjgyIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJO
YW1lIjoiQURBTVMgS0FUSEVSSU5FIEwiLCJmaWxlclJlbGF0aW9uIjoiR2VuZXJhbCBDb3Vuc2Vs
IiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcyNzc0MDgwMCwiZm10IjoiMjAy
NC0xMC0wMSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjEy
NzI4MiwiZm10IjoiMTI3LjI4ayIsImxvbmdGbXQiOiIxMjcsMjgyIn0sImZpbGVyVXJsIjoiIiwi
dHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiTydCUklFTiBERUlSRFJFIiwiZmlsZXJS
ZWxhdGlvbiI6Ik9mZmljZXIiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzI3
NzQwODAwLCJmbXQiOiIyMDI0LTEwLTAxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwi
c2hhcmVzIjp7InJhdyI6ODcwNiwiZm10IjoiOC43MWsiLCJsb25nRm10IjoiOCw3MDYifSwidmFs
dWUiOnsicmF3IjoxOTU4ODUwLCJmbXQiOiIxLjk2TSIsImxvbmdGbXQiOiIxLDk1OCw4NTAifSwi
ZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTYWxlIGF0IHByaWNlIDIyNS4wMCBwZXIg
c2hhcmUuIiwiZmlsZXJOYW1lIjoiS09ORE8gQ0hSSVNUT1BIRVIiLCJmaWxlclJlbGF0aW9uIjoi
T2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MjM2ODAwMDAsImZt
dCI6IjIwMjQtMDgtMTUifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsi
cmF3Ijo1MTc4LCJmbXQiOiI1LjE4ayIsImxvbmdGbXQiOiI1LDE3OCJ9LCJ2YWx1ZSI6eyJyYXci
OjExMjEwMzcsImZtdCI6IjEuMTJNIiwibG9uZ0ZtdCI6IjEsMTIxLDAzNyJ9LCJmaWxlclVybCI6
IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMjE2LjUwIHBlciBzaGFyZS4iLCJm
aWxlck5hbWUiOiJLT05ETyBDSFJJU1RPUEhFUiIsImZpbGVyUmVsYXRpb24iOiJPZmZpY2VyIiwi
bW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcyMzE2MTYwMCwiZm10IjoiMjAyNC0w
OC0wOSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjQ1MDAs
ImZtdCI6IjQuNWsiLCJsb25nRm10IjoiNCw1MDAifSwidmFsdWUiOnsicmF3IjowLCJmbXQiOm51
bGwsImxvbmdGbXQiOiIwIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiU3RvY2sg
R2lmdCBhdCBwcmljZSAwLjAwIHBlciBzaGFyZS4iLCJmaWxlck5hbWUiOiJBREFNUyBLQVRIRVJJ
TkUgTCIsImZpbGVyUmVsYXRpb24iOiJHZW5lcmFsIENvdW5zZWwiLCJtb25leVRleHQiOiIiLCJz
dGFydERhdGUiOnsicmF3IjoxNzIyOTg4ODAwLCJmbXQiOiIyMDI0LTA4LTA3In0sIm93bmVyc2hp
cCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6MTAwMDAwLCJmbXQiOiIxMDBrIiwi
bG9uZ0ZtdCI6IjEwMCwwMDAifSwidmFsdWUiOnsicmF3IjoyMDY0MzUxMiwiZm10IjoiMjAuNjRN
IiwibG9uZ0ZtdCI6IjIwLDY0Myw1MTIifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQi
OiJTYWxlIGF0IHByaWNlIDIwNi40MiAtIDIwNy4wNSBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoi
QURBTVMgS0FUSEVSSU5FIEwiLCJmaWxlclJlbGF0aW9uIjoiR2VuZXJhbCBDb3Vuc2VsIiwibW9u
ZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcyMjgxNjAwMCwiZm10IjoiMjAyNC0wOC0w
NSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjc1MDAwLCJm
bXQiOiI3NWsiLCJsb25nRm10IjoiNzUsMDAwIn0sInZhbHVlIjp7InJhdyI6MTQzNjg1MDAsImZt
dCI6IjE0LjM3TSIsImxvbmdGbXQiOiIxNCwzNjgsNTAwIn0sImZpbGVyVXJsIjoiIiwidHJhbnNh
Y3Rpb25UZXh0IjoiU2FsZSBhdCBwcmljZSAxOTEuNTggcGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6
IkxFVklOU09OIEFSVEhVUiBEIiwiZmlsZXJSZWxhdGlvbiI6IkRpcmVjdG9yIiwibW9uZXlUZXh0
IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcxNzAyNzIwMCwiZm10IjoiMjAyNC0wNS0zMCJ9LCJv
d25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjQ5OTksImZtdCI6IjVr
IiwibG9uZ0ZtdCI6IjQsOTk5In0sInZhbHVlIjp7InJhdyI6OTUxNzg1LCJmbXQiOiI5NTEuNzhr
IiwibG9uZ0ZtdCI6Ijk1MSw3ODUifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJT
YWxlIGF0IHByaWNlIDE5MC40MCBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoiS09ORE8gQ0hSSVNU
T1BIRVIiLCJmaWxlclJlbGF0aW9uIjoiT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0
ZSI6eyJyYXciOjE3MTU3MzEyMDAsImZtdCI6IjIwMjQtMDUtMTUifSwib3duZXJzaGlwIjoiRCJ9
LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxODUwLCJmbXQiOiIxLjg1ayIsImxvbmdGbXQi
OiIxLDg1MCJ9LCJ2YWx1ZSI6eyJyYXciOjAsImZtdCI6bnVsbCwibG9uZ0ZtdCI6IjAifSwiZmls
ZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTdG9jayBHaWZ0IGF0IHByaWNlIDAuMDAgcGVy
IHNoYXJlLiIsImZpbGVyTmFtZSI6IkFEQU1TIEtBVEhFUklORSBMIiwiZmlsZXJSZWxhdGlvbiI6
IkdlbmVyYWwgQ291bnNlbCIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MTUy
OTkyMDAsImZtdCI6IjIwMjQtMDUtMTAifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJz
aGFyZXMiOnsicmF3Ijo4MTE5LCJmbXQiOiI4LjEyayIsImxvbmdGbXQiOiI4LDExOSJ9LCJmaWxl
clVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IktPTkRPIENIUklTVE9Q
SEVSIiwiZmlsZXJSZWxhdGlvbiI6Ik9mZmljZXIiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUi
OnsicmF3IjoxNzEzMTM5MjAwLCJmbXQiOiIyMDI0LTA0LTE1In0sIm93bmVyc2hpcCI6IkQifSx7
Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6NTMxOTQsImZtdCI6IjUzLjE5ayIsImxvbmdGbXQi
OiI1MywxOTQifSwidmFsdWUiOnsicmF3Ijo5MjYxOTMzLCJmbXQiOiI5LjI2TSIsImxvbmdGbXQi
OiI5LDI2MSw5MzMifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTYWxlIGF0IHBy
aWNlIDE3My4xOSAtIDE3NS4wMiBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoiTUFFU1RSSSBMVUNB
IiwiZmlsZXJSZWxhdGlvbiI6IkNoaWVmIEZpbmFuY2lhbCBPZmZpY2VyIiwibW9uZXlUZXh0Ijoi
Iiwic3RhcnREYXRlIjp7InJhdyI6MTcxMjc5MzYwMCwiZm10IjoiMjAyNC0wNC0xMSJ9LCJvd25l
cnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjU5MTYyLCJmbXQiOiI1OS4x
NmsiLCJsb25nRm10IjoiNTksMTYyIn0sInZhbHVlIjp7InJhdyI6MTAxODg4ODAsImZtdCI6IjEw
LjE5TSIsImxvbmdGbXQiOiIxMCwxODgsODgwIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25U
ZXh0IjoiU2FsZSBhdCBwcmljZSAxNzIuMjIgcGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6IldJTExJ
QU1TIEpFRkZSRVkgRSIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBPcGVyYXRpbmcgT2ZmaWNlciIs
Im1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MTI3OTM2MDAsImZtdCI6IjIwMjQt
MDQtMTEifSwib3duZXJzaGlwIjoiSSJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxOTY0
MTAsImZtdCI6IjE5Ni40MWsiLCJsb25nRm10IjoiMTk2LDQxMCJ9LCJ2YWx1ZSI6eyJyYXciOjMz
MjU4NjE0LCJmbXQiOiIzMy4yNk0iLCJsb25nRm10IjoiMzMsMjU4LDYxNCJ9LCJmaWxlclVybCI6
IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMTY4LjYyIC0gMTcwLjAzIHBlciBz
aGFyZS4iLCJmaWxlck5hbWUiOiJDT09LIFRJTU9USFkgRCIsImZpbGVyUmVsYXRpb24iOiJDaGll
ZiBFeGVjdXRpdmUgT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3
MTIwMTYwMDAsImZtdCI6IjIwMjQtMDQtMDIifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjox
LCJzaGFyZXMiOnsicmF3Ijo1NDczMiwiZm10IjoiNTQuNzNrIiwibG9uZ0ZtdCI6IjU0LDczMiJ9
LCJ2YWx1ZSI6eyJyYXciOjkyNDQyMzUsImZtdCI6IjkuMjRNIiwibG9uZ0ZtdCI6IjksMjQ0LDIz
NSJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IlNhbGUgYXQgcHJpY2UgMTY4Ljkw
IHBlciBzaGFyZS4iLCJmaWxlck5hbWUiOiJBREFNUyBLQVRIRVJJTkUgTCIsImZpbGVyUmVsYXRp
b24iOiJHZW5lcmFsIENvdW5zZWwiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3Ijox
NzEyMDE2MDAwLCJmbXQiOiIyMDI0LTA0LTAyIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6
MSwic2hhcmVzIjp7InJhdyI6NTQ3MzIsImZtdCI6IjU0LjczayIsImxvbmdGbXQiOiI1NCw3MzIi
fSwidmFsdWUiOnsicmF3Ijo5MjQ0NzgyLCJmbXQiOiI5LjI0TSIsImxvbmdGbXQiOiI5LDI0NCw3
ODIifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiJTYWxlIGF0IHByaWNlIDE2OC45
MSBwZXIgc2hhcmUuIiwiZmlsZXJOYW1lIjoiTydCUklFTiBERUlSRFJFIiwiZmlsZXJSZWxhdGlv
biI6Ik9mZmljZXIiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzEyMDE2MDAw
LCJmbXQiOiIyMDI0LTA0LTAyIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVz
Ijp7InJhdyI6MTk2NDEwLCJmbXQiOiIxOTYuNDFrIiwibG9uZ0ZtdCI6IjE5Niw0MTAifSwiZmls
ZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiIiLCJmaWxlck5hbWUiOiJDT09LIFRJTU9USFkg
RCIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBFeGVjdXRpdmUgT2ZmaWNlciIsIm1vbmV5VGV4dCI6
IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MTE5Mjk2MDAsImZtdCI6IjIwMjQtMDQtMDEifSwib3du
ZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxMTMzMDksImZtdCI6IjEx
My4zMWsiLCJsb25nRm10IjoiMTEzLDMwOSJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4
dCI6IiIsImZpbGVyTmFtZSI6Ik1BRVNUUkkgTFVDQSIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBG
aW5hbmNpYWwgT2ZmaWNlciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MTE5
Mjk2MDAsImZtdCI6IjIwMjQtMDQtMDEifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJz
aGFyZXMiOnsicmF3IjoxMTMzMDksImZtdCI6IjExMy4zMWsiLCJsb25nRm10IjoiMTEzLDMwOSJ9
LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IldJTExJQU1T
IEpFRkZSRVkgRSIsImZpbGVyUmVsYXRpb24iOiJDaGllZiBPcGVyYXRpbmcgT2ZmaWNlciIsIm1v
bmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MTE5Mjk2MDAsImZtdCI6IjIwMjQtMDQt
MDEifSwib3duZXJzaGlwIjoiSSJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxMTMzMDks
ImZtdCI6IjExMy4zMWsiLCJsb25nRm10IjoiMTEzLDMwOSJ9LCJmaWxlclVybCI6IiIsInRyYW5z
YWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IkFEQU1TIEtBVEhFUklORSBMIiwiZmlsZXJSZWxh
dGlvbiI6IkdlbmVyYWwgQ291bnNlbCIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXci
OjE3MTE5Mjk2MDAsImZtdCI6IjIwMjQtMDQtMDEifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdl
IjoxLCJzaGFyZXMiOnsicmF3IjoxMTMzMDksImZtdCI6IjExMy4zMWsiLCJsb25nRm10IjoiMTEz
LDMwOSJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6Ik8n
QlJJRU4gREVJUkRSRSIsImZpbGVyUmVsYXRpb24iOiJPZmZpY2VyIiwibW9uZXlUZXh0IjoiIiwi
c3RhcnREYXRlIjp7InJhdyI6MTcxMTkyOTYwMCwiZm10IjoiMjAyNC0wNC0wMSJ9LCJvd25lcnNo
aXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjEwMDAwMCwiZm10IjoiMTAwayIs
ImxvbmdGbXQiOiIxMDAsMDAwIn0sInZhbHVlIjp7InJhdyI6MTgwOTQwMDAsImZtdCI6IjE4LjA5
TSIsImxvbmdGbXQiOiIxOCwwOTQsMDAwIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0
IjoiU2FsZSBhdCBwcmljZSAxODAuOTQgcGVyIHNoYXJlLiIsImZpbGVyTmFtZSI6IkxFVklOU09O
IEFSVEhVUiBEIiwiZmlsZXJSZWxhdGlvbiI6IkRpcmVjdG9yIiwibW9uZXlUZXh0IjoiIiwic3Rh
cnREYXRlIjp7InJhdyI6MTcwOTE2NDgwMCwiZm10IjoiMjAyNC0wMi0yOSJ9LCJvd25lcnNoaXAi
OiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjE4NTIsImZtdCI6IjEuODVrIiwibG9u
Z0ZtdCI6IjEsODUyIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJO
YW1lIjoiQkVMTCBKQU1FUyBBIiwiZmlsZXJSZWxhdGlvbiI6IkRpcmVjdG9yIiwibW9uZXlUZXh0
IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcwNjc0NTYwMCwiZm10IjoiMjAyNC0wMi0wMSJ9LCJv
d25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjE4NTIsImZtdCI6IjEu
ODVrIiwibG9uZ0ZtdCI6IjEsODUyIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0Ijoi
IiwiZmlsZXJOYW1lIjoiTE9aQU5PIE1PTklDQSBDLiIsImZpbGVyUmVsYXRpb24iOiJEaXJlY3Rv
ciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0ZSI6eyJyYXciOjE3MDY3NDU2MDAsImZtdCI6IjIw
MjQtMDItMDEifSwib3duZXJzaGlwIjoiRCJ9LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3Ijox
ODUyLCJmbXQiOiIxLjg1ayIsImxvbmdGbXQiOiIxLDg1MiJ9LCJmaWxlclVybCI6IiIsInRyYW5z
YWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6IldBR05FUiBTVVNBTiBMIiwiZmlsZXJSZWxhdGlv
biI6IkRpcmVjdG9yIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcwNjc0NTYw
MCwiZm10IjoiMjAyNC0wMi0wMSJ9LCJvd25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJl
cyI6eyJyYXciOjE4NTIsImZtdCI6IjEuODVrIiwibG9uZ0ZtdCI6IjEsODUyIn0sImZpbGVyVXJs
IjoiIiwidHJhbnNhY3Rpb25UZXh0IjoiIiwiZmlsZXJOYW1lIjoiSlVORyBBTkRSRUEiLCJmaWxl
clJlbGF0aW9uIjoiRGlyZWN0b3IiLCJtb25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3Ijox
NzA2NzQ1NjAwLCJmbXQiOiIyMDI0LTAyLTAxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6
MSwic2hhcmVzIjp7InJhdyI6MTg1MiwiZm10IjoiMS44NWsiLCJsb25nRm10IjoiMSw4NTIifSwi
ZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlvblRleHQiOiIiLCJmaWxlck5hbWUiOiJTVUdBUiBST05B
TEQgRCIsImZpbGVyUmVsYXRpb24iOiJEaXJlY3RvciIsIm1vbmV5VGV4dCI6IiIsInN0YXJ0RGF0
ZSI6eyJyYXciOjE3MDY3NDU2MDAsImZtdCI6IjIwMjQtMDItMDEifSwib3duZXJzaGlwIjoiRCJ9
LHsibWF4QWdlIjoxLCJzaGFyZXMiOnsicmF3IjoxODUyLCJmbXQiOiIxLjg1ayIsImxvbmdGbXQi
OiIxLDg1MiJ9LCJmaWxlclVybCI6IiIsInRyYW5zYWN0aW9uVGV4dCI6IiIsImZpbGVyTmFtZSI6
IkxFVklOU09OIEFSVEhVUiBEIiwiZmlsZXJSZWxhdGlvbiI6IkRpcmVjdG9yIiwibW9uZXlUZXh0
IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcwNjc0NTYwMCwiZm10IjoiMjAyNC0wMi0wMSJ9LCJv
d25lcnNoaXAiOiJEIn0seyJtYXhBZ2UiOjEsInNoYXJlcyI6eyJyYXciOjE4NTIsImZtdCI6IjEu
ODVrIiwibG9uZ0ZtdCI6IjEsODUyIn0sImZpbGVyVXJsIjoiIiwidHJhbnNhY3Rpb25UZXh0Ijoi
IiwiZmlsZXJOYW1lIjoiR09SU0tZIEFMRVgiLCJmaWxlclJlbGF0aW9uIjoiRGlyZWN0b3IiLCJt
b25leVRleHQiOiIiLCJzdGFydERhdGUiOnsicmF3IjoxNzA2NzQ1NjAwLCJmbXQiOiIyMDI0LTAy
LTAxIn0sIm93bmVyc2hpcCI6IkQifSx7Im1heEFnZSI6MSwic2hhcmVzIjp7InJhdyI6MTg1Miwi
Zm10IjoiMS44NWsiLCJsb25nRm10IjoiMSw4NTIifSwiZmlsZXJVcmwiOiIiLCJ0cmFuc2FjdGlv
blRleHQiOiIiLCJmaWxlck5hbWUiOiJHT1JFIEFMQkVSVCBBIEpSIiwiZmlsZXJSZWxhdGlvbiI6
IkRpcmVjdG9yIiwibW9uZXlUZXh0IjoiIiwic3RhcnREYXRlIjp7InJhdyI6MTcwNjc0NTYwMCwi
Zm10IjoiMjAyNC0wMi0wMSJ9LCJvd25lcnNoaXAiOiJEIn1dLCJtYXhBZ2UiOjF9LCJmdW5kT3du
ZXJzaGlwIjp7Im1heEFnZSI6MSwib3duZXJzaGlwTGlzdCI6W3sibWF4QWdlIjoxLCJyZXBvcnRE
YXRlIjp7InJhdyI6MTc1OTE5MDQwMCwiZm10IjoiMjAyNS0wOS0zMCJ9LCJvcmdhbml6YXRpb24i
OiJWQU5HVUFSRCBJTkRFWCBGVU5EUy1WYW5ndWFyZCBUb3RhbCBTdG9jayBNYXJrZXQgSW5kZXgg
RnVuZCIsInBjdEhlbGQiOnsicmF3IjowLjAzMTYwMDAwMiwiZm10IjoiMy4xNiUifSwicG9zaXRp
b24iOnsicmF3Ijo0NjcxMzU3MjIsImZtdCI6IjQ2Ny4xNE0iLCJsb25nRm10IjoiNDY3LDEzNSw3
MjIifSwidmFsdWUiOnsicmF3IjoxMjY1Nzk3NjcxNjAsImZtdCI6IjEyNi41OEIiLCJsb25nRm10
IjoiMTI2LDU3OSw3NjcsMTYwIn0sInBjdENoYW5nZSI6eyJyYXciOi0wLjAyNzQsImZtdCI6Ii0y
Ljc0JSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXciOjE3NTkxOTA0MDAsImZtdCI6
IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiVkFOR1VBUkQgSU5ERVggRlVORFMtVmFuZ3Vh
cmQgNTAwIEluZGV4IEZ1bmQiLCJwY3RIZWxkIjp7InJhdyI6MC4wMjQ4LCJmbXQiOiIyLjQ4JSJ9
LCJwb3NpdGlvbiI6eyJyYXciOjM2NjE0NTkyMCwiZm10IjoiMzY2LjE1TSIsImxvbmdGbXQiOiIz
NjYsMTQ1LDkyMCJ9LCJ2YWx1ZSI6eyJyYXciOjk5MjE0NTYwMzg5LCJmbXQiOiI5OS4yMUIiLCJs
b25nRm10IjoiOTksMjE0LDU2MCwzODkifSwicGN0Q2hhbmdlIjp7InJhdyI6LTAuMTM2MywiZm10
IjoiLTEzLjYzJSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXciOjE3NjE4Njg4MDAs
ImZtdCI6IjIwMjUtMTAtMzEifSwib3JnYW5pemF0aW9uIjoiRmlkZWxpdHkgQ29uY29yZCBTdHJl
ZXQgVHJ1c3QtRmlkZWxpdHkgNTAwIEluZGV4IEZ1bmQiLCJwY3RIZWxkIjp7InJhdyI6MC4wMTI3
LCJmbXQiOiIxLjI3JSJ9LCJwb3NpdGlvbiI6eyJyYXciOjE4NzI5NzkxNywiZm10IjoiMTg3LjNN
IiwibG9uZ0ZtdCI6IjE4NywyOTcsOTE3In0sInZhbHVlIjp7InJhdyI6NTA3NTIxMTY3OTgsImZt
dCI6IjUwLjc1QiIsImxvbmdGbXQiOiI1MCw3NTIsMTE2LDc5OCJ9LCJwY3RDaGFuZ2UiOnsicmF3
IjotMC4wMDMzMDAwMDAyLCJmbXQiOiItMC4zMyUifX0seyJtYXhBZ2UiOjEsInJlcG9ydERhdGUi
OnsicmF3IjoxNzU5MTkwNDAwLCJmbXQiOiIyMDI1LTA5LTMwIn0sIm9yZ2FuaXphdGlvbiI6ImlT
aGFyZXMgVHJ1c3QtaVNoYXJlcyBDb3JlIFMmUCA1MDAgRVRGIiwicGN0SGVsZCI6eyJyYXciOjAu
MDEyMzAwMDAwNSwiZm10IjoiMS4yMyUifSwicG9zaXRpb24iOnsicmF3IjoxODIxMzY4NDQsImZt
dCI6IjE4Mi4xNE0iLCJsb25nRm10IjoiMTgyLDEzNiw4NDQifSwidmFsdWUiOnsicmF3Ijo0OTM1
MzYyMDg0MSwiZm10IjoiNDkuMzVCIiwibG9uZ0ZtdCI6IjQ5LDM1Myw2MjAsODQxIn0sInBjdENo
YW5nZSI6eyJyYXciOjAuMDEzNDAwMDAwNSwiZm10IjoiMS4zNCUifX0seyJtYXhBZ2UiOjEsInJl
cG9ydERhdGUiOnsicmF3IjoxNzYxODY4ODAwLCJmbXQiOiIyMDI1LTEwLTMxIn0sIm9yZ2FuaXph
dGlvbiI6IlNQRFIgUyZQIDUwMCBFVEYgVFJVU1QiLCJwY3RIZWxkIjp7InJhdyI6MC4wMTIxLCJm
bXQiOiIxLjIxJSJ9LCJwb3NpdGlvbiI6eyJyYXciOjE3ODgzMzY5NywiZm10IjoiMTc4LjgzTSIs
ImxvbmdGbXQiOiIxNzgsODMzLDY5NyJ9LCJ2YWx1ZSI6eyJyYXciOjQ4NDU4NTY3MDk0LCJmbXQi
OiI0OC40NkIiLCJsb25nRm10IjoiNDgsNDU4LDU2NywwOTQifSwicGN0Q2hhbmdlIjp7InJhdyI6
MC4wMjIsImZtdCI6IjIuMjAlIn19LHsibWF4QWdlIjoxLCJyZXBvcnREYXRlIjp7InJhdyI6MTc1
OTE5MDQwMCwiZm10IjoiMjAyNS0wOS0zMCJ9LCJvcmdhbml6YXRpb24iOiJWQU5HVUFSRCBJTkRF
WCBGVU5EUy1WYW5ndWFyZCBHcm93dGggSW5kZXggRnVuZCIsInBjdEhlbGQiOnsicmF3IjowLjAw
OTUsImZtdCI6IjAuOTUlIn0sInBvc2l0aW9uIjp7InJhdyI6MTQwOTA0NjQ2LCJmbXQiOiIxNDAu
OU0iLCJsb25nRm10IjoiMTQwLDkwNCw2NDYifSwidmFsdWUiOnsicmF3IjozODE4MDkzMjA5OCwi
Zm10IjoiMzguMThCIiwibG9uZ0ZtdCI6IjM4LDE4MCw5MzIsMDk4In0sInBjdENoYW5nZSI6eyJy
YXciOi0wLjA0NzEsImZtdCI6Ii00LjcxJSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJy
YXciOjE3NTkxOTA0MDAsImZtdCI6IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiSW52ZXNj
byBRUVEgVHJ1c3QsIFNlcmllcyAxIiwicGN0SGVsZCI6eyJyYXciOjAuMDA4NCwiZm10IjoiMC44
NCUifSwicG9zaXRpb24iOnsicmF3IjoxMjQ3NzM4NTEsImZtdCI6IjEyNC43N00iLCJsb25nRm10
IjoiMTI0LDc3Myw4NTEifSwidmFsdWUiOnsicmF3IjozMzgwOTk3MDU1NywiZm10IjoiMzMuODFC
IiwibG9uZ0ZtdCI6IjMzLDgwOSw5NzAsNTU3In0sInBjdENoYW5nZSI6eyJyYXciOjAuMDA0MSwi
Zm10IjoiMC40MSUifX0seyJtYXhBZ2UiOjEsInJlcG9ydERhdGUiOnsicmF3IjoxNzU5MTkwNDAw
LCJmbXQiOiIyMDI1LTA5LTMwIn0sIm9yZ2FuaXphdGlvbiI6IlZBTkdVQVJEIElOU1RJVFVUSU9O
QUwgSU5ERVggRlVORFMtVmFuZ3VhcmQgSW5zdGl0dXRpb25hbCBJbmRleCBGdW5kIiwicGN0SGVs
ZCI6eyJyYXciOjAuMDA1ODk5OTk5OCwiZm10IjoiMC41OSUifSwicG9zaXRpb24iOnsicmF3Ijo4
NjUxMTEzNCwiZm10IjoiODYuNTFNIiwibG9uZ0ZtdCI6Ijg2LDUxMSwxMzQifSwidmFsdWUiOnsi
cmF3IjoyMzQ0MTkyMjA4NSwiZm10IjoiMjMuNDRCIiwibG9uZ0ZtdCI6IjIzLDQ0MSw5MjIsMDg1
In0sInBjdENoYW5nZSI6eyJyYXciOi0wLjA1NSwiZm10IjoiLTUuNTAlIn19LHsibWF4QWdlIjox
LCJyZXBvcnREYXRlIjp7InJhdyI6MTc1NjU5ODQwMCwiZm10IjoiMjAyNS0wOC0zMSJ9LCJvcmdh
bml6YXRpb24iOiJWQU5HVUFSRCBXT1JMRCBGVU5ELVZhbmd1YXJkIEluZm9ybWF0aW9uIFRlY2hu
b2xvZ3kgSW5kZXggRnVuZCIsInBjdEhlbGQiOnsicmF3IjowLjAwNDUsImZtdCI6IjAuNDUlIn0s
InBvc2l0aW9uIjp7InJhdyI6NjYxNjM3MzUsImZtdCI6IjY2LjE2TSIsImxvbmdGbXQiOiI2Niwx
NjMsNzM1In0sInZhbHVlIjp7InJhdyI6MTc5MjgzODczNTMsImZtdCI6IjE3LjkzQiIsImxvbmdG
bXQiOiIxNyw5MjgsMzg3LDM1MyJ9LCJwY3RDaGFuZ2UiOnsicmF3IjotMC4xMDYwOTk5OSwiZm10
IjoiLTEwLjYxJSJ9fSx7Im1heEFnZSI6MSwicmVwb3J0RGF0ZSI6eyJyYXciOjE3NTkxOTA0MDAs
ImZtdCI6IjIwMjUtMDktMzAifSwib3JnYW5pemF0aW9uIjoiaVNoYXJlcyBUcnVzdC1pU2hhcmVz
IFJ1c3NlbGwgMTAwMCBHcm93dGggRVRGIiwicGN0SGVsZCI6eyJyYXciOjAuMDAzNjAwMDAwMiwi
Zm10IjoiMC4zNiUifSwicG9zaXRpb24iOnsicmF3Ijo1MzU2MTM3NCwiZm10IjoiNTMuNTZNIiwi
bG9uZ0ZtdCI6IjUzLDU2MSwzNzQifSwidmFsdWUiOnsicmF3IjoxNDUxMzUyNTU3OCwiZm10Ijoi
MTQuNTFCIiwibG9uZ0ZtdCI6IjE0LDUxMyw1MjUsNTc4In0sInBjdENoYW5nZSI6eyJyYXciOi0w
LjAzNDcsImZtdCI6Ii0zLjQ3JSJ9fV19fV0sImVycm9yIjpudWxsfX0=
headers:
age: '1'
cache-control: public, max-age=1, stale-while-revalidate=9
content-encoding: gzip
content-type: application/json;charset=utf-8
date: Tue, 23 Dec 2025 01:44:21 GMT
referrer-policy: no-referrer-when-downgrade
server: ATS
strict-transport-security: max-age=31536000
vary: Origin,Accept-Encoding
x-content-type-options: nosniff
x-envoy-decorator-operation: MOCK_OPERATION
x-envoy-upstream-service-time: '5'
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
y-rid: MOCK_RID
status:
code: 200
message: ''
source_type: curl_cffi_sync

View File

@@ -1,428 +0,0 @@
"""Tests for YFinance fetchers."""
from datetime import date
import pytest
from openbb_core.app.service.user_service import UserService
from openbb_yfinance.models.active import YFActiveFetcher
from openbb_yfinance.models.aggressive_small_caps import YFAggressiveSmallCapsFetcher
from openbb_yfinance.models.available_indices import YFinanceAvailableIndicesFetcher
from openbb_yfinance.models.balance_sheet import YFinanceBalanceSheetFetcher
from openbb_yfinance.models.cash_flow import YFinanceCashFlowStatementFetcher
from openbb_yfinance.models.company_news import YFinanceCompanyNewsFetcher
from openbb_yfinance.models.crypto_historical import YFinanceCryptoHistoricalFetcher
from openbb_yfinance.models.currency_historical import YFinanceCurrencyHistoricalFetcher
from openbb_yfinance.models.equity_historical import YFinanceEquityHistoricalFetcher
from openbb_yfinance.models.equity_profile import YFinanceEquityProfileFetcher
from openbb_yfinance.models.equity_quote import YFinanceEquityQuoteFetcher
from openbb_yfinance.models.equity_screener import YFinanceEquityScreenerFetcher
from openbb_yfinance.models.etf_info import YFinanceEtfInfoFetcher
from openbb_yfinance.models.futures_curve import YFinanceFuturesCurveFetcher
from openbb_yfinance.models.futures_historical import YFinanceFuturesHistoricalFetcher
from openbb_yfinance.models.gainers import YFGainersFetcher
from openbb_yfinance.models.growth_tech_equities import YFGrowthTechEquitiesFetcher
from openbb_yfinance.models.historical_dividends import (
YFinanceHistoricalDividendsFetcher,
)
from openbb_yfinance.models.income_statement import YFinanceIncomeStatementFetcher
from openbb_yfinance.models.index_historical import (
YFinanceIndexHistoricalFetcher,
)
from openbb_yfinance.models.key_executives import YFinanceKeyExecutivesFetcher
from openbb_yfinance.models.key_metrics import YFinanceKeyMetricsFetcher
from openbb_yfinance.models.losers import YFLosersFetcher
from openbb_yfinance.models.options_chains import YFinanceOptionsChainsFetcher
from openbb_yfinance.models.price_target_consensus import (
YFinancePriceTargetConsensusFetcher,
)
from openbb_yfinance.models.share_statistics import YFinanceShareStatisticsFetcher
from openbb_yfinance.models.undervalued_growth_equities import (
YFUndervaluedGrowthEquitiesFetcher,
)
from openbb_yfinance.models.undervalued_large_caps import YFUndervaluedLargeCapsFetcher
test_credentials = UserService().default_user_settings.credentials.model_dump(
mode="json"
)
def scrub_string(key, value):
"""Scrub a string from the response."""
def before_record_response(response):
if key == "<!doctype html>":
response_body = response["body"]["string"]
if isinstance(response_body, bytes):
response_body = response_body.decode("utf-8", errors="ignore")
# Check if the key (HTML doctype) is in the response body
if key.lower() in response_body.lower():
response["body"]["string"] = bytes("MOCK_RESPONSE", "utf-8")
if key in response["headers"]:
response["headers"][key] = value
return response
return before_record_response
@pytest.fixture(scope="module")
def vcr_config():
"""VCR configuration."""
return {
"allow_playback_repeats": True,
"match_on": ["method", "uri"],
"filter_headers": [
("User-Agent", None),
("Cookie", "MOCK_COOKIE"),
("crumb", "MOCK_CRUMB"),
("Accept", None),
("Accept-Encoding", None),
("Accept-Language", None),
("Cache-Control", None),
("Connection", None),
("DNT", None),
("Upgrade-Insecure-Requests", None),
("Sec-Fetch-Dest", None),
("Sec-Fetch-Mode", None),
("Sec-Fetch-Site", None),
("Sec-Fetch-User", None),
],
"filter_query_parameters": [
("period1", "MOCK_PERIOD_1"),
("period2", "MOCK_PERIOD_2"),
("crumb", "MOCK_CRUMB"),
("date", "MOCK_DATE"),
("corsDomain", "MOCK_CORS"),
("lang", "MOCK_LANG"),
("region", "MOCK_REGION"),
],
"filter_post_data_parameters": [
("query", "MOCK_QUERY"),
("size", "MOCK_SIZE"),
("offset", "MOCK_OFFSET"),
],
"before_record_response": [
scrub_string("set-cookie", "MOCK_COOKIE"),
scrub_string("x-envoy-decorator-operation", "MOCK_OPERATION"),
scrub_string("y-rid", "MOCK_RID"),
scrub_string("content-security-policy", "MOCK_CSP"),
scrub_string("<!doctype html>", "MOCK_RESPONSE"),
scrub_string("link", "MOCK_LINK"),
scrub_string("report-to", "MOCK_REPORT"),
scrub_string("expect-ct", "MOCK_EXPECT_CT"),
],
"decode_compressed_response": True,
}
@pytest.mark.record_curl
def test_y_finance_crypto_historical_fetcher(credentials=test_credentials):
"""Test YFinanceCryptoHistoricalFetcher."""
params = {
"symbol": "BTCUSD",
"start_date": date(2023, 1, 1),
"end_date": date(2023, 1, 10),
"interval": "1d",
}
fetcher = YFinanceCryptoHistoricalFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_currency_historical_fetcher(credentials=test_credentials):
"""Test YFinanceCurrencyHistoricalFetcher."""
params = {
"symbol": "EURUSD",
"start_date": date(2023, 1, 1),
"end_date": date(2023, 1, 10),
}
fetcher = YFinanceCurrencyHistoricalFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_index_historical_fetcher(credentials=test_credentials):
"""Test YFinanceIndexHistoricalFetcher."""
params = {
"symbol": "^GSPC",
"start_date": date(2023, 1, 1),
"end_date": date(2023, 1, 10),
}
fetcher = YFinanceIndexHistoricalFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_equity_historical_fetcher(credentials=test_credentials):
"""Test YFinanceEquityHistoricalFetcher."""
params = {
"symbol": "AAPL",
"start_date": date(2023, 1, 1),
"end_date": date(2023, 1, 10),
"interval": "1d",
}
fetcher = YFinanceEquityHistoricalFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_historical_dividends_fetcher(credentials=test_credentials):
"""Test YFinanceHistoricalDividendsFetcher."""
params = {"symbol": "IBM"}
fetcher = YFinanceHistoricalDividendsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_futures_historical_fetcher(credentials=test_credentials):
"""Test YFinanceFuturesHistoricalFetcher."""
params = {
"symbol": "ES=F",
"start_date": date(2023, 1, 1),
"end_date": date(2023, 1, 10),
}
fetcher = YFinanceFuturesHistoricalFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_options_chains_fetcher(credentials=test_credentials):
"""Test YFinanceOptionsChainsFetcher."""
params = {"symbol": "OXY"}
fetcher = YFinanceOptionsChainsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.skip("Unreliable amount of data while recording test.")
@pytest.mark.record_curl
def test_y_finance_futures_curve_fetcher(credentials=test_credentials):
"""Test YFinanceFuturesCurveFetcher."""
params = {"symbol": "ES"}
fetcher = YFinanceFuturesCurveFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_company_news_fetcher(credentials=test_credentials):
"""Test YFinanceCompanyNewsFetcher."""
params = {"symbol": "AAPL,MSFT", "limit": 2}
fetcher = YFinanceCompanyNewsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_balance_sheet_fetcher(credentials=test_credentials):
"""Test YFinanceBalanceSheetFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceBalanceSheetFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_cash_flow_statement_fetcher(credentials=test_credentials):
"""Test YFinanceCashFlowStatementFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceCashFlowStatementFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_income_statement_fetcher(credentials=test_credentials):
"""Test YFinanceIncomeStatementFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceIncomeStatementFetcher()
result = fetcher.test(params, credentials)
assert result is None
def test_y_finance_available_fetcher(credentials=test_credentials):
"""Test YFinanceAvailableIndicesFetcher."""
params = {}
fetcher = YFinanceAvailableIndicesFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_active_fetcher(credentials=test_credentials):
"""Test YFActiveFetcher."""
params = {"limit": 10}
fetcher = YFActiveFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_gainers_fetcher(credentials=test_credentials):
"""Test YFGainersFetcher."""
params = {"limit": 10}
fetcher = YFGainersFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_losers_fetcher(credentials=test_credentials):
"""Test YFLosersFetcher."""
params = {"limit": 10}
fetcher = YFLosersFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_undervalued_large_caps_fetcher(credentials=test_credentials):
"""Test YFUndervaluedLargeCapsFetcher."""
params = {"limit": 10}
fetcher = YFUndervaluedLargeCapsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_undervalued_growth_equities_fetcher(credentials=test_credentials):
"""Test YFUndervaluedGrowthEquitiesFetcher."""
params = {"limit": 10}
fetcher = YFUndervaluedGrowthEquitiesFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_aggressive_small_caps_fetcher(credentials=test_credentials):
"""Test YFAggressiveSmallCapsFetcher."""
params = {"limit": 10}
fetcher = YFAggressiveSmallCapsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_growth_tech_equities_fetcher(credentials=test_credentials):
"""Test YFGrowthTechEquitiesFetcher."""
params = {"limit": 10}
fetcher = YFGrowthTechEquitiesFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_equity_profile_fetcher(credentials=test_credentials):
"""Test YFinanceEquityProfileFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceEquityProfileFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_equity_quote_fetcher(credentials=test_credentials):
"""Test YFinanceEquityQuoteFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceEquityQuoteFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_price_target_consensus_fetcher(credentials=test_credentials):
"""Test YFinancePriceTargetConsensusFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinancePriceTargetConsensusFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_share_statistics_fetcher(credentials=test_credentials):
"""Test YFinanceShareStatisticsFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceShareStatisticsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_key_executives_fetcher(credentials=test_credentials):
"""Test YFinanceKeyExecutivesFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceKeyExecutivesFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_key_metrics_fetcher(
credentials=test_credentials,
):
"""Test YFinanceKeyMetricsFetcher."""
params = {"symbol": "AAPL"}
fetcher = YFinanceKeyMetricsFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_etf_info_fetcher(credentials=test_credentials):
"""Test YFinanceEtfInfoFetcher."""
params = {"symbol": "QQQ"}
fetcher = YFinanceEtfInfoFetcher()
result = fetcher.test(params, credentials)
assert result is None
@pytest.mark.record_curl
def test_y_finance_equity_screener_fetcher(credentials=test_credentials):
"""Test YFinanceEquityScreener."""
params = {
"country": "us",
"sector": "consumer_cyclical",
"industry": "auto_manufacturers",
"mktcap_min": 60000000000,
"volume_min": 5000000,
"price_min": 10,
}
fetcher = YFinanceEquityScreenerFetcher()
result = fetcher.test(params, credentials)
assert result is None

View File

@@ -1,154 +0,0 @@
"""Test yfinance helpers."""
import pandas as pd
import pytest
from unittest.mock import patch, MagicMock
from openbb_yfinance.utils.helpers import (
df_transform_numbers,
get_futures_data,
get_custom_screener,
get_defined_screener,
get_futures_symbols,
yf_download,
)
# pylint: disable=redefined-outer-name, unused-argument
MOCK_FUTURES_DATA = pd.DataFrame({"Ticker": ["ES", "NQ"], "Exchange": ["CME", "CME"]})
@pytest.fixture
def mock_futures_csv(monkeypatch):
"""Mock pd.read_csv to return predefined futures data."""
monkeypatch.setattr(pd, "read_csv", lambda *args, **kwargs: MOCK_FUTURES_DATA)
def test_get_futures_data(mock_futures_csv):
"""Test get_futures_data."""
df = get_futures_data()
assert not df.empty
assert df.equals(MOCK_FUTURES_DATA)
def test_df_transform_numbers():
"""Test df_transform_numbers."""
data = pd.DataFrame(
{"Value": ["1M", "2.5B", "3T"], "% Change": ["1%", "-2%", "3.5%"]}
)
transformed = df_transform_numbers(data, ["Value", "% Change"])
assert transformed["Value"].equals(pd.Series([1e6, 2.5e9, 3e12]))
assert transformed["% Change"].equals(pd.Series([1 / 100, -2 / 100, 3.5 / 100]))
@pytest.mark.asyncio
async def test_get_custom_screener_no_session():
"""Test that get_custom_screener does not pass session to YfData."""
with patch("yfinance.data.YfData") as mock_yfdata:
mock_instance = MagicMock()
mock_response = MagicMock()
mock_response.json.return_value = {
"finance": {
"result": [
{
"quotes": [
{
"symbol": "AAPL",
"exchangeTimezoneName": "America/New_York",
"regularMarketTime": 1700000000,
}
],
"total": 1,
}
]
}
}
mock_response.raise_for_status = MagicMock()
mock_instance.post.return_value = mock_response
mock_yfdata.return_value = mock_instance
await get_custom_screener({"query": {}}, limit=1)
# Verify YfData was called without session parameter
mock_yfdata.assert_called_once()
call_kwargs = mock_yfdata.call_args[1] if mock_yfdata.call_args[1] else {}
assert (
"session" not in call_kwargs
), "YfData should not be called with session parameter"
@pytest.mark.asyncio
async def test_get_defined_screener_no_session():
"""Test that get_defined_screener does not pass session to yf.screen."""
with patch("yfinance.screen") as mock_screen:
mock_screen.return_value = {
"quotes": [
{
"symbol": "AAPL",
"exchangeTimezoneName": "America/New_York",
"regularMarketTime": 1700000000,
"regularMarketChange": 1.23,
"regularMarketVolume": 1000,
}
],
"total": 1,
}
await get_defined_screener("day_gainers", limit=1)
# Verify yf.screen was called without session parameter
assert mock_screen.called
for call in mock_screen.call_args_list:
call_kwargs = call[1] if len(call) > 1 and call[1] else {}
assert (
"session" not in call_kwargs
), "yf.screen should not be called with session parameter"
def test_get_futures_symbols_no_session():
"""Test that get_futures_symbols does not pass session to YfData."""
with patch("yfinance.data.YfData") as mock_yfdata:
mock_instance = MagicMock()
mock_instance.get_raw_json.return_value = {
"quoteSummary": {
"result": [{"futuresChain": {"futures": [{"symbol": "ES=F"}]}}]
}
}
mock_yfdata.return_value = mock_instance
get_futures_symbols("ES")
# Verify YfData was called without session parameter
mock_yfdata.assert_called_once()
call_kwargs = mock_yfdata.call_args[1] if mock_yfdata.call_args[1] else {}
assert (
"session" not in call_kwargs
), "YfData should not be called with session parameter"
def test_yf_download_no_session():
"""Test that yf_download does not pass session to yf.download."""
with patch("yfinance.download") as mock_download:
# Mock DataFrame with MultiIndex columns as returned by yfinance.download with group_by="ticker"
columns = pd.MultiIndex.from_tuples(
[
("AAPL", "Open"),
("AAPL", "High"),
("AAPL", "Low"),
("AAPL", "Close"),
("AAPL", "Adj Close"),
]
)
idx = pd.to_datetime(["2023-01-03"])
idx.name = "Date"
mock_data = pd.DataFrame([[100, 110, 90, 105, 105]], columns=columns, index=idx)
mock_download.return_value = mock_data
yf_download("AAPL", start_date="2023-01-01", end_date="2023-01-10")
# Verify yf.download was called without session parameter
assert mock_download.called
for call in mock_download.call_args_list:
call_kwargs = call[1] if len(call) > 1 and call[1] else {}
assert (
"session" not in call_kwargs
), "yf.download should not be called with session parameter"