From 0602870bf092099fd50e3c85fec8236bbfa62a83 Mon Sep 17 00:00:00 2001 From: khushal Date: Thu, 12 Dec 2024 11:47:19 +0530 Subject: [PATCH] Resetting utils subtree. --- {utils_v2 => tests}/__init__.py | 0 .../json_serializer.py => tests/kafka_test.py | 118 +- .../m_pesa_express.py => tests/mongo_test.py | 63 +- .../redis_test.py | 102 +- utils_v2/.gitignore | 8 - utils_v2/ai/__init__.py | 0 utils_v2/ai/image_classification/__init__.py | 0 .../ai/image_classification/async_blur.py | 202 - .../ai/image_classification/async_nsfw.py | 188 - utils_v2/ai/image_segmentation/__init__.py | 0 .../async_dichotomous_segmentation.py | 223 - utils_v2/ai/object_detection/__init__.py | 0 utils_v2/ai/object_detection/yolo.py | 176 - utils_v2/ai/tts/__init__.py | 0 utils_v2/ai/tts/easy_tts.py | 175 - utils_v2/ai/tts/test.wav | Bin 162150 -> 0 bytes utils_v2/api/__init__.py | 0 .../api/__pycache__/__init__.cpython-310.pyc | Bin 162 -> 0 bytes .../__pycache__/async_quart.cpython-310.pyc | Bin 32156 -> 0 bytes .../api/__pycache__/codes.cpython-310.pyc | Bin 3708 -> 0 bytes utils_v2/api/__pycache__/log.cpython-310.pyc | Bin 1778 -> 0 bytes .../metrics_prometheus.cpython-310.pyc | Bin 5163 -> 0 bytes .../api/__pycache__/response.cpython-310.pyc | Bin 1873 -> 0 bytes utils_v2/api/async_quart.py | 1270 - utils_v2/api/codes.py | 164 - utils_v2/api/log.py | 139 - utils_v2/api/response.py | 133 - utils_v2/cache/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 168 -> 0 bytes .../async_redis_cache.cpython-310.pyc | Bin 13364 -> 0 bytes utils_v2/cache/async_redis_cache.py | 497 - utils_v2/cache/async_redis_cache_v2.py | 568 - utils_v2/database/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 167 -> 0 bytes .../async_mongo_v2.cpython-310.pyc | Bin 40265 -> 0 bytes .../async_mysql_v2.cpython-310.pyc | Bin 9102 -> 0 bytes utils_v2/database/async_firebase.py | 504 - utils_v2/database/async_mongo.py | 843 - utils_v2/database/async_mongo_storage.py | 358 - utils_v2/database/async_mongo_v2.py | 1736 - utils_v2/database/async_mysql_v2.py | 434 - utils_v2/dataframe/__init__.py | 0 utils_v2/dataframe/splitter.py | 118 - utils_v2/date_time/__init__.py | 0 utils_v2/date_time/date_time.py | 337 - utils_v2/goog/__init__.py | 0 utils_v2/goog/base.py | 475 - utils_v2/goog/gmail/__init__.py | 0 utils_v2/goog/gmail/gmail_client.py | 960 - utils_v2/goog/gmail/gmail_message.py | 336 - .../chatgpt_suggested_message_format.json | 69 - .../formatted_message_list_20241126.json | 36 - ...3669615aa33694_no_attachment_20241126.json | 148 - ...7930033154ca_with_attachment_20241126.json | 258 - ..._message_03_19365d0239aa1aaf_20241126.json | 175 - ..._message_04_193640e74d93dc9b_20241126.json | 179 - ..._message_05_19363d6a7f50225a_20241126.json | 183 - ..._message_06_19363ba8e2582133_20241126.json | 183 - ..._message_07_19362f9983e58ea6_20241126.json | 210 - ..._message_08_19360aabcb976cfc_20241126.json | 175 - ..._message_09_193604ad97c9fe62_20241126.json | 183 - ..._message_10_1935e92672e67f22_20241126.json | 183 - utils_v2/goog/models/__init__.py | 0 utils_v2/goog/models/data/__init__.py | 0 utils_v2/goog/models/data/api_call.py | 132 - utils_v2/goog/models/data/auth_tokens.py | 239 - utils_v2/image/__init__.py | 0 utils_v2/image/scanner/__init__.py | 0 utils_v2/image/scanner/scanner.py | 410 - utils_v2/image/scanner/scanner_v2.py | 379 - utils_v2/logging/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 166 -> 0 bytes .../logging/__pycache__/model.cpython-310.pyc | Bin 1709 -> 0 bytes utils_v2/logging/context.py | 468 - utils_v2/logging/model.py | 131 - utils_v2/mail/__init__.py | 0 utils_v2/mail/async_smpt.py | 443 - utils_v2/mail/mail_parser.py | 184 - utils_v2/network/__init__.py | 0 utils_v2/network/ip.py | 173 - utils_v2/network/ping.py | 201 - utils_v2/nse/__init__.py | 0 utils_v2/nse/base.py | 281 - utils_v2/nse/calendar/__init__.py | 0 utils_v2/nse/calendar/corporate_events.py | 232 - ...ormatted_nse_corporate_event_calendar.json | 178 - ...1128_raw_nse_corporate_event_calendar.json | 156 - utils_v2/nse/indices/__init__.py | 0 .../20241128_formatted_nse_index_master.json | 1693 - .../20241128_raw_nse_index_master.json | 2785 -- utils_v2/nse/indices/master.py | 238 - utils_v2/nse/models/__init__.py | 0 utils_v2/nse/models/data/__init__.py | 0 utils_v2/nse/models/data/api_call.py | 130 - utils_v2/nse/options/__init__.py | 0 .../20241122_raw_nse_nifty_option_chain.json | 40750 ---------------- ...1128_formatted_nse_nifty_option_chain.json | 34811 ------------- utils_v2/nse/options/index.py | 281 - utils_v2/payments/__init__.py | 0 utils_v2/payments/safaricom/__init__.py | 0 .../payments/safaricom/models/__init__.py | 0 .../safaricom/models/data/__init__.py | 0 .../safaricom/models/data/m_pesa_express.py | 253 - utils_v2/pdf/__init__.py | 0 utils_v2/pdf/pdf_maker.py | 1642 - utils_v2/queue/__init__.py | 0 utils_v2/queue/async_kafka.py | 554 - utils_v2/rate_limit/__init__.py | 0 utils_v2/rate_limit/async_token_bucket.py | 212 - utils_v2/security/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 167 -> 0 bytes .../__pycache__/sanitizers.cpython-310.pyc | Bin 1929 -> 0 bytes utils_v2/security/hash.py | 245 - utils_v2/security/otp.py | 156 - utils_v2/security/sanitizers.py | 135 - utils_v2/serialization/__init__.py | 0 .../serialization/universal_serializer.py | 265 - utils_v2/sms/__init__.py | 0 utils_v2/sms/nimbus/__init__.py | 0 utils_v2/sms/nimbus/async_nimbus.py | 259 - utils_v2/string/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 165 -> 0 bytes .../string/__pycache__/json.cpython-310.pyc | Bin 3542 -> 0 bytes .../string/__pycache__/regex.cpython-310.pyc | Bin 7718 -> 0 bytes utils_v2/string/fuzzy.py | 168 - utils_v2/string/help.py | 177 - utils_v2/string/json.py | 202 - utils_v2/string/regex.py | 290 - utils_v2/system/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 165 -> 0 bytes .../system/__pycache__/files.cpython-310.pyc | Bin 11550 -> 0 bytes utils_v2/system/files.py | 508 - 132 files changed, 157 insertions(+), 101313 deletions(-) rename {utils_v2 => tests}/__init__.py (100%) rename utils_v2/serialization/json_serializer.py => tests/kafka_test.py (61%) rename utils_v2/payments/safaricom/m_pesa_express.py => tests/mongo_test.py (74%) rename utils_v2/serialization/pickle_serializer.py => tests/redis_test.py (67%) delete mode 100644 utils_v2/.gitignore delete mode 100644 utils_v2/ai/__init__.py delete mode 100644 utils_v2/ai/image_classification/__init__.py delete mode 100644 utils_v2/ai/image_classification/async_blur.py delete mode 100644 utils_v2/ai/image_classification/async_nsfw.py delete mode 100644 utils_v2/ai/image_segmentation/__init__.py delete mode 100644 utils_v2/ai/image_segmentation/async_dichotomous_segmentation.py delete mode 100644 utils_v2/ai/object_detection/__init__.py delete mode 100644 utils_v2/ai/object_detection/yolo.py delete mode 100644 utils_v2/ai/tts/__init__.py delete mode 100644 utils_v2/ai/tts/easy_tts.py delete mode 100644 utils_v2/ai/tts/test.wav delete mode 100644 utils_v2/api/__init__.py delete mode 100644 utils_v2/api/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/api/__pycache__/async_quart.cpython-310.pyc delete mode 100644 utils_v2/api/__pycache__/codes.cpython-310.pyc delete mode 100644 utils_v2/api/__pycache__/log.cpython-310.pyc delete mode 100644 utils_v2/api/__pycache__/metrics_prometheus.cpython-310.pyc delete mode 100644 utils_v2/api/__pycache__/response.cpython-310.pyc delete mode 100644 utils_v2/api/async_quart.py delete mode 100644 utils_v2/api/codes.py delete mode 100644 utils_v2/api/log.py delete mode 100644 utils_v2/api/response.py delete mode 100644 utils_v2/cache/__init__.py delete mode 100644 utils_v2/cache/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/cache/__pycache__/async_redis_cache.cpython-310.pyc delete mode 100644 utils_v2/cache/async_redis_cache.py delete mode 100644 utils_v2/cache/async_redis_cache_v2.py delete mode 100644 utils_v2/database/__init__.py delete mode 100644 utils_v2/database/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/database/__pycache__/async_mongo_v2.cpython-310.pyc delete mode 100644 utils_v2/database/__pycache__/async_mysql_v2.cpython-310.pyc delete mode 100644 utils_v2/database/async_firebase.py delete mode 100644 utils_v2/database/async_mongo.py delete mode 100644 utils_v2/database/async_mongo_storage.py delete mode 100644 utils_v2/database/async_mongo_v2.py delete mode 100644 utils_v2/database/async_mysql_v2.py delete mode 100644 utils_v2/dataframe/__init__.py delete mode 100644 utils_v2/dataframe/splitter.py delete mode 100644 utils_v2/date_time/__init__.py delete mode 100644 utils_v2/date_time/date_time.py delete mode 100644 utils_v2/goog/__init__.py delete mode 100644 utils_v2/goog/base.py delete mode 100644 utils_v2/goog/gmail/__init__.py delete mode 100644 utils_v2/goog/gmail/gmail_client.py delete mode 100644 utils_v2/goog/gmail/gmail_message.py delete mode 100644 utils_v2/goog/gmail/json/messages/chatgpt_suggested_message_format.json delete mode 100644 utils_v2/goog/gmail/json/messages/formatted_message_list_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_01_193669615aa33694_no_attachment_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_02_19367930033154ca_with_attachment_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_03_19365d0239aa1aaf_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_04_193640e74d93dc9b_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_05_19363d6a7f50225a_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_06_19363ba8e2582133_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_07_19362f9983e58ea6_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_08_19360aabcb976cfc_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_09_193604ad97c9fe62_20241126.json delete mode 100644 utils_v2/goog/gmail/json/messages/raw_message_10_1935e92672e67f22_20241126.json delete mode 100644 utils_v2/goog/models/__init__.py delete mode 100644 utils_v2/goog/models/data/__init__.py delete mode 100644 utils_v2/goog/models/data/api_call.py delete mode 100644 utils_v2/goog/models/data/auth_tokens.py delete mode 100644 utils_v2/image/__init__.py delete mode 100644 utils_v2/image/scanner/__init__.py delete mode 100644 utils_v2/image/scanner/scanner.py delete mode 100644 utils_v2/image/scanner/scanner_v2.py delete mode 100644 utils_v2/logging/__init__.py delete mode 100644 utils_v2/logging/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/logging/__pycache__/model.cpython-310.pyc delete mode 100644 utils_v2/logging/context.py delete mode 100644 utils_v2/logging/model.py delete mode 100644 utils_v2/mail/__init__.py delete mode 100644 utils_v2/mail/async_smpt.py delete mode 100644 utils_v2/mail/mail_parser.py delete mode 100644 utils_v2/network/__init__.py delete mode 100644 utils_v2/network/ip.py delete mode 100644 utils_v2/network/ping.py delete mode 100644 utils_v2/nse/__init__.py delete mode 100644 utils_v2/nse/base.py delete mode 100644 utils_v2/nse/calendar/__init__.py delete mode 100644 utils_v2/nse/calendar/corporate_events.py delete mode 100644 utils_v2/nse/calendar/examples/20241128_formatted_nse_corporate_event_calendar.json delete mode 100644 utils_v2/nse/calendar/examples/20241128_raw_nse_corporate_event_calendar.json delete mode 100644 utils_v2/nse/indices/__init__.py delete mode 100644 utils_v2/nse/indices/examples/20241128_formatted_nse_index_master.json delete mode 100644 utils_v2/nse/indices/examples/20241128_raw_nse_index_master.json delete mode 100644 utils_v2/nse/indices/master.py delete mode 100644 utils_v2/nse/models/__init__.py delete mode 100644 utils_v2/nse/models/data/__init__.py delete mode 100644 utils_v2/nse/models/data/api_call.py delete mode 100644 utils_v2/nse/options/__init__.py delete mode 100644 utils_v2/nse/options/examples/20241122_raw_nse_nifty_option_chain.json delete mode 100644 utils_v2/nse/options/examples/20241128_formatted_nse_nifty_option_chain.json delete mode 100644 utils_v2/nse/options/index.py delete mode 100644 utils_v2/payments/__init__.py delete mode 100644 utils_v2/payments/safaricom/__init__.py delete mode 100644 utils_v2/payments/safaricom/models/__init__.py delete mode 100644 utils_v2/payments/safaricom/models/data/__init__.py delete mode 100644 utils_v2/payments/safaricom/models/data/m_pesa_express.py delete mode 100644 utils_v2/pdf/__init__.py delete mode 100644 utils_v2/pdf/pdf_maker.py delete mode 100644 utils_v2/queue/__init__.py delete mode 100644 utils_v2/queue/async_kafka.py delete mode 100644 utils_v2/rate_limit/__init__.py delete mode 100644 utils_v2/rate_limit/async_token_bucket.py delete mode 100644 utils_v2/security/__init__.py delete mode 100644 utils_v2/security/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/security/__pycache__/sanitizers.cpython-310.pyc delete mode 100644 utils_v2/security/hash.py delete mode 100644 utils_v2/security/otp.py delete mode 100644 utils_v2/security/sanitizers.py delete mode 100644 utils_v2/serialization/__init__.py delete mode 100644 utils_v2/serialization/universal_serializer.py delete mode 100644 utils_v2/sms/__init__.py delete mode 100644 utils_v2/sms/nimbus/__init__.py delete mode 100644 utils_v2/sms/nimbus/async_nimbus.py delete mode 100644 utils_v2/string/__init__.py delete mode 100644 utils_v2/string/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/string/__pycache__/json.cpython-310.pyc delete mode 100644 utils_v2/string/__pycache__/regex.cpython-310.pyc delete mode 100644 utils_v2/string/fuzzy.py delete mode 100644 utils_v2/string/help.py delete mode 100644 utils_v2/string/json.py delete mode 100644 utils_v2/string/regex.py delete mode 100644 utils_v2/system/__init__.py delete mode 100644 utils_v2/system/__pycache__/__init__.cpython-310.pyc delete mode 100644 utils_v2/system/__pycache__/files.cpython-310.pyc delete mode 100644 utils_v2/system/files.py diff --git a/utils_v2/__init__.py b/tests/__init__.py similarity index 100% rename from utils_v2/__init__.py rename to tests/__init__.py diff --git a/utils_v2/serialization/json_serializer.py b/tests/kafka_test.py similarity index 61% rename from utils_v2/serialization/json_serializer.py rename to tests/kafka_test.py index 87595e0..98c1936 100644 --- a/utils_v2/serialization/json_serializer.py +++ b/tests/kafka_test.py @@ -6,11 +6,11 @@ DATE: - Sunday 1st Sept. 2024. + Thursday, 19th Sept., 2024 OBJECTIVE: - To provide a way to convert any input data to serialized bytes, and back. + To provide a quick way to test out Kafka. REFERENCES: @@ -35,8 +35,19 @@ import sys sys.path.append(".") sys.path.append("..") -# To work with files: +# System-level: +import os + +# Utils: from utils_v2.string import json +from utils_v2.date_time import date_time +from utils_v2.queue.async_kafka import ProducerKafka, ConsumerKafka, get_ssl_context + +# For async activities: +import asyncio + +# Common: +from shared import constants # ***************************************************************************************************************** @@ -69,54 +80,6 @@ from utils_v2.string import json # --- Nothing Yet -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class JSONSerializer: - - def __init__(self): - - """ - Use this serializer when dealing with JSON-compatible data like direct JSON-strings, python dicts, and - python-lists. Beware that non-compatible data will cause either direct exceptions or unexpected behaviour. - """ - - pass - - @staticmethod - def serialize(data, encoding = "utf-8"): - - """ - Serializes the data that is given to it. - The input has to be JSON-compatible. - :param data: The data to serialize. - :param encoding: The encoding to use. - :return: The bytes representing the data. - """ - - # If the data is not already a JSON string, parse it. Then return it as bytes: - data = data if isinstance(data, str) else json.to_string(data, no_space = True) - return data.encode(encoding) - - @staticmethod - def deserialize(data, encoding = "utf-8"): - - """ - Deserializes the bytes that are given to it. - The input has to be JSON-compatible. - :param data: The bytes to deserialize. - :param encoding: The encoding to use. - :return: The data from the bytes that described it. - """ - - data = data.decode(encoding) - return json.from_string(data) - - # ***************************************************************************************************************** # ***** **** # *** MAIN PROGRAM *** @@ -126,4 +89,55 @@ class JSONSerializer: if __name__ == "__main__": - pass + # Define the test params: + TOPIC = "kft_file_upload" + BOOTSTRAP_SERVERS = "del.ditscentre.in:9092" + SSL_CONTEXT = get_ssl_context( + ca_file = os.path.join(constants.CREDENTIALS_DIRECTORY, "kafka", "cert_authority.pem"), + cert_file = os.path.join(constants.CREDENTIALS_DIRECTORY, "kafka", "fullchain.pem"), + key_file = os.path.join(constants.CREDENTIALS_DIRECTORY, "kafka", "privkey.pem") + ) + + async def keep_producing(): + + # Create the producer: + my_producer = ProducerKafka( + topic = TOPIC, + bootstrap_servers = BOOTSTRAP_SERVERS, + security_protocol = "SSL", + ssl_context = SSL_CONTEXT + ) + + # Create a message for the producer to produce: + producer_message = { + "message": "Testing! Testing! 1, 2, 3...", + "ts": date_time.get_current_utc_date_time(as_string = True) + } + + # Keep sending the message in intervals: + while True: + success = await my_producer.produce(producer_message) + print("PRODUCED:", success) + await asyncio.sleep(1.0) + + async def keep_consuming(): + + # Create the consumer: + my_consumer = ConsumerKafka( + topic = TOPIC, + bootstrap_servers = BOOTSTRAP_SERVERS, + security_protocol = "SSL", + ssl_context = SSL_CONTEXT + ) + + # Keep checking for messages: + while True: + await asyncio.sleep(1.0) + messages = await my_consumer.consume(count = 10, timeout = 1.0) + for message in messages: print(json.to_string(message["value"])) + + async def main(): + await asyncio.gather(*[keep_producing(), keep_consuming()]) + + + asyncio.run(main()) diff --git a/utils_v2/payments/safaricom/m_pesa_express.py b/tests/mongo_test.py similarity index 74% rename from utils_v2/payments/safaricom/m_pesa_express.py rename to tests/mongo_test.py index 48b4553..5b633d6 100644 --- a/utils_v2/payments/safaricom/m_pesa_express.py +++ b/tests/mongo_test.py @@ -6,16 +6,15 @@ DATE: - Wednesday, 4th Dec., 2024 + Thursday, 19th Sept., 2024 OBJECTIVE: - To make payments requests from M-PESA Express. + To provide a quick way to test out MongoDB. REFERENCES: - 1. Simulator & Docs: https://developer.safaricom.co.ke/APIs/MpesaExpressSimulate - 2. Postman Collection: https://api.postman.com/collections/4395533-1a8f1c81-0502-4f9d-8699-d45551834b7d?access_key=PMAT-01J8R72MBSHP5CJ4J9Q46TG6G9 + N/A DOWNLOADS: @@ -36,21 +35,19 @@ import sys sys.path.append(".") sys.path.append("..") -# System-level activities: -import io +# System-level: +import os -# My utils: +# Utils: from utils_v2.string import json from utils_v2.date_time import date_time +from utils_v2.database.async_mongo_v2 import AsyncMongo -# To make REST-ful requests: -import requests +# For async activities: +import asyncio -# To work with datatypes: -from typing import Literal - -# Misc: -import base64 +# Common: +from shared import constants # ***************************************************************************************************************** @@ -83,19 +80,6 @@ import base64 # --- Nothing Yet -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class MPesaExpress: - - def __init__(self): - pass - - # ***************************************************************************************************************** # ***** **** # *** MAIN PROGRAM *** @@ -105,4 +89,27 @@ class MPesaExpress: if __name__ == "__main__": - pass + async def main(): + + # Create an instance of the database connector: + print("Connecting...") + my_db = AsyncMongo( + connection_string = constants.MONGO_DATA_CONNECTION_STRING, + database_name = constants.MONGO_DATA_DATABASE_NAME, + max_connections = 10, + debug = True + ) + await my_db.connect() + print("Connected!") + + # Get some data to know if things are working well: + matching_data = await my_db.find_many( + collection = "logs", + filter = {}, + sort = {"_id": -1}, + limit = 3 + ) + print("Data:", my_db.to_json_string(matching_data)) + + + asyncio.run(main()) diff --git a/utils_v2/serialization/pickle_serializer.py b/tests/redis_test.py similarity index 67% rename from utils_v2/serialization/pickle_serializer.py rename to tests/redis_test.py index 8dd2b65..fcf6707 100644 --- a/utils_v2/serialization/pickle_serializer.py +++ b/tests/redis_test.py @@ -6,11 +6,11 @@ DATE: - Saturday 26th Oct. 2024. + Thursday, 19th Sept., 2024 OBJECTIVE: - To provide a way to convert any input data to serialized bytes, and back. + To provide a quick way to test out Redis. REFERENCES: @@ -35,8 +35,19 @@ import sys sys.path.append(".") sys.path.append("..") -# To work with pickling: -import pickle +# System-level: +import os + +# Utils: +from utils_v2.string import json +from utils_v2.date_time import date_time +from utils_v2.cache.async_redis_cache import AsyncRedisCache + +# For async activities: +import asyncio + +# Common: +from shared import constants # ***************************************************************************************************************** @@ -69,47 +80,6 @@ import pickle # --- Nothing Yet -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class PickleSerializer: - - def __init__(self): - - """ - Use this serializer when working with custom python objects. This is meant to be fully flexible, but efficiency - is not guaranteed. - """ - - pass - - @staticmethod - def serialize(data): - - """ - Serializes the data that is given to it. - :param data: The data to serialize. - :return: The bytes representing the data. - """ - - return pickle.dumps(data) - - @staticmethod - def deserialize(data): - - """ - Deserializes the bytes that are given to it. - :param data: The bytes to deserialize. - :return: The data from the bytes that described it. - """ - - return pickle.loads(data) - - # ***************************************************************************************************************** # ***** **** # *** MAIN PROGRAM *** @@ -119,4 +89,44 @@ class PickleSerializer: if __name__ == "__main__": - pass + async def main(): + + print("Connecting...") + my_cache = AsyncRedisCache( + connection_string = r"redis://:dc4da94197c843ab6a730113c2b801d9@192.168.2.251/0", + ping_counter = 100, + debug = False + ) + await my_cache.connect() + print("Connected!", end = "\n\n") + + value = await my_cache.get(key = "name") + print("GET:", value) + print("TYP:", type(value), end = "\n\n") + + success = await my_cache.set( + key = "name", + value = {"first": "John", "last": "Doe"}, + expiry = 10 + ) + print("SET:", success, end = "\n\n") + + value = await my_cache.get(key = "name") + print("GET:", value) + print("TYP:", type(value), end = "\n\n") + + success = await my_cache.delete(key = "name") + print("DEL:", success, end = "\n\n") + + value = await my_cache.get(key = "cnt") + print("GET:", value) + print("TYP:", type(value), end = "\n\n") + + await my_cache.delete(key = "cnt") + for _ in range(50): + await asyncio.sleep(1.0) + counter = await my_cache.count(key = "cnt", value = 1, expiry = 10) + print("COUNTER:", counter) + + + asyncio.run(main()) diff --git a/utils_v2/.gitignore b/utils_v2/.gitignore deleted file mode 100644 index ebb370b..0000000 --- a/utils_v2/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/.venv/ -/.idea/ -**/__pycache__/ -__pycache__/ - -*.pem -*.pyc -*.pyd \ No newline at end of file diff --git a/utils_v2/ai/__init__.py b/utils_v2/ai/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/ai/image_classification/__init__.py b/utils_v2/ai/image_classification/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/ai/image_classification/async_blur.py b/utils_v2/ai/image_classification/async_blur.py deleted file mode 100644 index f69af42..0000000 --- a/utils_v2/ai/image_classification/async_blur.py +++ /dev/null @@ -1,202 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Monday, 2nd Sept., 2024 - - OBJECTIVE: - - To provide an easy way to assess images for blurriness. - Tried and implemented using HuggingFace behaviour_models. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# For using the AI model: -import torch -from transformers import pipeline - -# To download images from URLs: -import requests - -# To read images: -from PIL import Image - -# Common: -from shared import variables - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AssessImageBlur: - - def __init__( - self, - model, - blur_label = "Blur", - clarity_label = "Normal", - blur_threshold = 0.25, - clarity_threshold = 0.65 - ): - - """ - This class assesses the input image and tells if it is blurry or clear. - :param model: The model to use. Either the name of the HuggingFace repo, or the directory where the model is - stored. - :param blur_threshold: The max allowed blurriness (0 to 1 range). - :param clarity_threshold: The minimum needed clarity (0 to 1 range). - """ - - # Note down the config: - self.__model = model - self.__device = "gpu" if torch.cuda.is_available() else "cpu" - self.__blur_label = blur_label - self.__clarity_label = clarity_label - self.__blur_threshold = blur_threshold - self.__clarity_threshold = clarity_threshold - - # Initialize the classifier: - self.__classifier = pipeline( - task = "image-classification", - model = self.__model, - device = self.__device - ) - - @staticmethod - async def read_image(source): - - """ - Reads an image in whichever format it is provided and returns it as a PIL object. - :param source: The image as either a path or a URL or a io.BytesIO object. - :return: The image opened as a PIL object. - """ - - # If the input image is already a PIL image: - if isinstance(source, Image.Image): return source - - # If a buffer is provided: - elif isinstance(source, io.BytesIO): - source.seek(0) - return Image.open(source) - - # If a string is provided (local path or URL): - elif isinstance(source, str): - if source.startswith("http://") or source.startswith("https://"): - response = await variables.http_client.get(source) - return Image.open(io.BytesIO(response.content)) - else: return Image.open(source) - - async def classify(self, image): - - """ - To get the prediction of the model from the given input image. - :param image: The image (as a PIL object or file path or a URL). - :return: The dictionary of classes with their respective predictions. - """ - - image = await self.read_image(image) - predictions = self.__classifier(image) - classes = {p["label"]: p["score"] for p in predictions} - return classes - - async def is_ok( - self, - image, - blur_threshold = None, - clarity_threshold = None - ): - - """ - Checks if the image given to it can be used, or should be rejected. - :param image: The image (as a PIL object or file path or a URL). - :param blur_threshold: A custom threshold to test against. If not provided, the default will be taken that was - provided when the instance was created. - :param clarity_threshold: A custom threshold to test against. If not provided, the default will be taken that - was provided when the instance was created. - :return: True if the image is okay, else False. - """ - - image = await self.read_image(image) - blur_threshold = blur_threshold or self.__blur_threshold - clarity_threshold = clarity_threshold or self.__clarity_threshold - classes = await self.classify(image) - if ( - classes[self.__blur_label] <= blur_threshold and - classes[self.__clarity_label] >= clarity_threshold - ): return True - return False - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - - - async def main(): - image = r"/home/developer/Downloads/low-res-check.png" - assessor = AssessImageBlur(model = r"/home/developer/PycharmProjects/utils/data/ai/behaviour_models/hugging_face/image_classification/BlurOrBokeh") - usable = await assessor.is_ok(image) - classes = await assessor.classify(image) - print("IS OKAY:", usable) - print("CLASSES:", classes) - - asyncio.run(main()) diff --git a/utils_v2/ai/image_classification/async_nsfw.py b/utils_v2/ai/image_classification/async_nsfw.py deleted file mode 100644 index 446c34a..0000000 --- a/utils_v2/ai/image_classification/async_nsfw.py +++ /dev/null @@ -1,188 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Monday, 2nd Sept., 2024 - - OBJECTIVE: - - To provide an easy way to assess images for adult content. - Tried and implemented using HuggingFace behaviour_models. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# For using the AI model: -import torch -from transformers import pipeline - -# To download images from URLs: -import requests - -# To read images: -from PIL import Image - -# Common: -from shared import variables - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AssessImageNSFW: - - def __init__( - self, - model, - nsfw_label = "nsfw", - nsfw_threshold = 0.25, - ): - - """ - This class assesses the input image and tells if it is blurry or clear. - :param model: The model to use. Either the name of the HuggingFace repo, or the directory where the model is - stored. - :param nsfw_threshold: The max allowed blurriness (0 to 1 range). - """ - - # Note down the config: - self.__model = model - self.__device = "gpu" if torch.cuda.is_available() else "cpu" - self.__nsfw_label = nsfw_label - self.__nsfw_threshold = nsfw_threshold - - # Initialize the classifier: - self.__classifier = pipeline( - task = "image-classification", - model = self.__model, - device = self.__device - ) - - @staticmethod - async def read_image(source): - - """ - Reads an image in whichever format it is provided and returns it as a PIL object. - :param source: The image as either a path or a URL or a io.BytesIO object. - :return: The image opened as a PIL object. - """ - - # If the input image is already a PIL image: - if isinstance(source, Image.Image): return source - - # If a buffer is provided: - elif isinstance(source, io.BytesIO): - source.seek(0) - return Image.open(source) - - # If a string is provided (local path or URL): - elif isinstance(source, str): - if source.startswith("http://") or source.startswith("https://"): - response = await variables.http_client.get(source) - return Image.open(io.BytesIO(response.content)) - else: return Image.open(source) - - async def classify(self, image): - - """ - To get the prediction of the model from the given input image. - :param image: The image (as a PIL object or file path or a URL). - :return: The dictionary of classes with their respective predictions. - """ - - image = await self.read_image(image) - predictions = self.__classifier(image) - classes = {p["label"]: p["score"] for p in predictions} - return classes - - async def is_ok( - self, - image, - nsfw_threshold = None - ): - - """ - Checks if the image given to it can be used, or should be rejected. - :param image: The image (as a PIL object or file path or a URL). - :param nsfw_threshold: A custom threshold to test against. If not provided, the default will be taken that was - provided when the instance was created. - :return: True if the image is okay, else False. - """ - - image = await self.read_image(image) - nsfw_threshold = nsfw_threshold or self.__nsfw_threshold - classes = await self.classify(image) - return True if classes[self.__nsfw_label] <= nsfw_threshold else False - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - - - async def main(): - - assessor = AssessImageNSFW(model = r"/path/to/model") - usable = await assessor.is_ok(r"/path/to/image/img.jpg") - classes = await assessor.classify(r"https://...") - - - asyncio.run(main()) diff --git a/utils_v2/ai/image_segmentation/__init__.py b/utils_v2/ai/image_segmentation/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/ai/image_segmentation/async_dichotomous_segmentation.py b/utils_v2/ai/image_segmentation/async_dichotomous_segmentation.py deleted file mode 100644 index fb6d6c7..0000000 --- a/utils_v2/ai/image_segmentation/async_dichotomous_segmentation.py +++ /dev/null @@ -1,223 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Saturday, 14th Sept., 2024 - - OBJECTIVE: - - To provide an easy way to get masks from dichotomous image segmentation. - - This code uses a very specific model from HuggingFace: "ZhengPeng7/BiRefNet-portrait". - You may experiment with other behaviour_models too, but make sure that model is made for "dichotomous" behaviour. This - means that the model should have only two classes like "foreground", and "background". The specified model was - trained for implementing portrait mode style blurring of backgrounds. - - The originally tested model has an MIT license as per their GitHub page. The code in this file may or may not - support drop-in replacement for other behaviour_models, please be aware about this. - - REFERENCES: - - 01. https://huggingface.co/ZhengPeng7/BiRefNet-portrait - 02. https://github.com/ZhengPeng7/BiRefNet - - DOWNLOADS: - - 01. https://huggingface.co/ZhengPeng7/BiRefNet-portrait/tree/main - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For system-level activities: -import io - -# To work with PIL images: -from PIL import Image - -# To make asynchronous HTTP calls: -from shared.variables import http_client - -# For using the AI model: -import torch -from torchvision import transforms -from transformers import AutoModelForImageSegmentation - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class DichotomousSegmenter: - - def __init__( - self, - model = r"zhengpeng7/BiRefNet-portrait" - ): - - """ - This class uses Dichotomous Image Segmentation to produce a mask of what is in the foreground (or what is of - interest in a given image). - :param model: The path of the model. - """ - - # Check if GPU is available for faster predictions: - self.__cuda_is_available = True if torch.cuda.is_available() else False - - # Initialize the model: - self.__model = AutoModelForImageSegmentation.from_pretrained( - pretrained_model_name_or_path = model, - trust_remote_code = True - ) - torch.set_float32_matmul_precision(["high", "highest"][0]) - self.__model.to("cuda" if self.__cuda_is_available else "cpu") - - @staticmethod - async def read_image(source): - - """ - Reads an image in whichever format it is provided and returns it as a PIL object. - :param source: The image as either a path or a URL or a io.BytesIO object. - :return: The image opened as a PIL object. - """ - - # If the input image is already a PIL image: - if isinstance(source, Image.Image): return source - - # If a buffer is provided: - elif isinstance(source, io.BytesIO): - source.seek(0) - return Image.open(source) - - # If a string is provided (local path or URL): - elif isinstance(source, str): - if source.startswith("http://") or source.startswith("https://"): - response = await http_client.get(source) - return Image.open(io.BytesIO(response.content)) - else: return Image.open(source) - - async def get_mask(self, image): - - """ - Process the image to figure out the mask. In some cases (like the image of a sunset) you will have no white - pixels in the mask. White pixels represent the areas that the AI considered to be the foreground (area of - interest) and the black parts are the background. - :param image: The image data as either a PIL object, or a path to a file on the local disk, or a URL. - :return: The mask as a PIL object. - """ - - # Prepare the image transformer: - image_size = (1024, 1024) - transform_image = transforms.Compose([ - transforms.Resize(image_size), - transforms.ToTensor(), - transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) - ]) - - # Read and transform the image: - image = await self.read_image(image) - input_image = transform_image(image).unsqueeze(0).to("cuda" if self.__cuda_is_available else "cpu") - - # Make the prediction: - with torch.no_grad(): - if self.__cuda_is_available: mask = self.__model(input_image)[-1].sigmoid().cuda() - else: mask = self.__model(input_image)[-1].sigmoid().cpu() - - # Create a PIL object of the mask data: - mask = mask[0].squeeze() - mask = transforms.ToPILImage()(mask) - mask = mask.resize(image.size) - - # Done here: - return mask - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - import numpy as np - - async def main(): - - model = DichotomousSegmenter() - - images = [ - # r"/home/developer/Downloads/kate.jpg", - # r"/home/developer/Downloads/IMG-20240730-WA0001.jpg", - # r"/home/developer/Downloads/pexels-pixabay-57416.jpg", - # r"/home/developer/Downloads/summer_clothes.jpg", - # r"/home/developer/Downloads/low_res_cat - upscaled.png", - # r"/home/developer/Downloads/blurry_traffic.jpg", - r"/home/developer/Downloads/card_0.jpg", - r"/home/developer/Downloads/card_1.jpg", - r"/home/developer/Downloads/card_2.jpg", - r"/home/developer/Downloads/card_3.jpg", - r"/home/developer/Downloads/sushmita_card.jpg", - r"/home/developer/Downloads/niranjan_card.jpg", - r"/home/developer/Downloads/niranjan_card_2.jpg", - ] - - for image in images: - print(image.split("/")[-1]) - image = await DichotomousSegmenter.read_image(image) - mask = await model.get_mask(image) - image.show() - mask.show() - print("MASK!") - array = np.array(mask) - print("Dimensions of the array:", array.shape) - masked_count = np.sum(array > 125) - print(masked_count, type(masked_count), np.size, type(np.size)) - percentage = masked_count / np.prod(array.shape) - print("Area:", round(percentage * 100, 4)) - # image.putalpha(mask) - # image.show() - # mask.show() - - - asyncio.run(main()) diff --git a/utils_v2/ai/object_detection/__init__.py b/utils_v2/ai/object_detection/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/ai/object_detection/yolo.py b/utils_v2/ai/object_detection/yolo.py deleted file mode 100644 index a435ca6..0000000 --- a/utils_v2/ai/object_detection/yolo.py +++ /dev/null @@ -1,176 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 4th Jul, 2024 - - OBJECTIVE: - - To provide a class to detect objects in images using YOLO behaviour_models. - - REFERENCES: - - 1) Code Examples: https://docs.ultralytics.com/usage/python/ - 2) Models: https://docs.ultralytics.com/models/yolov8/#supported-tasks-and-modes - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import os - -# To use YOLO architecture: -from ultralytics import YOLO - -# To work with images: -from PIL import Image - -# utils: -from utils_v2.string import json - -# Common: -from shared import constants - -# For debugging: -from icecream import IceCreamDebugger - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class YoloDetect: - - def __init__( - self, - model_file, - debug = True, - debug_prefix = "YOLO | " - ): - - # Load the model: - self._model = YOLO(model = model_file) - - # Initialize the dbugging tool: - self._printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self._printer.disable() - - def disable_debug(self): - self._printer.disable() - - def enable_debug(self): - self._printer.enable() - - @staticmethod - def _process_result(raw_result): - - # Extract the various types of results available from the inference: - speed = {k: (v / 100.0) for k, v in raw_result.speed.items()} - class_mapping = raw_result.names - probabilities = raw_result.probs - boxes = raw_result.boxes - masks = raw_result.masks - - # Construct a default response: - response_json = { - "speed": speed, - "classes": class_mapping, - "boxes": None - } - - # Object-Detection results: - formatted_boxes = [] - for box in boxes: - detected_class = int(box.cls.numpy()[0]) - x1, y1, x2, y2 = box.xyxy[0] - formatted_boxes.append( - { - "class": detected_class, - "className": class_mapping[detected_class], - "confidence": float(box.conf.numpy()[0]), - "x1": int(x1.numpy()), - "y1": int(y1.numpy()), - "x2": int(x2.numpy()), - "y2": int(y2.numpy()) - } - ) - response_json["boxes"] = formatted_boxes - - # Done here: - return response_json - - def predict(self, image, show = False, verbose = False): - - # Process the input image with the given task: - results = self._model( - source = image, - show = show, - verbose = verbose - ) - - # Based on the task, interpret the results: - results_json = self._process_result(results[0]) - - # Done here: - return results_json - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - # model_file_path = os.path.join(constants.PROJECT_DIRECTORY, "ai", "yolo", "behaviour_models", "yolov8x.pt") - model_file_path = r"/home/developer/PycharmProjects/utils/data/ai/models/hugging_face/object_detection/YOLOv10-Document-Layout-Analysis/yolov10x_best.pt" - # sample_image_path = r"/home/developer/Downloads/2_cats.jpg" - sample_image_path = r"/home/developer/Downloads/flattened_image.jpg" - my_yolo = YoloDetect(model_file = model_file_path) - results = my_yolo.predict(image = Image.open(sample_image_path)) - print("FINAL RESULTS:", json.to_string(results)) - diff --git a/utils_v2/ai/tts/__init__.py b/utils_v2/ai/tts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/ai/tts/easy_tts.py b/utils_v2/ai/tts/easy_tts.py deleted file mode 100644 index fc4bb9b..0000000 --- a/utils_v2/ai/tts/easy_tts.py +++ /dev/null @@ -1,175 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 26th Sept., 2024 - - OBJECTIVE: - - To provide a fast way to make audio from TTS engines. - - REFERENCES: - - 01. Usage: https://github.com/myshell-ai/MeloTTS/blob/main/docs/install.md#python-api - 02. Installation: https://github.com/myshell-ai/MeloTTS/blob/main/docs/install.md#linux-and-macos-install - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# To use the AI: -from melo.api import TTS -import numpy as np -import soundfile - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class EasyTTS: - - __sampling_rate = 44_100 - - def __init__( - self, - language = "EN", - speed = 1.0 - ): - - self.__audio = np.zeros(1) - self.__language = language - self.__speed = speed - self.__model = TTS(language = language, device = "auto") - self.__speakers = self.__model.hps.data.spk2id - - def list_speakers(self): - return list(self.__speakers.keys()) - - def speak( - self, - text, - speaker - ): - - this_audio = self.__model.tts_to_file( - text, - self.__speakers[speaker], - speed = self.__speed, - quiet = True - ) - - self.__audio = np.concatenate((self.__audio, this_audio)) - - def pause(self, seconds): - - self.__audio = np.concatenate(( - self.__audio, - np.zeros(int(self.__sampling_rate * seconds)) - )) - - def to_wav(self, path = None): - - if path is None: - audio_buffer = io.BytesIO() - soundfile.write(audio_buffer, self.__audio, self.__sampling_rate) - return audio_buffer - - else: soundfile.write(path, self.__audio, self.__sampling_rate) - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - speaker = "EN-BR" - tts_maker = EasyTTS(language = "EN", speed = 0.9) - - tts_maker.speak( - text = """ - Imagine delighting your doctors with a personalized calendar, - crafted from their own cherished memories. - """, - speaker = speaker - ) - tts_maker.pause(seconds = 0.3) - tts_maker.speak( - text = """ - Every day, as they turn the page, - they’ll not only relive those special moments but also remember you, - the one who made it happen. - """, - speaker = speaker - ) - tts_maker.pause(seconds = 0.75) - tts_maker.speak( - text = "STEP 1:", - speaker = speaker - ) - tts_maker.pause(seconds = 0.3) - tts_maker.speak( - text = "Start by identifying the doctors you’d like to engage with, and add them to our app.", - speaker = speaker - ) - tts_maker.pause(seconds = 0.3) - tts_maker.speak( - text = "No rush, you can add their photographs later as well.", - speaker = speaker - ) - tts_maker.pause(seconds = 0.3) - tts_maker.speak( - text = "With this, your engagement funnel is created.", - speaker = speaker - ) - - tts_maker.to_wav(r"/home/developer/Downloads/voiceover.wav") diff --git a/utils_v2/ai/tts/test.wav b/utils_v2/ai/tts/test.wav deleted file mode 100644 index d38cfc00b1dfaeac3bbc500cb2dea7b17deeca71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162150 zcmeD^2bdH^vy*2w-CiIoIfEbwsGy)^kqm;M1j$JOMS>DllA=UO0-}fr5*1XCq=14F z6cqzm^1-Feljl`kJ8$<+E(!Yo?|t5W>~yHy)z#HKz1pc&ix$0JV5r9%cWplKndi&I zQxrwRr`ZOIn%Rw}7%HCX-{<*04FJZ1KPvN^lmPUPKdk5VmlN#GDcaEFnLpZjLH+;e zkJ{^I`k=jHN6ChX+L1um?YI7nQbt-?Yj!<%nQvW&SPDdcB1iN)7NX!~q*HLLf?z}? zC8a3t-_P6Tm0bqAZuj5(nLntTH$Up_P_UO+cft1_j3IIP2IL*{E}RDx~yxN}Qc`?i_EwWVdFi?9%5|kCi_!*!=X{^zs9XFu7azW>o%J z`}|pg-1ytt=LVCVBI0Ck%UX~2-;93V_*tplYAu%E&EzR4{U{Am`YZT3<7B69*K@}B zJA3{L_rGS9+ouKc&yAX`Q|vQ$_}qF6+84_;Cpi%&e{^kX`GdYWR90>_Me@8k#;vtx z<#%he^2RQx9=85@Qzj7E>D%~Z1he<%m+D`Kv-#&l!S1)8Il<+({qN8)*88*5&tA{3 zoH@bWE;~f&BgLF*(e|86S@Cm*%U=)CFK1ZNA1iUru=(k+>1BQ92lMZOK}n*tiCoe8 zt(LM<&kwcSF^GKGzw<*kzc8`ZxEW4%-lTpr$eXuig~!^>;r_nX+&L2YvVZ3+P43ik z#=Ch>l<&>^3%bJ~^m3w=pLV1Wg|p?0w*2>%V&%w z6l{xSecpaP`K4&fkze?Nu3!15d;1{K*KNJX^Y+osi&B(tPLKtY2%&SLl)v^^ex!Ws zH1o$9p<=n`AFCjc1+$NBfr4=OZ-TYux3$hbmf8FNEPHm0KSTW8Ew=3W<5Mu`{Lzd; z5qm}Jd6)h#*)Qr1f3FpDvsyvzl{b9e5IM^ewMfn|x%b!)t55v3YiiiOV&I~MM*mt#2)DGEZ%mb)N0 z|0Jv}U+gnC{s@;_f5G~qTyw(98zPEn!$w;QUP2l+mQ9a5?bh4-%uYMX{r2)9)R0?2 z=o0A)hEovwe>bcxzpVkO+gzi)cE8;deP+dow%@!|FzB1p$gLIW=hpvs_YwUHBE#Qp zk-Ri67=K&8f@qkR1O@BA{hU!JB16G!fjG833Z}z<6LeOcv+85lvclY&^tP>UjY<^T zmNDA$_m+@fEQjp1?ESH@|JTd5t^Y6SSTI=&2L1nU{%7~l*by(NZL-t)&(w(qw~M!J zkDTen^2-~Vcu>yN{=0f?eejuI$?}4YrD>P*OZ)GD%dS~o^8Xz&6ojU2v#ig8P`G`t zQ5o`2li=hZ{-1`7>J%;gb28-3(}u`fCL1!lhv$tM3xQOk_1i-;N-wVx;g=WGt@Oug zmp2_-|GXjpJ0bFx--aM|!P>29a;x}xanDXadp$4w-1}{7y>)v(F1a3Uxl;fCtBMzo0?tE zO=<#TW90QL7<69L{z`wr#VX|@BflTZ0+!we+_RhWI=i74UZ79{-1w&2`2f@ zKUQ`~n>)70mb1f=dfpH>$Gdqekv*1X?8ruYV@o%ul;74^Uirnj6*waKtx$-?we1kw zmbDzKU*6E!M?4lgE8U!GvE!8!O#a(*=Wpvnp82Pm8)R0Rb}cuItbMmr7Nm^yVmV~5 z$M)s7Ok}jb^NW=~IGbwpnLoV$7O1G)cIls$jBw4Jr!ATN%pLl6_Szird24i|lx`QD zD8*Zq?bal^9oVtDU^#D^1;@ypCgGYN&V)|>A#cu?;Aht&TDP(O++z1cpEgXi<@S|q z+Ii`lSATYiV&SnITh9)Q_1JzQQ!G?e%A1#BVY8P13{Tdeto)+{x)xXM(IcUV{xMWS!KvX%=VQV zy;#sFeH`ff~wf%>1cKNS8P0IvCq=HZUCeO^uP3m?#!HL%LQ_4!2VBDMe*QQCJNsYAHHi@NTSVlGr+0sTeiIp$PpOolK22ox%cJ9wusff(B z+_ADnX&^juvZ10S!k^G1tx<^xv@IL`zn+C~qz~Jo9%ECnpElH=Wg@mgI?)m-6WTVW zU9%}>eQY%5@Ybd(4zw&5Rgwz-jdtSp%znNU$UyUl(Qc%(sEY-;3b z+r)0QxgjjJ+19Y32@TuUgr;pf{Qn@>e_44U6@2_}jFj(nK||xnPS;$8L+I5j%2(p50Oj zJ2#t0Rwx^mXiE6oQp9Q+^>r46w8Jp^vO52*_7;d(iU5@F|$7jCTT@@BAs2wC!u2Vun*zbG<+3^1bZp8|yzG#qhrpw>q~C_JxyM3bAA!q0 z{}IZ@Bwm=cCAOE8?S6a`?pPv!u{zjou{}f%yT|5hKeIzdsYUT@J#3uVdRDqN4uQZv zfv4c5jF}D zTShBJdr3KKe-sZ(x%Fj-%r9(K{#mJHuSH?A_7KUlwqY$N_&-Db*%Aci<`iOei!I-b zZfqNo^X3?_tu|KzZ&S!xvs-P+WAUSXSxY%l$O`pu?OzN0Yk_|)@UI2_wZOj?_}2n| zzXfv2U9dfSU-o)->9XVGRlga&-Ig6Uw%snrK5h8_{wK*W?R+r$B=){_`Lol{PS@_w z-cGC;tR1*@vv;S z$3C%a*R#WCuM=35pkVg1>D$ljbhFo^e4@Ov!^GBYy0Ny2?a!%f<7Mx+>11!ush$&^ zoZxe6Cwk{R9z-ttJ0~iLf4d~gnMZCte>ZoVzHJG+elwW}46#XWaEO~%|IO(C9c^U% z?C(Ewi0U0J{Tb@7wGfJb4fl3ok#Vqfi&DKE<6~3BXO!~oDaFzz<=aE|uTm+PhOyHB zRgSlUXY%09F^WtAH|H_M6*8YNPQ*ex|9RJfb zTYh}rOqSUGoM3K-mvh_A`Q!}$-_~<`tPs_TSU6h$Z!Tr^hT9`)R+|4=YuK{f9?fnC zmH)Iv`Qsm*(+Gb%^!}%47pw(^1U^#u^Rk!O0iVz@?WPG#Y9@sTJ{p* zgsnEu+~K46QTS-v%}P-?yL2-syUm8l`m}qqKBF+C9rgUPu2CqvbTca0X7@**c3W2Z z*?HttkJ8Crvg!W0JytebpPcANWsa54rWvJ_6TS^ep1H$EWkKjzeo>o8VPgAjE(9(X zCbn#Ix1qB>V{x&^wqNWs7ACeFOUZ_}Y1nW!jNNay->e?nXZPFqu}>Q=wk@`tS3kn$ zMn9HTLCZGpSo*Q$?DTB-?Ct;7|Fyus7Wmf!|61U7Tfklq3;IMkqBvP=(e}JbM4P;z z3fdnl8RF(&x~z~yx~y%v$&wX5yA*k0+WoolvpFEFUCs_4{pEpuOP)~94rlYr>zS1b zLKDvR)0TtKA-{Zx{{F#+CB5X=E#zi#c6d^^zY#Bb1KGwVzpSwDz{hg7%f#wLW?ORX zvoUQ-*kX^6ZLwJ1QF^3g%WP);Dlw{`jf2l94yi@^u*a_1C6ta}5ZOpQ_V*~U?NKb0 zfc!F&STkxT!j-g=-?ShFgeJPiN`bJ%J_MiCi6w|sgpRE@_7fS%H=#=;v9Y4Rq(Ru| zuWHEe84yFy{AB%Ir)^7HZbHT8Yxg35{3Cqz|Fr;Ov48v$2m277e4`9Vh2Y?Ca2SgF z7p#eBgv?cKB99Nv{nHU;i7gW<3_B7 zRwgpYU>lSjsUjt$inPe+AvS?Ue?sfv2qI)uny6$bC7CNYo;+~3M;T!VbsR|*eLiGaw0i1dajP zlt>V^{O}0^hCSEFNFxsce8LGIq-^s;|3U3kkQ+x1Kd3Kiike|x)I!)!#vXaveuKIS znQ~B6$V#=YTWO#j(jjvLJzRkr3;g3KFZ_!GDR`i*WR8*nmbbl+q7*A&`9OyV*b#L^ zkFh|ufRzsIGT0Wq+XEkWrjMiECO}G1cLA&cm;oyTK0dGmnIXgnP);e+298V{phpl6 z45h(nAm0q&EQ73Mq|v@S*p@^zLIw2~flsW>5Z(d&otfkDUq2l4=1ZWvrk%k2}##zjQ#Gy?6 zwMapydN^%77;Y98q5!V~ii@ zxh&wi{;<2Asc||$`#}m0wD3Y71Gd2#5eA8fkKtTHInk0~po0=PGHphD8~u$$Tht7g z04B~&88Fa80w9Z?87u6VN#KdZ_89pytxs%CA{NdOoPi!H5k7HHMo$fcBqr#AG%VoZ zvu?l#=Z}>sFAcE*Es7k`liXkd^bsfE<2-O?+78Dm2wI}{flNOjQHjJe8em<3?6W!G)Bc4jnKdLrqUG%MmqcNt zrh_(tOx_p|$UH{hWHQGDZGp0)RwPD605&7j<|Hn$(1W9e@e5}?Ss_UzB=*Jl#)2(% z&=1Ee2o}Z&6oANd1O5d;DjsZ+L=~k9XU-qg)wU*jKEnE81kn4V<73asFyN!#5ud^J z24g428H@p*Ogobpi@M_6Ml0h;5Q#7{;TSQXWjsic2>P?f z(1URvBR$SrGSASmXlDb)5$%g*ve#T5hnLjqWgGVV-$ zbbv{*lHp$vq{3bjDbZ$Ry+p4>k0MzHN`^jxGa9uZaTKFIiEI}5j|XN*B7AcY!*JC| z2OAQNaTG|5!cif41d$E>oMddaKjRZe7jrg@Hl!DQpU6To0$i1`1?RFKxP>yUi+$Km zGOFmhgCmG*8L>IeXtH)A7xWc7vJe00 zDO!nmNHp6d^AT5fTyN2G9vC@$w9(!;3&Y@_sql~33?mNl0h9@65?N_UEV1VpM(6;H z09naVI$RfUy+OO%aU0{g3~;#027nf>ICkVkuO=gm@d#%xt_B#PP=1nW;4H_r4d;Np z&PC@~G-t+K1o@*CFn2-^#7K@&0P~}?%=l_rB4`#5|8S*2{tQreg1#PTLErI1yhw(B z=^!nxe5f6X`M74G*W{(iy1YJjRP!AA{_cKt_7HdAYb%@bQmifEsU5Xl42~y z*nyFRDZGVTkw%z|qc2LYW?la}u**%v*70;MkM(4Q+v1 z;(Wv07}p39B=o{RA~*Ue`WuP0wuhjWm`f4LIEU<1d4V zUnLQ>O3N$ggCja4m0{Bjm%q&C%+mICuqY%l#D4?DWKIH?M$!HKi#<3!~BW4}M zQY332(NG4SILpXPA(1I_YGuwY95JMiG|0+kujaTXwRcP?1?HNVZ^w`Y5ix zB%82zi!RWjBzy`3Wz57;?iA3J?51!I;5;W;d=ltf4E`kmZL*I-&X_IWZU^&h+&y9x zLk%$M61x@x>+&E$22e(SCnJexA{tpW05EjxDd znOT<(^(4@k=q$m^xCU^)L#)DF6e9}mhROJ24un}3O5yi7 zF29GS9XvX=WfI%Tt^y?> zYbwcKB&g#$f$-QvMw!eJ%$adjLQCU3!(D0s?1?^yql3FdjEW?$A-jeUXmJJfzYO2W z0Iy|c*zo{|XE0vyn4&Ne#lTt)7>SHbO|Ak?I+W25@fijViPW7`S*ko$2H?faxS0Yy znDL^`d_eoWbq07SmIvsSf=>y+VKYyZZe-FxPr#TJ%=AqEA95!_)Tu~S0{A4bl?jlS z{-EOoD|#}uC1+!p@#9L0Sp+#J48h1=$dBm|WECd+HXp!UwJv~GxR!*$3yT0`HL3&zAC zy#ZX^V3Cp_e<2vHbchS5;a?hXz?GEvO9r(3XdQ)rXMw6}xd0w1Rmk)yk^vDv<{_&4 zf$}-9!5P3ppQ1r_oUeu9A6ajSFJYv>D4_xdS{V1mWDb(Ni^Sa`RB@0m4)jY0AGidN zB-0nc-U(nw^z#T<2xCkVRhha6^eY4&h;b9+e+2vx&;1-A8G5=O>KHrG#}dJEB{HSL zejV&|8lvbWkc$HdTp3+J=_+V*0Wfv&jFK?Y6`;og9Z$gL9LQ~1@z8!JP?SMBT(>E} zE&-lao+=GABv>=>Tm@HMJRc$XHm(W2OiP^xt6l~=6iAr}9)hb5$&XDK8`K`#$Qc6q zgJBh;?gl+8!koSnxD*DjLp^Z^5P|+1Ko?iQvoKz#pybVz`W~tw^&ogl5=fa0vjkU0 zT&X>vjT6QlrN{uiOHg&FHdGI)JM}PF=8E;TwcYyE+GBkO@dsA{j4r9*RVS?Du-;q& z`k1X@o*abwr`Aeqg|!Zz2Y{k!-APrYs(_3|zzQLNz65-6$8LfpE&}{l)+g2%FoI>M zCR7KiC-n^VJk_6S2HsT_yt_WgTNFlC1&(Jxn_ploSg?Ofsuw`@rn*oq0MY@JH7fx| zrWW8lNVTRqQH=pF9XN!nIDoHDb)@=HPf<;wHO2bDI&2-W4uVc!T0a5B6!6pUtzFh; z>oee?SS6_YsCHCmpru$ltQpo2Yk)P;T4n7AYbJvy?6jsq%TQ~IwZQrSG(gGLTH~z8 ztol|ttB6(6YHdxjwphP`rEumJgE7Q)!VUAUHfU5jbKDAn4X%RC&t=AS5A^``EcGFE zhGOXiny0T(`>7?=FseC>bA75SHIAA`t)_NRhpBI<&D3maBJ~n{ub@7n4pKi*$EeQ% zdIZ%9#;zLp|NT^37{AU?Zv}QO2lh(?kHSb<5+rB{5FB*|benIDu=-eoLG~He8`f)} z(M0QIYdU=9S(`FPe!A7xs$h96$_ko(lL7r6wwgeTWu}=vGh(W+G{%9(_rs^Cb;ev} zPBMp>kDHy$XU!dEA)x+-^_H~+eBu+BSv>H5jrxT$sO!{L>O~mwd%%N};9or$vw@)R z5b%J>)N*PsbqOp{ioTz2L${|J(|6OA{`l0TyVA4i-{>05L}oX0l?gIunGcw!n6iwI z{(=62{*?ZR-b#N)zef)ROYWs!0R7in&8)IkL#vC`)GBPHnTO1|W@D2!DYLWro7vQQ z!n((jEX~wR+2jFkIn4EY0PiPjy!EKn$f|7l%suAk=J$a4x>?`Uj5Ed$#t~z$vBlVC zoHI(AkC^Sv4(8M55_7A$-dtq9X>KupHdDus7#3u7yXj@`#H#5w;tnSwH)|=Kb zt28x|`k0cbKJ<0EAG4g9&kSK|F+b3)=r3W!U!e|A@pL=-d3qu}f_{vyPv1p1qvz8O zW+r1YBiIvc5v~*$W_Po**x~F@c0BtQluxqf*llbtR%hO4?qjCWGpONKZ?ltem(FQr z)z6h3O0x2>nyeaHQ{zdq0?fhf)K+>Dlfsl?+X9_->>-9`n$vq=c3lSlxD&=+Gf$YK z%&;-rXl)cSj_8y0R(gHCwq8U}*Uo5ut%g2B=Z*J_wr09H1){_~;LR2PSjBF@{GMc0 zvwk$Efz3tpigDd=nRUQggUpxB55PWdm^TApCON24)FH}CkEC^aDN}+S!M@FIU|(Zv zu^%yYnUnPU^ec2$GMTbkH1&ATafwB_+h-ky~N$e zHQ+{a?{OQs_FQeYB;DMsq4k%a3Xcly2t~pl%FWe5T875xLG2#hZMVEZeb)EX2 zdRm>Vy{vy^oG`z&##6shzrq+=)*P!pM2v4B8eF$NvbtKQ%@*bsqpi`@c-;sXEzODM z+u$wln=hD6%o1jTS;g!DJ`@l0u?V%2N(2c$pns%OX@Pl|*~m0xe`LFItGPKa@)wxt z^!?Q1R#j`8wU-LgJdFHlb}`$OZOnemzQQf$zZDLO)uhAXIpHAxBUg`0ZS|JdjThd&D#lMQg?`42djTg%R4Ut)W* z^;m{|hcW58^k^#CT5Y{*^|eH6lKHFQHOlMtwO7^Zsz)uY_E7h#4YZ?RkH?KBW<6L5 zexcgZv*?Xr%ds>^PlI{C8Y0OW@Pzwd{`7zuRMI>HUNp?O+YpVSMjvCB5iulFF)kRV z48Kvsd=+BNPHQNYOjV~l!q}{$kI`Too7~3UmLHf<0Dl<#{#_r zTLbHY-tfvuyz+qBNE@u*Fg94d=)+7ZyNfH$d-zSkxsbLQI}&^|l<=8!&5LGfEl9^p*On`fPoNP8p4j{>EhEQ$sYnfcKc@ zM989gQ0u7xRSu#=NjjeP(1l@)CIjV}FtgXPaa>#Od2TY-mGiSNu*KN#nHkK3OnGJ; z)0!O%b~!365sOQmqz9$b;&Wn4v7b0eEGtSvDQ*aD8O78J;RF8V8Cv?TjA8!y!DHbg zaz}Nb)>~h0w72@xOWD`>Gr~Zzj`*z5jjzQ$%6`XeW_ChscCr;%j$O?ZWrotTsR>pG z^KOVmt+dxvzcOAas_c~~%g@PsISQq;)a~HD{*0mN?Ez30C)g9U( z#Us~@91EWfH;bHzjFIapcdJipH}tjUH0ohy0o#vT$34Zp$9}>bhpp~?)Em}au59I=c*lIl>Q9}es=$iU9inMb z`U*suPLQjXq8fpPO4Fz4sf+@a8N+U3Iqnrs;5)&`#SiBCvE7(!^l)Y`JB1%0dL8l3 z`<#0mw4=WCwm3@MCT?IH=<|%isXcEb-{_XM!zYB^i%eBcslRET=@*PI ztTv2~3kWyF>tZXhyU>9j%BgHU?gqDvKh1CCoAMuV*Vr@62KpJQoVDF3s}EBT%hMvC zhr5Scg=d8;N8;sL%ByM_{fsfoQYjDfF>{SM469;8Mx_tYuS4E2nmTCpvbtFxT1_d2 zewW@y*P_E#J9CNNQu{#tSgoY()1J^j(?8M&>UH(udRe2Q`H0nxsz$E?&sYQN>~UCu z8^XRtwMs$UFG6plyD}G;8f*==2zv*_nMttzw&iwn7rEt}hkKQMhPBuZd>yg1qm-+e zd%9b8U39K+%#ecO6|hS;p*?%l9H1-<6ivI9e8;u4Ya4I0Pv-)S!yn5%)va0s;{oe4 z`Z-P(c1i;sP6sP}B20j|+kxu>Bk%&q=<$1{`Yb1=3;spqJ5kZ;tY@1u*+m!aI9 zx&Zmy?97?;n7&49sKsk(>S6V`T1tCIYpxeI3Ym98hW|FDL9BAnVOVpIP^+jnA>&l2 z`(Q;j=(&u@wt{&yf}PARV3)IV*!k?QYpJAqEmBSaF_7xavyQ^ za$3@(QVHovF`h3=7t@~(Ka=tO^`loNUM_NV@AXpYH3Dgl+s08Vf5pO8RD^nz z`i`1LH)i%SzcSmH)ey(7F>baG>*jvq+VKzbKZ9j9bJO`W;eeFxEa&+o&h4!h_pY0E zO>oqZT8M88gZM4XJ?0SE=|kpo)T%K^wD-05>=F0&o1Onz^Em1quH~}AVy@?Kzz6aS?C#v3d87ikXt`Pe@ZQ| zN}7xG7FsX$cV&yRR@tO%hR-3Tr24&@qCH`pGRsgry_Am7#h7Gz0!`Da!S4pbo@Fmp zm;RRS%)HBd%6!X6kWIV^IqPC}I~!)paS7Zx_IGw5H=4gDY>;+3e{c_o)8b~wz2GVB z-sK$WXf2fyXYmFjSZ^sU0`Anbs~=oCc=7Ga=aYM;F9@!XCu?hs-qtB<60?cxC0=oi zbFFs0<-8>EVrRY(H;w&_9l^EWukxjZ(|l#V0(YJ1PfxYR8w<5mrJtM{-X8J?=Lg3I z*9D&leH>mR8|n~ajr9_Jlo`h^VF$CNVSS&)bY{vy>}^GV20O~W)EcT7{UKeI=>$3R z{j_ckFt_Wiwc2WXWfQDxN97($NO?;gptaHOHHw-6^O*HM)gL14@AS*G4m+Kq)bDUQ zxs)11Kf`olWmtzAa&@@cTp{i>dxTBkp5aDw23wOI%s3&>d6Rvge^#31x;t*I_q4a3 zw{YAFcOh5M@vx($^aAgt`)FKfc-n|-oi5#dvH0bR$$Z*p{@vk#(nBw4Zn8Gfy||X* zn~uHC{mv7PdQu}{G}i|93D2>8x$e9m^bm##6@)%~UG6*PQF^8|)_6dRSIS4Gg&GHk z2dW0%gna1!aH3pGovt4?S5UvvE14v=4yvMQx3=0COSI1FOUj*!SE;TvQ0geHm4nI#^`zF=IBAZ8JxC8`6jO?MnLYrgAd50{ z<{-qKk>D@2*#J9_E6R`MC-4dU6z*=WEXQzLU`(E2x3Cg73+7Tev5w;jR~b*0xPEco zxWS&W?uT3#98;u2LK63@RYqM9D3!YYs(JCl3+_wIwGUGl1g6Ly{U!53>P319Q-<4Ulb_#Qht_s=RJnAU*G~JWw#g^xu z=Wp)G zar3>E`ja>8t?Wdc#b%WIciD$#c})udYD!?xF{vIHGJ;prCza!0d_Hp)q(!6v$>=6X|9!&+luSFlEzwP2^*+IpVaMW1BW zun%y@xXFAwp`v(H{7U>#n98lD8=3Rfj*&j0_|TEicj0}JMe^OsB;`}3hU(Pn>n|El zo4d_%CTo6ftTzrBRpGR!HFYP`h-)ic7Sp8BjxLT)(gvX>Ka6V$KJqGefqRnQ%b(%b z^CS3Ud}r~Jzlt*Nq*<7e*_y zhqakk;jgHd(J~9-_{$-wK5tgPfm(hp%w7kh%-=xKnI(ZZY>R_aW!u zC-KYpw|GXV262~jr^ltlPe=&HukrTsRCl_?yZC-wW41GOw>CKFNNsWDnct6|>wIC` zH8o?X+{74aEw+Z38}v`K_w~oD@yrqKT|S+w%GRTukUtr8G2Sl?ch8CwymjKnxC=Q) zh<9<> zJZqh$4$-?AA3Ke&Cbp9{N?oO9Vt-y>Pf_))RAZOEO}n5rP;V$5)y`ToeW^Z3zpQcE zH_9&g1({PWDO=Tc+GkoNJ>J-9{!R(3!Tll(mKr!U&4pNKZYwt(j#q@ zirPa)8>=XsJDy`RxD)()!eCJs%Sh|QcZC`-BPY;{t-@w~BdCXUP1p6H{*Jyw8>}{h zJnuvKj9gTCOnFs#4?dql9$Z8_pu4T<^lG*+yb%6Ks03b8OX$l_<<|;9@vyYSLAzGD zTY5&i9j+eEADz0Zr{`E)`S^_Z-SJ(#f@i(6renEuL@dFtwQfXerJujj`+S2lU!G05 zv@_Ki?xxX3ves8w99|ae7kn^0M%kmMn_s}Ym5~&~Jjb;Xn>uTIR(YKX9THB)i}9!8 zs(Vg5Q^a{(XZoO7-e|8^fm0+GoUt|4eQF!!naGMz*WmuZ%E0@9^MU@sBBA6E1!oWC z)w9}SqrBCCIt3@x66~@cgq&s;*Np#?H+WX~nAbRtJI=JHcf$(&G@R)UFskTj>KY|U zem~qaTqklu9;m*qRfUt{E80$&lf(4>hHfTPGa-}h$34sk`MZRoLI7^@AZC{-@iEZ z@>AEJ&6p9YBX^g#g{ud@@@>u7=UX1U7U`)j(rCS#{-7aPJ0YTMl+s*%;?8>CiTB0- z5YNW zL0^cHGnC$11-+-<4?LiYvA}FWJ-`&<2Js3X;y>n}=BxAPxJhs}TZ1ji9Hw5kW|_N; zYr3IT(B`Vm)q1dh466&ZU$u$a7jQ~St8>*oS{qm=U@y*m3p=oF++MCN-$JM{m%yRX1PItT|u4bnhYN$clhO1{T z-g}8jekLP6Qc-QCxWaY)m(q-suBl?ixj>o7XYy%zxBR|xj}A9?xC!EY&dTnpo(`V7 zJ$*dCd)#rYJTqPQ!j+Df_%K%jX7FnMDZV{-A2Yz3qEl)h(lRWC8V0`#Ob(0+d=h91 z*PsrEW`@f})<*7?56N9&e_UHzuY1jMR#~bmy_pHI75Mvvv%)UnYyN(&H?x&G0`Gwu z!W*jXaB95(R^rS0xB4WbGMw^C#wl%|8dSbhrm1JN1;$I(L-f7O^UQb5CiW>f!*9wB z=I4vk9s8Zf;UuA}=cGH)z0XzJUBjcsB_vEsyq>rwkx%?SUi4P-ly&*U3}%=9M7UGN zpc^%kS6|#!ag z87dYk85$F+6}~6J%6G~8A`eH3MkYjFlk2OU^m*oPYBqC-9nYmf-d>8I$t`9lFwN+a zRC_Dg+;5&VTfw`?Ch(?m44l>cXl*ga7*FW6w2JB#Wsh22Ut?6VKBD58O0179%gtru z*^O)hpCFtUG^wL|Y}~IN%T?3W&ov9I(lqYDgo;ToClyLMp3u)*%Co~=*b{N~;b)o; z$`$>KQtDj)Jtf00%d&o#c~%=5uAlMsjS0zzt|`e6q+Wt6R>^_aLgVCZ+II6BdMND4 zd44*anmor37aB|Rok7=j*KTLTF~}h}+BxbtS2}k&&WZE*txOy1N&SFYUzL@BGDN+g zu2T2G`dUY>6!|6edvIhhA-FuSBrqmOg^xydD_gZL#sE0gUtv{+bJ-y@!=%tZQyr{F z;a$M1=F3)nx+Oc8>%+BWTQQ6240uEAhPMW@OGCYiR}#lNs=1c9db&EfTDkT*8#@m>JGtZHj(fjIsGZb4X<=eY!u%kwaR4bE(-*{~(g$3#a^=oPKTQ_0nmZeH{Z&1QrCo4UP#vC7Y_# z>`XO>sIh?lo}R~aOzLfTAAHKv&26wQ4yP8=#~2QFQxQ1* zYtP=ztcJ6ggUo)mC$EV|oPFF+x>ve%=Thf8&Q7lG?vkEwJ-^1S_Hy2Zp4pyp-Vfqi z#eE@7WDe`CBW?Uk(syS(5<0Jbh;J_S-tx8JQeVR~^TwSi7gBqsUr1k)@s9udP&Z|% z&cZ#2qgEK+;uAGQWZx%#|~KglN3rB}NM4cQtFY7QUU2@g z7v4WtgY*3IaNagdpQZ-nUXe|qXM!n#9|LCs-Gk#pC&E8QI>LF%9Qh;JkUJ~uls0NB z?V|RKwoJXEF4t$lxyrXxfZoKkWE#=CVUL+ck7MS*+l|)r5V-fzlzNcf$H2QlJ`LUt zzRGQs8x&n7Mu|*6&|5HVobFn=JWa^%BIk#zDa3qQZJ{eup^$8DJqZUN5G0mn%d%h9`y21bxAYq1~bNq14dG@bGX-h!3}jq{yY! zQ)+RoqxzTp`M(R$pfKuxDdFtdU7NIaQjFK}1*fx-+p z_xTxeR+cLQr;?TUm-tq~MzNPeaTam+a7*qVTsK@BUEe#KJJX$ayLZAKZkcZ3}-$(TbmK-7p((EBfYFPL`_vjLGC*_QUmq`VyJy6BXk2U?!PEsifjn)4}B8q z9ey&>Q2sz(AioOd5J%MG`e}0^^&FiJF?W~I!=9zh}YAor$l z2(rIl#D~SVgf_xap_=rqBf~ksHPQ8k>vh*-t|V7SS5sJnwt8B5lHC~|&_pP3`6(#%D8L--xMO*s$ePnX%* zd?7Ia?~*0ysJLA;#j(Z+F`E_tkaz<3$rbQNle-a_sjR5Cni<5D6iU#2~pQPtPjUpx3x zxWD|gGF+J;7m1vPHPs4M3De3oeI`|rP3KAo6ND
  • =4x^Y`%c_@1yXzb&2;4e_k_ zqF6HXE!{vNoqwEf#68XQqBfbMjWPP$8m-M&o2b=bpZA2SgM|vo!@~CkoBFr-PWr`A z{m5ati!w*v7iL1EgA+m@M%t*W^)$HYaULS^Y<-{6*7}M%NTI)^)Jx`wzrc|P(y5;w?OGJck~W}MqI%w66+$-Tkj^rmHB?*nI`=bQM0kzg24}{}+*sbv9}s>4>F$}~a z*cf~~yf<CQj_RwbOYuIrZ=;J8NjyW?tnGmv~Wf| zA+2*XhZXQ^_{TVTN0Rh7yt|I$=dvr{w#iqti|zwA%Z^yht>)%My`%Q2!pKSCCczhA zACMjz7I{D(A#aVm7Fyz8kg+VIm48*Rc4W0uLo1_2l%VXFuPSY{SM{dG8^%$iDcmfo zLDgb5a&N%tn=H`cNHJYpAnkC}bTx1E@4RgIqxg+ z%MyN1=$s%VR7~g=|E6c6V*vjR{jS+VKcQ7ICRmH<4$Lpqy~ZrLN^p5bICVnG_>|{U z2c)H@%}8I6@tyBC|FXc9z@ve^K6ggd^a&7ymjv9ACF(HaVaUPfP!r(RSVwvg(}gX{ zIpM^#xVTnqD%En_3oBrES2tIRv$nIhV~o^AtSGdDw^rTY76`-6V6M^@-0r!{x?$AN zN2p$9U!-q%ZsiXVaY-Z~2&@5J^_rYp<)L)`7YObIivJ~Y#tz>TiH zaJ%gtYYf!}yk{KqD%+Z`C4M07b$sa@?dtDZ;oRns94|^4;#_gGI7F;3287Rru|f*$ znijGqJ&H=Q-ZxZjyy{cNz?;-^+V3i*oq-jva_Dj2iu9@(hkYjkW5d0bdfE@_6nS&# zK%hh5&fwb6{KyJrxb~jj$oSUSX6~`3!5irWrZjs2-itNjw+QW|mmDRWJ)B3KS6y>G zmAsF~uTOX>Nh@@w&=X1N31bsRCyY!u19|_JLZb^GEc9q%(6dV#$g!|T|B>F!t`O!) zABlyyZq|PF)9_1yg}zf6`!cR&RQ5IUmG$-Xb@Vq2aDgX$ccw>D5^kJGE_JB%A)XZfw}&6fu*4V z@?kYWpQF`R+~HAy2mJl~8vILfwOH0*eCsf^ng(f%(4q>GM;Y z-e{M6_S(4Xi&K+)M+0r)-TPHoN#_So1u6tPhgOHrMqX2nYBZc(w}l&7o#9qVBknrO zaHF{U_+~;cv9Ht__6hqOA!&s4o^(>`AoUZ^!zocQ!Qv#y)+n|;vz_h(H+bHJJ5tYB zRm|f0m (1L3{lEfGO+sL!bb)PqVBxmNg#;Ev!cAtvmC-Dk;28CjK2DxCHxoDi=z zCK(NlxyBXq26Z0B=o0T0pA{>K-9^!{(zVlb8qO8E#xIV4DE`6tsR=(NWfVSFWJr;( z3$;re>0RY+=TsqMe-gYbZ)W{AFa9JYU(aY?s%B z(*kMm!=hC;+Fx&e{f!%!Q(uQ&!HK~0!R0|FxZXd&7w`Mrch-MjFeT)W+o+H0*Wny! zFT6cBDG$8`PWYS9^BIF3$fpbarB;ryj(Z(nOLs{VMMc;ttPrL{j{3Inp)glyDy-o@ z;kL7Gb~^Ju-H7_mJZcC=l3rX}qXyx`=dAW3+_##itdQ47-V5&xbql=}suW%dKkQ!> zSt!4!ELWe`yn1uJjDA&1*7`uM^Pts&F2`=>JiOkgw%yTO22T=lI5RBffP)g7GD3Usk)p*-m#=me+=h2PgSWLJJez31MVmOZJ|2c&9a0&!e(KK&{Mcy zXbkyjXJNL$iX+4?#YCx?R2t4EK4N~Ro`m>Z60(=?tc~=e%qqGrRma?;J+6EJZ`5i= zLXp$*v&x&wbmb-GMWsFDohkBh`8&BR+z++XYB0a%ns30)DMGUe;f%HH|#8)A(BG?(;J-@1qg?-LxbtUA=_0+ZMdsOf*kK=xW(}el(p1B;nL6qn{bZxjjve{~7 zjM8SP_o)x5)6{R^PG=kS3pm%Uqr9TjRnMx$v}+E-w!&+y~wAN5*a3kP^c_*BH6f(;h#kHPt>riF?%=E5l#nMOl`Ug*h z8F^!*1kATzeC;z{O@BW9YWnvXHT|aovqDLcner)RtvXx%OxZ10ksHZ(C?CS^csbl` ztiLLU)cSA$`0as!~4FkghFuJufMoT7zgXu3%pyH${%1?(HE^# zkk_5D(&$GadTiwDv(2q%w1^xpKP=Z&7O0oCclG1?Z~A$-Z}+UeUz?&Hl>0^=jJzUm zSNj-6sY=YxOk<`6y@+a0O^5q1_p>aV9xV_*l74Yib{%mKj;rg9_kI)iecbT4RCmbv zz2igpEOfMWj&wKjHcObAaM(N6-5O4OS5SAG{o&o>ThzU9(|}>-(nV0jvk;ojmgxRW-R+sajkeHJ4y!eM?b|0%zj zZ^BRFK8G8WLzrc7g*=(+Nz=?&W;E=TW>H~tl+jS{qxn?{?gr~{)3XY^X}hXz)rM%i zHVNLStWtu?IW-Q>rMs9d;5QN){Py6m^%ymgKFi!-CvqltlJ^Pc#BEZtW47yt`*Dxc zbH-f{_Lq%3va6Z%XGxGwK%9Em*~#;4{LX~(@ejD47LPNNTyJwp2EQt9@^#mrAEHcKMD4eha+~5uumT z67FZH@)5b2yf!iivfOEqqm(sRYckajZtjkRdvQ(R7YWCx9S{}9!m8Gho5}5fQ-&qn zShxvylzW>i&h2EsWp(x}+m&6!{0295y>uL1lYRoQYt#MUEbM3Fcl~Mo8GXHeRzIWf zhI_4Z^;!Btc#hUh?FsEL+_yRe=i-kT=S_iH0OwmYH4N^Em!WFHz5fPmAFdYP6W+;I z6Bdf)9iyGkyHZ`>yQaBDyPkq`iW`n{j*e0_@loNr(ATlmy~5idVPkw}&wlX?{haZ* zc0hZ{9La3qS#h+mj5|YLGuP|gG*LAoUxfw+>jjnIs&Je#OnY1R>OU*5gv$kd8KW{v z`yTgugH^-7N8XixfVb^)m1mV>a(VfkNTW#i$S}EsI#lmq9*3JRL#bb2SM`wPgxIB?0B90#%!<|Q6@4L6VsySK--MDYr zncV9_#L+XZYGSD*!~3J7ExX$6t^2hkx?s-M9*;~7oX+?<{rQY#{x;xGot1ahXS7yY9rcL3CbBDhDKr9dmGsC_ zbsgNSngzdJ84T|?%bB0+o%CwPTc%}op${=7xO1Gwt>sE`li@^WG0d$cjK$1hOL6aT zZoWLfmivjV!X9ASGVj9O*=lrexaa&9+!5FUzcJYjw}T5=AHuEZ{l*viUTq}YK(DR0 z(7V9?eWN~A?+W)|7wd=NbTtIt)>lu~OPNjJhG#>##pq=_!tJBu^zY0TwhK3(e?S~4 zosk+jPCCXoQ=Nh<%~3)8j=e?~VrH{<3XeONc^f93PuvpsfwYL(VU*PdYVl?|{S7}t zN|A<$_w#+&Iq(DEYjB4}2`>!I2u+EU(k{Vib&zgGy`~?IEDeiuhY=*W@bLb_EK5)W( z7=G8(i8@EUL05ranG}Jw!L?Nj*_GV!|~zN@GPa3!O>5% zqu7&FKYeJVdEiRM*BRUWUxzlxAHiM24Y2mK)m_@N%13ZY)G>G{a6Y&wa-X&mZb$Zq zyEJ925=Kp}zIs6IsVA6&t!32D^sh`G_6_*OObhrG!+u(V`-~=)MmK~vOd3~+Kg8X^ zJqWke=fK;}ci~q>6_{V)p7c>_7gZMSkoSdKqK{B-THl$~;CBBhBhkFa^ci)HHu`q$ zLl~Ey`c-|bu>o#QJ*0Qh($!kfmZ6_EW|(KqE3o5P4fof5aASEDtS}ehwon)52(y|E zbK`_}#PX2umXT^o6{YvZ>4FPZ;QQg%Jg@LCNQv&E-s17?;wm`>eg^fM@v`x_^)hpm zFD3b;UeeD(Iv3A2rR!Q7bxFNTPL7OHI_Yby{>*FaK*nXgs5S|&4-^j+3*LbLz{@42 zzV;p5@%S1>vyAqc@^a*%(3L>Z;BTS-A?hsPtgN2L{pQVGI;6X#yOeGvMUW6d0TBVE zRU`x?RTPv)KqN(^K^jQ`0qO3JWtZK(_rCpq&fcH@FZZ*s?A|yrXU?2CGtcadWwI@I zExA{+_oscrJZ}*1N(@fasX+$eA?CUXBQim;S#8~*eJJzniPL$DGy9TxXH9-MQ@C zC)=a5bI$H(zixN2H`-O5gH9`VwR?ixn9sTI|HUmvCSnWeywroUY;_{sva7SzLg>%| zdP(0kvKQI~_6Ek{MenSaP-l@flTJeN{ov-r%0zeFNf_$iB7f~%v-a6*yw&Qb{;k1( zf)3Aprj(F>VMqGIT4xN8eHMFQth9?s#nd|5H_C@@bz@Ijlb0o4s%g2S@0jcCq3m4e zEX5jaCSftZjBX`r^vm=Kk(5|NyO&o*E-ruOnf7$^VQdj6u@d%Fw*eU$pUYF&``XEk zh$(y_^^y*F6WI65%3HZPPSW!0OSA>*$I5(SW$(*9$z558{IyVC%BQ#w>#O{NxBd=U z9izD6=}taYIr7zdc=^2DF8i1}kj$AnZf5r!`44_)o;||eZdV|)=l~fr`N$`F?Cf{W z@!hBHN%uAMV_WGV@retG<-H^4R4OPRC?(Xf+Fe%eQh${|l|Uu`2l`<3ANiORk&Y;q zzBc$Y;YOxKnKp+X`0mLy-Q~nGwU!EMZ}=Ys6h<(Y@2vVj9xVOsPP1E@no-v<%}nlE zxg8pOj55Q$VJt|`$qjnmbUV7voMpe^MC|7F39GSH##|Ds6D=9(klrBuNaT*u(|O|E zA}+9`JIs2`Xp8rHxOu~F>0OcDCLX`KTm#8#!fH&EyE1|oiHbQXH^EnbP~W0&(mJYz zl=sNJIU#?mv?v2Is(Am4pxOF8zLU9_Q z=Z-itIdM(puKr8wZR@;s-2RQMfVbWDZovJPJc`QBXvc77lgqTpD=nRqHpqR*aJiy9 zRj!fivP$u(f0JSKfzR-Jfx^KPf$@P9e{Y|u-XI%ij_gz0=u-oQ6IN$ho#~hG7d};v z+U2d~mgH`bm+74X+XD&yueH~eFQg>=@Z+qj#-&(V>?1Sa)Rq*rhGr=rc|V$oks7I2 zUfxN2BevcOxT<&1o#*)MO=iUS&IlN9#D0x_6>SnLWj;d6`^ih>PoxI!R%^SF%TR%B zw0C<+d*s^W;#?&oVu4&mUQCAbWO8c8dsC#s%0;!3zEiKM-z3hpDp^dQkX<@i?ueGU zK~JYDomkb^@Jx_rL}uWt$Y67C2|2M($;j!*Xts23kQ2GfnNH@(HT!S-ft}y^kodG5 z`1wk@3!JNVH@gQp7daW}X0Gk_AosL8IZhvVACv928A~|g^_42hd6Xy0Wc9A```M=akdV9YWsfE1WWpT1$|h zpnbufi^uYS^D`M??_eMP=sYIYyoI}w+vd;6a;_znG!LV;V6ceXYUHXWl_Fa|%h7-JRBQV|`3Dx|#0~k6j-d|1CL%Jnr|%e0xHl-gEwP zcDp&G59LuxCG6S1lx^IMOUX8T1D*K;8M(*sNSq@&wuh^`8=a9(C$h)7up3F_XSOHHw=lqqBhF9G zZ0EF7l>FD-uEU7FNmfxiv`A-W=`>or0v?2e(rxLPl#>(A_h_2U}`>VG3tJ5WX0 zWc-mbKRqWp%xuacfy znd)A(o|}JI{hU_bKhj2`0|qPA)b_*>y`_)Tjw!n&(|ygo=N^(8tCP9)Tj1-e?^b&# zpVRv`WW*I!@?yvC!B6o6E9hIbuey$0jp5SwUPUx-K9~Z<+I6{VME%zk5!VqVmGuWBoTycohX6==L4sZ>k!fHk=w|9?h`L?X6rawv+$-le$#>j$ZtveyP5pR#UsF8;D>3k~`1FdM~}4 z{yW!DdDU9vbbUq!Qfqa+c3S_)*V#8#Kc~(ka-fD=jJwLl($Aa)R+67_Q0W1_BAN9* z*m-8Jwl~?bGu3H9>(0TC=-_2`zp;y3`OFPQ4kB>AvS(sVm3D7CeVwy*EBmpvn@HF{ ztzFhV>jS$czxx|4(a1C0F76-ByUy2+?aXmsr=RVm$6N7w5$+xzxo3%AwurL|ldB!z#Pd4_qq2W_ny^=QE!fXEP-#44kx4tOpf9ZByy3t@dW$pCS;eY(jcf6 zr|}2QXdEhGr22IlKkX>J;0vWM5|Zv+ojw;ehOpY9rWi` zatUjZjoMUJ<=@c|Mc4;J^r?$9G9%OQy7Yp~=BJF>Sble!7R`s>Q5m|&yIx<$r8hi@_WZOb`$0`I6ta0T zdawjPnT|wnVW?E$+sc zbZ1n*gA8$4+D#_nIHKN~l2h0ZdtxS|`yJ2g$Jlh?c^&Y^Rf5x!%!&RE>=MCN6x7ih z-e0s}AGX8+{#^xwU|TSm@`U*n zGry1dTl(W z=T%~~%JTIp5>b%x4wH2pXF1;Iy;XWDNWp#xMNjF+zx3!-27Bl!1fMu*S`c;O+%G{# zk{Frnyi;k`XI(7hTD&eX1!+kD85L|*nePPG>KU&-!z*7hibWWaGOSXYcRs3MeMlR$sSya1;g(@p0r>;3I^AI1Vq82N<^XrAuTg)Ol4*s^ANn_ z|A^#*$0o)$&Zv5U{D{^#^j*;Z9%hW~V?IexF2%D1mFxi;gq#{lX7Q{f7yYL}#u-UoPQ1wv`^8Wt|I|;ii{Wc$hVMnRykQzc_1FP+A4sQ_%ae z(u<DZ}||}c|gw%)=)9lM;%&T7(IEGPhAOz zW+Qqi!fK7rL1tvy;8PzUZ^voX5p=;bMzaL#Sm?tN%v+pNEx4N58OwU;=#D&E^SOdM zCRSN#)@mId_4rxK40)_d%L*{l*=eibunMZ&vkZ+S^veszORT+nv}G?l?F!npmKpmS znZNdb>*W^u=n}0F+Us9*j37kDS>p=Q#RViS7t$!Wnu5eCIFR`nox*%-d|wl!OFcus z7ey*_@tOyWg3!RXk!**Rl?9m;M9{c4JjyKm&1VTcDp-p`|2<$#exrR`n8}x3HZ)Ov zB%~tmDpt-tBrn4I6l08=A~zkFiRu}0C@7+ZGiIzTqm!Re(3!(3Jn|#;e)w}2k&1`V zei~%>GhQMgQ?NYxVP)*#J;nOXMc-^@Q?y_%`|AiE)0o4v><;h10Bb<|&LZuru(`%F ziZ&TY?HT`?d~QB^_K458mLcoec(>Qst@`kIo3>`cE|!sL-T>n<)0wtBju5!)~JSLiD60eJg@=Mv&dVS(7)ISs5)*ig^&s(LB65 zAMYWwej1W3cz>_(3bBjlp@nM3{|h2z6&TrK^f-)U+h`KOHx=w^QENl6D+}^YS?I5@ zNRJ~kN9fyq+A2t*5~KMtW5>Hp8xA1nn^}dId9Kh%aR%WPo-Ztu+sxV%dJ?6bf=6o6 z4?%gBGvr59q7Vd0mG=}xVIjG>GWrl-e+BrBAm9ovwctA@Ffu~ogjFDRhQ~cHQLFf{GdBb%OMmjj_nfGklExW5)0fpCDMMd6_k_iW2F! zpdt%$VVn>d-zjqOn|KWfLC%g_ce&{CE4)U~J5|P95P$_;TJZG*)h<7u7~(gA{VQw~ z(T@}~jTi+%m=)ypBw8sXTToF`GhQnw(Sj0q5qZ1F7z({EG?U;k3qq;b%Y<$5knhr2 zIXRfG;ym*4EQeQ$UE&4vDn_#~(ou>r6_nka^j-8JP74=%L(Ys>mOw^?btmQ}zT?DM zk7BnKWK>a6MeGn_KNDO_q0t4uQdAd+bL+)VpYkQF2~n*?@NETCSnSD3^jJ{1MTHtc zQWZO-%kM-b1o19D<|HR=FTe~4*^Tq?g;w_1orF{up>IX`*N>g>fN^<{F{6T?nT1yf z3pB>(Jfhck8JT;0AFpyF_EkZrewi`P=aIDK|>bxT?Ers?1bV(ai1O} z)35)CIrf?+K7&EDiJ!-7#fUS2AkD@r3H-0^LUP1@7$>_5-f_I5L%d>$VAPAA z3tbwoMk0vdf+sGB&GCN)g*aYUK-gl!J{4<4yiU~j5!8NR4aVzU30}XLM=@3^e~Uly zQ4?!V5L-nRhj<+ju^z?P$16SvnH8E-tXLuMqE-LZ;}A4`L7$g-x41nmo+UJ1yyAeU zNg$pr=0LF1#f*tLwOLPMRs~^Se5T-t+q7K#G){?*S5SycjUYLTswHC9P@Fm*tUmY1Sf^qt{u(#uN0EDdk@0=jG%)<5(GaybD@wJ-5&*C;?F+~U=u zO+v@SM?G#IiK+pV!V(fF{<&34`QwbDP8Q_i5cS=*S7I7j#rTqcASu| z_}Ikh)uO@!*9jR9ArWGJ;{1M@PZhjs@!9d#$45@|H(ql=Xp=bQTD+t9typ8?dpBc@ z-ILeXn6N@9Pym!aX4d6sx)G9x4`Bw-`P zDcNF-Ma_o@vliFkLc)ZWk5~2)egfg05IR-pJF%O`HL;K@L17oVEZ+Bcr5Lf7iBS}? zBHmr>J%V5V->MOP5%m%TeLg;ZVm-twH2qgGNz9QLk$4p{v0lXpi}R8=J&Ln^oNq6P z$D$SgX<N#U7YTO&KKSyA$c4NM%^0r|B6Pl(P2uGf@0`f! zh*d0RQ84b~>s4^^#d-|z9%B89QU9;Ho~W%5XJ!lCEi{1`AJI=S5<&(<&xNduwG^*_ zD4rMBw?fMZX%rGGJQr~-E%a>MY7*Kw?zxCpFA|?BR<7`L#CVVR8i-4!Xyt#ELvm!; zd4i5FG)-Jq#P@M8T)g^#Sbg!`KDC|tC)YW8;E^L=&bnKh>tc?w`#N{VvhExi< z5^GUZ&&f(_@?j+j@1&TI_(|n|6*)wo;;T>eQOsSu&dDP*#$B{ST+<3KkMLt%qhu=L_I9gX0dLC+zMMKUZF*JJ>$Ex z@QjF8i`I*ML)axkQ$EVjYe^Z}NW4~friAtq7PqMIB)d+ zF-X)F64f!pS`p(f_E2%M6V(bz;&Ca*d0L!D#G22|IEs@?UVc)76Kf%udMHF(zqk^V3IlB>8m8pa*d2e9V{k|EWfzdzx|=>u5H1BvMv!B4tz z>(mtLdKn_Z@?;R$oAMJunqG|;;UPYq2HeJdijTh&UcSoot|I?_3^n@EiXGnciZpEI#kPE>c?^u?IpW{-!#8gm6+QFauEoTo4xGrJ!=uUgc~ALBd*62jUqXCj8Fd74v@7r~iRk$ld7hhzXzEXHZg+V&bj8oO`M!h3+u@dSmRKK{ z6AaaO5^H3*M$8P_C5WIs>~$qZu&*|StgI=%7QXNFi4bnzRtCyzkmrr~q`t?i_{ggd znW7bU(3fG#mzBSgmV1lcABk)zXz#bavRYZCc(jE(CEKg)m5u?+@RnR$tq9Myj-H?o z(8j65m5=0)q$%DlxbySeTW)>)URROY=e+-W+$m;d9zVyodzi0JJq=dGP2y3yI@6qF zX9Tpl_2l7fCt5~C#t1sV5^l%qK)UEE?IdcVpBp1iAsR(s{E19?@i4WZ5Rpj=t z9+7@mWlhNf9e*`rqr*}@#l7NoX{EG?duVYVJqminWl19z_BQO(ZmgNbM7b2@MzbNL zdO^|cg4F$pq?ec0N%iF|a*F&?J^+*6;5IOYJH`IobB@Mqy@c6l0bhSUu^3a_Q*H%b zmEzUpp0E|GCm%LMdAx!x@aA>lb6Vpy%$ngFx`xkgKkH&WzVA_dYK(Y~iA1YRmUzM^ zaRXPMm06wD-H9Ihi3sWltF;u-=s-0bj{Bcs*53vPe5_4!UM=U-y!pA+?d z!R%m~#&e^dnQR(XE%**+y_ob|UPI2&BCXS z?>M!cmPFS)aGEgRbKEb9X1z_UNH^yr_~sR;y3mN5l5E^n4B|%Pd!i=lQr{srQSP&d zX&+BS;tIJu@m=H5asQwnJ@0+CbqF#iJR3|xObQ!T_XaosGNgnh%>SO zV_lXYBD4r!Z=(^edc}xyxg&KUR=b7rC*15cYF@JPCP1XVsg;Jz&{OZNPu0)r`F*eZ zn)rJA_LAAy+uzCmn*V+ON&g$fZB`*dJ8S5EpsAkSs~ru#SpG2UovAl--Cp)!Zqm}o zGyAwSkQ@+K>h1mIR+f&bJp!c@(i4A$!0}Vys`jZo3EypX&4V;GYtDEumJz z&QP1cT)nC~mrSNv@PO-UqxBXrDEOnFCwr%pQW=JHbt-opl??Z5`=C)gnkD^G>H=5+ z7ipsvxL>A(A)`?e7gnnQn}UVtcko>=b`xgt8~AQ8puiTW;} z+(uff$v;RNh_-ywId8pTK8_jD1<`e6*?&VOTYIyM)!iQG{OX#J3416x;o%Neo2vI< z@vf8W5leH9DjA;;opD)e#+u0o-)t-~R8NSc?g+(puDjQ{V&}L2v68Gt_5xdVejrxw zg}dAv4wZGDvP^BI4WMSkW2oNQ)j`TFSRl>hOGGi;!b-V-%;{+K4$>0o7KG?g#O3H- z1-BC%`}SnpG|Y&ED#=drIrH!}S#mvhyeQnjTCpyL9raJOsG80}S zDzv72nEp1#&S^(0i_@aU-gsg=b=veJ*>Qs$4NmMRw~d>c5iP%qJcGM-MQ4)p(CO|z zcBgoi$ZDA>*F=*(S7gY>iKPQ|Rsh?3-;jUUnn+H4f zj^5e#t1loJ_<`cVk0E3A2`&tp!A_xrp#fnlTr<4Ue@pr{TK9SPyG^dnym0lx&({V$ z7@lI7-^yYAZ@s;?N510?mJX}40;dzQXSOo^m2f$rXk)!S_F^(K{!uRa%E4|LkoZaB z;)GV=twGy=L${PN-g5J0`tp=UNwuFHefsya%}IBYpT9hw_FLp&tf|%9-79y~C&H-> zhtq?9_-|-+m41-LW=n&Kea_^c6Q~fpMV$IR-x5gbuV`PW%aktiNYCdqGJk-is;A9K zHB(d5nv(5Z4=&Al%e9-hd%bt$v&su{#(u^+{7julzWQ)-7w#&#waR*wOtYtYNWTV$ zcrWz@=3rqr_sY0y>=$MOBPm)rT0HtsG&Ap(*KXs~p_0%i+{E9_(5vORX?+K~bqMxJ zfSie4#4Nr~K1mtk`MZ*5G*lhV-*wfyRQFiL4z~)LRy}n6WcP{t0XLwc%3dNec~4r8 zRE%ctxeb^8oRXjvkh}4loLJ?8gjAL|xWj0%K1f_DuUt;ejS}86A_LbEp|}^SWnQVT z+@4AzJ6YX_u@iO?_arJbog>$MQVoS;c-{F*{eeiOl@qv-#O7Fu}3^dm*$2O+uj~#pSSxuKHByx zbc15#|4noH6F2#_v(Q=2*BBza>!7{Q!5$n7@v#Yfo@(fxdt|(L>=*a3AlfadzmoEn=&r53b zJoZdYDxDlm{V?*86kQHT2XT09F~hNDaD=y{@1*GTM*imkid*X@k)61Id#~ z=Dz+OIUC&^&F*R*jID*3Iwo2>*4p?Kw!t{7wH35-TPq+vraLXYfl^iZYpm#7*k}qT z>B*cgMWw2m@836;b7f;)X(v>S3x&#=zKw8-JqDldDdj7^#FvT)k9^tRC+FvN)j-naJkIiAXT|UG(i(f-%~-VvHj9vntg{Ji8US4sT&$9VdqUzWakWR_aN{vra95 z;$*!lWK)j9HZ3kEVY$|Zo%fbE(p~6OAQpR#Q=16zC0=V{Y*RSnufcZhBNr!==8CH8 z#bB5z{w&nz8G?1yHt;y`eXv>RS*U#YR;U%3_a6n%1_}i>`;Yo#{>A>nzOYJ_vuKW# z*-wt%e{}cD`}ZI3e6cqDnAyp_NTlWnvW})XquhSdOXX9&g}+qbwtoV-)MZt2?zEeF z;lP`rE#dv)4xvkaN9(ARl0I{@JD05e<{uEfT1RI^7DOsVlcLLG&5gCj8lx9%ndZhr zqlop)PICW{9?Pqhg4i+_&;;Z3wZ8rSVS(=gw*LvcRC}@=&&$6^gT1=0WAC+oFjw;0 zZ;eXka&wNE$LwiLiY<+1iM|)zA3I_0ghjf`O>^(MYuvG%4ElS&Ntvm|(Te&z?_o$bTIt{DTJ=z#5)f9(G zQpbP7-y>iJJ`Mg5oEN+o>=oJ;x`rnGFg!M#C0s1@GO!*QxTU?O+0i?GM)qjMw_gufrEgu-`TB#CAkaMcP3)Ss4u&jm)4`z#3)_H8zvUxHMMEc-=f^ zwRGNK1U7rerRvHB^&7p4e^Fpo@CfA2N&eG%J1wW`k$==xTIn5f7d!9RwP0YpXU?Pw z%s&uJ3YcFQdt+r{Rnr@<$ZF@63H@NkB{p|&Jh#wb(n4uqFKI|=D?snL>-qG+F&>x7kqo6a-Bvl zUkOcxjV1LTc}RKqh7t=Qr!JQ8wnM zl2O~}u-JOzsJV}Pf@6>mnvwHz#-8K!V|Up?e2+|C{AuzIXOWK-MuLCzMxtTXafba- zE+nt!j94BYq>NwXhBR01r?gOWQW+|XK1e^T7hpGA;9n7F9qb-70u2IX{Smz?C$5it zl>%);jS_}JD_oFpIdm`(_LuRUgs=FC+CX~SdYRTCsorDt;me0dpB_qiCpOU$^~vkH zL#)%WbdPcKB|7K z|LgnJKiHe?xH#|Q2;z;^7vkU~BJ8llAnN`yq zV-B^)dUcika3NZ2x7FHsNa~90(ZF}mnXYDr%^bCwuzOWEI=e5;;5dTlRDEJcP$D6>sJlBzYKeTZxR^ z6!oI^E9||E`UL$Sy{qq{?=8RKUlQ;FzTok|r-6=vhk-DZg-^rF!uP@}!XJjV1*k~p zuk6dLt&wWl*CVAeP2(m~*vlGjZNo=A zEVe6J22#cT$Qw};2Kt#;2cwYrCe-|!aPC(t`L#Uy2YM=*p3~IIssrI>4>?s?mDlA? zWVL%uTCdN`xI1-pOvPnt8T|bP**>v)z{Ww?-Wo{rG;K4 zce~xlQq4Ms6)Rx82eoP!bb^ZJXXZNdl3Bo-Z580$G@S}}>+Ks5`eo`PCQ+ZuhR#$| zUM%~RR-EG6ut!aTV9-Rt<|RinJDK%k)XiFT=nL<^6(H1(hNB}4qHtw-b%PWNd2l&w!+f7Jic+-EgYj~NTy zD){I7dc&;d(UWO%`e)IYS=A*L6|b{N4WO;im_mB5KoWf2U_$xu`C#Wjs_%Eb2NkIr z%iX=fPQac(Mp+Yl6CIrF&K(FA4`Wqg=b|g3$D`F^!(y#s$n#}JtMJ=&qWVxnxmAYuwVJopk?r}^?%HA;BGhFNBY2m6 zz8tK=n?|xx#asYKcoiO@-7r#eavIJ}246Q$sXs$e{)TFbKa@T+#PHl z9EPN}pfX}+t)i6A+L@j^<^J>j&u%?i`C@$9O=Frf&i&bGV;kmM#)0U}=osTyyE2}| zC?~K&oWMGeTYXeJ=x-Ss4CQ+=l=i5ooxab_MGoE{RO{X6l;VB*SPjj; zV|}8lBFiK9BH5$8qM2jS*wzfsb#7R2%iIolSBnx$Tuj=5C-)tEL3b5TJ+C#@eFVXL zhPN@3^e^#=Rfs~?vB8q9oaR@t>r|TQZ4R>UV-q*PSGR{ygk#j?SpyIB5Br|8)=j5& z@Ms9T-Q0szR?9XdXJEuAot5z5Z#;>tptY&l=Yy5cnv-F{n z+0jA93Tvjb-+dR2mPSnVAnuPYcyqZwyD1Olc49cE&vjH``V0=)Aw^a4$d#l9UMV*P zBE%W0A$)ASZp^@r%?qWZ5Y>f0wjP+%py>62$2Q)oY5!_pg+VjKIm>BhtJ{V<;)QV7 zufsu|tL(tfyc}&jkv#C>%0;s4bLriD{Dn#wMFoc3DcvPl`iiWxd2L$^0>-tV<#nry@ zbG$yOZYlByhml3N)P2X+1xB*7Bb-yTGi|wc0TTK65K{)Oc&rzqb-bpCfso5QVJ=Jm3R320si6%$~JgZ z{j@s1@BK~KTT+61gRcLIzC!D(O=cXI`F;sBhMWEwMC{{m@9zY61iuP43FgPAIE89B z&-{&iKP&51?@=uT2w~SiRFVYL9e;Fxg9JA&-OWmeq zO%|s~h2@l_y;5F!aM*;=> zwe>k_dF7?_Ccg5UcuMva>m@ zAd2SW@t*S(M))2tnOYR*I0tm$hTxF8i&b4z-Hcys z?7DV#`v&>aWAU$jXHGFSYlGFo-ia)Zz@J%;8{Z>jfEOSt;YX~f>C^zu3&q7&0PZMd z)r0B^?F*O{)BH~0TyQLV#~1z$@ZpQXle=he#cHx_8Jb8eNz=?`5^L9?^|vV`mS< z&D!o|yMq0e(^;ynZS_|PO%4AO&KmwK_@2L`eir|8L8YeL8|j-N6-R#;;goyK>*Efl zR&8>uKGl|*P$_9uY+Gz*?Csc_vAwY)MlEZzeb(vfw#KLHbDG%_)tt{cpLvOLFQp5T zu!BnH-zcS&L?vDRN}eZ;_lCOzo%ifH)+DQ`m5E^PDlln2U9K z*F0^VvNu6XnuRr<1fOOs_cNJbEkvbJ@>BRN$CZ}qZ|ZZkHq}_S=sy2fu&?unZUid? z69b?6?ok!`h@R%(75q6A3+1M+$DZJ35vjv74!r zUJQK}dwL+LU|L!8fm=jAA&qxkvtYDfTH{nVZAi>-PjR~>V{Sw)TLdG>4eCF>I_X3j9jnI<D+{q@e8aZ9fn_4?uEM& zKT#E%>Y~z0U4}=hrdCuR?)wHmnG~oW*b-P1Sn2QP^ZPts2kw2Y1Y3nGC)UffCvkAX z$Kms#vZ0p2(eRHK`1AWceYjfGJ7jE1Ta$e3`A^TXB#nMKD7L^EMP>AQ-Us%B*vIJ? zURHXUoLWEnC9J9H?m_PjnaZMScI}M59gB2P@ZI2dff@eas06rQo32h!jza`E!5wia zSQk(5q%M*i_Yvo~EX2{gh^&rWi!|r1WpZo~d+L2^G4)`r4THgP?UV9lj@MmW+7QiEWB;O&A2z(Xz+*etdYHyAV zN-6bx@so2;N+%smJ!!n}j_1bc2Y0{KKQ4Nvl-zPnX$i4r zjqpI_<0he)yqB1%((bo*F-tdJGd9E;$C9E)@cvAXPLAfmcV?SE**@&e)A&~Fc!OYS z-NpCS28wrScu4c*1)O0TbGN6dGdZD^lWRzYJWAa;K{#2LIFrn`3gRR0?rd^CcWy$7 z`;EA(3($BgTT897cqcw#F8aBdiL>j?4a7HcIb|j!#DA6C@DU?wH|l2>(#Pr-^aj3X zzDxd1+$%H-RtuVeuLHRQ#qc&x5B3bT4wp_ClHi433x9@$<_mZ(b z?dFS-+_H90>XVw&nCqkwV|C1JX?HLlM{-26MN1mBt)GZ3s|QPHKQ$FYQWYgpcl~)n zDWNN&PNC265Z$K2z$DoqlA;y&(3!YN`W7H_^F^?{$um-8e&(PF;54q1?L! zVs5OuIoUdFZ-;YJ-HlT7@fVnRFOl$#NaBakDzc-txW_uj>4g*=$e>k_C#&D7HVuO7lwS%d>4Qd#2G#5sv=6JJeu z5Ip8@O{J{&1Dkw~a>FsB1z*1Z{K1nipEi3@DLs>Q-3?34ybjJRb7gd6`l9qU(Z7td zR+3%UX@X|j;B;^gd2N;9P|-$)?uQp9bV-PWwgv*ej;bb4fU?n(%CCROTd=X3aU%QB z``t;jFPde|E9{3AjOnq%(IU|ck=v1y(ZkW?*a-8SwZm@dY(_qgIsK?~aS%F9L%1xr ziP0)2k5oROdem?=8)xNW%4qo{@iz-0rxb9rP^adI6~?RZAzs)?RG4i{?WU7F8)hxl{w zo4{jg-R$=F58Mte5BuGo3Ehe2at+YR1I8Tp1x$$ge zN~dTIdx~dZb+mUL7}KNIB4eWpA+`JLX-*qwiJg;Zj@O){UN<$Xze#9C!o|c9iGPOQ z;!aD~K9|>fkKLo3M8EZ>N&SfnEF?FTDnd~{X6yDS>!w-C?9bTs#Fm_!elC4yBr&!c zd-A?*!LQlo_IA$_tCbs8UOx8JPu=MdmZl+Z)0NRwT`HhB@^Pxc7na9Jqlf}Yvcuc~ zKeJZbOPwLqHM>Y`mqnb{3|nPH55ax9PZhnD+^C**UUS#FRfsUF&TaZ=dARZuRgDMh zf9fmoymrwGQ=@i*zT4Lz@GkK{`#4`T2v!PCh7#R1JS3qlHFriO9!}U99v6Bu_)*|5 z|8ieH&6WPO^Th(GLz1pNZS!ovi-)PBVsG0QxljArZDIdoNU@Ko`j{EJc7e4D(qv^P zFMYb{24qY9#Q%HfZo==0#S^~_KL}jZW6E)9IJco`?uYn{KV?trC3ldaS$Xw%w|>qo zPH-V3f2?iv+lU-7(q~2{;oEO*bT{`~Wt>;2i#Px#RcH82K}c1Xv2u5DZrxA)4Nppe z0GUnAr2c~(_mdk*0WY0h`LMm5xRhH&4or6r@rpad#vR5F^NRBnTJkacGB=>*jzR-G zbxIH;5G2Mjhul*6M!luQ^gh0VzL|PneJ^zfis;RK6Z|a#JGn_&%$U{Vocnv|M)=c& zFA_dUXrJ&;_+)5h@Ias|mdtwpF};G)*->IUUsg$4@HG7Fix-R2P8oZhHAEqgb*`Iz zVh1B%Qi0$vVVe;uFUa-fR&eRJ;U!t%{9w1V6qw;tqP-*A(odzYiG*WoshYCM-skj&O;pky zz*?Jc?J}+4;m)2TzF`X7s>j4~Y=omV!F~^tw8b8=*ojbA z?g!TE38I>YI7O&wx|&$G`a~5jabiwu*6V9f$#M|u^RueyPpBlk#CON{xv#a}S39Pa z@^zzn%@^zu(}Tr=Z&LqzaKH;*r@naa#GHu-5*m=8Q7w4M-`T&{cTQ^~U$o1|&ZTxp zZkNOvG22$J&J7@+#c%KF%y}hH_p1F;I`_ zoYLWs8MmFjW!ff1kxy_-R@VE%%Z;a~Cl%(;<8d3q8RG|-c)cB>5zKS38_{CXIg$SO zs(*|gfcZGdT4{gg7}zJ5;ZCKqBR;ZoIW3SP!mRE*r6pF@X#Ug}FG?q!P0I0dapVrkV1ua<(AyqmG>w*xG>mMF<~JMIez55l=HuS}2cG3}vITMIM3_ z)^NK!hwL})pRGmaC}Tiuax@yTB8#J|Viyg`ddh9)IJ>W1(Z0ahv>&nDcezPCVSn!o zayz1zu1cAR7F|t@vBs&aB%b=C?r^uFTga_R73RN)&@S!e^s*r9E~|S1RIT4&rhNcs za4@l!V_Q^~YT;WV%`WE|h2Qm|l)gd4U zM+9#K4}~6tyCx)sdxQ&xuZD_*{tCS3`&K#b)G#`w`(HkI(JT3{)LOA$tgorX@~-Qr zou8v=zoua1>7yX;nb&sr05o`#|j1I^4N^1#5DfS=l%q{WX#^@=m05G+(R+ws1}SD$9|O zoX!_mxKGS?&1U8??whY;r}Tv?_5)tpOXPHohS4~j2$2$UKjilxc$N#PH#Ljc(f-79 zmnV{Y4(z2FR_JnQE1tda!3g!Qn)zN)8+m1{+mXDfxl;P3 zj7gmzsciOiqG$-+X==?k>cwtGFUE$MYuS}T_E>8t-m(Se8mpeu-z%j2NjEjI;@kI5l!~Ut3ecyqI}N%LOPt|pQY*E7PqTg4z}^DPERTURDp@B#u`N* zN2)V!<%~pV)Sp<-t&n}&I&LYPqhfYDr#H4)HK!w^at-pF>t6A`#JBY;^s{fJp~U~n z(n&H$=6K_Xr!zp;L)}9|S9`9Uh%y$XXNpt^X47)slFc zjrwSAHV$hCxFepTH}#G3U#5~!q2LG93n_{P=L`H6xE9#TK_ zcQ|jE)YeNsmD(=t??{T#13yD$_lz^08=k#JH>w#-Hji6d?6uT5$c(q_p^H2 zUdWlX+j_dMnm_E{<;(6%(&nqZxZh}shiw)&Ub@s1Us+DHcT3_})>FHwhW8Tdv#QJO zuD!!-XH$Jr{}&*}a2o!@W712h1d(&Q@pcX-{y#=+ z=QgT@UDG=1zfkl2JY2_^)?XV2AMyk06vzDI0;dDZA$9Na@AU_%;BzyOFL<8&p^yC2 zd?&PY`652p(dMbx&(Uqs3Pyf(@^Yu7n~(T{i?(eAtj^{@D1w`aD|^LCC{KizR z=60I1)f*)jpjLSe{V)BN-d3-nWmWSlCFK&*Ft069+%vH+3levjSuQ~I_-Xt*Dc)cr zskXQc-QTEDcf=Y(J?g2kuCeiWOy(QC7_$mg3K+p%l3~@iXF}xNV}FeYq!^y{i}>Sq zVfP!@a!=jPWTYG*8>R}Kyk7?cXWa@p~^>y`c@gMUq^1n;8Rt0}${%+y# z=O68_=Wpwqr*&2$-a2QYm4NRtlR3b;VZS7@@o%i{qxfL6*cYvw_7LtBKf${F4Qljr z^Nd;CidaP<(T^cMYMlIqQiJ@0bW$@=h4K&5@-jnFFiH4S5e8@;-Tb%Qz{$ z2?2UAaVR5*xe2?E?S)o1^K+w|(bYI%yoVR)6KffFU#sy^KDBDtGl(0!K-}MWyD|2x z-|mQiqrNi_R(Ubvfxf`o_6l+N3N*fN(Uw)n8r@BnRs|$^H232T88Hj4;c$7M98y|x zim$6)Q(JQ{cVDYUJVrBY+h_Ch|EA3-#j&?_@MFr{a^#}S;-+f=uFZ+|I&N9~5 z&{v$wHAkp*SVa3sX(lyv_t=N5?hyJP+CAK%*rgB2IoQOA<)G@p5&IQqA{6>g&JMc~ zw*7hR?UFD?Utu2idlR`Yc`o-?e&fFNEhR$k%L5`w8hAHgMBe2YwTa8yMTXkXWSljD z1}O-Tqxh;rs7lDMdpPjd@=%?MnMAG#jBKH>OoEOeAP6K~B zc_3tFCe!E~bw>n=swDb86LWlt2#Ar4M=~*GW3U6hBClcvH$ZE6{&;TrzT>oHxXs8; zT8O@`=UwMLlbu!Um6x0%L>$j_my!iG8E^LpY=!5X2EJi!e?o4}eKdMi*9YG@i(7^q zmO4Zg=i|<;EVjmLymBt%w-_qxXm^;~FT=i=$}L!uTL_73j-CCNmxB>p#pre8EH*~& z19QF=F`nbeje95;Vvice&DcoT`4^R}_*%YDH{w;g#^btrR^6xmNyPzi60Xjf#87T4 zM~R}ihF|c!vKU#>l!HXlOp(X(wSqg2mE2b5Cui(;cBqCKR2;#0d&+FC!vgymzTz}8 zQpR)Z(vYm2Q;fN<8!@R9jH-Bwgghl!lb&rsh>)ryzSmb|))m zrqXz0I#Ne#I86L?)NII#-(?*8%w;lGN|R%-3{T~BqBcg61D2aR?M9II-&Te~Z`Rb_ z$eTfYe=Dj<4WVMo9_@*iU9Y9LK|42~&QxV+vjwP(eOLQk>kf5xs+vdL3a$SQ-lsG- z1o^p*Pf#pkY$HU6CK2WOIs4KEGT?5aA?gqVTau`A?hT1PYK)HWNPFJn(GJq6jU_qC zecg39=Y3Ah_ZytP2VseC#6zw8-^kQK3%!d)-W0q1nX|{4!!rjuL$S$5WO#TxvlctE z4u9fzr^pffgFLIwPDwl<4>Mw9TBA@l=g#aX)-|fY7aC=3lhDXTQ9BG*E{Kb z@f~&1t8tFMsjb%rQrG1)H)1vMFi%7)mSlut_=wYGoArK+?84DRxW>?(Euk$g#R@Fz zr6E0sh>1PH--p@3ue%qJmR005&7_UJpcLof9P^YOE~Br%qIE72|B;!WcV>LrBTwyE zEkha4uiWX_eB-H^ASl3jS!?%@!JT+;Rys?a-;k-3cqINpzQ!<8HJw6E0{2)UWGNSR zZVo4llZk)JGauv85NYh}O{oy@KKYK**(WWx71mhH>mlvOvgyI?{tLN?^19LifABOU z>M}Vx?~*f;qElf| zxFgOAPILp2rPfXd?nNfEg4WaHWaiw*tx9QhbQ||A#_cW6&fC|jVLgI!Iak(D}EK0qgGo1Opp^{R0e8@ZG@8rQ$ZE1;L>MGXpE7Dr> z@@}F-Cu0l#K;GI!G-(fdT8i39+30Oqq(Y&#%WAmu9kIwu;X7@?ZZ-h@@fE9M0n)X_ z`4{N|22a1lDfuvu3(hmV3aO0HE^PRLytWNF8lyQ)ui_OyB29genYR4ABY(fa9Y8Io zD7vZ$@_h^+2LNx{zU092qd^;|=EwHxx(FBx8`D z22OqYQ3>xsH*S^2V3E&Z4eeqLJw~2#qD81(Np|uLPBjl(i+&mYRy zBJMShI>(XB4cyXwh-9|s{R&W(V&tF((HK_gb0>sPrEP}(zKKU;#Q!7e z9N_E9zPEpTZ&JIR+MIf7Yo<(X+qP{RQ)_BZZQGq9waw(-d-#5L^8bC_o=?*x4enWI z@3j}6^*nSE{P>9}Fid}!(#X~E9s6ZZuBpss70Jx14^;o=T>GwO*BY=&rZKOyLp!D2 zBhq@u+DQx2tTMK00Ly(XJ)`~}&5|ZerJqzss=3r#{FGKoR`65%@k)E)YQtYD(M7bi*y&h2FQ;7C>mAU5{O3s%J{JaOxoXI+_dYa-rz20P|7HNDr4 zMeVLGCt+WvRh!|Xs>Ymo3D6>Nu+<4_FY~bGB4ViN*lMmb+G&GINlyGw9L~EC%2ki- zJM@!I5YyiRsg=Sh$tvAM4L?4pj!{%4e9X~pW(Kr8_PI>m@;CHnhRD0+_jE=^Dc6ag z>Z?mR|7~Uq8Z(=+o(@SQRxya-ljyndMGcr;Sq(4#R((D3eSJLBcC9BWW>?S(vvdP=bin0%~ba27;HMv zS*f-b`*rpzd$qkC8%g->W>m8N1JTxy7%U15$PCy#eusH` zC;hfC`hV@oZ@zt$Uyh%Y1ii2K_E+NeqVz@P@wKm= zWSnRNnLddF@5FiLuImsTour?Z1oruUWHL$F6RU{IGlJcmkK&C4KD)2B3!RDN`tN#0 zc2aLV&oF%nS?oh}6t3z=^uNK({-)pJOpDOsvwEhfHHqP$GE>V z!Pc>jN>FKHvm~sblX&U&oL!0WK0moWaK{_*HO1&%pWwMJn*_qpjt4`y~uCfx>VbM-}S1D%EOLE1&Es9kt zQ>mK78TN$!PeD%62}ETfw>C9h!x8fy_ToRP+;^Q3ky!U5)WvGucrC*D+_FSh^XZBwBfFkKew3Z5_O+lI!r4)+K{y`cd@oI> z=s$X~b-^^>Pz|jh3=0$RCs(y+oaCCGj)=OmK2=|Z!sbc+5*4eVoc39CRX?(j@b7>23$DlPxw!Ze5zUn1)b28?|Gb1-JG_pyrF#NA3XRo=I)XaQxu>cIM==E`oa7y0ZpBk z3DCJzSX{8lo$(0|)~-O68q#PKbr=FvEa~tMy}Ha{ermO zJL)StiR}loq6=|Wt>u&|iw_QG2Id-G^O(H>yUel|+H0`QaS&QN(dyicrN-Jr?HR12 zy>#M_V70qUT70oJEL#WvGm-T(A_iSjms77M5p*-IrZHD5EYp|0xQKK96!v>UO&~ib z;8fO4Hgeaaa21pzMms^xBrALt!{p<#BNrr_I!dfljoj*nnwZ&zA=(!04pDPFvabmI z%5Z%-D`t&8T_1zrsYA{YUw5=8c;XRSc}>yJmJCQMR|$SH0KR>dytOrN_#rC*-lsLFmKn{ z^RP%qkne4|K;+SXn$1pIi*+s&zkIV3660kcE>6oimxBG4jT5RkyR@N`&d}Qu754lP&>I0GVlZTMe$E8Lx8>_q}tIy4D+8}=dFVLP7DhlLXGmv*z$Wb%m zS%*>eSWQmxl(<;ev$1M=GDRzVaUUY*3{WIJ)Yfr+m)GKGXR&8{>Sc*w3%H@2rXtWp zNv_<68>0}cIdiFZgfr#86})76*e#+sskX4AMv`mgBx72Ow=BqNdCzXzj14w0!8DKw zkr8z3HnU<5aqYl6&jOX-3cS@&>b2v!ma=Xx;Hh0Z4c}h@k1NjWT=ZXyf>6jy4$%;7 zVFymI#rT@L#7JrBurvUpx|>z<3*>AU*6ub?}Y33h`G%45_p z3*&v~k&S*=Q)?AKs*Ynme>1uJBl3tWM0_=<5_JL1(3EOr5%Twtc9F=qmX?UvcnPOk z0j%;349^@+@4U=a&u03<=C^f#2_q8k+X8N!uhjk~%nKH^7*Cgp+&5pxvZNR_~dE!-*mw@;g2rkb3W0bREUU@asBpx z>n0=nvLJP}8rWqJ-gzUDk;&Xh6Hdlsa28}HLtYA3hmSb8A6D6pB5_W#svXoETaqc< zLCLrn9=GI>EUPN8;q7!lJ9C0B1x9-2Tu&v`V6wc=74 zI!+YbS_PL59(Xj}{%|Tm!-xmI^7}GL52>>DVDH%E<$HWDy6q|bNNa|ge)vrv?6(t59MbG>gF|bM&o?Fka|EYIi?{sFp)MXkyE*aD& zyhL`BY5X>?;**}ZGJ;o)II>HXl0_x&6t7RfFaB+5z z?4F4^i;8kif93wxa<|>>PE_Upu#2I6)ddC24(z2a?3~72wd^un5m>7(R~L5DGFHqH zbhm#H(Nb#R3a2uWnwnQ`tlbv>JDzjuJaKale&-;(S)`koesVLSmjAqj)IB4JcsDX5 zETg!yn0z3w(gDTJ?O>%mB`>PYLs3P#uUcvX=A0U9Q}Ly@v>=mDxydZc>$R~)P4cCh zOci?CW%7n0OzXtezOho4vrY=AaXF=z@-vH4``X4Cmko^B7)~Jr2A!#B=H%rJdO&Sr z1imhX`;@3+EaycE$7SN>U+%CEYo&%=5d3X%FvEqhOewplor}IjMmwb)*Nz9yB{!d~ zgnc@(ie}=8&v9~pz#?&-u$YRC$Sd;TV;XYqjKgCcC4=}tbX$>X<6N?%0N$iNI-L8N zY{`ut!ctD;FVwc0!v1rPcqO0Gnflf_s-N-5wA-UM^{@JrxFu(drxkwoE*U{Gvh94F z#dWCX*CCfI%zpZzUB}-H)&9~la{l}W^FnXVuPoFi_A}302`Ta8oXiM<7<^@S| z0L7q&WK2)V21fGCGT>vEb2j8~Ed0W1EHcP$fh|&j8Gdg)u)BXNfw;(lu< z{fZlK6nsGqFe_hI1N#l<6xzyJ{tT}YVvZ*tao%6}s8Q4;w&1VsQN2h+HeHr1e`?IG zk*PYiqz`+Zjz$qIvJ(GlgYBzA@Afnmy0p}f=Q8j1l*(u>?x-_1*{j~73mZ=>tku>! zus4=!yUCR9l3ho`@D`@W;nexYX?zAB+>O&aD|5J4m;srJk1haL)dS*{&Prj>L%U$C z$|C=u>)8>`A(w8{V5-`NcblGFE20#eT&52hj32zx61+qQyM&$CcF>5sXl=DNqQAS= zTFkW!H04xlHrj}rt-V<1z2(qr&47Ml3(lxTL^Cfzh$O(a6^KiEkrk{WR(pyy;*x_! z(6OI`QtvxAIhFe^#B1m9BDv`NuVj6EW@5CFJd|q5Rc4+F<6ozPFuba~MEf%rtPah| ziKy%7GB-&rN=>65gAk?uI1nI3pH&)vl;X-!5QO+~vOsC*H*{l`ht6aP_~ zp4l^0um7{2p<#Lo^!;vY2OX_7;3xlPrCjEJ?ptpxzx_L&xGksBA@Ttq{`5~GT4;G1lN%IjLR|}|_r-(tet)P-plxpQ`{K;sd zt2|)U9`n4{fD7u3|E$5z$ZDsxGx0V(dnv7*#mzjs22{-BJZ> zOe0G?gDnK6rWpIO7u}0}ROf>3Z>-Jw)G^nyTi$_hstC{Gc$kn*NiT`(Q^MO+Tkb*R zun#t|*Tk`@SuN$28cJ(wZeyu?Pk>8k3GvEqqT9;d3x%f9D zcw!Yq@go#i4=}AbhtszUbBslljO5HOTJ+r}ZwL|LDpto0)`x{fij)1dB9fm@j3yMmER+TRfXA#e zQT=>k?IU2B-Vm`RL9@Lguez^1o|@)%`7qw)3fQnns{dc$`$+&cDJ@l#;?#r7P@$}c z-)TxL)`h6IB^GSSSz8HfR=}nil%z_0yvH+q_P=zb7V%XQ$@=4G<#m3xagY9V#bMr0%9s8acf{j=aOxYCA;ZGR9uHi>_T{utn{4XP??Ly`uAX% z+YRT|ENL`nPcxoQ1y)Q3_L7WZ%oC>HkHJawH?MO7u}f!I-|CUImgZ#0K~*?0sCSRT zcNG5dDT;#k=*wKges}qMox8ruTDZgKpV4Q1M`!a#jQXI0;$T8}>9TvjbLB%TuXM~+ z8EwVpJcnNVrm?UL3eK<1@Istp?R;Q*&}Pmu5v-9ycd#&3#TsNn&A@H+AbJ_c9W17Y zy8>>$O;lmF@SG1(r#eZdbb)nt3lzf*DiHT!LAlA_Tl5+(g7&zC-x6PQjQ;aB&fnFX z`}6o&GhmOL42R$__D~n*tQ%AJ5}Iulh#w2Ul$#BvGr@8!w4DSyv``Zf485;-me*0T zImL<>UC*W9C>G);=i`^=bCyma!Wiuh=MD!^tsX#Czc=^W6F=UazrDaB^yTWqXS!nT zF8tew)BFDn->pjqkN~dQ z%tRC=@JH2n{X%W717}w^X2%DDg&EHMjUW;m%hMmpdn0*oGIu_MYbMuJeArm7F- zvD6Fj5Rc)@71~Gl$l$JkMmz-O_W)>stvvP3C?zci-vlBO|1pJY8kMBk{GAHIVlv&w z5m;g*{EB0+$LN@U$I@Y+2Fh$P>t;PU$X0gt0eFMxiV!w7Oy$&g1gz($J;O z&FdAqSyfs44X{s3&eqoaZNb%=)zu!0b>qJKl1&X@Uk=4)Ls@YH__!CgY|q!UV}-Qj zdz
    hN=Fq75ZfrNkvP{c`a)8=S#uxl(a*Ct>9XPIaMjA^4qX<8V1}8prbK3;uY) zbuHNYzhSNCy!QX_RM%Krf;m`dQ=Vsy3GKoCSnUveX$P^~Cf33#?tV4@Zs1yv6<5=F zU%}_r^8T8bYaL9e+hS~UlpgL`&hV@J%m=XYJ%@GeJ-$dVs7HbR5nRa$d97*Kb6H?W z7Rp=&Vt7-Fv!+UMkL9?^^W23x+h44)>Ri=$Pkba4vMTYvWnq0P0oQ8L7|zu~SVZig z?EJheWQ(y@NgcD7gd&5`+ew6VVtMBUzjrMAyZF3NL5cke!Ri(_<_cqV31(%X`XSi! z#cLPqOeng%q{j7_9r?diCREBUbH5j`-Wejwvs|ZHd9l|qR>~19c?6#)K68q%6UvI$ zV>q23;tij(zlFMh&U@3abe@z0&a$h2D$cpBDOk!uyDolr-kwB)k>t zNigLLj(uS*p~fWG_J!ht&}H}^@3zovh~=6W+~2}-NbDy53T?8R zF;=+Fze4Hl2J7$Y|6NyNEOd)id4vBI>Wa6y?*HHJ78VmfP1sGasS7@D!N4yRA;fbM zEb<|2DB(lZ|9gGV^YDuQcL(AQlXAytxqG4NBz91&T{Ga>1m|k57>fzp<=}mx1}ZeR z^7B?$HrAH^vwzl@uMkRQS@`ZOF_*Bcu(i;4%MfE_VPV03F6IX89OM}Qo<6#Vq&+7^>&_1thjT$752LHf7eC+PuTQkjP1m~xA+P7 zu%58I@Q*L}*+L;nXjH{2dg#B*t zvG9Ab>rH&-e|EYX^Y!SY$JpyJEA}ZrS?GQWb*|5>vj4A0606UV5E}_C0I`O|uFS&j z689P2wh|v@!;TqZ)`Zx5Vm%1Hd*Pd6^)to(6Fyw*wAghb{FCtLu}XkK z3&6+6;wywYhR_WWiYj6qc|1qKiyy1XBzC4ygo#zcu=v;GDMw*9!RjBY&-4NNiM95I zI~4c$miL6(rckF8Z^hny8gq%g`;gTrbWWeLF2(K>N@uYuRzk^1?7G-X_%ERYAoL+( z*OE{W5zkL(m&E#Bq1!6FOCp|i%9u5f8Ve-ld>8vfoMcI3ypZ_cRD4$0B-TI2`Mq4AwLM=mR$Hc0@h?OEN@juNNp^Rc+GeC#Dr{L9N-wIs>p@$(x4p%_zt0cAy$mAj8H@n%8gnl2)C6Q2<(8RBUOJt%Rui4#Yt$;7HE#Ogx{Z!Xr7@Tx)` z=@)nQk$a1MEACw=M0}3%Bx0qA|BKc3d&!#k-KMMNV)RYvId34PnxlTDnuB7zcs#7Yvn7@xR@_q=AI z026!Ci8D^D51~dV^OZr~f5BY}^*`a2zVe+ypW$oF-M`@Oh0@1s?p7#Rz2|+wM}HK* z{gTgli%t&yCs5dK?S*|C(!H9X?_H2A4(SVpMl-Xfkki=TYM{f6;1 zX|asWor-lWbbf?q5IT&}d@K}QUUA>TXFlh3CgJB4;MO$MaO>PdtR|$;Fc$eqA#6~9?@bo7b_{;A;0h42ldwt->{g8bPtR+J$6X60(|5cE zu@d8O$FW~06dy&bD)e^4*t{?C@ zp>i9=S`nv!P=paWT;eB&v-*T8wm93rG0&0#TbCi0{+-ty&C~kIU8TSxm10&#HeQ!l z-zkWqMXuYD{Gu426FQ?&e0S=YwUL`uRh?)%A5T9yYx5fx7n-3$(N3HsLKXZs{!b{w zeq{BgX7z}8APqlT#IFut{heo;iq93`|H8Rnp-20O@6E*TE5he<#;n0)*h2h?)$fy} z7sN1^IceVUy2TwvqF}KW8)YE}YKu-rRd|f*dYSA97$~oqGu%qbF0C${oqsCi^Yl;+ zr-55edLmB**$`iT=zXB3HUgBjOugeYo$xAhV`;GWiwZ(kGCKtv!9^-YKl#Z6u~|Y` z<%C*oMQTdD$wV{o@e8aP&U+#bOv@U5!ks)~6=%Sv*;rr6vC}~2V)D?>{Fm(M25aLB z&rc|@T<0#nvzGTV@qB^Zod65Pp>K1Ly6?gm{9Q?`q0`~I8{;>HrlruQi#XEl&yvti&Q$l`w3ijDyzG5#cCsE8!_2UIZrX#dv4{?Wwv3E;yrbIli zqO8iJWWYC=!uVTSLSFfUui4IQ%)j`VveE)@T&cjUFJ)J?B_l0_KX}CidS5Ib2Tq)A ztfq2QN2;@P|K+1YtGXwzNa6QAB3C?)Psj&mdj+|q##(E_ z{ibI{ou@ug6RR|$A~lq=?F~u*75Sehc#ZvJp|`MAN%o3RMQu*qY7+OfmMX^*Y+_O` zAA+{RW_;Kb@CL=m+aL3}65OTmL1l=xo|3O0!j3}aIfe8e?_a~VA+QmXsMl42m7xZ` zh*5m!H16OfTwJ}0sLx7UsCSl@c2j{gm}VS9#S8Wn_QrQQeX`Woi%%tKuG9qldnEQ5 zz!XSHuOz*{`cf9}Z}%@|@Ft`2&{i%eJ)~B=#pM}LCE9_KiqN`E&p9)P8NQG13~wYT zgg@kcaHYSahj!n+=UrruO{l+AA%~nz6)oDUK+Prr-ZP5NJi{xuGWI&YeRq;+nfsx`-Z6Q3FAxMSG3n1AwOb& z4dJzZ<@8A5r3F*kLAp+lWt7wb)cIpCj@(6-q!UzksYxo8)a>#bDtVcx1{LrY(|^z8 zEtfZ{ziSJXmR@DMo|Vc;EyV%lcb3fmG81|Cy^T!$t#j&1?dkMQmODtx;8fbfOszPL zKGCzODMc!i)dKQzXPb4$PAuJ1(yGnmFlu(Qo{d?yl+eVxKIgU$%frj+gXhc2k#}@8y=) zE0vWgUKjh6mBKZp!XTyFGSihtKI?*2b$>FmS_@B^kMHQi?|kPT_EyNl6u*3vPJTz} zuslRM<5UEhFxXR-#cED?mJ)g?oo{wAZ=7-$4CNJNfm_&|5d3V8@t!J&K__QWn<#yyYHm3Yd&}J~ULtVr zfAKuld(BvV0kD#fyruF^C7}wWK%V8%*MxVfrh7v^2N&`VIhq=5UHo5h=`^*&K2mCB zw_L(itzvdExspat!PU`2sI7#9nnBMpvD?h)=BAK~sh596FDPA{{IS>JgeXVced z3FV~j4!Cp=fv?>ntpne2PW}w{ZMfXSEl-zxhV#vRBfS8d_}v=;CsBlcK))s}G8+fa zTJPmOdPVJ^SIQ~LYVWF)bF-V7%rWj*?U4V3zq+=`=@Zlg^+U%TSRz3}{GkTvSR|Ks zco(fCp-3yETGIbn-{mGW-&>2M(#lmY3z)czQbz5Do={&d*RdJAWX+0;HEjfeXxh`PxVZ@b)5Eh3M%G6&yS9n^8g0p%RX*K_Ro0n!6lJCobB zBtt)F{H~RSkK_wJ_Nje2cq}-=&1)PD+ha74-qIOe>5TA3FqhDm`HjY~26geK!1?*p z87kGJ8nlYUHRH)ojTinDzUgWfshX3(T5LYCdr0j_WOB*L>6~`@c@@AwaCHQiuP3k(Uh^b+ewj1t-dJW5xmk9E+T;v827!SwcAO(>6W zuUSt*mCQuW0O__8O^lf)>@AUS=JzbSG(ZyY4k8w=+hepDHa7Wsr z<dUOsN7XKuW;9Ht#s($h&Qtt62C zhOy(L(?_}>7f`RE1@g`7Wwkcf+o{Qg^58G7cyW}`S}!!GI?1zKpIy+r7pi0>bS-(Y zu|2G||B&KyI+|BQ4N;eB?7h*S`WqTEMMUr-!TQIUuH)Nc(bfd%%rY#BsH}2*v zgP=O>jt?FUfbD~o^ROaI<>YWOyfgLMkMhmnHSyiFQp|7q^G_PUL| zEp~e|jk8b78s}A5dU;XsYhb*)67)lVuacF{8tfiamS{oQvH!F(c!Sk?%0KW`6j1iU zr7;iwt=z#{qvXIz@8392k}{9Rs8onIMWr_KD{H+zF*_btlBUC8sojR*Un+rc0Wr^I0-Al`&ZU! zW*xKYc+ItqzWl!N>Ty`?#)fj43#~(TXE%j%$I!zD8vW&>?n!X1U#)spR(HB`Kz-q* zvs{x|NBH!1OBvj6UJlfN?lDE1S!yIX_7K?rin^Eex&GDKNOzANS59M`(hl2p)Xe~h zG-H9DPzg%c z=oaU9slNJ659t-vMP4Vnlv&k$;?z{n=uMR7b}e&?J6elpG*a@oKb`H;L%D_b$tr8j za!N`o(UGX8Y{DNWSJtRs!bjmDpQ7uME~w`i2b*cGHvl#_`JI%A;V_9&Gis(|E^~ zi~1_#sg_#)!!8(X9Ng+`Qxj^(-7jV}_pshREQJx}O}A6SxO>UTVBU@n4{mpV8mrQGs$DEO0m_DZj`nwaQhneq!R<_v<~AE*L%u3=Y90ypIf7CrviFAz5PSpoTUppes6nW2`@n#oD+ zZ7?0Lb6!f7%74ty)R#Gmuw(3n%LSVUmNmNd-$&NlK+`L2Gjc)sDBGZH2==ecp@I&-r?4 zCA<&TB{P9}DwNz_E!Xgs3rp<#Tg}Ev)YdK&Iv%(aJZ;VQHmkRd{=TVtCiNbej#6G8 zCzoy5W2}%l+jgW4x@WZ3c1c~m1o9r`Pq~DX-P~t_`;mGo|ES}%R9aT0g7=>_GFUe- z*8CzBFw*&6Xa^M&1j##Ti5GCv+H2AOm~3r!+Dmg`PErjm2JU+u$Wt`pI)ylJIy^2itTxxVIl8hO2w9h_boC$sy+?ddg;Mxj%e zMIEhe(Hj$|Y&BcLi1N|wWY;6NwY4bUWq(4Wtn|UW7;0~ibLTtrL9RXFM4Snm?Rj;9 zQQnt8`@>xx+7#O8{6!vL+AHNYA*y}rb!Q6ZFX^Xx-f;B9@<8iL2yHR2GiBU{_GM?U zR2x*0kNoqM*HumiyN9Dxb-$S;ryvInU`Fc+z zPul37hm&Ei`w32>^G3=S#z>e_fZKDsAK)P6IQk+0QYrQ+v=z)dZ>L)_x6K>&Eh5j-!axZ@80wZDx=U8 zP2`5z^PNr719`DD6oy4d9tgs}1DL&oUMk|#$!0^idX9U^wOzg^zJ0_WiM+nHi+C}NbtZ_Seq4JM%P}=PDvlduKowU;L@?BzsJj65aygp1o z9h9oN^PJ~iLA9Y)S-A|8Qv#G?M#E}$)LL%$m+I*keRB;D>?dVe*{%43r(PE z&MS+1lN*4;4o4rb4Eu7qnoZgP5^s~U8y5Jc=08>vcRWg{1JxeP*S&yszMXnUZtKl< zvNNAlm3dX>Dq)#R<`~`_xxH$tS;3a8xkyc~2IV+XergE;_)Yh6-2h4ahtthI znL{`1z0v@D;~bcHH#2{-Qm!S9f?1_I>!cPl zC;7eSOb9Jv=CdkQghikQA1d9L=B=f)aGzR@?bhx#&@fk+5zIjCp@FncX%Ctn~qKq4OMCHm&FutV4kTlkt3D5++p3bc*7`CRWPn0Xa#q0F$vKPD%5A+_)}I34jO za~;1_f@!Io%01?A{itH^mEM9PtSsFi+sRCgW(BpKoSOfClfp36$p5vtiZGDl*<4@{s*`?W>!XBA( z8a&26PjO2)AKf+bUgoy*!uz+KS;`txCG@pw+AC1fS;9<8dAB_|?hLTn@s$%)$^Vej zgG9X`8?w;ZKF(yy7I;dpIGsETZ&**uu4c#1FXdNgA>C(6t{sz1)14-;W1?~dyF)y6 zIqJQACDXmZyoK(jg_&*<^4i| z_al|*bfD=rlCjkX&sbI-L}l_n=H}YMaUZ0sFrT@e+VU1MrY6dJ=@uBcD#U-Coq(Ov z%_sGgi4~YcU*pAv>9C^u0iMpD^oLfvW$m%>>V=&2@&+n?qgb&j=z5c=&!awGiwbIg zX*8MhdobRu;gC?Mz-~beD?K`31DLoAC>`XS-dHB!&NDlmjGdjD3i48_bA?b%^(z~h zOD#f;d^_s8U%+)1=K0KL-+pwvQ&ZeR?QFPo(gU{xHuEVfJOQ}d-BjuSrB=1n8SKuY z0=-SD&s=(9Wte=D2yT;i(7nmDW-Wf!UNY1)FkvmD|B;?NYZ{2ixm5XDQ#H;+9egdl zm0sLQepnOFv&sh1pL-^q=ef*b5@(6L01cn)?gCKCqq(=m%!Fp8f6$EeGnE<1hVnhC z%_HEZxlB(b0e;$JUtNafXB!=?GGKCB!wi!O{@Jv03MrR&*nP`+Is@$cF1*_Tccj;q zo{j?7$4DiK(vEs~X*xnLsMf~CqS;UZe&TNRTEt)}H^UD#idsTl`8W|!g{wV9e@IOh;uN8e+8r2gRaE{xxhpKEDW9-7eJD>%bFqgli3bkUDf(YxDK}K%jlV)0|-{>o@%6zitG5x!=Hz zE~mnN2H&@Yj>k=Y(gUYIex#AZ4ySJw#oY`ch8@9E{pvLb+jo<@n@2RW8hh4dKJvDc z9oyFdVVE1%&U1M3?kLyJ0#zJNzn~q+yKwqwIe8^_rOxQAuVYR+9TRo&(PePBpI3Bq zD)H5M;ouoa6+Nl^M4Bh}VH#vDKKVA^vk$!ZX0Vp);4ujCe526^sV=+pffj%UE(RO& zFY=fl-0vak0vSOor-(t8wx!?k4xN&j#OxoK@Cm|;G7`3iA51g+!M`?)Lw_?5m5Jy6 z9^86HPMzB@q-ABw`m(#u8Ev1lj$0ATLu_$UGrRT5Ex;--0wYZh7-{md3f?dSdzk6@ zny@bn1o4}S&sV@t=LLiLfj$446*`g0gt6FgEbrfACoBU2-&C%Jx>jFQc22X;_9-9b z--v$pF`ITwF3z;kIZp34M9B%51lh?{z;q(>>gr7O8TGDr%n=n=bC8yCGsY_ zXPI{of@u%f0_UEbY1R2mA6{pcWH&PcO%+=(uTXU6WN}?`PBj;nd z1ZFd-RSVy_fS>XgGxjx^OA9ie_6DSUeX1dQ-0E1N7U!6s-(CY-&!VfEf@fcduE=}X zfiFsREq8)>q8n2W+mtdy70a~<{jr|VxW%;M zY4qoZGF{V2|EMQ0cIokSDx^%6FV+nsJ|Cyhhic*4P3$>Cov5By|Ik`!FVsj_;?rT7 zJ<=dN$~*dVMe*7*z2WXe=0+ZIcj@hIRCJ~>J2MqlvEMDv++}7nN1^ayp&?i47B06ts#ut5y{!`y$bn>nCHTAtT z#=1p zjhSsZNryBs9m0}I33?r$;aSK>jWC{8P3_Or!w@A0dnPqgt3$NExv#&8nFlhld6PN4 zaOU#n={}+*ke`z@FY^=K_|5+jBV@wQH|H!C$erInYcHg8yMun- zA`}qv(bt`eV%mBp7f+)^k^es zHJD)Q$khF0`fz3F1P+o@$%!N?)67uSa}L_ytyWf17z>kHz04`0C&BH()6_2d1gr9Q zU+{czRj^+$BB-OccQ(3ebfM@$(NCf)pz)PCxEWp8e4*l@9-$|p_U2799V~m#t*%Vx zd}M;UzulWD>!4kMS^6+IjN&nebcfut1m{l|qK4TZ`Ula`t^kfE2RWP!9v}|qc5m{- zI((d*j($#5Ejpr9P?M>~yI5<7a*cSW08vj#@g*O;@x zs`=9TvccWh6-|rNzK^~v{sC}cHVWGn_HS6%u;0QGhvi27=dEw1(VKbmnas)#RiDEX z_7w$#4C)*rjk>T_UFDUG_J+6nEc!9BdE-=7EEL1UuT z1Ndxlwk(A4&ZA%KQ|qbO)OmEv#!2#D_^$fO z!>j5KtBfX+<6p*_I_;ksHZ{CKob7QY#Cea_&nSP;*sQ;1YVxs`1+KIR_%24{vrDTB zl@Q&k=U_Xch&MGagR41)-PpQnrZXFaPNEO6Gq@wzF8DpLF|aG}E?`h&KNeUP7!#-# zcor?M=;4>oOxLTj*Ick zHKiw4$wqAGW98&vMU5irs47nQ`d4B(v*Xv~lR5?B+b} zEf1#~oK*VcK7g4ZKK;2?=HbvtGy%4U28aA1q2!u8_y#?ci-9xv>>XIEUBHeW82vtK zSX8U1ZBgZ-@8YW>(JQ?d)IwpQRG}uJd!aFA9t$>QR#jytjUU^&nXujkCwpE{70HN# zBB}Q+Km|i*%E~V%XQq0*yaju;X9g`?*2zcS68DV4Uo`|Pl2W=u$A24m5fyaMI-<@k zM8$&aXy8Y3(t(U?+!hi)(U@~1vJ7fy_2!hsA^Qw&rqijI)q_p zcA$MkMqJ;0!CAM`jAQ;o?=CBzr)8)&-sdJtgSCQfg5!dtf)!94Jjh8`Ij{?s`{7a5 zqk2U>jv5(V0IkU0tgKq0$#`_tY-^q}lUhxw4V||vt1Ju<4`J{6lL_qmaIQZhc7I7m zwlij~I1V}Ced&dyGUwKYskQ0McUFc|U;){7Ezn)H!9^7Sv6P7ON1%LPgR?pdqG=v~ zzkxA$C3T@=-5Z9=By-*PBkB-iWQtOzYpYMxn&NF|Rajl=kPSu&$Ez7+2E4wU~T0jMA7P)9i_qn?i{hHg< zb=s2Y-=d#+3#FfS*l8Lo?3la^%WcDVMa0aW4ki}Ph2Nip1>2DABqSp#L(YAb_$qs23T*E5RY5AEA<{rfx&SD4YnhFT1fRj1kvZT>-lgGu)405#8;!@$$ptRfyU` zNv0orQtK=XJ}fhS=LGy@oA43wnWsLD9X7&~ah*K#JvnG|u%iN%m!5wUgJnHMmN=K3 z@HqX?NOV}+DraF!TLX7$N7!fvDudA){H%0=HKGq*zY&Z@mpC2M(@hB&i+m;g*HNl? zi;8u*@MmG;!bXIx<6NBR|I7EMaR5e%6=XLDPzG71&o=%cDzmk6+A6BJ%jCJB&!X|5 zMZH39YNwbz%lc&IMDtf7vKkq>9=ea+x`$GPwgk%r-v{=hO*AdgKTtGqE;>*2w5ViJ zQdGC7ve88Y>4Wc3n^nv#W;mLj@xai$F`HXQtd#Jx+_t}Cv-@@)*bqj702&Q`Z=F;b zmWIPHaP?(fZDxkF9hhI;GM%fPeZgm(Fhr5eMkM{ z!XAaa3HudRFnkoMiP^))gsEXS{Nw#gd}-0X>i{>_6#X;jL>i-x(bBlB&(t*aIj^u4 z{tI<>#hN9|n%GzQ+3XKm94-E@-4Rr|h;%)hm6I>Zg8tf5x6TK~Zcl5#NmC?6pV_l8r3 z9QrWz{hMeMj*z#qrUsJbW?-Iq3^v>=uOhqahc_$7x_iyMEudWa4smKvd|C~VRY|~f zJ_aj%m;Jbmx`9TOy)55nQ5h)AL~})WD-&>)<@S!#Zo?<#ykqad_9-VCAre(RIjfc7vN-W5s<9?g~yu#qMTcK%f~M?4!^D zyc*poIzhA!AYXU2~CD9L9?0c3S!f7o5Vx zr`MT+9zoS=05QXCqKCif`t744GMG5xs#FpSHk8BQ=X{30xQ-{wORnruS@^=tYZ0#? zvBe>J(-o+_eFT#*8FcPzBD3r;Fo+B13 zAVMt|2oG$Dt`S`X_2W!|UxB;9c_G8hY<^{p#zSZRpWv%tKh!15TZv$Au!zQ%Qj>iR zUv?I^CsWmbg3A3)x2P$#qw09{Y*cwJQ$^|pBgb%J(i}tZ`gUL z6^spZ1!wy{kOvh-8>Tkh=jA9M7emF@1=7Aa>>=8oUkn@0!;>(*H`WWXlk59(`4$@& z^ds~i{7NKMkD|=gHUy2|6JG7s=m#Zr^4QH$biH9dCaYO(b~1~Yin%HDTc{^$CX30Y zHxgys3VaAW49o~*4ZI?Dt%ln93U;T9T2Es$5ULy6NB*=SSTf|puN}7f+i~G0ctEA$ z2RscKVKkfO9w)PI3NAZ}$SMig^)Tuk{pe@gQVQa;L@)!Sp>}i)i%g(ySdI$zC05u% zD!liY8+ZU3^#Bvei2;0%#z^vR$EfRD!CtN4AM0P~U+N!*^6@a@|9$?~==VK@J93)-3l6-Q+FJdT zk<2&Fn5mzF6=a;6RjDXFWsd$P=%)T4&62{#+JnARM*ERjfv#N*>Ij>y_*M_|9p~rH zVBVk;qfu8nm@gO|SQBU-s7V$O6SAb z2$tHVu#TmpUK)hYpb}g`mpMn*)5q>lefW3q<|Z~ABz@vkEyFHL3qo)_`S&`!{$8vl z=JY=@EwhX0{~B57aU$Cz#A>N|?pweKw`F&BmH&+S&Twp=ozo>RjAJcf9Ip+N+dZl{ zqhXIp4lC7GEhko~j^$>PIUVt>@$Dc6`RG&7hJWpk2+N6*;$dGt-(Dl3QI}OVkebIG zvaW|%eK#CUVfsL=o0?qtN%WYFs$f34LwnsLV4OXeQU};R`?~cI6~1@YEc8c5QQ>-p z)^PIB!eA*B{#pfB1eXwpJPsTWybWXzb`BmSuN+U!t08EQ&L~^-3^hPar39;Pnw1cK zo$vNQ_G$)tPGw<>s{yCDjI1LxnzivurGc20-EM0zgVJDNOOdVmjnPv!Oo`1ix|EYR9FVBC36 z|FnquUfHTF1Hsl;ZKQS6I~s3{d&VqOjMktZPzr^yr2dlrQvL{kM}Ki_S01lc($^dt zjxsvx{j@^b6x0O&)>><8>4@JayLf`~V-DpDIcFL=>P5gLmj`R?!ESLGzTe|^YI^~? zakZ^JRu@EBTcSZakKC$xs3KQ2s)SF1!-K_wg|ObqV6M={P+?Fv7f`s!3NCOtnb?7l z9qMQraL{bDi-2K03Ys^oYf>@k06X9Xry-mfGw|;&tLiW|>I)md5ppGyDr#YTa4zu6 zkEjMs--gXW*8r*(wg=``1Im>BoKO!yxs?n3mu*T?YW)q-&(A4*6msb;jN%9w+R_1Z099A3&TP~ocw$4@dwx(kAG@1+ic`{x##1T!ng+;qpgNU9dB#wx7E^4M`d z+)0_?hu?wXz;GC2m%(&%5k|c>Fiel42G9r0!6+?}Zo*mpLLCjprZucm#i&~5K?B5w zukfB$Mt`dhGA4j_sf>z9GT52(=<~F%@K4P{31zU_4sC}~oXn&2Ou&gMv_vQaul3{!drQlo|WZpBIz${ga`sDN&CANI)am!-4^-Rt@!hU<{W_5z^WD^~@wCviF#LPMAqg^9nnNOUOm-w(R-L|K6 z;OI-Frx(sXosr{oA#5Z4)rpX1A2;~RaNLuhQS)?}JJvf4Yxq=_60vMks^dV=#m-H`u z<{9mEXp3E@%Kd~6lLj;7LYT}l*_-H{NLG}Y2z8^uAT91%H?3_T_7C7CS`$s*wd2G8 zI1&uv1GJAP;+31zKW@$y=}bq*A}>5KIZ?764TIVr^n*RO80YgMkPeGc-MH&blfQwk zAEOlGf1|yQQWQPLVp2A5CH1TH@D1IkV%L!F;v2Lu(qth>o7tP}bk=4Nd8C$hc^BQ3Xrv{U*w5CHlVqftvLAHveC!uNcl5ry()$~n6TtkP<=ni0=)7b(}}N^(mnuQ!&HuoPL& zGbXE+k@wJ72Fo;4X)V=b&o<+?T!l|6F$l7Jpqyr@-9To4qneRSa@|Lqr|NPRf#tdBm97h>>Jd=6t++9?;_Ji7L=(vnjHlstB+q)nYp;E9&e&#iG zH?Z2rxo?O`laM>a$9qJ&^?B|S@eI%9rqstLp!@817Tf)tBHjxrLM|g+grT;Dw})u; z6z5nw>ipB?wN!yJN@#^RKKF0$AeGpQJW&|DVb4~)FH$z;E_JkS@L&#+GfAhZ9?x(p zy6?P7bWPu~w-&SRpD^`wS0L-%G|E=cStV4#ZRzk+8`@W`qaX}Nxr06W-D*YsAL_1? z(5X$2cU$63ackpEFF0Mi0`eFoDg169P+k~I4=E*kd-XV1c6cwH zb+Cipbv`p;xZK+)Jygo-5k?h#t8(01?mV$OJN?kstHn;b!g*E9tAZZ=ZBRhfVMsnD zH<9{ys&}2We;Q7&o%rf{;0N-N6`hgR%YT44k(8!9oncM{im~V z806kow}n&*WY-z_yjP7KEzvEWMx~_^7`BJbN%x?%MrolIRJM9YLE-K6KEjjsQyNd7 z;jWa&lbL{d<4ge6bwc`!3QPqmTDM`ATh02NfiKzM{lsI=cH^OU_{1J${c=J|SL2f& zspLRmt*^9(Xd|)LhjVY9bKm=iECK|MlAFk+tg_j88_H>}a&M^r>2b6GHK$Qv{ik~~ zouAfwyS~&D{=#m`R+N4+%T?V));Vi~yAUi>L1hxB*D9FX>PvIo!tg-X2Bq3p@i6gzO2Sn@Y&gklXtqXdt1Zp z-R>Vuag3(k_?0fsD(|8bA{y=PRFO3Gqc&OZqaBfZx-YEv=5lK`c4#aAkn7_I?kF$t z7%iP$ZiqVg8MiR=X`}VG>L+i#{l-cU&Z{N(nK;sOsRHL>Ul2t7rTj3O=LCV?pFTq? zCj2H@1Q`ZgG)(QK6kz7j#*3pD&CJwxmNN$mnoze=!oFt2qI8@E*H0C8?lm2-jo=)kO^AGA>&Jm)axW{bivD}g_& zqaM;MwXmGTJ#0sVpDoPqdJfW~xl>K5r?gSZ$>*iyN-gb^mP5(!j0-IdZLyO`g_P8E z7PiO(yhulOE5hk;jUBySI<8dKHZw;shKb#ZZb7`=4tJ8%jIQG~_oI@+m|~>RJE&vi z<8IK3Yc*$<dK=3$WB zXRUtdK3?YeSC%VkagAzfH76@|o6=quR7HC-6`DsHq~_N1s#o3GR-_qiZ^83DhtYh8 z5>KnFS@I%RhH$yM8p4Mu25|ymW-e~ZGZ<&?u=Z^CZEB9c{Pph1V)A16x$giN}_o;?~+}O$o8Fmf!V6XuuZ0sb#e`{JEpm3>>N%vrgAgjy^6R4nR(hO|I&9D`PISh z8ta^y-25ZtH=i*fc9%GNs+=E>(OjQt6wo5P9OgDUix&dAn zY_D&g^0)KEIt^3lJ+pNvhn-q^NB1hdw1?kg>M49*)UEDPbAM>QWl)dkPps9Es!MM< z4>3wLr2&|cWlAmSEqv4+oVGBbhB<@4=e_VANZr8?H&+LvT-F`m)rC2{^X9Zr5p#?^ z!>gqf*9PlZjWv1`^`5ucPGqHpSvO$MLC19{Q@hLcS6Ve?1hK|*COb32PrTb}tTt9> zd9Tg0!98XTZ>l;*KSrG0Q7a&CweN?vn-849Xh8LrdV}F7b4v72Ymy@QQ-+WC zUmzn&Z`497cZB7O`tsvKRC?>aw^doFeK#_O?ey2wD!G@;z1CeIVIi(bkxxMapr!q4p7ToO#dM>-+{r-^EuPR`)Y&<0_RT8=aK~OuVP{zB%P> z)tYYYbi1m$uZ_>APgT~_6Zqv|$hSoQPf0Dk6BB`W^RG@KsezXOZ2ME`kyc5ctW+hA>Bh-8 z#%>z?9BqXfNo9>{{#iygEv5QNF6f>QMn*Lc_Hdi1owc|sohx$eU5d}!Y3(yp+5Oyp zV9hmR^}56yhTIS=MrmdQHhF2B99DMwU$3w_P@AacM7O3n{rb{!59?D@rl{WLVdaPa zaaeAnmOKn>a}T$Za~wt1|JUA|z}r~8fB*Nir*jY)GKUPIQi@7MB}0i)Dntqm6jF(j z6f&lX22zQVOp!4e%1|V8hLTxiigTQ^_r9n7yw_f>XYV8WHhllT=l6fTI{S6@zVCIf zb*;6o`&!qUuIsZ_dspfvwj%wo`TvFS-xRIA9!kXQ_VGUWTy_Y|w{A!G*2aRor*XMe z(>$zAVzzgQpJiVfYaie3Ul0g|j|6|VwlZS9(cIx&lKuX#<|)ftXzd9N4J{5<3iSzP zS!4ay(No!@bLY6z^&@yn?+15dJZGl1hl`(R&-stItDQHz_q5_hKdrg=BJFwpBuI+Tg{!n%=Zgy{tJ{{YZs2FaT?_@?Wc!-w& zZBFK?teh-+xmG^VH`FWKAbfkUzcI=)@l=dP*Sj5zN`c~5OT8C!nF`nh4#t;bIvRUq zqCEQdDCe~{^)5+#t=W1xvk)lkx0%I_h1zESRj?Q?b-U9iHe|F~U;muhZ$aZxY}vj| zh!e_&fMVO3b?^_gMj&%PU`)bR_W}?`Iwl%CzKlCU^Yv!lN7ybcbjN!y`QY&zg{*nzd)in= z`w!}!&0X4dr&auf^SWLj_*F31+>jWBPw3OmBW_9mQ|&71eiEzW1)zdN!P0mhPl%iR zhumWBC4PQ=9_J2D!gg{TYtj|8HGa&^b*gw}wHcf;^O8O{anx@}kNu-I8(ZA`dSAb* zyTW~yvoh88FvEAgKG zx;cur@Uzwk#EHfFu*A&x)SN-FMcSg!*6{6t73?Y8WRx^+^skN0Jk=#yDp4>vF*MA& zfpL2wW4b=c?|}{2S}#|-*qEkYsz1Sg-{s6S3`VStILW9OC?u=(x#nQ2zgbS-@6YCh zgD2emPIY&V_ncP7x+=6N^r^KvQQuwe)MkzT7m%%&c~@v9%?{R`W?xQFepfGMyrd2C z8e@6!F|*1Kz=+SMO$_eNI38IXaP=jLQQk6p0aj(NIPdzsK{4&aO4>N%c`Qb&>-)Td ziTlizf$Pk@-hucv@h|K_?#~`J^4h0HCbpE91}`&*B|hL3u7UV$l*LxWb!&ne5yqFf zrN%jOfv$`{Z)AQEcTdKPvis~h4<&N+qvqRz3xfl!6IxI27I&W)Vs>owwU)ZYJoM!QtW4G8p`;)CZu!Y95XlcLZm@tP3SzUqgOb$TUHZj``#jIXS&<^+)+E?dZ9{t?gA1Ir#HT121C+CIy$gar@ zR&;Co3-IE57c{PJdR4FuMlo->I+Vg~dIr^t3t7D@QN0{IIYLD>>80`b= z$YHep80)=1`d2xvqqjvjxf88hBaepPv+iVtv4lA^aWr`86R&|6jVCyRZYJ}l&uB;Ix}ds&hW@?3#<|Je zln9ud%b-0a@ZGg8>=4~-xQUPOhFZ(%8X7A$)mc9)jeqX0L^<8l8yYtInBQt2>Fvn3y9_(bT(Z6Aaw?8q=9TyA5 z4!Vo1x*6p&W(FQ*9AemuVpZe4op1aT`qNg!;Jd-kt;%|sUjGU_7fXBVk-Sd+5;H4! zGVrR=3yLlM8WF5#jn;S2j*i*yICcFm^+EwNbbYXqF~FS^ z9hNgZ_ZfSURwv|TEXddudfeKoO?MB*x<`w|KXcn^eU1B#33wF^O9YK+R^7mt#z=p? zQ_pks+XETqjcy=XH@4It&FK_FwW;pY-eLXvz?0V1dJp=3A8Wl2ytm^^qu0mFcp?2! z^DS#!;5Dqu3tQc^WA0k}22dPU+SfDJ-J%r4^!^ zeVP;OAO18H#jbw3HB6iAY{BB~5qqpt#ygb2Pt}UEHvXAa-B{x-wjXdV^}8iDdYhe9 z?sfVd!D`{rfhKx!cGoY~I(y&8YDTYc8X1}FhL<-V0;vtZUws1H3k|zR?nPDeQ9Y0Qcr+a8?>dDhFF= zjh&#~$bFv^&YEIpzhC#ww#H?6&Rq?PMJ0U)do<639&!bi50~l}`kU~9Y3IG3c$Af* z9*G9tH~tK3Y{q4oR|VR-^K;6b`XINk-QC^f*EJV~M`pH&so!MVzcZpr#Z@>%KF)V9#AR5?dhV?p$ntssBN6-J9Q^A?$cGU$YMfXs1 zYq&PU=^K44y3i?)UvZAU-OR*ed75@J{qvjtWrk;T*Y0EGQBS-FX9wUxUD2!-_{jQR z%d$Vtoflo=9W;&L6f2Wa;wsk9F2)1%N3W{$5LP@_c%D|rGJ-n;<*b8xM=Z!enNHMm z_r~6cPLA*K&Nq4n=7sJL9}FHahim!0((%JNRdY)?O^v3Zk3zews>V9JLKALLJd2*! zuC@kR+x4BuYXwf8Sn1v7Z^mPOH6!pM+NIdk-mi7F>fsH3E0#!g^&P>E!ABCnFD8Ss;b{5ZoWy9T=&VwAbnge89;`pBhhuy9bwh-LWC>rn<9w^N4i1St5-A?~$Q+m$?R1EbjlbsH=xh24 z`t~+jNA|>qY7NZI@S}h}#tU%@;R1gWxbCm8r&xniUwW~E{((Q#Xdi44+^4^dx9A7j zV%CZ8af7kVxmj^9@p$0X&_QeoI|tgE&-jC4&2u_MH+X%R?bfosOceAFpby{DJ0!01 zhXB5diMgKP^|nj7`?Rs_zKqtZByQsr0|(JxQj%6{DdZ;f-A z^SnF7KcIbU_6n_voC+<~pR`Nm7Rg-|YvJCet+tAUjqpyZqh1Q^q37c#qdB&wHxJAW z^t3+1I(uY-wK3;8cLtUw58{7#Nus8{E^vFslE^$G7JodaPi{WDuXu-61h15Gfq;KJ z+9SHmHOK0u$3 z$9O_N;LVRUjc#=M8?61SB;}>U){i{vw{^xD3CH4EE~^B5k#diF$u#vK{fTzC?S`ebmYF#0Lq@Uj1t6{!31MDp3?sHbfq@9X`piS^oHEM$KGedA&Gp#Poms|7BU{%N9t zKgIpQE@wA%2kFg26Cz83Vf_s^=xkv05O6kl_ZroMHA1fi3Yb^38yoer-Kx$BI|F~7 zPV8{_`eHPz1>VL3+C=vea5&y~uJN8_uC~hh*xZqbusXU-JH_dBrS(dQ6`V?1-k;3g z-~jyGJ0^O%lbns-5v>c@hu5-__b&TXci%{?w7Lc(#@$Z+*fy|@>X|k>J*DxF&oHmmOZ&IE#R1G-&TjAL-lKj! z)^|PYTVr9OhksY%X)Qmy7F)21y1_FNW5IWu9N1^|G$ym={~~9#RlrK+62By#zqRqn z3Yn|TN6dlxv)IzlXPG;&igE^G z0i%W1nf=Dw*{N=WRpdbJ9(IS`!}j(OJP4lFUt(RqF6alZ<2(BqHj0x#H9KM46B-&$ z1fJ6G1?yss^8>zDSF;nJo5(h&2Le_=ABUAzU%e3seBZ_w#22`|wE6f`-G$}FZdP)( z_`BWfk}Ip@u%Y=Ggo4gSef>B#K!e!F+JGH;i9`$bw?5YbMsdSHCrt#i_S3{5*59f- zcleX&W7o0H^nrP~v6-1{3HzmZC1upUO z1x0Wc7!ef%w}K_rz&Xb*?M_PE$*IJ}j1KJk9>yQ{an`O5VQtjVe#U!UKQ}Nt*a|!A z!{GO9@pjqk@jv_2F5!38pER$;GEAJ2dA`{@QN}$E0@*QFoQB%czgr&!f?>(P_eN!H zpm(R!+g`wWYCYpB{Nw7I1z0bi0|rn-Y;fAKs@mOLgvIwa)>OvlK0CV)xtBW++Q;oK zUPUD7DLh#@b=@eSmrD%v`eMto5KVolzS`KseE&Ip5eO-VyosCzSPUGC1IC)b^TA2h zWBTKanOCp^zBx9?-sC&x&7n6!KL^&BbM>}~<8Ec=344ugu@|~NF+;zP8P@AoWwQaR zhTr%(?o4|{{2Awh#8#tbU~OQBwHnRyw)dLzlU>ujCGnb3%lgJ_i6z|k>}pR#i@o6A zs=dr=-*mj2CxCWj85huZukucEBGxCIc0VI=qj8gUul0zrC-F4)EjNNayNnS}DL)?; zD4BX?tp2XUzM{49nKr^N$=Q#`yb+1Qc)@>&1GtamN;DEELg@d{R@E3ol<7ki*Z_&QE!PrEK_gj2Au z{{@S|efS9N#VU0Ut!fjt0S#E=twB3~9(;!T{Hgf(M&RaAZK=M1)y}Kwl>`1JCSW8a4$mzLz{oUB-Wa#^`cCNr4;ZiIsKj7r8AaW7GGssQU#{cD0cy|xE z4aaAF2wZxW{}I?kzX2U#ZP|-=`5~5;-_sxV#kQjt@-+)Ygty6kFzN2ZqOcP>>{s60 z!&tvvf;8L*X6G2}G2g@D=oq#qS22$eNbnb9nK1>cqaU=d@vof0^=H_%A7MqHGhX1u z>AeaXUtqx%0;8=m{!XLuPFcl?XAkJtVGA?}NqQDr>>t2k7>y@eXKWLX@jf2HgD%2; z>D78+eHpk8i?G(8f$i0L#xfh2b6yUPce{kc32hzyh<}K4%RBn7V8OT9&&JliFDJk4 zX4Q8Qo*psI`@0gGt(w>a+1`bm2|1J%$^!oPoPpN|JHco1XRnEcL(H$hdP;YHx@WuZ zV1ro~ZSXGsxMjigd5yi1?)@j^pk41|A?SIoEnR7J=-azxjH9Iwu0Jpe0$Hd3%sG2Mb%8!pQL;Y$F9u z{}t>je5M8Q+&rSU!msKIcFjt%Y90k=s+bYv{MlcuTRDe!Ha?#_IH&g~^91NYL;CT@YG{Di*k2F8^yLp_vY@; zsm&o%t#a;Qjy^A5!dcDFlk`^=tZE~}*l@#M%bJ6ab7 z4LpME$dSmn$fNk_9gVz|aa-oPOg&%4e9z@8kpJcU3-dpfe@(tqnJqG}%3PfJcD@$* zJLJDFU+s)4p;hL5t+ns5pY$R&OV6MSUj{j=oii@}Q}n9btW#H=+L_%qdvjLNtO+L< zoNSy`D%(7@{ZyZvW%w9(%DFCQbj}00&qrs+4#Zu1E0)}g-TbW4-sHcSsHz_~`Y|Id z88m|Z1BbB7yOrJgb3k(_5Lyu07L81YmAlow{a(ax&1i4I31lb zj0P59-Lp1vQZo&WmbQ<5y*?o$63nn8(eP}Jt7#q@9=xDrZxZUaIJP2ON1Ux$q#J&Qj;?~?pau4R-DOxu^m1FP| zT#x^0sn}KVyY1TOh81{$55a!-fb*1lD>M5MSbmPwpEO#U1wr6w5vUs+7>b2&&bT!5 znaqnb`)16HSdsU_tHO&ScVr&Rw=aKz0*mtBoPTq^JMwMM?3Z~R2!s9}vgIUbB+WGUHG4Xb>J7N#S*V=EfDp1+JA$BllRJNY=>d8RX`mATOS7ndM zE}Z>hR->$8S%b50&gmV!8~vPt{qQO0Vf^n#f>O6O;c44g>F>gM=bg+~EGzh0$cltA z8fPqu%n6SP%?nly{u*!sweVdXjAeeeKo=~jIvMX`#kL=BJx*W3f93_Zl~cnm60aJY z8l4|K56ppkVx?j~M5ltta7FZJ?)=<|xzlsM$vvK1H@YplEcSi;xLv?4hb3-1tY}}x ze)D_QT~~u76=vtN3%+KL;59V>kCQ6F+~9Yi5#d6Sha&SL@koJ;Un3vm=ko-pBwa#7 zLWRO+q;AHoncrqk&a9m|62CKaS*SOwreC7hTZh|*mxi7T&afJQXj#R5HGU}C82pS) zu{%NVt>k{=^aTAqBe(Xc8?&!ueRbfe3v>GB^vk&uWQ0$0=H|AKHDY$qiWziQP7dzF zTKinaN%Qn!Mgj0)8et{Al0AT(f%`-A!;kTX`iHBB<^`U!=3*h!7POw#;68AIJR_A1 zy(@?$;~D?xiRS(d-Z6Z$taw)R0oG>?{K5ytzr@q%()eC{iaw0J7JD+*3Xl4RvCgrD zvAg5t?W6WAuo0JgF_44@aMsDESRUR925U=joit_vRg975see z4!wnk+54e|^mn5|mxs3Ccjj<9`#$T+K+oW1;nk5P8L^BH(DFZr*M+iz1B1^7=g~eM z0X^W7(0QQ6_tzivA9PN|I!D7%GnO4c>=g8>dOh6IPQ!TRXoH-hr}kwJIQ3Lco!n1y z&q0UW72Auy;(hj1=ZO0ycp8sk+g_13`wG?w8`;g7Wb6cMx}5o(Sroj}b%ABU)}b4~ z;(aL4#Cp)&02WIX5O>z$H`@Wb=35x^Uy>NfXuF43%-in1g?)T0rW+#A^!t`&ZrvBk{L4dE}s(eO^Zsdg|^u4U9tT@AR7YB{bm$L-=3r_}c_E8{mQfavvt zAMoE{HSigCiL=i>0CLLXv6o^MsJa$s0KR-6Wa4qeqQ#eWOCm;Dl>72WCY_|E;T z$JD`Ab{4v{7`{@kv(|VQa|3ZQ+lAQKPh+%Rg89nz%xQL@;VRG)T7yv1k~0-bB1cDp z7lkecU8#BSS;l6MS?2}b3O*D*7+IN7G&7hv4}690kuUHXZ4mAl9v+?%-Vk0AJ~#Y) zFuzrp{lIok$9QwR7PD!mI~^00mi2BMrvbaMyG}ioy*I0L_VMgsPI)|L1Fryy`aa4tc}THNAFa8pcD(NNiMNfljMa}%vUfOL-6rhyw6bT$^yud~ zWpd6(yZxL~Ik!P>=iJ%3)uLZU$6zgYrPJ4a&32JQ z@%?@*-V4O5AMuzkV>h#h!ZpjOgKg0;c5}c2W|wR^r#{u;Ef2)nzYLP!1vHOJcv2L_ zTjmaYySC#YcR4-IUhsI@(S}E}wt;P}9x^5x*PCnb#2INFvHAz@2woieB=j;n9d@8v zU+uGTj&ss=;QX2KxUgt977Quvf5KuwrmUpaT|=&8!9B*c}7GZ61k8f^T+PN`QPfl{xg+oNB$Ceq$*s0Bx~(za3n?m&_`7 z)K(A700ZTdpb@GN(nE9cVVoVfAW$w)Huyv6>BzkqZ)FV4=#UY~7#KN+F5N4g zyD}cmxGypzR5M^2ANtdrVew~T&oII+h6mj_&H=lz-4oyS%Iv&;oST#LUe5D5cjsK5 zb6<|Z=;^!YTd`ZfoJiOe-Da$}-k#{AeXegYhM7z8vMg>5*o(X2- zH$F1B3g4iPSdeTmyRm!S#CS%3lM|@Q(KqP+5bp|4^LDs%-KSYe{>Z6{J>+$GH17mq zjh#L$wa23&qVeYTR6EPA;M~hd?UZvF_@#$Iy&aA(&!x=1+jC}FAx>hOhTp?O%tC*q z_3qGW>8-H_x*0upJ*y4R>nreXd=<;)b!I=SJh&dG@PwZeye!lzv^Q8N_+a2V;k6xn zCp13X6~vwD8I?0)k&Thfk(1ys9FBY*c`i~rvLHMwv@~$Ycqj3k>&2VK`bQ^V0s0tY z$dl-i>GlS6&C}85x!rTB&|WL$uFbt8`Z=S78nL@rckLXXU|;KQ!}|IqGOdsB_iJNTFeibOyIGr^7=!P{J6Pop zcb<19IlG*Yo8!EWhgomzSPHN=(HNYbd*I@Qb|E_(9KQlc-Us;P*KszX;hM0YdMDUM zOIWkG4nLWttj2xKNkPKHy8xJ;Bk=m!M&ES=gqHwlUZ3GtI|ww#D)@f>fLHeicx7J* z_QK1-!l6j$vEcYXu|RQ9`>qb=3zZ2sLB?(Yv1nwZN@P*ES=bNd18ME?NbQW88HdAd zgFhJwzb*Tx=R|XI{pd&W#!f3xgfd;%el?yMTbp|U_(Rn|(#Zrb<}rHT@A2Dy90Z;c zAOzHPHn}tXx3#N{dszdiV(rH=^h;KgcIb!nhmE>sRd&o?2)q)gf~RCPD{gK8DX5mY z1%K9+dL?`m4&fzx71m`%+@|yZ)zD#wom#AIRCnhxQy2|G#vZ(I_b_WJVc%{~=8fh9 z2ciV+^-<=!qumF<&zj1bep@`bJ7U?{1X-Jlk5)_i)F<%*+oheW*GA@^(fvuM_9fuO2ZjHx2V~V<{tmn06&daSM#G-~%mZ z1TYU@i--7hvF^4mwAQm)^$FnC+ot= zNM9gntyp8tVXv?a_^R*?;R@jmaP8I50nTSx9nOfv!hNy9s1yuhtJ&QD+9_-|!vFdlRuQU$3);eM z>p1b(V{Ps#Gtn*Q4+l|rx}IU|15={_ z$jzIyGQ8zGjq|ad?q$ujX0ZD((CUYEK@axa8(CTAcD*zV`^@AD4h%RJtl z$x6~m=5KGgAZTJ!eifcLQ|w1Teftsg%`I_(=u;0|%5U%=80pl-Q+XwN_D!(uo?yN4 z4e%S{jLGi+{bL5}OeI+NTZEqbjMISX7;TN0u~{sGH}P2fkM=Phe#qKs-3PW#Z;%6u z;^+QGFccgScqWh)_z1n%8w`deq1o78UlXbtY8)CA`ZlD83x|t@t1=Sahh6qstBtWH zF~HmI*u2d!^Wy?;UA&OifZ$&~zB_h+QI*Y@yPY8Uz?*dZ7Qe$R;Rr$D1%R&ZwMrtk>HaAm_kz`+rW=R1a0 zV+md&@>Jx($kcEt#&kCsUngDyx0{_(KP@m6l8y_opPzmIkA48M?H!LI{Sd0BR5N??7w#cASv z&-~#=yydsYzhR~5OIq!e_-;@voEl}dKG%^WiWh;nCeWM#hSx9(hMg*KJoXnx_cA*!?!cK zi@Jln0<1xd_gCWW8cAHA_&8CM*+ffy11qNEjW}!7qs&#NXWn4FVf}1fgNJE(R(f{^ zONZ))YJBgNDnr% zS{jYDK7LvJ)#`%1Sq7AYoo-qD3Z`%--pBD;@vX6Ou|fFP)r}pFPDJCq!}w%dG{VYn zF?v4BDT*Zk9tM7xvpuVG?!!KKP>da@hIpW_K;zBDF8=}$+V8?^YXe5{W>%sjKP zxr$wl5&8!F`xmnB|28wHuh^Mc#7@_7_NnHBxv&WIfV%K+K0RuAXN&!Y-QDg4`pRQy zyovTMH1l&{3vUDe?I5GPqMUp2HTF6iy=v^wJmpV9_dST!)FXI>K7l{)O~yOS4Lf4X z^fc(ftplIKw;{nDXu6uL7*>XB)kBYkehM`Wk7A8{X?QI&{H@_h;dbGY;a|a^`6x6X z^aSfA*N0XFw+Dt;w$Td<;cF73@UlCJ&R7UK#By+6&v*KOEAbt8C;j5r#sKOA2Xzm5^=Vi1e6m__zx*LWkCMJ4I)e)fm4KQ#wWsDAohy*Y>w zne?n9Sz(HqCOaR4*c0k+_;>@}3(i$p`dc6L!%sn_(%2oY%Kq;V|5}i`hkq zr@eF1UdVVo8y$Nk^Ras1&|c$IVQx{wX~7!dBv4WdySLKI9cHg)u(!*rOAnI8+|0#N z@ErVQi-34{u{qnUiOlWgWWBc;nRE_L1Q{?9tcEU|8!F5kb$Zyr;<9Jtd2qFcMfygX zMvjM{3hUu{q4}X-!Sg&8x}O!gW`Rv+ZR0COrWM)yG+D_%#a!l~m&H72J{U4L#)I)} zFoRdbhJvcR5VWzAVByAdtANkB2%FvSV^88`H`sRUr<`0``*8ZnZ`m0cEAI&YX)w15%W<>zRx@WUU(-nzd3_7|K0e3zlI;X@Fm>^9^lh@WqRqSI1^$C z=RquHcdvuDky8U3Vr5X@t>NnEmgk*jU|L_}bauo!H1FYC+l@W47o3k7CmXchw_FW; z*}YyzkjWlJ?j8VF;Z1DC=CgA*1eBh0*oT{96=ZekSfCZVQ<>n3eHluC-1%^LWw=b_ zdPZ(lB9$T)A{mig;fdi6;fmpmaK5mKmTMoH5PX3>t7kZcvmv|NkK(cL3cDbjCg=C? z=CBLW#`%_h?F*21HnSqTCptKKADFl|M5{$Fj5d#sVfAEiEPs4BsGLtS{&GOwDa>f% zDX=E%f{xoAO#6MTVV{SsK@9)E4U~I;@g?5ZAvhKTh4eM>4sQkRWsvb5`0EwT0_ILo zq3;AcY!jFq_2J$vc%`3{c#7U*r?pcwC(h+bOhk!KL+wFwCOcv|q4am17^4AAs zi=Uhv?At1^DzMXS1Lu1CLGa!7anA4-?GAmleg(L9pBp(wYjcm;18d?Tf%Cwt{t+Cz zo}sm&YG49>AI^khwIhuqjUv?|T4W0-sBeZBg$qX-M1FyLhl2|PFX9)|#`sbn$XjlY zpK~eg{KV~G2z2odp>bC_S39rUyW$PwTadSgu_(N%9X-U}$gbRq(O0nd9L4V51@W6% z+jt%9*zcHGG-GCdgV-H(!QdSKtuy6H~;DKF3KldE#QSTYEu(A0b zy?qIG6+_I|SP#9`EWvp-pRs0@Lz!H#Om^avT_RzzVtfp5`-i|d*hpX6m2+(NGv9x} zJ=b04ybI3PM)*|)9QqsGJKYySyetFy>>lqP*3@ri1)v#dmSxcj!$BY1K~K99KfiL; zH&$DEQ#)``uy61fm__SC=Z9N`p9l{FgZQoRmLqER3?(|XkG zZ5&{A_FdZ2#mt8mvZquA&&w6=EwqP~P7mi0W6xLOan@!-v2oyxRby250P~79QJ2y1 z3$fj?y7YG+F)yDHpUY^q6#nfOg1Yq*{qrnP?M8E^$_Mmrv%t1`lrsOQ`|S5$Y}Dm! zx(AK78DEuWbUKRucOxG4-+-?)$h-r|n~3#Nf9wIi!iMEJ{MoL-l4TQXAQyw;Fo|*7 zh3w~l1j=)9Fh6F1sxs6a#*X}A_mEqJwWrqJ)8wAX4(bm7T2L1YVk_`5ehlTn?f8<_ z^)amY4=@dDkd6CrWubKHH;(r+l;GAfTVH++mYU2@@a5x3KkvL zql>3wpAhyJf_U*fy})RE-lidiBS7X@z=*gxXZ@T6OXe{wKXzbYaRG}wXs#FU$++}jye50}QM;uxp0Vj&?sm5uJ}CMIFuRdea9$3U| z#h&_YEd(ONY>*mif-^IgzV;jDl1JFNm}fkTH=&PAZUi-A9u`Jz=xg`0sy3B1$sSlZ zS@dAd5(lxvdJ@mD7I;w9WBySUja(1E%V$78`3eiBW1P)#8+J2CKtmk|zEDMQokpSC z$|GkPpofoUO{WRibyGm8>`6QQKCqqsAwmCICD@jIxbeX+gL}Xl>mJMr3=HUjR@O{X zRWXk;n(4qP-@EZjnv31Y1nix1ux4rDukfy?@45|Su?o&A))af$E$v$Prk_BTzK`#S zZ)An+Gc?)z@sWHcFqS_Azdo=_)5EQGiZB}elo50d?-?{pE9!6#BfC1Fy7tB$SRYW1hZ}_g=(kWOM_UdaN;w(p+Lhv2J<=iI}2)2nJHaB&zf}`1KsJcB^J`&PXSE z{cQO16(ihdv54sk@2-bqow@(c-;Whd@kBi=o%(`Gwhgq);f!sr#a>3i#`Fc6nh5g<8z9 zuvH8MiqEiddLR3r>R1#^p>@vlF7sx(m!oBSalS)gXFVu?JsE92!S_RUYr8)CCda^n z{Ukn*Qx3}5H!%kNi1FKvU|a8}2Ym~B(3)Ofu)(S#XY+XLMLDDA7Ie}&u$TsGhro4x z22HvUe1i;5D{08=`+lQ2eg(%FeY}rEyv1iQSe|XMWV;X_wmsS!P>K6uX_lW|g?ZRv zJ%)8xJ#b$NVyhLvHl#X8JFSrA_V`Y}0wTj6=J&U0&%o^&__>zFj%K-Dh#vY)ko}8- z8vY7ie9f3M&$Z_8`4Zf)^#b97m65Sv`i}%5_G-|?KDKIF6U_@azk4{Nr(*0i>8v9@ zq%X!k=}p>BKBR0vGvf~6adc#_<_32YW1#w=f9=9ja0j1l_KzUHPG(K9h@Az7Za(`W zB(M({Y;y@eWfx~Q{;?Bb&hsu-2G@BLKa{cmZj}8He|M)gXhm3XtsyY zr2~+-U$FzKhRj!DzCRys^#)&eERyyPefuNq>pTGWYB3sK#cp*s_WkP6N}FO0Sedon z)!63@c_d3%m$+;o#!n^&fmMmu-;yP8^*6w+bWxjB&`-U3L@uHd^g?`*Zf2w%Uj7 zTsuEfIgVYgrku~Rhu!qn-g{V@UQVld6_0`)=(S3;&t0q&k7XscGN?+8v18-}as3o% zXVtJ;JO+~7LS|&!8J$EJwfXvPM#w9{4WCSDdvS_cP5m5BklY8>WF}T(f!!Ia zyOW%a)q++3S=dn(g>M_M{&)r6b)rwa6Un=nc}xLToQ{CSxu5@&Sk{+emeZLNY__uJ z)CQidVx)E%{zh}LLnzD2Mi*#*$y~iWnr15db=NQko22d33bJR{2F*2swmKb&TcCdd z4_DI%{KWq8A$>nw+lfcK;M#jw9gbv<)(uRu8^NS21^>eA{+FUQw;+ja_2$@-*2dOU zoNzWAtIs(|?Gnb;KjU>$m=WSVjH$aaN_>Z1q($r|onWkc7|XwGdZ2IN>0G)+UZ&(OVpg#SU1jE@bCKW52EzyLJM1xhYudt=Q4;&TerxTCVs! z3`bvrU*q-H(SmK@aaAlc8!;O1Lv7xLH(gi&-Z zF!Okh9&5Syjd%Pm|Y)Ct)Iv(sK1T| zD2-H=z%q0o-}Cyb*u#E7d)~zgTaF&rE#o{|{gwEA+`tanE%XAN z;m>pIk>A70Z*ltR{q)`^(018iDNO|lvM)1{$7#_wvg*2-e&=FFhB;VG?*PsBar&B{ z8C$$V{a*4%f~nlaug(hpr_8xqF-Ixn74SlwfBTdB9UPqFe$LEfKPy@JSplm7UoYY` zy;kh`J_ml?YvuNKA)*)9i^JoCSS{Sz*cOh}Na@`#4`X?AQyui%& zG5Bd1ThIz0(PvLX3oM3ruR`Z?H0N?qeFw5XaTgwH)j0+7J8y4(^R`;YYY=ymZ zS$q!4V~Jf49@XQ{VWs3Sx-TCy;tHfH!*2=Nb!pOFfv3RLaJe!1xEr;4m)XK5^y7AR z<98yj=OwlONOa_Ub`vJk<4uMayOQ&_OO5MjeO0j+I2ZiLi?HLpivM!7%{BT5^xFOT zAC3;|L(kq2X*7e6xI`UW4UMc#bc@JHBV&p^X3gkxL4r-;)cGg-|J@?D-4v38t>I3Jx~iuKuM z@U9c>a{#-)Qxl6>?LEv|S0+5D&PxAzj8qNEaT%Dc?HTJog*>$&Jj~3*M)w85%sqzP zLY!-Zc|alfR|W27at8(kmL(U#xi(n7KaO-h!Yr*P@;Du<_B|j;<>LPkpcNOTbzgxE zdqXr~3#9Q;v}Auq&tuV)LRXH*#%By8Uok3dPao5PnSE>IR`e!=Nzro%#jC!<<|vEu>+P{ zz3`3h=Yv|vIP6iLbp}(kH5_}8xy^9muV8gZ!@r;gEwv@@r5|$lCMU0a&Z@&YR&6(< z<#sd2@z~$2jAeggR)d-_FRzJjb$#w`WW045(&fYFy@`W(Fl18FN=RLC+Ic>B$dWns zM!4F-`!L=kCE>S_!fP0(wd5^yWR~6&9WW9pd54zv5&iWPdY{dl+Hn%DoJT=fUf@|MIE^t)v^*|apC73Ja0d2slA_*|WJh^mB? zz^c0#J$tv|ar?b+u_s8G{n2`F(S|=k4yW=xiO&??-4Zyv3Z(w8 z*>7KuE?LRS_-t_SrsJ=%4jvv)sB^HZn~av7%DZ?M3a_%qGXkrfm)SSzh3!s5dcBL$H?^3Sj+66-Tls@CMv|l6B5|@gC`d zwtE3v`4?EN=*N!cYpl6_%u2zV-~heAdwGrC<722y=WV@-?7up{4j1$U3~e~MNgLo!Z) z>z)h0L+FVr)Uhs7e+jZv2K{*fvM%g3+c1J|%jaHXw-;J;1fK!S(0XIhISQ_QitJ6p z|Kn{q){iHn;pc3^Ch|5$vd`TQn=mDlB{aWb1z;hevx%`7zAm8W!Adqs;Tz=iTll#&$=m7VHjO;y@R;+@3;Y)PV<+X$fwxgOoJ(^(2g$uGsXJ~)m)uId+cFAx7#Z%4 z6hDhJjzTKmfp>2qspF8q_u$(!dXZUtPl1yk@cfOWR13)*0?(g>!mV(xHk50?!%NXH zwfL@t7CHxRy5t_E4Dn>U-%Ht6Q`#kbmQi-0=Qi@$Ot@%o8we4WFte%MEO@bu`U?)M zAnq!Dzk%;tkfA-u&oNr*4&KCyWbKzG>8(jp{2m$GNcd;)e=OV{muwFoFm`y8U9{Km zetR?d4#p(E-{JYY{J+hUm$7tx3mKn7ZrhO7{p4|koPMSBLJt(Cx37UzUPJ4z%}4a+ zEs@AhoO1C5ecIE=*Ne$EI|!M40`5G=-P`c-1AJjeqZ1!NQ*@wT=?c#uK?C1TE3S)% zyb7+>q>mHQejb*4h0!?$7+oilZ!e3safJPkJ-pLBl<7DvC5z8VN+x>Ela%iiEeK!{ zbUsdYlos3aWSnf?z3>+dBzpvh&|^?KNUB_DXF>NDDDH=s8{zJEaBv+wUx92bL=tDi z3nAYN`27@}@&WQZiFY%P`>9;N2{+#+bOsXp^>5Pp1!-6FPJg7G|G@8eaC0@(cT)?E zT9rVDmZhFTk5)_Svy17OF68;X$sp(PEb) zkIQJ2YkrgFFOb8j$sTB4GJGk#oCjxT(I<%>YG#tdUnSe_rsO+V35{=&^S!(mL04$a zo#b&M*^*-D${6L)DRIeU*^8jJfTyK|=TejM)VMOA3zE-D6LLP+Rp3ZNCuD0Q+CXsnYvk*D?spL?+P#q94RCKKGA-o%02D;8BSuq4X(dtK z+>vDX0r>kXyc8|Qhoh$`h0yoE@+(>rCNGTt-Q=(6p=_>YT%pZ!2oa$Uslld5N{AeD ziTg~>05}&(5;7H_{)OS3;L8Q@qZqPv4qOqvS|$F)JV8ihIe2#g+`JTBa0TBN(JI8~ zvo!w|l4(WE63KChcn>9@RG3`OO}?-5_!gsOpuUqI;p6I1z8vILlo51I%A1wc7uj5i znh6~t#t!@VKMeP?;SPp*$y7q){6eVEFY^Czl4}Q({i2Y|{cv_au>`+_cG?AxxAA?5 z_(D7H;~j{Qom`(JrxTtV+mf2{=;?IlGwes(h;Pk&<39DT(Fas^F{qRD`=#lM-K=^kO_$Jo#G$ zsu9{xChtXj3h>7ACFK*REZ$*&wlDZ6Mu$Sv=I{~PR&Y^igrjg^Z&K!dN!CKt=LkIb ziI3>7#7O5?YQ7f^2x;BVbryBaBHd3(IscjXC-@wN?}85}k~xX?AbOyzB(H=7+DVRy zk+djBl=o;NefcP-#tc+^gw_gCqX=~ntxP=4q<*1f9rIJef=Nz_FcGI9oDiDgJR~z; zk`obr3&MG!DGDZ2=l|_q_DzKeFOrl#(Nl?Wlf}QtGZU%L&v%esNJyg3+Z57gCQFyY zn-`oBb(1nEq%D^_F-8%xfQ#dApKN$6d$^-X4hWeM{hN?uQTI44Q}lFEDE7}4B-$J!h-Nga8J}R3^#;~ z^p<3P}*UTFRTa z6KzvSmlzod9Vj@XLd4if%r~UeMU(RJE7EhAf1%H^l1~I@MSmdT$+j-qzmQ2Gktcqm zD&LEcTp?Yemk@HP_$G1`rIf8etZfJmik6saD}sxWWZetG3n5#APv<7vpJ;(n?-k%l zVYHqYAF6gLs3=Jj;~Du5#J7A)7F-jfJn`;D%MhcP05TzZJ5k5fcu{am>JCwM*>i}# zL)2SKme@qQh|#=|7NMENx`KGyq7N4mCRTFPii2qT968FrsJrY_L|WOxh2E0wJePFp zBU-5Fd4;4U_!j+w>>(r-vf=H^k8BsRjfavo5}cK7OK>xk)L(^=rUJ;CkWs-8sShJu zbKE;0(S8M|1O;(#kb}ru)K5Ma(kAZ3pU@CubxO*X;DV^Xq$?-?RkVEZM9H3zKGCw}pLl;Fjff%g z*Jw+!ZAeWb%Oq+jo`^DwcPZkDf2pg)`<3OCb(Sg9^`(d*bc-mPY;}@X;th$K%RB{_ z1SLUB@Ii1&JeT)UenbqJyBHS=O)I2S_Wv?mzAwQsk&`H`NF!5;yhP~fe=<+;E%_{U zhT=o2u2N@+QcI~4v1NV4TM{`*{)x9E-?4Z%g0p$^7xE!$Dq4OtDZ4f)?Ka!Wf-Ajp;+!ApVw?w%_DP%guIVnZrnfMc-;v@MalHkgnny{dj45bJeI&+CqL&kC#GmSA zMK33FQ13DQ4TzY6tBRT|N%}jNwU*K$Taf7c)jJTJkgZd2UGYq4S)nP?xi3e(B2<(k z!RSHgXQ@rZI}sdL?@YFj)V<7Id`sz2IVp)&zoL9nx|Br8+DR^nF!`srEch(AC*On6 z;OW|1j7MdN(4%6dOnwAM)kjLUq#>_mUQ(Bd+>(tmSz~!EC0n&P+3sYmMC~Q#${`6cf~E%Nd~)JWtkpQye-rctr;azKWrBvi_W z;)ZxCJ}T!_|0Z$~d5iqg>nuwk-?a!&|4ZkktY1n((&MJn6Y0q$nUBgz(v&3=?@yIN zlv4i7oKk6%1b+KcJX1B5b(MGWnQWu#TC^S&SMft}C6${XE;%KxP<+=lA$suK_S&6t9Xizh@)uB_~KjELDgHb){m- z+R5-g`j+%W48bk=z9jv0Z6iWtnbY5);!=u+s)Yo=j>(8ApvHLpm4~FD=qZjUx_NVwv}GAZiqw_7R?qX&mN}-{ zf=ZPhE0uqW->EPeQ+$hh%DT!s8KPqTK1|j_rjhAX4MiFmU!_ikC~nHs={!j1r+WIw zzam8{hxEAVp`ujkK3$SUm`tOt#ILONnQ5u`DS9G>{1Yi;c@!^1c#6J^C7y{ed8dBm z-S59s&n2BReT!5gT*-&H7GddpR-6?&Oa6&iBA)#IEs&pN@NZwK&=f5drqU^TGF)*$ z+^Orl{8aJeuZ$<+s+<-7Rah#XN+}DM9xg-DOG`~s%!aF+{yGRT;59_i4ur6or)_7`e+RG6Zv z?!~VR6E#hLn=+;3PbyBT{^=CbuN6mC8dYwUQ>yeTMCC8;We=_5C>rWl##G}3#TQkl zy!Vp2_!g<RI2n^srVv~bPlR9isY>1uHvVNt76M1s+8(U zDyA&8yq9rRh@v3Mrg$cw2`aLT;+do=zs0@!OE0;KlX@mX)SdX1bDj}xyg|9 z^m${-JN2DPp9)b|sb3LG@=}JWJk*_vDdVX-@hi9{%byBWy5RS*CEdK#e_sHg~_g6fZ@kHG8lrpV&p8hA}Dk)UIGKPF6u2tI8X{O?dxaxh& zbg2+=mHJDkm!4i;r@mF5sgP8?MVPotl{Zzg^e2*r$U8+vUZu*DdX@@1J$CwiDt>yX z;&pnMq$fiZZS`E-ix#Nv6_4}AOWnyUm5VBadaj1dmWp}yD?uYYpS&?;xlgBf_V{^Ii#thQhD&Ox@6$u&y)2K+L*=B>D0-=T zkw)@HhN(M6Oa96jdBf80R6Zh1$(DSsQl`fcPgJ;!rS3(jiYd#Jil^>n92rkaTZ)E| zh!ibJDLtLcITa$WWQtU1UJ9}V>Z#0E<|yS)(v;zOW2w6og}nJIDyiopg^DAe=FLxq zNiNISGDV7(qL7L!u4JfuH!6k7Ej^}smN)EljhEuPpdtQLIptmIThd97k)kYPse5%N zXo=RCSB_K-MC=rGNmqr)XX;MTlk`;yRSFeLK2_hpPotiser23=KBZEnQNS^%S%PwiMWcM zN+(jKU(366S~8Uik?Cca`c6+HX{EZRSx%y6(Mue!C>S^9Id7p|q6)#=y zrAjBCrsAoqR60dpgvfvOOvFw7seEKCb(e~p3K40GH->wA8Q4BlUZF{Jd0Td1V>%#!TJGtGx9PRAgH5^z>))Xw0k2mUv6 z;D4Lm`!nVFGjRmZMZEO5>i*CCs&}T+|Cu!ZGjU`utNOt|pXb@qsqhrPBuy25w%i_dk|7v|ieDz-cYT7f^?yu7LtMSj2rwCJ$rRb?& z6<^(}Ulsm8_51%S-@jKs#mzsTTBZ1ZRZk_uf3C!;w0|!4|AtuqiLa_g>A!!r+iV ze*bFxvr&~L{p0*oasD{o+44A3cwUNCe{Qu^&^gPd2%Jew@ zDQ^|`KgIjA&lNrO`)AYrH{+d+FMlVGzgiC!U;O@^{QlpkN!8$NW%>Va-DHja+vWeO z^!}4%{!@y)Z|bkc&zt)6yZ=N@JePl`r~JG3ieBE|KTqwyTN>F1rROf_r{DkY zy3Wfrb@xA8MwM&&@1HM$Or_$BJ9YiP<2Sulsq6o#vZ);ZTlook|BO~%3jgi${j;+D zlhmpvdFyv}is|wHD2?I>!0_BXv2GELqRq(47fEl-b=m%^Vd$v=&E zw$lAmx_>48?>X_GN~Kc#aV|2}AIJHpPtW$&R0;F`o;|m-(K&kx@kCJn;~42rMchA* zpSQGs99PXd)6=BqcIInYhE$p}$5OP<_Ed(asQjmrrs(|nn5i`BS1Nrf@6*eo%ASfL zuF`3wU!VO+daS>Gou2z2r9M6X)9?Q{t<2?YaZ+VS=gFC4r{bnxojI-u73ECN{jZce zo$B9Br)bFZsWPX+Q(>oHsW@l)Rpm*q+nM5tus;*$Y-#^$xGI-Qm!9|O^~-y&Qv7#+ zQ+b@3ZtA(X5^?f|ocZqev{Y)9{`WD?6mn+jsn9c}Ne@%Grc(TS^)Cnh<-orj_?H9! ma^PPM{L6uVIq)wB{^h{G9Qc<5|8n484*bi3e>w1b4*Va)0e1!f diff --git a/utils_v2/api/__init__.py b/utils_v2/api/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/api/__pycache__/__init__.cpython-310.pyc b/utils_v2/api/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 608ee8d24d49f4f30edc594375219b399a752430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmd1j<>g`k0#Dw6bP)X*L?8o3AjbiSi&=m~3PUi1CZpd#w6P|Q diff --git a/utils_v2/api/__pycache__/async_quart.cpython-310.pyc b/utils_v2/api/__pycache__/async_quart.cpython-310.pyc deleted file mode 100644 index 8e9dd8f8677c5be0b1a3c8bf7081e28d028ea536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32156 zcmeHw32+=&dfs$T&xyf75IjXuElMH?EeYygiK4U`fuIP91h~LZ2X?jN!E^&0a4-Y* z^pK13KuejjiFJyuwRdgD-c=0xO61r{e5A@1=c=UaTHA5##CF!zRY|JilwC^fvST^+ zu2!P*egEt3IRGA7`KU?))V%5LcfbDMfB$c)y}juO{$~46FMR)RL?XY>oA$pgxOoPj z+P~H#5i2qqu{29BYfJj9z7(B}E*Z1NQfxM+@p-fyUrNj-5kbu{JcH0cS_#g*}eGgE#I|d&YFJS-LrQ~-oDv=@_o34zx}}F=C3);-p}Xz57mzSMq{f5jTM zpR|uY8?g@9kJ(S{ip(3I*2--zzF<*Yt}ksjiUB5sUH8IZG6f)Y(Hf^ zfX{>YJcQ4~_&j1ii8f7Xv(I|edJJu5!+Jf|r>&1$kE5+;Q%{6X*-wx4s&xeQpTy@V zK2PEEG(Mm3$N5Zayz>KA)_NB0j#*>YF^u(?HEtcp_qg?(bpqeVQxmD@+eZ2s>jnF$ zb<%#$I%Pj*O=6{z)|7P`Eu66O)+eoLjAsH@Ggb~)&)Y9pXU^$g(45btB393gd`7;l z(9|N4blSvU_Dt@?)btT`!v`;%t=G;L%I0Zvrdq97wzF7Lna8rZ@wRfuosv~pIcPpq zvCM3JVH8&nJoJbvI`!=H<72sr7u(C{s^+p&y->1jvrsYZLT$yoSXeP#Jhq+rs zD%Vl#fd@y;(&)9Tf@zhCu6gmST``N* z$_3kTOO*xg>VoqK-Bz)qHKaP_&PjGq#ISpmWsEIdveaD#pE315q7b9nt znmO-Omt^F!9DeKOOyL6Z<_Z<-V##vPc64_Z8#Z6W=2cTTk;|PnYqFy;V4%;HY8|Mv zf{|3Y2$p%V1gPiY1WV{Q=h$xDsi;=i`=JtEoE4TbYxN@Q6*#Axt@Kg>I|3iuQVqX_ z{U5B!WMcp*t6VA;xML4<`QOb5>ZrJf1VI=MA<#)8@lr09QWn@toV5#}E;a0hRQS@I zJEc^(0$wthQr8ynwg`f(I%vYS@@(MmplXf1=$Cf)r!_-!?!`?94oTnvw}fnmAH~J% zS}C%sH6x3Wb?sVYRd=x=+~{T9+1=FFjcbu(kyn$S)>oseM$>3&&FIm{`7Lg2J$@~M zO`~Dc#84w9H6CupZcyWXw4d%Qgd{1j z30e{;DFR`k%`WK5Dim;_Sgn^W?kam}*DXU;)pNCo$}=rJ6&m>m?U#SKhy8kc${ec>P^7@iM^!j>SuHN9Lsq z?VP7w@E;I_{7bg80p3_QFID|DA^g-#B>E*InU1El0WGcd`QMpn5_f!J=+46^RODcT zKW>N+4xh!%>p;eufqw_i`Vd0Zx z>cDB3;|e}%=G5dkaCI37J3vC+ATkWl!E6t4cIpMZl%1XgBXh(A&jb!=Z0gi0a64dv zj!#XSC$rPfjhn|OPL9uvnlriSiLuOP?#!v|$&)GtHt8 zt70igcfp-P)CiYjawO)(*mBKF@{2`0y;SuQ&#t(3ZDPtZ93Zlhm~#;CQI+B707@LE z6jzsQ(|H7iHh`9tYzM7hMyc8W5`b3P&@x(5PiuonoujPJo;vVa91r*ryf%-E*9E8f za6}xZH#Ok0`&Of_wvOv&bXR0ODi8$Bwr*Iu6}_gf#?;DpWk0T-TYM*l+6q>k4c z>>ycm=Lyz+l2sJcv6F6q8zb}5waj})!a2@X z`@p(k_*G|xP+r@B)}kmRVEDthAX+2C?*e(P>m;X_fy98~fVM1v5w0`CslDMrsGO9^y0#5cOi0T_{2L zFPF~Q=1V|Gwe0fp;hbHz7a;8W?^WS3OjseWaOP+f7_3?p)mk9y1mrx2Q3*kpLiT5u z%Mft8)>*Z`;RTa(C*FF8kg`C$6<>u~rKw%kzE^OS0274dC`8>6-FY6xyf}uHcjwyR zjG7#vC~74HMLmhP{tf|XDAL&Pvl(r0*M^|ND$v-)E)>djaHQ_sNYu%)$>>sT!TAiX zM&k0o*@`=V!nGfq%aSbRw#}J6b4Z4AKhZ79a&e5iteD7m^s$b{uR>A4~Wuh0`k*c5SH$ z9v6THjlW>{c~GUg<0DaDeGqQDBW7Er7sE>9Y+bgyU!hQ=D#+KVwX4&J^+7Ix;lr^& zX91)QEf{rk2hHOk)V}V`FI<6I(SbPu^HGIr9mt_(FDvAL3#bXfzEXKcx+9ckv0ADS z!7Twvl}M2`@7QlLKq1+13B%&(UJ*u&?krmLxu}akvgSnxDsrrn< z)!q{1s)x+)oiA5`m4f1tr7NM zM0Frm!ee7dhS!2>+d>zcvIV6qKLe z&K}MnIZoQM493yx3svSyb|WDR{>Y3IEl2UGO`?w`6rA;l6Ssgw*1);oI>lxHzF?k47`Jbh{{;ymI;)*@7J)<)J~UwAz7`N);X6%BS>SQy?& zHkB+GseHzYxwyNm0jOm?+o&Ioi18*i) zBi5Extzx)aIO0{|?%XYC=O&83VF%{RrKJ)!IXR=H!e>XpO^*_v(mv+fdelBuMh_YUI+{>G)``!_ zKZ1{>WdsmdgLDueZ{}30?au+BYBgjl3+q{c5ydW+=1WDhOp6_cBP$3UXRGF@37(J! z2+}Z!A3%~0uPKH@lLrZ~HY$^IiI;zIx+t{=lr4jDwt=!XlkO;GyCbPN-2wmg8j$Dl@rgcPnOLv+m zTgYDk$n(u? zMuQrukbpOme1}U1Y9k#4l9-81qs(R$7osxQ8mJ5~9}PO5tui+~m|F#y%U2-i4oBTc z-tYf8mvHM$FzK4k3wZXuoDL@!kHq8pHMP)+-;_G+WY6~Gl6ULyrCEK7bP{;I%lBVjt#i+EJ}Lo7feIyyQ!GUyDWvKIx_ zgKnAx(=$k59l9xb2BFT2iGG{Z#|3$}E6xGri6+81%`2Bh^<~RT9RmtE4r$8v66n0X zR8giEwjxpkloPMAa4N(REimy6RH-RQkVO=sW^m&xU*K|5AkJ*fM2DgSpitB>>PGUt z!C2bAi^r4i?oVc-X>Gq2*OJk6bPv@NUqH1ENT85JXyE4^s>!cJ=9O%n^kwL10sd18 z+d`66JKnO3)sXdrda4TX2UvqvXy^?f4OTBIiI@t8V4o2Oa?`_gWx22b&KaPI=A3GM zK@c)GAuD2SAh`;j2>Sur2|EV^%c9g5t(eQ;99-%Jp{S^pxFMusz!$>ayrXK~KX>zw}Kdya`2BSm-hEu5a zEIk$hjWiy|i#!UR0;X4ZBRJp}ntC3(TZCF!mn&dBX9v&|Wys)+4`7hh`ig z-@l75=ZAQ$$sq70k7R$P!ur3+A+SnZAJB|#jeWQ7QYPY0&3TjE2nYIQUPEnn1Z$-7fKseHodeX46AD?APHTmE@LLPi^SEXao+`NF zUWPziQyQjHg}55@6}*G%LJ@{7JTWgya4;}L!D0Bey zI!EOulsr`5)(%R0N=;^!YJ&Yah0rNRZPmXX_cSpngsx~l;!p}S>H+e;3i$|>Z8io4 z21)od_|0%iC?W61FBNbhzKvmHYvfLE(G-i^vK_Hk-J&5WbF-ELc)7_O~Ie1(Y& zhScVdTNG=jX58Dj^QK)YVii|SwtA3urH2*)`};vR{=&&DelMV1L)(lI=O3Vm7lkn9 z#YBhYWniqOIF%=bZ{2}UtSZe;Dm1tixle*WiXprw%@e_@Mf0x2uEggPKHW<+6GHdC z9Yj)yL9S}T@+bI$_GD_{Da{q&d8M9$ctBzfymkEH0r#GRwFaAA8ATwcmkW*wS8Awc zVf=F18O?c!ztY!mYh{O(%}3Z=v3HQjlJynh!^t1!oXr||TKI5PE8vNR%wcST^x&22 zn1^KCzFMIgbdQo~%pa+AJO{6E^333r{RS0YGL`g;2^YWwi@*~oOKD<;bn9D}{+0+J z07Eg{xFB}-ZCIS%a9~^K&K%~O=y>YyyJ7X_#O1DiRnXXcHBctV5>bH>+IC0buqB4j z8Z?alLgx6!rK91O56vhjJ)|CXP#A$@HELhb6yRwMVZ+O%+bi`T7L_8fnTBqAoRK&{ z`MQNbT8Gl9Or29};N*RjKOX6A!7P>`l7ItK(1Q-bsVO1}@F>FBnuUkk{M?5-X5vp= zwxXI4{jDKsRjPHcf`HM0xXYZ$k8mErEa-BfY>w=oBeW1sfCQ2jE6YB^dn<&~kWs^~ zu>?k^iq-h589w)s8ov08{|%0RVxa;(7PcK$nKK?XJ6t_K;{1TN)U*h3a9@<2O+=9CuhBEYHTsT}MI@Rsyd#_$V@S?3O66V!9@8^-;X zC0{YDA#OfGCLK}>VS--SN~;(835XWYCc1?s*#|RdHSHo@&!1GNieMaMu`djJp5Cz1 zR2#^Y#F9g`pz=--SgTj)?NX&a*Mht)wy{8u-v#5o%ewDt11&ARfgnUw%?^DaRs$w` z<@=zb8QN%sKTf~pZ-wVefo_Q!Z9gtH@_bj~R}u&-x+&jB@<%pDGyq=$nSC9)M3L&j z-K~RH1AhhHjaSz+xE3O|z>2^(>ulrEwS;pJ9NxXKBEXKY1{=a!;xgO{=^Iwz)Asv4 zYjNiUNU2GQDN@;Mzyh%X)zhk>MH++PGohCNm-i~m^NRX@E%H+2 z73d^Zjn|AyOnqO}EyG#BkUZ>(wS3HqtQiLxI~-!Y$Gd>#B^q!}wkuIUwV zvpny*DfqI*)?!xtYLt8=)&ZVs;ECUC>a{oBwA-_oabbP1l2!^O;*~w3F@dcD9Bf87 z*z~3xY#c46g@et69BdjKY!5ituVO@TH;s{g74GEy;9%is4%VZ0QZcOScvD_t8P-z} za!(u0iORFZ@sL2ZjCDSMjYMg#VSlij6vLDNo`C4=IAo2y)Og?p z2Y3HMO)`d&p}Y}dHK^@frI@6SPbp@4STTM)3m@ZSPKGy`Gm|Px4L)(l9J0*tuDXvE zevrvOVVSf)=6uO=F7QFTR-ePxQi`0UQl5wk=q=Xy874o)WR=NJGx>*1IyvX3bnth_ z@tmCV?r74`btAePJhKrsVP`Wg^}zx+bV>i9&*;?brtP^LcKxaT&8pt$a&BmKxK$=b*&$r{S? z$;!3(?_c8bk0N{gvUc$#OA z=fnZhyBhDT#B1Kk61xgN-Oyq*uL(9nAD#@`F$gE4p)H6xHPzg9ed9o{I za`7vwUGdcyf}wOsOK^CoohvPa)<6)bDi;RyDek#aZqz(BMMr+FA^h>hbrivj6Nu%U znwI{KpP59Y=G5ejc?y1~=5%%f3!a@c$6p>BKg|r^0TrI8q1wpIO~JK)`h^bK7E)th zztZha3T7bWqC%hg}EAR4=$ryDscOQqgtrc=py!_OSxI&ibelcTBfXhvzA2` zA69^JTZ2~fgxyO#XR7c|$N?Hcb`(_KR~Gsu6hpOPnL5^))B7+jhONoEd<3R}6knJI z(t(z#K&g6fttcW63K@o90Y-qL2;>$lfw>j~S>4%U9-3eokP~t4BB4e|BFHFA@zFQo zI&f9j5e7OFIiFZl48_{TjYCD5B5?A{^S=h=b&- zcGe6TLlJf1Po~_)*9^3{Rfsp;#^k=^EuQ1jug znzuD4VXsnF8the%uvaOtR~rpdh;p$~!d~@+>{SZv6+8&B9tC#*aemrmxo*bRw_HQ) zpI9|Alg>IoyOH*Nr69vQi+BJd&d=h@`8g(`*07NZi^1g7D!@I}%~B02YA@z0;fe-N zjAxIHPtW8hCJ~ke13_-w>jx^&wmlH*u9snmR{qq)3}e#0eLqQ~SfPac^6zq~8k5cCmHePk!V_F+LjZ z80tcnEv==m!*G}6eNyiGt|#LNy~2N6eqwvHPgp!gm=3<5yflztZrs1?>$uZDNGH3? z4|bI3tgU}Alp@R62P2}PjED~fqybUs@WK0#3}ejsD&NqrGWj(ozs}^}G3jIzzsMy~ zY$DXMrN-U2>^4x%N@K0Ir7P*Q#Txzw`xDl%ud~_L*ee-BsAntAzsCi<7pjQ;OvA09 ztW0sr1`F9m0`$Ek^2K}5OEG?56boL84`qG4G%uk|#ab0pXfXIA>ES))5>bYCs%)<$ zt|aGEzS=g`Oo`eS=-{u83B|aC7gYKWOh-b+eO+6qt8lBrmC0!f$DUOhlTZ;SJPoyR zfoZd)gd1)h(l9ImJEBvdDy+zU=wxs^y12h_qa#H^36fN-(Wd&x+nlzSdnZx1yVXm2jJ*cf&e}=(f2rUayFz1e!dP`SCG)E05 zI{XOo09g`|2kys3C=bx_BXY%{8H_mfN@_lRb4B7HYO^U(B;E`33`L@*T!`KP?{0zH zWq_0zff*8tKvFACg&V#R2)cZS&-H7T1c2gcY7M#M=8lq=27ivI=P2XlR}D9|9w+C9 z?*zV~QbYMJ)mtO8hFFv?cO~%Xl_7Ay$(3)@BC9yu3(`hnRrghgiPsXMI>fiA4!ad~ zN>Zsdqm{Uu5+1zQ>bnZ1sGDgY>syoq> z*6f4a)k|3ceQq7XTT)LbHJtyQpoR0lbN;v7UDn}J#2RvUe^IlxxpyGlzLrF~V=az! z=UM{ku3$BAy*pS9T;pBieL>Dc+6DvHbmZ-68c6R{Z@3xT8NuCN^`4t?xw}j1nb$Pr z+}%tg-Pi0vdQUTh^j_7f#<8UiYpwND-?8&4EP|5@Y}R-Pa=4=v5xV zL$^4rrR6Ji(bgA&H_mJI&Z$TTbMnBXx6vn(oK%e;I`h2_ABb1s59#7)6Bh#Yi+G9W zF~}LXlubgl8+V{7sxEo);@K)f>~Qqc$?}OD6w?RibVOl%kpue@6Br_t$6sR??M1NCsN;vko!lRo^Dj`Sk@hhl z$g6V)Ykdw0X1va8%4?o>zZYFDS)Q?s)cFs5gg}`E=eK!`*UCD{)|^k-3Og(Ed47%)O6H&8bzIFkYH}%wR)cu%#xQHzFFr5JiEkq zO0g5Z&xZbfoYKwp_y>)Xd>0?_?S`Jw%87=$dJzV_BoF=JIb|5^XUJ_Rhfut)jL&(?$!X3nu=|#P z-Fs&8g-M(vmmi;=o|;yIt-#iQVL5Tuxxy<3Q;J)%a`*Y4y!|62UJ@@f@8B#ioC<=} z`8;!anUhAuK2ENK?0(GKaypB1>~i_mBjuQFv-Hn1;mgLkH#m{bar20L3xck!`qDDo zzgxzS*80I+NRH9T1OAc{BhRZ0fDmDJh?vKnQ)ILK!Jgm-#T)eo!sC{LCw)O%KAa+U zUA0Yk?G0`e+#Y6|QOGD>g3K-(OoDUCle71F)D&<+Q^^`hD^V^L^8E6im1*X8IP2eK z@*kP}HWThRWuIw*CtYHP37-E67y6|=#$Nc`8t@;dn4Z*zV4c~kB`@g_2+??|Yw_#p zLA3!GI-!4KcT)elk<$M%lh*$t)1&|IbVmPkqgQ{&=+pnq=-2;OdO-hEeG63w>_`8T z`1U>{{+|9nhW6-}^#5+$ssFyQ*Z6PgeKJNZbGr`MK5ozjxNGdnb0Kjt8rV*Gy00092hewnc@~wCbaNW0ZWxr2Wc4IUEaj~%Q{|Fba zLj?{N9v%Qtx<*CmipT(-JIJU(Sk)t!!5&E&*wn4qRs9hjdIbjPhqq~)DQCfGTM+~Q zm!qnj7OC_+=+~(|aZw9cOdechX`;rBhH6|PiLjENapSPt!`Hw$1G{|^0sxExV5Z`e zUCe{?UpY%%m=6#eb(>N|ryp5fzYiZED-afO+|~e|worFloPiLHA3*L~y4n}w#@~t1 zewvWI2W9k2LxvHh&T-)ScH_W%1Bncd;_<@?9^_3Ih-%*<# zcI~0YeYe$(Z1rGDElpovxP=EdHghf5zz8JRdp<^+Em=iw!~Hya3Sq9CTBJ&DB*~8E0o8 zu*$|>3$<|E>ORs4HA(EU!?jKLP4Qg9FfUe}bBI!ey|)ZTufixIJPrJsa4Eh^Xad^N zy6P7lpijGUp#%pwGC{5WsUx$@;fb028Jx>Doj;YuLA2wOSsaWD+awR(^usizH6k?M zF>aW?QOc)K0_fqc=ttyB-1{L86MQH%9Odc?`|OONzX@jAutuW9k~O8eQnWKvwruow z<$F>uN#2aSYpQ12-jIY~ln|n!=7YB?CvW z&=>t`HBJg_ zhgro|(}si~trlY&2YSHaBb5unNQ#Ky;Joy151p?Or%>G0FQsGP{9wEp(!0EF#*|Vx z4}mW~XXgdb^6dcjp^hL(k_FqfQib00K}=o z6K1Z3)>QF8&Arh+;geKu>JF6Jq2m1i$Os@0u)ir^#!Mn4;mf`Y7v0FHsl&ZtJ2|pN zg!u^C(XU2{9&m7sww~r$4L~|EK{|-F*#zk@o+m0uCl(?d92{vGKss5s2kK3p5s`)R zibzK(ui}%9_#8sXO3Ti_#HhNMuaQg(t0?(;l7(7Q`cU8vn5BP`n6Q0ULFX4)Qdllg z5C~Q=y0FR(aS0bwG%LU*1|&epi~JZO`)%;$dz?`cc{%Et@J|tUxzJv}%^#DMn> zueacu1_M80RGAIndknyPBe|MvCPAZOg~M2on_w*(N`SC1;6pNC3T{9@-AsVb&di*7 z?m7520CW&hcw&4K=h$Y)Uf|jNXHJ`^cz!>Q=^r;wPMn&^%^WmOpUJ7SYk9aW>Y2HT zQ{(1oXi2Az;ecKE!kvb{+%a`DZdW#3?r?OYjQrWD98PrvzT}yXwm&7GK@I`iBK zzq3>0S$Ox+|Ln!vfR&+<1FU}K(~m^pz#XLGVNVUzw3EKH8S zoHH@5gK`8h`+SIfW>4KN1qfO7TUw5%ZA9RX6~H_W-z)$`hDo;cwrEpp=lC+b95q6E z7SdFxB+WX0vB4z!+A%GEtErm8+@fr$3S{Y@FF_7U%i@t!=1=h9gfTjJ7kT zX{4j0(4FV6w;SO^@}>FKIar7p!7mmtE?Z!L%UG}Yno%4-cF;eIk`cPgjy;b#N*jV& zum*v^iA7jO@DtWWj)XvDSO_cXFw3?ExOPE3D6Qp(66SF77G%?oHIcImcz{(tRLmkW z3?VLo#0V8Oe@8_Hr{E>vr~|$O-vt?H4@Zqce1nuIk$j?VY74oMb0lbthhjM#Eua(Q z!*Ym}rQ+UcA!+r6`3J*qc`>Wb!&oxNtbjx+wFoR+Uj7;aU_&CE{ogE*I<1ZwY$#>g z*N4Ny&lAvhh35ys&lx8{hU;`2Vw)WMFu8#rrW+9TShWK}nf&uEU{nI0D`1 z^otDY@*{lJZ-I6Ozp8N=F(9SLT4D{sGhd0V>f+ei3$91S!hrjMQ5PC97;3;xo$p(V z!i=i&5sQr2Xq8VVR_5<@4IID?Q>T@Hu^8f;7_H%UxQ>&m)>9A&H68UrWFlcfj4YzTMrixD#z|xr%XoIr64q4dUsp zCd}9ML?p?fVwWry$M$YzY{=8veZp~XXghSv^d%>ap zL0I<>n(1{DtC()4!E)@tvG2|w;}v^xh3&*L2Z@#_*D>+Rm7VY&UWvW#6DXW>_8@J< z>hAoZ$JMzb2sV;dU@I*-D~+9}p-aLhBOT!{I20@#C14&H9}%0RlC0<1My7?~kC+XE zy9qKlJ8tv_Xh1>*8he6G8KCC{pf7~&3e`}oHO-rEe}KP{yOrsRl7sUXOoUA)yXM@5 zM51)gmP>O8pE+B2=+Vc#czv1nG#nv^AK9_+ZIu@Idqv>iYxZN0c&WL^9tpF+C4w0I zJX<68=fz~Fw{h-U$yw!vQOGmEU>v_Ipv-#7vvqiG@<8+q^ka3WP{tX92!cpDdlzqm$#D6QI1p$Jx}pUCbQW*Iu#|)aUM##*{c~( zHtxLX2yohW6erP*q*O<(#gVm=-lSg{iwvWsiGG@++Kv^2M<_R~%<^t_PZE&cN1Nbo z-FU`%1_e7#u_x#TpLYgvL-8ay5XrX~L<>KOYC^+8(^9x_y+Rk7M3I z!9b(2*|FCA1s+jXho{Rp2%(0K`A~hi6&ylkG+pP!O%yE#Ol?gu>LKe@=Ruq1@Pg=m zMcYcADnJGu8fw4WPG*B0*O%MEt^=1cVem-wL*iVd!knSw!32CyQ=G+Il;fgh))>yF zJ+vaDd4-?W!hx>jAwN4IZVH(jGc+Kuc|hr;u%4#6%J1r>r_>Luu4;BW>GV5O!(a{`yMk9W60RWTgobmyd- zR9AHRq6Lj%9L@}=e*|~1o#F0PFgw1*3_&p%4=i+WGILXlX(*ee-!Kp*`Wl>!=s5RU zR02_YR<8JCNOh0lJHm1o5tq5al16i&*rMUqA=coZ#RFjFP(P!{19diVAYjNpep{t) zEPyl#TX6m<8{wW*#D(sH-nOxm6Lg{&J2{0Yz#w8lJUZTLSNRBrzJMC|wSbIlGeA2b zuysd>SD3gH>;4eY#bc-nlRXZtYga4B;dU?pcY;1R6z~T!peBNwKp)}(`r-q8a!J45 zII6HfKHN8f^UR0Dwz_kI*ldDHCqDf_j!@y#LCr85ANvqJDidB*H7gyou;=saO0eh7 z8?|_qUE>q!OB?q&CsE;sSk%cP7v}hpn_Kf#PXTVBOa&Vc!|6>+os1eDuKQsSry%JT z@@&bh-vZ)P+M8A!Bvd&Ft~9A(fu?85oH=tEYMmMBG7O-cfdLCY6bV(*#N+Ay6Qm8(;bNU)9r}48T}3(q#%eF2sO4TLLEtN zhCh`zTNkc8&Yk=mlTO_Bo7}$l-T=4tg}4olRhRT{HlFaY0CyueO)p*bzRFz8>hiPoW-vfs;l+{?tKEd4PTm z`MjCucT^po4M8x+KRAit?>KJxjbEvAeiNm5nalClUid>;&R!&Vf>Jt)oaAqW!if>T z>lu@u4OP|*p<^71{4OGn3FGNBa5AVl2|V=rgC89oRc3sL(wR3HKBYjUoEOFYaZ8v1 z&0!tEC@T*4L0biQ<&9D>t2v~bD#&jjti@coYA7egZ5@vTKS80;-p()&#pxS`MwRbN zKbsW?7}81y9y}2J7*tYI2hu|9LQHzi`EKU^G7>M2T(sbjyLN`TatE0_$mHAj?DwRU zzW`%={AYZO_|J&fTc{OFa5RJl4Tm9%L<;W!$72;9KOx?_UuW@eF!=>0;<|J%uO4P{ zl*w@>-^C=yX*qk+o-c=p$r%O`uO@zI;>#lTSFxlxZ?GKY3L%RE zZR$rjWDB+uA+X7#IL`>aq7+!*b&J%9?A)J;;vXUkj%SmUzt+Rw6im`PNWRtY_aJ3X z57U9YdLNHmPVPwF)3;N<%eb!V>Fde;$-eY<{XRM(8t=v7${07&?2K=C zgKL!e2ChHQ;r6JbtPZzF9d3_0+#chJ^f&ZkP%{0^$mjG-aHqbFzudf@{*5@?CG}ML kFC(8z-jO_z{Fr{Yy{7T?u%7glem7lCKbn3ht{d0?5A>Fp&Hw-a diff --git a/utils_v2/api/__pycache__/codes.cpython-310.pyc b/utils_v2/api/__pycache__/codes.cpython-310.pyc deleted file mode 100644 index 623dc4f9613f5857ab40537e40412b7c66200e73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3708 zcmaKv$#WaW6^F5r1VMoNCQ6is+ALZWAyJZL)3U80&;TYH%pfxZQtZnV!XBDX0R%k& z6ibz=9PHe)@5>>l98#74A(!mVd5+16*X(hUs{CFL0FqW5Nce!a^y{A2kFOi8OePh< zOUqQ=Z7oM4ea^ zveyz`TY;{1=qX2y+Mc%_#;{m{S+O;9^eYPC5#H?xzIhQIMN(rT%Htx&6C%!sM1l{CAwD98c~XqPbdGYg6)%1!OC#56Hd}{{=SsKj3EHbe zQS*gTa-7PUom&sRYlq6`Jf-a&c9hzF$MY2^)QYC$Xs7FK<;ZXCd2NIW{Vi`FKAqO4 za)5c;o7pUVt_$y3HY^Jn)i6G%Y?5GzDoES z;p>EN5WY$H7UA23?-0IA_#WZ=gdY%oNca)q$Aq5}eopuk;m?G>5dKQ|8{zMSe-Qpj z_?Yl7!oLasA&ka=F~SsKo3H~ItB-=D>mJscp6doF*KM{$w?W_2uKQlM*63MATvxRA zpibsY!_kZ?3uf#c&B>KCqv%#F(=l_VZU-rR#b2lmZ7{}EOW$?j;n=~5UCogp7|B@- z%_AQqRVXU-ZQd{qH|#x{qtZsYno%%=lwrCw9W$IDV=g=2Gyv|m}@#EW(8@~pj$TcT0uj=QG}&@JlPG>VS;+nbbmN4Dz91S zhr#q|sIGbj&q{by6>O9n*Am)haSPh^2+1iOQI-8g{i3?u=VTHdNQyt-!0I z7MaVQROG`=(Qs@6B}}Hn4wjLRZA?OsfQPkQofT08*lXJ~>>#5V+p4b7#E+4Zxty+1 zx^lXSz3xW|=1`E#GBD0&);6$ZhS8#%Y7TR*uXl@ntu}UpP)xde7u!CXf?eoI=0tn z9eIAX@_g^0<~J*T>#4WbX=iIkbr+|-=O5M@*>0!aXuHogNSl=>{`%2#KY?gB@os+s zNJbLzL^2VT|Kh#RQ0nt#?aP|J?Ko1ZjFO?mVQKfph`V>_A$EGzaOT zjB*ju{J?ez(gGw!+E&CO?h@yMFa*Jc0gVd<6)Gp4A#%FNm3seU0SduowH+Nf?}#{X=-5Ag`*$f_dF67SSWoHhMmV zs;=+)_i1<-qQ{ zqn=*fbO~J$?fbMYQ^2WayJbyYYy1*LUyuW39!{o4B7H{I84Hd56Mg!mSBBqq;plVV zi+H!!0P1+-BjZu|Fa9Z?WQ|Wp6=T}i_;lr%jPq#0X@?b%7mE9vNG#pT5DoTTDalB!otYF_4 zGQBmrPO7gB{ykkIHB$dY_crJz-MG@>JH}9rR^!dz)v60m=VbJ%fBZ#3Q1NXz$-^La z2kwxulu&*V6~>pHQTLwTD4g(|1k>m4r`sZQhcpvg&)w}$wm&P}`!Bxf?u`yk{}aR9 zFu0^{;O2r)#$v*$E0`-n>T;TAEX}E#(^R-;oFz)#863FdAdd5`BI|K?zkA&6?RAIu zmeOl??v~j9u6Nk)y!@Z>FQ}8&YZ#)(Ev&!RRh5q(FaWzSJ_1LhU4 zs^;d7Ml7#Jq1GE3_}Plj&3H-idEmCPmmwDOId`(6?9G|Is`$c;*A!oz@jApUT`WO{ z2F#X0&fUp*<+%c$#Y&orug)SD6knV1Ma9==d`a<*S^To%n=`(m_=6c=Rs7+MuPOd$ z#@7{p4E%}O`3CZ#*4mUcXoEv`UewJASuWBbq0(TvG{@PbC(SG((#jCa8D|%CETkE; zb6H^-R1qsHOFT1z0OgWx_#DDK!Xm;F!ZLt#U<*{>w(YZ+1%j`mX#-&s;Q_)!ghvRE z5uPBp2u}f|8KvTPjem>^gxlSA$P(Hn^peI{f%afJ4g;PHirVCDsD%$fl*5f{Pec^w z{^d4m+fbIRY|1N;<_Jc<4N%qUR$Z^_O{1wdO-FZhknmQExmmC~1h%ZJcs%a}Dhwy( zy!}{9=S|4idLYZbPuLi2B?1?oL!omveocjRvN#ZDj3+Rgk{}h)m>Uqo@yg4Rm}XIW zUL2}A-V)l%2p=JQh+egGY?`7^`3I=6C#q)~gTu~fzkht>AN2P7(n2MFh7J{I+%fbW zsI6FmOeFc9dEq@=t(wwL2$jo)! YG3zx)pMwKxE<2wahM|}Ksaw|Vzbi$$nE(I) diff --git a/utils_v2/api/__pycache__/metrics_prometheus.cpython-310.pyc b/utils_v2/api/__pycache__/metrics_prometheus.cpython-310.pyc deleted file mode 100644 index 724908a216d73a378997428f0066c51893a99d87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5163 zcmb7I+jARN8Q+^$D_OoKah$ZkCbXrZMNUKLv}p)&94B#`$i`O4pc!Uov*$!wN7Ab2 ztejZmGG&}c!VIr4ov}N->zY@$k+M4CC)K82wxfuAxZ7Gz@0c4Q4W{W!6n@Zdv;_vky$u81xvgB@=r&i+ zq0P12cD|l(dv&i}s2AGBda*rGpJS0!)Lcnve_#JKgH(IxAy0= znKQ2SZ>3M1}66iM5E z+~k7$l5cYXgxWk6aU}f^b8Q~Vp5V;y$+*+-G1~Fd1S9T8Nhjq`QokK`!Uh+zl7Zb= zxw*2jQe9rz9Kp4^xHNdf+WqRCwWS;1xL94Qjh(viUd699xqtqAvG^59Syh>pzE!D| zU6o%>dVnufezVtZhhj(NZiT%DSF_7WtHq-<5gWV_%M>f6cCVGjU6DjwN;Tc!9lSH; zK?{{k)#QT_Z4dE!1WTO+GNtbJE-%wQic< z_jZjfm!v-}kaj^s?Jsd=%Vo|p2YZU?1mT1E{MdXcon#&>yfQz9d!W~>)EK>Gni;@+ zvMLI|NsuiP6R66Ln5O;=RkNs+Cx+aAy_u%nK=4m{V7BIYC)x=lhx{_xf8!2>029RE z+qK%dKiDY!xC4#Qn=0Uu3$17-OnJP+x=Gwg)r7uRf?YkSPK*MPnf&xm)<}%TudS$s z@vW^xdF#Iq^^BT4dgR9s{jlRNt*`n+aDFTYGDdO)g%ok4nfjgNaYf7%1!mNl;E0_; zFeZHCOJkDg$|QQk@tg)dP^MZIPmNtQoE9VzYJ6=-W|7xxcS+OMGfg{GM3JMlaU3#* z3nJ2DLDHtCkFiLQl&ce36%W~`_p3QgwBdd|S9X*mdF!Dl;gp!nE(~MI1O6m}X@p8W zH^lca|Ml8pGimch26NX+x?C)-??kY-ZJ_cy3n9ruYuV&rR_r8vWR;dYgtPPG2588|R{#+Y zG$0~tN}x<;J|pX4RRM?YEL*}uqd|*zs7F*D0Zgk0C>n6d?4KQZ;W1kr5pKheV3Xu% z_&3p^hwhU#fEC)ZQJe$&Giw(ZJ#xhSuC<@rHMRc*IrOX{&SBO)n$_0BstTfCIWNwk zQLZ+$Qk=y=yhhcxY1)oEk+K<&%C;t_%58_O9#?rSZd@FDr7G$9fg||?Zje)`T#ML> z-^=;jS+jq7E@ zAY;HqER0~Kxu7{ehlMVRq>g7;4vAs$h4qdWQCrY-gfjLK^{=7G3#f)ZhQY5CEc|TP zX80HQ8HeIA_>>%3aqVLe{gfx*Th>%%KkbDgeb;}`OM$5`n@O+5e6n8t<2Y?bvxsRAc$0kK)?IA|lr6|I#enobmKfOGVzReV@<_yB?q%nnT zBp{iKLZCTLPWXM12C39h9>tY`J_09qh<^}7-Ci))`tvn-EF#nBoTcm~WQl)j^L+TMN#d%aJ zpFGe(lDI}wOH^H_>Iy1Eif^Jp9QPy&(w#0>1?pwCy^spzL=VE~(J_%#1tRVf^6~$` zX-QzL&pm72@dgIodg+ez=g^a(Chr zs*ZH$$e@$h{}Dw}yz3c`1(QrB{a@bOrAa}n}JHAN^lZPulJ-9tAmS zVSQum?n>?U%Dv6t?!7y;Rg9N|8><`r!p6!ie|@QT`!X`IENfNn^=8s-#Rv=zgRuxG z9DbyA6u)bU+(w5aGSz7XGaFD;W>JbkiA)0$`FrCFi{+l#myA{XrEuH$-TY@p>g?yR z$2x$tWwWMnAFB?2d-iaKjOBZSQ}WVd$Tt0cj-mqrx2o)0E4BVvvYztt;$nNJ!r*k` zP9;j(I^ffhf|gH&0atvPKjSIs$d>ZRq(+m(Nc`#ACnEh&7~w5*|Xq}|M7 z_EXT6IeX>}q=BHCMPbu#1{6W62CXD5MeAm5ij)p1TmG53pFhBv0j0cZ|MX^tr~VsY zkORp|r7{*WT0p=?*+kJ#Xuu}?BKH~iyJ!5?`V^soem{hgUQ)J{Rk@(d;5bo=S6WEj z!G!MB4~ZId@0`(J(7d??~~3T%|x(xrp}Q3Bjyf8p=oVI93jUf1mK7(2n$f&YUql)3X*#5fH4` z#2vcGmOD~8T>w!o+#(p8x#erLID4d5LDY(2-gTy5{QyM{4y1%yZ$;w8s zymqfz)4^IMcw|77l}P<2u|cCe?`+2+>10pNhYutnkqIslTw|$h(d&%7?a;0$?@AVP zUL_6HiHu`-ZMubRuzB5qXILA%!T4V{eEdv5oBnG?!6ly6qi%UUbjc ztmT}N6A}^59cJ4$@?nZ9zMV{6 z^SJfYjzZpLodZjJ#zXG!_n7~q8TDDf`|$-n!~4%?Ul>nKh!Sq=J?I|)5rzcT^242b z8(TM80To}38#$&K*(BR#Suig4)An$6d1rLaZfD#G$>`)7xxQ47$u_U*#cO2gqoq$; z^Nl-Sj#hTo9=+jHk}*Bxgc4bcCaD|2NnMh9%!%N#DhtVps?r3YYzB1ZAca`l!?SYG|l;Y&c-7?>)!LnVJuGM)`=WiJ;KJ1WtA3t1Pj0m zR+VW{LlLk;R99+*;sgS&t4_|PqW;5r7_1t}ddJlGo zxxcti(B5ZWV~P)vJ24sH2wb3bpCSi3z!JDn>uw>pZx$~6;(rGV#uMwrJh65yKs7x6 zStpMGtUyBoeyMEHnv@Np(8-NNz<3JnEXduA$^!yef89_~6DkRq321DZ^P^H6v`}KS z8-l|i6gS8Yj6vDdRin-M_Z3fS4n>(vgVBPu(O&xs1o0&jWyY^eGH{jG7DqW)9f5Bl z(ZzEQuz$qGy6BvOigF*)mP70m zXgMxmG>1){W->lpLhbN0=wdZd0d#Zx9U{C1QRO_4xgazzn+`nQU-QAd`JV0D$8Wze z5sPPDgL&o0F(wjtfaNFA*I*2i4LA?K(8Q&$ebetMIVTs3d}7u9Lsm-%~=ySK0QlY zU=}$|i#Q&bZ8bgmIJv&`@%rGR_y9bWUriV->NF8pbLG_&9B-j-h*#IQR&%FFF9Onw z*g;a~+};%LBCewQr7idv#P`=8tnI|3Z&ya6)zPZz=9BoeI66t?Rss|LzvPsEvjzMX dcCfq*#4&nTAUAvVUH@~-f*Stq*|V1O=RaEc-PHg9 diff --git a/utils_v2/api/async_quart.py b/utils_v2/api/async_quart.py deleted file mode 100644 index 5331eda..0000000 --- a/utils_v2/api/async_quart.py +++ /dev/null @@ -1,1270 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 2nd Aug., 2024 - - OBJECTIVE: - - To provide an easy way to perform repetitive tasks in quart. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - - NOTES: - - 01. PLEASE USE "ResponseModel" AS THE RETURNED VALUE OF THE API ENDPOINT IF YOU ARE USING ANY OF THESE - DECORATORS. - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To work with Quart: -from quart import request, current_app, g, make_response - -# To make decorators: -from functools import wraps - -# My utils: -from utils_v2.string import json -from utils_v2.date_time import date_time -from utils_v2.security import sanitizers -from utils_v2.api.codes import StatusCodes, HttpCodes -from utils_v2.api.log import APILogModel -from utils_v2.api.response import ResponseModel -from utils_v2.logging.context import AsyncLoggerContext, AsyncMongoLogger - -# System-level activities: -import io -import os - -# To work with datatypes: -from types import NoneType -import pandas as pd - -# For Pydantic data-behaviour_models: -import pydantic -from typing import List - -# For hashing and shortening the hash: -import hashlib -import base64 - -# To make things human-readable: -import humanize - -# For debugging: -import traceback -import random -import string - -# For asynchronous activities: -import asyncio - -# For timekeeping: -import time -import datetime - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Chars to choose from for random strings: -ALPHANUMERIC_CHARS = string.ascii_letters + string.digits - -# To capture system information: -PROCESS_ID = os.getppid() -PARENT_PROCESS_ID = os.getppid() - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** EXCEPTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class AuthDetailsIncompleteException(Exception): - def __str__(self): - return "incomplete auth details" - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -async def make_ordered_json( - json_data, - no_space = True, - http_code = 200 -): - - """ - Quart sorts the fields of a dict when converting to a JSON response. Here we are manually making the response when - the sequence of the fields is sensitive. - :param json_data: The data (dict, list, etc.) to be converted to a JSON string. - :param no_space: Set this to True to remove all excess white spaces from the JSON string. Saves bandwidth. - :param http_code: The HTTP status code you want to send with the response. - :return: The JSON-ified response such that the sequence of the fields is maintained. - """ - - response = await make_response(json.to_string(json_data, no_space = no_space), http_code) - response.headers["Content-Type"] = "application/json" - return response - - -# --------------------------------------------------------------------------------------------------------------------- - - -async def data_from_request(inbound_request): - - """ - Adaptively extract the params from incoming request in whichever way it was provided. - :param inbound_request: The request that came in. - :return: A dict (could be empty) of the data/params that came in with the request. - """ - - inbound_data = {} - - # Extract data from the params in the URL: - from_args = inbound_request.args.to_dict() - if isinstance(from_args, dict): - for k, v in from_args.items(): - inbound_data[k] = v - - # Extract data from the raw JSON data: - from_json = await request.get_json() - if isinstance(from_json, dict): - for k, v in from_json.items(): - inbound_data[k] = v - - # Extract inputs from the form body: - from_form = await inbound_request.form - from_form = from_form.to_dict() - if isinstance(from_form, dict): - for k, v in from_form.items(): - inbound_data[k] = v - - return inbound_data - - -# --------------------------------------------------------------------------------------------------------------------- - - -async def file_from_request(inbound_request, file_key): - - """ - Extracts ONE file from the incoming request's form-data. - WARNING: NOT RECOMMENDED FOR LARGE FILES. STRICTLY USE FOR SMALL FILES THAT WON'T CRASH THE SCRIPT. - :param inbound_request: The incoming request. - :param file_key: The key of the file that you want to extract. - :return: A tuple of the file's name and data. - """ - - file_name = None - file_data = None - files = await inbound_request.files - - if file_key in files: - file_name = files[file_key].filename - file_data = io.BytesIO(files[file_key].read()) - - return file_name, file_data - - -# --------------------------------------------------------------------------------------------------------------------- - - -async def files_from_request(inbound_request: request): - - """ - Extracts ALL files from the incoming request's form-data. - WARNING: NOT RECOMMENDED FOR LARGE FILES. STRICTLY USE FOR SMALL FILES THAT WON'T CRASH THE SCRIPT. - :param inbound_request: The incoming request. - :return: A dict describing the file's name, data, and size. - """ - - files = await inbound_request.files - - inbound_files = {} - for file_key in files: - file_data = io.BytesIO(files[file_key].read()) - file_size = file_data.seek(0, 2) - file_data.seek(0) - inbound_files[file_key] = { - "name": files[file_key].filename, - "data": file_data, - "size": file_size, - "type": files[file_key].content_type - } - - return inbound_files - - -# --------------------------------------------------------------------------------------------------------------------- - - -async def headers_from_request( - inbound_request, - mandatory_keys: list = None -): - - """ - Extract custom headers and some extra info. from the incoming request. - Raises an exception if any mandatory key is missing. - IMPORTANT: CUSTOMIZE THIS FOR THE NEEDS OF YOUR PROJECT. - :param inbound_request: The request that came in. - :param mandatory_keys: The keys that you need to have in the auth. - :return: The extracted auth details. - """ - - # Start by extracting whatever complies with the format of "X-{Header-Name}": - head_json = {k: v for k, v in request.headers.items() if k.startswith("X-")} - - # Now note down things that you want to keep from incoming requests: - head_json["Remote-IP"] = inbound_request.remote_addr - head_json["Host"] = inbound_request.headers.get("Host") - head_json["Origin"] = inbound_request.headers.get("Origin") - head_json["User-Agent"] = inbound_request.headers.get("User-Agent") - head_json["Content-Type"] = inbound_request.headers.get("Content-Type") - head_json["Content-Length"] = inbound_request.headers.get("Content-Length") - - # Raise an exception if any of the mandatory auth details were missing: - if mandatory_keys is not None: - available_keys = head_json.keys() - for mandatory_key in mandatory_keys: - if mandatory_key not in available_keys: raise AuthDetailsIncompleteException - - # Done here: - return head_json - - -# --------------------------------------------------------------------------------------------------------------------- - - -def cause_exception(): - - """ - Call this from any function when you want to raise an exception. - Example use case would be when receiving data from an API call and that field is not supposed to be null. - :return: None. - """ - - return 100/0 - - -# --------------------------------------------------------------------------------------------------------------------- - - -def describe_exception(exc): - - """ - Describes the exception in detail. It extracts the type of exception, a brief message, and even the entire - traceback. Useful for debugging in details without the terminal. You could either log the resultant dict or send it - to the dev team over some service like WhatsApp/Telegram. - :param exc: The exception that occurred. - :return: The dict that explains the exception. - """ - - exc_desc = { - "type": type(exc).__name__, - "msg": str(exc), - "tb": [str(exc_tb) for exc_tb in traceback.format_exception(exc, value = exc, tb = exc.__traceback__)] - } - - return exc_desc - - -# --------------------------------------------------------------------------------------------------------------------- - - -def messages_from_pydantic_exception(exception, as_str = True, sep = ", "): - - """ - Creates a list of readable error messages from Pydantic's validation failure. - :param exception: Pydantic's ValidationError - :param as_str: Set to True to receive all messages as one string, False to receive an array of strings. - :param sep: The separator to use when joining multiple messages as one string. - :return: A list of messages of all the things that went wrong. - """ - - # Make a variable to hold all individual messages: - messages = [] - - # Interpret all the problems: - for error in exception.errors(): - loc = " --> ".join([str(item) for item in error["loc"]]) - msg = error.get("msg") - if error["type"] == "missing": messages.append(f"missing input: '{loc}'") - elif error["type"] == "model_type": messages.append(f"invalid input: '{loc}'") - elif error["type"] == "bool_parsing": messages.append(f"invalid bool: '{loc}'") - elif error["type"] == "string_type": messages.append(f"invalid string: '{loc}'") - elif error["type"] == "float_parsing": messages.append(f"invalid float: '{loc}'") - elif error["type"] == "int_parsing": messages.append(f"invalid integer: '{loc}'") - elif error["type"] == "extra_forbidden": messages.append(f"extra input: '{loc}'") - elif error["type"] == "value_error": messages.append(f"validation failed: '{loc}' ({msg})") - else: messages.append(f"invalid value: '{loc}'") - - # Return a response as per the preference of the user: - if as_str: return sep.join(messages) - else: return messages - - -# --------------------------------------------------------------------------------------------------------------------- - - -def summarize_variable( - value, - str_limit = 100, - expand: bool | int = False, - sensitive_keys: list[str] = None -): - - """ - To summarize an input value to capture the essence without hoarding to much data. - :param value: Anything that you want to summarize. - :param str_limit: The max. no. of chars of a string to retain. - :param expand: Set to True for full expansion, False for no expansion, and an integer for a specific level of - expansion. Applicable on iterables and dicts. The smaller this number, the more concise the summary will be, - and vice versa. - :param sensitive_keys: The list of keys (of a dict) to obscure when summarizing. - :return: The summarized version of the input. - """ - - # If a null value was sent: - if value is None: return None - - # Check the sensitive keys: - if sensitive_keys is None: sensitive_keys = [] - - # Handle datatypes that you don't want to modify: - if isinstance(value, (int, float, bool, NoneType)): pass - - # When the value is a list or similar iterable: - elif isinstance(value, (list, tuple, set)): - if expand: - if not isinstance(expand, bool): expand -= 1 - value = [AsyncLoggerContext.summarize( - v, - expand = expand, - sensitive_keys = sensitive_keys - ) for v in value] - else: value = f"array of {len(value)} item(s)" - - # If the value is a dict: - elif isinstance(value, dict): - if expand: - if not isinstance(expand, bool): expand -= 1 - value = { - k: AsyncLoggerContext.summarize( - v, - expand = expand, - sensitive_keys = sensitive_keys - ) if k not in sensitive_keys else "********" - for k, v in value.items() - } - else: value = f"object of {len(value.keys())} field(s) [{', '.join(value.keys())}]" - - # When a dataframe is passed: - elif isinstance(value, pd.DataFrame): - cols = value.columns.to_list() - value = f"table with {len(cols)} col(s) [{', '.join(cols)}] and {len(value)} row(s)" - str_limit = 999 - - # If the input is some form of non-standard object: - else: value = str(value) - - # Handle strings: - if isinstance(value, str): - if len(value) > str_limit: value = value[:str_limit] + "..." - - # Done here: - return value - - -# --------------------------------------------------------------------------------------------------------------------- - - -def set_api_version(api_version): - - """ - Use this decorator to automatically note down the API version no. and propagate it throughout the downstream - decorators. Use this as the entry point if possible. - :param api_version: The version code to assign to the API. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # set the version information in the variable. - # This makes it available to the downstream decorators too! - kwargs["api_version"] = api_version - - # we are ready to call the function that we are wrapping: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Add the API version to the response: - if isinstance(response, ResponseModel): response.api_version = api_version - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def read_input( - read_headers = True, - read_data = True, - read_files = True, - sanitize_headers = True, - sanitize_data = True -): - - """ - Use this decorator to read the inputs from the incoming request and sanitize them. Sanitization makes the inputs - safe against certain threats like injections attacks. If you expect to take in inputs that you want to use to run - database commands, you could disable them manually. - PLEASE USE "ResponseModel" AS THE RETURNED VALUE OF THE API ENDPOINT IF YOU ARE USING THIS DECORATOR. - :param read_headers: Whether, or not, to read the headers of the request. - :param read_data: Whether, or not, to read the data of the request. - :param read_files: Whether, or not, to read the files of the request. - :param sanitize_headers: Whether, or not, you would like to sanitize the params coming in through the headers. - :param sanitize_data: Whether, or not, you would like to sanitize the params coming in through the body or query. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Get the headers: - if read_headers: - kwargs["inbound_headers"] = await headers_from_request(request) - if sanitize_headers: kwargs["inbound_headers"] = sanitizers.for_mongo(kwargs["inbound_headers"]) - # else: kwargs["inbound_headers"] = None - - # Get the data: - if read_data: - kwargs["inbound_data"] = await data_from_request(request) - if sanitize_data: kwargs["inbound_data"] = sanitizers.for_mongo(kwargs["inbound_data"]) - # else: kwargs["inbound_data"] = None - - # Get small files from the request: - if read_files: kwargs["inbound_files"] = await files_from_request(request) - # else: kwargs["inbound_files"] = None - - # # We also make a provision for capturing an identifier - # # for the logs that we make through a sister decorator: - # kwargs["log_id"] = "".join(random.choice(ALPHANUMERIC_CHARS) for _ in range(8)) - # kwargs["log_chain"] = kwargs.get("inbound_headers", {}).get("X-Log-Chain") or kwargs["log_id"] - - # Now that we have unpacked the incoming data, - # we are ready to run the function that we are wrapping: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_session_info( - key: str, - model: str = None, - session_func: str = None, - session_coro: str = None, - get: str = None, - mandatory: bool = False, - sensitive_keys: List[str] = None -): - - """ - To get the information about the user from the session token or some similar identifier. Use this after - 'read_input', and note that the callable func/coro should only take on parameter - the thing to identify the session - by, and it should return a dictionary with all the needed details. - PLEASE USE "ResponseModel" AS THE RETURNED VALUE OF THE API ENDPOINT IF YOU ARE USING THIS DECORATOR. - :param key: The key in either the 'inbound_data' or the 'inbound_headers' from which the session info will be - available. Examples: 'sessionToken' or 'X-Session-Token'. - :param model: The object from which the func/coro should be called. This could be the name of the variable holding - an instance of a class. Should be available in the scope of 'current_app'. - :param session_func: The synchronous func of the model to call. This can either be an independent function or a - class's method. Should be available in the scope of 'current_app'. - :param session_coro: The asynchronous func of the model to call. This can either be an independent function or a - class's method. Ignored if 'func' was provided. Should be available in the scope of 'current_app'. - :param get: The field inside the dict to get. Specify this in dot notation. The whole response will be returned as - is if this is null. - :param mandatory: If set to True, the API call will enforce session checking; and if a session is not found, the - client will receive an unauthorized failure message. - :param sensitive_keys: Any keys to obscure when retrieving details about the session. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Start by assuming failure: - session_info = None - - # Get the identifier of the session from the values extracted in the 'read_input' decorator: - session_id = kwargs["inbound_data"].get(key, kwargs["inbound_headers"].get(key)) - - # If the key is present, - # we call the function that will get the session's info for us: - if session_id is not None: - - try: - - # For synchronous functions: - if session_func: - if model: session_info = getattr(getattr(current_app, model), session_func)(session_id) - else: session_info = getattr(current_app, session_func)(session_id) - - # For asynchronous coroutines: - elif session_coro: - if model: session_info = await getattr(getattr(current_app, model), session_coro)(session_id) - else: session_info = await getattr(current_app, session_coro)(session_id) - - # If something goes wrong: - except Exception as exception: - if hasattr(current_app, "printer"): getattr(current_app, "printer")(exception) - - # We note down whatever we got: - if session_info and isinstance(get, str): - for subkey in get.split("."): - session_info = session_info.get(subkey, {}) if isinstance(session_info, dict) else {} - session_info = summarize_variable(session_info, expand = True, sensitive_keys = sensitive_keys) - kwargs["session_info"] = session_info - - # If no session info was found, but it was mandatory: - if mandatory and not session_info: - response = ResponseModel( - status_code = StatusCodes.FAILED, - http_code = HttpCodes.UNAUTHORIZED, - message = f"invalid session" - ) - - # Now we are ready to run the function that we are wrapping: - else: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def validate_input( - mandatory_header_keys = None, - mandatory_data_keys = None, - mandatory_file_keys = None, - header_validator = None, - data_validator = None -): - - """ - USE THIS ONLY AFTER YOU HAVE USED 'read_input'. This decorator will help you run validation on the inputs that were - extracted from the request. The mandatory keys will be checked first and the validations will be run after that. If - your validator already checks for keys, you may skip mentioning mandatory keys. DO NOTE THAT YOUR VALIDATOR - FUNCTIONS MUST RAISE AN EXCEPTION FOR THIS DECORATOR TO WORK. - :param mandatory_header_keys: The keys in 'inbound_headers' that are absolutely necessary. - :param mandatory_data_keys: The keys in 'inbound_data' that are absolutely necessary. - :param mandatory_file_keys: The keys in 'inbound_files' that are absolutely necessary. - :param header_validator: The function to use to validate the 'inbound_headers'. - :param data_validator: The function to use to validate 'inbound_data'. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # We first validate the mandatory header keys. - # Having a null value in this case is NOT allowed: - if mandatory_header_keys is not None: - for mandatory_key in mandatory_header_keys: - if kwargs["inbound_headers"].get(mandatory_key) is None: - return ResponseModel( - status_code = StatusCodes.HEADERS_INCOMPLETE, - message = f"missing: '{mandatory_key}'" - ) - - # Return with failure if any of the mandatory JSON details are missing. - # Having a null value is allowed, but is should be sent by the user on intention. - if mandatory_data_keys is not None: - for mandatory_key in mandatory_data_keys: - try: kwargs["inbound_data"][mandatory_key] - except: return ResponseModel( - status_code = StatusCodes.DATA_INCOMPLETE, - message = f"missing: '{mandatory_key}'" - ) - - # Return with failure if any of the mandatory file-keys details are missing: - if mandatory_file_keys is not None: - provided_file_keys = kwargs["inbound_files"].keys() - for mandatory_key in mandatory_file_keys: - if mandatory_key not in provided_file_keys: - return ResponseModel( - status_code = StatusCodes.FILE_MISSING, - message = f"missing: '{mandatory_key}'" - ) - - # Next we validate the headers: - if header_validator is not None: - - # Try validate the data: - try: kwargs["inbound_headers"] = header_validator(kwargs["inbound_headers"]) - - # In case some needed field is missing: - except KeyError as exception: - return ResponseModel( - status_code = StatusCodes.DATA_VALIDATION_FAILURE, - message = "missing: " + str(exception), - http_code = HttpCodes.BAD_REQUEST, - ) - - # In case some pydantic data model fails validation: - except pydantic.ValidationError as exception: - return ResponseModel( - status_code = StatusCodes.DATA_VALIDATION_FAILURE, - message = messages_from_pydantic_exception(exception), - http_code = HttpCodes.BAD_REQUEST - ) - - # In case some other exception was raised: - except Exception as exception: - return ResponseModel( - status_code = StatusCodes.DATA_VALIDATION_FAILURE, - message = str(exception), - http_code = HttpCodes.BAD_REQUEST - ) - - # Finally, we validate the incoming data: - if data_validator is not None: - - # Try validate the data: - try: kwargs["inbound_data"] = data_validator(kwargs["inbound_data"]) - - # In case some needed field is missing: - except KeyError as exception: - return ResponseModel( - status_code = StatusCodes.DATA_VALIDATION_FAILURE, - message = "missing: " + str(exception), - http_code = HttpCodes.BAD_REQUEST - ) - - # In case some pydantic data model fails validation: - except pydantic.ValidationError as exception: - return ResponseModel( - status_code = StatusCodes.DATA_VALIDATION_FAILURE, - message = messages_from_pydantic_exception(exception), - http_code = HttpCodes.BAD_REQUEST - ) - - # In case some other exception was raised: - except Exception as exception: - return ResponseModel( - status_code = StatusCodes.DATA_VALIDATION_FAILURE, - message = str(exception), - http_code = HttpCodes.BAD_REQUEST - ) - - # Now that we have unpacked the incoming data, - # we are ready to run the function that we are wrapping: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def log_request_to_mongo( - attr_name, - collection: str = "logs", - api_version: str = None, - project: str = None, - log_type: str = None, - operation: str = None, - log_input: bool | int = True, - log_output: bool | int = True, - sensitive_keys: list = None -): - - """ - USE THIS ONLY AFTER YOU HAVE USED 'read_input'. This decorator will log the whole process of the API call to - MongoDB. The variable that holds the instance of 'AsyncMongo' needs to be accessible in the scope of 'current_app'. - PLEASE USE "ResponseModel" AS THE RETURNED VALUE OF THE API ENDPOINT IF YOU ARE USING THIS DECORATOR. - :param attr_name: The name of the variable that holds the instance of 'AsyncMongo'. It should be accessible in the - scope of 'current_app'. - :param collection: The name of the collection to write the log into. - :param api_version: The version code of the API endpoint that is being logged. - :param project: The name of the project that the endpoint was built for. - :param log_type: A hint to identify what the log was for. - :param operation: A hint to identify what was action was being performed. - :param log_input: Set to True to capture everything that went into the function, False to capture the least - info, and set it to an integer to capture a certain depth of the input (applicable on iterables and dicts. - :param log_output: The same as 'log_input', but applicable to the response from the function. - :param sensitive_keys: The list of keys to not log. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Create ids for getting logs: - kwargs["log_id"] = "".join(random.choice(ALPHANUMERIC_CHARS) for _ in range(8)) - kwargs["log_chain"] = kwargs.get("inbound_headers", {}).get("X-Log-Chain") or kwargs["log_id"] - - # Set the api version as needed: - kwargs["api_version"] = kwargs.get("api_version", api_version) - - # Make variables and extract available info.: - exception = None - response = None - request_ts = date_time.get_current_utc_date_time() - start_ts = time.perf_counter() - cpu_start_ts = time.process_time() - - # Execute the function that is being wrapped: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - try: response = await func(*args, **kwargs) - except Exception as exc: exception = exc - kwargs["decorator_count"] -= 1 - - # Ensure that the response is not null: - response = response if response is not None else ResponseModel( - status_code = StatusCodes.UNKNOWN_ERROR, - message = "null response for request" - ) - - # Add params to the response. - # THIS IS ONLY APPLICABLE WHEN THE TYPE OF THE RESPONSE IS 'ResponseModel': - if isinstance(response, ResponseModel): - response.api_version = kwargs.get("api_version") - response.log_id = kwargs.get("log_id") - - # Extract the response to log: - response_to_log = "not logged" - http_code_to_log = 200 - if log_output: - if isinstance(response, ResponseModel): response_to_log, http_code_to_log = response.for_quart() - elif isinstance(response, tuple): response_to_log, http_code_to_log = response - else: response_to_log, http_code_to_log = str(response), 200 - response_to_log = summarize_variable( - response_to_log, - expand = log_output, - sensitive_keys = sensitive_keys - ) - - # Try to get the information about the request. - # There will be no data in any of these if the decorator was used to catch start-up and shut-down events. - request_method = None - request_url = None - request_route = None - try: - request_method = f"{request.method}" - request_url = f"{request.url}" - request_route = str(request.url_rule.rule) - except: pass - - # Redact the sensitive keys: - if sensitive_keys: - for k in sensitive_keys: - for var in ["inbound_headers", "inbound_data"]: - try: kwargs[var][k] = len(str(kwargs[var][k])) * "*" - except: pass - - # Construct the log: - api_log = APILogModel( - pid = PROCESS_ID, - ppid = PARENT_PROCESS_ID, - project = project, - log = log_type, - operation = operation, - apiVer = kwargs.get("api_version"), - logId = kwargs.get("log_id"), - logChain = kwargs.get("log_chain", kwargs.get("inbound_headers", {}).get("X-Log-Chain")), - ts = request_ts, - tat = time.perf_counter() - start_ts, - cpuTime = time.process_time() - cpu_start_ts, - sessionInfo = kwargs.get("session_info"), - method = request_method, - url = request_url, - route = request_route, - headers = kwargs.get("inbound_headers"), - data = summarize_variable( - kwargs.get("inbound_data"), - expand = log_input, - sensitive_keys = sensitive_keys - ), - files = { - k: { - "name": v["name"], - "size": v["size"] - } for k, v in kwargs.get("inbound_files", {}).items() - }, - exception = None if exception is None else describe_exception(exception), - response = response_to_log, - httpCode = http_code_to_log - ) - - # Write the log: - app_attr = getattr(current_app, attr_name) - inserted_id = await app_attr.insert_one( - collection = collection, - document = api_log.model_dump() - ) - - # Return the response from the wrapped function. - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def log_chain_to_mongo(attr_name): - - """ - Use this to run everything in the context of the logging decorator. Everything that is decorated with the - custom decorator will be logged if this is used. - :param attr_name: The name of the db connection (an instance of 'AsyncMongo' or 'AsyncMongoStorage') - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Let the next in-line decorator know that it has been wrapped: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - - # Fetch the attribute and get it to log the whole chain: - async with AsyncLoggerContext.logging_context( - logger = AsyncMongoLogger(getattr(current_app, attr_name)), - log_chain = kwargs.get("log_chain") - ): - response = await func(*args, **kwargs) - - # Done here: - kwargs["decorator_count"] -= 1 - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def should_not_be_under_maintenance(attr_name): - - """ - Use this decorator to reject a request when the app is being marked as "under-maintenance". You will need to create - a boolean variable within the scope of the 'current_app' for this to work. An alternate to this is to set the value - in an environment variable named 'IS_UNDER_MAINTENANCE' to a string value of either 'True' or 'False' for - multi-worker deployments. - :param attr_name: The name of the boolean variable that will hold the information about the app being under - maintenance. If its value is True at the time of checking, the incoming request will be rejected. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Get the attribute and check if it indicates that the app is under maintenance, - # call the wrapped function if not under maintenance: - app_attr = getattr(current_app, attr_name) - env_attr = True if os.environ.get("IS_UNDER_MAINTENANCE", "False").lower() == "true" else False - if app_attr or env_attr: - response = ResponseModel(status_code = StatusCodes.DOWN_FOR_MAINTENANCE).for_quart() - else: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def only_whitelisted_ips(attr_name): - - """ - Use this decorator to reject any requests coming from unauthorized IPs. The list of IP addresses to allow must be - in a list that is accessible in the context of 'current_app'. - :param attr_name: The name of the boolean variable that will hold the information about the app being under - maintenance. If its value is True at the time of checking, the incoming request will be rejected. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Get the attribute and check if the request's IP is in the permitted list: - app_attr = getattr(current_app, attr_name) - if request.remote_addr not in app_attr: - return ResponseModel( - status_code = StatusCodes.AUTHORIZATION_FAILED, - message = "bad ip", - http_code = HttpCodes.UNAUTHORIZED - ).for_quart() - - # Now that we have checked that the IP is permitted, - # we are ready to run the function that we are wrapping: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def limit_rate( - attr_name, - rate_limit: int = 5, - seconds: float = 1.0, - message = None, - header_keys: list = None, - data_keys: list = None, - allow_if_exception = False, - count_for_http_codes = None -): - - """ - Use this decorator to apply rate-limiting to incoming requests. - SUGGESTION: WHEN STACKING UP MANY RATE LIMITS, PUT THE SMALLEST TIME PERIOD ON TOP AND LARGEST TIME PERIOD AT THE - BOTTOM. THIS ENSURES PROPER FUNCTIONALITY. - WARNING: TIMING STARTS WHEN THE FIRST PERMITTED REQUEST GOES THROUGH. THIS MEANS THAT, IF YOU HAVE A PER-DAY LIMIT, - AND YOU START MAKING REQUESTS AT 11:00 PM AND EXHAUST YOUR LIMIT AT 11:59 PM, YOUR LIMIT WILL BE REPLENISHED AT - 11:00 PM OF THE NEXT DAY, NOT AT 12:00 AM. - :param attr_name: The name of the variable that holds the instance of 'AsyncRedisCache'. Should be available in the - context of 'current_app'. - :param rate_limit: The number of requests per unit time. - :param seconds: The time period in which the rate limit is to be applied. - :param message: The custom message to respond with. - :param header_keys: The keys in the header to consider when apply rate limits (like 'sessionToken'). - :param data_keys: The keys in the header to consider when apply rate limits (like 'sessionToken'). - :param allow_if_exception: In case Redis is unresponsive, would you prefer allowing the request to pass through or - would you prefer the request getting blocked. - :param count_for_http_codes: If this is provided, the counter will be incremented only if the response code was one - of these values. If not provided, all requests will be counted. This can be used in cases when you want to count - only when the request was successfully served. - :return: The decorator factory. - """ - - # Param-cleaning: - rate_limit = max(1, rate_limit) - if header_keys is None: header_keys = [] - if data_keys is None: data_keys = [] - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Note down the combination of values requested and the limits prescribed: - params = {"route": str(request.url_rule), "header": {}, "data": {}, "limit": rate_limit, "seconds": seconds} - for key in header_keys: params["header"][key] = kwargs["inbound_headers"].get(key) - for key in data_keys: params["data"][key] = kwargs["inbound_data"].get(key) - - # Now make a unique key from this combination: - params_json = json.to_string(params, no_space = True) - sha256_hash = hashlib.sha256() - sha256_hash.update(params_json.encode("utf-8")) - hashed_key = sha256_hash.digest() - base64_key = base64.b64encode(hashed_key).decode("utf-8") - - # We first get the value of the counter: - app_attr = getattr(current_app, attr_name) - counter_value = await app_attr.count(base64_key, value = 1, expiry = seconds) - - # If any exception occurred in getting the count, - # and exceptions haven't been allowed: - if counter_value is None and not allow_if_exception: - response = ResponseModel( - status_code = StatusCodes.RATE_LIMIT_EXCEEDED, - message = "Please contact admin (E)" - ) - - # If the rate-limit has already been crossed, - # or when the counter was not fetched but exceptions are allowed: - elif (counter_value or 0) > rate_limit: - response = ResponseModel( - status_code = StatusCodes.RATE_LIMIT_EXCEEDED, - message = message or ", ".join([ - f"rate limit: {rate_limit} in {humanize.naturaldelta(datetime.timedelta(seconds = seconds))}", - f"this is your {humanize.ordinal(counter_value)} request in the given period" - ]) - ) - - # If the rate-limit hasn't been crossed: - else: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # If we have been told to count only for specific status codes, - # and if the HTTP code of this response is not in the list of codes, we reduce the counter by one: - if count_for_http_codes: - http_code = 200 # ... Default assumption. - if isinstance(response, (list, tuple, set)): http_code = response[1] - elif isinstance(response, ResponseModel): http_code = response.http_code.value - if http_code not in count_for_http_codes: - await app_attr.count(base64_key, value = -1, expiry = seconds) - - # Return the response from the function call: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def handle_cancelled_request(cleanup_func = None, cleanup_coro = None): - - """ - Use this decorator to handle prematurely terminated requests. If your clean-up function needs access to variables, - consider using 'g' to hold data in the scope of the request. - :param cleanup_func: The function to call when the cancelled request needs graceful handling. - :param cleanup_coro: The coroutine to call when the cancelled request needs graceful handling. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - try: - - # we are ready to run the function that we are wrapping: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - # In case the client closes the connection pre-maturely: - except asyncio.CancelledError as exception: - kwargs["decorator_count"] -= 1 - if hasattr(current_app, "printer"): getattr(current_app, "printer")(exception) - if cleanup_func is not None: cleanup_func() - if cleanup_coro is not None: await cleanup_coro() - return ResponseModel( - api_version = kwargs.get("api_version"), - status_code = StatusCodes.CLIENT_CLOSED_REQUEST - ).for_quart() - - # We propagate any other kind of exception: - except Exception as exception: - kwargs["decorator_count"] -= 1 - raise - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def handle_failed_request(cleanup_func = None, cleanup_coro = None): - - """ - Use this decorator to handle requests that fail due to exceptions. If your clean-up function needs access to - variables, consider using 'g' to hold data in the scope of the request. THIS DECORATOR IS NOT MEANT TO SUPRESS - EXCEPTIONS. IT IS, INSTEAD, MEANT TO PERFORM CLEAN-UP AND PROPAGATE THE EXCEPTION. - :param cleanup_func: The function to call when the cancelled request needs graceful handling. - :param cleanup_coro: The coroutine to call when the cancelled request needs graceful handling. - :return: The decorator factory. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - try: - - # we are ready to run the function that we are wrapping: - kwargs["decorator_count"] = kwargs.get("decorator_count", 0) + 1 - response = await func(*args, **kwargs) - kwargs["decorator_count"] -= 1 - - # Done here: - if ( - kwargs["decorator_count"] == 0 and - isinstance(response, ResponseModel) - ): response = response.for_quart() - return response - - # In case the client closes the connection pre-maturely: - except Exception as exception: - kwargs["decorator_count"] -= 1 - if hasattr(current_app, "printer"): getattr(current_app, "printer")(exception) - if cleanup_func is not None: cleanup_func() - if cleanup_coro is not None: await cleanup_coro() - raise exception - - return wrapper - - return decorator - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/api/codes.py b/utils_v2/api/codes.py deleted file mode 100644 index 5773cc9..0000000 --- a/utils_v2/api/codes.py +++ /dev/null @@ -1,164 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 12th Sept., 2024 - - OBJECTIVE: - - To maintain all status codes in one place. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -from enum import Enum, unique - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -@unique -class HttpCodes(Enum): - - """ - Commonly used standard HTTP status codes. - Can be sent after an API Call is processed. - Refer to: https://http.dev/status - NOTE: THIS LIST IS NOT EXHAUSTIVE! - """ - - # 1XX - Informational: - CONTINUE = 100 # .............. https://http.dev/102 - SWITCHING_PROTOCOLS = 101 # ... https://http.dev/101 - PROCESSING = 102 # ............ https://http.dev/102 - EARLY_HINTS = 103 # ........... https://http.dev/103 - - # 2XX - Success: - SUCCESS = 200 # .................. https://http.dev/200 - CREATED = 201 # .................. https://http.dev/201 - ACCEPTED = 202 # ................. https://http.dev/202 - NON_AUTHORITATIVE_INFO = 203 # ... https://http.dev/203 - NO_CONTENT = 204 # ............... https://http.dev/204 - RESET_CONTENT = 205 # ............ https://http.dev/205 - PARTIAL_CONTENT = 206 # .......... https://http.dev/206 - MULTI_STATUS = 207 # ............. https://http.dev/207 - ALREADY_REPORTED = 208 # ......... https://http.dev/208 - THIS_IS_FINE = 218 # ............. https://http.dev/218 - IM_USED = 226 # .................. https://http.dev/226 - - # 3XX - Redirection: - MULTIPLE_CHOICES = 300 # ..... https://http.dev/300 - MOVED_PERMANENTLY = 301 # .... https://http.dev/301 - MOVED_TEMPORARILY = 302 # .... https://http.dev/302 - SEE_OTHER = 303 # ............ https://http.dev/303 - NOT_MODIFIED = 304 # ......... https://http.dev/304 - USE_PROXY = 305 # ............ https://http.dev/305 - SWITCH_PROXY = 306 # ......... https://http.dev/306 - TEMPORARY_REDIRECT = 307 # ... https://http.dev/307 - PERMANENT_REDIRECT = 308 # ... https://http.dev/308 - - # 4XX - Client Errors: - BAD_REQUEST = 400 # ..................... https://http.dev/401 - UNAUTHORIZED = 401 # .................... https://http.dev/401 - PAYMENT_REQUIRED = 402 # ................ https://http.dev/402 - FORBIDDEN = 403 # ....................... https://http.dev/403 - NOT_FOUND = 404 # ....................... https://http.dev/404 - METHOD_NOT_ALLOWED = 405 # .............. https://http.dev/405 - NOT_ACCEPTABLE = 406 # .................. https://http.dev/406 - PROXY_AUTH_REQUIRED = 407 # ............. https://http.dev/407 - REQUEST_TIMEOUT = 408 # ................. https://http.dev/408 - CONFLICT = 409 # ........................ https://http.dev/409 - GONE = 410 # ............................ https://http.dev/410 - LENGTH_REQUIRED = 411 # ................. https://http.dev/411 - PRECONDITION_FAILED = 412 # ............. https://http.dev/412 - PAYLOAD_TOO_LARGE = 413 # ............... https://http.dev/413 - URI_TOO_LONG = 414 # .................... https://http.dev/414 - UNSUPPORTED_MEDIA_TYPE = 415 # .......... https://http.dev/415 - PAGE_EXPIRED = 419 # .................... https://http.dev/419 - TOO_MANY_REQUESTS = 429 # ............... https://http.dev/429 - UNAVAILABLE_FOR_LEGAL_REASONS = 451 # ... https://http.dev/451 - INVALID_TOKEN = 498 # ................... https://http.dev/498 - CLIENT_CLOSED_REQUEST = 499 # ........... https://http.dev/499 - - # 5XX - Server Errors: - INTERNAL_SERVER_ERROR = 500 # ........... https://http.dev/500 - NOT_IMPLEMENTED = 501 # ................. https://http.dev/501 - BAD_GATEWAY = 502 # ..................... https://http.dev/502 - SERVICE_UNAVAILABLE = 503 # ............. https://http.dev/503 - GATEWAY_TIMEOUT = 504 # ................. https://http.dev/504 - HTTP_VERSION_NOT_SUPPORTED = 505 # ...... https://http.dev/505 - VARIANT_ALSO_NEGOTIATES = 506 # ......... https://http.dev/506 - INSUFFICIENT_STORAGE = 507 # ............ https://http.dev/507 - LOOP_DETECTED = 508 # ................... https://http.dev/508 - BANDWIDTH_LIMIT_EXCEEDED = 509 # ........ https://http.dev/509 - WEB_SERVER_DOWN = 521 # ................. https://http.dev/521 - ORIGIN_IS_UNREACHABLE = 523 # ........... https://http.dev/523 - SERVICE_IS_OVERLOADED = 529 # ........... https://http.dev/529 - NETWORK_READ_TIMEOUT_ERROR = 598 # ...... https://http.dev/598 - NETWORK_CONNECT_TIMEOUT_ERROR = 599 # ... https://http.dev/599 - - -# --------------------------------------------------------------------------------------------------------------------- - - -@unique -class StatusCodes(Enum): - - """ - To be used internally within the context of your service. Customize these to match your service. - The format is: (SUCCESS_INDICATOR, INTERNAL_NUMERIC_CODE, HTTP_CODE) - Example: (True, 1, 200) - """ - - # Legacy Codes: - OK = (True, 1, HttpCodes.SUCCESS.value) - FAILED = (False, 0, HttpCodes.INTERNAL_SERVER_ERROR.value) - PARTIAL_SUCCESS = (True, 2, HttpCodes.PARTIAL_CONTENT.value) - PARTIAL_FAILURE = (False, 3, HttpCodes.PARTIAL_CONTENT.value) - - # Authentication Codes: - LOGGED_IN_SUCCESSFULLY = (True, 200, HttpCodes.SUCCESS.value) - LOGIN_FAILED = (False, 201, HttpCodes.UNAUTHORIZED.value) - INVALID_SESSION_TOKEN = (False, 202, HttpCodes.UNAUTHORIZED.value) - AUTHENTICATION_DETAILS_INCOMPLETE = (False, 203, HttpCodes.BAD_REQUEST.value) - - # Authorization Codes: - AUTHORIZED_SUCCESSFULLY = (True, 300, HttpCodes.SUCCESS.value) - NOT_ALLOWED = (False, 301, HttpCodes.FORBIDDEN.value) - AUTHORIZATION_DETAILS_INCOMPLETE = (False, 302, HttpCodes.BAD_REQUEST.value) - AUTHORIZATION_FAILED = (False, 303, HttpCodes.UNAUTHORIZED.value) - - # General failures: - DOWN_FOR_MAINTENANCE = (False, 800, HttpCodes.SERVICE_UNAVAILABLE.value) - UNKNOWN_ERROR = (False, 801, HttpCodes.INTERNAL_SERVER_ERROR.value) - DATA_INCOMPLETE = (False, 802, HttpCodes.BAD_REQUEST.value) - HEADERS_INCOMPLETE = (False, 803, HttpCodes.BAD_REQUEST.value) - FILES_MISSING = (False, 804, HttpCodes.BAD_REQUEST.value) - CLIENT_CLOSED_REQUEST = (False, 805, HttpCodes.CLIENT_CLOSED_REQUEST.value) - - # Validation failure: - DATA_VALIDATION_FAILURE = (False, 900, HttpCodes.BAD_REQUEST.value) - RATE_LIMIT_EXCEEDED = (False, 901, HttpCodes.TOO_MANY_REQUESTS.value) diff --git a/utils_v2/api/log.py b/utils_v2/api/log.py deleted file mode 100644 index 49ccd77..0000000 --- a/utils_v2/api/log.py +++ /dev/null @@ -1,139 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 12th Sept., 2024 - - OBJECTIVE: - - To have a structure to the response sent from the API calls. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# System-level activities: -import distro -import socket -import platform - -# For data-modelling: -from pydantic import BaseModel, Field -from typing import Any, Optional, List, Literal - -# To work with date and time: -import datetime - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Info for logging that will stay constant during runtime: -SERVER_HOSTNAME = str(socket.gethostname()) -PLATFORM_INFO = platform.uname() -HOST_OS = str(distro.name(True)) -HOST_CPU = f"{PLATFORM_INFO.processor} ({PLATFORM_INFO.machine})" - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class APILogModel(BaseModel): - - # To identify the machine the code is running on. - # DO NOT MODIFY THESE: - hostname: str = SERVER_HOSTNAME - os: str = HOST_OS - cpu: str = HOST_CPU - # Can modify these: - pid: Optional[Any] = None - ppid: Optional[Any] = None - - # To identify the project and actions: - project: Optional[str] = None - log: str - operation: str - apiVer: Optional[str] = None - logId: Optional[str] = None - logChain: Optional[str] = None - - # Timing metrics: - ts: datetime.datetime - tat: float - cpuTime: float - - # To understand the request that came in: - sessionInfo: Optional[Any] = None - method: Optional[str] = None - url: Optional[str] = None - route: Optional[str] = None - headers: Optional[Any] = None - data: Optional[Any] = None - files: Optional[Any] = None - - # To understand the output that went out: - exception: Optional[Any] = None - response: Optional[Any] = None - httpCode: Optional[int] = None - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - my_log = APILogModel( - log = "internal" - ) - - print(my_log) diff --git a/utils_v2/api/response.py b/utils_v2/api/response.py deleted file mode 100644 index 02e3d72..0000000 --- a/utils_v2/api/response.py +++ /dev/null @@ -1,133 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 12th Sept., 2024 - - OBJECTIVE: - - To have a structure to the response sent from the API calls. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# For data-modelling: -from pydantic import BaseModel -from typing import Any, Optional, List - -# My utils: -from utils_v2.api.codes import StatusCodes, HttpCodes - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class ResponseModel(BaseModel): - - """ - A model for how the response should be when developing API endpoints. - """ - - # The fields that you want in your response: - status_code: StatusCodes - message: Optional[str | List] = None - data: Optional[Any] = None - seconds: Optional[float | int] = None - log_id: Optional[str] = None - http_code: Optional[HttpCodes] = None - api_version: Optional[str] = None - - def for_quart(self): - - """ - Call this when you are using either Flask or Quart as your framework. - :return: The output as expected by Flask and Quart. - """ - - # Construct the basic structure: - response_dict = { - "status": 1 if self.status_code.value[0] else 0, - "code": self.status_code.value[1], - "message": self.message or self.status_code.name.replace("_", " ").lower(), - "data": self.data, - "apiVer": self.api_version - } - - # Now add the additional fields: - if self.seconds is not None: response_dict["seconds"] = self.seconds - if self.log_id is not None: response_dict["logId"] = self.log_id - - # Figure out the HTTP code: - response_http_code = self.http_code.value if self.http_code is not None else self.status_code.value[2] - - # Done here: - return response_dict, response_http_code - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - my_response = ResponseModel( - status_code = StatusCodes.RATE_LIMIT_EXCEEDED - ) - my_response.log_id = "abc123" - - print(my_response.for_quart()) diff --git a/utils_v2/cache/__init__.py b/utils_v2/cache/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/cache/__pycache__/__init__.cpython-310.pyc b/utils_v2/cache/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index b168cc850596affdce0ed0cd7af9dc4af6a49b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmd1j<>g`kf)G>dbP)X*L?8o3AjbiSi&=m~3PUi1CZpdcJJ=#`Q(QrT9zeS_O?IP^4Jt9%8Fz&f>v5tvbFY7hD2LgB8y3Ly2)v3 zW_n!RBZ`BeSGI(;59R(Yi?^G36>QjzT@RwkT-PSGjd z(^n>)hn=!hL2l|*&6#i}?`h8DU1Me1-RDf*G{jZe!dNk!X=mR(ZDqf+-#LKi0cXZ} z2+tYU*m=mExvSmR(Tj0ieyfMTOHxw z@*LN)+m>qwTh^w%Wre=A>5H4zrUydD<~9Pqeau?(nr>iuZPrA^cHL^(?Y1lC6!~kH zE?>HKY3bsn>zOevRINrBc7nzE`OVGExy=`Ydc*gd!Cc*M&3CrKhTo1KHFh#*2c39s zS8pu6arMG0Sz=4`7b=xcu%g;hRgX+Iz;pkVx_eQ$cIy>)wY$FViU)d>-xPKy_~bUK z)(tj@Ka`8)`{@jRe4u@xuNhpkd!=ookM*eL?Em0ekn_t8FR&c9?h8Bgg|%ka@c?)1 zn_vXE;I)I$Zr5GQU$epnSSYztx9bhBy>8W;b`V&{F0k;L>v+LMyl{`9p<^}trW06O zepgtI9olRy+&S6ll{L$@g6?YIzSDKvp;fn=O$*~_*;phj3_A+!mYWRBb*!~+yB>Oe zTdh}G!E1NAVK6IO2sh|9L(*AuLkt6rgx}&T*(t~D%K5mq!|AO1oI=*ix-R53_=N1>kra?6KEES6G`3 zudYTQJ8%@kTHPSDR$VaJwT0`%G=&>>MO#rDtXtTyL(A@le#;I$vU5v~HM0P!eH{y* zekeC4z7OI1=}{!1_MvuH|3Lr1_&{6BDVe#eZ|i-XQnOS?mGo0Yu7vNO;v4)F$$R>T z#)cN^vYFP`UID4Q`Xeam%jdQc8auiB+IFs=+cEpbPTtAg*J&j1yMS^tEbf&0=6!vq z%s1Ql-qeTMMx~#3Oeg=5aRp}XHEp|aL+cl=Yr6dV(CBNP*4KZk|4>ifqs>G=-!FWq zJB5#Os#Mp$BU@FAOJf|Mwp_>e)BQ-+G4Su2obm4(??6``Xo7b5fe{&VCnCKjf63&t zH|HCE%bj=JTW-_uxMKdzt$M>2tv7|g;nu@o-tKrcdwspu4e+uXdd;AA>*Ty#;(4h@ zH7u(a)MUwAXDh0lZF)fnyU{t<;DES3`?cPAS)t~Ib7z}A7B@IIm#+Mvi1q-Z7!(YM zeU|TrYsX(&hS}IBY%g$Y?(MqUp*}sxMY)^qR+PVGH@j|BP{LZBj7qgy8!A|JI3(Ct92*`i(d9XuUx-3`L1uxbbH=~Gd8_4KLq6{H@)lr+p^%!POfYpM*&A=!!n0SggGg%(xgFg= zpBmXHpZY(zPYBw4?giP6q>Qq3FZc`mcux;uNU@n1+d1qCdZ+*hEOojo0E%#TfYrxt z0PCOc=XdgbbElB*3i+KP$_rs>r`#`KSE$Hcq1c=1=V0NBL%Tu=yFw|uE3CtW|3tsW z-NDH04kfgm>=*l`vE2c!zi4+5oTJh|se}{5KdFvlACf<0hC4~`b)}pVBh^|ifS?l$ ztaEA=21Q?B!NmbkTo%N0;vkahR8)jDr7#K_HF1Q=qf8!S!p&Sf&g2OuUt?l1d6LOf zOrAzkEk|bHHrK>6EcrT;sH{fquWpEES$K@eb4;pCo<{{5cPgf34x8Mg%H*E;6W#PSZv z4lM7Pq=V?8U5LHM4r3$yxOfS_h5!?OYk7Rn;~V@8iL0&X@Z4h6aB@KC8ibl@{>QnM zoKukbqD)I^xmhlkE9D8N>P$LQ@Y3?JA6AI{u%cU1p4eS|r3|m`VfbVf=aBOVo)gYt z=LnvY&ZEv_cuqObJCD25@DHAFzIHFavd?+JdD3|bRQEfx&eP5_$Q^KwJI}f^vYzQ2 zbDl%Jha3y)G8gR|v1mh9ffj-g<|4kI(mc>6+y#_;pf3T6m;^g`>bEm$#np>SXPb6w z)v?e0C0mk2N$VXR=?Z$ID(%^)SVT+ln@r9!Imbi_=|ED?qwKF(egVlCr5p<7=sB#u zw!ts(?T-lzjiss)=_1lSfI}1BSu--dmc71bH-8Np0VgvJ4U*~?<-=~L=|)9Dz9ujk zIhK5~+#AfKs>_ypcJjAqzWZE~l^CLRh1K`s%irxui$X5>LW9Irb@U@ljU%x5;7x8x zyu!wpkN^yQi}}5J`59hHw#;as{2Lg4`LoKk;}@l~*0<_ZnB>EJ(sRHSb@aYggMCK| z_ZF$qXGtzJ`zF-M{D@`wel9qQb<5MoVAulz3A!_R`v_Pf5fB~WD_nsVyix4hR^aiM za-rz1N#8bh)0AIJ4_CQjs1NV84ZrIa99DR`;Z_H}bJM#?Pmj*&TGO}rTxD2bHti9x z8t4P%jt6gH7A*okfRB-qz7&qYTCAo`5;xRGP(r%HHAO^W5xA6bvGvxqH>@@I^GOjM zU0+Q@VGd3?rq;nIYIVQchASF_nr>?qZYg|ZK@T0nN?Q+ktZ?oTOMwFq+N8p#+YY({ ztV_o-)}O;5#-eqjfi2M$vlfQg_QP3*3Q}r8!{3DW&u9nfw%j1F;a;R3y@jZR2zMu4 z>j-zvyRD|8@>b~HmZOw(Wypsigz*jr6qf`Qa2YyYP&A@xuU&6;9rvOSPTi&xbGSBQ zlWMhk(}N5}PmI6GvN?Kw{C&deT7Z7s8X_xUjcuZ*$LkKb8w-Gd;%L#4@tTN`ab2S# z98F@=YF?aT)dOQBqRF8V<|T8YN%@FbI$}KOBYJHwtkpgS$zT#mVWyz-Z#s8KAGg>^ z^*!y}r-_~2(WS1!FPHYaYKXTvYB-ym1WXDiF*=+{^|mI5{73&IT;&+>lvcwn~201iB66Uy4KE!m@G)F1NlmC@zCvm$Am=^86auVw) z{~Ux?WBy~T0iv+3C1Wyyg{Y_8fCeLthM@|#_8jGgU%CVDL1w;N+@=$T(A(SC_TDj^ zRGDW^1&=qaMnLYL=2g{wwD~`*Lt{ zMla=500?29Fg6b;LS(3O=KZ`&+N(kav0`K!Iz`Vp6Kg!~a zW#6(L$EqW^i{P}3jKdV)as{lk+-4it`hh*#?qnntY= zMQ7ZY0em7C_ckK>hz3K3pc`ERoB_R9;0ajv2x;(D(idDpfDWpV8sePw+Lfi{MT>Qw z!^`Si5;7d?0hk5|Bc5fA5jvWV3{6F-imc3IRz7#fVF2zs4p5zk6&l%djOLX9F7(pOj$E zNq>mSs)LryDF!g3GMvD9eo|548+&LP38c(Sb9icOPg^#^q|CSz+q2}i;}aOk9|D}@ z!#ovJ9tF@>`w%9CzMAr%q*4*VL#=1VS5sLKDwjBqWE#|@6VjU>H5rio0rN6;_tA4z0z6LxWwFd09%9 zL{meP{!bK1n>sTCj5LN2hUyMs6D|)s_?QGHLUZeB zUE9`mtvA`%fD9xixPe0u$Jo~2g_+{1EOVRsrdBn3f0ByavX5gp*bXR%&0{?rkG1`7 zKnYEpix{aUa;KaloN++>Sq6Urd%hPmpreCUyNKhm=t67Ol1i>KYq?D*&}AHPWaM;t z>2kFY<%uSOsKhh9T30m1Ti}4Wh9oLqN=`E*N_=3%E0i8`jBar7x8-CGKsJIyAYt4w zil%Prh5st#rj3d|t(Wc?zwA9SD!p;Ly_e;;1o2EG5o0dE`2Rv7?ft2(4t#8Dfp8=JE z;(V6g4Xr>`k=)O&LLck4VL0X)n93TUId}KopQUR8)rq}di4r#nozwNf0j_m}fYa?r zUpYb7*~PMOl!#r*=XpCXAu!?qD1cJzWDO)Sdy~UpTJgoixPM7)iv8M8utIPIqsJ#j^O{W*ay^1Y0G1?u)sBE+}XHuxHM@RI9`*UpkC1*mFhHYntJca(X}6= zBj^dqc0i?WR{1^)={i@u39vVYgw~PJa4WMQyYh~*yM5Y9Lx(~fh^h?sm zGQ}(JL!qUpl-?~7?m=jflUB80{{dK%O2>8k7Cfu~N5%@*CFZlvP*+Ax)lCDSY8Ajh zM%{TBToRC=ann->LV5~t9#lL^co3HOs(_RZMNK*qik{4}Z`p9H->-66VK5Ha%AK>m z9bZ|1^XCVijEE`UY^|(UdPd#I@{ZjostOB>}?nctzY|?P238gT7a&VRLwC+?k#* zj7n~jI+in_XQpo8&-|sCGe569tnT3a=iex(RUDf zxX*hQR1U;gci`aW{#;6Kv9ra=0JIw46}B5 z&uWd~Rz!!p?aUOHq>rwooze>NmEuoPS3>_JbHt$0gv4O6_wKWJAoazJ)Js_}#n z98S37HeoZQj4CsnTu_To8dhDz?6LKSuzI*N=4Q>?|3c|ag)PSMYI=K_+~v!NJ*P5- z`$Cc#8PQRZX(0`!borjg!tE+6-^YvZQ&uRckd-oJWq&LqvC%s;YV_j%dL+trL+FAY zZz?dqj~`9_@v;BN9E8m$w8908rt0(Va*l>MKidJC@ z=6oA>awVbw(vYHMigT%G72hqY!>VoMq-Yto0Vz*K3wV<;&E&93o!|sXoE2bE9_d)m z;p%HU^wvDwh(u_Yd+0HsieptsnL2WUz$I`3XAclq)K9lg)K7a%NG7#W7ja{SK1f$d zb@DbtO9eJgWGvN)JZJCG#J!AF&Y&2(#mUhSrk!NeY8Aoe>n;#c+g(@ZaaCZ+nt2Nln~MjafG6moQD< z!d1-UwINIku_2gvp55TOuUt}Fog?yoYX`S(xjy48$6Z!H7+!B(8}ty*?AO12r3L^~ zZ1Mmhj3porfh7xR-H5?zvH=kVhw^}76QX8qBF3;TAuMM!Kzy6rin|>gByhfi2`yDi zSxchCnCPu8R=46ijIOu?HO`oqQf6nO{%7#mKD!A)cD8UW5(?ouQ5n(Knp}_F><{i6 zQu_Xw7D!!inVy0LG7jn%L01-fJv?fKWJ?_XFJT0i1rK`wMd|SXe_qC&@5^{c6NQ+^ zK?ysfO0CxNoom z-WGGT!%|=By{q{%Siql-{2&Yl2$O~c^?p`dKzWo(8@1L zkCk#puA-M7DLq^|P};ZuaOIiGk;4aNd!8G%7{0F!x%*(J46k3rQ+$(&%w1+~m&*gV zCMpB5^5(?fqp>`46O0p#k!AE=5__G*-eB@=CcBbV@jglRAGpK@YR>55M|jlnO+PFr z(D)eNKm~q6>;gQq!_|Y_HiHtp_?CxHiYp0Wp4XAF0{|lPKP^5=E-b?nb;>xWF?0>N zN(hjBSLgp-ur^O^s#8n7Z^-Z${>Na^sh@J}mrpIce5U@=sTb|l)ApGcPb@6FSU^*aO_4If=3>vN zR1huB!45-RDK|<82M!gNO0rb~%qTCAs938xejVC0r8s3X%<1`2G0q6VZuTV? zw&!A?%jJ$rUfrbyZ>a self.__ping_counter: - try: - await self.__client.ping() - self.__requests_since_last_ping = 0 - return True - except Exception as exception: - self.__printer(exception) - return await self.connect() - else: - self.__requests_since_last_ping += 1 - return True - - async def set(self, key, value, expiry: float = 120, raise_exception = False): - - """ - Saves some value to the cache. - :param key: The key with which the data will be stored and retrieved. - :param value: The value to store. - :param expiry: The time in seconds after which the data will expire. Must be a positive number. - :param raise_exception: If you want to raise an exception if the process fails. - :return: True if cached, else False. - """ - - await self.ensure_connection() - - try: - - # We handle conversion for unsupported Pythonic datatypes: - original_type = type(value).__name__ - converter = self.__set_converters.get(original_type) - if converter is not None: value = converter(value) - - # Here we actually try to store the data: - response = await self.__client.setex( - key, - int(expiry), - json.to_string({ - "value": value, - "type": original_type - }, indent = 0, no_space = False) - ) - return response - - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return False - - async def get(self, key, raise_exception = False, on_fail = None): - - """ - Retrieve the cached value. - :param key: The key with which the data was saved. - :param raise_exception: If you want to raise an exception if the process fails. - :param on_fail: What to return if the process fails due to an exception. - :return: The retrieved data or null if not found. - """ - - await self.ensure_connection() - - try: - data = await self.__client.get(key) - data = data.decode("utf-8") - data = json.from_string(data) - converter = self.__get_converters.get(data["type"]) - if converter is not None: return converter(data["value"]) - return data["value"] - - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return on_fail - - async def delete(self, key, raise_exception = False): - - """ - Prematurely delete the value from the cache before it expires. - :param key: The key with which the data was saved. - :param raise_exception: If you want to raise an exception if the process fails. - :return: True if deleted, else False. - """ - - await self.ensure_connection() - - try: - response = await self.__client.delete(key) - return True if response else False - - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return False - - async def count(self, key, value: int = 1, expiry: float = None, raise_exception = False): - - """ - To use simple counters. If the counter (identified by the 'key') exists, it will be incremented, else the - counter will be created and the value will be incremented from 0. - :param key: The name of the counter. - :param value: The amount to increment the value by. Send negative values to count backwards. - :param expiry: The time (in seconds) in which the counter expires. Starts from the time the counter is created. - This value has to be an integer. If a float is passed, the value will be rounded off. - :param raise_exception: If you want to raise an exception if the process fails. - :return: The latest value of the counter. Will be null if something went wrong and the exception was suppressed. - """ - - await self.ensure_connection() - - try: - - already_existed = await self.__client.exists(key) - new_value = await self.__client.incrby(key, value) - if expiry and not already_existed: await self.__client.expire(key, int(expiry)) - return new_value - - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return None - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - - def set_complex(x): - return {"r": x.real, "i": x.imag} - - def get_complex(x): - return complex(x["r"], x["i"]) - - async def main(): - - my_cache = AsyncRedisCache( - connection_string = r"redis://:dc4da94197c843ab6a730113c2b801d9@redis.ditscentre.in/0", - ping_counter = 100, - debug = False - ) - - my_cache.add_converter( - type_name = type(2j).__name__, - set_converter_func = set_complex, - get_converter_func = get_complex - ) - - value = await my_cache.get(key = "6b61afd0-b066-4611-9791-411a30d34624") - print("GET:", value) - print("TYP:", type(value), end = "\n\n") - - # success = await my_cache.set( - # key = "name", - # value = {"first": "John", "last": "Doe"}, - # expiry = 10 - # ) - # print("SET:", success, end = "\n\n") - # - # value = await my_cache.get(key = "name") - # print("GET:", value) - # print("TYP:", type(value), end = "\n\n") - # - # success = await my_cache.delete(key = "name") - # print("DEL:", success, end = "\n\n") - # - # value = await my_cache.get(key = "cnt") - # print("GET:", value) - # print("TYP:", type(value), end = "\n\n") - # - # await my_cache.delete(key = "cnt") - # for _ in range(50): - # await asyncio.sleep(1.0) - # counter = await my_cache.count(key = "cnt", value = 1, expiry = 10) - # print("COUNTER:", counter) - - asyncio.run(main()) diff --git a/utils_v2/cache/async_redis_cache_v2.py b/utils_v2/cache/async_redis_cache_v2.py deleted file mode 100644 index 0192dae..0000000 --- a/utils_v2/cache/async_redis_cache_v2.py +++ /dev/null @@ -1,568 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Saturday, 26th Oct., 2024 - - OBJECTIVE: - - To provide an easy way to cache data for fast access. This version has the change that it can handle custom - serializers by way of dependency injection. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To use redis: -import redis.asyncio as redis - -# Other utils: -from utils_v2.string import json -from utils_v2.serialization.pickle_serializer import PickleSerializer - -# For debugging: -from icecream import IceCreamDebugger - -# To make a decorator: -from functools import wraps - -# For hashing and shortening the hash: -import hashlib -import base64 - -# To work with datatypes: -from typing import List, Any - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** WRAPPERS *** -# ***** **** -# ***************************************************************************************************************** - - -def cache_it(cache = None, expiry = 120): - - """ - This decorator factory takes an instance of the async caching class 'AsyncRedisCache' and holds your data there. - If a subsequent call is made to the same decorated function with the same inputs, the result is fetched from the - cache instead of going through the whole function again. - :param cache: The instance of 'AsyncRedisCache'. - :param expiry: The time in seconds after which the cached data must be cleared. - :return: The decorator that automatically caches your data. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # We first use the name of the function and the inputs given to it to generate a key for Redis with the - # simple hashing and shortening by way of base64 strings: - inputs_given = func.__name__ + str([_ for _ in args]) + str(kwargs) - sha256_hash = hashlib.sha256() - sha256_hash.update(inputs_given.encode("utf-8")) - hashed_key = sha256_hash.digest() - base64_key = base64.b64encode(hashed_key).decode("utf-8") - - # Now we check if we have the value in cache: - try: response = await cache.get(base64_key, raise_exception = True) - - # If the key doesn't exist, we pass through the function and store the results. - except: - response = await func(*args, **kwargs) - await cache.set(key = base64_key, value = response, expiry = expiry) - - # Return the response from the wrapped function. - return response - - return wrapper - - return decorator - - -# --------------------------------------------------------------------------------------------------------------------- - - -def cache_class_methods(attr_name, expiry = 120): - - """ - This decorator factory takes an instance of the async caching class 'AsyncRedisCache' and holds your data there. - If a subsequent call is made to the same decorated function with the same inputs, the result is fetched from the - cache instead of going through the whole function again. - :param attr_name: The name of the variable that has an instance of "AsyncRedisCache". - :param expiry: The time in seconds after which the cached data must be cleared. - :return: The decorator that automatically caches your data. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(self, *args, **kwargs): - - # Get the cache object first: - cache_obj = getattr(self, attr_name) - - # We first use the name of the function and the inputs given to it to generate a key for Redis with the - # simple hashing and shortening by way of base64 strings: - inputs_given = func.__name__ + str([_ for _ in args]) + str(kwargs) - sha256_hash = hashlib.sha256() - sha256_hash.update(inputs_given.encode("utf-8")) - hashed_key = sha256_hash.digest() - base64_key = base64.b64encode(hashed_key).decode("utf-8") - - # Now we check if we have the value in cache: - try: response = await cache_obj.get(base64_key, raise_exception = True) - - # If the key doesn't exist, we pass through the function and store the results. - except: - response = await func(self, *args, **kwargs) - await cache_obj.set(key = base64_key, value = response, expiry = expiry) - - # Return the response from the wrapped function. - return response - - return wrapper - - return decorator - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncRedisCache: - - def __init__( - self, - connection_string, - serializer = None, - ping_counter = 1_000, - debug = False, - debug_prefix = "R-Cache | " - ): - - """ - Implements a simple cache in Redis which holds and returns all native datatypes like ints, floats, bools, - strings, dicts, lists, sets, and tuples :) - :param connection_string: The connection URL for connecting to Redis. - :param serializer: The serializer to use. - :param ping_counter: The number of requests to Redis after which you want to ping to ensure connection. - :param debug: Whether, or not, you want to show debugging messages from the start. - :param debug_prefix: The prefix text to show with the debugging messages. - """ - - # Note down the configuration: - self.__client = None - self.__serializer = serializer or PickleSerializer() - self.__ping_counter = ping_counter - self.__requests_since_last_ping = 0 - self.__connection_string = connection_string - - # For debugging: - self.__printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self.__printer.disable() - - def enable_debug(self): - self.__printer.enable() - - def disable_debug(self): - self.__printer.disable() - - @staticmethod - def make_key(*args, **kwargs) -> str: - - """ - Generates a key by hashing the args and kwargs sent to it. Can be useful to generate a predictable key. If the - inputs stay the same, the output stays the same. - :param args: Any number of args that you would like to use to generate the key. - :param kwargs: Any number of kwargs that you would like to use to generate the key. - :return: A string that can be used as a key to store values on Redis. - """ - - # Take everything into one plain text string: - plain_text = "".join(str(a) for a in args) - plain_text += json.to_string(kwargs, no_space = True) - - # Hash the plain text value, and create a key from it: - sha256_hash = hashlib.sha256() - sha256_hash.update(plain_text.encode("utf-8")) - hashed_key = sha256_hash.digest() - base64_key = base64.b64encode(hashed_key).decode("utf-8") - - # Done here: - return base64_key - - async def connect(self) -> bool: - - """ - To make an asynchronous connection request to the Redis server to establish a connection. - :return: True if connected, else False. - """ - - try: - self.__client = redis.from_url( - self.__connection_string - ) - return True - - except Exception as exception: - self.__printer(exception) - return False - - async def disconnect(self) -> bool: - - """ - Close the connection to the Redis server. - :return: True if successful, else False. - """ - - if self.__client is not None: - try: await self.__client.close() - except Exception as exception: - self.__printer(exception) - return False - return True - return True - - async def ensure_connection(self) -> bool: - - """ - To ensure that we are connected. We keep pinging the Redis server every once in a while even when connected. - :return: True if connected, else False. - """ - - # If we are not connected, we try to establish a connection: - if self.__client is None: return await self.connect() - - # Else we check if we are connected. If not, we try to connect. - # But we check only once in a while. In the meantime, we assume that we are connected. - elif self.__requests_since_last_ping > self.__ping_counter: - try: - await self.__client.ping() - self.__requests_since_last_ping = 0 - return True - except Exception as exception: - self.__printer(exception) - return await self.connect() - else: - self.__requests_since_last_ping += 1 - return True - - async def list_keys( - self, - match: str = "*", - raise_exception: bool = False - ) -> List[str] | None: - - """ - To get a list of all the keys that match the pattern. - :param match: To match a glob-style pattern. THIS IS NOT FULL-FLEDGED REGEX. - :param raise_exception: If you want to raise an exception if the process fails. - :return: The list of keys if successful, else None. - """ - - # Standard connectivity check: - await self.ensure_connection() - - # Start with an empty list: - keys_list = [] - - try: - - # Start at the beginning, - # and break out of the loop if the pointer returns to zero: - pointer = 0 - while True: - pointer, keys = await self.__client.scan(pointer, match = match) - keys_list = keys_list + [k.decode("utf-8") for k in keys] - if pointer == 0: break - - # Done here: - return list(set(keys_list)) if keys_list else None - - # If an exception occurs in th eprocess: - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return None - - async def ttl( - self, - key: str | bytes, - raise_exception: bool = False - ) -> int | float | None: - - """ - To get the no. of seconds till the expiry of some key. - :param key: The key to check the expiry of. - :param raise_exception: - :return: -1 if the key is persistent (i.e., no expiry time set), -2 if the key does not exist, or the time left - in seconds if the key exists and is not persistent. If something goes wrong, you will get a null value. - """ - - # Standard connectivity check: - await self.ensure_connection() - - # Start by assuming failure: - ttl = None - - try: - - # Get the TTL of the key in ms, - # convert it to seconds and return the value: - ttl_ms = await self.__client.pttl(key) - if ttl_ms >= 0: ttl = ttl_ms / 1_000 - return ttl - - # If an exception occurs in th eprocess: - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return None - - async def set( - self, - key: str | bytes, - value: Any, - expiry: float = None, - raise_exception: bool = False - ) -> bool: - - """ - Saves some value to the cache. If an expiry is specified, the data will be deleted after that many seconds. - :param key: The key with which the data will be stored and retrieved. - :param value: The value to store. - :param expiry: The time in seconds after which the data will expire. Must be a positive number. - :param raise_exception: If you want to raise an exception if the process fails. - :return: True if cached, else False. - """ - - # Standard connectivity check: - await self.ensure_connection() - - try: - - # Here we actually try to set the data: - data = self.__serializer.serialize(value) - if expiry: response = await self.__client.setex(key, int(expiry), data) - else: response = await self.__client.set(key, data) - return response - - # If an exception occurs in th eprocess: - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return False - - async def get( - self, - key: str | bytes, - raise_exception: bool = False, - on_fail: Any = None - ) -> Any: - - """ - Retrieve the cached value. - :param key: The key with which the data was saved. - :param raise_exception: If you want to raise an exception if the process fails. - :param on_fail: What to return if the process fails due to an exception. - :return: The retrieved data or null if not found. - """ - - # Standard connectivity check: - await self.ensure_connection() - - try: - - # Here we try to fetch the data: - data = await self.__client.get(key) - data = self.__serializer.deserialize(data) - return data - - # If an exception occurs in th eprocess: - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return on_fail - - async def delete( - self, - key: str | bytes, - raise_exception: bool = False - ) -> bool: - - """ - Prematurely delete the value from the cache before it expires. - :param key: The key with which the data was saved. - :param raise_exception: If you want to raise an exception if the process fails. - :return: True if deleted, else False. - """ - - # Standard connectivity check: - await self.ensure_connection() - - try: - - # Try to manually delete the key before expiry: - response = await self.__client.delete(key) - return True if response else False - - # If an exception occurs in th eprocess: - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return False - - async def count( - self, - key: str | bytes, - value: int = 1, - expiry: float = None, - raise_exception: bool = False - ) -> int | None: - - """ - To use simple counters. If the counter (identified by the 'key') exists, it will be incremented, else the - counter will be created and the value will be incremented from 0. - :param key: The name of the counter. - :param value: The amount to increment the value by. Send negative values to count backwards. - :param expiry: The time (in seconds) in which the counter expires. Starts from the time the counter is created. - This value has to be an integer. If a float is passed, the value will be rounded off. - :param raise_exception: If you want to raise an exception if the process fails. - :return: The latest value of the counter. Will be null if something went wrong and the exception was suppressed. - """ - - # Standard connectivity check: - await self.ensure_connection() - - try: - - # check if the key already exists, - # regardless of that, increment the counter: - already_existed = await self.__client.exists(key) - new_value = await self.__client.incrby(key, value) - - # If the key didn't already exist, specify the expiry: - if expiry and not already_existed: await self.__client.expire(key, int(expiry)) - - # Done here: - return new_value - - # If an exception occurs in th eprocess: - except Exception as exception: - self.__printer(exception) - if raise_exception: raise - else: return None - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - from utils_v2.string import json - - async def main(): - - my_cache = AsyncRedisCache( - connection_string = str(input("Paste your conn. str.: ")), - ping_counter = 100, - debug = True - ) - print("Connecting.") - connected = await my_cache.connect() - print("Success:", connected) - - # Proceed only if we connected to the database successfully: - if connected: - - existing_keys = await my_cache.list_keys() - print(f"KEYS ({len(existing_keys)}):", json.to_string(existing_keys, default = str)) - - key = str(input("Paste a key to check its TTL: ")) - key_ttl = await my_cache.ttl(key = key) - print(f"KEY '{key}' has {key_ttl} seconds of TTL.") - - value = await my_cache.get(key = str(input("Paste a key to get: "))) - print("GET:", json.to_string(value, default = str) if isinstance(value, (dict, list)) else value) - print("TYP:", type(value), end = "\n\n") - - success = await my_cache.set( - key = "name", - value = {"first": "John", "last": "Doe"}, - expiry = 10 - ) - print("SET:", success, end = "\n\n") - - value = await my_cache.get(key = "name") - print("GET:", value) - print("TYP:", type(value), end = "\n\n") - - success = await my_cache.delete(key = "name") - print("DEL:", success, end = "\n\n") - - print("Starting count test.") - await my_cache.delete(key = "cnt") - for _ in range(5): - print("Step:", _) - await asyncio.sleep(1.0) - counter = await my_cache.count(key = "cnt", value = 1, expiry = 10) - print("COUNTER:", counter) - - asyncio.run(main()) diff --git a/utils_v2/database/__init__.py b/utils_v2/database/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/database/__pycache__/__init__.cpython-310.pyc b/utils_v2/database/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 4d0a7e640af4cb662464f9c1f8df028a7350cba9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmd1j<>g`k0#Dw6bP)X*L?8o3AjbiSi&=m~3PUi1CZpd6XTb<)Q)Zakgz5xWyNnQ^w$=HWJt+Nsk- zp4y@)x!?DnecrpEOxa4ph#+yWuXFb7Isg0r&wsj`Hq{IGIkxG+xv#xYD13t_=^qOx zcjMRpBNT37y5JhF**2yP&sZ?e7Tx0WhEWKQEgs8#Yub{(rRfs>mfGdT%5-J1I$f3f z<#uhcK3$jNN_%K=czSqo)AS}eueL`PH&1U4+Zml6m3FpFZ^7SMd+Xx1>1{^g-hx|q zhn^|8Lr8o%);%>(IX74JT@9=iIqo+;vC|cOk-nDr3^wns6 ztGn%)!t`#hboLr=_tORGxp}JK;&*(zbIK?b>UA4G2OpZc@5IRi`h*wWKfmnHJ8k}xErQQT;@mYEJ#69;PIW%?b1L@aHb?tfQG0*OHJiF<2dJ0`zYCBEO zo>kpN`^>zjJlkovZO32fH1V#^T=(!jw$tpj9&7bhP-ZD;4JVHrJ#zBMWP^Juh~21qHf7uUR?5nQoHN8KJHlyez$|aqsN-wA#`x@us5?jH|MD)Uz+}jLHbv5 z)hkRJ0Bf^m)XZA3X4Oiya;;J;yL;WLTYJWsE^1H%Knsuopar<5%kHSV1t3)Ms_wYE z&E5Wt@w72r^Xl$Z?v7^)I3B|BPIs3a599c1cefmGLXB(OYvp(Z$2YpyyKj-&n{jrN zyT^T-oQ>k_2KVjq+!h?a!yS|3t*!we-4~3=NXd-e3nhF{P-}OaPJ6!V_g?r! z3+LA2%Hf%*^Hq7yUbCCE)L8JC!*K||{xk}=uvTd362pRHbFGN7xMrcW)=DT#YX-{l znu)TqRz+Fu)z&J+)8}}tzE<{cS}QEn&kj9b0HzgyRrnn*PEKLk%1g?dZ9N{0v^vf9 zvg;k{c6#39z476o(r9W3C^p=gpxBu8gL;GC(damfUQlW*byY8@;-JsAp{mxRWA>9Q@*}vRtwf)9px9*SLxnHomu}JL3^@*hwd>@`~ z^%{*1=XM8*@}{zZe?=+fXvElItnSQ$(L_|Q2^tvx@YuvJ0p-OJ6qw+`StFX@bH?Pj zsjk8GpzL)xnCA?29Zu!zbTP)e!}_kCl)sKEFS6AUWA&Q8UZkJfuqSGquecFK_;z(I zFYIH%VNJbwQ#i@`&7b1U2^6c>_PsarSmwp-Xc@m>#;^Y@il=}FXTk5tJ1`u8|K)a|8IpUb6<;TAm2qD2--WV#w)%YG7`9rEo!@b zwubxl=ZSeky=JKw2q z!99}8tDAt7f>@ooiHQl!Y%m1yf3VwapF+DhX?3EL@e!GIwF~2+iY%^TL2y%7v)IaF zH;Q1$_taya0#wd+gW)-^*N8f&cJiTZEJ%#hb`+RUfuCD>p>HlL;m7<0?)kiDK3T8S zEz_{VfAtGyT_0CpDOW~~x-nWDHCA`@&2`vJW|kvBms#F}wmHiSm}SiEX3RH09y4Uz zN6H2=ETq_6{c1d>hsbMt^DWn(p|PYo+s}DySUl${ni|sb7fLzTWt?Q z8XMwIJa1Egh1dFKOr}T%MSK7`u>N?WpdL6EW7dyiL(xs#`w}OGGh40$iFWtRZ0feJtKR4#iQb4o2?-P4TO2XI~&SY8FvMKRhOplVPNM%3*|}V!Fn2MN%2(SekM4kEeVm1~N5B$>)UQ zNxaZQsXtxn@Z!LeEtmy5J^gH_JHZk2m!OghCFiJNL^YGwpKgP^*&JZ#0!GCawO5=%?q_h^+J(&Vw}bTn~{*cvFJ+XBCWWRQA6db(4euOW?uSbuHyL&-+; zS3-NzeZ!=a296g4i_a>~ggVTkPkI~ab<^|y5+0Fx9~oM`u5aG6PX+}=_{hvV;fz=# z^WMS1TwxtT_1VJng~Npp?)y=5-CBpjsj)I%jj?N(2E;wcBcnh~a`y zVLCJlk)1ic3HuNpoAD?HxFS8+RP1P#!9+%c&G#JDoX;?SEyKvXG}yj|H2o$rMv4+= zoQ}LVh3DxmqyRv-wsiV{{h*@&xAyzJl?nUs348Lyls$Fgp+ooCdl$X1xv019GWBg6 z(6p?4P=)b<27O9bY?}t7@29ymfTlkIF9*)}=y48R;$S3Q0wps1@k&r?^}I!x65=!giJ+I>`+Cqcvywm{f;cbm*&LB3?Q0AhQdNT5XxpZ3Hhf3-gYZ|8mW~YTXr(*WjI+>1ajnq7UjQ@j7kU-)nqC#U&0e?YTF;=B!?+UPso~BY zZpkh4&e=MVig(v&>;8uTN}qTBWS&REa(mzQW4v3spWZx#BbKVcuV=ek{&d<)|G z+=_jsyWDn(008$0PDM+C{siE{)rY1IkvIZbMC#UDzm=L12HEObhxS zJ_*nQYnDj!Pz}zs&_hrI*mOFu3gg>ASfx{sIql^^{REcP<;9qXL}!|=r?I=ku}LfY z-p$f#tCIkKMpuZNVvj(O!s-~jaFmjIK@lS}IRJL#vZwGXYT6t?;e(ZRqX)&9AoUaG zqcETg;6pkTY}yvTgu;l|VE@2A%!yk9i|E*gB|-hpcFXTIyNgSAjRU^KKD48-dV3#= za8q!fyLoa?`NM$rZD=|2o8esaDJc0F4#AA)dlGB^l9F<3;LPS<+4AL*`gQrvV(#$D*AKsjOTk?2ds+mcJ zVJ(c80thGzC$E%ZS2%S@8P-+tkiqcbRGs|(~C^X`Ga7fMgUfv}e8sA1! zGfni31`PJFLA%Qs#YQmPXgs>?wDldem(SnKVm}KpEK$1-hG8y&2~5*)^=@9OE-Bi; zdn@WaeD*FD?_+V0#ZeaIr2?etQ643zC`U9k3-xK^z`q+swP3LY*p4skOaZmS%-zOfd>8;^i`ml`YZ8+24KtGl-z5V0B^69I9yZeKBLP;_d zgX2r8LHH9J63v1OpcNq8=4XvhfilpwBp!fsa0x=@fQyHq25L?7abP)W&JW6`&+zX# zD5MQ|nP3iTG&IZzq_D!hm_f~JjMZ&PcVchI?UyC=;LBhUsG<6T{z7{3{T$S)EGcZgV8Ou!9<3wbpp>@N> z{6VZXw66MeC_9atnc5Ks#1fZ?EEO%X(7urtQ%L*9wU`nVp@0M>kuFozQNaC2@z@NY zMbY7#mP{u2Ggv zwO%(~)&^L5hJxYr(?JF7jTeI2kq9Ql5j9@XcwbLoSACS#H}^qMPzk>?s6}1(gIWwP z{h#sUXybm2nNL?1?7X8^(JWpM?aiu=ybSk}VHK-SnlGoFshQDimQgSIso@|d9zTPV z0pekjiqP32BZ$b8*G*NZ z_epaJnL=|ZwA9ECP=+;uWQ0fdUOHfW=$25V#wnk*7MI!{)uoF!(-qQzmJYfuoTOcN z(y0l~w&n)jczMz;da*#Pv~P-`2regwG|OLZ!u%*4fTtkhO_-X}Lk<3hS&n})bcfDe zp<301?#!AgT~A}nU&CYlctiAmmUu%lxGRhPdg?X3$)h%cxKj}kAhi)6aWI^&sGj9@ zMjnjUw8!`pI1VgAN>B->Tv}3}S$VCSSvE1CXy9^!X-iB;>v9)>A(u5154c) zqcEidJe!gZiq5++{xO3-)Lrh-R}4r9&C`)O7<$%VZ)rmF!TmW{I672*-~u4BXv7)7 zmxS7CJf+YdISP_{+RlS_gS8Gcq2HmaNAFWG5U5sY&t`X$elF7W>qB$!XT@9!lS`AI z<+%ebU!KT}uaysq#13ji+RzDGRAe0nhKKMBKQgRdv8dvMKt{688B)eG3b8?AMAHNy z6r^I9fKwSZV^o9L4h#{rBN@j@^%NlXTq(tkH%s4OA=P#&KZS;x11mwpvYyEl{*|O+ zF5>-dyyVkFJlY(9c-ySv^+l_k;jg19@j+V3U|AIvW5)UzPI9sAsx+3JEk0k!U>fZF z3-B4l_*Pmu0DP;2EVH~;5teDG{V~2(o~VTQh9hB_Md$PQj(BX3Q7(cjfUX&F{k&c& zJS}(6N~{2JB5F37u*hSTwIcF4a7$o{*ilmxe7Q^Ph|q|=k{oKF1xH0I2SAJnhc*!1 z1-v0Sinm{cO_=!E4x$EOJ!^ImPB)~lcoHm;@SJMGbCd^wOCVkS9iDE;WquNO{~3Wj z6ezc9fwI~!P^N+jCX!BV4E1yd^g}&-Vx`q>X{aB7_+kp;treIvVu&xr5P$PUA^z8L zAl|XtaC>2DVilBE(h5~3C`-ka+f#U8g?Io@aRv{xvXoH%dRo#t3Ka=bH;f1Hly()|LG;gx zc*SUdSip)UtF%o*D?f?&^je}-_ae^D-l*vaZAsYGbYd)#H?CqnSgm^9czL@%LHPb z5mjAP?~9SG{zRS60)cTPVpiGtWGh{Nb!(#Z6Eg_ z4Z^?f*-NeFX`*rmfe@ru@YYX4z=R+ru}Kb>GGz@0q0HEBEw;h{6vT*6L<(i}n(u)s zz>uSR7@Bl!1^*G|3?a7+YD#eFa+gvar5vbevzq>Mw4+hF6oP`4F)jCn@8ahL;wb!t z76%R`rW4DdI3GeXBEyLYv~VCIyyfGlkfJ(6DdCk=NBun(KhNTGEI!L3;o@g`nqx7c zUlJ6Jyx0al`V)8#>f3IsI9h}Utq2cV>YsJKT&cfgZO+i8?J3qCH`b)lB>LgE#x#j0 zngN<*u2)vy+DCUlb-4N>WbM_p>H=IYr!9XEjx06imewnvKow9G)YeB}{H2wnphdM< z<*NxTDy#Rzw5aw3Ry+wU!cjh{YfKckLDtQ)VJ+%O2N*V!Ms+QoMQT?x0urIa z*dV7(uk#A*kdVs^ zt6J{2il+6}q~{x>^cot^Md@9yjnYKsozPfQ2>jk$1itkm2yA6-qz`EX7NQox?`sR^ zS5R0hEpI{;maram4q%+IBmp&va>50S9?lI|8iD@Zhw1o$B<4n!$@bv^;>a#(Hga`yk39c)9{5yBu=jMD8!H zygMcLTWgWrKM|wqpxj?{{>z(@*Cs0A0sCRv5xy^NTt_@K^h`7N0DQ6YT}F9eIT~aJ zm0{?3TD1_HE7C+aOl=U0HuO7C%m^EcuO}QXl-)JxUlA9?nLX>lN@9^!ZQ+p2g}3rU^+!nTP%%y+FyKlO7E0|5!X=+98_ooPm z1TmErA;PH=n;}IA^^aL>EH^L$IG)^ol%}vBl(iu-Pn%c&91r{Gwqv)ITMr zq}l!U47(3!HAN2w?0WwKEo23X2o(CM!-fq1U!jT3z*Y6DI7lzhoyhCV#{TIiQGGyZ zFyS)To#o}=<5BDrBQlE0reguTn~_a;ULV0&XRW*sTs(@;NW9hWin;h;d`8LnA`C2l z70Aw;P|-drUg|h5P{(U%=}3%YoAj}(ZDT34=y$U9TfqJ$Kr@#k{%hPg2-x=-z71hl zVl{Rf!*Ebv)b5pZYGZuJi`O8055#Nq;X?)kE`h++?v-leE9;tq881JDNN)M6p!e1Zu zze|>R(IYyCP=rUAqk?PYC5ux}7I83LK&qmS*7T9>P9$e9>E_rteOZ~`hnDL7dI@B(fY$FGd|e;KWEX zV6;hFYSgmkg7G`j>ntMGBYeMZ=(W3rpxtnY(}CGxW0x&@ce)IRNM-=|o=!xlmrCoP z#9BH!cV@YLx^YGbfOe_Gfr;8H@=t&$7hzXit){0xB?1c1+R&Zy>uB){gFI_@e~e<< z?V0p)Lzd;|ihm4I%!cbSK#@z|k!^V(Off%Px1_S+y8U5_nFS#aMj6(CA?{<6y$<7p zY=z_wfG|=@7>hF~ zjzE(2xsIS(7>aX&|xbJLp@fpEviReA#@vlzXF6?u;ejR`qY2?~cyuFPXRG9ZP%P zHt&$XFPXQ-&wSgwJ!%(k8khU$&70+#oNYZXy=h2@E`XWdbqWNgI$#oRodAKgZ<1u(I`sjQ5$HPm+%4`_Jf)K# z=%fSN@P_U9y~-=$Elh+^N)jO;WkL2n6C#w55P@}XqSKoc0Fg`Wu))RXv|&g>aBp2~g@CLfVh+?$}uAff>Y0m&GGdUJlcbGqRp z`AoCQ7Q>%R$lh<_;(+XmMaHXlGr?=mTqq)S)lRI22diVa9g-#UdI?we^pLKKi=dxF zq8`NRGtBr7NW7JWDw2?6;WIO~A+)#@h55lYSVh8EK2by9aq>(#3P3<;v9(^+&%uUR zU-43&z@arA@K;gOu?$R4AlgLmaTM@ZaXtgG6w9JV9KQvIB0`CT{c(&KZWrdoLN-mE z%pNJGTn}O~<7%UHd~lpIjXmunKJq!?CMx@J)+mU`yoJWjbX6+puQS684-C7EGK1TT z9#c%U{KY}LiVv-+8M0ciSBmC*%|2Q3C%LL1BYWU|aQ!=woRRw`OizfO>TEhUizu%1 zXzgQvz>xXH$eqSBRE@`jJ~2WEmmv>uPk|qTl4ktr)uJ+N=!hiE(y6rcYBkCtvhq7( zEsb#wbN+>}#8xDq1E%Aw^z1GZ=0x?X=)CVGB)2A=p(x zX9UK_>*cZf)1?LE_C5KCeQN61q4&c!hV*&%)O|j8|me-r$AZbL{N<&BN$BvzaaxH8p3!vsDyB! zehZDMud(>gEPk5><(Tndt)bk{3kxhxv*229bvuiB7TZw-TXlCElGYSBhRrI1-GkQ} z%+bc&%+Io>EO8Gb#N_p)sOl>$euu?ZStJ6LtUk;UsDdHS@mCNdLV{BS?f36O#VCSf zS8<0?#RdV941g$(m#y99|C^kf#_;)awJ&rmmA5nE9I3Z#to{5kUOm7RnEPTWC`C)RkRFUIqr6Z-y?26@R9#7(<5r?P7+Chm`X7+` zHDMi=Tg|QiBYE|~FmxV``ih@2nheED!{%d#L8ntz=c+jm=P(QgLMQw}4BX!n$8fu6 zI&VDBaA6|}SAK*#8redq6-vfANr*<>!LetSXQ5Zo2Y}paq_I9XrXg*OIvcLb#k~Ov z6{6Pxd+*63hfW+neq{3Sk;9;JsGZONX^>CmSI_4ttOQ=cT9VQ<)js%F(;*e5`39x~ zWTO;wlsG|HL-Szig%5%e^B8hBzKyBeJ+uPd^bFQ^kP$$lmzTlb#P~c?D4A9LB?BG5 zJSp?*aA?a&Va*j}g=7g~$l5v7u+7E7L}r|0At_|DDVR(~bMk0lo|#eq2?PZhh~c(~ z;Z{>eA&k&QkjAd40{qoOR^Y>>hjsoI?`gr3iPZ1k0O+TnqJ1 z$hCyv=aK78LP(=`+?yiUJLxvrfedyLxgLIHN2zRBTdRNCccp6nXce`S){Oy@2sg$rx2I7b%N6jQlNN>3n} zk;vINl7%&v^Zzh!F+?2tf#)s(@Ie&Royo(XA+ZTJq?L~me|DfE1fDH9=|yq`nN;nJ zXNE?O7%MtB$-#<}UTL0S1q6^{ByOa9FnXnVl<_ag>65H9AI#}vIXlf1UL1wv1T(F@fDcRrg!9eC`qv^=|f zB!{JB>Pv*d#`dAVk6z?pP&Hgu9xXEmcZipnTRQ&REk!&BR-p28$l_1Fa@L}=1lcn! zlvt`BJ5Ca-Pi5u7l+~viTYZkiLVTXpr<4}r6Rd*-d`U~r6XfH9$Po8v%1N1KfSloe z4aCA2lo6%#S}EGy>Gs?9=csJCfG{~M%Md+{_F z{nh;o(XCf@S@jEjQ5kPdR;NTFabKHZW{zb99O%94f@*Y>F>z2Th$Vwx$H@R)qlx1^ zNbOnSJ|i$lAolevEZl2m3v>z#<*YlIlZY)tX)5eR)+Ff`4BrS#OU<}Rf zBiosnA{pL6>0yAFqzO-wd4n3WzLU@_7&r%NCu1IwF0ajv(Ma{up%=)`-gH!6W-~ow z7q9KOFvX~i7RbM8H1(L#Odb^*=lSvtGXCeS8vySKnhQsdm#Q2mY6`~x0*`)?MLvrE zA#Z(yMS|F(|H`tokMTwxieIZ&7sh_42J{dH{0hRqM0}q>)hPPPLPQ~=GvbBn!>?>F zVcE)`StFTPtcgLazu0Rw#`7=Y-2-^eK#to6@Ep0oLu@Yg;W>5{N>PA{davL)<(ml4 zA>Tw^F5-C(Zcpdp_KAz&cExeclqRtuZYNf;3Hw3C2o1e)CG}%k#~5QZw!!F)g{inT z%1RBS)nks(7}|JI=QTju3Z$HZ4+!22N5Kt-UA6~E!WDu-BP14{=@s{v$yyfinf!O6 z`2S#$hzwz>i-d|uJjEqa5wQVWoQhnZ2cU`Ea8oIvBUjPDHb_URd35BK?~RTmFUr^w zsu+t{VqmPv043py07-7+7PYqH!tp^m(!x#?kQK^tk{ekqBmY)eGysTp-Ux&Rt zrmNuMf@Xqnf`3d>F{Se$h(H&8!^ZfNn@NV*wI!2GWQ$`wiN+sbPwYZO8au2ti*QC(mobw}ge}SH zvRh+*I*2W0^~V_6$^KENF(w@{rz6JtDBMNnLx|hQ&`7Ry^p@PwO6bieI3s&d8v;^h zMuuM@LCXk5@BAL;B5C~+{RP;SQTq$HjX~O1fc;#o_3zJLP;z={Y38sj&)1ewDkjh_ zVpW6N{<_$kkdH8ag7-!0KyoE`GMP48Tz3+eFTpvo(?Gl`!H@ihFwaPmbk9$AL7`fL zO`^N;rq0bac5;mOWRW-ngrA?8=V~VUzCvFZT5=GVLavUq0!hgEc<5_fhP&csJQPRz zq-Ch%U4(*w?jaHhMpOjg<9p(b_~Kjz149tgio{s!A@D$JONskc#&1yPk`W$|&)$sc z6860N9U>@+=v1`wL_$8wdTmEaBMQA3@$)(kc0)hl7Ttg-JM=HM+%FKL!zEOL(L3M? z?8D^L#*&dyW1yV@+@-(o%lP&0Ly;qiSkOvntzh^Cqw=Ekde}Kt?SZ|*gv}N@OKfqq z=+PT5JFq$=e!Qs|8fh|!*ZBy(T{JyHAGaj`zF4eMTK4mpQ24)Z z!yg^K{C{{M-=8LsNWWI!{usgL5P~Ar`*#V4p-&Cl;y`E)!-s}1?5bMD)f~fGUke!s zq%4dUvC$Wr{Sb<$jAsknBT4JM;1J**&jJEN_)GcI#8+Ub3E6=S^6@k99>|6{WyY7T zl|L1>v0mvRn=>{tjUe;)@*$J_Ee6ea@9l&nC-C<08?+YouRgFt>F+Er&LD0Gt3JqJ z;PeoN;@W$$gEb>eS3T7or(rJIg)7p)0tg-rQB!fh9eeJGI$ zpN8B}An~IWODL;sdQ)2$07Mj8fkaJjdxPz-1epvaC}irrK?Pm*p|-}EF&;gF;u^Fn zJK*dttllvwT!rY6h*NpH;Y94@^Jp)qIQ~kfiA^KRSaE@X-Js|%FJ^>!vLMY;C^rTr z8QP%KbNti3I?J2yU?H7lKZA(DB)zzhVlZ%)M~Dr9v9eY6Ee3LL%wUpsGKrmPcvr0I zeiA1G48}lWr?-gtyP#xYqZSgGK^m)|;xtZVLO^QGhIF3SIGd{o?uQ|`_wRI7R_~4l zckXnhbGSx3U0KfOU`C9Ep_7t(i#v%ja{E{(+B_68T`U9b~AF2?$B^S}7D7(=Xsk>=tW`du8|ygxJULr4=D}WgEvp0=TpQd?h?RV`)qxr1kK~`I|I6 zJ&Zfok%5{j#GBD+?^uY(`|J=?_Q@VhV;NZXWuuw_?iK?ohhKBLMBmrFkL@9Qd>2}PZQ>fRnN&=pX;d#*JIj9-$&@&MxzB}@!-59hkg*n3 z@TQmr{S;1eSWszo3=E$hSjjOcEGTC`w$OjOKV(MKhmyF*aE*Ozd9_v^085IZyrO+w zEp;$vNqJFTMsY)ybONh?!cFb_c~T68I#~j_QWV>Xyx?=KW*&DMV=#I|U=vU~0rD)= znYV?{FlwxWl|u}j7G^cT1r%gB(tF-Tt~ptHS9Dt0~UF4R$$nG@(ofu^}m6q$m=0=O$c3@nr#=#74;;dXV>Ok&56wpW8;L5 z30X^I=WpY!xkPLmNlf1hKSVNi3u;6@=qNOMg#;`zq0r}7QfHp4_N#Wi~q^u1s4B{ z1r;0hO%~r`@f{W~v-l4zM0=3p37%4gQ2!Cds~}fCo#C=%xf0QB>pN!Ad3Uogv9 zynL^|j-!L{3tTYw@EnVbWpQ(O?>pvg`p7zOn&zvzKAz3Lisj4J%cfa>)!ZK+ajEhJ zE?m~jruA{y=1Xy#CA{};eRb>0@(tY3e$i=l8jW%67>;NaY*CLz3r&1g`~!=D=!##) zU-5K2W%RKAXu-s9k=wt65m@V3gnHHz(?#LFg5Ing(!Rh5`(n zE5FsND1vK`pP0P&MC0(mse_F}CnhJ49GW_IVzO~+>LeBy2D?&s`N%y7PaSDY9z1?T zk(Z+DrNxzoJCm9!&Jvcv;nO}tSRKWw`6PUth9xGO@`bHcW#Y@muMH{Ya!*z&113XdUBlHwvpz-7}1oZdC{$+_q%Y7{*Z*<;bmt dkBm+iJ`(*Ky(>B@e5Cr;VY6zE-e`U8{{s%Mtu_Dv diff --git a/utils_v2/database/__pycache__/async_mysql_v2.cpython-310.pyc b/utils_v2/database/__pycache__/async_mysql_v2.cpython-310.pyc deleted file mode 100644 index 91e17146e137288a26302ba549e4c4ff7f8bb79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9102 zcmd^F&vP8db)H|lJG)pc01~1|nPFNiNyOR|Kq`_e1=5lr5Hu-KOPYYJ5H>R&%=7{S z?9MEEW(n?QRsv04ox~Scg?6fdBo`f0xg|L#|HYhAm8!UON;!w5B2#p}*Rwxn0a{jW zsmh|Jr)Q>LcTd0fzW2Qz1e22`1;4eoE^YqZcNFDc=_32naq%vWa36)MtSheSY7KQ= z|ri|a+4bB$7SVtt}7Q(iCQUcNEe ztgKi1_omjTaIesqZqBUFsLFR0*K~`I6}R|ETR+B+yQLjX)QXC$t;(Z1(fyB7iQ%{O z(b~0}w-?h3y79qQJKVAx>=s)M0^j9g+e;r_Sz24kw7V)i*Y2EWe{dn%VoUAK`Sa|J z3vaxcw!Qh@`zy<9*T0_?SPR$&XZA*evnXJ;*Fud0c$9R@zm)7KroEV$jg!Z+HRn_SSd8(tVWB#`|Taq%vW@Cgd8tgBG8Mv8i@ ztV6}FfwSS}+&s=Xx8RyM=Xt>`x~0d;BNa-WaLc$?bSK>k&ZXj1ak@BDJm&tsd)%FU ztgcTKU%(Y}Pw=w)BA;|m^2vJMJ>|aiIJaKOJo^Tp;?t*;VH?vu?fxFx%(!P(mFmk$ zX({aZ&W9Z=u%ltJgP(y49XD}=e~2R1V#QKo9i{53D78qBao*M*(G$a^G8g6P?cCf? z=&C?wRL$FYbS#ZX8WM9FHZ%&|?gnCq?Rv0_=csp{-4x!Y=i7}&hc&tFMC z>p4+%o~>vpu@1;h(efE$nJB|VPT6qUfpx#eA!ANI7^vV{$U4}yjj zdR@LKC+oMH8(grU&YZyaxf6MTFBi9Idwzt2k!O(5k)CX^87{IVzr#>#)5N4;3)-1y zHB1aI<{pvS*-hncNhM-^M&nYo?rpY(O|wY-bBhZ;>f>|5##+~u_QqniR@IVxOYpk) zAgOr1(`dVVIq)O?AgY?lj5RV&%c5bE<72ndxg;-*-E4ZkHC&`bZ`uzIH?SXM8jKG@ zf`aTmnH}r2C9s-scq1`F-l!+V(Flf|SU#Q0XNq_M(qF7CYz0le;KC3aL5qupTODW1 z7R_5C*oKnA1-s>0_U5ML298|%g?8jMLhJq;3j=^#u*oy6W+%MY!2S7FCowI{^S#Kj z{upC~Wfb|DyqZ@lIF9MvN=VPRBBiklxZ&;Gk+v&iOM{%;1)+r^N|e zCI!oKdBd_EkPIP&p>~gr4J03rjYG{y)Bj8|F^Y$3_hmqZvJdDuAkaW`xvWImw(jO| zW#9mG>=zCcSN{bdW?T6i^-tC7ifdd`03_zesI3BzqGIPes?t+cr8^ZX`=uDYA+kZ9 z+T1~{r+%VR+qAZ;?gD_i{?Lh5LPQVv{1%)dW4Hty@KZZN;E~Sq9EWn?jnbw^=DY~7 zX$yZ5-r{GhJTV74Of+|+swV~5B)Kdq_5)cl8bQ!X*S$I+Ca^?_-U?cYX?uaxcruaB zM_Q^NRf`I>DoCsFf~2y^BMau`M;7%Zrs!#L<$=RnOT(CbS}By&S=HRro{ed~FFK}qvM$oT)cjdg9;Vt>+lnBK zsRs(Qs$PQ`x+=7UqpEfPcBr2Qp`O23k~TP^Op zNv_@q>hzaa#?K#gdr2`eTKzuYfD|a&W*2c_E;yk9aiX)swu?ZNyn}_Lv z$(~Yvs@)@IrwVd+xh{y~+WdvYaCzt)UZ~P#B3Vw*Y`y&t)E{*|t90iw>r>~Evt<$8 zx!efg#^Kwj41}tM#FP#2JeiOqcqztx3q4^>P`5v%qm^2ug~wqs6@i##?j-s2X;N^4M!V^U;`PBBr*A1kWN|qC&*=SLLZR&$ zhGrN#MP{Qk{a>%BCAETU?N{B|=e@T>jz0M1Q5lBMzsCiEXx|njbV}<`w$**@KzXwd zs824zMvQ$ubLTW{BexIB0T5^d*p;@CJD}i-zIr-Bt7;&$KGFv*{E3VGKEt z4hKYG)J3hD7w4e!G@uu3N2U#85w{YPA{^yA;vHO~ArZEuGR%PFdStKZ1;iz4R2s!1 z+1Ftwtx(t2u%~~5Oh}cwF{#LWN)A!0%t) z`Q?+ppx>|Fx#|$w4SqyVi1tY2iy-k(jiinD3b1Z$YV?Yc8tadMad+S9mAYk+LX9lh z)qc{qez!)1OAR*sY6@M}^fRET* z8CZM_%$xxdxO!jamTUOfTuJ8_7fvdk;^u#0^vZEw{3tHR#X8V1 zF5@s=9l16gg;SZUePsA<@j!D+L&;&wee;0A`ScI9-ej*5PsZi_;(>Bs6@M02;<7t| zekLy~_dbo(bZ&A*j`ybGDa_IkpT%Z8g*LLKTgKhVlgiJPzXZL$_p{NA@w{?b!F>NQ zJKyS*{RF@>@=(}(lVd~0C95Z`A`Ww(a#QAW*zMr1ebmPe=iX%c(tpYDZ8pljQ;sn* zc$o`>g7qm#ntewU)YAh`;pg7i87keE6WWCWFfSd(Ion7N8l_i z;&`@qH22@Iot>awN7Mr@xY!0DxT8Kv#k;mgNGVw~I5Vk&G(bUg&@J;)sFl+MJ;yYO zM$3`G5`A{@$dV6+Y+^UXYc)JB(oyTSgN>XNqbZa_cOlyX1#Gs#05P3r;Cl6roPwMo z@=ffVfOtyVq{+$|2Cz6R#*uMTNVbM4&?5VI3pUQhd0H!Mz?_%%y&JR}E|dF17&8@; zV-5xT?3i9XL~;+RfQ8u%Fxy=b_?wx5Q|bQe$=xKP$|HwBwn+;*>Uj=*+TjjGhCpPj zl~RrOfRbXF3c}Uysap+Bn@!MLgq35qi{z5c)mEzAlh1#&QpL7K9`rYAhsZ#&ooa7_ z2lrJE{)8P>ah(QuA4Q@CJDWJmpSXcjqKQykMMZpoqFPD}QbUpxwvRo~6?*Ur6=zW- zxv;@`E72R=PjsZHNshR4m>4^}6IQ3wEr#JMB@U$)ukx zlyTEm@V}w=kXA<9GhZ}x1AITPYWSOecE&)Otd!Mh@V&CGX%(C`HUG4nH^Bdn$yWKN zC(SZsw7qHltSrmuqx;%#4X9&-uO+#AZDh7d9*nx_MdA)7;?QQ!;78PPNFQ&=&^k^Z z5ft$?p+~_n-~A&5)^Q^FUat@r#)#xAJu^0mNDe|Ks3xTt=I}ZfYvK~5($qqd)T4AU zLo7eYlEtrV`J?fc{+kH+g>AF*5Fx*akYB+}ir9QccvTVPd-;C&FMd+=&)^Ml-UY#p zN}VTT5(w_kk)Sn^5+Dq^_$wj?alQ^ROEn7fRm0xKk`6=W?KZYs33o{w6ayESR1aY? zcC|C0km9<0m?A^kZeb`%u+#RBNTh21TBwya?PCjfu%#Fr?eDPve65~Sp+l(E-#q~C z4|Z8HlTRfU*$Vdek*RMJ`zFv!U6i0Vb43d`hKQq%YF|uZ9ofoY2kVQeo3g{<4eXx{ z`LcKywx4q40)Id&z$H}{F5PD+l9JqeUJ)V?a*s@6SGAM^lS9p9Tk@)85~+P?+4VZM zY`H6bK=%wlN=sa!hQ!Gw)EowniT>CY41-dj@J+M?lb$B9FjP$=K0S>;0K(okznuGx zu{T{H&@lHZdV1ELRdVL|CPJoDiOWt7y$*iFrH4*md%n|4hlha|x_6E^{jzlNZ1(tS zuNW7{vq$8U0&Z`Jzb2=T3)1b${ZqG3w8L%>fA0*uH|#q;ZC@UC{bi)F z9=?!D6R!u2MzBlNfj_Y6d*$K~OTPEf%I!Og?Cka0>dNgkcD=TCleO?wByjnMb_i2u zbN$Qn%<&?8RHdNKtL*zrH$GZfWpl5F=UIAGFP$BBix09(i|hx(Ylh$4xr-MsT)1%Y z++Qu)~ZIzZNE#?xrX9uRa?7SJw_kfXnV=Bl9FX12WdB`Ubd`z zZM%^^5igR^DJov0g5pq8Ca3hAG>;avXP>T?B+47qLWc<^#s+ {message}" - return message - - -# --------------------------------------------------------------------------------------------------------------------- - - -class MongoInsertException(Exception): - - def __init__(self, hint = None, origin = None): - self.__hint = hint - self.__origin = origin - - def __str__(self): - message = "mongo insert operation failed" - if self.__hint is not None: message = f"{message} ({self.__hint})" - if self.__origin is not None: message = f"{self.__origin} --> {message}" - return message - - -# --------------------------------------------------------------------------------------------------------------------- - - -class MongoUpdateException(Exception): - - def __init__(self, hint = None, origin = None): - self.__hint = hint - self.__origin = origin - - def __str__(self): - message = "mongo update operation failed" - if self.__hint is not None: message = f"{message} ({self.__hint})" - if self.__origin is not None: message = f"{self.__origin} --> {message}" - return message - - -# --------------------------------------------------------------------------------------------------------------------- - - -class MongoReplaceException(Exception): - - def __init__(self, hint = None, origin = None): - self.__hint = hint - self.__origin = origin - - def __str__(self): - message = "mongo replace operation failed" - if self.__hint is not None: message = f"{message} ({self.__hint})" - if self.__origin is not None: message = f"{self.__origin} --> {message}" - return message - - -# --------------------------------------------------------------------------------------------------------------------- - - -class MongoDeleteException(Exception): - - def __init__(self, hint = None, origin = None): - self.__hint = hint - self.__origin = origin - - def __str__(self): - message = "mongo delete operation failed" - if self.__hint is not None: message = f"{message} ({self.__hint})" - if self.__origin is not None: message = f"{self.__origin} --> {message}" - return message - - -# --------------------------------------------------------------------------------------------------------------------- - - -class MongoException(Exception): - - def __init__(self, hint = None, origin = None): - self.__hint = hint - self.__origin = origin - - def __str__(self): - message = "mongo operation failed" - if self.__hint is not None: message = f"{message} ({self.__hint})" - if self.__origin is not None: message = f"{self.__origin} --> {message}" - return message - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncMongo: - - __db = None - __db_name = None - __client = None - - def __init__( - self, - database_name = "myDb", - max_connections = 5, - debug = True, - debug_only_errors = True, - host = "localhost", - port = 27017, - connection_string = None - ): - - # Basic config: - self.__max_connections = max_connections - self.__db_name = database_name - self.__host = host, - self.__port = port - self.__connection_string = connection_string - - # For debugging: - self.__debug_only_errors = debug_only_errors - self.__printer = IceCreamDebugger(prefix = f"Mongo ({self.__db_name}) | ", includeContext = True) - if not debug: self.__printer.disable() - - # Rate/access control: - self.__exclusive_semaphore = asyncio.Semaphore(1) - - def enable_debug(self): - self.__printer.enable() - - def disable_debug(self): - self.__printer.disable() - - @staticmethod - def generate_id(): - - """ - Just generates an '_id' in MongoDB style. - :return: The '_id' in MongoDB style. - """ - - return str(ObjectId()) - - async def connect(self): - try: - if self.__connection_string is None: - self.__client = AsyncIOMotorClient( - self.__host, - self.__port, - maxPoolSize = self.__max_connections, - minPoolSize = self.__max_connections - ) - else: - self.__client = AsyncIOMotorClient( - self.__connection_string, - maxPoolSize = self.__max_connections, - minPoolSize = self.__max_connections - ) - self.__db = self.__client.get_database(self.__db_name) - if not self.__debug_only_errors: - server_info = await self.__client.server_info() - self.__printer(server_info) - except Exception as exception: self.__printer(exception) - - async def ensure_connection(self): - if self.__db is None: - async with self.__exclusive_semaphore: - await self.connect() - - @property - async def client(self): - await self.ensure_connection() - return self.__client - - @staticmethod - def dict_to_dot_notation(input_dict, parent_key = "", separator = "."): - items = [] - for k, v in input_dict.items(): - new_key = f"{parent_key}{separator}{k}" if parent_key else k - if isinstance(v, dict) and v: - items.extend(AsyncMongo.dict_to_dot_notation(v, new_key, separator = separator).items()) - else: - items.append((new_key, v)) - return dict(items) - - @staticmethod - def normalize_date_time(document): - - """ - MongoDB doesn't support timezones. A good strategy would be to convert everything to UTC format and store it. - This method does exactly that. Any datetime object is converted to UTC timezone. If the datetime object was - timezone naive, UTC timezone will be applied to it without changing the time value. - :param document: The document that you want to normalize the date-time in. - :return: The document with normalized datetime. - """ - - if isinstance(document, datetime.datetime): - utc_tz = pytz.timezone("UTC") - if document.tzinfo is None: document = utc_tz.localize(document) - else: document = document.astimezone(utc_tz) - - if type(document) is list: - document = [AsyncMongo.normalize_date_time(item) for item in document] - - if type(document) is dict: - document = { - AsyncMongo.normalize_date_time(k): AsyncMongo.normalize_date_time(v) - for k, v in document.items() - } - - return document - - @staticmethod - def __from_json_string(json_data): - return loads(json_data) - - @staticmethod - def __to_json_string(python_data, indent = 4, default = None): - return dumps(python_data, indent = indent, default = default) - - async def list_indexes( - self, - collection, - session = None, - raise_exception = False - ): - - """ - Lists out the indexes of a collection. - :param collection: The collection whose indexes you want to list out, - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The list of indexes or None if the action fails. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - indexes = None - - # Try to list the indexes: - try: - responses = await self.__db[collection].list_indexes(session = session).to_list(None) - indexes = [{key: value for key, value in response.items()} for response in responses] - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not indexes: raise MongoException(hint = "list indexes") - return indexes - - async def create_index( - self, - collection, - keys, - options = None, - session = None, - raise_exception = False - ): - - """ - Creates an index on a collection. - :param collection: The collection to create the index on. - :param keys: The keys (and sorting) to implement the index on. - :param options: Additional config. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the execution. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to make the insertion: - try: - options = options or {} - keys = [(k, v) for k, v in keys.items()] - response = await self.__db[collection].create_index(keys, session = session, **options) - if response: success = True - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not success: raise MongoException(hint = "create index") - return success - - async def insert_one( - self, - collection, - document, - session = None, - raise_exception = False - ): - - """ - Insert data into a collection. - :param collection: The collection you want to feed the data into. - :param document: The data to be stored. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The id of the inserted data, or null if the action fails. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - inserted_id = None - - # Try to make the insertion: - try: - response = await self.__db[collection].insert_one(document.copy(), session = session) - inserted_id = response.inserted_id - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not inserted_id: raise MongoInsertException(hint = f"{collection}") - return inserted_id - - async def insert_many( - self, - collection, - documents, - session = None, - raise_exception = False - ): - - """ - Insert a lot of data into a collection. - :param collection: The collection you want to feed the data into. - :param documents: The data to be stored. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The id of the inserted data, or null if the action fails. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - inserted_ids = [] - - # Try to make the insertion: - try: - response = await self.__db[collection].insert_many(documents, session = session) - inserted_ids = response.inserted_ids - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not inserted_ids: raise MongoInsertException(hint = f"{collection}") - return inserted_ids - - async def update_one( - self, - collection, - filter_json = None, - update_json = None, - upsert = False, - session = None, - raise_exception = False - ): - - """ - Update one document. - :param collection: The collection you want to update. - :param filter_json: The selection criteria to locate the document to update. - :param update_json: The values you want to update. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to make the insertion: - try: - response = await self.__db[collection].update_one( - filter_json, - update_json, - upsert = upsert, - session = session - ) - success = False if response.modified_count == 0 else True - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not success: raise MongoUpdateException(hint = f"{collection}") - return success - - async def update_many( - self, - collection, - filter_json = None, - update_json = None, - upsert = False, - session = None, - raise_exception = False - ): - - """ - Update many documents. - :param collection: The collection you want to update. - :param filter_json: The selection criteria to locate the document to update. - :param update_json: The values you want to update. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - update_count = 0 - - # Try to make the insertion: - try: - response = await self.__db[collection].update_many( - filter_json, - update_json, - upsert = upsert, - session = session - ) - update_count = response.modified_count - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not update_count: raise MongoUpdateException(hint = f"{collection}") - return update_count - - async def count( - self, - collection, - filter_json = None - ): - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # try to query the data: - try: - if filter_json is None: filter_json = {} - count = await self.__db[collection].count_documents(filter_json) - except Exception as exception: self.__printer(exception) - - # Done here: - return count - - async def bulk_write( - self, - collection, - requests, - session = None, - raise_exception = False - ): - - """ - To perform various individual operations in one go. You will have to import individual actions like "UpdateOne" - and "InsertMany" from PyMongo and pass them as an array of requests (operations) to this method. - :param collection: The collection you want to run the requests on. - :param requests: The array of requests (operations) to be performed. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # try to query the data: - try: - response = await self.__db[collection].bulk_write(requests, session = session) - count = response.modified_count + response.inserted_count + response.upserted_count + response.deleted_count - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not count: raise MongoException(hint = "bulk write") - return count - - async def find_many( - self, - collection, - filter_json, - projections = None, - skip = 0, - limit = None, - sort = None, - session = None, - as_json_string = False, - indent = 4, - raise_exception = False - ): - - """ - Finds one or more records that match the given conditions. - :param collection: The name of the collection to perform the search in. - :param filter_json: The filter criteria. - :param projections: What parts of the matching data you want to fetch. - :param skip: The no. of records to skip before picking next ones. Needed for pagination. - :param limit: The max. no. of records you want to fetch. - :param sort: The sorting rules to apply. - :param session: The session if you need to do this in a transaction. - :param as_json_string: Whether you want it as a JSON string or a Python dict/list. - :param indent: The indentation to use if you want it as a JSON string. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The array of matching records or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # Assume defaults: - if sort is None: sort = {"_id": -1} - if limit is None: limit = 10 - - # try to query the data: - try: - results = await self.__db[collection].find( - filter_json, - projections, - session = session - ).sort(sort).skip(skip).limit(limit).to_list(None) - if as_json_string: results = self.__to_json_string(results, indent = indent, default = str) - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not results: raise MongoFindException(hint = f"{collection}") - return results - - async def find_one( - self, - collection, - filter_json, - projections = None, - session = None, - as_json_string = False, - indent = 4, - raise_exception = False - ): - - """ - Finds one record that matches the given conditions. - :param collection: The name of the collection to perform the search in. - :param filter_json: The filter criteria. - :param projections: What parts of the matching data you want to fetch. - :param session: The session if you need to do this in a transaction. - :param as_json_string: Whether you want it as a JSON string or a Python dict/list. - :param indent: The indentation to use if you want it as a JSON string. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The array of matching records or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # try to query the data: - try: - results = await self.__db[collection].find_one(filter_json, projections, session = session) - if as_json_string: results = self.__to_json_string(results, indent = indent, default = str) - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not results: raise MongoFindException(hint = f"{collection}") - return results - - async def replace_one( - self, - collection, - filter_json, - replacement_json, - upsert = False, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param collection: The collection from which you want to delete many records. - :param filter_json: The filter criteria. - :param replacement_json: The data to put in place of the existing document. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # try to query the data: - try: - result = await self.__db[collection].replace_one( - filter_json, - replacement_json, - upsert = upsert, - session = session - ) - if result.modified_count or result.upserted_id: success = True - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not success: raise MongoReplaceException(hint = f"{collection}") - return success - - async def delete_one( - self, - collection, - filter_json, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param collection: The collection from which you want to delete many records. - :param filter_json: The filter criteria. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # try to query the data: - try: - result = await self.__db[collection].delete_one(filter_json, session = session) - count = result.deleted_count - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not count: raise MongoDeleteException(hint = f"{collection}") - return count - - async def delete_many( - self, - collection, - filter_json, - session = None, - raise_exception = False - ): - - """ - To delete many documents from a collection. - WARNING: sending {} in the filter would mean deleting ALL the documents. - :param collection: The collection from which you want to delete many records. - :param filter_json: The filter criteria. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # try to query the data: - try: - result = await self.__db[collection].delete_many(filter_json, session = session) - count = result.deleted_count - except Exception as exception: - self.__printer(exception) - - # Check results and return: - if raise_exception and not count: raise MongoDeleteException(hint = f"{collection}") - return count - - async def aggregate( - self, - collection, - pipeline, - limit = None, - raise_exception = False - ): - - """ - Perform an advance query on the data. - :param collection: The collection to perform the query on. - :param pipeline: The pipeline of actions to take. Must be a list. - :param limit: The max. no. of records to retrieve. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The array of matching records or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # try to perform the aggregation action: - try: results = await self.__db[collection].aggregate(pipeline).to_list(limit) - except Exception as exception: self.__printer(exception) - - # Check results and return: - if raise_exception and not results: raise MongoException(hint = "aggregation") - return results - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/database/async_mongo_storage.py b/utils_v2/database/async_mongo_storage.py deleted file mode 100644 index 94df2d8..0000000 --- a/utils_v2/database/async_mongo_storage.py +++ /dev/null @@ -1,358 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 28th May, 2024 - - OBJECTIVE: - - To have one central place from where all async database connectivity happens. - - REFERENCES: - - 01. https://motor.readthedocs.io/en/stable/ - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -# --- -import sys -sys.path.append(".") -sys.path.append("..") - -# For system-level activity: -import io - -# For async behaviour: -import asyncio - -# MongoDB for File Storage: -from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorGridFSBucket -from bson.objectid import ObjectId - -# For debugging: -from icecream import IceCreamDebugger - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncMongoStorage: - - __db = None - __db_name = None - __client = None - __store = None - - def __init__( - self, - connection_string = None, - max_connections = 5, - host_name = "localhost", - port = 27017, - database_name = "fileStore", - debug = True, - debug_prefix = "GridFS (M) | ", - debug_only_errors = True - ): - - # Database Initialization: - self.__host_name = host_name - self.__port = port - self.__db_name = database_name - self.__connection_string = connection_string - self.__max_connections = max_connections - - # Debugging: - self.__debug_only_errors = debug_only_errors - self.__printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self.__printer.disable() - - @staticmethod - def generate_id(): - - """ - Just generates an '_id' in MongoDB style. - :return: The '_id' in MongoDB style. - """ - - return str(ObjectId()) - - async def connect(self): - - """ - Initialize the database connection. - :return: Nothing. - """ - - if self.__connection_string is None: - self.__client = AsyncIOMotorClient( - self.__host_name, - self.__port, - maxPoolSize = self.__max_connections, - minPoolSize = self.__max_connections - ) - else: - self.__client = AsyncIOMotorClient( - self.__connection_string, - maxPoolSize = self.__max_connections, - minPoolSize = self.__max_connections - ) - self.__db = self.__client.get_database(self.__db_name) - self.__store = AsyncIOMotorGridFSBucket(self.__db) - - @property - def fs(self): - - """ - To access the features that have not been wrapped in this reportlab directly. - This could include things like streaming files chunk-by-chunk. - :return: The file-store instance. - """ - - return self.__store - - async def write_from_memory(self, file_name, file_data, metadata_json = None): - - """ - Save a file (from RAM) to Mongo. Suitable for smaller files (a few MBs max.). - :param file_name: The name of the file. - :param file_data: The data of the file (held in RAM). - :param metadata_json: A JSON of metadata information that can later be used to search files (RECOMMENDED). - :return: The file's id as a string (if it gets saved) or None. - """ - - if self.__store is None: await self.connect() - - file_data.seek(0) - file_size = file_data.__sizeof__() - - file_id = None - try: file_id = await self.__store.upload_from_stream(file_name, file_data, metadata = metadata_json) - except Exception as exception: self.__printer(exception, file_name, file_size, file_id) - if not self.__debug_only_errors: self.__printer(file_name, file_size, file_id) - return str(file_id) - - async def read_to_memory(self, file_identifier, by_id = True): - - """ - To retrieve a file (in RAM) based on the provided identifier. - Suitable for smaller files (a few MBs max.). - :param file_identifier: Either the name or the "_id" of the file. - :param by_id: Set to True if you are fetching by the "_id" of the file. - :return: Either the file (in RAM) or None. - """ - - if self.__store is None: await self.connect() - - file_data = None - - try: - if by_id: grid_out = await self.__store.open_download_stream(ObjectId(file_identifier)) - else: grid_out = await self.__store.open_download_stream_by_name(file_identifier) - file_data = io.BytesIO(await grid_out.read()) - file_data.seek(0) - - except Exception as exception: - file_data = None - self.__printer(exception, file_identifier, by_id) - - if not self.__debug_only_errors: self.__printer(file_identifier, by_id) - return file_data - - async def delete_file_by_id(self, file_id): - - """ - Tries to delete one file by the id. - :param file_id: The id of the file in the database. - :return: True or False based on the success of the operation. - """ - - if self.__store is None: await self.connect() - - deleted = False - - try: - response = await self.__store.delete(file_id = ObjectId(file_id)) - deleted = True - except Exception as exception: - self.__printer(exception, file_id, deleted) - - return deleted - - def __format_metadata_json(self, metadata_json): - - """ - NOTE: ONLY USE WHEN SEARCHING FILES BY METADATA. - MongoDB expects dot-notation while searching for files by the metadata. We are making a function to search - files assuming that the conditions are to be applied to the metadata itself. So this function add the - dot-notation to the right places to conduct a successful search. - :param metadata_json: The JSON to format. - :return: The formatted JSON that has the right dot-notation. - """ - - formatted_metadata_json = {} - - for key, value in metadata_json.items(): - if not key.startswith("$"): key = f"metadata.{key}" - else: - if type(value) is dict: value = self.__format_metadata_json(value) - if type(value) is list: value = [self.__format_metadata_json(item) for item in value] - formatted_metadata_json[key] = value - - return formatted_metadata_json - - async def find_file_by_metadata(self, metadata_json, limit = None, skip = None, sort = None): - - """ - This method only lists the files that match the criteria mentioned in the metadata JSON. - :param metadata_json: The JSON that describes what you want to find. - :param limit: Max. no. of records to retrieve. - :param skip: No. of starting results to skip. Useful for pagination. - :param sort: The sorting conditions to follow. - :return: A list of (JSONs of) files that match the conditions. The list can be empty. - """ - - if self.__store is None: await self.connect() - - files_list = [] - - try: - limit = limit or 10 - skip = skip or 0 - sort = {"_id": -1} if not isinstance(sort, dict) else sort - formatted_metadata_json = self.__format_metadata_json(metadata_json) - return await self.__store.find( - formatted_metadata_json - ).sort(sort).skip(skip).limit(limit).to_list(None) - - except Exception as exception: self.__printer(exception, metadata_json, len(files_list)) - - if not self.__debug_only_errors: self.__printer(metadata_json, len(files_list)) - return files_list - - async def find_file_by_id(self, file_id): - - """ - This method allows you to get the file's info from the id of the file. - :param file_id: The id that was assigned by Mongo during upload. - :return: The file's info or None if the file doesn't exist. - """ - - if self.__store is None: await self.connect() - - file_info = None - - try: - formatted_metadata_json = {"_id": ObjectId(file_id)} - file_info = (await self.__store.find(formatted_metadata_json).to_list(1))[0] - - except Exception as exception: self.__printer(exception, file_id, file_info) - - return file_info - - async def get_file_name(self, file_id): - - """ - Returns the file name if the id of the file is known. - :param file_id: The id of the file as assigned by MongoDB when the file was stored. - :return: The file's name (if it exists), or None. - """ - - # Ensure that we are connected: - if self.__store is None: await self.connect() - - # Ensure that the input given is of 'ObjectId' type: - if type(file_id) is not ObjectId: file_id = ObjectId(str(file_id)) - - # Fetch and return the file name: - files_list = await self.__store.find( - {"_id": file_id}, - {"filename": True} - ).sort({"_id": -1}).limit(1).to_list(None) - try: file_name = files_list[0]["filename"] - except: file_name = None - return file_name - - async def aggregate( - self, - collection, - pipeline, - limit = None - ): - - """ - Perform an advance query on the data. - :param collection: The collection to perform the query on. - :param pipeline: The pipeline of actions to take. Must be a list. - :param limit: The max. no. of records to retrieve. - :return: The array of matching records or null if there was an exception. - """ - - if self.__store is None: await self.connect() - - results = None - try: results = await self.__db[collection].aggregate(pipeline).to_list(limit) - except Exception as exception: self.__printer(exception) - return results - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/database/async_mongo_v2.py b/utils_v2/database/async_mongo_v2.py deleted file mode 100644 index 6af5329..0000000 --- a/utils_v2/database/async_mongo_v2.py +++ /dev/null @@ -1,1736 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Original: Tuesday, 28th May, 2024 - Modified: Tuesday, 17th Sept., 2024 - - OBJECTIVE: - - To have one central place from where all async MongoDB activity happens. - - REFERENCES: - - 01. https://motor.readthedocs.io/en/stable/ - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For system-level activity: -import io - -# For async behaviour: -import asyncio - -# MongoDB for File Storage: -from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorGridFSBucket -from bson.objectid import ObjectId -from bson.json_util import dumps, loads - -# My utils: -from utils_v2.string import json - -# For datetime handling: -import pytz -import datetime - -# For debugging: -from icecream import IceCreamDebugger - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** EXCEPTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncMongoBase: - - def __init__( - self, - connection_string = None, - max_connections = 5, - host_name = "localhost", - port = 27017, - database_name = "myDb", - debug = True, - debug_prefix = "Mongo | ", - debug_only_errors = True - ): - - # Basic variables that will be needed later: - self._client = None - self._db = None - self._fs = None - - # Database Initialization: - self._host_name = host_name - self._port = port - self._db_name = database_name - self._connection_string = connection_string - self._max_connections = max_connections - - # Debugging: - self._debug_only_errors = debug_only_errors - self._printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self._printer.disable() - - def enable_debug(self): - self._printer.enable() - - def disable_debug(self): - self._printer.disable() - - async def connect(self): - - """ - Initialize the database connection. - :return: None. - """ - - self._printer("Connecting...") - - # If a connection string is given, - # give preference to it: - if self._connection_string is None: - self._client = AsyncIOMotorClient( - self._host_name, - self._port, - maxPoolSize = self._max_connections, - minPoolSize = self._max_connections - ) - - # In the absense of a connection string, - # try to connect through the other credentials: - else: - self._client = AsyncIOMotorClient( - self._connection_string, - maxPoolSize = self._max_connections, - minPoolSize = self._max_connections - ) - - # Debugging print: - if not self._debug_only_errors: - server_info = await self._client.server_info() - self._printer(server_info) - - # Now we connect to the database and the file-store: - self._db = self._client.get_database(self._db_name) - self._fs = AsyncIOMotorGridFSBucket(self._db) - - async def ensure_connection(self): - - """ - Call this at the start of every function to automatically connect to the database when the user of the library - forgets to explicitly connect to the database. - :return: None. - """ - - if self._client is None: await self.connect() - - @staticmethod - def generate_id(as_str = False): - - """ - Just generates an '_id' in MongoDB style. - :param as_str: Set to True to convert the generated id to a string; and False to receive it as an instance of - 'ObjectId'. This is useful when you need to pre-assign ids to files. - :return: The '_id' in MongoDB style. - """ - - generated_id = ObjectId() - return str(generated_id) if as_str else generated_id - - @property - async def client(self): - - """ - returns the client to perform activities that have not been explicitly wrapped in the class. - :return: The client's instance. - """ - - await self.ensure_connection() - return self._client - - @property - async def db(self): - - """ - returns the database connector to perform activities that have not been explicitly wrapped in the class. - :return: The database's connection instance. - """ - - await self.ensure_connection() - return self._fs - - @property - async def fs(self): - - """ - returns the file-store to perform activities that have not been explicitly wrapped in the class. - :return: The file-store instance. - """ - - await self.ensure_connection() - return self._fs - - @staticmethod - def from_json_string(json_data): - - """ - Converts from a JSON string to BSON. - :param json_data: The JSON string to convert to BSON. - :return: The BSON interpretation of the input JSON string. - """ - - return loads(json_data) - - @staticmethod - def to_json_string(data, indent = 4, default = None): - - """ - Converts from a BSON to JSON string. - :param data: The input BSON data. - :param indent: The no. of spaces to put into the string for pretty print. - :param default: The default function to apply to data that cannot be converted directly. - :return: The JSON string from the input data. - """ - - return dumps(data, indent = indent, default = default) - - @staticmethod - def dict_to_dot_notation(input_dict, pk = "", s = "."): - - """ - Converts an input dict to dot notation format. Can be used as a utility to perform searches. - :param input_dict: The dict that you want to convert to dot notation. - :param pk: Parent Key. DO NOT TOUCH (meant to be used during recursion). - :param s: Separator. DO NOT TOUCH (meant to be used during recursion). - :return: The dot notation representation of the input dict. - """ - - items = [] - for k, v in input_dict.items(): - new_key = f"{pk}{s}{k}" if pk else k - if isinstance(v, dict) and v: items.extend(AsyncMongoBase.dict_to_dot_notation(v, new_key, s = s).items()) - else: items.append((new_key, v)) - return dict(items) - - @staticmethod - def normalize_date_time(document): - - """ - MongoDB doesn't support timezones. A good strategy would be to convert everything to UTC format and store it. - This method does exactly that. Any datetime object is converted to UTC timezone. If the datetime object was - timezone naive, UTC timezone will be applied to it without changing the time value. - :param document: The document that you want to normalize the date-time in. - :return: The document with normalized datetime. - """ - - if isinstance(document, datetime.datetime): - utc_tz = pytz.timezone("UTC") - if document.tzinfo is None: document = utc_tz.localize(document) - else: document = document.astimezone(utc_tz) - - if type(document) is list: - document = [AsyncMongoBase.normalize_date_time(item) for item in document] - - if type(document) is dict: - document = { - AsyncMongoBase.normalize_date_time(k): AsyncMongoBase.normalize_date_time(v) - for k, v in document.items() - } - - return document - - @staticmethod - def read_to_ram(file_path): - - """ - Reads a file into a BytesIO object in RAM. - :param file_path: The path to the file on disk. - :return: The file in a BytesIO object. - """ - - with open(file_path, "rb") as file: file_data = file.read() - file_in_ram = io.BytesIO(file_data) - file_in_ram.seek(0) - return file_in_ram - - -# --------------------------------------------------------------------------------------------------------------------- - - -class AsyncMongo(AsyncMongoBase): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - async def list_indexes( - self, - collection, - session = None, - raise_exception = False - ): - - """ - Lists out the indexes of a collection. - :param collection: The collection whose indexes you want to list out, - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The list of indexes or None if the action fails. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - indexes = None - - # Try to list the indexes: - try: - responses = await self._db[collection].list_indexes(session = session).to_list(None) - indexes = [{key: value for key, value in response.items()} for response in responses] - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return indexes - - async def create_index( - self, - collection, - keys, - options = None, - session = None, - raise_exception = False - ): - - """ - Creates an index on a collection. - :param collection: The collection to create the index on. - :param keys: The keys (and sorting) to implement the index on. - :param options: Additional config. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the execution. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to make the insertion: - try: - options = options or {} - keys = [(k, v) for k, v in keys.items()] - response = await self._db[collection].create_index(keys, session = session, **options) - if response: success = True - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def count( - self, - collection, - filter, - session = None, - raise_exception = False - ): - - """ - Counts the no. of documents that match the given filter condition. - :param collection: The name of the collection to count in. - :param filter: The filter criteria that the documents must satisfy to be counted. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The count if the operation was performed successfully or None is something went wrong and the exception - was suppressed. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = None - - # try to query the data: - try: count = await self._db[collection].count_documents(filter, session = session) - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return count - - async def insert_one( - self, - collection, - document, - session = None, - raise_exception = False - ): - - """ - Insert data into a collection. - :param collection: The collection you want to feed the data into. - :param document: The data to be stored. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The id of the inserted data, or null if the action fails. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - inserted_id = None - - # Try to make the insertion: - try: - response = await self._db[collection].insert_one(document.copy(), session = session) - inserted_id = response.inserted_id - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return inserted_id - - async def insert_many( - self, - collection, - documents, - session = None, - raise_exception = False - ): - - """ - Insert a lot of data into a collection. - :param collection: The collection you want to feed the data into. - :param documents: The list of documents to be stored. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The id of the inserted data, or null if the action fails. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - inserted_ids = [] - - # Try to make the insertion: - try: - response = await self._db[collection].insert_many(documents, session = session) - inserted_ids = response.inserted_ids - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return inserted_ids - - async def find_one( - self, - collection, - filter, - projection = None, - session = None, - raise_exception = False - ): - - """ - Finds one record that matches the given conditions. - :param collection: The name of the collection to perform the search in. - :param filter: The filter criteria. - :param projection: What parts of the matching data you want to fetch. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The matching record or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # try to query the data: - try: results = await self._db[collection].find_one(filter, projection, session = session) - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Check results and return: - return results - - async def find_many( - self, - collection, - filter, - projection = None, - skip = 0, - limit = None, - sort = None, - session = None, - raise_exception = False - ): - - """ - Finds one or more records that match the given conditions. - :param collection: The name of the collection to perform the search in. - :param filter: The filter criteria. - :param projection: What parts of the matching data you want to fetch. - :param skip: The no. of records to skip before picking next ones. Needed for pagination. - :param limit: The max. no. of records you want to fetch. - :param sort: The sorting rules to apply. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The array of matching records or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # Assume defaults: - if sort is None: sort = {"_id": -1} - if limit is None: limit = 10 - - # try to query the data: - try: - results = await self._db[collection].find( - filter, - projection, - sort = sort, - skip = skip, - limit = limit, - session = session - ).to_list(None) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return results - - async def update_one( - self, - collection, - filter = None, - update = None, - upsert = False, - session = None, - raise_exception = False - ): - - """ - Update one document. - :param collection: The collection you want to update. - :param filter: The selection criteria to locate the document to update. - :param update: The values you want to update. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to make the update: - try: - response = await self._db[collection].update_one( - filter, - update, - upsert = upsert, - session = session - ) - success = True if response.modified_count > 0 or response.upserted_id else False - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def update_many( - self, - collection, - filter = None, - update = None, - upsert = False, - session = None, - raise_exception = False - ): - - """ - Update many documents. - :param collection: The collection you want to update. - :param filter: The selection criteria to locate the document to update. - :param update: The values you want to update. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - update_count = 0 - - # Try to make the insertion: - try: - response = await self._db[collection].update_many( - filter, - update, - upsert = upsert, - session = session - ) - update_count = response.modified_count + response.upserted_count - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return update_count - - async def find_one_and_update( - self, - collection, - filter = None, - update = None, - projection = None, - return_updated = False, - upsert = False, - session = None, - raise_exception = False - ): - - """ - Update one document. - :param collection: The collection you want to update. - :param filter: The selection criteria to locate the document to update. - :param update: The values you want to update. - :param projection: What parts of the matching data you want to fetch. - :param return_updated: To choose whether you want to retrieve the original document or the updated document. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The fetched document. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - document = None - - # Try to make the update: - try: - document = await self._db[collection].find_one_and_update( - filter, - update, - projection = projection, - return_document = return_updated, - upsert = upsert, - session = session - ) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return document - - async def replace_one( - self, - collection, - filter, - replacement, - upsert = False, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param collection: The collection from which you want to delete many records. - :param filter: The filter criteria. - :param replacement: The data to put in place of the existing document. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # try to query the data: - try: - result = await self._db[collection].replace_one( - filter, - replacement, - upsert = upsert, - session = session - ) - if result.modified_count or result.upserted_id: success = True - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def find_one_and_replace( - self, - collection, - filter, - replacement, - projection = None, - return_replaced = False, - upsert = False, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param collection: The collection from which you want to delete many records. - :param filter: The filter criteria. - :param replacement: The data to put in place of the existing document. - :param projection: What parts of the matching data you want to fetch. - :param return_replaced: To choose whether you want to retrieve the original document or the updated document. - :param upsert: If you want to insert if the document doesn't already exist. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - document = None - - # try to query the data: - try: - document = await self._db[collection].find_one_and_replace( - filter, - replacement, - projection = projection, - return_document = return_replaced, - upsert = upsert, - session = session - ) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return document - - async def delete_one( - self, - collection, - filter, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param collection: The collection from which you want to delete many records. - :param filter: The filter criteria. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # try to query the data: - try: - result = await self._db[collection].delete_one(filter, session = session) - success = True if result.deleted_count else False - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def delete_many( - self, - collection, - filter, - session = None, - raise_exception = False - ): - - """ - To delete many documents from a collection. - WARNING: sending {} in the filter would mean deleting ALL the documents. - :param collection: The collection from which you want to delete many records. - :param filter: The filter criteria. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # try to query the data: - try: - result = await self._db[collection].delete_many(filter, session = session) - count = result.deleted_count - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return count - - async def find_one_and_delete( - self, - collection, - filter, - projection = None, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param collection: The collection from which you want to delete a record. - :param filter: The filter criteria. - :param projection: What parts of the matching data you want to fetch. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The document that matched your criteria or None. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - document = None - - # try to query the data: - try: - document = await self._db[collection].find_one_and_delete( - filter, - projection = projection, - session = session - ) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return document - - async def bulk_write( - self, - collection, - requests, - session = None, - raise_exception = False - ): - - """ - To perform various individual operations in one go. You will have to import individual actions like "UpdateOne" - and "InsertMany" from PyMongo and pass them as an array of requests (operations) to this method. - :param collection: The collection you want to run the requests on. - :param requests: The array of requests (operations) to be performed. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The no of operations done. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # try to query the data: - try: - response = await self._db[collection].bulk_write(requests, session = session) - count = response.modified_count + response.inserted_count + response.upserted_count + response.deleted_count - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return count - - async def aggregate( - self, - collection, - pipeline, - limit = None, - session = None, - raise_exception = False - ): - - """ - Perform an advance query on the data. - :param collection: The collection to perform the query on. - :param pipeline: The pipeline of actions to take. Must be a list. - :param limit: The max. no. of records to retrieve. preferably apply the limit from within the pipeline. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The array of matching records or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # try to perform the aggregation action: - try: results = await self._db[collection].aggregate(pipeline, session = session).to_list(limit) - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return results - - -# --------------------------------------------------------------------------------------------------------------------- - - -class AsyncMongoStorage(AsyncMongo): - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - async def easy_upload( - self, - source, - file_name: str, - file_metadata: dict = None, - file_id = None, - chunk_size: int = None, - session = None, - raise_exception = False - ): - - """ - Easily write one file to MongoDB's GridFS. Ideal for directly uploading small files without having to worry - about any internal mechanisms. - :param source: The actual file, supplied as either a path string or a file-like object, to be written to the - database. - :param file_name: The name of the file as it will be stored on (and retrieved from) GridFS. - :param file_metadata: Any metadata to later search the file by. - :param file_id: Any custom id to be given to the file. TRY STICKING TO THE ID GENERATED BY 'generate_id'. - :param chunk_size: The chunk size (in bytes) to use for storing this file. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The id of the inserted file or None if the upload failed. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - inserted_id = None - - # Try to write the file: - try: - - # Input pre-processing: - if isinstance(source, io.BytesIO): source.seek(0) - elif isinstance(source, str): source = open(source, mode = "rb") - - # If no file id was supplied: - if file_id is None: - inserted_id = await self._fs.upload_from_stream( - filename = file_name, - source = source, - metadata = file_metadata, - chunk_size_bytes = chunk_size, - session = session - ) - - # If a file id was supplied: - else: - await self._fs.upload_from_stream_with_id( - file_id = file_id, - filename = file_name, - source = source, - metadata = file_metadata, - chunk_size_bytes = chunk_size, - session = session - ) - inserted_id = file_id - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return inserted_id - - async def easy_download( - self, - destination, - file_id = None, - file_name = None, - session = None, - raise_exception = False - ): - - """ - Easily read one file from MongoDB's GridFS. Ideal for directly downloading small files without having to worry - about any internal mechanisms. - :param destination: The path on the local disk or a buffer in RAM to save the downloaded data to. - :param file_id: (RECOMMENDED) the id of the save file. - :param file_name: The name of the saved file. NOT RECOMMENDED because you could have many files with the same - name. The best way to tell files apart if from the id. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. The contents of the stored file are written - directly to the destination. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to read the file: - try: - - # Input pre-processing: - if isinstance(destination, str): destination = open(destination, mode = "wb") - - # If a file id is supplied (preferred way): - if file_id is not None: - await self._fs.download_to_stream( - destination = destination, - file_id = file_id, - session = session - ) - if isinstance(destination, io.BytesIO): destination.seek(0) - success = True - - # If a file name is supplied: - elif file_name is not None: - await self._fs.download_to_stream_by_name( - destination = destination, - filename = file_name, - session = session - ) - if isinstance(destination, io.BytesIO): destination.seek(0) - success = True - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def count_files( - self, - filter, - session = None, - raise_exception = False - ): - - """ - Counts the no. of documents that match the given filter condition. - :param filter: The filter criteria that the documents must satisfy to be counted. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The count if the operation was performed successfully or None is something went wrong and the exception - was suppressed. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = None - - # try to query the data: - try: count = await self._db["fs.files"].count_documents(filter, session = session) - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return count - - async def find_one_file( - self, - filter, - projection = None, - session = None, - raise_exception = False - ): - - """ - Finds one record that matches the given conditions. This does NOT return the file itself, it returns the record - that describes the file. - :param filter: The filter criteria. - :param projection: What parts of the matching data you want to fetch. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The matching record or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # try to query the data: - try: results = await self._db["fs.files"].find_one(filter, projection, session = session) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Check results and return: - return results - - async def find_many_files( - self, - filter, - projection = None, - skip = 0, - limit = None, - sort = None, - session = None, - raise_exception = False - ): - - """ - Finds one or more records that match the given conditions. This doesn't return any actual files directly, it - returns the records that describe the files. - :param filter: The filter criteria. - :param projection: What parts of the matching data you want to fetch. - :param skip: The no. of records to skip before picking next ones. Needed for pagination. - :param limit: The max. no. of records you want to fetch. - :param sort: The sorting rules to apply. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The array of matching records or null if there was an exception. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - results = None - - # Assume defaults: - if sort is None: sort = {"_id": -1} - if limit is None: limit = 10 - - # try to query the data: - try: - results = await self._db["fs.files"].find( - filter, - projection, - session = session - ).sort(sort).skip(skip).limit(limit).to_list(None) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return results - - async def update_metadata_for_one_file( - self, - filter: dict, - unset_data: dict = None, - set_data: dict = None, - session = None, - raise_exception = False - ): - - """ - Updates the metadata for one file. - :param filter: The conditions to filter the files by. - :param unset_data: The fields that you want to discard. - :param set_data: The fields that you want to add or update. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to make the update: - try: - - # Input pre-processing: - update = {} - if unset_data is not None: update["$unset"] = self.dict_to_dot_notation({"metadata": unset_data}) - if set_data is not None: update["$set"] = self.dict_to_dot_notation({"metadata": set_data}) - - # Actual update happens here: - if update: - response = await self._db["fs.files"].update_one( - filter, - update, - session = session - ) - success = False if response.modified_count == 0 else True - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def update_metadata_for_many_files( - self, - filter: dict, - unset_data: dict = None, - set_data: dict = None, - session = None, - raise_exception = False - ): - - """ - Updates the metadata for many files. Practically the same as 'update_metadata_for_one' except that the scope of - the modifications is far wider. - :param filter: The conditions to filter the files by. - :param unset_data: The fields that you want to discard. - :param set_data: The fields that you want to add or update. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = None - - # Try to make the update: - try: - - # Input pre-processing: - update = {} - if unset_data is not None: update["$unset"] = self.dict_to_dot_notation({"metadata": unset_data}) - if set_data is not None: update["$set"] = self.dict_to_dot_notation({"metadata": set_data}) - - # Actual update happens here: - if update: - response = await self._db["fs.files"].update_many( - filter, - update, - session = session - ) - count = response.modified_count - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return count - - async def replace_metadata_for_one_file( - self, - filter: dict, - replacement, - session = None, - raise_exception = False - ): - - """ - Updates the metadata for one file. - :param filter: The conditions to filter the files by. - :param replacement: The new metadata to put inplace of the old one. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to make the update: - try: - - # Actual update happens here: - result = await self._db["fs.files"].update_one( - filter, - {"$set": {"metadata": replacement}}, - upsert = False, - session = session - ) - if result.modified_count or result.upserted_id: success = True - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def replace_metadata_for_many_files( - self, - filter: dict, - replacement, - session = None, - raise_exception = False - ): - - """ - Updates the metadata for one file. - :param filter: The conditions to filter the files by. - :param replacement: The new metadata to put inplace of the old one. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = None - - # Try to make the update: - try: - - # Actual update happens here: - response = await self._db["fs.files"].update_many( - filter, - {"$set": {"metadata": replacement}}, - session = session - ) - count = response.modified_count - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return count - - async def delete_file_by_id( - self, - file_id, - session = None, - raise_exception = False - ): - - """ - Deletes one file by the file's id. Deleting files is different from deleting simple documents because, in files, - you also need to clear out the chunks (which are stored in a separate collection). The built-in mechanism of - Motor only provides support to delete by the file's id. - :param file_id: The id of the file that you want to delete. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Try to read the file: - try: - - # Delete the file: - await self._fs.delete(file_id = file_id, session = session) - success = True - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return success - - async def delete_one_file( - self, - filter, - session = None, - raise_exception = False - ): - - """ - To delete one document from a collection. - :param filter: The filter criteria. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: True or False based on the success of the operation. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - success = False - - # Find one file that matches the given filter: - file = await self.find_one( - collection = "fs.files", - filter = filter, - session = session, - raise_exception = raise_exception - ) - - # If we have a list of files to work with: - if file: success = await self.delete_file_by_id(file["_id"]) - - # Done here: - return success - - async def delete_many_files( - self, - filter, - session = None, - raise_exception = False - ): - - """ - To delete many documents from a collection. - WARNING: sending {} in the filter would mean deleting ALL the documents. - :param filter: The filter criteria. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The number of files deleted (can be zero) or None if something failed while searching the files. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - count = 0 - - # Find all the files that match the given filter: - files = await self.find_many( - filter = filter, - session = session, - raise_exception = raise_exception - ) - - # If we have a list of files to work with: - if files is not None: - tasks = [self.delete_file_by_id(file["_id"]) for file in files] - results = await asyncio.gather(*tasks) - count = sum(results) - - # Done here: - return count - - async def get_upload_stream( - self, - file_name: str, - file_metadata: dict = None, - file_id = None, - chunk_size: int = None, - session = None, - raise_exception = False - ): - - """ - Returns a GridIn object so that you can perform your own upload using the built-in writing methods. You must use - the 'write' method to write data to the file by passing it either a string of bytes or a file-like object. When - the file has been fully written, you must call the 'close' method to finish the operation. In case you need to - cancel the operation, you can call the 'abort' method to delete all the already written data and stop uploading - new data. - :param file_name: The name of the file as it will be stored on (and retrieved from) GridFS. - :param file_metadata: Any metadata to later search the file by. - :param file_id: Any custom id to be given to the file. TRY STICKING TO THE ID GENERATED BY 'generate_id'. - :param chunk_size: The chunk size (in bytes) to use for storing this file. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The upload stream that implements the 'write', 'close', and 'abort' methods, or None if something - failed. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - stream = None - - # Try to open the upload stream: - try: - - # If no file id was supplied: - if file_id is None: - stream = self._fs.open_upload_stream( - filename = file_name, - metadata = file_metadata, - chunk_size_bytes = chunk_size, - session = session - ) - - # If a file id was supplied: - else: - stream = self._fs.open_upload_stream_with_id( - file_id = file_id, - filename = file_name, - metadata = file_metadata, - chunk_size_bytes = chunk_size, - session = session - ) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return stream - - async def get_download_stream( - self, - file_id = None, - file_name = None, - session = None, - raise_exception = False - ): - - """ - Returns a GridOut object so that you can implement your own download logic using the built-in 'read' method. - Once the reading is done, use the 'close' method to release the resources used by the stream. - :param file_id: (RECOMMENDED) the id of the save file. - :param file_name: The name of the saved file. NOT RECOMMENDED because you could have many files with the same - name. The best way to tell files apart if from the id. - :param session: The session if you need to do this in a transaction. - :param raise_exception: Whether, or not, you want to raise an exception when something fails. - :return: The download stream that implements the 'read' and 'close' methods, or None if something failed. - """ - - # Ensure you are connected: - await self.ensure_connection() - - # Assume failure: - stream = None - - # Try to open a download stream: - try: - - # If a file id is supplied (preferred way): - if file_id is not None: - stream = await self._fs.open_download_stream( - file_id = file_id, - session = session - ) - - # If a file name is supplied: - elif file_name is not None: - stream = await self._fs.open_download_stream_by_name( - filename = file_name, - session = session - ) - - # When something goes wrong: - except Exception as exception: - self._printer(exception) - if raise_exception: raise - - # Done here: - return stream - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - from shared import constants - - async def main(): - - # Create an instance of the database connector: - my_db = AsyncMongo( - connection_string = constants.MONGO_DATA_CONNECTION_STRING, - database_name = constants.MONGO_DATA_DATABASE_NAME, - max_connections = 10, - debug = True - ) - - # Connect to the database: - await my_db.connect() - - # # Get the documents to migrate: - # documents = await my_db.find_many( - # collection = "scriptData", - # filter = {}, - # limit = 50, - # projection = {"_id": False} - # ) - # # print(json.to_string(documents, default = str)) - # - # # Adjust them: - # adjusted_documents = [] - # for document in documents: - # script_id = document.pop("scriptId") - # adjusted_document = { - # "scriptId": script_id, - # "desc": "no desc", - # "content": document - # } - # adjusted_documents.append(adjusted_document) - # print(json.to_string(adjusted_documents, default = str)) - # - # # Insert the adjusted ones to the new collection: - # response = await my_db.insert_many( - # collection = "_scriptData", - # documents = adjusted_documents - # ) - # print("RESPONSE:", response) - - - asyncio.run(main()) diff --git a/utils_v2/database/async_mysql_v2.py b/utils_v2/database/async_mysql_v2.py deleted file mode 100644 index 6a1996f..0000000 --- a/utils_v2/database/async_mysql_v2.py +++ /dev/null @@ -1,434 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 30th Aug., 2024 - - OBJECTIVE: - - To be able to access SQL-based databases from python in a simple way. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# MySQL Database: -import aiomysql -import decimal - -# For data-crunching: -import pandas as pd - -# For time-keeping: -import time - -# OS-level operations: -import os - -# My utils: -from utils_v2.string import json - -# For async activities: -import asyncio - -# For debugging: -from icecream import IceCreamDebugger -import traceback - -# To work with datatypes: -from typing import List - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncMySQL: - - def __init__( - self, - pool_size, - *args, - **kwargs - ): - - """ - A class to work with SQL-based databases. Originally meant to only invoke stored procedures and retrieve them as - JSON-like structures (list or dict). The format for the results was very specific to our use case for serving - Bicree's requirement. This may not serve your requirement at all. - :param pool_size: The number of connections to maintain n a pool. - :param args: Any arguments to pass. Not used. - :param kwargs: Pass the connection configuration from here. - """ - - # Set up the variables: - self.__args = args - self.__kwargs = kwargs - self.__min_pool_size = 10 - self.__max_pool_size = max(pool_size, self.__min_pool_size) - self.__pool = None - - # Set up the debugging tools: - self.__printer = IceCreamDebugger(prefix = "MySQL | ", includeContext = True) - - def __del__(self): - pass - - async def connect(self): - - """ - Establish a connection and create a pool of connections to call from. - :return: None. - """ - - try: - - self.__kwargs["db"] = self.__kwargs.pop("database") - self.__pool = await aiomysql.create_pool( - minsize = self.__min_pool_size, - maxsize = self.__max_pool_size, - loop = asyncio.get_event_loop(), - **self.__kwargs - ) - - except Exception as exception: - self.__printer(exception) - self.__pool = None - - async def ensure_connection(self): - - """ - Tries to ensure that a connection is present. - Can be called before every function to make sure that our pool is established. - :return: None. - """ - - if self.__pool is None: await self.connect() - - @staticmethod - def __parse_row(row): - - """ - Converts from the custom objects of 'aiomysql' to types that are supported by Python. - :param row: The row from the result. - :return: The parsed row which will have types that are closer to being native to Python.. - """ - - parsed_row = [] - for item in row: - if isinstance(item, decimal.Decimal): parsed_row.append(float(item)) - else: parsed_row.append(item) - return parsed_row - - async def fetch_all(self, cursor): - - # Make a variable to hold all the result sets. - # Needed for when the procedure responds with many "tables": - all_result_sets = [] - - # Iterate over all result sets, - # and process them one-by-one: - while True: - - # Process the current result set: - this_result_set = [] - result = await cursor.fetchall() - if not cursor.description: break - columns = [desc[0] for desc in cursor.description] - for row in result: this_result_set.append(dict(zip(columns, self.__parse_row(row)))) - all_result_sets.append(this_result_set) - - # Move to the next set, - # or break out of the loop if all done: - if not await cursor.nextset(): break - - # Done here: - return all_result_sets - - async def call_procedure( - self, - procedure_name: str, - procedure_args: tuple, - commit: bool = True - ): - - """ - To call stored procedures and retrieve all the responses. - :param procedure_name: The name of the stored procedure that must be called. - :param procedure_args: The args to be sent to the stored procedure. - :param commit: Whether, or not, you would like to commit the execution. - :return: The raw result set as received from the database. - """ - - # Make sure we have a connection: - await self.ensure_connection() - - # Make a variable to hold all the result sets. - # Needed for when the procedure responds with many "tables": - all_result_sets = [] - - # Call the procedure and get the results: - async with self.__pool.acquire() as connection: - async with connection.cursor() as cursor: - await cursor.callproc(procedure_name, procedure_args) - all_result_sets = await self.fetch_all(cursor) - if commit: await connection.commit() - - # # Iterate over all result sets, - # # and process them one-by-one: - # while True: - # this_result_set = [] - # result = await cursor.fetchall() - # if not cursor.description: break - # columns = [desc[0] for desc in cursor.description] - # for row in result: this_result_set.append(dict(zip(columns, self.__parse_row(row)))) - # all_result_sets.append(this_result_set) - # await cursor.nextset() - - # Done here: - return all_result_sets - - async def call_procedure_and_get_json( - self, - procedure_name, - procedure_args, - commit: bool = True, - retry_count = 1, - backoff_seconds = 0.5, - backoff_multiplier = 1.1, - return_exception = False - ): - - """ - The method to call when you need to call a stored procedure and retrieve the response as a JSON-like object. - This is custom formatting based on the structure created by Mr. bhushan Thakkar in late April (2024). - :param procedure_name: The name of the stored procedure that must be called. - :param procedure_args: The args to be sent to the stored procedure. - :param commit: Whether, or not, you would like to commit the execution. - :param retry_count: The max. number of times to try in case one or more attempts fail. - :param backoff_seconds: The time to wait before making the next attempt if the retry count is more than 1. - :param backoff_multiplier: The factor that dictates how much to modify the time delay by when waiting to retry. - :param return_exception: Whether, or not, you would like to return the exception object if something goes wrong. - :return: The formatted response and the exception (if asked for). - """ - - # Note down the start time: - start_ts = time.time() - - # Try to get the data from the database: - results = [] - exception = None - for _ in range(retry_count): - try: results = await self.call_procedure( - procedure_name = procedure_name, - procedure_args = procedure_args, - commit = commit - ) - except Exception as exc: exception = exc - if exception is None: break - await asyncio.sleep(backoff_seconds) - backoff_seconds = backoff_seconds * backoff_multiplier - - # If the results are blank: - if len(results) == 0: - formatted_results = { - "status": 0, - "message": "Please contact admin (NE)" if exception is None else "Please contact admin (E)", - "seconds": time.time() - start_ts, - "data": {} - } - if return_exception: return formatted_results, exception - else: return formatted_results - - # Extract the very basic success or failure indicators: - formatted_results = { - "status": results[0][0]["status"], - "message": results[0][0].get("message", "ok"), - "seconds": 0.0, - "data": {} - } - - # Handle the remaining keys of the zeroth result set: - for key, value in results[0][0].items(): - if key not in formatted_results.keys(): - formatted_results["data"][key] = value - - # Format - for index in range(len(results)): - if index > 0: formatted_results["data"][f"rs{index-1}"] = results[index] - - # Note down the time taken: - formatted_results["seconds"] = time.time() - start_ts - - # Done here: - if return_exception: return formatted_results, exception - else: return formatted_results - - async def execute_one( - self, - query: str, - commit: bool = True, - return_exception: bool = False - ): - - """ - Runs one command / query in SQL. - :param query: The query / command to run. - :param commit: Whether, or not, you would like to commit the execution. - :param return_exception: Whether, or not, you would like to return the exception from this function. - :return: Either just the result or the result and the exception. - """ - - # Make sure we have a connection: - await self.ensure_connection() - - # Start by assuming failure: - rows_affected = None - results = None - excp = None - - try: - - # Get a connection and execute the command: - async with self.__pool.acquire() as connection: - async with connection.cursor() as cursor: - rows_affected = await cursor.execute(query) - results = await self.fetch_all(cursor) - if commit: await connection.commit() - - # SQL-specific errors: - except aiomysql.MySQLError as exception: - self.__printer("SQL Exception", exception) - excp = exception - - # Other errors: - except Exception as exception: - self.__printer("Other Exception", exception) - excp = exception - - # Done here: - if return_exception: return rows_affected, results, excp - else: return rows_affected, results - - async def execute_many( - self, - query: str, - data: List[tuple], - commit: bool = True, - return_exception: bool = False - ): - - """ - Runs many commands / queries in SQL. - Consider the following example: - QUERY: "INSERT INTO pincodeMaster (pincode, city, state) VALUES (%s, %s, %s);" - DATA: [ - ('110001', 'New Delhi', 'Delhi'), - ('500001', 'Hyderabad', 'Telangana'), - ('600001', 'Chennai', 'Tamil Nadu') - ] - :param query: The query / command to run. - :param data: The data to substitute into the query string. - :param commit: Whether, or not, you would like to commit the execution. - :param return_exception: Whether, or not, you would like to return the exception from this function. - :return: Either just the result or the result and the exception. - """ - - # Make sure we have a connection: - await self.ensure_connection() - - # Start by assuming failure: - rows_affected = None - results = None - excp = None - - try: - - # Get a connection and execute the command: - async with self.__pool.acquire() as connection: - async with connection.cursor() as cursor: - rows_affected = await cursor.executemany(query, data) - results = await self.fetch_all(cursor) - if commit: await connection.commit() - - # SQL-specific errors: - except aiomysql.MySQLError as exception: - self.__printer("SQL Exception", exception) - excp = exception - - # Other errors: - except Exception as exception: - self.__printer("Other Exception", exception) - excp = exception - - # Done here: - if return_exception: return rows_affected, results, excp - else: return rows_affected, results - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/dataframe/__init__.py b/utils_v2/dataframe/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/dataframe/splitter.py b/utils_v2/dataframe/splitter.py deleted file mode 100644 index 7725905..0000000 --- a/utils_v2/dataframe/splitter.py +++ /dev/null @@ -1,118 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 22nd Oct., 2024 - - OBJECTIVE: - - To provide an easy way to split dataframes into chunks and divide the workload nto more manageable batches. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - - USAGE EXAMPLE: - - for sub_df in DataFrameSplitter(df, chunk_size = 50): - - # Do your task here: - pass - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class DataFrameSplitter: - - def __init__(self, df, chunk_size): - - """ - Use this to process your dataframe in batches. Useful for when you need to send out alerts at intervals or need - to maintain checkpoints. - :param df: The dataframe to iterate over. - :param chunk_size: The max. no. of rows to pick at once. - """ - - self.df = df - self.row_count = df.shape[0] - self.chunk_size = chunk_size - self.offset = 0 - - def __iter__(self): - self.offset = 0 - return self - - def __next__(self): - if self.offset >= self.row_count: - raise StopIteration - end = self.offset + self.chunk_size - chunk = self.df.iloc[self.offset:end] - self.offset = end - return chunk - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/date_time/__init__.py b/utils_v2/date_time/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/date_time/date_time.py b/utils_v2/date_time/date_time.py deleted file mode 100644 index e7232be..0000000 --- a/utils_v2/date_time/date_time.py +++ /dev/null @@ -1,337 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 21st jun, 2024 - - OBJECTIVE: - - To provide an easy way to work with time. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For date and time handling: -import pytz -from datetime import datetime, time, timedelta, tzinfo -import dateparser - -# To handle date-time objects from a Numpy array and Pandas Dataframe: -import numpy as np -import pandas as pd - -# To work with datatypes: -from typing import List - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Date-Time Formats: -DATE_TIME_FORMATS = ( - "%d/%m/%y", - "%d-%b-%y", - "%d-%m-%y", - "%d.%m.%y", - "%d/%m/%Y", - "%d-%b-%Y", - "%d-%m-%Y", - "%d.%m.%Y", - "%d/%b", - "%d%m%Y", - "%Y%m%d", - "%Y/%m/%d", - "%Y-%m-%d", - "%Y-%m-%d %H:%M:%S" -) - -# Useful Timezones: -TIMEZONE_UTC = pytz.timezone("UTC") -TIMEZONE_IST = pytz.timezone("Asia/Kolkata") -TIMEZONE_ET = pytz.timezone("America/New_York") -TIMEZONE_CT = pytz.timezone("America/Chicago") -TIMEZONE_MT = pytz.timezone("America/Denver") -TIMEZONE_PT = pytz.timezone("America/Los_Angeles") -TIMEZONE_JST = pytz.timezone("Asia/Tokyo") -TIMEZONE_CET = pytz.timezone("Europe/Paris") -TIMEZONE_GMT = pytz.timezone("GMT") -TIMEZONE_AEST = pytz.timezone("Australia/Sydney") -TIMEZONE_NZST = pytz.timezone("Pacific/Auckland") -TIMEZONE_CST = pytz.timezone("Asia/Shanghai") -TIMEZONE_KST = pytz.timezone("Asia/Seoul") -TIMEZONE_MSK = pytz.timezone("Europe/Moscow") -TIMEZONE_BRT = pytz.timezone("America/Sao_Paulo") -TIMEZONE_GST = pytz.timezone("Asia/Dubai") -TIMEZONE_SAST = pytz.timezone("Africa/Johannesburg") -TIMEZONE_AST = pytz.timezone("Asia/Riyadh") - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def translate_date_time_string( - datetime_string: str, - source_format: str = None, - destination_format: str = "%Y-%m-%dT%H:%M:%S" -) -> str | None: - - """ - To convert an input datetime string to a different format. - :param datetime_string: The datetime string to translate. - :param source_format: The current format of the string. If not provided, dateparser will be used. - :param destination_format: The format to convert to. - :return: The converted datetime string. - """ - - try: - - if source_format is None: datetime_obj = dateparser.parse(datetime_string) - else: datetime_obj = datetime.strptime(datetime_string, source_format) - return datetime_obj.strftime(destination_format) - - except Exception as exception: - return None - - -# --------------------------------------------------------------------------------------------------------------------- - - -def parse_date_time( - input_value: datetime | str | int | float, - timezone: str | tzinfo = None, - date_formats: List[str] = None -) -> datetime: - - """ - To take any kind of input and interpret the datetime from it. - :param input_value: Either a string or an integer or some form of datetime representation. - :param timezone: The timezone to apply to the interpreted datetime. IF THE INPUT IS NAIVE, THIS TIMEZONE WILL BE - APPLIED AS IS, ELSE THE TIMEZONE WILL BE TRANSLATED. - :param date_formats: The string formats to consider when parsing a string input. - :return: The parsed datetime or null. - """ - - datetime_object = None - date_formats = date_formats or DATE_TIME_FORMATS - - # It could either be in seconds or milliseconds from epoch time's base date (January 1, 1970), - # or it could be days since Microsoft Excel's base date (December 31, 1899). - if isinstance(input_value, (int, float, np.number)) and not np.isnan(input_value): - if input_value > 9999999999.0: datetime_object = datetime.fromtimestamp(input_value / 1000.0) - if input_value > 999999.0: datetime_object = datetime.fromtimestamp(input_value) - else: datetime_object = datetime.fromtimestamp(input_value * 24 * 60 * 60.0) - timedelta(days = 25569) - - # The input can even be a pre-formatted date: - if isinstance(input_value, str): - datetime_object = dateparser.parse( - input_value, - date_formats = date_formats, - settings = { - "DATE_ORDER": "DMY", - "PREFER_DAY_OF_MONTH": "first", - } - ) - - # If the type is a datetime object, then return it as it is: - if isinstance(input_value, datetime): - datetime_object = input_value - - # If the type is the native datetime format of pandas: - if isinstance(input_value, pd._libs.tslibs.timestamps.Timestamp): - datetime_object = input_value.to_pydatetime() - - # Process the timezone: - if datetime_object is not None and timezone is not None: - datetime_object = to_timezone(datetime_object, timezone) - - # Done here: - return datetime_object - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_current_date_time( - timezone: str | tzinfo = None, - as_string: bool = False -) -> datetime: - - """ - Returns the current time as a datetime object. - :param timezone: The timezone to apply to the returned datetime. - :param as_string: Whether, or not, you want the output as a string. - :return: The datetime object/string representing the current time. - """ - - if timezone is not None and isinstance(timezone, str): timezone = pytz.timezone(timezone) - now = datetime.now(timezone) - return now.isoformat() if as_string else now - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_current_ist_date_time( - as_string = False -) -> datetime: - - """ - Gives out the current time in IST timezone. - :param as_string: Whether, or not, you want the output as a string. - :return: The datetime object or string representing the current time. - """ - - return get_current_date_time( - timezone = TIMEZONE_IST, - as_string = as_string - ) - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_current_utc_date_time( - as_string: bool = False -) -> datetime: - - """ - Gives out the current time in UTC timezone. - :param as_string: Whether, or not, you want the output as a string. - :return: The datetime object or string representing the current time. - """ - - return get_current_date_time( - timezone = TIMEZONE_UTC, - as_string = as_string - ) - - -# --------------------------------------------------------------------------------------------------------------------- - - -def as_if_timezone( - datetime_object: datetime, - timezone: str | tzinfo -) -> datetime: - - """ - Ignores existing timezone info and applies the intended timezone. - The time stays the same, only the timezone marker changes. - e.g. for IST to UTC: 2024-08-09 00:00:00+05:30 --> 2024-08-09 00:00:00+00:00 - HINT: IT PRETENDS "AS IF" THE TIMEZONE WAS THE INPUT TIMEZONE. - :param datetime_object: The datetime object on which the timezone needs to be applied. - :param timezone: The timezone that needs to be applied. - :return: A timezone-aware datetime object. - """ - - tz_object = pytz.timezone(timezone) if isinstance(timezone, str) else timezone - return tz_object.localize(datetime_object.replace(tzinfo = None)) - - -# --------------------------------------------------------------------------------------------------------------------- - - -def to_timezone( - datetime_object: datetime, - timezone: str | tzinfo -) -> datetime: - - """ - Converts from one timezone to another. The time is adjusted by computing the difference between the two timezones. - NOTE: THIS FUNCTION APPLIES TH EINPUT TIMEZONE IF THE INPUT DATETIME WAS TIMEZONE-NAIVE. - e.g. for IST to UTC: 2024-08-09 00:00:00+05:30 --> 2024-08-08 18:30:00+00:00 - :param datetime_object: The datetime object on which the timezone needs to be applied. - :param timezone: The timezone that needs to be applied. - :return: A timezone-aware datetime object. - """ - - if isinstance(timezone, str): timezone = pytz.timezone(timezone) - if datetime_object.tzinfo is None: return datetime_object.replace(tzinfo = timezone) - return datetime_object.astimezone(timezone) - - -# --------------------------------------------------------------------------------------------------------------------- - - -def round_datetime( - datetime_object: datetime, - seconds: int -) -> datetime: - - """ - 'Snaps' the time to the closest 'n-second' window. For example, if you want to round the time off to the nearest - 5-minute period (maybe for use cases like trading), you set the value of seconds to 300. This way any input value - of, say, 12:01:50 AM gets converted to 12:00:00 AM; and a value of 12:02:31 AM gets converted to 12:05:00 AM. - :param datetime_object: The input datetime that you want to round off. - :param seconds: The period of rounding in seconds. 60 for 1 minute, 300 for 5 minutes and so on. - :return: The rounded date-time (with the original timezone). - """ - - # For timezone-naive cases: - if datetime_object.tzinfo is None: - total_seconds = datetime_object.timestamp() - rounded_seconds = round(total_seconds / seconds) * seconds - rounded_datetime = datetime.fromtimestamp(rounded_seconds) - return rounded_datetime - - # For timezone-aware cases: - else: - original_tz = datetime_object.tzinfo - _dt = to_timezone(datetime_object, timezone = original_tz) - total_seconds = _dt.timestamp() - rounded_seconds = round(total_seconds / seconds) * seconds - rounded_datetime = datetime.fromtimestamp(rounded_seconds, tz = original_tz) - return rounded_datetime - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/goog/__init__.py b/utils_v2/goog/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/goog/base.py b/utils_v2/goog/base.py deleted file mode 100644 index 12e96cc..0000000 --- a/utils_v2/goog/base.py +++ /dev/null @@ -1,475 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 26th Nov., 2024 - - OBJECTIVE: - - To provide a base class for common behaviour of Google's APIs. - - REFERENCES: - - 1. Quickstart: https://developers.google.com/gmail/api/quickstart/python - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.date_time import date_time -from utils_v2.goog.models.data.api_call import GoogleApiResponse -from utils_v2.goog.models.data.auth_tokens import GoogleAuthTokens - -# Related to Google: -from google_auth_oauthlib.flow import InstalledAppFlow - -# To make API calls: -import httpx - -# To work with date and time: -import datetime - -# For working with datatypes: -from typing import Literal, List - -# For debugging: -from icecream import IceCreamDebugger -import inspect - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncGoogleBase: - - def __init__( - self, - service_name: str, - oauth_json: dict, - http_client: httpx.AsyncClient, - redirect_url: str = None, - debug = True, - debug_prefix = "GMail | ", - debug_only_errors = True - ): - - """ - To initialize any Google API from one base class. The client's id and secret are available in the file - downloaded form https://console.cloud.google.com/apis/credentials (do not forget to select your app). - :param service_name: A string to identify this service. - :param oauth_json: The OAuth credentials downloaded from https://console.cloud.google.com/apis/credentials - :param http_client: An asynchronous HTTP client to make API calls. - :param redirect_url: Where you would like to receive the confirmation of the user authorization. - :param debug: Whether, or not, you would like to show debugging messages on the terminal. - :param debug_prefix: The prefix string to identify the debugging messages. - :param debug_only_errors: Whether you would like to show all debugging messages or just error messages. - """ - - # Prepare the debugging utility: - self._debug_prefix = debug_prefix - self._printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self._printer.disable() - self._debug_only_errors = debug_only_errors - - # Accept the input configuration: - self._service_name = service_name - self._http_client = http_client - self._oauth_json = oauth_json - self._client_id = self._oauth_json["web"]["client_id"] - self._client_secret = self._oauth_json["web"]["client_secret"] - self._redirect_url = redirect_url - - def enable_debug(self): - self._printer.enable() - - def disable_debug(self): - self._printer.disable() - - def debug_only_errors(self): - self._debug_only_errors = True - - def debug_everything(self): - self._debug_only_errors = False - - # ┏┓ • - # ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏ - # ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛ - # ┛ - - @property - def client_id(self): - return self._client_id - - @property - def client_secret(self): - return self._client_secret - - # ┏┓┏┓ ┓ ┏┓ ┏┓ - # ┃┃┣┫┓┏╋┣┓ ┏┛ ┃┫ - # ┗┛┛┗┗┻┗┛┗ ┗━•┗┛ - - async def get_authorization_url( - self, - scopes: List[str], - state: str = None, - access_type: Literal["online", "offline"] = "offline", - approval_prompt: Literal["auto", "force", "consent"] = "auto", - include_granted_scopes: Literal["true", "false"] = "true", - user_email: str = None - ) -> str: - - """ - TO get the OAuth2.0 authorization URL for one user. - DOCUMENTATION: - 1. https://developers.google.com/identity/protocols/oauth2/web-server - :param scopes: The set of permission you want the user to give. - :param state: A unique identifier for your user. If not supplied, a random string will be generated. - :param access_type: Set the value to offline if your application needs to refresh access tokens when the user is - not present at the browser. - :param approval_prompt: "force" ensures that the consent screen is always shown to the user, regardless of - whether the user has previously granted consent for the requested scopes. It forces the user to re-approve - the app's access, which can be useful if the app is requesting new permissions or if the consent needs to be - explicitly confirmed. "consent" ensures the user's consent is required if they haven't approved the app's - requested permissions yet. "auto" allows Google to automatically determine whether the consent screen should - be shown. - :param include_granted_scopes: Enables applications to use incremental authorization to request access to - additional scopes in context. If you set this parameter's value to true and the authorization request is - granted, then the new access token will also cover any scopes to which the user previously granted the - application access. - :param user_email: - :return: - """ - - # Create a flow: - flow = InstalledAppFlow.from_client_config( - self._oauth_json, - scopes = scopes, - redirect_uri = self._redirect_url - ) - - # Get an authorization URL: - auth_url, state = flow.authorization_url( - access_type = access_type, - approval_prompt = approval_prompt, - include_granted_scopes = include_granted_scopes, - login_hint = user_email, - state = state - ) - - # Done here: - return auth_url - - async def get_authorization_tokens( - self, - scopes: List[str], - redirect_url: str - ) -> GoogleAuthTokens: - - """ - When the user accepts or declines an authorization request, Google sends you an alert on your redirect URL. Pass - the URL as it is to this method to generate the authorization tokens that you can store in the database and - reuse for this user's activities. - :param scopes: The set of permissions the user granted. - :param redirect_url: The exact URL that was hit (with the query params) that Google hit when the user did - something on your authorization URL. Fortunately, this URL is readily available in Quart and Flask by - calling 'request.url'. - :return: The authorization tokens. - """ - - # Create a flow: - flow = InstalledAppFlow.from_client_config( - self._oauth_json, - scopes = scopes, - redirect_uri = self._redirect_url - ) - - # Get the credentials: - credentials = flow.fetch_token(authorization_response = redirect_url) - ttl = credentials["expires_in"] - 60 - return GoogleAuthTokens( - accessToken = credentials.get("access_token"), - refreshToken = credentials.get("refresh_token"), - expiresAt = date_time.get_current_utc_date_time() + datetime.timedelta(seconds = ttl), - scopes = credentials.get("scope") - ) - - # ┏┓ ┳┓ ┓• - # ┣ ┏┓┏┓┏┓┏┓ ┃┃┏┓┏┏┓┏┫┓┏┓┏┓ - # ┗┛┛ ┛ ┗┛┛ ┻┛┗ ┗┗┛┗┻┗┛┗┗┫ - # ┛ - - @staticmethod - async def __get_error_message(api_response: GoogleApiResponse) -> str: - - """ - To extract various kinds of error messages from Google's responses. - :param api_response: The formatted response from the API call. - :return: The message string. - """ - - try: return (await api_response.get_json())["error"]["message"] - except: return api_response.response.reason_phrase - - # ┏┓┏┓┳ ┏┓ ┓┓• - # ┣┫┃┃┃ ┃ ┏┓┃┃┓┏┓┏┓ - # ┛┗┣┛┻ ┗┛┗┻┗┗┗┛┗┗┫ - # ┛ - - async def get( - self, - url: str, - headers: dict = None, - params: dict = None - ) -> GoogleApiResponse: - - """ - To call an API using the GET method. - :param url: The URL to call. - :param headers: The headers to pass. - :param params: The params to send in the query string itself. - :return: A structured response that includes the raw response, the exception (if any), and so on. - """ - - # Prepare the structure of the response: - api_response = GoogleApiResponse( - serviceName = self._service_name, - action = inspect.stack()[1].function, - url = url, - method = "GET" - ) - - try: - - # Make the API call: - response = await self._http_client.get( - url = url, - headers = headers, - params = params - ) - - # Note down the results: - api_response.response = response - api_response.httpCode = response.status_code - api_response.message = await self.__get_error_message(api_response) - - # If something goes wrong: - except Exception as exception: - api_response.exception = exception - api_response.message = str(exception) - self._printer(exception, api_response.url, api_response.method, headers, params) - - # Done here: - return api_response - - async def post( - self, - url: str, - headers: dict = None, - json: dict = None, - data: dict = None, - content: str | bytes = None - ) -> GoogleApiResponse: - - """ - To call an API using the POST method. - :param url: The URL to call. - :param headers: The headers to pass. - :param json: The params to send in the JSON body. - :param data: The params to send in the form-data in the body. - :param content: The raw content to be sent in the body (typically as an octet-stream). - :return: A structured response that includes the raw response, the exception (if any), and so on. - """ - - # Prepare the structure of the response: - api_response = GoogleApiResponse( - serviceName = self._service_name, - action = inspect.stack()[1].function, - url = url, - method = "POST" - ) - - try: - - # Make the API call: - response = await self._http_client.post( - url = url, - headers = headers, - json = json, - data = data, - content = content - ) - - # Note down the results: - api_response.response = response - api_response.httpCode = response.status_code - api_response.message = await self.__get_error_message(api_response) - - # If something goes wrong: - except Exception as exception: - api_response.exception = exception - api_response.message = str(exception) - self._printer(exception, api_response.url, api_response.method, headers, json, data) - - # Done here: - return api_response - - async def put( - self, - url: str, - headers: dict = None, - json: dict = None, - data: dict = None - ) -> GoogleApiResponse: - - """ - To call an API using the PUT method. - :param url: The URL to call. - :param headers: The headers to pass. - :param json: The params to send in the JSON body. - :param data: The params to send in the form-data in the body. - :return: A structured response that includes the raw response, the exception (if any), and so on. - """ - - # Prepare the structure of the response: - api_response = GoogleApiResponse( - serviceName = self._service_name, - action = inspect.stack()[1].function, - url = url, - method = "PUT" - ) - - try: - - # Make the API call: - response = await self._http_client.put( - url = url, - headers = headers, - json = json, - data = data - ) - - # Note down the results: - api_response.response = response - api_response.httpCode = response.status_code - api_response.message = await self.__get_error_message(api_response) - - # If something goes wrong: - except Exception as exception: - api_response.exception = exception - api_response.message = str(exception) - self._printer(exception, api_response.url, api_response.method, headers, json, data) - - # Done here: - return api_response - - async def delete( - self, - url: str, - headers: dict = None - ) -> GoogleApiResponse: - - """ - To call an API using the DELETE method. - :param url: The URL to call. - :param headers: The headers to pass. - :return: A structured response that includes the raw response, the exception (if any), and so on. - """ - - # Prepare the structure of the response: - api_response = GoogleApiResponse( - serviceName = self._service_name, - action = inspect.stack()[1].function, - url = url, - method = "DELETE" - ) - - try: - - # Make the API call: - response = await self._http_client.delete( - url = url, - headers = headers - ) - - # Note down the results: - api_response.response = response - api_response.httpCode = response.status_code - api_response.message = await self.__get_error_message(api_response) - - # If something goes wrong: - except Exception as exception: - api_response.exception = exception - api_response.message = str(exception) - self._printer(exception, api_response.url, api_response.method, headers) - - # Done here: - return api_response - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/goog/gmail/__init__.py b/utils_v2/goog/gmail/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/goog/gmail/gmail_client.py b/utils_v2/goog/gmail/gmail_client.py deleted file mode 100644 index ac2d327..0000000 --- a/utils_v2/goog/gmail/gmail_client.py +++ /dev/null @@ -1,960 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Monday, 25th Nov., 2024 - - OBJECTIVE: - - To manage e-mails in a GMail account. - - REFERENCES: - - 1. GMail Quickstart: https://developers.google.com/gmail/api/quickstart/python - 2. GMail Labels: https://developers.google.com/gmail/api/guides/labels - 3. GMail Messages: https://developers.google.com/gmail/api/reference/rest/v1/users.messages - 4. People Profile: https://developers.google.com/people/api/rest/v1/people/get - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.string import json -from utils_v2.string import regex -from utils_v2.date_time import date_time -from utils_v2.mail import mail_parser - -# My Google utils: -from utils_v2.goog.base import AsyncGoogleBase -from utils_v2.goog.models.data.auth_tokens import GoogleAuthTokens -from utils_v2.goog.models.data.api_call import GoogleApiResponse -from utils_v2.goog.gmail.gmail_message import GMailMessage - -# Related to Google: -from google.auth.transport.requests import Request -from google.oauth2.credentials import Credentials -from googleapiclient.discovery import build - -# To make API calls: -import httpx - -# For asynchronous activities: -import asyncio - -# To work with date and time: -import datetime - -# For working with datatypes: -from typing import Dict, Literal, List, Any - -# For debugging: -from icecream import IceCreamDebugger -import inspect - -# For computational help: -import math - -# For base64 encoding: -import base64 - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Google Scopes: -SCOPES_GMAIL_MAIL_MANAGEMENT = [ - r"https://www.googleapis.com/auth/gmail.modify", - r"https://www.googleapis.com/auth/gmail.labels", - r"https://www.googleapis.com/auth/userinfo.profile" -] -SCOPES_GMAIL_FULL = [ - r"https://mail.google.com/", - r"https://www.googleapis.com/auth/userinfo.profile" -] - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncGMailClient(AsyncGoogleBase): - - async def get_user_profile( - self, - tokens: GoogleAuthTokens, - user_id: str = "me", - ) -> GoogleApiResponse: - - """ - To get the list of labels of this user. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users/getProfile - 2. https://developers.google.com/people/api/rest/v1/people/get - 3. https://developers.google.com/people/api/rest/v1/people#Person - :param tokens: The object that holds the access token to the service. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the GMail API call: - if not self._debug_only_errors: self._printer("Getting User Profile.") - gmail_api_response = await self.get( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/profile", - headers = {"Authorization": f"Bearer {tokens.accessToken}"} - ) - - # If the call was successful: - if gmail_api_response.httpCode in [200]: - gmail_api_response.success = True - gmail_api_response.data = await gmail_api_response.get_json() - gmail_api_response.data["displayName"] = None - gmail_api_response.data["displayPictureUrl"] = None - - # Make the People API call: - if not self._debug_only_errors: self._printer("Getting User Profile.") - people_api_response = await self.get( - url = f"https://people.googleapis.com/v1/people/me?personFields=names,photos,birthdays,phoneNumbers,genders,emailAddresses,addresses", - headers = {"Authorization": f"Bearer {tokens.accessToken}"} - ) - - # If the call was successful: - if people_api_response.httpCode in [200]: - people_api_response.success = True - people_api_response.data = await people_api_response.get_json() - for item in people_api_response.data.get("names", []): - if item["metadata"]["primary"]: - gmail_api_response.data["displayName"] = item.get("displayName") - for item in people_api_response.data.get("photos", []): - if item["metadata"]["primary"]: - gmail_api_response.data["displayPictureUrl"] = item.get("url") - - # Done here: - return gmail_api_response - - # ┓ ┓ ┓ - # ┃ ┏┓┣┓┏┓┃┏ - # ┗┛┗┻┗┛┗ ┗┛ - - async def list_labels( - self, - tokens: GoogleAuthTokens, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To get the list of labels of this user. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.labels/list - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.labels#Label - :param tokens: The object that holds the access token to the service. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Listing All Labels.", user_id) - api_response = await self.get( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/labels", - headers = {"Authorization": f"Bearer {tokens.accessToken}"} - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_json = await api_response.get_json() - api_response.data = {label["name"]: label for label in api_json.get("labels", [])} - - # Done here: - return api_response - - async def get_label( - self, - tokens: GoogleAuthTokens, - label_id: str, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To get one label of this user. the label will be identified by its id. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.labels/get - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.labels#Label - :param tokens: The object that holds the access token to the service. - :param label_id: The id that Google assigned to the label. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Getting One Label.", user_id) - api_response = await self.get( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/labels/{label_id}", - headers = {"Authorization": f"Bearer {tokens.accessToken}"} - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_response.data = await api_response.get_json() - - # Done here: - return api_response - - async def create_label( - self, - tokens: GoogleAuthTokens, - label_name: str, - label_visibility: Literal["labelShow", "labelShowIfUnread", "labelHide"] = "labelShow", - message_visibility: Literal["show", "hide"] = "show", - label_text_color: str = "#434343", - label_background_color: str = "#000000", - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - Create one label for the user. Doesn't apply it to any mail, just creates it. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.labels/create - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.labels#Label - :param tokens: The object that holds the access token to the service. - :param label_name: The display name of the label. - :param label_visibility: Whether, or not, you would like to show the label in the web UI. - :param message_visibility: Whether, or not, you would like to show messages with this label in the web UI. - :param label_text_color: The colour of the text of the label. - :param label_background_color: The colour of the background/tag of the label. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Creating One Label.", user_id) - api_response = await self.post( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/labels", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - json = { - "name": label_name, - "messageListVisibility": "show" if message_visibility else "hide", - "labelListVisibility": "labelShow" if label_visibility else "labelHide", - "color": { - "textColor": label_text_color.lower(), - "backgroundColor": label_background_color.lower() - } - } - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_response.data = await api_response.get_json() - - # Done here: - return api_response - - async def update_label( - self, - tokens: GoogleAuthTokens, - label_id: str, - label_name: str = None, - label_visibility: Literal["labelShow", "labelShowIfUnread", "labelHide"] = None, - message_visibility: Literal["show", "hide"] = None, - label_text_color: str = None, - label_background_color: str = None, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - Updates one label for the user. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.labels/update - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.labels#Label - NOTE: Both or none of the colours must be updated. For this reason, a simple default will be chosen for the - other if only one is provided. - :param tokens: The object that holds the access token to the service. - :param label_id: The id that Google assigned to the label. - :param label_name: The display name of the label. - :param label_visibility: Whether, or not, you would like to show the label in the web UI. - :param message_visibility: Whether, or not, you would like to show messages with this label in the web UI. - :param label_text_color: The colour of the text of the label. - :param label_background_color: The colour of the background/tag of the label. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Format the JSON body: - json_body = {} - if label_name: json_body["name"] = label_name - if label_visibility: json_body["labelListVisibility"] = label_visibility - if message_visibility: json_body["messageListVisibility"] = message_visibility - if label_text_color or label_background_color: - json_body["color"] = { - "textColor": (label_text_color or "#434343").lower(), - "backgroundColor": (label_background_color or "#000000").lower() - } - - # Make the API call: - if not self._debug_only_errors: self._printer("Updating One Label.", user_id) - api_response = await self.put( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/labels/{label_id}", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - json = json_body - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_response.data = await api_response.get_json() - - # Done here: - return api_response - - async def delete_label( - self, - tokens: GoogleAuthTokens, - label_id: str, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To delete one label of this user. the label will be identified by its id. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.labels/delete - :param tokens: The object that holds the access token to the service. - :param label_id: The id that Google assigned to the label. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Deleting One Label.", user_id) - api_response = await self.delete( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/labels/{label_id}", - headers = {"Authorization": f"Bearer {tokens.accessToken}"} - ) - - # If the call was successful: - if api_response.httpCode in [200, 204]: - api_response.success = True - - # Done here: - return api_response - - # ┳┳┓ - # ┃┃┃┏┓┏┏┏┓┏┓┏┓┏ - # ┛ ┗┗ ┛┛┗┻┗┫┗ ┛ - # ┛ - - async def __list_messages_on_page( - self, - tokens: GoogleAuthTokens, - max_count: int = 100, - query: str = None, - label_ids: List[str] | str = None, - include_spam_and_trash: bool = False, - next_page_token: str = None, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To enlist messages on one page. Google allows at most 500 results on one page. This method respects that - pagination limit and returns only what Google gives. This method should be used internally by the class and the - class should expose another method that calls this one in loop to get any arbitrary no. of messages as the user - desires. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/list - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.messages#Message - :param tokens: The object that holds the access token to the service. - :param max_count: The no. of messages to fetch. - :param query: Any query filter that is supported by GMail. - :param label_ids: The list of labels' ids that the mails must have on them. - :param include_spam_and_trash: Whether, or not, you would like to include mails categorized as spam and trash. - :param next_page_token: The token to fetch the next set of results. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Build the needed params: - params_json = { - "maxResults": max_count, - "includeSpamTrash": include_spam_and_trash - } - if query: params_json["q"] = query - if next_page_token: params_json["pageToken"] = next_page_token - if label_ids: params_json["labelIds"] = label_ids if isinstance(label_ids, list) else [label_ids] - - # Make the API call: - if not self._debug_only_errors: self._printer("Listing Messages for Page.", user_id, max_count, next_page_token) - api_response = await self.get( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - params = params_json - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_json = await api_response.get_json() - api_response.data = { - "messages": {m["id"]: m for m in api_json.get("messages", [])}, - "nextPageToken": api_json.get("nextPageToken"), - "resultSizeEstimate": api_json["resultSizeEstimate"], - } - - # Done here: - return api_response - - async def list_messages( - self, - tokens: GoogleAuthTokens, - max_count: int = 100, - query: str = None, - label_ids: List[str] | str = None, - include_spam_and_trash: bool = False, - next_page_token: str = None, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To enlist mail messages from a user's account. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/list - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.messages#Message - :param tokens: The object that holds the access token to the service. - :param max_count: The no. of messages to fetch. - :param query: Any query filter that is supported by GMail. - :param label_ids: The list of labels' ids that the mails must have on them. - :param include_spam_and_trash: Whether, or not, you would like to include mails categorized as spam and trash. - :param next_page_token: The token to fetch the next set of results. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # We create a variable that will hold the results. - # We must supply the URL, Method and a few other params here due to the custom looping functionality: - all_messages = GoogleApiResponse( - serviceName = self._service_name, - action = inspect.stack()[0].function, - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages", - method = "GET", - data = { - "messages": {}, - "nextPageToken": None, - "resultSizeEstimate": 0 - } - ) - - # Let's figure out how many times we'll have to loop through the process to retrieve the target no. of - # messages. Google allows you to fetch info about at most 500 messages in one go. - max_per_call = 500 # ... because Google allows at most 500 entries in one call. - iterations_needed = int(math.ceil(max_count / max_per_call)) - last_iteration_count = max_count - int((max_per_call * (iterations_needed - 1))) - - # Run the loop those many times: - results_size_estimate = 0 - for iteration_no in range(iterations_needed): - - # Figure out the count for this page: - if iterations_needed > 1: - if iteration_no < (iterations_needed - 1): iteration_count = max_per_call - else: iteration_count = last_iteration_count - else: iteration_count = max_count - - # Retrieve the messages for this page: - iteration_response = await self.__list_messages_on_page( - tokens = tokens, - max_count = iteration_count, - query = query, - label_ids = label_ids, - include_spam_and_trash = include_spam_and_trash, - next_page_token = next_page_token - ) - - # Check if no data was received: - if ( - iteration_response.data is None or - not iteration_response.data.get("messages") - ): break - - # Now that we know that messages were received: - for k, v in iteration_response.data["messages"].items(): all_messages.data["messages"][k] = v - results_size_estimate += iteration_response.data["resultSizeEstimate"] - - # Also copy the API call params: - all_messages.httpCode = iteration_response.httpCode - all_messages.message = iteration_response.message - all_messages.success = iteration_response.success - - # If there is no next page after this, we break out of the loop: - next_page_token = iteration_response.data["nextPageToken"] - if next_page_token is None: break - - # Format the final response: - all_messages.data["nextPageToken"] = next_page_token - all_messages.data["resultSizeEstimate"] = results_size_estimate - - # Done here: - return all_messages - - async def get_message( - self, - tokens: GoogleAuthTokens, - message_id: str, - return_raw: bool = False, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To get one message of this user. The message will be identified by its id. Note that, if you choose to return - the raw message, the message body will be compliant with RFC 5322 and RFC 2045 (among others). - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/get - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.messages#Message - 2. https://developers.google.com/gmail/api/reference/rest/v1/Format - :param tokens: The object that holds the access token to the service. - :param message_id: The id that Google assigned to the message. - :param return_raw: Whether you want the raw message or the formatted message. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Getting One Message.", user_id) - api_response = await self.get( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages/{message_id}", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - params = {"format": "raw"} - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_json = await api_response.get_json() - raw_message = base64.urlsafe_b64decode(api_json["raw"]).decode() - if return_raw: api_response.data = raw_message - else: - parsed_message = mail_parser.parse(raw_message) - parsed_message["labels"] = api_json["labelIds"] - parsed_message["messageId"] = api_json["id"] - parsed_message["threadId"] = api_json["threadId"] - parsed_message["historyId"] = api_json["historyId"] - parsed_message["snippet"] = api_json["snippet"] - parsed_message["sizeEstimate"] = api_json["sizeEstimate"] - api_response.data = parsed_message - - # Done here: - return api_response - - async def modify_messages( - self, - tokens: GoogleAuthTokens, - message_ids: List[str] | str, - add_label_ids: List[str] | str = None, - remove_label_ids: List[str] | str = None, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To add or remove labels from one or more messages. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/batchModify - :param tokens: The object that holds the access token to the service. - :param message_ids: One or more message ids (assigned by Google). - :param add_label_ids: One or more label ids (not the display name of the label). - :param remove_label_ids: One or more label ids (not the display name of the label). - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Build the needed JSON: - body_json = {"ids": message_ids if isinstance(message_ids, list) else [message_ids]} - if add_label_ids: body_json["addLabelIds"] = add_label_ids if isinstance(add_label_ids, list) else [add_label_ids] - if remove_label_ids: body_json["removeLabelIds"] = remove_label_ids if isinstance(remove_label_ids, list) else [remove_label_ids] - - # Make the API call: - if not self._debug_only_errors: self._printer("Modifying Message(s).", user_id) - api_response = await self.post( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages/batchModify", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - json = body_json - ) - - # If the call was successful: - if api_response.httpCode in [200, 204]: - api_response.success = True - - # Done here: - return api_response - - async def delete_messages( - self, - tokens: GoogleAuthTokens, - message_ids: List[str] | str, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To PERMANENTLY delete one or more messages. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/batchDelete - :param tokens: The object that holds the access token to the service. - :param message_ids: One or more message ids (assigned by Google). - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Deleting Message(s).", user_id) - api_response = await self.post( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages/batchDelete", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - json = {"ids": message_ids if isinstance(message_ids, list) else [message_ids]} - ) - - # If the call was successful: - if api_response.httpCode in [200, 204]: - api_response.success = True - - # Done here: - return api_response - - async def trash_message( - self, - tokens: GoogleAuthTokens, - message_id: str, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To move one message to trash. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/trash - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.messages#Message - :param tokens: The object that holds the access token to the service. - :param message_id: The id of the message (assigned by Google). - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Trashing One Message.", user_id) - api_response = await self.post( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages/{message_id}/trash", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - ) - - # If the call was successful: - if api_response.httpCode in [200, 204]: - api_response.success = True - api_response.data = await api_response.get_json() - - # Done here: - return api_response - - async def untrash_message( - self, - tokens: GoogleAuthTokens, - message_id: str, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To move one message to trash. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/trash - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.messages#Message - :param tokens: The object that holds the access token to the service. - :param message_id: The id of the message (assigned by Google). - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Make the API call: - if not self._debug_only_errors: self._printer("Un-Trashing One Message.", user_id) - api_response = await self.post( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages/{message_id}/untrash", - headers = {"Authorization": f"Bearer {tokens.accessToken}"}, - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_response.data = await api_response.get_json() - - # Done here: - return api_response - - async def send_message( - self, - tokens: GoogleAuthTokens, - message: GMailMessage, - thread_id: str = None, - user_id: str = "me" - ) -> GoogleApiResponse: - - """ - To send one message. - NOTE: If you want to apply a custom label to your outgoing mails, this API endpoint doesn't allow you to do that - in one go. Instead, you should note down the 'id' field from a successful response and use the 'modify_messages' - method of this class to immediately apply that label to the mail in a separate call. - DOCUMENTATION: - 1. https://developers.google.com/gmail/api/reference/rest/v1/users.messages/send - 2. https://developers.google.com/gmail/api/reference/rest/v1/users.messages#Message - :param tokens: The object that holds the access token to the service. - :param message: The object that has the content of the message to be sent. - :param thread_id: Replies to an existing mail if the correct thread-id is specified. If not specified, a new - mail with a new thread-id is created. - :param user_id: The id of the user for which this service must be run. Typically, the e-mail id itself or "me". - :return: A structured response where the list of labels will be in the 'data' variable. - """ - - # Ensure that the tokens are valid: - await tokens.arefresh( - http_client = self._http_client, - client_id = self._client_id, - client_secret = self._client_secret, - force_refresh = False - ) - - # Construct the JSON body: - json_body = {"raw": message.get_raw_message(as_base64 = True)} - if thread_id: json_body["threadId"] = thread_id - - # Make the API call: - if not self._debug_only_errors: self._printer("Sending One Message.", user_id) - api_response = await self.post( - url = f"https://gmail.googleapis.com/gmail/v1/users/{user_id}/messages/send", - headers = { - "Authorization": f"Bearer {tokens.accessToken}", - "Content-Type": "message/rfc822" - }, - json = json_body - ) - - # If the call was successful: - if api_response.httpCode in [200]: - api_response.success = True - api_response.data = await api_response.get_json() - - # Done here: - return api_response - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - # Create an HTTP client: - test_client = httpx.AsyncClient( - limits = httpx.Limits( - max_connections = 100, # ............ Maximum number of connections allowed in the pool. - max_keepalive_connections = 50, # ... Maximum number of connections that can be kept alive. - ), - timeout = httpx.Timeout( - connect = 2.5, # ... Shorter connection timeout. - read = 2.5, # ...... Like what EasyEcom gives. - write = 10.0, # .... Time to wait for sending data. - pool = 120.0 # ..... Time to wait for a free connection from the pool. - ) - ) - - # Read the secrets that give you access to the app: - secrets_file = r"../../../creds/goog/app/google_tcaoff_test_oauth_20241125.json" - secrets_dict = json.from_file(secrets_file) - - async def main(): - - # Create an instance of the client: - my_gmail = AsyncGMailClient( - service_name = "gmail", - oauth_json = secrets_dict, - http_client = test_client, - redirect_url = r"https://api.thecaoffice.com/converse/mail/callback/gmail", - debug = True, - debug_prefix = "GMail (M) | ", - debug_only_errors = False - ) - - # Request Auth: - print("AUTH URL:", await my_gmail.get_authorization_url( - scopes = SCOPES_GMAIL_MAIL_MANAGEMENT, - state = "Bhopli", - approval_prompt = "force" - )) - - # Get tokens from callback: - test_tokens = await my_gmail.get_authorization_tokens( - scopes = SCOPES_GMAIL_MAIL_MANAGEMENT, - redirect_url = input("Paste the redirect URL here: ") - ) - print("TOKENS:", test_tokens) - - # Test some feature: - response = await my_gmail.get_user_profile(tokens = test_tokens) - print("SUCCESS:", response.success) - print("SUMMARY:", response.to_markdown()) - print("\n\n---\n\n") - print("DATA:", json.to_string(response.data, default = str)) - if not response.success: - print("\n\n---\n\n") - print("FULL RESPONSE JSON:", json.to_string(await response.get_json())) - - - asyncio.run(main()) diff --git a/utils_v2/goog/gmail/gmail_message.py b/utils_v2/goog/gmail/gmail_message.py deleted file mode 100644 index 62556bd..0000000 --- a/utils_v2/goog/gmail/gmail_message.py +++ /dev/null @@ -1,336 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 16th Jul, 2024 - - OBJECTIVE: - - To be able to send out mails from code. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For working with mails: -from email.mime.multipart import MIMEMultipart -from email.mime.image import MIMEImage -from email.mime.text import MIMEText -from email.mime.base import MIMEBase -from email import encoders - -# For random strings: -import string -import random - -# For system-level activities: -import os - -# For working with files in RAM: -import io - -# To work with Base64 encoding: -import base64 - -# To work with datatypes: -from typing import List - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class GMailMessage: - - def __init__( - self, - from_email: str, - to_email: str, - subject: str, - cc_emails: List[str] = None, - bcc_emails: List[str] = None - ): - - """ - Create an instance of the message that you would like to send. - :param from_email: The EMail ID of the sender. - :param to_email: The EMail ID of the recipient. - :param subject: The subject of the mail. - :param cc_emails: A list of recipients to add to the CC section. - :param bcc_emails: A list of recipients to add to the BCC section. - """ - - # Create the instance of the message: - self.message = MIMEMultipart() - self.message["From"] = from_email - self.message["To"] = to_email - self.message["Subject"] = subject - if cc_emails: self.message["CC"] = ",".join(cc_emails) - if bcc_emails: self.message["BCC"] = ",".join(bcc_emails) - - # Note down the values for accessing later: - self.__from = from_email - self.__to = to_email - self.__cc = cc_emails, - self.__bcc = bcc_emails - self.__subject = subject - - # ┏┓ • - # ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏ - # ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛ - # ┛ - - @property - def from_mail(self): - return self.__from - - @property - def to_mail(self): - return self.__to - - @property - def cc_mails(self): - return self.__cc - - @property - def bcc_mails(self): - return self.__bcc - - @property - def subject(self): - return self.__subject - - # ┏┓ ┓ ┓ ┏┓ - # ┣┫┏┫┏┫ ┃ ┏┓┏┓╋┏┓┏┓╋ - # ┛┗┗┻┗┻ ┗┛┗┛┛┗┗┗ ┛┗┗ - - def add_text(self, text): - - """ - Add plain-text to the mail body. - :param text: The text to add to the mail body. - :return: None. - """ - - self.message.attach(MIMEText(text, "plain")) - - def add_html(self, html_text): - - """ - Add HTML text to the mail body. - :param html_text: The HTML text to add to the mail body. - :return: None. - """ - - self.message.attach(MIMEText(html_text, "html")) - - def add_inline_image( - self, - image_file: str | io.BytesIO, - file_name: str = None, - content_id: str = None - ): - - """ - Add an inline image to the body of the mail. - NOTE: This is NOT the same as sending an image as an attachment. - :param image_file: The image data to attach to the mail body. - :param file_name: The name of the file. This is the same name by which it will be downloaded. You need not - specify this if the input file is specified as a path. Needed when you give the input file as a buffer. - :param content_id: Inline images are inserted via HTML bocks. This field identifies the image resource. If not - specified, I will generate a random string. You may write a custom value here if you know what you are - doing. For most use cases, please ignore this field. - :return: None. - """ - - # Read the image as bytes: - image_bytes = None - if type(image_file) is str: - file_name = file_name or os.path.split(image_file)[-1] - with open(image_file, "rb") as opened_image_file: - image_bytes = opened_image_file.read() - if type(image_file) is io.BytesIO: - image_file.seek(0) - image_bytes = image_file.getvalue() - - # Declare the part to be attached to the multipart message: - if image_bytes is not None: - - # Create the HTML block if the image pointer is blank: - if content_id is None: - content_id = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)) - self.add_html(f""" - - -

    - - - """) - - # Then add the image: - image_part = MIMEImage(image_bytes) - image_part.add_header( - "Content-ID", f"<{content_id}>" - ) - image_part.add_header( - "Content-Disposition", - f"inline; filename=\"{file_name}\"", - ) - self.message.attach(image_part) - - def add_attachment( - self, - attachment_file: str | io.BytesIO, - file_name: str = None - ): - - """ - Add a file as an attachment to the mail. This file, even if possible, will not be rendered on the screen in-line - with the body. It will be made available as a download. - :param attachment_file: The file that you would like to attach. - :param file_name: The name of the file. This is the same name by which it will be downloaded. You need not - specify this if the input file is specified as a path. Needed when you give the input file as a buffer. - :return: - """ - - # Declare the part to be attached to the multipart message: - part = MIMEBase("application", "octet-stream") - - # If the attachment is a file stored in the local disk: - if isinstance(attachment_file, str): - file_name = file_name or os.path.split(attachment_file)[-1] - with open(attachment_file, "rb") as attachment: - part.set_payload(attachment.read()) - - # If the file is held in RAM: - elif isinstance(attachment_file, io.BytesIO): - attachment_file.seek(0) - part.set_payload(attachment_file.read()) - - # Encode and attach the file: - encoders.encode_base64(part) - part.add_header( - "Content-Disposition", - f"attachment; filename=\"{file_name}\"", - ) - self.message.attach(part) - - # ┏┓ - # ┣ ┏┓┏┓┏┳┓┏┓╋ - # ┻ ┗┛┛ ┛┗┗┗┻┗ - - def get_raw_message( - self, - as_base64: bool = True - ): - - """ - Get the raw string dump from the current contents of the message. This text will be compliant with RFC 5322 and - RFC 2045 (among others). - :param as_base64: If set to True, the response will be a URL-safe B64 output, else it'll be a raw string. - :return: The standardized raw text dump. either as a raw string or as a Base64 (url-safe) string. - """ - - if not as_base64: return self.message - else: return base64.urlsafe_b64encode(self.message.as_bytes()).decode() - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - my_mail = GMailMessage( - from_email = "sender@gmail.com", - to_email = "recipient@gmail.com", - subject = "Bhopli is the best!", - cc_emails = None, - bcc_emails = None - ) - my_mail.add_html( - """ - - - - - Sample HTML String - - - -

    Hello, Bhopli!

    -

    Bhopli is the best, most well-behaved cat in the known universe.

    - - - """ - ) - my_mail.add_text("This is how you should pet her 👇") - my_mail.add_inline_image(r"../../../data/images/cat_petting.png") - my_mail.add_attachment(r"../../../data/pdf/sample_label.pdf") - print(my_mail.get_raw_message(as_base64 = True)) diff --git a/utils_v2/goog/gmail/json/messages/chatgpt_suggested_message_format.json b/utils_v2/goog/gmail/json/messages/chatgpt_suggested_message_format.json deleted file mode 100644 index 21bef48..0000000 --- a/utils_v2/goog/gmail/json/messages/chatgpt_suggested_message_format.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_id": ObjectId("..."), // MongoDB auto-generated ID - "message_id": "unique-message-id", // Unique identifier for the email - "thread_id": "thread-id", // Optional: Group of related messages - "subject": "Subject of the email", - "from": { - "name": "Sender Name", // Name of the sender - "email": "sender@example.com" // Sender's email address - }, - "to": [ // List of recipients - { - "name": "Recipient Name", - "email": "recipient@example.com" - } - ], - "cc": [ // List of CC recipients (optional) - { - "name": "CC Name", - "email": "cc@example.com" - } - ], - "bcc": [ // List of BCC recipients (optional) - { - "name": "BCC Name", - "email": "bcc@example.com" - } - ], - "date": ISODate("2024-11-26T12:00:00Z"), // Date the email was sent - "headers": { // Raw headers from the email - "X-Priority": "3", - "Content-Type": "multipart/alternative; boundary=\"boundary\"", - "X-Mailer": "Mailer XYZ" - }, - "body": { // The body of the email, with parts if multipart - "text": "Plain text body content", // Plain text part (if any) - "html": "

    HTML body content

    ", // HTML part (if any) - "parts": [ // List of parts for multipart emails - { - "content_type": "text/plain", - "content_transfer_encoding": "base64", - "content": "base64-encoded-content-here" - }, - { - "content_type": "text/html", - "content_transfer_encoding": "base64", - "content": "base64-encoded-html-content-here" - } - ] - }, - "attachments": [ // Attachments in the email - { - "filename": "file1.pdf", - "content_type": "application/pdf", - "content_transfer_encoding": "base64", - "content": "base64-encoded-file-content" - }, - { - "filename": "image1.jpg", - "content_type": "image/jpeg", - "content_transfer_encoding": "base64", - "content": "base64-encoded-image-content" - } - ], - "flags": { // Optional flags for internal tracking - "read": false, - "spam": false - }, - "received_timestamp": ISODate("2024-11-26T12:01:00Z") // Time the email was received (optional) -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/formatted_message_list_20241126.json b/utils_v2/goog/gmail/json/messages/formatted_message_list_20241126.json deleted file mode 100644 index 5e50380..0000000 --- a/utils_v2/goog/gmail/json/messages/formatted_message_list_20241126.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "messages": { - "193669615aa33694": { - "threadId": "193669615aa33694" - }, - "19365d0239aa1aaf": { - "threadId": "19365d0239aa1aaf" - }, - "193641e1379da64d": { - "threadId": "193641e1379da64d" - }, - "193640e74d93dc9b": { - "threadId": "193640e74d93dc9b" - }, - "19363d6a7f50225a": { - "threadId": "19363d6a7f50225a" - }, - "19363ba8e2582133": { - "threadId": "19363ba8e2582133" - }, - "19362f9983e58ea6": { - "threadId": "19362f9983e58ea6" - }, - "19360aabcb976cfc": { - "threadId": "19360aabcb976cfc" - }, - "193604ad97c9fe62": { - "threadId": "193604ad97c9fe62" - }, - "1935e92672e67f22": { - "threadId": "1935e92672e67f22" - } - }, - "nextPageToken": "11954226706764006151", - "resultSizeEstimate": 402 -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_01_193669615aa33694_no_attachment_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_01_193669615aa33694_no_attachment_20241126.json deleted file mode 100644 index 3d9008e..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_01_193669615aa33694_no_attachment_20241126.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "id": "193669615aa33694", - "threadId": "193669615aa33694", - "labelIds": [ - "IMPORTANT", - "CATEGORY_UPDATES", - "INBOX" - ], - "snippet": "Khushal PS, Someone is attempting to reset the password of your account. When: Nov 26, 2024 04:48 AM Central European Standard Time Device: Google Chrome Windows (Desktop) Near: Luxembourg, Luxembourg", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp1258653wrq; Mon, 25 Nov 2024 19:48:52 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IHex3BNvuKbH0rDOVdVZr5VN+wGXuempHJ5NU47Pc6su+PhLTTyWxQVeZqbgHHqPxn1k368" - }, - { - "name": "X-Received", - "value": "by 2002:a05:6000:4904:b0:382:4eef:28a with SMTP id ffacd0b85a97d-38260bce857mr13224341f8f.43.1732592932057; Mon, 25 Nov 2024 19:48:52 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732592932; cv=none; d=google.com; s=arc-20240605; b=MGUuj+jr2ksXZS0o19wNISVfgnf59VtgpBi6dc45I4/NyDwg2NVtSewPcv4jOAcnGX H+mxaJV5fgziT52/Kd6U/n+MSCut6o9DvIPg5qNz4ahcTeuRo5n4K+yLmz5Rp2PvLuQs 1tALdDnwpNjbCjd+gYvOZHSfYovK3BZ3+B+utyiE0U57nYkdOhIBEJ/oGoy6OVAN+Lb5 lukod7ijj+dKdMcsw8SNO7JQWsjDMpG0LtUXtY0B44bKdF+LeBgYkzzNhiT5eedH7V3N 7cMvVw0ZCjLZKA1YH/CMKgTdwqgJqVWi3RvL4X/uCJxbBAOQtq/6JzPJCOneXVqEU3Wh my8A==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:bounces-to:mime-version:subject:message-id:to:from:date :dkim-signature:dkim-signature; bh=jxPSaVfaHN0N+lJ6K9ay8G6f4hb8T+t7HKX1DJ6mpfY=; fh=u/EceduMLbMJaVmVACWimtVNyu5iebWbNB9Q7JrDYgs=; b=Iq4DXicQhzSSrkkA+f9fABfl6pE1B6vhbNEJ/p5/5vAFtyJVzZCmhcBKT11U4gUHPk PopE3XbKRLAspJKz08ZlECgkXOpfT0ukUgCwyCMj+YBpf7iNRjMRqkw9bgW+INj0wdhm e+jPcPitmLhqI5zJqaKhbdK1Af66uL//OfwaZi0Wo/OGY/wP5C4SpCCFpW9n3acD7Fjz HyUwpB/ek0xzHYKscBTnjCovwmff0LCkgUcBAgNxf/Nze+++yd5FAh2v/asvfI4MRZT3 aQZZRsdLrzDVX1iiwpooCqKf8XJpmlC5JG/rOVhz01cgqLEpVEQXwxLUxpf+4JMJFbsx LRgQ==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@amazon.in header.s=micqgm67cqsvdipseryzt5t5odsvewta header.b=LswfTW3G; dkim=pass header.i=@amazonses.com header.s=uku4taia5b5tsbglxyj6zym32efj7xqv header.b=YyxLmGgS; spf=pass (google.com: domain of 202411260348515ca421ac8b144afa9c8567766550p0eu-c3tl5yxbh49vj7@bounces.amazon.in designates 54.240.1.2 as permitted sender) smtp.mailfrom=202411260348515ca421ac8b144afa9c8567766550p0eu-C3TL5YXBH49VJ7@bounces.amazon.in; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.in" - }, - { - "name": "Return-Path", - "value": "<202411260348515ca421ac8b144afa9c8567766550p0eu-C3TL5YXBH49VJ7@bounces.amazon.in>" - }, - { - "name": "Received", - "value": "from a1-2.smtp-out.eu-west-1.amazonses.com (a1-2.smtp-out.eu-west-1.amazonses.com. [54.240.1.2]) by mx.google.com with ESMTPS id ffacd0b85a97d-385be9920f4si1030431f8f.693.2024.11.25.19.48.51 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 25 Nov 2024 19:48:52 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of 202411260348515ca421ac8b144afa9c8567766550p0eu-c3tl5yxbh49vj7@bounces.amazon.in designates 54.240.1.2 as permitted sender) client-ip=54.240.1.2;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@amazon.in header.s=micqgm67cqsvdipseryzt5t5odsvewta header.b=LswfTW3G; dkim=pass header.i=@amazonses.com header.s=uku4taia5b5tsbglxyj6zym32efj7xqv header.b=YyxLmGgS; spf=pass (google.com: domain of 202411260348515ca421ac8b144afa9c8567766550p0eu-c3tl5yxbh49vj7@bounces.amazon.in designates 54.240.1.2 as permitted sender) smtp.mailfrom=202411260348515ca421ac8b144afa9c8567766550p0eu-C3TL5YXBH49VJ7@bounces.amazon.in; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.in" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=micqgm67cqsvdipseryzt5t5odsvewta; d=amazon.in; t=1732592931; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type; bh=LH5AoXgTmD6qrgNMmPg2N4Kjd+MdburdNGizfre6x3E=; b=LswfTW3GeZuY88a0WncujiGM27tYdnz6Av7797ZGsnTKvkeVWnWqYBMHcRH50Cgs QWcPBr4jmdQU9h3TpG9J+78+mXdrtdwhdz3K5fujCT02uy0oOK2uqvTrnPfHsBlkAip LpDrgn2P6RF7y72ddT/unLtQlsnmWZBLgXjBKZOo=" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=uku4taia5b5tsbglxyj6zym32efj7xqv; d=amazonses.com; t=1732592931; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:Feedback-ID; bh=LH5AoXgTmD6qrgNMmPg2N4Kjd+MdburdNGizfre6x3E=; b=YyxLmGgSMzhlrPeg3A8LjAG8yfh270KXdGxCTA6Yq3TJSGytfPO8zz7Tnpq4n/0A skRS4H3ESkjUsX2RDrZ90YR5zp8sSZmRBzRi6oBoQokldSoICr/MzFp4dBS9gYu8zC/ OhWBqAiYL4hgBR//EkoyVt2QHKG3x7Gq+jVg9WIo=" - }, - { - "name": "Date", - "value": "Tue, 26 Nov 2024 03:48:51 +0000" - }, - { - "name": "From", - "value": "\"amazon.in\" " - }, - { - "name": "To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Message-ID", - "value": "<0102019366961300-e4b92b6b-20ce-4b13-bc9f-440655f4fc7d-000000@eu-west-1.amazonses.com>" - }, - { - "name": "Subject", - "value": "amazon.in: Password recovery" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_1336386_1018227011.1732592931577\"" - }, - { - "name": "X-AMAZON-MAIL-RELAY-TYPE", - "value": "notification" - }, - { - "name": "Bounces-to", - "value": "202411260348515ca421ac8b144afa9c8567766550p0eu-C3TL5YXBH49VJ7@bounces.amazon.in" - }, - { - "name": "X-AMAZON-METADATA", - "value": "CA=C3TL5YXBH49VJ7-CU=AO8IZF00FXJKW" - }, - { - "name": "X-Original-MessageID", - "value": "" - }, - { - "name": "Feedback-ID", - "value": "610684451::1.eu-west-1.UIAUrMfbpGrxavqnRE0yoZrAUBI9C7GRNUx/kUDo6B4=:AmazonSES" - }, - { - "name": "X-SES-Outgoing", - "value": "2024.11.26-54.240.1.2" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=utf-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 9148, - "data": "PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhlYWQ-DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4NCiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICBib2R5IHsNCiAgICAgICAgICAgIG1hcmdpbjowOw0KICAgICAgICAgICAgY29sb3I6IzMzMzsNCiAgICAgICAgfQ0KDQogICAgICAgIGEgew0KICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQogICAgICAgICAgICBjb2xvcjojMDA2Njk5Ow0KICAgICAgICB9DQoNCiAgICAgICAgcCB7DQogICAgICAgICAgICBtYXJnaW46MHB4Ow0KICAgICAgICB9DQoNCiAgICAgICAgaW1nIHsNCiAgICAgICAgICAgIGJvcmRlcjowOw0KICAgICAgICAgICAgbWFyZ2luOjA7DQogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgIH0NCg0KICAgICAgICAjdGl0bGUgcHsNCiAgICAgICAgICAgIGZvbnQtc2l6ZToxNXB4Ow0KICAgICAgICAgICAgZm9udC1mYW1pbHk6ICJBbWF6b24gRW1iZXIiLCBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICAgICAgfQ0KDQogICAgPC9zdHlsZT4NCiAgICA8dGl0bGU-PC90aXRsZT4NCjwvaGVhZD4NCjxib2R5PjxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9RFI5QUVRM0NVVkdEJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDM0ODUxNWNhNDIxYWM4YjE0NGFmYTljODU2Nzc2NjU1MHAwZXUmUj1EUVQxMVZSWks5UlcmVD1PJlU9aHR0cHMlM0ElMkYlMkZpbWFnZXMtZXUuc3NsLWltYWdlcy1hbWF6b24uY29tJTJGaW1hZ2VzJTJGRyUyRjAxJTJGbmF2JTJGdHJhbnNwLmdpZiZIPTZUQVQzQU5OOUFIS1BJTFVIUkVIN0FOQUxNMEEmcmVmXz1wZV8zMzI3MDMyMV82MTA2ODQ0NTFfb3BlbnMiIC8-DQo8dGFibGUgYWxpZ249ImNlbnRlciIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI1MjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0icGFkZGluZy1ib3R0b206IDIwcHg7Ij4NCiAgICA8dGJvZHk-DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI1MjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0ibWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDIwcHg7IG1hcmdpbi1yaWdodDogMjBweDsiPg0KICAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgIDx0ciB3aWR0aD0iNTIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTIwIiBoZWlnaHQ9IjUyIiBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2VhZWFlYTsgcGFkZGluZy10b3A6MTBweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHdpZHRoPSI1MjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDciIGlkPSJsb2dvIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGlkPSJhbWF6b25Mb2dvSW1nIiBhbHQ9IkxvZ28gSW1hZ2UiIHdpZHRoPSIxMDciIGhlaWdodD0iYXV0byIgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS9hdXRocG9ydGFsL3Rpdi9hbWF6b25fbG9nb19SR0IuX0NCNDI0ODg3ODIwXy5wbmciLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgZm9udC1zaXplOjE3cHg7IGZvbnQtZmFtaWx5OiAnQW1hem9uIEVtYmVyJywgQXJpYWwsIHNhbnMtc2VyaWY7IHBhZGRpbmctdG9wOiAxNXB4OyBwYWRkaW5nLWJvdHRvbTogMHB4OyBwYWRkaW5nLWxlZnQ6IDBweDsgcGFkZGluZy1yaWdodDogMXB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPktodXNoYWwgUCBTLDwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgZm9udC1zaXplOjE3cHg7IGZvbnQtZmFtaWx5OiAnQW1hem9uIEVtYmVyJywgQXJpYWwsIHNhbnMtc2VyaWY7IHBhZGRpbmctdG9wOiAxNXB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgcGFkZGluZy1sZWZ0OiAwcHg7IHBhZGRpbmctcmlnaHQ6IDFweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlNvbWVvbmUgaXMgYXR0ZW1wdGluZyB0byByZXNldCB0aGUgcGFzc3dvcmQgb2YgeW91ciBhY2NvdW50LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQoNCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249ImxlZnQiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImZvbnQtc2l6ZToxN3B4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgZm9udC1mYW1pbHk6ICdBbWF6b24gRW1iZXInLCBBcmlhbCwgc2Fucy1zZXJpZjsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctbGVmdDogMHB4OyBwYWRkaW5nLXJpZ2h0OiA1cHg7IiA-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3A7IGZvbnQtZmFtaWx5OiAnQW1hem9uIEVtYmVyJywgQXJpYWwsIHNhbnMtc2VyaWY7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmctdG9wOiAxMHB4OyBwYWRkaW5nLWxlZnQ6IDBweDsgcGFkZGluZy1yaWdodDogMXB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm92IDI2LCAyMDI0IDA0OjQ4IEFNIENlbnRyYWwgRXVyb3BlYW4gU3RhbmRhcmQgVGltZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyBmb250LWZhbWlseTogJ0FtYXpvbiBFbWJlcicsIEFyaWFsLCBzYW5zLXNlcmlmOyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nLWxlZnQ6IDBweDsgcGFkZGluZy1yaWdodDogNXB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgZm9udC1mYW1pbHk6ICdBbWF6b24gRW1iZXInLCBBcmlhbCwgc2Fucy1zZXJpZjsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZy1sZWZ0OiAwcHg7IHBhZGRpbmctcmlnaHQ6IDFweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZSBDaHJvbWUgV2luZG93cyAoRGVza3RvcCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgZm9udC1mYW1pbHk6ICdBbWF6b24gRW1iZXInLCBBcmlhbCwgc2Fucy1zZXJpZjsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZy1sZWZ0OiAwcHg7IHBhZGRpbmctcmlnaHQ6IDVweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lYXI6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkID4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgZm9udC1mYW1pbHk6ICdBbWF6b24gRW1iZXInLCBBcmlhbCwgc2Fucy1zZXJpZjsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZy1sZWZ0OiAwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAxcHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMdXhlbWJvdXJnLCBMdXhlbWJvdXJnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgZm9udC1zaXplOjE3cHg7IGZvbnQtZmFtaWx5OiAnQW1hem9uIEVtYmVyJywgQXJpYWwsIHNhbnMtc2VyaWY7IHBhZGRpbmctdG9wOiAxNXB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgcGFkZGluZy1sZWZ0OiAwcHg7IHBhZGRpbmctcmlnaHQ6IDFweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA-SWYgdGhpcyB3YXMgeW91LCB5b3VyIHZlcmlmaWNhdGlvbiBjb2RlIGlzOjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0QzRDNEMzsgdGV4dC1hbGlnbjogbGVmdDsgZm9udC1zaXplOjIwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LWZhbWlseTogJ0FtYXpvbiBFbWJlcicsIEFyaWFsLCBzYW5zLXNlcmlmOyBwYWRkaW5nLXRvcDogMTVweDsgcGFkZGluZy1ib3R0b206IDEwcHg7IHBhZGRpbmctbGVmdDogMTBweDsgcGFkZGluZy1yaWdodDogMXB4OyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxMHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEwcHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiAgMzM2NjA1PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBmb250LXNpemU6MTdweDsgZm9udC1mYW1pbHk6ICdBbWF6b24gRW1iZXInLCBBcmlhbCwgc2Fucy1zZXJpZjsgcGFkZGluZy10b3A6IDE1cHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyBwYWRkaW5nLWxlZnQ6IDBweDsgcGFkZGluZy1yaWdodDogMXB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5JZiB5b3UgZGlkbiYjMzk7dCByZXF1ZXN0IGl0OiA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9RFI5QUVRM0NVVkdEJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDM0ODUxNWNhNDIxYWM4YjE0NGFmYTljODU2Nzc2NjU1MHAwZXUmUj0zRkxBS1VTRVNUR1YzJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmElMkZjJTJGciUyRkFDbHFWOUtwZGp1ZmFoRVRjdnFVaHhkTm8lM0ZyZWZfJTNEcGVfMzMyNzAzMjFfNjEwNjg0NDUxJkg9VVNDNFc2QU5CSVNHOFlKMFRMU1RJVUNNTEkwQSZyZWZfPXBlXzMzMjcwMzIxXzYxMDY4NDQ1MSI-IGNsaWNrIGhlcmUgdG8gZGVueS4gPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI1MjAiIGhlaWdodD0iNDUiIGNvbHNwYW49IjIiIGFsaWduPSJsZWZ0IiBzdHlsZT0iZm9udC1zaXplOjE3cHg7IGZvbnQtZmFtaWx5OiAnQW1hem9uIEVtYmVyJywgQXJpYWwsIHNhbnMtc2VyaWY7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmctbGVmdDogMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgcGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctcmlnaHQ6IDFweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9u4oCZdCBzaGFyZSBpdCB3aXRoIG90aGVycy4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUyMCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAnQW1hem9uIEVtYmVyJywgQXJpYWwsIHNhbnMtc2VyaWY7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmctbGVmdDogMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgcGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctcmlnaHQ6IDFweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiA1MjBweDsgYm9yZGVyOiAxcHggc29saWQgIzgwODA4MDsgcGFkZGluZy10b3A6IDVweDsgcGFkZGluZy1sZWZ0OiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMjBweDsgbWFyZ2luLXRvcDogMjVweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1ib3R0b206IDhweDsgY29sb3I6ICM0NDQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIHN0eWxlPSJmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDE1cHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyI-SXMgaXQgc2FmZSB0byBmb2xsb3cgdGhpcyBsaW5rPzwvaDI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBjb2xvcjogYmxhY2s7IHBvaW50ZXItZXZlbnRzOiBub25lOyBjdXJzb3I6IGRlZmF1bHQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsaW5rIHByb3ZpZGVkIGluIHRoaXMgZW1haWwgc3RhcnRzIHdpdGgg4oCcaHR0cHM6Ly93d3cuYW1hem9uLmlu4oCdLiBJZiB5b3UgcHJlZmVyLCBjb3B5IHRoZSBmb2xsb3dpbmcgbGluayBhbmQgcGFzdGUgaXQgaW50byBhIGJyb3dzZXIgdG8gdmlldy4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgY29sb3I6IGJsYWNrOyBwb2ludGVyLWV2ZW50czogbm9uZTsgY3Vyc29yOiBkZWZhdWx0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiA2MDAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cuYW1hem9uLmluL2EvYy9yL0FDbHFWOUtwZGp1ZmFoRVRjdnFVaHhkTm8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4NCjxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9RFI5QUVRM0NVVkdEJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDM0ODUxNWNhNDIxYWM4YjE0NGFmYTljODU2Nzc2NjU1MHAwZXUmUj0zMlQ0N0s3UFBPMFhOJlQ9RSZVPWh0dHBzJTNBJTJGJTJGaW1hZ2VzLWV1LnNzbC1pbWFnZXMtYW1hem9uLmNvbSUyRmltYWdlcyUyRkclMkYwMSUyRm5hdiUyRnRyYW5zcC5naWYmSD1GQkZFTjVTSVVGWTJBNFZTSkVFSzA1V1pRVFVBJnJlZl89cGVfMzMyNzAzMjFfNjEwNjg0NDUxX29wZW4iIC8-PC9ib2R5Pg0KPC9odG1sPg==" - } - } - ] - }, - "sizeEstimate": 14907, - "historyId": "527966", - "internalDate": "1732592931000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_02_19367930033154ca_with_attachment_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_02_19367930033154ca_with_attachment_20241126.json deleted file mode 100644 index a9a6834..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_02_19367930033154ca_with_attachment_20241126.json +++ /dev/null @@ -1,258 +0,0 @@ -{ - "id": "19367930033154ca", - "threadId": "19367930033154ca", - "labelIds": [ - "UNREAD", - "IMPORTANT", - "CATEGORY_PERSONAL", - "INBOX" - ], - "snippet": "Sample content. Inline graphics done. Sample monospaced How about some Headers? Hello, World! These are quotes. How about some emojis? \ud83d\ude1a\ud83d\ude05\ud83d\ude05\ud83e\udd70\ud83d\ude18\ud83d\ude01\ud83d\ude01 There's also an attachment!", - "payload": { - "partId": "", - "mimeType": "multipart/mixed", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp1327351wrq; Tue, 26 Nov 2024 00:25:08 -0800 (PST)" - }, - { - "name": "X-Received", - "value": "by 2002:a05:690c:6111:b0:6e3:fd6:6ccb with SMTP id 00721157ae682-6eee08c3459mr156525787b3.13.1732609507838; Tue, 26 Nov 2024 00:25:07 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732609507; cv=none; d=google.com; s=arc-20240605; b=VDostCh8Kr1QGeQoXgLjYyrkymtwKEVHTyPaNeSjy30Q0B4GTTIBIPbKgkL6UazG4T s92UnE+Br4HJUSsqbtOdKTV1Pwt9lI3EzASDMX3OVGccdViTyUgGjgNuagV2fUVQugYi BJWxLrWZXVVtKkLNqRDOEQgiPi6t869FTB4877V8dKxQs99Q8IBncekOq3f6+SmsFlIl U3l6EUgaV/7MFzNRofsmXFGEG0TLto+Xgx5bMQ8B0OpjSFXR2Va/1xF5BmrzJTLgL6N5 zct3VIRLMxkf+8v3oniTG7yaaCQMPLxOq1pKXhP/MfKzgvdo5r14/kAzsj05rQ/L2/rT 2OrQ==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=9NSLykdU3XzuxItzVTTQJjRRBR6yhJqdgYRarHa+VdY=; fh=KtxgdfxhT3MZUXDfdB/Mxp08o9TbOvoJMvz1V2wYTKk=; b=Xqtl2jfteUY2I+wdSwdllaqPKg1QP8hUyJpP/644zwGrOBdLbjCO8Po5C9KJfxUh7i H7UMWfEWkulB52WFTDU/54UY8lnX7iGZEMtT/4twKUGToWPPWeG/wmh/I4W9ZEmA/qXG OiRrBlJI3NJowsrnfoqXrpV/W5mz1SNuJBkj5k71+3vrPVlEmGwGmz8/MCG+RF2yV4nz QEVg613QkuThPEEsgYdHbfWDlF8jnGbAS+Lyt8ZdixVvO4/Gq5swuGUHihfeV+Fxt5Kv L2Wbqiq7UFJF9YJEtezJOdkdrTxs8dz6bTUZTrpWtRYxoBuH76HB+f9yrhOIRFTxor+9 18dA==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=\"Adx/Ch2H\"; spf=pass (google.com: domain of orangebhopli@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=orangebhopli@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=pass header.i=@gmail.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id 00721157ae682-6eee01062easor78223267b3.12.2024.11.26.00.25.07 (Google Transport Security); Tue, 26 Nov 2024 00:25:07 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of orangebhopli@gmail.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=\"Adx/Ch2H\"; spf=pass (google.com: domain of orangebhopli@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=orangebhopli@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=pass header.i=@gmail.com" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732609507; x=1733214307; dara=google.com; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=9NSLykdU3XzuxItzVTTQJjRRBR6yhJqdgYRarHa+VdY=; b=Adx/Ch2H1Vw5fzCEcIPf/EuHGviFMr1/Gw93WwruoabampXxraQ5hkcJNx0yi+zM2/ 9wlmVqcDwiWM1dFrkc1hPNMyyH4h7hCXjGsDbK8hkUE/Fk1AR51fhjliB9AZFkps+PUR 21CYTDMzWWlHjKlBpnM1axU9suvv04NqDZ8Hr7LAXysd9eF1ypoTWjwWMJ5QGKpoQo6W qf3m5yuqSXLAtbTKZN6K3qUO+S9ZRjUahw0eke7ieQ2uKR8dFwaoS899KhVBY5bZpLzr gEjYkNbzZGN4bp/LIJcHmgueZ5J0L6V+zaYMIqNRp3wOwAe41nZSAf6PvLxixLZoTvyH TmmA==" - }, - { - "name": "X-Google-DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732609507; x=1733214307; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=9NSLykdU3XzuxItzVTTQJjRRBR6yhJqdgYRarHa+VdY=; b=F5yE7IslZpO2UHCSg9jCYE645+q7dW9WO9S0DIb4oRcTlz/qgI1fwnnB0vlWvgXQxJ Af8/WUW6AJm/8mJ//SNXSDwE28OZiZqR+i/SYc0yontGepFawQAZg9xFRLspp7O/2UAL EHrkssz9noe2wPPdcPGYanXfoiSLtX/3XnrGCg1P5Y4jdy7p6624f87Xx+Mno1t8q2xh Odh2QrURKad50BqY+UB20+um9ommh4J0BOsD9WiVCfu5isvTCfwZYAtjYUJ48UVWLh3b kAPAaSic4g1zQzlOychUnqFB95VrrODUNUACfKBuIR0YbUdsgjMzn9p4RQ1LAgr9NfvY 62kw==" - }, - { - "name": "X-Forwarded-Encrypted", - "value": "i=1; AJvYcCVe+1Kjt1hhMEjYG2UyrzV/DvH4xn376Ya7lsLKkTIVIAJGmG8xKSkvvJAmXIAXRyYuWSNpPVXGyjSKXTgsLlU=@gmail.com" - }, - { - "name": "X-Gm-Message-State", - "value": "AOJu0Ywb3oN+4RLkTx99fCaTMOlGwSTJR7AWBy7IvxJyBYNwLV6Of7c2 vtYqtaRl1CcUgUXmGnXqjfQsSX6DT4LLNPGCsrrzk4VXfV26FJA1iaDFm/ey7pRaAucm5dGPHRO 9oG7H+96wM0pzmY3Tlb9LUEY3NIdSR9H2" - }, - { - "name": "X-Gm-Gg", - "value": "ASbGncuwgQwpQZrb7exEtts26PEAwkklAu9DD/4RvvBSiHYGDUD7+909oeyrMtfk66q IuA94Z8WcFFe3TabyhyXIjGTCEF5+Qg==" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IFy7wXSaJCDrrXclKRzxMFtyv1HrgyWSfgyomoDnvBS4NPu9KBdzHjvcekKjw9uKzJAj5R2iOl+mZuCt5sjIws=" - }, - { - "name": "X-Received", - "value": "by 2002:a05:690c:6701:b0:6ee:b5a6:a67a with SMTP id 00721157ae682-6eee0a402acmr176495297b3.28.1732609506221; Tue, 26 Nov 2024 00:25:06 -0800 (PST)" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "From", - "value": "TheBhopli " - }, - { - "name": "Date", - "value": "Tue, 26 Nov 2024 13:54:54 +0530" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "Subject", - "value": "Test Mail for GMail API." - }, - { - "name": "To", - "value": "\"pskhushal@gmail.com\" " - }, - { - "name": "Cc", - "value": "\"khushal@easyfi.net.in\" , \"bhushan.thakkar@gmail.com\" " - }, - { - "name": "Content-Type", - "value": "multipart/mixed; boundary=\"00000000000027d46c0627cc96ea\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "multipart/related", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "multipart/related; boundary=\"00000000000027d46c0627cc96e9\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0.0", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"00000000000027d46c0627cc96e8\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0.0.0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"UTF-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 236, - "data": "U2FtcGxlIGNvbnRlbnQuDQoNCltpbWFnZTogY2hhdC5wbmddDQoNCklubGluZSBncmFwaGljcyBkb25lLg0KDQpTYW1wbGUgbW9ub3NwYWNlZA0KDQoqSG93IGFib3V0IHNvbWUgSGVhZGVycz8qDQoNCkhlbGxvLCBXb3JsZCEgVGhlc2UgYXJlIHF1b3Rlcy4NCg0KDQpIb3cgYWJvdXQgc29tZSBlbW9qaXM_IPCfmJrwn5iF8J-YhfCfpbDwn5iY8J-YgfCfmIENClRoZXJlJ3MgYWxzbyBhbiAqYXR0YWNobWVudCohDQo=" - } - }, - { - "partId": "0.0.1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"UTF-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 675, - "data": "PGRpdiBkaXI9Imx0ciI-U2FtcGxlIGNvbnRlbnQuPGRpdj48YnI-PGRpdj48aW1nIHNyYz0iY2lkOmlpX20zeTZ0dTg1MCIgYWx0PSJjaGF0LnBuZyIgd2lkdGg9IjIyMiIgaGVpZ2h0PSIyMjIiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsiPjwvZGl2PjxkaXY-PGJyPjwvZGl2PjxkaXY-SW5saW5lIGdyYXBoaWNzIGRvbmUuPC9kaXY-PGRpdj48YnI-PC9kaXY-PGRpdj48Zm9udCBmYWNlPSJtb25vc3BhY2UiPlNhbXBsZSBtb25vc3BhY2VkPC9mb250PjwvZGl2PjxkaXY-PGJyPjwvZGl2PjxkaXY-PGI-PGZvbnQgc2l6ZT0iNiI-SG93IGFib3V0IHNvbWUgSGVhZGVycz88L2ZvbnQ-PC9iPjwvZGl2PjxkaXY-PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij5IZWxsbywgV29ybGQhIFRoZXNlIGFyZSBxdW90ZXMuPC9ibG9ja3F1b3RlPjxkaXY-PGJyPjwvZGl2PjxkaXY-SG93IGFib3V0IHNvbWUgZW1vamlzP8Kg8J-YmvCfmIXwn5iF8J-lsPCfmJjwn5iB8J-YgTxicj48L2Rpdj48L2Rpdj48ZGl2PlRoZXJlJiMzOTtzIGFsc28gYW4gPGk-PHU-YXR0YWNobWVudDwvdT48L2k-ITwvZGl2PjwvZGl2Pg0K" - } - } - ] - }, - { - "partId": "0.1", - "mimeType": "image/png", - "filename": "chat.png", - "headers": [ - { - "name": "Content-Type", - "value": "image/png; name=\"chat.png\"" - }, - { - "name": "Content-Disposition", - "value": "inline; filename=\"chat.png\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "base64" - }, - { - "name": "Content-ID", - "value": "" - }, - { - "name": "X-Attachment-Id", - "value": "ii_m3y6tu850" - } - ], - "body": { - "attachmentId": "ANGjdJ88SNHhnjq5-Alk71WYYaL72CUhJn6_geE_GP7JZKZdcSIR56LPGVklvFO_IuMFqeDkDT2U4r8SXTSMb-uBnNrio-NeXiW2p8vPWnV2yq-YaZxG0xBD6WILt5Qwg_43lv9_TGnjSvWn5QrGzusOttPluVRIWtv0-dksvYXrHDbS5MC0IYX4qpv8dbvGto5rgH_iIsIMav2aXbm5_o_mmxlxO9GavC8G9ZWD9BbuLlKKMJQAXgGXlfOlWA1Ukr5Cr0UO5LZbeTtVX3dZMYs3QfMwlGkVLT7Gam6aZfW8JduWhObFP9ghg2haF4tooXcUFNOPX7e2Axto-OmYAXLaPZRh-xpSzEObOeQv8gAHihoXlkA5Y_A2m45-emjdSiwff2Ui0VRZs96_DMGO", - "size": 17466 - } - } - ] - }, - { - "partId": "1", - "mimeType": "image/png", - "filename": "chat.png", - "headers": [ - { - "name": "Content-Type", - "value": "image/png; name=\"chat.png\"" - }, - { - "name": "Content-Disposition", - "value": "attachment; filename=\"chat.png\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "base64" - }, - { - "name": "Content-ID", - "value": "" - }, - { - "name": "X-Attachment-Id", - "value": "f_m3y6xx8e1" - } - ], - "body": { - "attachmentId": "ANGjdJ-XMpv18VYpIKT1zc45Su99KXSI3r3YaVquSLfKE3DqgQ7XjO7p4iHRHvc47lIr70rLBk2H8lLlMifTCFxFLMy0q_uFgsCHASCDeq-opjPkeDxC3BaxACeyeNWaZYANXgUCFYqCygTLkIoeggJDBxmzPn99baxvoJqcRLXROO1mSWGB4K0PLJcP35r8Y2D9lVRjSAJupzf7HLYLzimY1Q-X6Ge2qNCNnree-rS47FNXQgvFfVdV_x7jcvLE7JJl5cBBIyus-TtTulMk0RrFbcn5zKH7AniW6IF7v-mLOUzpDVye9tIiVqc6W4EdLeP3wmIaMVy4shsAdHkKtbjwLxicycke8Vi5hAV50s0pCllN26rSHakAA9zswG9q5z3cbS5LNMdEUpgWt6ON", - "size": 17466 - } - } - ] - }, - "sizeEstimate": 55270, - "historyId": "528587", - "internalDate": "1732609494000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_03_19365d0239aa1aaf_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_03_19365d0239aa1aaf_20241126.json deleted file mode 100644 index 1697bdc..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_03_19365d0239aa1aaf_20241126.json +++ /dev/null @@ -1,175 +0,0 @@ -{ - "id": "19365d0239aa1aaf", - "threadId": "19365d0239aa1aaf", - "labelIds": [ - "CATEGORY_PROMOTIONS", - "UNREAD", - "INBOX" - ], - "snippet": "Amazon.in Your Amazon.in Today's Deals Get Amazon App Hello Khushal PS, Are you looking for something in our ACCESSORY OR PART OR SUPPLY store? If so, you might be interested in these items.", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp1199268wrq; Mon, 25 Nov 2024 16:12:39 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IGrkPfvb+dSkwa9iS6Kivda2qwRAG9D9snZa0xCBnTtWrRkREL9rtlGKQGz3LviU5rqswOE" - }, - { - "name": "X-Received", - "value": "by 2002:a05:6512:5c1:b0:53d:d3cb:debb with SMTP id 2adb3069b0e04-53dd3cbdf8dmr6301124e87.0.1732579959442; Mon, 25 Nov 2024 16:12:39 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732579959; cv=none; d=google.com; s=arc-20240605; b=T0Yokutt7qdL5F2L8pFD9jy1sTZkKCQjCtzNVwWxLQnQLWddpXD69lwysx8hp6p9nP Ld/Kdy4Jg98AsGT9wsizztjLhBYB30vfpDRnlxjbmNQ42f/uZZgmdAsJ79uRfpJ9Nn6M ZXDRLgrUc3jFMoKlHBTEwVieL8tPaZ5magEYD4egIHS7CA+nIArfHz6aSb33oylx//5p PKYD+3f19u86uzbCEEdWbbNh/zfCkt31Rz3/3PY24DE9Cc9ZusKjbjQ66juEQiSV9W71 1xDNuIurQUXB+kk7ctRfy7OyuEIFMSN6UrKRwG20ge7uf8mz3jAnIzE6ouaej2BqI8Yk wQwQ==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:list-unsubscribe:list-unsubscribe-post:bounces-to :mime-version:subject:message-id:to:from:date:dkim-signature :dkim-signature; bh=ae6BFYuWr0k+7ooGQp/2cSWiFLurA8Xuta8hwCJJBCo=; fh=u/EceduMLbMJaVmVACWimtVNyu5iebWbNB9Q7JrDYgs=; b=CHLYewk0wxYzvOHRZrCpm/dKZmGowdrShKvKQ4v8wZnK754ewrNclJiBlUupwLrl51 Vbek14E9T2sW0yYGLghgWMmOskjKnx8hK7l2LwdD1hpegXReORvlSnIDAsIoftn3/5KF cHRYLlUVecVfDgj0fhKvvpA/9NNNc0R113RoyfJlGcv+Km8NhKpvZdIRpbvPzyFd5S4B aiOO7AztFhQaKYphmno1otSs/oXEPywWTwNT6ZyJ/qAwoHqwKrHzRu8GvphwsoimngTQ Fbo0+vFrZFWFrKBv6n7uxA9hWQv/jqssH8uJ0/RD9E3rmUSAQQlS6NCh6mU/7i0wiVLI 6aoA==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@amazon.in header.s=55spn7jg3iwyluzn4ej7wq3ev2vqedgu header.b=CjSOuKcT; dkim=pass header.i=@amazonses.com header.s=uku4taia5b5tsbglxyj6zym32efj7xqv header.b=Frviu8Z2; spf=pass (google.com: domain of 202411260012388bce9401ff544ee1b647d13d7450p0eu-c17nwh9w055t8b@bounces.amazon.in designates 54.240.0.92 as permitted sender) smtp.mailfrom=202411260012388bce9401ff544ee1b647d13d7450p0eu-C17NWH9W055T8B@bounces.amazon.in; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.in" - }, - { - "name": "Return-Path", - "value": "<202411260012388bce9401ff544ee1b647d13d7450p0eu-C17NWH9W055T8B@bounces.amazon.in>" - }, - { - "name": "Received", - "value": "from a0-92.smtp-out.eu-west-1.amazonses.com (a0-92.smtp-out.eu-west-1.amazonses.com. [54.240.0.92]) by mx.google.com with ESMTPS id a640c23a62f3a-aa5421552e6si288994166b.31.2024.11.25.16.12.39 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 25 Nov 2024 16:12:39 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of 202411260012388bce9401ff544ee1b647d13d7450p0eu-c17nwh9w055t8b@bounces.amazon.in designates 54.240.0.92 as permitted sender) client-ip=54.240.0.92;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@amazon.in header.s=55spn7jg3iwyluzn4ej7wq3ev2vqedgu header.b=CjSOuKcT; dkim=pass header.i=@amazonses.com header.s=uku4taia5b5tsbglxyj6zym32efj7xqv header.b=Frviu8Z2; spf=pass (google.com: domain of 202411260012388bce9401ff544ee1b647d13d7450p0eu-c17nwh9w055t8b@bounces.amazon.in designates 54.240.0.92 as permitted sender) smtp.mailfrom=202411260012388bce9401ff544ee1b647d13d7450p0eu-C17NWH9W055T8B@bounces.amazon.in; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.in" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=55spn7jg3iwyluzn4ej7wq3ev2vqedgu; d=amazon.in; t=1732579959; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:List-Unsubscribe-Post:List-Unsubscribe; bh=07AqkIKTtFOwN0qQZIsK14iOi5M9FBw5xK/nDSihny0=; b=CjSOuKcT6144qJClJDfhA83J75Biy6AiZzwkz1rze/q29TcfgzOIwpacPSDoi7Un DUw0V0T5HsxjSaGw/G72tgb0saDuF4O+bqVqetsmjAnX61PsFFIxQXWjjLgApsPL1tv BHQIbkKctKw0UQeFGJHflfYzIIUnq4ECRRRCAKcY=" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=uku4taia5b5tsbglxyj6zym32efj7xqv; d=amazonses.com; t=1732579959; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:List-Unsubscribe-Post:List-Unsubscribe:Feedback-ID; bh=07AqkIKTtFOwN0qQZIsK14iOi5M9FBw5xK/nDSihny0=; b=Frviu8Z24nZPNoNtEHMtr1G9zZuEOzjdBz2fwkAzpXiNjVuGh4ZAJxWpzEzbQ9SQ TxUOUfozpEGG5Cg3kPUMleQyFcfiqE63KLMcbasJlTIWzQXBpBNZHwKUvLCQYZyELaU BBo3cBXTMnKiQECLni+V2efPFroHEXCQ/onlojaU=" - }, - { - "name": "Date", - "value": "Tue, 26 Nov 2024 00:12:38 +0000" - }, - { - "name": "From", - "value": "\"Amazon.in\" " - }, - { - "name": "To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Message-ID", - "value": "<0102019365d02057-191fac4d-c476-4ca2-89d4-15b01d7efbd4-000000@eu-west-1.amazonses.com>" - }, - { - "name": "Subject", - "value": "Amkette USB Hub" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_4594082_890675294.1732579958850\"" - }, - { - "name": "X-AMAZON-MAIL-RELAY-TYPE", - "value": "notification" - }, - { - "name": "Bounces-to", - "value": "202411260012388bce9401ff544ee1b647d13d7450p0eu-C17NWH9W055T8B@bounces.amazon.in" - }, - { - "name": "X-AMAZON-METADATA", - "value": "CA=C17NWH9W055T8B-CU=AO8IZF00FXJKW" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "List-Unsubscribe", - "value": "" - }, - { - "name": "X-Original-MessageID", - "value": "" - }, - { - "name": "Feedback-ID", - "value": "1217703571::1.eu-west-1.kjoQSiqb8G+7lWWiDVsxjM2m0ynYd4I6yEFlfoox6aY=:AmazonSES" - }, - { - "name": "X-SES-Outgoing", - "value": "2024.11.26-54.240.0.92" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 4887, - "data": "DQoNCg0KDQoNCg0KPT09PT09PT09PQ0KQU1BWk9OLklODQo9PT09PT09PT09DQoNCkFyZSB5b3UgbG9va2luZyBmb3Igc29tZXRoaW5nIGluIG91ciBBQ0NFU1NPUlkgT1IgUEFSVCBPUiBTVVBQTFkgc3RvcmU_IElmIHNvLCB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB0aGVzZSBpdGVtcy4NCiANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgDQoNCkFta2V0dGUgNCBQb3J0IFN1cGVyc3BlZWQgVVNCIEh1YiAzLjAgZm9yIFBDL0xhcHRvcHMsIFBvcnRhYmxlIERhdGEgSHViIHdpdGggSGktU3BlZWQgRGF0YSBUcmFuc2ZlciBVcCB0byA1IEdCUFMsIENoYXJnaW5nIEZ1bmN0aW9ufCBTdHJvbmcgYW5kIER1cmFibGUsIFBvd2VyIFN1cHBseSBQb3J0IGFuZCA4MCBjbSBMb25nIENhYmxlIChCbGFjaykNCmJ5IEFta2V0dGUNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwOEpIWVdKTVAvcmVmPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMV90aQ0KLi4uDQoNCg0KWkVCUk9OSUNTIDE1MEhiIDQgUG9ydCBVU0IgSHViIHdpdGggRGVkaWNhdGVkIE9uL09mZiBTd2l0Y2gsIExlZCBJbmRpY2F0b3JzLCA0NUNtIENhYmxlIExlbmd0aCwgT3B0aW9uYWwgUG93ZXIgSW5wdXQgUG9ydCwgTXVsdGkgRGV2aWNlIGFuZCBQbHVnIFBsYXkgVXNhZ2UNCmJ5IFpFQlJPTklDUw0KaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3Byb2R1Y3QvQjBCNUg4NDZIVC9yZWY9cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8yX3RpDQouLi4NCg0KDQpBUk9QQU5BIFVTQiAzLjEgR2VuIDEgL1VTQiAzLjAgSGlnaCBTcGVlZCA1R2JwcyBIdWIgZm9yIExhcHRvcCA0IFBvcnQgUG9ydGFibGUgQWRhcHRlciB3aXRoIEluZGl2aWR1YWwgUG93ZXIgT04vT2ZmIFN3aXRjaCBhbmQgSW5kaXZpZHVhbCBCbHVlIExFRCBJbmRpY2F0b3JzIE11bHRpLVBvcnQNCmJ5IEFST1BBTkENCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwOUc5TUcxQlAvcmVmPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfM190aQ0KLi4uDQoNCg0KVFAtTGluayBVSDQwMCBVU0IgMy4wIDQtUG9ydCBQb3J0YWJsZSBEYXRhIEh1YiBmb3IgTWFjLCBpTWFjLCBNYWNCb29rIFBybyBBaXIsIFVsdHJhYm9va3MsIFRhYmxldCwgTGFwdG9wIGFuZCBBbnkgUEMsIFdpbmRvd3MsIE1hYyBPUyBYIGFuZCBMaW51eCBTeXN0ZW1zLSBCbGFjaw0KYnkgVFAtTGluaw0KaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3Byb2R1Y3QvQjAwVjRCR0QwMC9yZWY9cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF80X3RpDQouLi4NCg0KDQpbMSBNZXRlciBMb25nIENhYmxlLCA1R2JwcywgVVNCIDMuMSBHZW4gMV0gUVogVVNCIEh1YiBmb3IgTmV4dCBHZW4gT2ZmaWNlIFdvcmsgU3RhdGlvbiwgNCBQb3J0cywgVVNCIDMuMSBHZW4gMSBmb3IgUEMgYW5kIExhcHRvcHMNCmJ5IFFaDQpodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvcHJvZHVjdC9CMDExT0xQNkxHL3JlZj1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzVfdGkNCi4uLg0KDQoNClsxLjMgRmVldCBMb25nIENhYmxlLCA1R2JwcywgVVNCIDMuMSBHZW4gMV0gUVogVVNCIEh1YiBmb3IgTmV4dCBHZW4gT2ZmaWNlIFdvcmsgU3RhdGlvbiwgNCBQb3J0cywgVVNCIDMuMSBHZW4gMSBmb3IgUEMgYW5kIExhcHRvcHMNCmJ5IFFaDQpodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvcHJvZHVjdC9CMDExT05KVjdZL3JlZj1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzZfdGkNCi4uLg0KDQoNClBvcnRyb25pY3MgTXBvcnQgMzEgVVNCIEh1YiAoNC1pbi0xKSwgTXVsdGlwb3J0IEFkYXB0ZXIgd2l0aCAxIHggVVNCIDMuMCAmIDMgeCBVU0IgMi4wIFBvcnRzLCB1cCB0byA1IEdicHMgSGlnaCBTcGVlZCBEYXRhIFRyYW5zZmVyIGZvciBMYXB0b3AvUEMgKEdyZXkpDQpieSBQb3J0cm9uaWNzDQpodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvcHJvZHVjdC9CMDlNODg4OERNL3JlZj1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzdfdGkNCi4uLg0KDQoNCk9SSUNPIFVTQiAzLjAgSHViIDcgUG9ydHMgVVNCMy4wIFRyYW5zcGFyZW50IERlc2t0b3AgSFVCIHdpdGggQmx1ZSBJbmRpY2F0b3IgTGlnaHQgJiBEdWFsIFBvcnQgUG93ZXIgU3VwcGx5IHdpdGggMU0gQ2FibGUNCmJ5IE9SSUNPDQpodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvcHJvZHVjdC9CMDdLQlZSVjVIL3JlZj1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzhfdGkNCi4uLg0KDQoNClFaIEFjdGl2ZSBQb3dlcmVkIFVTQiBIdWIsIDEwIFBvcnQgVVNCIEh1YiB3aXRoIDEyViA1QSA2MFcgUG93ZXIgQWRhcHRlciwgVVNCIDMuMSBHZW4gMQ0KYnkgUVoNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwMU0wVDY0RU0vcmVmPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfOV90aQ0KLi4uDQoNCg0KWkVCUk9OSUNTIFplYi0xMDBIQiA0IFBvcnRzIFVTQiBIdWIgZm9yIExhcHRvcCwgUEMgQ29tcHV0ZXJzLCBQbHVnICYgUGxheSwgQmFja3dhcmQgQ29tcGF0aWJsZSAtIEJsYWNrDQpieSBaRUJST05JQ1MNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwN0dMTkpDMjUvcmVmPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTBfdGkNCi4uLg0KDQoNClR1a3plciA0LVBvcnRzIFVTQiBBIHRvIFVTQiAzLjAgSFVCIHdpdGggSGlnaC1TcGVlZCBEYXRhIFRyYW5zZmVyICYgRmFzdCBDaGFyaW5nIFBvcnRzLCBDb21wYXRpYmxlIGZvciBNYWNCb29rIEFpciwgTWFjIE1pbmksIGlNYWMgUHJvLCBNaWNyb3NvZnQgU3VyZmFjZSwgVWx0cmFCb29rcywgTGFwdG9wLCBOb3RlYm9vaywgRGVza3RvcCAoV2hpdGUpDQpieSBUdWt6ZXINCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwOFFKTktYOTQvcmVmPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTFfdGkNCi4uLg0KDQoNClZlcmlsdXjCriBVU0IgSHViIDMuMCBmb3IgUEMsIDQtUG9ydCBIaWdoIFNwZWVkIFVTQiBIdWIgd2l0aCBBbHVtaW5pdW0gU2hlbGwsIFVTQiBQb3J0IEh1YiAzLjAgQ29tcGF0aWJsZSBmb3IgUEMsIE1hY0Jvb2ssIE1hYyBQcm8sIE1hYyBNaW5pLCBpTWFjLCBTdXJmYWNlIFBybywgWFBTLCBQQyAoR3JleSkNCmJ5IFZlcmlsdXgNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwOTE2NTI1VDMvcmVmPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTJfdGkNCi4uLg0KDQpTZWUgc2ltaWxhciBwcm9kdWN0cw0KaHR0cDovL3d3dy5hbWF6b24uaW4vZ3AvYj9pZT1VVEYtOCZub2RlPTEzNzUyNDgwMzEgDQoNCj09PT09PT09PT0NCkFtYXpvbi5pbg0KaHR0cDovL3d3dy5hbWF6b24uaW4vcmVmPXBlX2Zvb3Rlci8NCg0KQ29ubmVjdCB3aXRoIFVzDQpPbiBGYWNlYm9vaw0KaHR0cDovL3d3dy5hbWF6b24uaW4vZ3AvcmVkaXJlY3QuaHRtbC9yZWY9cGVfNDIzMzcxXzM4NDc4OTMxX3BlXzBfMzQzNl9wZV9mYl9mdHIvP2xvY2F0aW9uPWh0dHA6Ly93d3cuZmFjZWJvb2suY29tL0FtYXpvbklOJnRva2VuPTIwNzVENUVBQzdCQjIxNDA4OTcyOEUyMTgzRkQzOTE3MDZENDFFOTQNCg0KT24gVHdpdHRlcg0KaHR0cDovL3d3dy5hbWF6b24uaW4vZ3AvcmVkaXJlY3QuaHRtbC9yZWY9cGVfNDIzMzcxXzM4NDc4OTMxX3BlXzBfMzQzNl9wZV90d19mdHIvP2xvY2F0aW9uPWh0dHA6Ly90d2l0dGVyLmNvbS9BbWF6b25JTiZ0b2tlbj1BMzA5REZCRkNCMUUzN0E4MDhGRjUzMTkzNDg1NURDODE3RjEzMEI2DQoNCj09PT09PT09PT0NCg0KV2UgaG9wZSB5b3UgZm91bmQgdGhpcyBtZXNzYWdlIHRvIGJlIHVzZWZ1bC4gSG93ZXZlciwgaWYgeW91J2QgcmF0aGVyIG5vdCByZWNlaXZlIGZ1dHVyZSBlLW1haWxzIG9mIHRoaXMgc29ydCBmcm9tIEFtYXpvbi5pbiwgcGxlYXNlIHZpc2l0IHRoZSBvcHQtb3V0IGxpbmsgaGVyZToNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi8vZ3AvZ3NzL28vMTFYTHowVmxkclFGOWpweU1PbksybUlTY2wxLjdqT291VXZ6QnE4anlmM3RWYmlUS1FlZVJNaWdaSWVlTUlQVzMuDQoNClBsZWFzZSBub3RlIHRoYXQgcHJvZHVjdCBwcmljZXMgYW5kIGF2YWlsYWJpbGl0eSBhcmUgc3ViamVjdCB0byBjaGFuZ2UuIFByaWNlcyBhbmQgYXZhaWxhYmlsaXR5IHdlcmUgYWNjdXJhdGUgYXQgdGhlIHRpbWUgdGhpcyBuZXdzbGV0dGVyIHdhcyBzZW50OyBob3dldmVyLCB0aGV5IG1heSBkaWZmZXIgZnJvbSB0aG9zZSB5b3Ugc2VlIHdoZW4geW91IHZpc2l0IEFtYXpvbi5pbi4gDQoNCg0KDQpBbWF6b24uaW4gTWFya2V0cGxhY2UgcGxhdGZvcm06IFByb2R1Y3RzIHNvbGQgYnkgYSBNYXJrZXRwbGFjZSBzZWxsZXIgYXJlIHN1YmplY3QgdG8gdGhhdCBzZWxsZXIncyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiBzYWxlLiBTZWUgd3d3LkFtYXpvbi5pbiBmb3IgZGV0YWlscy4NCg0KUmVmZXJlbmNlOiAxMjE3NzAzNTcxDQoNClRoaXMgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgZm9sbG93aW5nIGUtbWFpbCBhZGRyZXNzOiBwc2todXNoYWxAZ21haWwuY29tDQoNCg0K" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=utf-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 174865, - "data": "DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICAgIDxoZWFkPg0KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI-DQogICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ0YXJnZXQtZGVuc2l0eWRwaT1kZXZpY2UtZHBpIj4NCiAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZSA9IDEuMCwgbWF4aW11bS1zY2FsZSA9IDEuMCIgLz4NCiAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4ud2lkZ2V0SGVhZGVyDQp7DQp0ZXh0LWRlY29yYXRpb246bm9uZTsNCmNvbG9yOiNFNDc5MTE7DQpmb250LXNpemU6MTVweDsNCmZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOw0KZm9udC13ZWlnaHQ6Ym9sZDsNCn0NCi5idG4tbGVhcm5tb3JlLXNtYWxsDQp7IA0KYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjZjdkZmE1LCNmMGMxNGIpOw0KYm9yZGVyLXJhZGl1czogNXB4OyANCmZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgDQpmb250LXNpemU6IDEycHg7DQpmb250LXdlaWdodDogbm9ybWFsOw0KYm9yZGVyLWNvbG9yOiAjYTg4NzM0ICM5YzdlMzEgIzg0NmEyOSAhaW1wb3J0YW50Ow0KYm9yZGVyLXN0eWxlOnNvbGlkICFpbXBvcnRhbnQ7DQpib3JkZXItd2lkdGg6MXB4ICFpbXBvcnRhbnQ7DQpib3JkZXItY29sbGFwc2U6aW5pdGlhbCAhaW1wb3J0YW50Ow0KfQ0KLmJ0bi1hZGR0b2xpc3Qtc21hbGwNCnsNCmJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sI2Y3ZjhmYSwjZTdlOWVjKTsNCmJvcmRlci1yYWRpdXM6IDVweDsNCmZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgDQpmb250LXNpemU6IDEycHg7DQpmb250LXdlaWdodDogbm9ybWFsOw0KYm9yZGVyLWNvbG9yOiAjYWRiMWI4ICNhMmE2YWMgIzhkOTA5NiAhaW1wb3J0YW50Ow0KYm9yZGVyLXN0eWxlOnNvbGlkICFpbXBvcnRhbnQ7DQpib3JkZXItd2lkdGg6MXB4ICFpbXBvcnRhbnQ7DQptaW4td2lkdGg6IDEwMHB4Ow0KYm9yZGVyLWNvbGxhcHNlOmluaXRpYWwgIWltcG9ydGFudDsNCn0gDQpzcGFuLm1haW5tZXNzYWdlIHsNCiAgICBmb250LXNpemU6IDM0cHg7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBsaW5lLWhlaWdodDogMTsNCiAgICBjb2xvcjogI0ZGOTkwMDsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIG1hcmdpbi1ib3R0b206IDVweDsNCn0NCi5vbWFfcHJfaW1hZ2Ugew0KICAgIGRpc3BsYXk6YmxvY2s7DQogIA0KfQ0KLmVtYWlsX3N1cGVyX3N1YmplY3QgYSB7DQogICAgY29sb3I6ICMzMzY2OTkgIWltcG9ydGFudDsNCn0NCi5jdGEtYnRuIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZDNDM1Ow0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLmJ0bi1sZWFybm1vcmUtYmlnIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZDNDM1Ow0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLmJ0bi1hZGR0b2xpc3QtYmlnIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTdFN0MyOw0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLmVtYWlsLXN1cGVyLXN1YmplY3Qgew0KICAgIGZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDlweDsNCiAgICBsaW5lLWhlaWdodDogMTFweDsNCiAgICBjb2xvcjogIzU1NTsNCn0NCi5oZWFkZXItbWVudSB7DQogICAgZm9udC1mYW1pbHk6IGFyaWFsLCB2ZXJkYW5hLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBjb2xvcjogcmdiKDUxLCAxMDIsIDE1Myk7DQogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KLmludHJvLXRleHQgew0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBjb2xvcjogIzMzMzMzMzsNCiAgICBmb250LXdlaWdodDogbm9ybWFsOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOw0KICAgIGxpbmUtaGVpZ2h0OiAxNnB4Ow0KICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7DQogICAgcGFkZGluZzogNnB4IDE1cHggMTJweCAxNXB4Ow0KfQ0KLmZhcm1oZWFkIHsNCiAgICBmb250LWZhbWlseTogYXJpYWw7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGNvbG9yOiAjZTQ3OTExOw0KICAgIGxpbmUtaGVpZ2h0OiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLmZhcm1oZWFkLWZvbnQgew0KICAgIGZvbnQtZmFtaWx5OiBhcmlhbDsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgY29sb3I6ICNlNDc5MTE7DQogICAgbGluZS1oZWlnaHQ6IDE2cHg7DQp9DQoubGlua2Zhcm0tY29sLXMxIHsNCiAgICBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDE0cHg7DQp9DQoubGlua2Zhcm0tY29sLXMyIHsNCiAgICBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDEycHg7DQp9DQoubGlua2Zhcm0tbGluay1zMSB7DQogICAgY29sb3I6ICM2NjY7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KLmxlZ2FsLXRleHQgew0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBTYW5zLVNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTBweDsNCiAgICBjb2xvcjogIzY2Ng0KfQ0KLmxlZ2FsLXRleHQtYzEgew0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBTYW5zLVNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTBweDsNCiAgICBjb2xvcjogIzk5OTsNCn0NCi5sZWdhbC10ZXh0LWMyIHsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgU2Fucy1TZXJpZjsNCiAgICBmb250LXNpemU6IDEwcHg7DQogICAgY29sb3I6ICNiZmJmYmY7DQp9DQoubGVnYWwtdGV4dC1jMyB7DQogICAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiA3cHQ7DQogICAgY29sb3I6ICMzRTdDQkI7DQp9DQouc2FsdXRhdGlvbi10ZXh0IHsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgY29sb3I6ICMzMDM5NDI7DQogICAgZm9udC1zaXplOiAxNHB4Ow0KICAgIGNvbG9yOiAjMzAzOTQyOw0KICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQp9DQpib2R5IHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlM2UzOw0KfQ0KYm9keVt5YWhvb10gew0KICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogbm9uZTsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlM2UzOw0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOw0KfQ0KLlJlYWRNc2dCb2R5IHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlM2UzOw0KfQ0KLkV4dGVybmFsQ2xhc3Mgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2UzZTM7DQp9DQpodG1sIHsNCiAgICB3aWR0aDogMTAwJTsNCn0NCmJvZHlbeWFob29dIHRhYmxlIHsNCiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOw0KfQ0KYm9keVt5YWhvb10gLmJ0biB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgdGV4dC1hbGlnbjogY2VudGVyIWltcG9ydGFudDsNCn0NCmJvZHlbeWFob29dIC5mYXJtLXJvdyB7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICBwYWRkaW5nOiAzcHg7DQogICAgY29sb3I6ICMzMzMzMzMNCn0NCmJvZHlbeWFob29dIC50b3AxMC1pbWctV2lkdGggew0KICAgIHdpZHRoOiAyOTBweCFpbXBvcnRhbnQ7DQogICAgdGV4dC1hbGlnbjogY2VudGVyDQp9DQpzcGFuLm1haW5tZXNzYWdlIHsNCiAgICBmb250LXNpemU6IDM0cHg7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBsaW5lLWhlaWdodDogMTsNCiAgICBjb2xvcjogI0ZGOTkwMDsNCiAgICBmb250LXdlaWdodDogNTAwDQp9DQpib2R5W3lhaG9vXSAuaW1hZ2UtY3NzbG90LW5vcm1hbCBpbWcgew0KICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7DQp9DQpib2R5W3lhaG9vXSB0ZFtjbGFzcz0ibGNvbCJdIGltZyB7DQogICAgd2lkdGg6IDE3NXB4ICFpbXBvcnRhbnQ7DQogICAgaGVpZ2h0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KLnNlZl9sZWdhbF9mb290ZXIgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNFM0UzRTM7DQp9DQouc2VmX2Zvb3Rlcl9jb25uZWN0IHsNCiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzg4ODg4ODsNCiAgICBoZWlnaHQ6IDBweCAhaW1wb3J0YW50Ow0KICAgIG1heC1oZWlnaHQ6IDBweCAhaW1wb3J0YW50Ow0KICAgIGZvbnQtc2l6ZTogMHB4Ow0KICAgIG1hcmdpbjogMDsNCiAgICB3aWR0aDogMTAwJTsNCn0NCmJvZHlbeWFob29dIC5zZWZfc3BhY2VyIGRpdiB7DQogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJodHRwczovL2ltYWdlcy1uYS5zc2wtaW1hZ2VzLWFtYXpvbi5jb20vaW1hZ2VzL0cvMDEvdGVtcGxhdGUvc2VjdGlvbi1kaXZfNjQweDguanBnIikgIWltcG9ydGFudDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KICAgIGhlaWdodDogMTBweCAhaW1wb3J0YW50Ow0KICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQp9DQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY4MHB4KSB7DQogICAgLm1vYmlsZS1oaWRlLWdtYWlsIHsNCiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Ow0KICAgICAgICBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsNCiAgICAgICAgbXNvLWhpZGU6YWxsICFpbXBvcnRhbnQ7DQogICAgICAgIGxpbmUtaGVpZ2h0OiAwcHggIWltcG9ydGFudDsNCiAgICB9DQogICAgLm1vYmlsZS1oaWRlLWdtYWlsIHRhYmxlew0KICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogICAgICAgIG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50Ow0KICAgICAgICBtc28taGlkZTphbGwgIWltcG9ydGFudDsNCiAgICAgICAgbGluZS1oZWlnaHQ6IDBweCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICANCiAgICBib2R5W3lhaG9vXSAuZGV2aWNlV2lkdGggew0KICAgICAgICB3aWR0aDogMTAwJSFpbXBvcnRhbnQNCiAgICB9DQogICAgYm9keVt5YWhvb10gdGRbY2xhc3M9ImNvbCJdIGEgaW1nIHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICAgICAgbWF4LXdpZHRoOiA2MHB4ICFpbXBvcnRhbnQ7DQogICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50Ow0KICAgICAgICBtaW4td2lkdGg6IDQxcHggIWltcG9ydGFudDsNCiAgICB9DQogICAgdGRbY2xhc3M9ImNvbCJdIHsNCiAgICAgICAgd2lkdGg6IDMwJSAhaW1wb3J0YW50Ow0KICAgICAgICBtYXgtd2lkdGg6IDYwcHggIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmZhcm1MaW5rcyB7DQogICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7DQogICAgICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmZhcm1MaW5rcyB0ZCB7DQogICAgICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gdGRbY2xhc3M9ImZhcm1Db250YWluZXIiXSB7DQogICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsNCiAgICAgICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9saW5rZmFybSB0ZCB7DQogICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZWZfZm9vdGVyX2xpbmtmYXJtIHRhYmxlIHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9sZWdhbF9mb290ZXIsDQogICAgYm9keVt5YWhvb10gLnNlZl9zcGFjZXIsDQogICAgYm9keVt5YWhvb10gLnNlZl9mb290ZXJfY29ubmVjdCwNCiAgICBib2R5W3lhaG9vXSAuc2VmX2xlZ2FsX2Zvb3RlciwNCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9saW5rZmFybSB7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZWZfZm9vdGVyX2xpbmtmYXJtIHRyOmxhc3QtY2hpbGQgdGQsDQogICAgYm9keVt5YWhvb10gLnNlZl9mb290ZXJfbGlua2Zhcm0gdHI6Zmlyc3QtY2hpbGQgdGQgew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9mb290ZXJfbGlua2Zhcm0gdHIgdGQgdGFibGUgew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmJ0biB7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlciFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIHRkW2NsYXNzPSJ4LXNpdGUtdGFibGV0Il0gew0KICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZXBlcmF0b3Igew0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VwZXJhdG9yIGltZyB7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgICAgIGhlaWdodDogYXV0bzsNCiAgICB9DQp9DQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7DQogICAgYm9keVt5YWhvb10gLnRvcDEwLWltZy1XaWR0aCB7DQogICAgICAgIHdpZHRoOiA0NDBweCFpbXBvcnRhbnQ7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcg0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuY2VudGVyIHsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmZvb3RlckxpbmtzIHsNCiAgICAgICAgd2lkdGg6IDMyJTsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweA0KICAgIH0NCiAgICBib2R5W3lhaG9vXSB0ZFtjbGFzcz0ibGNvbCJdLA0KICAgIGJvZHlbeWFob29dIHRkW2NsYXNzPSJyY29sIl0gew0KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsNCiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgICAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50Ow0KICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Ow0KICAgICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7DQogICAgICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuZmFybUxpbmtzIHsNCiAgICAgICAgbWluLXdpZHRoOiAxNDhweCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuZmFybUJvdHRvbSB7DQogICAgICAgIHdpZHRoOiAxMDAlIWltcG9ydGFudA0KICAgIH0NCiAgICBib2R5W3lhaG9vXSB0ZFtjbGFzcz0icGVfYXNpbiJdIHsNCiAgICAgICAgcGFkZGluZzogNHB4IDE1cHggNHB4IDE1cHggIWltcG9ydGFudDsNCiAgICB9DQp9DQpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDUxNXB4KSB7DQogICAgYm9keVt5YWhvb10gLmxvZ29Ub3Agew0KICAgICAgICB3aWR0aDogMTAwJSFpbXBvcnRhbnQNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnRvcDEwLWltZy1XaWR0aCB7DQogICAgICAgIHdpZHRoOiAyOTBweCFpbXBvcnRhbnQ7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcg0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuY2VudGVyIHsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmZvb3RlckxpbmtzIHsNCiAgICAgICAgd2lkdGg6IDMyJTsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweA0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuYnRuIHsNCiAgICAgICAgd2lkdGg6IDEwMCU7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlciFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIHRkW2NsYXNzPSJ4LXNpdGUiXSwNCiAgICBib2R5W3lhaG9vXSAueC1zaXRlIHsNCiAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9mb290ZXJfbGlua2Zhcm0gew0KICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZWZfc3BhY2VyIHsNCiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9jb25uZWN0IHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9sZWdhbF9mb290ZXIgew0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAubG9nb1RvcCAuY2VudGVyIGEgew0KICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmxvZ29Ub3AgdGQgew0KICAgICAgICBwYWRkaW5nOiByaWdodDogMHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5hbWF6b25Mb2dvIHsNCiAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC50b3BNZW51IHsNCiAgICAgICAgcGFkZGluZzogMCAwIDVweCAwICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5jcy1pbWFnZS1zbG90IHsNCiAgICAgICAgbWFyZ2luOiBhdXRvOw0KICAgIH0NCn0NCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHsNCiAgICBib2R5W3lhaG9vXSB0ZFtjbGFzcz0icGFja0NvbCJdIHsNCiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7DQogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7DQogICAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDsNCiAgICAgICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KfQ0KICAgICAgICA8L3N0eWxlPg0KICAgIDwvaGVhZD4NCiAgICA8Ym9keT48aW1nIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MkhJNlRJSTEwTUhRWiZUPU8mVT1odHRwcyUzQSUyRiUyRmltYWdlcy1ldS5zc2wtaW1hZ2VzLWFtYXpvbi5jb20lMkZpbWFnZXMlMkZHJTJGMDElMkZuYXYlMkZ0cmFuc3AuZ2lmJkg9NlJFS0lGUFBDWlROOVhXUE9FQVBFSU5FRERJQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfb3BlbnMiIC8-DQogICAgDQogICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiIGNsYXNzPSJtb2JpbGUtaGlkZS1nbWFpbCI-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxIiBjbGFzcz0iaGlkZSIgc3R5bGU9Im1pbi13aWR0aDo3MDBweCAhaW1wb3J0YW50OyBmb250LXNpemU6MHB4O2xpbmUtaGVpZ2h0OjBweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBoZWlnaHQ9IjEiIHN0eWxlPSJtaW4td2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyIgLz4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgIA0KICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjEwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNlM2UzZTMiDQogICAgICAgICAgICB5YWhvbz0iZml4Ij4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCg0KPHRhYmxlIHdpZHRoPSI2NDAiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0iZGV2aWNlV2lkdGgiPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6MCAwIDEwcHggMDsgZm9udC1zaXplOjA7IGhlaWdodDowOyIgY2xhc3M9Ingtc2l0ZSIgdmFsaWduPSJib3R0b20iPg0KICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCg0KICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiBjbGFzcz0iaGVhZGVyLWNzc2xvdCI-DQoNCg0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgICAgIA0KICAgICAgICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KPC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQo8L3RhYmxlPg0KDQo8dGFibGUgd2lkdGg9IjY0MCIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJkZXZpY2VXaWR0aCI-DQogICAgPHRyPg0KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJoZWFkZXItY3NzbG90Ij4NCiAgICAgICAgDQoNCg0KDQogICAgDQogICAgICAgDQogICAgICAgICANCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KPC90ZD4NCiAgICA8L3RyPg0KDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBoZWlnaHQ9IjYiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIg0KICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImRldmljZVdpZHRoIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiNlM2UzZTMiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJib3JkZXItYm90dG9tOiA2cHggc29saWQgI0ZGOTkwMDsgaGVpZ2h0OiAwcHggIWltcG9ydGFudDsgbWF4LWhlaWdodDogMHB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTowcHg7IG1hcmdpbjogMDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4mbmJzcDs8L3A-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSI2NDAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgIGJnY29sb3I9IiNmZmZmZmYiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiIgY2xhc3M9ImRldmljZVdpZHRoIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGhlaWdodD0iNXB4IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYWxpZ249ImNlbnRlciIgY2xhc3M9ImRldmljZVdpZHRoIj4NCiAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgdmFsaWduPSJtaWRkbGUiID4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJlZ2luIFNpbXBsZSBUZW1wbGF0ZSAtLT4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-DQogICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkgew0KICAgIGJvZHlbeWFob29dIC5sb2dvVG9wLCAubG9nb1RvcCB0YWJsZSAgeyB3aWR0aDogMzAwcHggIWltcG9ydGFudDsgfQ0KICAgIGJvZHlbeWFob29dIC5sb2dvVG9wIC5zZWZfbG9nb19jb250ZW50IHsgDQogICAgcGFkZGluZzogMTBweCAyMHB4IDAgMjBweCAhaW1wb3J0YW50OyANCiAgICBib3JkZXItdG9wOiBzb2xpZCA0cHggI2Y2OTQwNCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAubG9nb1RvcCAuc3BhY2VyIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9DQogICAgYm9keVt5YWhvb10gLmxvZ29Ub3AgLnRvcE1lbnUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0NCiAgICBib2R5W3lhaG9vXSAubG9nb1RvcCwgLmxvZ29Ub3AgdGQgeyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfQ0KICAgIGJvZHlbeWFob29dIC5zZWZfbG9nb19oZWFkZXIsIGJvZHlbeWFob29dIC5zZWZfbG9nb19oZWFkZXIgdGFibGUgIHsgd2lkdGg6IDMwMHB4ICFpbXBvcnRhbnQ7IH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2xvZ29faGVhZGVyIC5zZWZfbG9nb19jb250ZW50IHsNCiAgICBwYWRkaW5nOiAxMHB4IDIwcHggMCAyMHB4ICFpbXBvcnRhbnQ7DQogICAgYm9yZGVyLXRvcDogc29saWQgNHB4ICNmNjk0MDQgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9sb2dvX2hlYWRlciwgYm9keVt5YWhvb10gLnNlZl9sb2dvX2hlYWRlciB0YWJsZSAgeyB3aWR0aDogMzAwcHggIWltcG9ydGFudDsgfQ0KICAgICAgICBib2R5W3lhaG9vXSAuc2VmX2xvZ29faGVhZGVyIC5zZWZfbG9nb19jb250ZW50IHsNCiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjBweCAwIDIwcHggIWltcG9ydGFudDsNCiAgICAgICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDRweCAjZjY5NDA0ICFpbXBvcnRhbnQ7DQogICAgICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2xvZ29faGVhZGVyIC5zcGFjZXIgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2xvZ29faGVhZGVyIC5zZWZfaGVhZGVyX21lbnUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2xvZ29faGVhZGVyIHRyLCBib2R5W3lhaG9vXSAuc2VmX2xvZ29faGVhZGVyIHRkIHsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH0NCiAgICB9DQo8L3N0eWxlPg0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgIGJvZHlbeWFob29dIC5zZXBlcmF0b3Ige3dpZHRoOiAxMDAlICFpbXBvcnRhbnQ7fQ0KICAgIGJvZHlbeWFob29dIC5zZXBlcmF0b3IgaW1nIHt3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IGF1dG87fQ0KPC9zdHlsZT4NCjx0YWJsZSBiZ2NvbG9yPSIjRkZGRkZGIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9ImxvZ29Ub3AiIGFsaWduPSJsZWZ0Ij4NCiAgICA8dGJvZHk-DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0iY2VudGVyIj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xQUg4SFZHUThKTEc5JlQ9QyZVPWh0dHAlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9zZWZfbG9nbyZIPThLSDZPVUVIRUQ2UFlaRkFEVE4yNVZNWkNMQ0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3NlZl9sb2dvIj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMtZXUuc3NsLWltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzMxL2VtYWlsL2luL2xvZ28vYW1hem9uX3ByaW1lX2xvZ29faW5fMTUweDQ4LmpwZyIgYWx0PSJBbWF6b24uaW4iIGJvcmRlcj0iMCIgaHNwYWNlPSI2IiB2c3BhY2U9IjYiPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgPC90Ym9keT4NCjwvdGFibGU-DQo8dGFibGUgY2xhc3M9ImxvZ29Ub3AgIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJyaWdodCI-DQogICAgPHRib2R5Pg0KICAgICAgICA8dHI-DQogICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiBjbGFzcz0idG9wTWVudSI-DQogICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9Im1hcmdpbjowIGF1dG87Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj00MEFWT01XNUxORU8mVD1DJlU9aHR0cCUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnlvdXJzdG9yZSUyRmhvbWUlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX3lvdXJzdG9yZSUyRiZIPVpWVjA5ME5WWjJDNjJRQVhLMUNMS0tRU0FKUUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX3lvdXJzdG9yZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCx2ZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHJnYig1MSwgMTAyLCAxNTMpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBib2xkO3RleHQtYWxpZ246Y2VudGVyOyB3b3JkLXdyYXA6IG5vcm1hbCAhIGltcG9ydGFudDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIEFtYXpvbi5pbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMiIgd2lkdGg9IjgiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNjY2MiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ij48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iMTIiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUQyN1c3RFNPVUMwSiZUPUMmVT1odHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcmVkaXJlY3QuaHRtbCUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfZGVhbHMlM0Zsb2NhdGlvbiUzRGh0dHAlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZnb2xkYm94Jkg9VVpMQllPMDIwTlE1MkNZOU1NWlJKRFpHWURZQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfZGVhbHMiIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsdmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiByZ2IoNTEsIDEwMiwgMTUzKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDt0ZXh0LWFsaWduOmNlbnRlcjsgd29yZC13cmFwOiBub3JtYWwgISBpbXBvcnRhbnQ7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9kYXkncyBEZWFscw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMiIgd2lkdGg9IjgiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNjY2MiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ij48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iOCI-Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9Mkk5WFBLMURNNDFZRyZUPUMmVT1odHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcmVkaXJlY3QuaHRtbCUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfYXBwJTJGJTNGbG9jYXRpb24lM0RodHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRm1zaG9wJkg9R0RZRUZSTFNJUEpQVVlRTFNYSENTVFFOSjdNQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfYXBwIiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLHZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogcmdiKDUxLCAxMDIsIDE1Myk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7IHdvcmQtd3JhcDogbm9ybWFsICEgaW1wb3J0YW50OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldCBBbWF6b24gQXBwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iOCIgY2xhc3M9Ingtc2l0ZSI-Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgPC90Ym9keT4NCjwvdGFibGU-DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVuZCBTaW1wbGUgVGVtcGxhdGUgLS0-DQogICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KPCEtLSAgRW5kIEhFQURFUiAtLT48dGFibGUgd2lkdGg9IjY0MCIgY2xhc3M9ImRldmljZVdpZHRoIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiI-DQogICAgPHRyPg0KICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI-DQogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMtbmEuc3NsLWltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzE1L2VtYWlsL3RlbXBsYXRlL3N0dWRlbnQvY3VzdG9tLXJ1bGVfNjQwLl9DQjM4Njg1NjEyOV8uZ2lmIg0KICAgICAgICAgICAgICAgIGFsdD0iPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ICIgYm9yZGVyPSIwIiBhbGlnbj0ibWlkZGxlIiBjbGFzcz0iZGV2aWNlV2lkdGgiDQogICAgICAgICAgICAgICAgc3R5bGU9ImJpY3ViaWM7IG1heC13aWR0aDo2NDBweDsgbWF4LWhlaWdodDo4cHg7IGNvbG9yOiNDQ0NDQ0M7IGxpbmUtaGVpZ2h0OjFweCINCiAgICAgICAgICAgICAgICAvPg0KICAgICAgICA8L3RkPg0KICAgIDwvdHI-DQo8L3RhYmxlPg0KDQoNCiAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIDx0YWJsZSBhbGlnbj0iY2VudGVyIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHdpZHRoOjEwMCU7IiA-DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0iQWxleGEtYmFubmVyIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI-DQoNCg0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCg0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RhYmxlPg0KICAgICAgICANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICANCg0KICAgIDx0YWJsZSAgd2lkdGg9IjYxMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxNSIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0iZGV2aWNlV2lkdGgiIHN0eWxlPSJ3aWR0aDoxMDAlOyI-DQogICAgPHRib2R5Pg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgY2xhc3M9ImludHJvLXRleHQiIGFsaWduPSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij4NCiAgICAgICAgICA8c3BhbiBjbGFzcz0ic2FsdXRhdGlvbi10ZXh0Ij4NCiAgICAgICAgICAgICAgICBIZWxsbyBLaHVzaGFsIFAgUywNCiAgICAgICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPGJyPkFyZSB5b3UgbG9va2luZyBmb3Igc29tZXRoaW5nIGluIG91ciA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xV0JRSEs3QUdHV0UzJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkYlM0Zub2RlJTNEMTM3NTI0ODAzMSUyNnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxJkg9Mk5NR1dKQUlMUVpDQUNOUzFBR1FQSjFEWjBVQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzEiPkFDQ0VTU09SWSBPUiBQQVJUIE9SIFNVUFBMWTwvYT4gc3RvcmU_IElmIHNvLCB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB0aGVzZSBpdGVtcy4NCiANCiAgICAgICAgPC9zcGFuPg0KDQogICAgICAgIDwvdGQ-DQogICAgICA8L3RyPg0KICAgIDwvdGJvZHk-DQo8L3RhYmxlPg0KPHRhYmxlIHdpZHRoPSI2NDAiIGNsYXNzPSJkZXZpY2VXaWR0aCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGRkZGRkYiPg0KICAgIDx0cj4NCiAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLW5hLnNzbC1pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8xNS9lbWFpbC90ZW1wbGF0ZS9zdHVkZW50L2N1c3RvbS1ydWxlXzY0MC5fQ0IzODY4NTYxMjlfLmdpZiINCiAgICAgICAgICAgICAgICBhbHQ9Ij0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSAiIGJvcmRlcj0iMCIgYWxpZ249Im1pZGRsZSIgY2xhc3M9ImRldmljZVdpZHRoIg0KICAgICAgICAgICAgICAgIHN0eWxlPSJiaWN1YmljOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6OHB4OyBjb2xvcjojQ0NDQ0NDOyBsaW5lLWhlaWdodDoxcHgiDQogICAgICAgICAgICAgICAgLz4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KPC90YWJsZT4NCiAgICANCiAgICANCiAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgYmdjb2xvcj0iI0ZGRkZGRiIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0id2lkZ2V0X2hlYWRlciIgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1pbi13aWR0aDoxMDAlOyI-DQogICAgPHRyPg0KICAgICAgICA8dGQgY29sc3Bhbj0iMyIgd2lkdGg9IjEwMCUiPg0KICAgICAgICAgICAgPGRpdiB3aWR0aD0iMTAwJSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZTo4cHg7bGluZS1oZWlnaHQ6OHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgIDwvdGQ-DQogICAgPC90cj4NCiAgICA8dHI-DQogICAgICAgIDx0ZCB3aWR0aD0iMyUiPg0KICAgICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MXB4O2xpbmUtaGVpZ2h0OjFweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICA8L3RkPg0KICAgICAgICA8dGQgaGVpZ2h0PSIxNiIgd2lkdGg9Ijk3JSI-DQogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBiZ2NvbG9yPSIjRkZGRkZGIiBjZWxsc3BhY2luZz0iMiIgYWxpZ249ImxlZnQiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0id2lkZ2V0X2NvbnRlbnQiPg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIiB2YWxpZ249ImJvdHRvbSIgY2xhc3M9ImNhdGVnb3J5Ij4gPHNwYW4gY2xhc3M9IndpZGdldEhlYWRlciIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiNFNDc5MTE7Zm9udC1zaXplOjE1cHg7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6Ym9sZDsiPkFDQ0VTU09SWSBPUiBQQVJUIE9SIFNVUFBMWTwvc3Bhbj4gPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxcHg7bGluZS1oZWlnaHQ6MXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgIDwvdGQ-DQogICAgPC90cj4NCiAgICAgPHRyPg0KICAgICAgICAgPHRkIGNvbHNwYW49IjMiPg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogPHRhYmxlIHdpZHRoPSI5NyUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0ic2VwZXJhdG9yIiBzdHlsZT0ibWluLXdpZHRoOjk3JTsiPg0KICAgIDx0Ym9keT4NCiAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxMDAlIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyIGhlaWdodD0iMSI-DQogICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2VhZWJlYyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMTAwJSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxcHg7bGluZS1oZWlnaHQ6MXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEwMCUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGJvZHk-DQo8L3RhYmxlPg0KICAgICAgICAgPC90ZD4NCiAgICAgPC90cj4NCiAgICANCjwvdGFibGU-DQogICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICAgICAgDQoNCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIAkgICAgICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICAgICAgICANCiAgICAgICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KPHRhYmxlIHdpZHRoPSI2NDAiPg0KICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjYyMCIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBjbGFzcz0icHJfY29udGFpbmVyIj4NCiAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Imxpc3RfcHJvZHVjdCI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1MCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGNsYXNzPSJwcl9pbWFnZSI-DQogICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9S0VSTVRBWFdXVkcyJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwOEpIWVdKTVAlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzFfaW0mSD1VQTFDVkFOVFFYVzQ3TkIyQ0ZBQkJEUlo1UVdBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xX2ltIj4NCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9JLzMxUUlPOXdjR1pMLl9TUjUwMCw1MDBfLl9TTDE0MF8uanBnIiBjbGFzcz0icHJfaW1hZ2VfMTc1IHByX2ltYWdlX2Rlc2t0b3AiIGFsdD0iQW1rZXR0ZSA0IFBvcnQgU3VwZXJzcGVlZCBVU0IgSHViIDMuMCBmb3IgUEMvTGFwdG9wcywgUG9ydGFibGUgRGF0YSBIdWIgd2l0aCBIaS1TcGVlZCBEYXRhIFRyYW5zZmVyIFVwIHRvIDUgR0JQUywgQ2hhcmdpbmcgRnVuY3Rpb258IFN0cm9uZyBhbmQgRHVyYWJsZSwgUG93ZXIgU3VwcGx5IFBvcnQgYW5kIDgwIGNtIExvbmcgQ2FibGUgKEJsYWNrKSIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM2NSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl90aXRsZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICANCg0KDQogICAgDQoNCg0KICAgIA0KDQoNCg0KDQoNCjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtYWxpZ246bGVmdDtjb2xvcjojMzM2Njk5OyI-DQogICAgIDxhIGNsYXNzPSJvbWFfcHJfdGl0bGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPVU3NjJXRFJVMkIxVCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDhKSFlXSk1QJTNGcmVmJTNEZW1fMXBfMV90aSUyNnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxJkg9VlNSWUQ3UUNCQlBISERKRlJLTFpaUFZISlpXQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzEiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMzM2Njk5OyI-DQogICAgICAgICAgQW1rZXR0ZSA0IFBvcnQgU3VwZXJzcGVlZCBVU0IgSHViIDMuMCBmb3IgUEMvTGFwdG9wcywgUG9ydGFibGUuLi48L2E-DQo8L3NwYW4-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9ieWxpbmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAgICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgICAgIDxzcGFuIGNsYXNzPSJvbWEtcHItYmwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2EsU2Fucy1TZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzMzMzt0ZXh0LWFsaWduOmxlZnQ7Ij4NCiAgICAgICAgICAgICA8YnI-IGJ5DQogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9Mkw1N04zUkRTM0NLJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRnN0b3JlcyUyRkFta2V0dGUlMkZwYWdlJTJGNjUxRTBENTAtNTE3Ni00RTlFLTg3NTYtRUEwRDkyQTk3Qzg4JTNGcmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfYXN0X2JsbiUyNnN0b3JlX3JlZiUzRGJsX2FzdF9kcF9icmFuZExvZ29fc3RvJkg9R1hVVUtLR09PNVFENThRN01JSTFTVkcwUUc0QSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfYXN0X2JsbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjojMzM2Njk5OyI-QW1rZXR0ZTwvYT4NCiAgICAgICAgPC9zcGFuPg0KICAgIA0KDQogDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0ic3BhY2VyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX2xpc3QiPg0KICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5SLlAuOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9saXN0Ij4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpa2U-4oK5MSwzOTkuMDA8L3N0cmlrZT4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX291ciI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJwcl9wcmljZV9oaWdobGlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrk5MjguMDAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IFNhdmU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX3NhdmluZ3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5NDcxLjAwIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzNCUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KCQ0KDQoNCg0KDQoNCg0KDQoJDQoNCg0KDQoJDQoNCgkNCg0KICAgIA0KCSAgICAgDQogICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgPHRyIGNsYXNzPSJwcl9tZXJjaGFudCI-DQogICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzU1NTU1NTsgZm9udC1zaXplOjEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBTb2xkIGJ5IA0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJSQVY0MUNJWEYzTUEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZhYWclMkZtYWluJTNGaWUlM0RVVEY4JTI2YXNpbiUzREIwOEpIWVdKTVAlMjZpc0FtYXpvbkZ1bGZpbGxlZCUzRDElMjZtYXJrZXRwbGFjZUlEJTNEQTIxVEpSVVVONEtHViUyNnByb3RvY29sJTNEY3VycmVudCUyNnNlbGxlciUzREFKNlNJWkM4WVFEWlglMjZzc2htUGF0aCUzRCUyNnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxJkg9QkFQVkszTUFTVlBTUkxUV1M0TldBT1hDNVdRQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzEiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MTJweDtjb2xvcjogIzMzNjY5OTsiPkNsaWNrdGVjaCBSZXRhaWwgUHJpdmF0ZSBMdGQ8L2E-IGFuZCANCiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDsiPkZ1bGZpbGxlZCBieSBBbWF6b248L3NwYW4-Lg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8L3NwYW4-IA0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDUiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCg0KDQo8ZGl2IGNsYXNzPSJwcl9sZWFybl9tb3JlIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI-DQogICAgICAgIDx0YWJsZSBjbGFzcz0iYnRuLWxlYXJubW9yZS1zbWFsbCIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyIgc3R5bGU9ImNvbG9yOiAjMTExOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIHdoaXRlLXNwYWNlOiBub3dyYXA7YmFja2dyb3VuZC1jb2xvcjogI0ZFQzY1MDsgZm9udC1zaXplOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOiA1cHg7Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXA-DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUFETFVZOUpBNkEyRSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDhKSFlXSk1QJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xX2xtJkg9V0taMEoyNzVBS1Y1NkZBMlJFTTVUV1BRVkhTQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMV9sbSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMTExOyI-DQogICAgICAgICAgICAgICAgICAgICAgICBMZWFybiBtb3JlDQogICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPiA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJzZXBlcmF0b3IiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjZWFlYmVjIiB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjFweDtsaW5lLWhlaWdodDoxcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgIDwvdHI-DQo8L3RhYmxlPg0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KPHRhYmxlIHdpZHRoPSI2NDAiPg0KICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjYyMCIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBjbGFzcz0icHJfY29udGFpbmVyIj4NCiAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Imxpc3RfcHJvZHVjdCI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1MCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGNsYXNzPSJwcl9pbWFnZSI-DQogICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MUgxNkRQUU1VRUIyTSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMEI1SDg0NkhUJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8yX2ltJkg9UElaSU9TTkZHU0FCRVlQSlRET1Y1SFlCWktDQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMl9pbSI-DQogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvSS8zMVU1UURIaUI3TC5fU1I1MDAsNTAwXy5fU0wxNDBfLmpwZyIgY2xhc3M9InByX2ltYWdlXzE3NSBwcl9pbWFnZV9kZXNrdG9wIiBhbHQ9IlpFQlJPTklDUyAxNTBIYiA0IFBvcnQgVVNCIEh1YiB3aXRoIERlZGljYXRlZCBPbi9PZmYgU3dpdGNoLCBMZWQgSW5kaWNhdG9ycywgNDVDbSBDYWJsZSBMZW5ndGgsIE9wdGlvbmFsIFBvd2VyIElucHV0IFBvcnQsIE11bHRpIERldmljZSBhbmQgUGx1ZyBQbGF5IFVzYWdlIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzY1IiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtU2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMzMzY2OTk7Ij4NCiAgICAgPGEgY2xhc3M9Im9tYV9wcl90aXRsZSIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MjVIMkJSU0tOVEU3RCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMEI1SDg0NkhUJTNGcmVmJTNEZW1fMXBfMl90aSUyNnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxJkg9RlBGTzNLNDM3TjhBNTZSQlBBUjA1WVMxVDRNQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzEiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMzM2Njk5OyI-DQogICAgICAgICAgWkVCUk9OSUNTIDE1MEhiIDQgUG9ydCBVU0IgSHViIHdpdGggRGVkaWNhdGVkIE9uL09mZiBTd2l0Y2gsLi4uPC9hPg0KPC9zcGFuPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfYnlsaW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICA8c3BhbiBjbGFzcz0ib21hLXByLWJsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMzM7dGV4dC1hbGlnbjpsZWZ0OyI-DQogICAgICAgICAgICAgPGJyPiBieQ0KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJBMU5VT1NPUzlHRlomVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGc3RvcmVzJTJGWmVicm9uaWNzJTJGcGFnZSUyRkVBNjhGQzI3LTIxMzUtNDYyNi1BRjE5LTgyOTZGQTQ0NjQyOSUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4mSD1DMThOWVJKWUFVQTFaWjhZRlZUUEgxWlk5NklBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9hc3RfYmxuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiMzMzY2OTk7Ij5aRUJST05JQ1M8L2E-DQogICAgICAgIDwvc3Bhbj4NCiAgICANCg0KIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9saXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0uUi5QLjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaWtlPuKCuTY5OS4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWwgUHJpY2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0icHJfcHJpY2VfaGlnaGxpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5MTk5LjAwICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX3NhdmluZ3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBTYXZlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTUwMC4wMCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNzIlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCgkNCg0KDQoNCg0KDQoNCg0KCQ0KDQoNCg0KCQ0KDQoJDQoNCiAgICANCgkgICAgIA0KICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgU29sZCBieSANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zNDJLVFdBSTNZNExRJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGYWFnJTJGbWFpbiUzRmllJTNEVVRGOCUyNmFzaW4lM0RCMEI1SDg0NkhUJTI2aXNBbWF6b25GdWxmaWxsZWQlM0QxJTI2bWFya2V0cGxhY2VJRCUzREEyMVRKUlVVTjRLR1YlMjZwcm90b2NvbCUzRGN1cnJlbnQlMjZzZWxsZXIlM0RBSjZTSVpDOFlRRFpYJTI2c3NobVBhdGglM0QlMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPUJBWkFBREVLRzI4TzFTV01ITEJIQ1VVQTdZSUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEycHg7Y29sb3I6ICMzMzY2OTk7Ij5DbGlja3RlY2ggUmV0YWlsIFByaXZhdGUgTHRkPC9hPiBhbmQgDQogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij5GdWxmaWxsZWQgYnkgQW1hem9uPC9zcGFuPi4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPC9zcGFuPiANCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTA1IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQoNCg0KPGRpdiBjbGFzcz0icHJfbGVhcm5fbW9yZSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPg0KICAgICAgICA8dGFibGUgY2xhc3M9ImJ0bi1sZWFybm1vcmUtc21hbGwiICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiIHN0eWxlPSJjb2xvcjogIzExMTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7ICB3aGl0ZS1zcGFjZTogbm93cmFwO2JhY2tncm91bmQtY29sb3I6ICNGRUM2NTA7IGZvbnQtc2l6ZToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czogNXB4OyI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zN1dIOUVRR0dSTDBGJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwQjVIODQ2SFQlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzJfbG0mSD1FT1pSSTdSUVZUUjNaU1BDRU1HS0paTzdKODBBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8yX2xtIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMxMTE7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIExlYXJuIG1vcmUNCiAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KPC9kaXY-DQoNCg0KDQogDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgIDwvdGFibGU-IDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2xhc3M9InNlcGVyYXRvciI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNlYWViZWMiIHdpZHRoPSI2MjAiIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MXB4O2xpbmUtaGVpZ2h0OjFweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxNXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICA8L3RkPg0KICAgPC90cj4NCjwvdGFibGU-DQogICAgDQogICAgDQogICAgDQoNCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQo8dGFibGUgd2lkdGg9IjY0MCI-DQogICA8dHI-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNjIwIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIGNsYXNzPSJwcl9jb250YWluZXIiPg0KICAgICAgICAgPHRhYmxlIHdpZHRoPSI2MjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBjbGFzcz0ibGlzdF9wcm9kdWN0Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUwIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgY2xhc3M9InByX2ltYWdlIj4NCiAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj1FMFJBVUk2NktOU00mVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA5RzlNRzFCUCUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfM19pbSZIPVlaT09IQ1VPWDZSWEpVQTFOUVYzWUI2QTlSQUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzNfaW0iPg0KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9tLm1lZGlhLWFtYXpvbi5jb20vaW1hZ2VzL0kvNDErMGtZUXVxbkwuX1NSNTAwLDUwMF8uX1NMMTQwXy5qcGciIGNsYXNzPSJwcl9pbWFnZV8xNzUgcHJfaW1hZ2VfZGVza3RvcCIgYWx0PSJBUk9QQU5BIFVTQiAzLjEgR2VuIDEgL1VTQiAzLjAgSGlnaCBTcGVlZCA1R2JwcyBIdWIgZm9yIExhcHRvcCA0IFBvcnQgUG9ydGFibGUgQWRhcHRlciB3aXRoIEluZGl2aWR1YWwgUG93ZXIgT04vT2ZmIFN3aXRjaCBhbmQgSW5kaXZpZHVhbCBCbHVlIExFRCBJbmRpY2F0b3JzIE11bHRpLVBvcnQiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNjUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI-DQogICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfdGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQo8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsU2Fucy1TZXJpZjtmb250LXNpemU6MTVweDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzMzNjY5OTsiPg0KICAgICA8YSBjbGFzcz0ib21hX3ByX3RpdGxlIiBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zNFZZWlBHNTBLNkdHJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwOUc5TUcxQlAlM0ZyZWYlM0RlbV8xcF8zX3RpJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1TMFBKUE1ZRVVJN1A4VUZKR0hIWlAxRU9HRVNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4NCiAgICAgICAgICBBUk9QQU5BIFVTQiAzLjEgR2VuIDEgL1VTQiAzLjAgSGlnaCBTcGVlZCA1R2JwcyBIdWIgZm9yIExhcHRvcC4uLjwvYT4NCjwvc3Bhbj4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX2J5bGluZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCg0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICAgICAgPHNwYW4gY2xhc3M9Im9tYS1wci1ibCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMzMzO3RleHQtYWxpZ246bGVmdDsiPg0KICAgICAgICAgICAgIDxicj4gYnkNCiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zMDE5NEYyMDE3RFcwJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRnN0b3JlcyUyRmFyb3BhbmElMkZwYWdlJTJGNDFDODNDRTAtNkUwMS00OTBBLUFEN0YtOUY0NjdFQTBBREVGJTNGcmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfYXN0X2JsbiUyNnN0b3JlX3JlZiUzRGJsX2FzdF9kcF9icmFuZExvZ29fc3RvJkg9Q0hVQ0tTSDFDTUFFMkc0TDFQNUZYSURUMlhJQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfYXN0X2JsbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjojMzM2Njk5OyI-QVJPUEFOQTwvYT4NCiAgICAgICAgPC9zcGFuPg0KICAgIA0KDQogDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0ic3BhY2VyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX2xpc3QiPg0KICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5SLlAuOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9saXN0Ij4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpa2U-4oK5MSw1OTkuMDA8L3N0cmlrZT4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX291ciI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJwcl9wcmljZV9oaWdobGlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrk4OTkuMDAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IFNhdmU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX3NhdmluZ3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5NzAwLjAwIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0NCUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KCQ0KDQoNCg0KDQoNCg0KDQoJDQoNCg0KDQoJDQoNCgkNCg0KICAgIA0KCSAgICAgDQogICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgPHRyIGNsYXNzPSJwcl9tZXJjaGFudCI-DQogICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzU1NTU1NTsgZm9udC1zaXplOjEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBTb2xkIGJ5IA0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTM1UzZUMDRMTVJFS00mVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZhYWclMkZtYWluJTNGaWUlM0RVVEY4JTI2YXNpbiUzREIwOUc5TUcxQlAlMjZpc0FtYXpvbkZ1bGZpbGxlZCUzRDElMjZtYXJrZXRwbGFjZUlEJTNEQTIxVEpSVVVONEtHViUyNnByb3RvY29sJTNEY3VycmVudCUyNnNlbGxlciUzREEzSUdPR05WR005R0JUJTI2c3NobVBhdGglM0QlMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPVpWNExYUk1IN1JOVTVGRUdCNFlQSFIzT01ZWUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEycHg7Y29sb3I6ICMzMzY2OTk7Ij5BUk9QQU5BPC9hPiBhbmQgDQogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij5GdWxmaWxsZWQgYnkgQW1hem9uPC9zcGFuPi4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPC9zcGFuPiANCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTA1IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQoNCg0KPGRpdiBjbGFzcz0icHJfbGVhcm5fbW9yZSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPg0KICAgICAgICA8dGFibGUgY2xhc3M9ImJ0bi1sZWFybm1vcmUtc21hbGwiICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiIHN0eWxlPSJjb2xvcjogIzExMTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7ICB3aGl0ZS1zcGFjZTogbm93cmFwO2JhY2tncm91bmQtY29sb3I6ICNGRUM2NTA7IGZvbnQtc2l6ZToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czogNXB4OyI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zOERKNVdJUDFHRThDJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwOUc5TUcxQlAlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzNfbG0mSD1KV1NIWjZMUEcyVEtVTEpNTEVNVjdCSDJaMFlBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8zX2xtIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMxMTE7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIExlYXJuIG1vcmUNCiAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KPC9kaXY-DQoNCg0KDQogDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgIDwvdGFibGU-IDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2xhc3M9InNlcGVyYXRvciI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNlYWViZWMiIHdpZHRoPSI2MjAiIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MXB4O2xpbmUtaGVpZ2h0OjFweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxNXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICA8L3RkPg0KICAgPC90cj4NCjwvdGFibGU-DQogICAgDQogICAgDQogICAgDQoNCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQo8dGFibGUgd2lkdGg9IjY0MCI-DQogICA8dHI-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNjIwIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIGNsYXNzPSJwcl9jb250YWluZXIiPg0KICAgICAgICAgPHRhYmxlIHdpZHRoPSI2MjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBjbGFzcz0ibGlzdF9wcm9kdWN0Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUwIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgY2xhc3M9InByX2ltYWdlIj4NCiAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zODQwWFMyRDZCNkpTJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwMFY0QkdEMDAlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzRfaW0mSD1QVUZBOTdEQlhGSlpVWjVWS0NJWEcxWTJUN09BJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF80X2ltIj4NCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9JLzQxK0F1OVRlRGhMLl9TUjUwMCwzMjBfLl9TTDE0MF8uanBnIiBjbGFzcz0icHJfaW1hZ2VfMTc1IHByX2ltYWdlX2Rlc2t0b3AiIGFsdD0iVFAtTGluayBVSDQwMCBVU0IgMy4wIDQtUG9ydCBQb3J0YWJsZSBEYXRhIEh1YiBmb3IgTWFjLCBpTWFjLCBNYWNCb29rIFBybyBBaXIsIFVsdHJhYm9va3MsIFRhYmxldCwgTGFwdG9wIGFuZCBBbnkgUEMsIFdpbmRvd3MsIE1hYyBPUyBYIGFuZCBMaW51eCBTeXN0ZW1zLSBCbGFjayIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM2NSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl90aXRsZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtYWxpZ246bGVmdDtjb2xvcjojMzM2Njk5OyI-DQogICAgIDxhIGNsYXNzPSJvbWFfcHJfdGl0bGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJIWkFNTTlBOFBPMjcmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjAwVjRCR0QwMCUzRnJlZiUzRGVtXzFwXzRfdGklMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPUZYWVMxTFVFR0hGV01XNlVDVktNUkxFSkxPV0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IzMzNjY5OTsiPg0KICAgICAgICAgIFRQLUxpbmsgVUg0MDAgVVNCIDMuMCA0LVBvcnQgUG9ydGFibGUgRGF0YSBIdWIgZm9yIE1hYywgaU1hYywuLi48L2E-DQo8L3NwYW4-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9ieWxpbmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAgICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgICAgIDxzcGFuIGNsYXNzPSJvbWEtcHItYmwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2EsU2Fucy1TZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzMzMzt0ZXh0LWFsaWduOmxlZnQ7Ij4NCiAgICAgICAgICAgICA8YnI-IGJ5DQogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9Tk1MUVlCVkhZSlQxJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRnN0b3JlcyUyRlRQLUxJTktJTkRJQVBWVExURCUyRnBhZ2UlMkZEMjBCMTgxOS1FRTVFLTRCNDgtOUQ5MS1CNTBEM0ZFNDMxRTIlM0ZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9hc3RfYmxuJTI2c3RvcmVfcmVmJTNEYmxfYXN0X2RwX2JyYW5kTG9nb19zdG8mSD1YNzI5MUFKUEpSWFpGWUdIUUdSMVlEVlNBMU1BJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9hc3RfYmxuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiMzMzY2OTk7Ij5UUC1MaW5rPC9hPg0KICAgICAgICA8L3NwYW4-DQogICAgDQoNCiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2VfbGlzdCI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNLlIuUC46DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX2xpc3QiPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmlrZT7igrkxLDQ5OS4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9InByX3ByaWNlX2hpZ2hsaWdodCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTg5OS4wMCAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgU2F2ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrk2MDAuMDAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQwJSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoJDQoNCg0KDQoNCg0KDQoNCgkNCg0KDQoNCgkNCg0KCQ0KDQogICAgDQoJICAgICANCiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICA8dHIgY2xhc3M9InByX21lcmNoYW50Ij4NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNTU1NTU1OyBmb250LXNpemU6MTJweDsiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIFNvbGQgYnkgDQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MUZVQTBTRVlGRTNRMyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmFhZyUyRm1haW4lM0ZpZSUzRFVURjglMjZhc2luJTNEQjAwVjRCR0QwMCUyNmlzQW1hem9uRnVsZmlsbGVkJTNEMSUyNm1hcmtldHBsYWNlSUQlM0RBMjFUSlJVVU40S0dWJTI2cHJvdG9jb2wlM0RjdXJyZW50JTI2c2VsbGVyJTNEQUo2U0laQzhZUURaWCUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1OSVpMMUswQVlPWEVBVjA4R0kwRktIWktBQUlBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMnB4O2NvbG9yOiAjMzM2Njk5OyI-Q2xpY2t0ZWNoIFJldGFpbCBQcml2YXRlIEx0ZDwvYT4gYW5kIA0KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI-RnVsZmlsbGVkIGJ5IEFtYXpvbjwvc3Bhbj4uDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc3Bhbj4gDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwNSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KDQoNCjxkaXYgY2xhc3M9InByX2xlYXJuX21vcmUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4NCiAgICAgICAgPHRhYmxlIGNsYXNzPSJidG4tbGVhcm5tb3JlLXNtYWxsIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0iY29sb3I6ICMxMTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyAgd2hpdGUtc3BhY2U6IG5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkVDNjUwOyBmb250LXNpemU6MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDVweDsiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcD4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9NDZHWDFNTzNCRUpIJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwMFY0QkdEMDAlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzRfbG0mSD1YVU5BT0VYTkZYUEw4OE1MVEVCNlA1QVA2VUlBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF80X2xtIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMxMTE7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIExlYXJuIG1vcmUNCiAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KPC9kaXY-DQoNCg0KDQogDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgIDwvdGFibGU-IDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2xhc3M9InNlcGVyYXRvciI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNlYWViZWMiIHdpZHRoPSI2MjAiIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MXB4O2xpbmUtaGVpZ2h0OjFweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxNXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICA8L3RkPg0KICAgPC90cj4NCjwvdGFibGU-DQogICAgDQogICAgDQogICAgDQoNCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQo8dGFibGUgd2lkdGg9IjY0MCI-DQogICA8dHI-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNjIwIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIGNsYXNzPSJwcl9jb250YWluZXIiPg0KICAgICAgICAgPHRhYmxlIHdpZHRoPSI2MjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBjbGFzcz0ibGlzdF9wcm9kdWN0Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUwIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgY2xhc3M9InByX2ltYWdlIj4NCiAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xTElBWERKRk5CTlVHJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwMTFPTFA2TEclMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzVfaW0mSD1DTVhBSjJXRFRPTlVIMVpCSENXRkNPRkZPRlNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF81X2ltIj4NCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9JLzMxaTNHNUE0cWRMLl9TUjUwMCw1MDBfLl9TTDE0MF8uanBnIiBjbGFzcz0icHJfaW1hZ2VfMTc1IHByX2ltYWdlX2Rlc2t0b3AiIGFsdD0iWzEgTWV0ZXIgTG9uZyBDYWJsZSwgNUdicHMsIFVTQiAzLjEgR2VuIDFdIFFaIFVTQiBIdWIgZm9yIE5leHQgR2VuIE9mZmljZSBXb3JrIFN0YXRpb24sIDQgUG9ydHMsIFVTQiAzLjEgR2VuIDEgZm9yIFBDIGFuZCBMYXB0b3BzIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzY1IiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtU2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMzMzY2OTk7Ij4NCiAgICAgPGEgY2xhc3M9Im9tYV9wcl90aXRsZSIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9V0hTRjFCM0hEM1JGJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwMTFPTFA2TEclM0ZyZWYlM0RlbV8xcF81X3RpJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1GNEhEUE9LTFpIMkNBQk9KTkpBSzJYSExYRVlBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4NCiAgICAgICAgICBbMSBNZXRlciBMb25nIENhYmxlLCA1R2JwcywgVVNCIDMuMSBHZW4gMV0gUVogVVNCIEh1YiBmb3IgTmV4dC4uLjwvYT4NCjwvc3Bhbj4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX2J5bGluZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCg0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICAgICAgPHNwYW4gY2xhc3M9Im9tYS1wci1ibCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMzMzO3RleHQtYWxpZ246bGVmdDsiPg0KICAgICAgICAgICAgIDxicj4gYnkNCiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xRlJYR0szVElVVkpPJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRnN0b3JlcyUyRlFaJTJGcGFnZSUyRkI3MDI1NTVDLUIyQjMtNDhENi05NjQ3LUFFRTYzOUU3MDZGMiUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4lMjZzdG9yZV9yZWYlM0RibF9hc3RfZHBfYnJhbmRMb2dvX3N0byZIPVNKT1IwWVdVWUZDSkVUN1NaQUo0Q0hSUDdTNEEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IzMzNjY5OTsiPlFaPC9hPg0KICAgICAgICA8L3NwYW4-DQogICAgDQoNCiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2VfbGlzdCI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNLlIuUC46DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX2xpc3QiPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmlrZT7igrkxLDI2MC4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9InByX3ByaWNlX2hpZ2hsaWdodCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTg4Mi4wMCAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgU2F2ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrkzNzguMDAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMwJSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoJDQoNCg0KDQoNCg0KDQoNCgkNCg0KDQoNCgkNCg0KCQ0KDQogICAgDQoJICAgICANCiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICA8dHIgY2xhc3M9InByX21lcmNoYW50Ij4NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNTU1NTU1OyBmb250LXNpemU6MTJweDsiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIFNvbGQgYnkgDQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MlZDMVpET01CUk1GNSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmFhZyUyRm1haW4lM0ZpZSUzRFVURjglMjZhc2luJTNEQjAxMU9MUDZMRyUyNmlzQW1hem9uRnVsZmlsbGVkJTNEMSUyNm1hcmtldHBsYWNlSUQlM0RBMjFUSlJVVU40S0dWJTI2cHJvdG9jb2wlM0RjdXJyZW50JTI2c2VsbGVyJTNEQUo2U0laQzhZUURaWCUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1MT0FJSVFOU0FST1JPVjZEQlVSU1BRS0NXQVVBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMnB4O2NvbG9yOiAjMzM2Njk5OyI-Q2xpY2t0ZWNoIFJldGFpbCBQcml2YXRlIEx0ZDwvYT4gYW5kIA0KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI-RnVsZmlsbGVkIGJ5IEFtYXpvbjwvc3Bhbj4uDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc3Bhbj4gDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwNSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KDQoNCjxkaXYgY2xhc3M9InByX2xlYXJuX21vcmUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4NCiAgICAgICAgPHRhYmxlIGNsYXNzPSJidG4tbGVhcm5tb3JlLXNtYWxsIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0iY29sb3I6ICMxMTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyAgd2hpdGUtc3BhY2U6IG5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkVDNjUwOyBmb250LXNpemU6MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDVweDsiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcD4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9NU1MVVpGUFFBTldIJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwMTFPTFA2TEclMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzVfbG0mSD05Q0w5SkxITEdJMEFGU0tYS1NYS0ZQU0FJVUNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF81X2xtIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMxMTE7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIExlYXJuIG1vcmUNCiAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KPC9kaXY-DQoNCg0KDQogDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgIDwvdGFibGU-IDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgY2xhc3M9InNlcGVyYXRvciI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNlYWViZWMiIHdpZHRoPSI2MjAiIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MXB4O2xpbmUtaGVpZ2h0OjFweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSI2MjAiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxNXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICA8L3RkPg0KICAgPC90cj4NCjwvdGFibGU-DQogICAgDQogICAgDQogICAgDQoNCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQo8dGFibGUgd2lkdGg9IjY0MCI-DQogICA8dHI-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNjIwIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIGNsYXNzPSJwcl9jb250YWluZXIiPg0KICAgICAgICAgPHRhYmxlIHdpZHRoPSI2MjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBjbGFzcz0ibGlzdF9wcm9kdWN0Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUwIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgY2xhc3M9InByX2ltYWdlIj4NCiAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj1WOUlOTzlORVBSUUUmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjAxMU9OSlY3WSUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfNl9pbSZIPVFUTkZSUUpNUlpBTDNYT1JFUEVROTlDVFNNVUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzZfaW0iPg0KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9tLm1lZGlhLWFtYXpvbi5jb20vaW1hZ2VzL0kvMzFZbW11WEpiUEwuX1NSNTAwLDUwMF8uX1NMMTQwXy5qcGciIGNsYXNzPSJwcl9pbWFnZV8xNzUgcHJfaW1hZ2VfZGVza3RvcCIgYWx0PSJbMS4zIEZlZXQgTG9uZyBDYWJsZSwgNUdicHMsIFVTQiAzLjEgR2VuIDFdIFFaIFVTQiBIdWIgZm9yIE5leHQgR2VuIE9mZmljZSBXb3JrIFN0YXRpb24sIDQgUG9ydHMsIFVTQiAzLjEgR2VuIDEgZm9yIFBDIGFuZCBMYXB0b3BzIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzY1IiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtU2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMzMzY2OTk7Ij4NCiAgICAgPGEgY2xhc3M9Im9tYV9wcl90aXRsZSIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MUJDRkNYVVVPOTJVMCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDExT05KVjdZJTNGcmVmJTNEZW1fMXBfNl90aSUyNnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxJkg9TkxUSU9ZVkNMTUM3T0xJRFJNU0FUNEJLUFNTQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzEiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMzM2Njk5OyI-DQogICAgICAgICAgWzEuMyBGZWV0IExvbmcgQ2FibGUsIDVHYnBzLCBVU0IgMy4xIEdlbiAxXSBRWiBVU0IgSHViIGZvci4uLjwvYT4NCjwvc3Bhbj4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX2J5bGluZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCg0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICAgICAgPHNwYW4gY2xhc3M9Im9tYS1wci1ibCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMzMzO3RleHQtYWxpZ246bGVmdDsiPg0KICAgICAgICAgICAgIDxicj4gYnkNCiAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zU09MWDY0MTM1NVVBJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRnN0b3JlcyUyRlFaJTJGcGFnZSUyRkI3MDI1NTVDLUIyQjMtNDhENi05NjQ3LUFFRTYzOUU3MDZGMiUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4lMjZzdG9yZV9yZWYlM0RibF9hc3RfZHBfYnJhbmRMb2dvX3N0byZIPU9EOUlBSlUzRFdFM0NPVkdBVlAwUjhBQk5ST0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IzMzNjY5OTsiPlFaPC9hPg0KICAgICAgICA8L3NwYW4-DQogICAgDQoNCiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2VfbGlzdCI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNLlIuUC46DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX2xpc3QiPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cmlrZT7igrkxLDI0Mi4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9InByX3ByaWNlX2hpZ2hsaWdodCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTkzNi4wMCAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgU2F2ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrkzMDYuMDAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDI1JSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoJDQoNCg0KDQoNCg0KDQoNCgkNCg0KDQoNCgkNCg0KCQ0KDQogICAgDQoJICAgICANCiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICA8dHIgY2xhc3M9InByX21lcmNoYW50Ij4NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNTU1NTU1OyBmb250LXNpemU6MTJweDsiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIFNvbGQgYnkgDQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M0tJSEdSMlAyVllDTyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmFhZyUyRm1haW4lM0ZpZSUzRFVURjglMjZhc2luJTNEQjAxMU9OSlY3WSUyNmlzQW1hem9uRnVsZmlsbGVkJTNEMSUyNm1hcmtldHBsYWNlSUQlM0RBMjFUSlJVVU40S0dWJTI2cHJvdG9jb2wlM0RjdXJyZW50JTI2c2VsbGVyJTNEQUo2U0laQzhZUURaWCUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1DOEFTQkM0QURZQ043T1JTSVhJM1ZJQ0hORVNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMnB4O2NvbG9yOiAjMzM2Njk5OyI-Q2xpY2t0ZWNoIFJldGFpbCBQcml2YXRlIEx0ZDwvYT4gYW5kIA0KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI-RnVsZmlsbGVkIGJ5IEFtYXpvbjwvc3Bhbj4uDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc3Bhbj4gDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwNSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KDQoNCjxkaXYgY2xhc3M9InByX2xlYXJuX21vcmUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4NCiAgICAgICAgPHRhYmxlIGNsYXNzPSJidG4tbGVhcm5tb3JlLXNtYWxsIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0iY29sb3I6ICMxMTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyAgd2hpdGUtc3BhY2U6IG5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkVDNjUwOyBmb250LXNpemU6MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDVweDsiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcD4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MlpaT1JaQVBKVlBCQyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDExT05KVjdZJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF82X2xtJkg9MVQ2R01GMDhUWkRZTEpRSTVUVElKT0dYVjJPQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfNl9sbSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMTExOyI-DQogICAgICAgICAgICAgICAgICAgICAgICBMZWFybiBtb3JlDQogICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPiA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJzZXBlcmF0b3IiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjZWFlYmVjIiB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjFweDtsaW5lLWhlaWdodDoxcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgIDwvdHI-DQo8L3RhYmxlPg0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KPHRhYmxlIHdpZHRoPSI2NDAiPg0KICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjYyMCIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBjbGFzcz0icHJfY29udGFpbmVyIj4NCiAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Imxpc3RfcHJvZHVjdCI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1MCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGNsYXNzPSJwcl9pbWFnZSI-DQogICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M0dXWE5XR1RKN1U5OSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDlNODg4OERNJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF83X2ltJkg9U09BT0VWVUdOU05BSkNHT1dIS05BWEpKS1o0QSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfN19pbSI-DQogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvSS8yMVVLSXdmMElWTC5fU1I1MDAsNTAwXy5fU0wxNDBfLmpwZyIgY2xhc3M9InByX2ltYWdlXzE3NSBwcl9pbWFnZV9kZXNrdG9wIiBhbHQ9IlBvcnRyb25pY3MgTXBvcnQgMzEgVVNCIEh1YiAoNC1pbi0xKSwgTXVsdGlwb3J0IEFkYXB0ZXIgd2l0aCAxIHggVVNCIDMuMCAmYW1wOyAzIHggVVNCIDIuMCBQb3J0cywgdXAgdG8gNSBHYnBzIEhpZ2ggU3BlZWQgRGF0YSBUcmFuc2ZlciBmb3IgTGFwdG9wL1BDIChHcmV5KSIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM2NSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl90aXRsZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtYWxpZ246bGVmdDtjb2xvcjojMzM2Njk5OyI-DQogICAgIDxhIGNsYXNzPSJvbWFfcHJfdGl0bGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUlNTDdYN1lVTVdFWiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDlNODg4OERNJTNGcmVmJTNEZW1fMXBfN190aSUyNnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxJkg9MkFVUVVVWk9PUVY4NzBKT0ZMVEs5QTZBTVpHQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzEiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMzM2Njk5OyI-DQogICAgICAgICAgUG9ydHJvbmljcyBNcG9ydCAzMSBVU0IgSHViICg0LWluLTEpLCBNdWx0aXBvcnQgQWRhcHRlciB3aXRoIDEuLi48L2E-DQo8L3NwYW4-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9ieWxpbmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAgICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgICAgIDxzcGFuIGNsYXNzPSJvbWEtcHItYmwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2EsU2Fucy1TZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzMzMzt0ZXh0LWFsaWduOmxlZnQ7Ij4NCiAgICAgICAgICAgICA8YnI-IGJ5DQogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MzQ0NU5XUldBVDAzSiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZzdG9yZXMlMkZQb3J0cm9uaWNzJTJGcGFnZSUyRjgyQ0M4MjRCLTE5QUMtNEE0NS04NzJELTU5ODg4QTEwRUZERiUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4lMjZzdG9yZV9yZWYlM0RibF9hc3RfZHBfYnJhbmRMb2dvX3N0byZIPTFQUDhEVlBBUTBUMkhHWVRCM0cwVklHSFVCUUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IzMzNjY5OTsiPlBvcnRyb25pY3M8L2E-DQogICAgICAgIDwvc3Bhbj4NCiAgICANCg0KIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9saXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0uUi5QLjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaWtlPuKCuTc5OS4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaWNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9InByX3ByaWNlX2hpZ2hsaWdodCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTM0OS4wMCAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgU2F2ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrk0NTAuMDAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDU2JSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoJDQoNCg0KDQoNCg0KDQoNCgkNCg0KDQoNCgkNCg0KCQ0KDQogICAgDQoJICAgICANCiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICA8dHIgY2xhc3M9InByX21lcmNoYW50Ij4NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNTU1NTU1OyBmb250LXNpemU6MTJweDsiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIFNvbGQgYnkgDQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M1MzM1hVSDNPRU01NiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmFhZyUyRm1haW4lM0ZpZSUzRFVURjglMjZhc2luJTNEQjA5TTg4ODhETSUyNmlzQW1hem9uRnVsZmlsbGVkJTNEMSUyNm1hcmtldHBsYWNlSUQlM0RBMjFUSlJVVU40S0dWJTI2cHJvdG9jb2wlM0RjdXJyZW50JTI2c2VsbGVyJTNEQUo2U0laQzhZUURaWCUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1QTlVPVkFVU0hZS1hBMTZQQUFIOFFJN0dQQkVBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMnB4O2NvbG9yOiAjMzM2Njk5OyI-Q2xpY2t0ZWNoIFJldGFpbCBQcml2YXRlIEx0ZDwvYT4gYW5kIA0KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI-RnVsZmlsbGVkIGJ5IEFtYXpvbjwvc3Bhbj4uDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc3Bhbj4gDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwNSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KDQoNCjxkaXYgY2xhc3M9InByX2xlYXJuX21vcmUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4NCiAgICAgICAgPHRhYmxlIGNsYXNzPSJidG4tbGVhcm5tb3JlLXNtYWxsIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0iY29sb3I6ICMxMTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyAgd2hpdGUtc3BhY2U6IG5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkVDNjUwOyBmb250LXNpemU6MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDVweDsiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcD4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MTJYS0gwMFI3TDFaMyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDlNODg4OERNJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF83X2xtJkg9VFdLU0pDTFE1TDJCWUFXSVdBRFc0TEtUWTBNQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfN19sbSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMTExOyI-DQogICAgICAgICAgICAgICAgICAgICAgICBMZWFybiBtb3JlDQogICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPiA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJzZXBlcmF0b3IiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjZWFlYmVjIiB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjFweDtsaW5lLWhlaWdodDoxcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgIDwvdHI-DQo8L3RhYmxlPg0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KPHRhYmxlIHdpZHRoPSI2NDAiPg0KICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjYyMCIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBjbGFzcz0icHJfY29udGFpbmVyIj4NCiAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Imxpc3RfcHJvZHVjdCI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1MCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGNsYXNzPSJwcl9pbWFnZSI-DQogICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MTZISzFaWU9JR043SyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDdLQlZSVjVIJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF84X2ltJkg9SkNKV1RMQkJWSE9MS0FXWDFOUVJTVVo5UEtXQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfOF9pbSI-DQogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvSS81MVVoYTJsK1Y5TC5fU1I1MDAsNTAwXy5fU0wxNDBfLmpwZyIgY2xhc3M9InByX2ltYWdlXzE3NSBwcl9pbWFnZV9kZXNrdG9wIiBhbHQ9Ik9SSUNPIFVTQiAzLjAgSHViIDcgUG9ydHMgVVNCMy4wIFRyYW5zcGFyZW50IERlc2t0b3AgSFVCIHdpdGggQmx1ZSBJbmRpY2F0b3IgTGlnaHQgJmFtcDsgRHVhbCBQb3J0IFBvd2VyIFN1cHBseSB3aXRoIDFNIENhYmxlIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzY1IiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtU2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMzMzY2OTk7Ij4NCiAgICAgPGEgY2xhc3M9Im9tYV9wcl90aXRsZSIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9TUkwNTZMUUcyTFo1JlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwN0tCVlJWNUglM0ZyZWYlM0RlbV8xcF84X3RpJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1PRkpNTlhVSlRGT08wSU5XRldGSExWSFJIS0VBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4NCiAgICAgICAgICBPUklDTyBVU0IgMy4wIEh1YiA3IFBvcnRzIFVTQjMuMCBUcmFuc3BhcmVudCBEZXNrdG9wIEhVQiB3aXRoLi4uPC9hPg0KPC9zcGFuPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfYnlsaW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICA8c3BhbiBjbGFzcz0ib21hLXByLWJsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMzM7dGV4dC1hbGlnbjpsZWZ0OyI-DQogICAgICAgICAgICAgPGJyPiBieQ0KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPU9VOU43U0dLS0JHOSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZzdG9yZXMlMkZPUklDTyUyRnBhZ2UlMkY5RDUzQTQ4OC04QUMxLTQwRDktOUM4QS1FRjI2MzlCRUIwNjElM0ZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9hc3RfYmxuJTI2c3RvcmVfcmVmJTNEYmxfYXN0X2RwX2JyYW5kTG9nb19zdG8mSD1IQTZBQ0ZXTElMQkFVRldaQUtTVU9DREg2TE9BJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9hc3RfYmxuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiMzMzY2OTk7Ij5PUklDTzwvYT4NCiAgICAgICAgPC9zcGFuPg0KICAgIA0KDQogDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0ic3BhY2VyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX2xpc3QiPg0KICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5SLlAuOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9saXN0Ij4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpa2U-4oK5MSw4OTkuMDA8L3N0cmlrZT4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX291ciI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJwcl9wcmljZV9oaWdobGlnaHQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrkxLDc5OS4wMCAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgU2F2ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrkxMDAuMDAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCgkNCg0KDQoNCg0KDQoNCg0KCQ0KDQoNCg0KCQ0KDQoJDQoNCiAgICANCgkgICAgIA0KICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgU29sZCBieSANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zWTFOWEU1RzNHR1UmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZhYWclMkZtYWluJTNGaWUlM0RVVEY4JTI2YXNpbiUzREIwN0tCVlJWNUglMjZpc0FtYXpvbkZ1bGZpbGxlZCUzRDElMjZtYXJrZXRwbGFjZUlEJTNEQTIxVEpSVVVONEtHViUyNnByb3RvY29sJTNEY3VycmVudCUyNnNlbGxlciUzREEzVFVZTFpDUDQzQzZFJTI2c3NobVBhdGglM0QlMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPU5IN09MRU5GVDJJVElRSUpDRVkzQzdESjBQWUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEycHg7Y29sb3I6ICMzMzY2OTk7Ij5PUklDTyBEaXJlY3QgU3RvcmU8L2E-IGFuZCANCiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDsiPkZ1bGZpbGxlZCBieSBBbWF6b248L3NwYW4-Lg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8L3NwYW4-IA0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDUiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCg0KDQo8ZGl2IGNsYXNzPSJwcl9sZWFybl9tb3JlIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI-DQogICAgICAgIDx0YWJsZSBjbGFzcz0iYnRuLWxlYXJubW9yZS1zbWFsbCIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyIgc3R5bGU9ImNvbG9yOiAjMTExOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIHdoaXRlLXNwYWNlOiBub3dyYXA7YmFja2dyb3VuZC1jb2xvcjogI0ZFQzY1MDsgZm9udC1zaXplOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOiA1cHg7Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXA-DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTIxS01QNkJHNjlHSUwmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA3S0JWUlY1SCUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfOF9sbSZIPUdXQUY5Q1NISU8ySlRFU05NTU1aVzJMS0NJV0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzhfbG0iIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzExMTsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgTGVhcm4gbW9yZQ0KICAgICAgICAgICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgIDwvdGFibGU-DQo8L2Rpdj4NCg0KDQoNCiANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4gPHRhYmxlIHdpZHRoPSI2MjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0ic2VwZXJhdG9yIj4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjYyMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2VhZWJlYyIgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjYyMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxcHg7bGluZS1oZWlnaHQ6MXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjYyMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgIDwvdGFibGU-DQogICAgICA8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICA8L3RyPg0KPC90YWJsZT4NCiAgICANCiAgICANCiAgICANCg0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KDQoNCjx0YWJsZSB3aWR0aD0iNjQwIj4NCiAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxNXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICA8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI2MjAiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgY2xhc3M9InByX2NvbnRhaW5lciI-DQogICAgICAgICA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGNsYXNzPSJsaXN0X3Byb2R1Y3QiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTAiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBjbGFzcz0icHJfaW1hZ2UiPg0KICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJORUlXVlNJNFEzVlgmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjAxTTBUNjRFTSUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfOV9pbSZIPTFHS1A0U0hWTTBQQUZJWUJVSlBYSDZJVFhPT0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzlfaW0iPg0KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9tLm1lZGlhLWFtYXpvbi5jb20vaW1hZ2VzL0kvMzFvOTRVU25SQUwuX1NSNTAwLDUwMF8uX1NMMTQwXy5qcGciIGNsYXNzPSJwcl9pbWFnZV8xNzUgcHJfaW1hZ2VfZGVza3RvcCIgYWx0PSJRWiBBY3RpdmUgUG93ZXJlZCBVU0IgSHViLCAxMCBQb3J0IFVTQiBIdWIgd2l0aCAxMlYgNUEgNjBXIFBvd2VyIEFkYXB0ZXIsIFVTQiAzLjEgR2VuIDEiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNjUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI-DQogICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfdGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQo8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsU2Fucy1TZXJpZjtmb250LXNpemU6MTVweDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzMzNjY5OTsiPg0KICAgICA8YSBjbGFzcz0ib21hX3ByX3RpdGxlIiBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zNlBDSUNISjFCMTNZJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwMU0wVDY0RU0lM0ZyZWYlM0RlbV8xcF85X3RpJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1TWFFVS0I3Rk1BTkhHNkZHMkZDNDNLTExUNUdBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4NCiAgICAgICAgICBRWiBBY3RpdmUgUG93ZXJlZCBVU0IgSHViLCAxMCBQb3J0IFVTQiBIdWIgd2l0aCAxMlYgNUEgNjBXLi4uPC9hPg0KPC9zcGFuPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfYnlsaW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICA8c3BhbiBjbGFzcz0ib21hLXByLWJsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMzM7dGV4dC1hbGlnbjpsZWZ0OyI-DQogICAgICAgICAgICAgPGJyPiBieQ0KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTNDNTJRMVowT0tHWlYmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGc3RvcmVzJTJGUVolMkZwYWdlJTJGQjcwMjU1NUMtQjJCMy00OEQ2LTk2NDctQUVFNjM5RTcwNkYyJTNGcmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfYXN0X2JsbiUyNnN0b3JlX3JlZiUzRGJsX2FzdF9kcF9icmFuZExvZ29fc3RvJkg9TVJGVUtDRlYxMERRQUsxWFJVS1NBSFlGSUQ4QSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfYXN0X2JsbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjojMzM2Njk5OyI-UVo8L2E-DQogICAgICAgIDwvc3Bhbj4NCiAgICANCg0KIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9saXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0uUi5QLjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaWtlPuKCuTQsOTE0LjAwPC9zdHJpa2U-ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9vdXIiPg0KICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpY2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0icHJfcHJpY2VfaGlnaGxpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5NCwzNDQuMDAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IFNhdmU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX3NhdmluZ3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5NTcwLjAwIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMiUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KCQ0KDQoNCg0KDQoNCg0KDQoJDQoNCg0KDQoJDQoNCgkNCg0KICAgIA0KCSAgICAgDQogICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgPHRyIGNsYXNzPSJwcl9tZXJjaGFudCI-DQogICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzU1NTU1NTsgZm9udC1zaXplOjEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBTb2xkIGJ5IA0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUpSS1o3QzdQSFE0VyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmFhZyUyRm1haW4lM0ZpZSUzRFVURjglMjZhc2luJTNEQjAxTTBUNjRFTSUyNmlzQW1hem9uRnVsZmlsbGVkJTNEMSUyNm1hcmtldHBsYWNlSUQlM0RBMjFUSlJVVU40S0dWJTI2cHJvdG9jb2wlM0RjdXJyZW50JTI2c2VsbGVyJTNEQUo2U0laQzhZUURaWCUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1NRU9aNkcxQzMxQ0hVN0VIWUQ3RFVEVVpRR0lBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMnB4O2NvbG9yOiAjMzM2Njk5OyI-Q2xpY2t0ZWNoIFJldGFpbCBQcml2YXRlIEx0ZDwvYT4gYW5kIA0KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI-RnVsZmlsbGVkIGJ5IEFtYXpvbjwvc3Bhbj4uDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDwvc3Bhbj4gDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwNSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiPg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KDQoNCjxkaXYgY2xhc3M9InByX2xlYXJuX21vcmUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4NCiAgICAgICAgPHRhYmxlIGNsYXNzPSJidG4tbGVhcm5tb3JlLXNtYWxsIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBzdHlsZT0iY29sb3I6ICMxMTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyAgd2hpdGUtc3BhY2U6IG5vd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkVDNjUwOyBmb250LXNpemU6MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDVweDsiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIG5vd3JhcD4NCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MkFYRlE2VUFEWE5HWCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDFNMFQ2NEVNJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF85X2xtJkg9QlNLWU40UUQ4Qk1UVVlJN05JTjMyR0hJM0lTQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfOV9sbSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMTExOyI-DQogICAgICAgICAgICAgICAgICAgICAgICBMZWFybiBtb3JlDQogICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPiA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJzZXBlcmF0b3IiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjZWFlYmVjIiB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjFweDtsaW5lLWhlaWdodDoxcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgIDwvdHI-DQo8L3RhYmxlPg0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KPHRhYmxlIHdpZHRoPSI2NDAiPg0KICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjYyMCIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBjbGFzcz0icHJfY29udGFpbmVyIj4NCiAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Imxpc3RfcHJvZHVjdCI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1MCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGNsYXNzPSJwcl9pbWFnZSI-DQogICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MjBHMFNVMVpVNjVLTyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDdHTE5KQzI1JTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xMF9pbSZIPVpKOUE4T1JYWTQ2SUFXWUlPUFZXWkZaRVlPR0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzEwX2ltIj4NCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9JLzQxM1ptYkhsQUtMLl9TUjUwMCw1MDBfLl9TTDE0MF8uanBnIiBjbGFzcz0icHJfaW1hZ2VfMTc1IHByX2ltYWdlX2Rlc2t0b3AiIGFsdD0iWkVCUk9OSUNTIFplYi0xMDBIQiA0IFBvcnRzIFVTQiBIdWIgZm9yIExhcHRvcCwgUEMgQ29tcHV0ZXJzLCBQbHVnICZhbXA7IFBsYXksIEJhY2t3YXJkIENvbXBhdGlibGUgLSBCbGFjayIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjM2NSIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl90aXRsZSI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtYWxpZ246bGVmdDtjb2xvcjojMzM2Njk5OyI-DQogICAgIDxhIGNsYXNzPSJvbWFfcHJfdGl0bGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTE4RjEwNjhXQTJNVlYmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA3R0xOSkMyNSUzRnJlZiUzRGVtXzFwXzEwX3RpJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1UTk9USldXRjk1RkFPNUNBMVFSRk9aSkJYQ0tBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4NCiAgICAgICAgICBaRUJST05JQ1MgWmViLTEwMEhCIDQgUG9ydHMgVVNCIEh1YiBmb3IgTGFwdG9wLCBQQyBDb21wdXRlcnMsLi4uPC9hPg0KPC9zcGFuPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfYnlsaW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICA8c3BhbiBjbGFzcz0ib21hLXByLWJsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMzM7dGV4dC1hbGlnbjpsZWZ0OyI-DQogICAgICAgICAgICAgPGJyPiBieQ0KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTFBSE43T1JOVkNaRVEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGc3RvcmVzJTJGWmVicm9uaWNzJTJGcGFnZSUyRkVBNjhGQzI3LTIxMzUtNDYyNi1BRjE5LTgyOTZGQTQ0NjQyOSUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4mSD1UV0VEU0pSVDBDUEpGR05ITFJMTVRVNkUxQkNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9hc3RfYmxuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiMzMzY2OTk7Ij5aRUJST05JQ1M8L2E-DQogICAgICAgIDwvc3Bhbj4NCiAgICANCg0KIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9saXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0uUi5QLjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaWtlPuKCuTM5OS4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWwgUHJpY2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0icHJfcHJpY2VfaGlnaGxpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5MjQ5LjAwICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX3NhdmluZ3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBTYXZlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTE1MC4wMCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzglKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCgkNCg0KDQoNCg0KDQoNCg0KCQ0KDQoNCg0KCQ0KDQoJDQoNCiAgICANCgkgICAgIA0KICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgU29sZCBieSANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xTU9GN0dVV0w0U1BWJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGYWFnJTJGbWFpbiUzRmllJTNEVVRGOCUyNmFzaW4lM0RCMDdHTE5KQzI1JTI2aXNBbWF6b25GdWxmaWxsZWQlM0QxJTI2bWFya2V0cGxhY2VJRCUzREEyMVRKUlVVTjRLR1YlMjZwcm90b2NvbCUzRGN1cnJlbnQlMjZzZWxsZXIlM0RBSjZTSVpDOFlRRFpYJTI2c3NobVBhdGglM0QlMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPVlXS0tSV1hZSVZNTVFBNDlPR0hYTFpHS0ZQUUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEycHg7Y29sb3I6ICMzMzY2OTk7Ij5DbGlja3RlY2ggUmV0YWlsIFByaXZhdGUgTHRkPC9hPiBhbmQgDQogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij5GdWxmaWxsZWQgYnkgQW1hem9uPC9zcGFuPi4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPC9zcGFuPiANCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTA1IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQoNCg0KPGRpdiBjbGFzcz0icHJfbGVhcm5fbW9yZSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPg0KICAgICAgICA8dGFibGUgY2xhc3M9ImJ0bi1sZWFybm1vcmUtc21hbGwiICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiIHN0eWxlPSJjb2xvcjogIzExMTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7ICB3aGl0ZS1zcGFjZTogbm93cmFwO2JhY2tncm91bmQtY29sb3I6ICNGRUM2NTA7IGZvbnQtc2l6ZToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czogNXB4OyI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj1ZVTVTVFlBTFRXV0MmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA3R0xOSkMyNSUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTBfbG0mSD1FNFdYQTU4VzE5QURXRUVSVDBBR0JXOUpRRkFBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xMF9sbSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMTExOyI-DQogICAgICAgICAgICAgICAgICAgICAgICBMZWFybiBtb3JlDQogICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPiA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJzZXBlcmF0b3IiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjZWFlYmVjIiB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjFweDtsaW5lLWhlaWdodDoxcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgIDwvdHI-DQo8L3RhYmxlPg0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KPHRhYmxlIHdpZHRoPSI2NDAiPg0KICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjYyMCIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBjbGFzcz0icHJfY29udGFpbmVyIj4NCiAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Imxpc3RfcHJvZHVjdCI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1MCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIGNsYXNzPSJwcl9pbWFnZSI-DQogICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M0MxSzdGUFJQUE0xMSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDhRSk5LWDk0JTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xMV9pbSZIPVVHSVpCMzVBNUFZMkhLT1ZVMlBXR01OREtPUUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzExX2ltIj4NCiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9JLzQxdUcwLVd6QWxMLl9TUjUwMCw1MDBfLl9TTDE0MF8uanBnIiBjbGFzcz0icHJfaW1hZ2VfMTc1IHByX2ltYWdlX2Rlc2t0b3AiIGFsdD0iVHVremVyIDQtUG9ydHMgVVNCIEEgdG8gVVNCIDMuMCBIVUIgd2l0aCBIaWdoLVNwZWVkIERhdGEgVHJhbnNmZXIgJmFtcDsgRmFzdCBDaGFyaW5nIFBvcnRzLCBDb21wYXRpYmxlIGZvciBNYWNCb29rIEFpciwgTWFjIE1pbmksIGlNYWMgUHJvLCBNaWNyb3NvZnQgU3VyZmFjZSwgVWx0cmFCb29rcywgTGFwdG9wLCBOb3RlYm9vaywgRGVza3RvcCAoV2hpdGUpIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMzY1IiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtU2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMzMzY2OTk7Ij4NCiAgICAgPGEgY2xhc3M9Im9tYV9wcl90aXRsZSIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M0c5OFJLSlpYQ0lKQSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDhRSk5LWDk0JTNGcmVmJTNEZW1fMXBfMTFfdGklMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPVFORkVMQlYyVldGUDFRRkdNVVBENkdXNFVaR0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IzMzNjY5OTsiPg0KICAgICAgICAgIFR1a3plciA0LVBvcnRzIFVTQiBBIHRvIFVTQiAzLjAgSFVCIHdpdGggSGlnaC1TcGVlZCBEYXRhLi4uPC9hPg0KPC9zcGFuPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfYnlsaW5lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAgICA8c3BhbiBjbGFzcz0ib21hLXByLWJsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMzM7dGV4dC1hbGlnbjpsZWZ0OyI-DQogICAgICAgICAgICAgPGJyPiBieQ0KICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJaSjY1WU9EWDVGTjkmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGc3RvcmVzJTJGVHVremVyJTJGcGFnZSUyRjIzRjIxRkUzLTU1QkUtNDE1Ri05QzA1LUE4M0NGNEIyMTIxMSUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4lMjZzdG9yZV9yZWYlM0RibF9hc3RfZHBfYnJhbmRMb2dvX3N0byZIPVlJQ0dPVTRaQjlONTZBUUxBNVIyWVRNSFQ3V0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IzMzNjY5OTsiPlR1a3plcjwvYT4NCiAgICAgICAgPC9zcGFuPg0KICAgIA0KDQogDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0ic3BhY2VyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX2xpc3QiPg0KICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5SLlAuOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9saXN0Ij4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpa2U-4oK5MSw1OTkuMDA8L3N0cmlrZT4gICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX291ciI-DQogICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcl9wcmljZV9sYWJlbCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWFsIFByaWNlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9InByX3ByaWNlX2hpZ2hsaWdodCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTU5OS4wMCAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgU2F2ZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDigrkxLDAwMC4wMCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNjMlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCgkNCg0KDQoNCg0KDQoNCg0KCQ0KDQoNCg0KCQ0KDQoJDQoNCiAgICANCgkgICAgIA0KICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgU29sZCBieSANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xSlhYSVhERk9TQ05KJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGYWFnJTJGbWFpbiUzRmllJTNEVVRGOCUyNmFzaW4lM0RCMDhRSk5LWDk0JTI2aXNBbWF6b25GdWxmaWxsZWQlM0QxJTI2bWFya2V0cGxhY2VJRCUzREEyMVRKUlVVTjRLR1YlMjZwcm90b2NvbCUzRGN1cnJlbnQlMjZzZWxsZXIlM0RBSjZTSVpDOFlRRFpYJTI2c3NobVBhdGglM0QlMjZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPVVJN1A4SlRRWFVJTkJVQ0FITzE0Tk1BWldHV0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEycHg7Y29sb3I6ICMzMzY2OTk7Ij5DbGlja3RlY2ggUmV0YWlsIFByaXZhdGUgTHRkPC9hPiBhbmQgDQogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij5GdWxmaWxsZWQgYnkgQW1hem9uPC9zcGFuPi4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPC9zcGFuPiANCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTA1IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQoNCg0KPGRpdiBjbGFzcz0icHJfbGVhcm5fbW9yZSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPg0KICAgICAgICA8dGFibGUgY2xhc3M9ImJ0bi1sZWFybm1vcmUtc21hbGwiICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjMiIHN0eWxlPSJjb2xvcjogIzExMTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7ICB3aGl0ZS1zcGFjZTogbm93cmFwO2JhY2tncm91bmQtY29sb3I6ICNGRUM2NTA7IGZvbnQtc2l6ZToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czogNXB4OyI-DQogICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0yUjBXWURBVkRLMlpCJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwOFFKTktYOTQlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2VtXzFwXzExX2xtJkg9WENaSlNJTlJWQkxJV0xUTUNHUUFYV1RBVDdFQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTFfbG0iIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzExMTsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgTGVhcm4gbW9yZQ0KICAgICAgICAgICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgIDwvdGFibGU-DQo8L2Rpdj4NCg0KDQoNCiANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4gPHRhYmxlIHdpZHRoPSI2MjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0ic2VwZXJhdG9yIj4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjYyMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMSI-DQogICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2VhZWJlYyIgd2lkdGg9IjYyMCIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjYyMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxcHg7bGluZS1oZWlnaHQ6MXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjYyMCIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgIDwvdGFibGU-DQogICAgICA8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxNSI-DQogICAgICAgICA8ZGl2IHdpZHRoPSIxNSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgIDwvdGQ-DQogICA8L3RyPg0KPC90YWJsZT4NCiAgICANCiAgICANCiAgICANCg0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KDQoNCjx0YWJsZSB3aWR0aD0iNjQwIj4NCiAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxNXB4OyI-Jm5ic3A7PC9kaXY-DQogICAgICA8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI2MjAiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgY2xhc3M9InByX2NvbnRhaW5lciI-DQogICAgICAgICA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGNsYXNzPSJsaXN0X3Byb2R1Y3QiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTAiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBjbGFzcz0icHJfaW1hZ2UiPg0KICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJaNE1BUjk2UTlNMlImVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA5MTY1MjVUMyUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTJfaW0mSD1ITjNOQUYwNTNaMDdSVktWSFlEUFhBUDRBU0lBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xMl9pbSI-DQogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvSS80MTNoTndoc29WUy5fU1I1MDAsNTAwXy5fU0wxNDBfLmpwZyIgY2xhc3M9InByX2ltYWdlXzE3NSBwcl9pbWFnZV9kZXNrdG9wIiBhbHQ9IlZlcmlsdXjCriBVU0IgSHViIDMuMCBmb3IgUEMsIDQtUG9ydCBIaWdoIFNwZWVkIFVTQiBIdWIgd2l0aCBBbHVtaW5pdW0gU2hlbGwsIFVTQiBQb3J0IEh1YiAzLjAgQ29tcGF0aWJsZSBmb3IgUEMsIE1hY0Jvb2ssIE1hYyBQcm8sIE1hYyBNaW5pLCBpTWFjLCBTdXJmYWNlIFBybywgWFBTLCBQQyAoR3JleSkiIGJvcmRlcj0iMCI-DQogICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNjUiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI-DQogICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfdGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQo8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsU2Fucy1TZXJpZjtmb250LXNpemU6MTVweDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzMzNjY5OTsiPg0KICAgICA8YSBjbGFzcz0ib21hX3ByX3RpdGxlIiBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zQlROUU9IWkpWOE0mVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA5MTY1MjVUMyUzRnJlZiUzRGVtXzFwXzEyX3RpJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1JUURLRFFNT0c2RFdPQTFHUjdaQ1ZBUFFGREdBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4NCiAgICAgICAgICBWZXJpbHV4wq4gVVNCIEh1YiAzLjAgZm9yIFBDLCA0LVBvcnQgSGlnaCBTcGVlZCBVU0IgSHViIHdpdGguLi48L2E-DQo8L3NwYW4-IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9ieWxpbmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAgICAgDQoNCiAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgICAgIDxzcGFuIGNsYXNzPSJvbWEtcHItYmwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2EsU2Fucy1TZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzMzMzt0ZXh0LWFsaWduOmxlZnQ7Ij4NCiAgICAgICAgICAgICA8YnI-IGJ5DQogICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MVpXTjIxRTkyNTJQWSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZzdG9yZXMlMkZWZXJpbHV4JTJGcGFnZSUyRkYzRDE2QUM1LTIwOTItNEY2RS1CN0M0LTZBMTRCRUQyNDExNSUzRnJlZl8lM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4lMjZzdG9yZV9yZWYlM0RibF9hc3RfZHBfYnJhbmRMb2dvX3N0byZIPUtMQllaVklLWFdMOUpIWEFPR09DNFBVQUtUMEEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX2FzdF9ibG4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IzMzNjY5OTsiPlZlcmlsdXg8L2E-DQogICAgICAgIDwvc3Bhbj4NCiAgICANCg0KIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9saXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0uUi5QLjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RyaWtlPuKCuTgzOS4wMDwvc3RyaWtlPiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWwgUHJpY2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0icHJfcHJpY2VfaGlnaGxpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oK5Mjk5LjAwICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3ByaWNlX3NhdmluZ3MiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBTYXZlOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKCuTU0MC4wMCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNjQlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCgkNCg0KDQoNCg0KDQoNCg0KCQ0KDQoNCg0KCQ0KDQoJDQoNCiAgICANCgkgICAgIA0KICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgU29sZCBieSANCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xOVNDVE04UkFGMkdGJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGYWFnJTJGbWFpbiUzRmllJTNEVVRGOCUyNmFzaW4lM0RCMDkxNjUyNVQzJTI2aXNBbWF6b25GdWxmaWxsZWQlM0QxJTI2bWFya2V0cGxhY2VJRCUzREEyMVRKUlVVTjRLR1YlMjZwcm90b2NvbCUzRGN1cnJlbnQlMjZzZWxsZXIlM0RBMkpKMUFRV1pHRU44NyUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1USVJVVUNYNUpURkNROElRNkpSWDNST1lJQ0VBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMnB4O2NvbG9yOiAjMzM2Njk5OyI-RXhwcmVzcyBNYXg8L2E-IGFuZCANCiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDsiPkZ1bGZpbGxlZCBieSBBbWF6b248L3NwYW4-Lg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8L3NwYW4-IA0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDUiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIj4NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCg0KDQo8ZGl2IGNsYXNzPSJwcl9sZWFybl9tb3JlIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI-DQogICAgICAgIDx0YWJsZSBjbGFzcz0iYnRuLWxlYXJubW9yZS1zbWFsbCIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyIgc3R5bGU9ImNvbG9yOiAjMTExOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgIHdoaXRlLXNwYWNlOiBub3dyYXA7YmFja2dyb3VuZC1jb2xvcjogI0ZFQzY1MDsgZm9udC1zaXplOjEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOiA1cHg7Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgIDx0ZCBub3dyYXA-DQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTMyTFdIWEtHOVQ3MTgmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA5MTY1MjVUMyUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfZW1fMXBfMTJfbG0mSD1MM0xFRUYyTkJLSklVT0ROU1VFOEtWWkpUVFFBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9lbV8xcF8xMl9sbSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMTExOyI-DQogICAgICAgICAgICAgICAgICAgICAgICBMZWFybiBtb3JlDQogICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCjwvZGl2Pg0KDQoNCg0KIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICA8L3RhYmxlPiA8dGFibGUgd2lkdGg9IjYyMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJzZXBlcmF0b3IiPg0KICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIxIj4NCiAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjZWFlYmVjIiB3aWR0aD0iNjIwIiBoZWlnaHQ9IjEiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjFweDtsaW5lLWhlaWdodDoxcHg7Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPHRyIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2MjAiIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iNjIwIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-DQogICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MTVweDsiPiZuYnNwOzwvZGl2Pg0KICAgICAgPC90ZD4NCiAgIDwvdHI-DQo8L3RhYmxlPg0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KDQogICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICAgICAgLnNlZl9zcGFjZXIgew0KICAgICAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW47DQogICAgICAgIH0NCiAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIDwvc3R5bGU-DQogICAgDQogICAgDQogICAgDQogICAgDQoNCg0KPHRhYmxlIGNsYXNzPSJjcy1zbG90IGRldmljZVdpZHRoIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgIHdpZHRoPSI2NDAiPg0KICAgIDx0cj4NCiAgICAgICAgPHRkPg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB3aWR0aDoxMDAlOyIgPg0KICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImZvb3Rlci1iYW5uZXIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIj4NCg0KDQoNCiAgICANCg0KICAgIA0KICAgICAgIA0KICAgICAgICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZm9vdGVyLWJhbm5lciIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPg0KDQoNCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgICAgIA0KICAgICAgICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJmb290ZXItYmFubmVyIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI-DQoNCg0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCiAgICAgICANCiAgICAgICAgIA0KICAgIA0KDQogICAgDQoNCiAgICANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICANCiAgICAgICAgPC90ZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkPg0KDQo8dGFibGUgd2lkdGg9IjY0MCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJkZXZpY2VXaWR0aCBzZWZfZm9vdGVyX2xpbmtmYXJtIg0KICAgIHZhbGlnbj0ibWlkZGxlIj4NCiAgICA8dHI-DQogICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgIGNsYXNzPSJsaW5rZmFybSIgc3R5bGU9ImZvbnQtZmFtaWx5OkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ij4NCiAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYWxpZ249ImNlbnRlciIgY2xhc3M9ImRldmljZVdpZHRoIHNlZl9mb290ZXJfbGlua2Zhcm0iIGJnY29sb3I9IiNGRkZGRkYiIHZhbGlnbj0ibWlkZGxlIj4NCiAgICA8dHI-DQogICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iI0ZGRkZGRiIgY2xhc3M9ImxpbmtmYXJtIiBzdHlsZT0iZm9udC1mYW1pbHk6SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPg0KICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJmYXJtIj4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJmYXJtaGVhZCIgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiNlNDc5MTE7bGluZS1oZWlnaHQ6MTZweDsgZm9udC13ZWlnaHQ6Ym9sZDsiPjxmb250IGZhY2U9ImFyaWFsLCB2ZXJkYW5hLGEgc2Fucy1zZXJpZiIgc2l6ZT0iMyIgY29sb3I9IiNlNDc5MTEiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTRweDtjb2xvcjojZTQ3OTExO2xpbmUtaGVpZ2h0OjE2cHgiPkZpbmQgR3JlYXQgRGVhbHMgb24gTWlsbGlvbnMgb2YgUHJvZHVjdHM8L2ZvbnQ-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHgiIGNsYXNzPSJzZWZfZm9vdGVyX2xpbmtmYXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTU1IiB2YWxpZ249InRvcCIgY2xhc3M9ImZhcm0xIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHgiIHdpZHRoPSI5NSUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjIiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MU1DSkFBNDhKNFJETSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Cb29rcyUyRiUzRm5vZGUlM0Q5NzYzODkwMzEmSD1BR0U4RUNETVBOUTZTRDNFUVhNTFYySk1FWjRBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Cb29rcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkJvb2tzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M0lRSjJYUk9WR1g0NSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9lQm9va3MlMkYlM0Zub2RlJTNEMTYzNDc1MzAzMSZIPUtYWFBVWU1LOUlRSkFPRldEUFIxQ1ZOV1EzUUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX2xmX2VCb29rcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPktpbmRsZSBlQm9va3M8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zUlBIVDNIWUM2UU5QJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlM0Zub2RlJTNEOTg0MDA5NzAzMSUyNnJlZiUzRHBlX2xmX0tlUmVhZGVyJTI2cmVmXyUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzEmSD1PODZJQVpPQ1BBNTZJMFcwUFBZREVFU0pGVThBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPktpbmRsZSBlLXJlYWRlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJDTFIwT1Q0MElVVU8mVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZHAlMkZCMDBRSkRPRUFPJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9LUFcmSD02Mks5QzFCRVZDT1VYRE9XU1pUOVFIRFFHRVlBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9LUFciIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5LaW5kbGUgUGFwZXJ3aGl0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTNCR0I5N1JJSzdHNEYmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfbGZfTXVzaWMlMkYlM0Zub2RlJTNEOTc2NDQ1MDMxJkg9SjFHSTc3ME9ITFdSVTRPSjRHMFBBRVhKQlBTQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfbGZfTXVzaWMiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5NdXNpYyw8L2E-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUZPSUVENUQyWU9ETyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Nb3ZpZXMlMkYlM0Zub2RlJTNEOTc2NDE2MDMxJkg9V1ZOVTdKSUpBRkFCUkRVVktSTEtQV1NNV0hDQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfbGZfTW92aWVzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-TW92aWVzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9M001MjkyUUxPTDRXTCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9WRyUyRiUzRm5vZGUlM0Q5NzY0NjAwMzEmSD1EUEpXRTNJOFM1RVVMTEtEVTBDR1JKU0FRWTBBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9WRyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPlZpZGVvIEdhbWVzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTgwIiB2YWxpZ249InRvcCIgY2xhc3M9ImZhcm0yIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHgiIHdpZHRoPSI5NSUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjIiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MU4wRkdTS0NBVkM4SyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Nb2JpbGVzJTJGJTNGbm9kZSUzRDEzODk0MDEwMzEmSD1YTk9BUkFZV0hXTkJFSkFITEVGU1hBTzJNQ0NBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Nb2JpbGVzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-TW9iaWxlcyAmYW1wOyA8L2E-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MTNDTFpXRDA5VUVLTCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9UYWJsZXRzJTJGJTNGbm9kZSUzRDEzNzU0NTgwMzEmSD1aTFZENTFWUVAwTU5HQ1hVWTJYTUYwWExFR1NBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9UYWJsZXRzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-VGFibGV0czwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUIxQThZWURDQjZEVSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Db21wcyUyRiUzRm5vZGUlM0Q5NzYzOTIwMzEmSD1DSklTVDdJMExNWkpRV1lJSk5FRFpPSlVIQVVBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9Db21wcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkNvbXB1dGVycyAmYW1wOyBBY2Nlc3NvcmllczwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPUZHVUU0UVRVNlhCVyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9sZl9DYW1lcmElMkYlM0Zub2RlJTNEMTM4ODk3NzAzMSZIPURaQUVMRldLSERYUlJUSTk1QlY3QUhLR01GV0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX2xmX0NhbWVyYSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkNhbWVyYXMsPC9hPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTFPR1E1QkdNQUgyQkUmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQVZUViUyRiUzRm5vZGUlM0QxNTc1NDA3MDMxJkg9SkpVVkFOR0xRWDNZSTdVUUk0Q1U3S0JGVE40QSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQVZUViIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPiBBdWRpbyAmIFZpZGVvPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MjBHTUlXOEJUTUU2SiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9NdXNpY2FsSW5zdHIlMkYlM0Zub2RlJTNEMzY3NzY5NzAzMSZIPThPWVBSRUFaMkpLMVZGWjRQVVNMWkdTQUpORUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX011c2ljYWxJbnN0ciIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPk11c2ljYWwgSW5zdHJ1bWVudHM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zSUIzRUE2OUNOMzBGJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX1Nwb3J0cyUyRiUzRm5vZGUlM0QxOTg0NDQzMDMxJkg9TVo1UE5JSExIWVVSSzFJWUVQV08wMFpHNzE4QSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfU3BvcnRzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-U3BvcnRzICYgRml0bmVzczwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTExVkVXOFNKVDEzR1MmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfSEslMkYlM0Zub2RlJTNEOTc2NDQyMDMxJkg9MDFRTUlHWktBTEVDSUpGU1VFMk1BQUxDWVhXQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfSEsiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5Ib21lICYgS2l0Y2hlbjwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEzNSIgdmFsaWduPSJ0b3AiIGNsYXNzPSJmYXJtMyI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4IiB3aWR0aD0iOTUlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIyIiBjZWxscGFkZGluZz0iMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTRTQTVJNUlRV1M4WSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9DbG90aGluZyUyRiUzRm5vZGUlM0QxNTcxMjcxMDMxJkg9V09LS0UxTFBIQlU3TUhCWkdENjhXUkJITlZPQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQ2xvdGhpbmciIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5DbG90aGluZywgQWNjZXNzb3JpZXM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj1HOVE2NDgxS1NSTzEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfV2F0Y2hlcyUyRiUzRm5vZGUlM0QxMzUwMzg3MDMxJkg9RzJZTFQyVkNaVUlQVUpBTVBBMDJORFg5TkM0QSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfV2F0Y2hlcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPldhdGNoZXMsPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj00WE40TkxGOTNGQlAmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfSmV3ZWxsZXJ5JTJGJTNGbm9kZSUzRDE5NTEwNDgwMzEmSD1HMUVHRjlGM0I1TDBSNEVUV0JWS1ZISUkxVjhBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9KZXdlbGxlcnkiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5KZXdlbGxlcnk8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xUUxHNTE0QjFKOFFXJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX0hhbmRiYWdzJTJGJTNGbm9kZSUzRDE5ODMzMzgwMzEmSD1STElCS0JPMERTWUdWUzJCV09MUlhNRk0yRThBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9IYW5kYmFncyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkhhbmRiYWdzICYgPC9hPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTFRWTI4Vk1DNDIySlMmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfTHVnZ2FnZSUyRiUzRm5vZGUlM0QyNDU0MTY5MDMxJkg9OUFMWlQ5VEY0S0RJTVhPN0xZVDhDQ1ZHUlRFQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfTHVnZ2FnZSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkx1Z2dhZ2U8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj1NV1IwQ0FRNFFCMzEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfU2hvZXMlMkYlM0Zub2RlJTNEMTk4MzM5NjAzMSZIPTE4SEdQT0dYQ0dYRExISkJTUklUOFhLUzdaQUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX1Nob2VzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-U2hvZXM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0xSFEwVUE5V1VMNklaJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX0JlYXV0eSUyRiUzRm5vZGUlM0QxMzU1MDE2MDMxJkg9Vzg3MDJGUlpRSlBKQUdSMVJNNFlFVjM4RFcwQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQmVhdXR5IiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-QmVhdXR5ICYgPC9hPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJPUVhVVjVJMVBLMEImVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfSGVhbHRoJTJGJTNGbm9kZSUzRDEzNTAzODQwMzEmSD1aOTBITlpBRUFUUkYwOFZBM1FDWDZMRkFPNk1BJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9IZWFsdGgiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5IZWFsdGg8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zUDlRWVRZTDVBTTdKJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX1RveXMlMkYlM0Zub2RlJTNEMTM1MDM4MDAzMSZIPVhQRVdEQTZWRVQ2Uk9QWkM2SERaQ0VCVU9BS0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX1RveXMiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5Ub3lzICYgPC9hPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTNPUjFTN1hBWDJFOEomVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQmFieSUyRiUzRm5vZGUlM0QxNTcxMjc0MDMxJkg9QVNJWENFTDBBQVNZWUlNTVU4U0hVRUszWVFDQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQmFieSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkJhYnkgUHJvZHVjdHM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNzAiIHZhbGlnbj0idG9wIiBjbGFzcz0iZmFybTQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MTJweCIgd2lkdGg9Ijk1JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0yUFNGS09VOElGMUtFJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX0dDJTJGJTNGbm9kZSUzRDM3MDQ5ODIwMzEmSD1UR1dBSjhJTE9VQVlMUzZOQ0dUMlVYTUVBUkNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9HQyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkdpZnQgQ2FyZHM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0yV1lCQzlaSzhDM0JMJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX1BldHMlMkYlM0Zub2RlJTNEMjQ1NDE4MTAzMSZIPVVDTTlBWFVYS1MyOEZRRU1WQVJSMU1NVENaU0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX1BldHMiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5QZXQgU3VwcGxpZXM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zSzVUVFNTQVFQVzgwJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX0dvdXJtZXQlMkYlM0Zub2RlJTNEMjQ1NDE3ODAzMSZIPVFIVEtPV05QT1c2TzBBN1ZJSVhRUjdGTjczSUEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX0dvdXJtZXQiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5Hb3VybWV0IDwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJSSTdVWTM1T1ZVRlcmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGbXNob3AlM0ZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MSZIPVNJWEZLTEJaU0FGRThSSDBUSEhNWDZCRTZROEEmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-QW1hem9uIFNob3BwaW5nIEFwcDwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTZKSjZXQTFHUVY4UiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmRpZ2l0YWwlMkZmaW9uYSUyRmtjcC1sYW5kaW5nLXBhZ2UlM0ZyZWZfJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9LQ1AmSD1ZREpJTjVBU1VJMTNBS0ZFTEFMV0pGRkVVSjBBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9LQ1AiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5LaW5kbGUgUmVhZGluZyBBcHBzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPUJEU0YxUUREN1RUSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNjAwMTIzODhiY2U5NDAxZmY1NDRlZTFiNjQ3ZDEzZDc0NTBwMGV1JlI9MUQ1OENZWDFXOEVXMiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmZlYXR1cmUuaHRtbCUyRnJlZiUzRHBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfQXBwc3RvcmUlM0ZpZSUzRFVURjglMjZkb2NJZCUzRDEwMDA3MjE3NzMmSD1VU0kxWFlTWUtSTTRIWkVBTU5YQUFKVEZRQVFBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9BcHBzdG9yZSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkFwcHN0b3JlIGZvciBBbmRyb2lkPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgIDwvdGQ-DQogICAgPC90cj4NCjwvdGFibGU-DQo8dGFibGUgY2xhc3M9InNlZl9zcGFjZXIiIHdpZHRoPSI2NDAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0iYm9yZGVyLXNwYWNpbmc6MHB4O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsiPg0KICAgIDx0ciBoZWlnaHQ9IjIiPg0KICAgICAgICA8dGQgYmdjb2xvcj0iI2NjY2NjOSIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIyIj4NCiAgICAgICAgICAgIDxkaXYgd2lkdGg9IjY0MCIgc3R5bGU9ImZvbnQtc2l6ZToycHg7bGluZS1oZWlnaHQ6MnB4Ij4mbmJzcDs8L2Rpdj4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KPC90YWJsZT4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KPC90YWJsZT4gIA0KIA0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgIC5zZWZfZm9vdGVyX2Nvbm5lY3QgLnlzaG9ydGN1dHMgeyBjb2xvcjojRkZGRkZGIH0NCjwvc3R5bGU-DQoNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-DQogICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNDgwcHgpIHsNCiAgICAuc2VmX2Zvb3Rlcl9jb25uZWN0IHsgd2lkdGg6IDMwMHB4ICFpbXBvcnRhbnQ7IH0NCiAgICB9DQo8L3N0eWxlPg0KDQo8dGFibGUgY2xhc3M9InNlZl9mb290ZXJfY29ubmVjdCIgYmdjb2xvcj0iI0ZGRkZGRiIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMTAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iNjQwIiBhbGlnbj0iY2VudGVyIj4NCiAgICA8dGJvZHk-DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIj4NCiAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBhbGlnbj0ibGVmdCIgY2VsbHBhZGRpbmc9IjYiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0ic2V0dGluZ3MiIGNib3JkZXI9IjAiPg0KICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJIS1k1TFRQUjY4QzkmVD1DJlU9aHR0cCUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX2Zvb3Rlcl9hbWF6b25sb2dvJTJGJkg9OVdFMEFBWlRVUVJPMVNSQzBNWVFJT0xEUFpLQSZyZWZfPXBlXzQwNTAwMDQxXzEyMTc3MDM1NzFfcGVfZm9vdGVyX2FtYXpvbmxvZ28iIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2ctZWMyLmltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzMxL2FhL2FtYXpvbi9sb2dvMi5naWYiIGFsdD0iQW1hem9uLmluImJvcmRlcj0iMCJhbGlnbj0ibGVmdCIvPjwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij48dGFibGUgY2xhc3M9ImNvbm5lY3QiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjYiIGNlbGxzcGFjaW5nPSIwIiBhbGlnbj0icmlnaHQiPg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI-PGZvbnQgc3R5bGU9ImZvbnQtZmFtaWx5OiB2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM2NjY7IGxpbmUtaGVpZ2h0OjEwcHgiIGNvbG9yPSIjOTk5IiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWYiIHNpemU9IjEiPkNvbm5lY3Qgd2l0aCBBbWF6b24gSW5kaWE8L2ZvbnQ-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJmYWNlYm9vayI-PGZvbnQgc3R5bGU9ImZvbnQtZmFtaWx5OiB2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM5OTk7IiBjb2xvcj0iIzk5OSIgZmFjZT0idmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmIiBzaXplPSIxIj48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9QkRTRjFRREQ3VFRLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI2MDAxMjM4OGJjZTk0MDFmZjU0NGVlMWI2NDdkMTNkNzQ1MHAwZXUmUj0zMjVVOElNMlJNUzhFJlQ9QyZVPWh0dHAlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZyZWRpcmVjdC5odG1sJTJGcmVmJTNEcGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9mYl9mdHIlMkYlM0Zsb2NhdGlvbiUzRGh0dHAlM0ElMkYlMkZ3d3cuZmFjZWJvb2suY29tJTJGQW1hem9uSU4lMjZ0b2tlbiUzRDIwNzVENUVBQzdCQjIxNDA4OTcyOEUyMTgzRkQzOTE3MDZENDFFOTQmSD1KMlBBMkFBTkNCVFFBOUxJQ01ZVlU2RFFUUkNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV9mYl9mdHIiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2ctZWN4LmltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzAxL3VzLW1haWwvRkJsb2dvLmdpZiIgYWx0PSJpbWFnZSIgYm9yZGVyPSIwIiBoZWlnaHQ9IjMwIiBoc3BhY2U9IjAiIHZzcGFjZT0iMCIgd2lkdGg9IjMwIiBzdHlsZT0id2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7IiAvPjwvYT48L2ZvbnQ-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0d2l0dGVyIj48Zm9udCBzdHlsZT0iZm9udC1mYW1pbHk6IHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogIzk5OTsiIGNvbG9yPSIjOTk5IiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWYiIHNpemU9IjEiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJBTldJU1UxMFJINlUmVD1DJlU9aHR0cCUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnJlZGlyZWN0Lmh0bWwlMkZyZWYlM0RwZV80MDUwMDA0MV8xMjE3NzAzNTcxX3BlX3R3X2Z0ciUyRiUzRmxvY2F0aW9uJTNEaHR0cCUzQSUyRiUyRnR3aXR0ZXIuY29tJTJGQW1hem9uSU4lMjZ0b2tlbiUzREEzMDlERkJGQ0IxRTM3QTgwOEZGNTMxOTM0ODU1REM4MTdGMTMwQjYmSD0zVEJTTEFDSjZUOVBIUU4zTFBET0hFNlRBTVNBJnJlZl89cGVfNDA1MDAwNDFfMTIxNzcwMzU3MV9wZV90d19mdHIiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2ctZWN4LmltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzAxL3VzLW1haWwvVHdpdHRlckxvZ28uZ2lmIiBhbHQ9ImltYWdlIiBib3JkZXI9IjAiIGhlaWdodD0iMzAiIGhzcGFjZT0iMCIgdnNwYWNlPSIwIiB3aWR0aD0iMzAiIHN0eWxlPSJ3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDsiIC8-PC9hPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-ICAgICAgICAgICAgDQogICAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGJvZHk-DQo8L3RhYmxlPg0KICAgICAgICAgICANCiAgICAgICAgICAgIDwvdGQ-DQogICAgICAgIDwvdHI-DQoNCiAgICA8L3RyPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-DQogIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpIHsNCiAgICBib2R5W3lhaG9vXSAuc2VmX2xlZ2FsX2Zvb3RlciB7IHdpZHRoOiAzMDBweCAhaW1wb3J0YW50OyB9DQogIH0gICAgDQo8L3N0eWxlPg0KDQoNCg0KDQo8dGFibGUgYWxpZ249ImNlbnRlciIgIHdpZHRoPSI2NDAiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0ic2VmX2xlZ2FsX2Zvb3RlciIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2UzZTNlMyIgYmdjb2xvcj0iI2UzZTNlMyIgPg0KICAgIDx0ciBoZWlnaHQ9IjEwIj4NCiAgICAgIDx0ZCB3aWR0aD0iMTAwJSI-PGRpdiB3aWR0aD0iMTAwJSIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyBsaW5lLWhlaWdodDoxMHB4Ij4mbmJzcDs8L2Rpdj48L3RkPg0KICAgIDwvdHI-DQogICAgPHRyPg0KICAgICAgPHRkIGFsaWduPSJsZWZ0IiBjbGFzcz0ibGVnYWwtdGV4dCI-DQogICAgICBXZSBob3BlIHlvdSBmb3VuZCB0aGlzIG1lc3NhZ2UgdG8gYmUgdXNlZnVsLiBIb3dldmVyLCBpZiB5b3UnZCByYXRoZXIgbm90IHJlY2VpdmUgZnV0dXJlIGUtbWFpbHMgb2YgdGhpcyBzb3J0IGZyb20gQW1hem9uLmluLCBwbGVhc2UgPGENCiAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTFVSTNIQVdWM0k0QUUmVD1YJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGJTJGZ3AlMkZnc3MlMkZvJTJGMTFYTHowVmxkclFGOWpweU1PbksybUlTY2wxLjdqT291VXZ6QnE4anlmM3RWYmlUS1FlZVJNaWdaSWVlTUlQVzMmSD1HTUlNSExTQVJHQVRHS0NYMUtKMEJGQUlTSEFBIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmOyBmb250LXNpemU6IDEwcHg7Ij5vcHQtb3V0IGhlcmU8L2E-IDxici8-IDxici8-DQogICAgICAgIFBsZWFzZSBub3RlIHRoYXQgcHJvZHVjdCBwcmljZXMgYW5kIGF2YWlsYWJpbGl0eSBhcmUgc3ViamVjdCB0byBjaGFuZ2UuIFByaWNlcyBhbmQgYXZhaWxhYmlsaXR5IHdlcmUgYWNjdXJhdGUgYXQgdGhlIHRpbWUgdGhpcyBuZXdzbGV0dGVyIHdhcyBzZW50OyBob3dldmVyLCB0aGV5IG1heSBkaWZmZXIgZnJvbSB0aG9zZSB5b3Ugc2VlIHdoZW4geW91IHZpc2l0IEFtYXpvbi5pbi4gDQogICAgICAgIA0KICAgICAgICA8YnIvPjxici8-QW1hem9uLmluIE1hcmtldHBsYWNlIHBsYXRmb3JtOiBQcm9kdWN0cyBzb2xkIGJ5IGEgTWFya2V0cGxhY2Ugc2VsbGVyIGFyZSBzdWJqZWN0IHRvIHRoYXQgc2VsbGVyJ3MgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Ygc2FsZS4gU2VlIHd3dy5BbWF6b24uaW4gZm9yIGRldGFpbHMuIDxiciAvPjxiciAvPg0KICAgICAgICBSZWZlcmVuY2U6IDEyMTc3MDM1NzE8YnIgLz48YnIgLz4NCiAgICAgICAgVGhpcyBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSBmb2xsb3dpbmcgZS1tYWlsIGFkZHJlc3M6IDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7IGZvbnQtc2l6ZTogMTBweDsiPnBza2h1c2hhbEBnbWFpbC5jb208L3NwYW4-DQogICAgICA8L3RkPg0KICAgIDwvdHI-DQogIDwvdGJvZHk-DQo8L3RhYmxlPg0KICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICANCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgDQogICAgPGltZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBzcmM9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz1CRFNGMVFERDdUVEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjYwMDEyMzg4YmNlOTQwMWZmNTQ0ZWUxYjY0N2QxM2Q3NDUwcDBldSZSPTJOR00yS0VGMU5DN1ImVD1FJlU9aHR0cHMlM0ElMkYlMkZpbWFnZXMtZXUuc3NsLWltYWdlcy1hbWF6b24uY29tJTJGaW1hZ2VzJTJGRyUyRjAxJTJGbmF2JTJGdHJhbnNwLmdpZiZIPVhCMzBWWTk1T0xOQUtITUpaOUVGQlZKWk44V0EmcmVmXz1wZV80MDUwMDA0MV8xMjE3NzAzNTcxX29wZW4iIC8-PC9ib2R5Pg0KPC9odG1sPg0KDQoNCg0KDQoNCg==" - } - } - ] - }, - "sizeEstimate": 198800, - "historyId": "527715", - "internalDate": "1732579958000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_04_193640e74d93dc9b_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_04_193640e74d93dc9b_20241126.json deleted file mode 100644 index aaefb58..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_04_193640e74d93dc9b_20241126.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "id": "193640e74d93dc9b", - "threadId": "193640e74d93dc9b", - "labelIds": [ - "UNREAD", - "CATEGORY_UPDATES", - "INBOX" - ], - "snippet": "Feast your eyes on our completely redesigned web console, plus expanded migration options and more... Hello, As we gather to celebrate Thanksgiving in the US, we're especially grateful for our", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp984823wrq; Mon, 25 Nov 2024 08:01:29 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IH+vf8/Fteko3M8o3piPWLQDPikJ1wq+G3dKPy69Vuxm+CTLGfM304hsif0pHcSATwRtMiP" - }, - { - "name": "X-Received", - "value": "by 2002:a05:620a:17a5:b0:7b1:50a8:3394 with SMTP id af79cd13be357-7b51455cc96mr1998061085a.36.1732550489464; Mon, 25 Nov 2024 08:01:29 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732550489; cv=none; d=google.com; s=arc-20240605; b=U0GfsIWubWP6yFaeQTUTLUXf86KkhphJhC+lyqVLrCZlta3hBcfGm7bHPJvBZsp9gU yA5m9aNMZWG0qszyQzMZotMWTaYSHuHV9vrHbJAymzpHlaCASGoZPw28d8zeqibeuork hdexr4PjezkCb+SCMZ/o/lhbsGv9KSpDLrkJbn4wsyVIZTMZDd/4KP9XfXEVjCk6WyG7 +G2C2kEanh/mP2bQk059GCKpbvfiqmHZbL5PtIdijZ5eO9pZFKFc86tDKJO+0vgpm+D8 HY3WEsGb/PzVFYSQGaFcE+oxNEzENXqcC6n5Sfz3BWCbBel1gHqu+H2vcNfGu/bUwelG MfyQ==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:list-unsubscribe-post:precedence:mime-version:subject :message-id:to:reply-to:from:date:list-unsubscribe:dkim-signature :dkim-signature; bh=hvQzqDR16zPZGhiM7v8hurpvFgqpnV1lolZcpeqI8r0=; fh=u/EceduMLbMJaVmVACWimtVNyu5iebWbNB9Q7JrDYgs=; b=DbOqZM5uvFufkZaBlxN5XdanVQCZiMNAevcLjyV8RyOACO1vFtLSLnxtnz8q276iOk l4YAUBVUepCxvJPjdi+tldA9ZJpbyZD/3l7cOlx1qpAmvP2jNySSqolco8HqJ2Q+c6AT 5v8cmjMoVm1Ni82iUWLGHURa4PJgAGC9dPH6DHmkorMJxWFeHRAn35vhF6d5MQzY2MlI qWJxD1Mlr+hamALJRukMDRiMJShkc1/3kdmzeIkd/cvjyrizSFCr15pc7m3PSE7HSe84 FvbJ9twKEDkKsJfqXcGHHJCdcMWmTVpEE1V2eB2ch0cETMJLvnuxFb+H9d4WeqrrluU8 pzkA==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@bf01x.hubspotemail.net header.s=hs2 header.b=m+NNTsoY; dkim=pass header.i=@zilliz.com header.s=hs2-24054828 header.b=dCZcJzff; spf=pass (google.com: domain of 1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net designates 158.247.24.91 as permitted sender) smtp.mailfrom=\"1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net\"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zilliz.com" - }, - { - "name": "Return-Path", - "value": "<1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net>" - }, - { - "name": "Received", - "value": "from bid47t5.bf01x.hubspotemail.net (bid47t5.bf01x.hubspotemail.net. [158.247.24.91]) by mx.google.com with ESMTPS id af79cd13be357-7b657597496si812333685a.609.2024.11.25.08.01.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Nov 2024 08:01:29 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of 1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net designates 158.247.24.91 as permitted sender) client-ip=158.247.24.91;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@bf01x.hubspotemail.net header.s=hs2 header.b=m+NNTsoY; dkim=pass header.i=@zilliz.com header.s=hs2-24054828 header.b=dCZcJzff; spf=pass (google.com: domain of 1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net designates 158.247.24.91 as permitted sender) smtp.mailfrom=\"1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net\"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zilliz.com" - }, - { - "name": "Received", - "value": "by 172.16.224.35 with SMTP id a0b2377bl4ybydq92cr5x2s5w50rr0v0djrec38pwv4; Mon, 25 Nov 2024 16:01:29 GMT" - }, - { - "name": "DKIM-Signature", - "value": "v=1; s=hs2; d=bf01x.hubspotemail.net; i=@bf01x.hubspotemail.net; h=sender:from:from:reply-to:to:to:cc:cc:subject:subject:list-unsubscribe:form-sub:feedback-id:list-unsubscribe-post; a=rsa-sha256; c=relaxed/relaxed; bh=hvQzqDR16zPZGhiM7v8hurpvFgqpnV1lolZcpeqI8r0=; b=m+NNTsoYyn2tZ/wV/I6UXPnfIpGJuLdZAU4vRxS4NKPIDG+i5HNt9eY5o5cAIs 4mUUepea+TfNyi1PilJDnFg6Zhh6LD7j9Oj/VROX4FGC0adfVydQqIPRPVqH4zM +/F5GZ/f/dAJbmFmMM+gTkM0ifvVULVahaMhI3c5gvseCadkXRFOjZHyJTyUBYm uGgBP0x4ohO9zFOTHs9GytG3rcfEu/7Gs3mxCQAxarLMl89Cm2poJriAHxRLAQ2 BoxWeEhly3BAdFYdysDY0Ry1nawXbaisH4vCjZWJvQk6lOOnYMk02ngYgrrJh82 dSeSmMjmJiY/OvItyWj2X8mXBivQ==; q=dns/txt; t=1732550489; x=1732813289;" - }, - { - "name": "DKIM-Signature", - "value": "v=1; s=hs2-24054828; d=zilliz.com; i=@zilliz.com; h=sender:from:from:reply-to:to:to:cc:cc:subject:subject:list-unsubscribe:form-sub:feedback-id:list-unsubscribe-post; a=rsa-sha256; c=relaxed/relaxed; bh=hvQzqDR16zPZGhiM7v8hurpvFgqpnV1lolZcpeqI8r0=; b=dCZcJzffwhM4dmI/qrCp3/TW07yVpibY8OLH0z05VJsoBTyRH9wcaDsP75uYMr BeNlVnAWQyLy866E2CYJOzgeb9OMJFZNelPwFDng3eYzdJksy/kXP5suqVdb7Tl 7s/dfdnogPgL6by5j1ZedccQag7j6RUCMQVnKeV1j5L3sXQidbd1MlTLBZzzstl hKQiujdK8VX9qPp4BMRlOnOPnFLKDnYxPp+Zmx4/xR9iB6zPeEi+d+QHJhDgoqu yun7oQEDtdIe8QG1mw3W0U6SIYAoe5eaduaeA4QfYTdUvIaCTaTBMYZlD35UiQw m3NzBexw0u61kEnBll4lbBVFuEqQ==; q=dns/txt; t=1732550489; x=1732813289;" - }, - { - "name": "Return-Path", - "value": "<1axbzsh1c0inx9vvhdkhx9vxwsytxpfuxt98ee-pskhushal=gmail.com@bf01x.hubspotemail.net>" - }, - { - "name": "X-HS-Cid", - "value": "1axe6rm4ft7e61m9x0ng8rdlct79zcgp3ad5ty" - }, - { - "name": "List-Unsubscribe", - "value": ", " - }, - { - "name": "Date", - "value": "Mon, 25 Nov 2024 08:01:29 -0800" - }, - { - "name": "From", - "value": "Steffi Li " - }, - { - "name": "Reply-To", - "value": "chloe.williams@zilliz.com" - }, - { - "name": "To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Message-ID", - "value": "<1732550488892.f6001060-de41-4256-ae9f-3bd110de9463@bf01x.hubspotemail.net>" - }, - { - "name": "Subject", - "value": "\ud83e\udd83 Zilliz Cloud November Update: Much to be Thankful For!" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_52217_1401384494.1732550489030\"" - }, - { - "name": "Precedence", - "value": "bulk" - }, - { - "name": "X-Report-Abuse-To", - "value": "abuse@hubspot.com (see https://policy.hubspot.com/abuse-complaints)" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "Feedback-ID", - "value": "aeolu3y:aiftvzxh:aidf:HubSpot" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 8758, - "data": "RmVhc3QgeW91ciBleWVzIG9uIG91ciBjb21wbGV0ZWx5IHJlZGVzaWduZWQgd2ViIGNvbnNvbGUsIHBsdXMgZXhwYW5kZWQgbWlncmF0aW9uIG9wdGlvbnMgYW5kIG1vcmUuLi4NCg0KSGVsbG8sDQoNCkFzIHdlIGdhdGhlciB0byBjZWxlYnJhdGUgVGhhbmtzZ2l2aW5nIGluIHRoZSBVUywgd2UncmUgZXNwZWNpYWxseSBncmF0ZWZ1bCBmb3Igb3VyIHZpYnJhbnQgY29tbXVuaXR5IGFuZCBleGNpdGVkIHRvIHNoYXJlIG91ciBsYXRlc3QgdXBkYXRlcyEgVGhpcyBOb3ZlbWJlciwgd2UncmUgc2VydmluZyB1cCBhIGNvbXBsZXRlbHkgcmVkZXNpZ25lZCBleHBlcmllbmNlIHRoYXQgd2lsbCB0cmFuc2Zvcm0gaG93IHlvdSBpbnRlcmFjdCB3aXRoIFppbGxpeiBDbG91ZC4gTGV0J3MgZGl2ZSBpbnRvIHdoYXQncyBjb29raW5nOg0KDQrwn46oIEZyZXNoICYgTW9kZXJuIFdlYiBDb25zb2xlOiBXZSd2ZSBjb21wbGV0ZWx5IHJlaW1hZ2luZWQgb3VyIHdlYiBjb25zb2xlIGludGVyZmFjZSwgYnJpbmdpbmcgeW91IGEgbW9yZSBpbnR1aXRpdmUgYW5kIHZpc3VhbGx5IGFwcGVhbGluZyBleHBlcmllbmNlOg0KDQotIFJlZGVzaWduZWQgTmF2aWdhdGlvbjogU3RyZWFtbGluZWQgbWVudSBzdHJ1Y3R1cmUgc2VwYXJhdGluZyBvcmdhbml6YXRpb24gYW5kIHByb2plY3QgbGV2ZWxzIGZvciBjbGVhcmVyIG5hdmlnYXRpb24gcGF0aHMgYW5kIGltcHJvdmVkIGZlYXR1cmUgZGlzY292ZXJhYmlsaXR5Lg0KLSBDYXJkLUJhc2VkIERlc2lnbjogUmVwbGFjZWQgdGFibGUgbGF5b3V0cyB3aXRoIG9yZ2FuaXplZCBjYXJkIHZpZXdzIGZvciBiZXR0ZXIgaW5mb3JtYXRpb24gaGllcmFyY2h5IGFuZCByZWR1Y2VkIHZpc3VhbCBjb21wbGV4aXR5Lg0KLSBDb25zaXN0ZW50IExheW91dCBTeXN0ZW06IFN0YW5kYXJkaXplZCBncmlkIHN5c3RlbSBhY3Jvc3MgYWxsIHBhZ2VzIGZvciBtb3JlIGludHVpdGl2ZSBmZWF0dXJlIGFjY2VzcyBhbmQgcmVkdWNlZCBjb2duaXRpdmUgbG9hZC4NCg0KQ2hlY2sgb3V0IHRoZSBuZXcgbG9vayEg8J-Rhw0KDQpMYXJrMjAyNDExMTQtMTYwNTIwIChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzFuM3B5ZDBXOHdMS1NSNmxaM21wVzV0SEtfUzd4ekh6Ulc1Z3NOVEY1eExUbTdXOFhOMzRDMTQ5clZIVzJQOU03QzhCWHlxQ1c1dEJDdG40VHJfTFRXNEhoTXIyMnhWcHZNVzN6Y3NfTjUzY3czcFc2TnJHdHo0ZDltajdXN0tUaHhuNFpTdlI4VzZ4anZLQzV2Sk04NFc3cDcyYi0xWlhWbjFXNzN4RE1iNTRuZ1h5VzZZTmtUbjVOTjY0M1c0ckJucm0yRFFyTVBXOGtMLXpNM2dWeFY1VzdyeW53VzU3UzlRRFcxc0RfRjU4Tk4wZFNXMnhnWGhuMkNicnNZVzRxei0ybTNOOWM2Ylcxc2MyQzExZFl2MC1XN0pRdmYyNVBWNFRxVzg4bDNjeTdXbjlGbVc2OUZwc3o0UHMtamJOMTJuUmxGcHdUalFXM1NzZmY4NFE3bWg5VzRaRFRaRjF2SkJfdFc1OGpiOXY5Z1JYOFRWNnQwREMxWThwWFpmOWxXemh6MDQgKQ0KDQrwn6aDIE90aGVyIEhpZ2hsaWdodHMgJiBJbXByb3ZlbWVudHMNCg0KLSBFbmhhbmNlZCBEYXRhIE1pZ3JhdGlvbjogTm93IHN1cHBvcnRpbmcgUWRyYW50IChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzFuM2dWRFlXOHdMS1NSNmxaM3BaVlh5a1Y1Mm02dGZDTjg5WHJmWmxTTDJ3VnhkWHJIODBXZ3gxVzdQQnhKejZWUEdkQ1ZQWWxENDJDeENmU1czc2ZRUXIxLUJjRkdXM1F6WGxGOG1qM3A2TjM0bXhDNjUybVlKVzRTSE1XSjQ5SFo1bVc1Y05fRDk3TnczZE5XOWx6eWNiNERWS3NoVzhCWkIyTTVsd19Zblc1eU5zSzc4M1ctdmtXNjVfa3d5M3N6MXpHVzRnbE40ZjNWeEtDYlc4eFpja3k0ZHdQRF9XMWJZeGg0N0hKZmtLVzRWam1jZDItX1h0Ulc0R2hIeTY3WXptLTdXN19jaEJsMlRZd3NGVzdLS2dONDczRzlLdlc2alNzNDQybERkM3lOOEJxU3ltdDR2M1ZWWVZkWHY1bXc0bXhWSzc2LTkyX2xMSG1XM1hrdzhCN3JLc04xVnZxTUoyNS1ydmJ5VzFTeDNWUDkwU0o5TGY3WF82NE0wNCApIGFuZCBQaW5lY29uZSBTZXJ2ZXJsZXNzIChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzFuM2dWRFlXOHdMS1NSNmxaM2tfVzJMWVNEODZ3WGxiTVZmNjRoNDN6N2JmMVczeTZmYmQ1REpfakJXMzNQMlJyNXpwQndOVzh2bEtaaDNQV1Rzc1c1WDc2ZDExTlpycEJXOE5YNjNNNWg5MzQtTjRLeFktdkxDcDdfVzVkd1JScThqZEM3MlczVmRLVFQyZGJzZjBXMVE4S25zM3NydERuVjh3MzBONjNXN0RKVzNtcDBHdjd2ODRZOFc3V2MxWGo1SHd4NUNXOERCTmxsMm5CRl9GVzZaWWJOMjlrcmNyaFc2NTIzYzMxYzh2N1pXM3JyTWtfNGdubDFwTjdiR3JxVzcxWVlmTjQwcjNXM1JUd0JwVzE1bXFOWTk1dFNSN1c2SGJxY3cxcFJIbjdXMkM3Zmw3OHAwNFZaVzNTSy1zajFwalNWX1c4XzZIbVozMENqTVROMktoWUdWbHctRjJOODUyMkg2YllMenNXNXNONEJxNHQyYzNOZjRoNkpkNDA0ICkgZm9yIHNlYW1sZXNzIHRyYW5zaXRpb25zIHRvIFppbGxpeiBDbG91ZC4NCi0gRmxleGlibGUgUmVwbGljYSBNYW5hZ2VtZW50OiBBZGQgb3IgcmVtb3ZlIHlvdXIgcmVwbGljYXMgaW5zdGFudGx5IHdpdGhvdXQgYW55IHNlcnZpY2UgaW50ZXJydXB0aW9uLiBDaGVjayB0aGUgZG9jIChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzFuM2dWRFlXOHdMS1NSNmxaM21sVzRGSzR2SDNucWhRd1Z0bWQxYjhMbXZSYlc2S1hyX200NFdycy1ON2pqWjc0SncyMVNXMXNNcVJ3N3RLV1JqVzhHOXR3SjhzN0s4V1cxaHJyd04yTU5CdjFXMTJyV1dSOF9oeWtZVzF6TVp4eDRWZjVnRlc0TkhMVzY2ZkJfdHBXNGNDRF9GMUs5R0hIVko0UzlNM0ZxS2JfVzV4d3F6aDh5c0hSVFc4R2ZMNlM4WDY0ZnFXOTk2azlDNkwwOUpxVzVxc2daVDE2Q3Izd1czSG4tekg1TUJXXzlOOEpZX1EwbURkcXhXMmdfUEhuM0taU1R5VzdyazRjVzJEUjFaY1ZtQmJ5dDNKRGdsOVcxZGpTOHI5MzBRMlpXNDdsRDFNMjAtUlZiVzhTdzZtdDZGLXFWNlc4MWozTXM3WjF4d3pWQmNDaGg0cHlrTkxXMnE3Y0NmN18tN3NDVzZRMGMyOTUxbU1meWY2OE1KLW4wNCApIGZvciBtb3JlIGRldGFpbHMuDQotIFJlZGVzaWduZWQgSW52b2ljZSBQYWdlOiBBIGNsZWFyZXIgdmlldyBvZiB5b3VyIHVzYWdlIGFuZCBjb3N0cyB3aXRoIGRvd25sb2FkIG9wdGlvbnMuDQoNCldlJ3JlIHRoYW5rZnVsIGZvciB5b3VyIGNvbnRpbnVlZCB0cnVzdCBpbiBaaWxsaXogQ2xvdWQgYW5kIGNhbid0IHdhaXQgdG8gc2VlIHdoYXQgeW91IGJ1aWxkIHdpdGggdGhlc2UgbmV3IGZlYXR1cmVzISBBcyBhbHdheXMsIHdlJ2QgbG92ZSB0byBoZWFyIHlvdXIgZmVlZGJhY2sgaW4gb3VyIERpc2NvcmQgY29tbXVuaXR5IChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzBQM3B5ZDBXN2xDZExXNmxaM21EVzRaa3hQMzhicGhfa1c1dHlubGs4ZFpUQ2xWUFdEbWIzd3BxbHNOMm50TDRHczY0aDJXMlQ1TDdGOTh3ZmNQTjRIVHdmS3dta01ZVzdGX1pGODNQeHE0aFcyVE5DNnY2S0toOFFXMUhQM1dmNHZDREszTjFURlMzTFpiM3A2Vzd3OFNMazgxczRmMVcyTXR0d2ozSloyc1lXNzc4LTdXNExZUk5SVzFXWkJUNjJtVlRTTFc3Z0tDX1czTkhZR25XM0d0TFJXMlhaR0ZCVzk2UnF3TjdQUC1yMlc4MWtjd24ySkszWkZONWdfejdQeUNyNWNXMkNQQndTOFNoLVRDVzJNY1lOcDNDZ2dZU1c5Nk4ydkw0QzljM3NXOF9MbTlLOGY5OWRNVzhXN016YzN5eDBReGY4R1RfTkswNCApIC4NCg0KSGFwcHkgVGhhbmtzZ2l2aW5nIGFuZCBIYXBweSBCdWlsZGluZyEg8J-NgQ0KDQpCZXN0IFJlZ2FyZHMsDQoNClN0ZWZmaSBMaQ0KDQpEaXJlY3RvciBvZiBQcm9kdWN0IE1hcmtldGluZywgWmlsbGl6DQoNCkdpdGh1Yl9pY29uIChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzBQM3B5ZDBXN2xDZExXNmxaM204VzVGR3RaTTNzalBKTVc5NWw4Q2Y4VjhXMWdXN182NFdLM0t2MVc4TjJ4N2x6MUZNTmtfVzk5S0ZrODhzNmZGVFcybDlqMDM2UktjOUZXNW14XzYwMzJ4MnFqVzVsMDFOazc0TVBzV1c1SjBYeHQ2YzZNUDlWMjI2Q0c5MS1IanpXNk54M3Q2NXpzNnFZTjRqVm5abEtLX1hjVzc1UEZLXzZ3US1nYlcxNHNmaEsybTBkWENXN3BjSlFjNy1MOUd3TjZkWjZCdE5kcl9OVzMxWkJkZDExRERyZ1czX3g2Z3M4eTQ1ZDhWTUp2ZzA3R1JCTnlXOFFXcU1MMnpwSjQ5TjJRX0hLYkNWWmdQVzRkdHl0aDZTMzc4NVc0ZDNacmc0aFhyODVXODgxM1ljNU1RejJLZjU1UkctZDA0ICkNCg0KVHdpdHRlci0yMDIzMTAxOC0xMTExMTAgKGh0dHBzOi8vZDJSTmZQMDQubmExLmh1YnNwb3RsaW5rcy5jb20vQ3RjL0RQKzExMy9kMlJOZlAwNC9WWGZ2U0YzeTZacVlXMzkxR1RtN0Z3Y2wtVzNEbDRTbTVuUVpMSk4yYnBjMTQzcHlkMFc3WTgtUFQ2bFozbUxOOTd4cHRtWG1zVjFON21xc2Z6NE5oRHJOMVdncTJ0X0I0S3hXN0Q1Tnk0MnJIaFZDVzZqaF8wbTE2Um1kalc3QmgxNWcyRFJIQl9XNndmdDgxNEp0dnJRVzFDazIwYzNkQ2pWbFc2blI4c1Y5MHhiMjlXMXlWMzFaOFR5MFBmTjZqQ0tmenFSaDV5VzZ0NHRreTVYanNfWVc0UlMyU3YyODVwSjhWS003aFk1M1ZDWmNXNExiS0tnMTVkYlFKVzNDWTlWUjdHVHNNZ1c2elRzR1g1bm5HMjBXOG40ZDB5MWJQNFRqVzM4UnBrWjZIY0xta1czUmpuVFQ0a3lkeHdXNnh0Vmc5NUgzVDU2VzhLY2pYdjZKTlo1NlZIbTVfNDhyZ1Y4M1cyMkxDU3gxbjBYVG5XM0psUlMzM00zSzRuVzNicnFscjlqclpHcmY0SF8yakMwNCApDQoNCkxpbmtlZGluX2ljb24gKGh0dHBzOi8vZDJSTmZQMDQubmExLmh1YnNwb3RsaW5rcy5jb20vQ3RjL0RQKzExMy9kMlJOZlAwNC9WWGZ2U0YzeTZacVlXMzkxR1RtN0Z3Y2wtVzNEbDRTbTVuUVpMSk4yYnBjMTQzcHlkMFc3WTgtUFQ2bFozcDhXMjIxWndCMlFYS1dZVnQwTHByN3oxUFlSVzVZQkN0OThsNzkwTFcycms3Sy03VzRUU3RXMllKTjNsNTdXamc4VzFWQl9DQjhIdEpIelczQko1WlQ3ZmxxTlNWa0wwVjMxYkduR21XMmtuUzdoNnJwS0g2VzgtandsMjYyYnIzVFZYR3AtczNGQkZMelc1UXlZU3g1Vi1EMFhXMjktVmh4M19OU3ZQVzd0c1Y5eTRWY2NReFc3TDBqV1c0NVc5NjFXMzN6eXpnNjJYZ1BoVzZtUkwxcTFQTDZoNlcxdkhsWVE4azdoOXFXOGwwajN4MWdrcTFwVzZLcm5UQjJLa0Y4M1c1MV9RQ2QyVjlKZm1XMnBrbk1LNU55SnRmVzNOZGhxSDRHNWMwQlZmVFlWMDNwUUYzUlczOFZ6eXk3d3l3a0hXMXE5c0NZNWxmZkJYZjhtTHkzWTA0ICkNCg0KaW5zLTIwMjMxMDE4LTExMTExOCAoaHR0cHM6Ly9kMlJOZlAwNC5uYTEuaHVic3BvdGxpbmtzLmNvbS9DdGMvRFArMTEzL2QyUk5mUDA0L1ZYZnZTRjN5NlpxWVczOTFHVG03RndjbC1XM0RsNFNtNW5RWkxKTjJicGMxNDNweWQwVzdZOC1QVDZsWjNwOVc3cjdTX2s3cjIxc21XNG02V3hxMXJUTUoxVzhkdlIzZDM4YzlKcFcxLXBoQjk4ajZEV3lXNVNzcHBqM2hrLTlHVzN4UGxneDdYMmNiQ1czSzBZN1ozREJYMHJXMl8wQ2J2MXZmc2oxVzJGZlFmVDZMdmpiRlc3bnItTE44M3dWRkxWd3l0cS0yTVh3VjVXNlJZTXRyNUp3Ujh0VzRRZm01XzFSLVZDdFZndGg2aDYwX1RYM1czNmRSMVQyOGhmWmRXNC1ZVkoxMlZnR19WVmw3dFNsOFR6QjFsVzNrVi1jYjcxbS04dlc2bWhDNzI2QjRRc25XNXZ3cHljMjRER1BCVzVsWFJLcDN4VzJiNVc1WWsyc1Y0ajgwTE5XM3ZGeEIxMUtIbld3VzM3Rk5xeDJocUJkblc1bHlNcDgyc2hTMHlXNkw1OVljNW55MnRsZHEwVlFZMDQgKQ0KDQpEaXNjb3JkIChodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzBQM3B5ZDBXN2xDZExXNmxaM2t2VzRNSFhKUDhIWnc1elcyZ1F5X3g4TmZGbVNXMmtnUEd3MlhUTmZaTjR2MmZyWXZHVmRLVzV6c0w3czZKZmRudFc0Vy1zNE0xVzh2Nk1XMThKRjJnNFB0eWtYVzdKMXJzdzJtclJyUlc4MWNUMG0xNlFKQ0hXMVZoU2RXM3RoWFdNVzZOY2s2MTFUcjFNd1c2M3hkU3M5MHpKUUhXOGtjbGdjOEJHa0NHVzJERm5jUjF5MGZMdFc4SjhSbjU1WjRmTm1XMk54NThZMzYweGZ2TTRSczcxRGNrWWhXNk03Y0NNNnFjcmxkVzQwWWNkajI3bUpRNVZNODJTSDR6UlotNFc1eF95TU42UEt0NVRWNWsyMEg2am5NLWhXNmZyMER2OHY0dEJMVzE0ekJGZzN6ODJrRmY0dkdaZEgwNCApDQoNCkxpbmtlZGluLTIwMjMxMDE4LTExMTEwMyAoaHR0cHM6Ly9kMlJOZlAwNC5uYTEuaHVic3BvdGxpbmtzLmNvbS9DdGMvRFArMTEzL2QyUk5mUDA0L1ZYZnZTRjN5NlpxWVczOTFHVG03RndjbC1XM0RsNFNtNW5RWkxKTjJicGMxNDNweWQwVzdZOC1QVDZsWjNwWE44WWdTY1dEZ3kzWFc4YzNTUUI5MF9SeVRXOWZSTlJTM3A0LWJWVzk3dmQ5ZzFmeUg3Qlc2dGR4MlY0WEh5SnNXMnE0SHdoNmQ0S0JOVnZCTno4MXQ1VExCVzkzeHQ2ZzRrd3h6bVc3c3ZxX1A3NlhsTk5XMlpkN3FXNEZuREhkVzJOZG1mTjV2LUhSTlc4d3Z0cUcyMFl5MEZXNE5ETTJCOFdHZ21SVzQ0NFQ1SzNmMTIzWE40NHdRSFlHY3N6ZFczeENNM1I3Z1IwNWxXNU5YZnpzMThqY1YtVjNrMGJXMkxTTG43VzFqUEo3YzJQbnNTSlc4NnQtczA0dGROOFBXMVkwOGMyMlNwWjJ6VzFyWmhCYjczbjNITlc3Q1I3V0c3bThKRHpXNFRnNnJkOFhZSDN2VzJuaFdyLTQ3dzkzVlc0MGd6bHo5MlNQcE1mN2hHeG4wMDQgKQ0KDQpaaWxsaXogSW5jLCAyMDEgUmVkd29vZCBTaG9yZXMgUGt3eSwgU3VpdGUgMzMwLCBSZWR3b29kIENpdHksIENBIDk0MDY1LCBVbml0ZWQgU3RhdGVzDQoNClVuc3Vic2NyaWJlIChodHRwczovL2hzLTI0MDU0ODI4LnMuaHVic3BvdGVtYWlsLm5ldC9ocy9wcmVmZXJlbmNlcy1jZW50ZXIvZW4vZGlyZWN0P2RhdGE9VzJuWFMtTjMwaC1CY1cySEZWcXA0Y0tkOXdXM2JyTU5MMzJsSlZuVzN6MUpOVzNDOU5SYlcyQ0Z0Qm0zMnNYQktXNDFWOHlIMUJOeVlHVzJLQktHNDJQTms3a1czajYyUGczemR5SjFXMjE3eWRKMjJUTjBwVzItQmRCcTMycXNjWVcxUXJsOXozNkI3UVZXM2gtQjVfM1hOLVYxVzJ0MDQySDJXSF9oLVczMDZTeTc0M1FmMkZXM0NqMjhCMVZ4bGNjVzNIZEd5ZzMyZy1NNlc0M0YxNW0zTEdZcmJXMnFNeTRTNGNzMnkzVzNOWFdjdDFaZzdKaFc0M1h4eUg0aEtqZzVXM1A1dktiNHREeGhaVzRjbEpWXzJNQ1I4TFczOGNSWTIycjE1Sk1XMnNGdDB2MjUyclc1VzFMRnlXMDJSdjhjM1czRE1LN0Q0M0doanJXMUJ2X2czMnZ5RmxTVzQzcVNRYjNTSFkyX1cyMWxmZjg0ZkxnRGRXMlRoWFc4NDFZN19MVzFfanNaSzM4M3RxSFczZ25tUFgxVnk4LWpXNGtNOU1MMzBLM19KVzFWYlJDLTJUUzdmbVczX3MzUkc0bXEyOTZXM2Q5a0pDM3prdnZ4VzIyV3F6cDQ1TXlXWFcyQ01IcFozMExsU0tXNGt0NlF2M1FWRjNNVzJSal9kVjFMOE43R1czanItZkQycDB0MjFXMnAza3RrMzBEU2pxVzFRM01MdjJIRng1LVc0cnBmTFEyMzFXWWpXM19weC1HNHJmS2NsVzRmdFpTdDFCcVRaRzAmX2hzZW5jPXAyQU5xdHotOHBwOWlUWVBxSkxkV1lYQWxUSmdpTnlqMk4wTkY2cmdXaEtvbWwtU1lMcGxNSFdDb2I0czJUMUp4bXJfLVd2cGZ0d1UyRl9wLVRTclZ6ZjhYUEwyTlJwRXdDb2cmX2hzbWk9MzM1MjU2NTk1ICkNCk1hbmFnZSBwcmVmZXJlbmNlcyAoaHR0cHM6Ly9ocy0yNDA1NDgyOC5zLmh1YnNwb3RlbWFpbC5uZXQvaHMvcHJlZmVyZW5jZXMtY2VudGVyL2VuL3BhZ2U_ZGF0YT1XMm5YUy1OMzBoLUJjVzJIRlZxcDRjS2Q5d1czYnJNTkwzMmxKVm5XM3oxSk5XM0M5TlJiVzJDRnRCbTMyc1hCS1c0MVY4eUgxQk55WUdXMktCS0c0MlBOazdrVzNqNjJQZzN6ZHlKMVcyMTd5ZEoyMlROMHBXMi1CZEJxMzJxc2NZVzFRcmw5ejM2QjdRVlczaC1CNV8zWE4tVjFXMnQwNDJIMldIX2gtVzMwNlN5NzQzUWYyRlczQ2oyOEIxVnhsY2NXM0hkR3lnMzJnLU02VzQzRjE1bTNMR1lyYlcycU15NFM0Y3MyeTNXM05YV2N0MVpnN0poVzQzWHh5SDRoS2pnNVczUDV2S2I0dER4aFpXNGNsSlZfMk1DUjhMVzM4Y1JZMjJyMTVKTVcyc0Z0MHYyNTJyVzVXMUxGeVcwMlJ2OGMzVzNETUs3RDQzR2hqclcxQnZfZzMydnlGbFNXNDNxU1FiM1NIWTJfVzIxbGZmODRmTGdEZFcyVGhYVzg0MVk3X0xXMV9qc1pLMzgzdHFIVzNnbm1QWDFWeTgtalc0a005TUwzMEszX0pXMVZiUkMtMlRTN2ZtVzNfczNSRzRtcTI5NlczZDlrSkMzemt2dnhXMjJXcXpwNDVNeVdYVzJDTUhwWjMwTGxTS1c0a3Q2UXYzUVZGM01XMlJqX2RWMUw4TjdHVzNqci1mRDJwMHQyMVcycDNrdGszMERTanFXMVEzTUx2MkhGeDUtVzRycGZMUTIzMVdZalczX3B4LUc0cmZLY2xXNGZ0WlN0MUJxVFpHMCZfaHNlbmM9cDJBTnF0ei04cHA5aVRZUHFKTGRXWVhBbFRKZ2lOeWoyTjBORjZyZ1doS29tbC1TWUxwbE1IV0NvYjRzMlQxSnhtcl8tV3ZwZnR3VTJGX3AtVFNyVnpmOFhQTDJOUnBFd0NvZyZfaHNtaT0zMzUyNTY1OTUgKQ==" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"utf-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 39340, - "data": "PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsIC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj48aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4bWxuczp2PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIgbGFuZz0iZW4iPjxoZWFkPg0KICAgIDx0aXRsZT7wn6aDIFppbGxpeiBDbG91ZCBOb3ZlbWJlciBVcGRhdGU6IE11Y2ggdG8gYmUgVGhhbmtmdWwgRm9yITwvdGl0bGU-DQogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSLwn6aDIFppbGxpeiBDbG91ZCBOb3ZlbWJlciBVcGRhdGU6IE11Y2ggdG8gYmUgVGhhbmtmdWwgRm9yISI-DQogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0i8J-mgyBaaWxsaXogQ2xvdWQgTm92ZW1iZXIgVXBkYXRlOiBNdWNoIHRvIGJlIFRoYW5rZnVsIEZvciEiPg0KICAgIA0KICAgIA0KICAgIA0KPG1ldGEgbmFtZT0ieC1hcHBsZS1kaXNhYmxlLW1lc3NhZ2UtcmVmb3JtYXR0aW5nIj4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCjxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI-DQo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI-DQogICAgPCEtLVtpZiBndGUgbXNvIDldPg0KICA8eG1sPg0KICAgICAgPG86T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4NCiAgICAgIDxvOkFsbG93UE5HLz4NCiAgICAgIDxvOlBpeGVsc1BlckluY2g-OTY8L286UGl4ZWxzUGVySW5jaD4NCiAgICAgIDwvbzpPZmZpY2VEb2N1bWVudFNldHRpbmdzPg0KICA8L3htbD4NCiAgDQogIDxzdHlsZT4NCiAgICB1bCA-IGxpIHsNCiAgICAgIHRleHQtaW5kZW50OiAtMWVtOw0KICAgIH0NCiAgPC9zdHlsZT4NCjwhW2VuZGlmXS0tPg0KPCEtLVtpZiBtc29dPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiBib2R5LCB0ZCB7Zm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7fQ0KIC5oc2UtYm9keS13cmFwcGVyLXRhYmxlIHtiYWNrZ3JvdW5kLWNvbG9yOiAjRUFGMEY2O30NCjwvc3R5bGU-DQo8IVtlbmRpZl0tLT4NCiAgICANCiAgICAgIA0KICANCiAgICANCiAgPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJIdWJTcG90Ij48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwOi8vMjQwNTQ4MjguaHMtc2l0ZXMuY29tLy10ZW1wb3Jhcnktc2x1Zy01NmE2NDdiYi03MmRlLTQ1YjktYTlkNy1lZTE2NTNkMmVkNWIiPjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCxmb2xsb3ciPjwhLS1baWYgISgobXNvKXwoSUUpKV0-PCEtLSAtLT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo2MzlweCl7aW1nLnN0cmV0Y2gtb24tbW9iaWxlLC5oc19yc3NfZW1haWxfZW50cmllc190YWJsZSBpbWcsLmhzLXN0cmV0Y2gtY3RhIC5ocy1jdGEtaW1ne2hlaWdodDphdXRvICFpbXBvcnRhbnQ7d2lkdGg6MTAwJSAhaW1wb3J0YW50fQ0KLmRpc3BsYXlfYmxvY2tfb25fc21hbGxfc2NyZWVuc3tkaXNwbGF5OmJsb2NrfS5oc19wYWRkZWR7cGFkZGluZy1sZWZ0OjIwcHggIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjIwcHggIWltcG9ydGFudH0NCi5ocy1obSx0YWJsZS5ocy1obXtkaXNwbGF5Om5vbmV9LmhzLWhke2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudH10YWJsZS5ocy1oZHtkaXNwbGF5OnRhYmxlICFpbXBvcnRhbnR9DQp9Lm1vei10ZXh0LWh0bWwgLmhzZS1jb2x1bW4tY29udGFpbmVye21heC13aWR0aDo2MDBweCAhaW1wb3J0YW50O3dpZHRoOjYwMHB4ICFpbXBvcnRhbnR9DQoubW96LXRleHQtaHRtbCAuaHNlLWNvbHVtbntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246dG9wfS5tb3otdGV4dC1odG1sIC5oc2Utc2VjdGlvbiAuaHNlLXNpemUtMTJ7bWF4LXdpZHRoOjYwMHB4ICFpbXBvcnRhbnQ7d2lkdGg6NjAwcHggIWltcG9ydGFudH0NCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NDBweCl7LmhzZS1jb2x1bW4tY29udGFpbmVye21heC13aWR0aDo2MDBweCAhaW1wb3J0YW50O3dpZHRoOjYwMHB4ICFpbXBvcnRhbnR9DQouaHNlLWNvbHVtbntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246dG9wfS5oc2Utc2VjdGlvbiAuaHNlLXNpemUtMTJ7bWF4LXdpZHRoOjYwMHB4ICFpbXBvcnRhbnQ7d2lkdGg6NjAwcHggIWltcG9ydGFudH0NCn1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NjM5cHgpe3VsLGJsb2NrcXVvdGV7bWFyZ2luOjA7cGFkZGluZzoxZW0gNDBweH0NCn1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjYzOXB4KXsuc29jaWFsLW5ldHdvcmstY2VsbHtkaXNwbGF5OmlubGluZS1ibG9ja30gfTwvc3R5bGU-PCEtLTwhW2VuZGlmXS0tPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-I2hzX2JvZHkgI2hzX2Nvc193cmFwcGVyX21haW4gYVt4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzXXtjb2xvcjppbmhlcml0ICFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDtmb250LXNpemU6aW5oZXJpdCAhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OmluaGVyaXQgIWltcG9ydGFudDtmb250LXdlaWdodDppbmhlcml0ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6aW5oZXJpdCAhaW1wb3J0YW50fQ0KYXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfXB7bWFyZ2luOjB9Ym9keXstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7bW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9DQp0YWJsZXtib3JkZXItc3BhY2luZzowO21zby10YWJsZS1sc3BhY2U6MDttc28tdGFibGUtcnNwYWNlOjB9dGFibGUsdGR7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfQ0KaW1ney1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6YmljdWJpY31wLGEsbGksdGQsYmxvY2txdW90ZXttc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5fTwvc3R5bGU-PC9oZWFkPg0KICA8Ym9keSBpZD0iaHNfYm9keSIgYmdjb2xvcj0iI0VBRjBGNiIgc3R5bGU9Im1hcmdpbjowICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyBmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZCI-DQogICAgPGRpdiBpZD0icHJldmlld190ZXh0IiBzdHlsZT0iZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxcHg7Y29sb3I6I0VBRjBGNjtsaW5lLWhlaWdodDoxcHg7bWF4LWhlaWdodDowcHg7bWF4LXdpZHRoOjBweDtvcGFjaXR5OjA7b3ZlcmZsb3c6aGlkZGVuOyIgbGFuZz0iZW4iPkZlYXN0IHlvdXIgZXllcyBvbiBvdXIgY29tcGxldGVseSByZWRlc2lnbmVkIHdlYiBjb25zb2xlLCBwbHVzIGV4cGFuZGVkIG1pZ3JhdGlvbiBvcHRpb25zIGFuZCBtb3JlLi4uPC9kaXY-DQogICAgDQo8IS0tW2lmIGd0ZSBtc28gOV0-DQo8djpiYWNrZ3JvdW5kIHhtbG5zOnY9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiBmaWxsPSJ0Ij4NCiAgICA8djpmaWxsIHR5cGU9InRpbGUiIHNpemU9IjEwMCUsMTAwJSIgY29sb3I9IiNmZmZmZmYiLz4NCjwvdjpiYWNrZ3JvdW5kPg0KPCFbZW5kaWZdLS0-DQogICAgPGRpdiBjbGFzcz0iaHNlLWJvZHktYmFja2dyb3VuZCIgbGFuZz0iZW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNlYWYwZjYiIGJnY29sb3I9IiNlYWYwZjYiPg0KICAgICAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2xhc3M9ImhzZS1ib2R5LXdyYXBwZXItdGFibGUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9Im1hcmdpbjowOyBwYWRkaW5nOjA7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgbWluLXdpZHRoOjMyMHB4ICFpbXBvcnRhbnQ7IGhlaWdodDoxMDAlICFpbXBvcnRhbnQiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPg0KICAgICAgICA8dGJvZHk-PHRyPg0KICAgICAgICAgIDx0ZCBjbGFzcz0iaHNlLWJvZHktd3JhcHBlci10ZCIgdmFsaWduPSJ0b3AiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZDsgcGFkZGluZy10b3A6MjBweDsgcGFkZGluZy1ib3R0b206MjBweCI-DQogICAgICAgICAgICA8ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tYWluIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfZG5kX2FyZWEiIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiBpbmhlcml0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsiIGRhdGEtaHMtY29zLWdlbmVyYWwtdHlwZT0id2lkZ2V0IiBkYXRhLWhzLWNvcy10eXBlPSJkbmRfYXJlYSI-ICA8ZGl2IGlkPSJzZWN0aW9uLTAiIGNsYXNzPSJoc2Utc2VjdGlvbiBoc2Utc2VjdGlvbi1maXJzdCIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHgiPg0KICAgIA0KICAgIA0KICAgIDwhLS1baWYgISgobXNvKXwoSUUpKV0-PCEtLSAtLT4NCiAgICAgIDxkaXYgY2xhc3M9ImhzZS1jb2x1bW4tY29udGFpbmVyIiBzdHlsZT0ibWluLXdpZHRoOjI4MHB4OyBtYXgtd2lkdGg6NjAwcHg7IE1hcmdpbi1sZWZ0OmF1dG87IE1hcmdpbi1yaWdodDphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IHBhZGRpbmctYm90dG9tOjEwcHgiIGJnY29sb3I9IiNmZmZmZmYiPg0KICAgIDwhLS08IVtlbmRpZl0tLT4NCiAgICANCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7bWF4LXdpZHRoOjYwMHB4O3dpZHRoOjEwMCU7TWFyZ2luLWxlZnQ6YXV0bztNYXJnaW4tcmlnaHQ6YXV0bzsiPg0KICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDo2MDBweDsiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBiZ2NvbG9yPSIjZmZmZmZmIj4NCiAgICAgIDx0ciBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyI-DQogICAgPCFbZW5kaWZdLS0-DQogICAgPCEtLVtpZiAobXNvKXwoSUUpXT4NCiAgPHRkIHZhbGlnbj0idG9wIiBzdHlsZT0id2lkdGg6NjAwcHg7cGFkZGluZy1ib3R0b206MTBweDsiPg0KPCFbZW5kaWZdLS0-DQo8IS0tW2lmIGd0ZSBtc28gOV0-DQogIDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHdpZHRoPSI2MDAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOjYwMHB4Ij4NCjwhW2VuZGlmXS0tPg0KPGRpdiBpZD0iY29sdW1uLTAtMCIgY2xhc3M9ImhzZS1jb2x1bW4gaHNlLXNpemUtMTIiPg0KICA8ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tb2R1bGUtMC0wLTAiIGNsYXNzPSJoc19jb3Nfd3JhcHBlciBoc19jb3Nfd3JhcHBlcl93aWRnZXQgaHNfY29zX3dyYXBwZXJfdHlwZV9tb2R1bGUiIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiBpbmhlcml0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsiIGRhdGEtaHMtY29zLWdlbmVyYWwtdHlwZT0id2lkZ2V0IiBkYXRhLWhzLWNvcy10eXBlPSJtb2R1bGUiPjx0YWJsZSBjbGFzcz0iaHNlLWltYWdlLXdyYXBwZXIiIHJvbGU9InByZXNlbnRhdGlvbiIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI-DQogIDx0Ym9keT4NCiAgICA8dHI-DQogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowcHg7IGZvbnQtc2l6ZTowcHgiPg0KICAgICAgICA8aW1nIGFsdD0iaGVhZGVyIiBzcmM9Imh0dHBzOi8vaHMtMjQwNTQ4MjguZi5odWJzcG90ZW1haWwubmV0L2h1Yi8yNDA1NDgyOC9odWJmcy9oZWFkZXIucG5nP3dpZHRoPTEyMDAmYW1wO3Vwc2NhbGU9dHJ1ZSZhbXA7bmFtZT1oZWFkZXIucG5nIiBzdHlsZT0ib3V0bGluZTpub25lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWF4LXdpZHRoOjEwMCU7IGZvbnQtc2l6ZToxNnB4IiB3aWR0aD0iNjAwIiBhbGlnbj0ibWlkZGxlIj4NCiAgICAgIDwvdGQ-DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU-PC9kaXY-DQo8L2Rpdj4NCjwhLS1baWYgZ3RlIG1zbyA5XT48L3RhYmxlPjwhW2VuZGlmXS0tPg0KPCEtLVtpZiAobXNvKXwoSUUpXT48L3RkPjwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPg0KICAgIDwvZGl2Pg0KICAgDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJtb2R1bGVfMTY4OTg4OTc2NDI5NSIgY2xhc3M9ImhzZS1zZWN0aW9uIiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweCI-DQogICAgDQogICAgDQogICAgPCEtLVtpZiAhKChtc28pfChJRSkpXT48IS0tIC0tPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7IG1heC13aWR0aDo2MDBweDsgTWFyZ2luLWxlZnQ6YXV0bzsgTWFyZ2luLXJpZ2h0OmF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiIgYmdjb2xvcj0iI2ZmZmZmZiI-DQogICAgPCEtLTwhW2VuZGlmXS0tPg0KICAgIA0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-DQogICAgICA8ZGl2IGNsYXNzPSJoc2UtY29sdW1uLWNvbnRhaW5lciIgc3R5bGU9Im1pbi13aWR0aDoyODBweDttYXgtd2lkdGg6NjAwcHg7d2lkdGg6MTAwJTtNYXJnaW4tbGVmdDphdXRvO01hcmdpbi1yaWdodDphdXRvOyI-DQogICAgICA8dGFibGUgYWxpZ249ImNlbnRlciIgc3R5bGU9IndpZHRoOjYwMHB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHdpZHRoPSI2MDAiIGJnY29sb3I9IiNmZmZmZmYiPg0KICAgICAgPHRyIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ij4NCiAgICA8IVtlbmRpZl0tLT4NCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICA8dGQgdmFsaWduPSJ0b3AiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPg0KPCFbZW5kaWZdLS0-DQo8IS0tW2lmIGd0ZSBtc28gOV0-DQogIDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHdpZHRoPSI2MDAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOjYwMHB4Ij4NCjwhW2VuZGlmXS0tPg0KPGRpdiBpZD0ibW9kdWxlXzE2ODk4ODk3NjQyOTVfMCIgY2xhc3M9ImhzZS1jb2x1bW4gaHNlLXNpemUtMTIiPg0KICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj48dGJvZHk-PHRyPjx0ZCBjbGFzcz0iaHNfcGFkZGVkIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IHBhZGRpbmc6MTBweCAzMHB4Ij48ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tb2R1bGVfMTY4OTg4OTc2NDI1ODMiIGNsYXNzPSJoc19jb3Nfd3JhcHBlciBoc19jb3Nfd3JhcHBlcl93aWRnZXQgaHNfY29zX3dyYXBwZXJfdHlwZV9tb2R1bGUiIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiBpbmhlcml0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsiIGRhdGEtaHMtY29zLWdlbmVyYWwtdHlwZT0id2lkZ2V0IiBkYXRhLWhzLWNvcy10eXBlPSJtb2R1bGUiPjxkaXYgaWQ9ImhzX2Nvc193cmFwcGVyX21vZHVsZV8xNjg5ODg5NzY0MjU4M18iIGNsYXNzPSJoc19jb3Nfd3JhcHBlciBoc19jb3Nfd3JhcHBlcl93aWRnZXQgaHNfY29zX3dyYXBwZXJfdHlwZV9yaWNoX3RleHQiIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiBpbmhlcml0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsiIGRhdGEtaHMtY29zLWdlbmVyYWwtdHlwZT0id2lkZ2V0IiBkYXRhLWhzLWNvcy10eXBlPSJyaWNoX3RleHQiPjxwIHN0eWxlPSJtc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5OyBsaW5lLWhlaWdodDoxNzUlIj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij48c3BhbiBzdHlsZT0iY29sb3I6ICMyMzQ5NmQ7Ij5IZWxsbyw8L3NwYW4-PC9zcGFuPjwvcD4NCjxwIHN0eWxlPSJtc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5OyBsaW5lLWhlaWdodDoxNzUlIj4mbmJzcDs8L3A-DQo8cCBzdHlsZT0ibXNvLWxpbmUtaGVpZ2h0LXJ1bGU6ZXhhY3RseTsgbGluZS1oZWlnaHQ6MTc1JSI-QXMgd2UgZ2F0aGVyIHRvIGNlbGVicmF0ZSBUaGFua3NnaXZpbmcgaW4gdGhlIFVTLCB3ZSdyZSBlc3BlY2lhbGx5IGdyYXRlZnVsIGZvciBvdXIgdmlicmFudCBjb21tdW5pdHkgYW5kIGV4Y2l0ZWQgdG8gc2hhcmUgb3VyIGxhdGVzdCB1cGRhdGVzISBUaGlzIE5vdmVtYmVyLCB3ZSdyZSBzZXJ2aW5nIHVwIGEgY29tcGxldGVseSByZWRlc2lnbmVkIGV4cGVyaWVuY2UgdGhhdCB3aWxsIHRyYW5zZm9ybSBob3cgeW91IGludGVyYWN0IHdpdGggWmlsbGl6IENsb3VkLiBMZXQncyBkaXZlIGludG8gd2hhdCdzIGNvb2tpbmc6PC9wPjwvZGl2PjwvZGl2PjwvdGQ-PC90cj48L3Rib2R5PjwvdGFibGU-DQo8L2Rpdj4NCjwhLS1baWYgZ3RlIG1zbyA5XT48L3RhYmxlPjwhW2VuZGlmXS0tPg0KPCEtLVtpZiAobXNvKXwoSUUpXT48L3RkPjwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPg0KICAgIDwvZGl2Pg0KICAgDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJtb2R1bGVfMTY4MjU1NzEyOTIzOCIgY2xhc3M9ImhzZS1zZWN0aW9uIiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweCI-DQogICAgDQogICAgDQogICAgPCEtLVtpZiAhKChtc28pfChJRSkpXT48IS0tIC0tPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7IG1heC13aWR0aDo2MDBweDsgTWFyZ2luLWxlZnQ6YXV0bzsgTWFyZ2luLXJpZ2h0OmF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiIgYmdjb2xvcj0iI2ZmZmZmZiI-DQogICAgPCEtLTwhW2VuZGlmXS0tPg0KICAgIA0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-DQogICAgICA8ZGl2IGNsYXNzPSJoc2UtY29sdW1uLWNvbnRhaW5lciIgc3R5bGU9Im1pbi13aWR0aDoyODBweDttYXgtd2lkdGg6NjAwcHg7d2lkdGg6MTAwJTtNYXJnaW4tbGVmdDphdXRvO01hcmdpbi1yaWdodDphdXRvOyI-DQogICAgICA8dGFibGUgYWxpZ249ImNlbnRlciIgc3R5bGU9IndpZHRoOjYwMHB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHdpZHRoPSI2MDAiIGJnY29sb3I9IiNmZmZmZmYiPg0KICAgICAgPHRyIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ij4NCiAgICA8IVtlbmRpZl0tLT4NCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICA8dGQgdmFsaWduPSJ0b3AiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPg0KPCFbZW5kaWZdLS0-DQo8IS0tW2lmIGd0ZSBtc28gOV0-DQogIDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHdpZHRoPSI2MDAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOjYwMHB4Ij4NCjwhW2VuZGlmXS0tPg0KPGRpdiBpZD0ibW9kdWxlXzE2ODI1NTcxMjkyMzhfMCIgY2xhc3M9ImhzZS1jb2x1bW4gaHNlLXNpemUtMTIiPg0KICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj48dGJvZHk-PHRyPjx0ZCBjbGFzcz0iaHNfcGFkZGVkIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IHBhZGRpbmc6MTBweCAzMHB4Ij48ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tb2R1bGVfMTY4MjU1NzEyOTIxMTEiIGNsYXNzPSJoc19jb3Nfd3JhcHBlciBoc19jb3Nfd3JhcHBlcl93aWRnZXQgaHNfY29zX3dyYXBwZXJfdHlwZV9tb2R1bGUiIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiBpbmhlcml0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsiIGRhdGEtaHMtY29zLWdlbmVyYWwtdHlwZT0id2lkZ2V0IiBkYXRhLWhzLWNvcy10eXBlPSJtb2R1bGUiPjxkaXYgaWQ9ImhzX2Nvc193cmFwcGVyX21vZHVsZV8xNjgyNTU3MTI5MjExMV8iIGNsYXNzPSJoc19jb3Nfd3JhcHBlciBoc19jb3Nfd3JhcHBlcl93aWRnZXQgaHNfY29zX3dyYXBwZXJfdHlwZV9yaWNoX3RleHQiIHN0eWxlPSJjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiBpbmhlcml0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsiIGRhdGEtaHMtY29zLWdlbmVyYWwtdHlwZT0id2lkZ2V0IiBkYXRhLWhzLWNvcy10eXBlPSJyaWNoX3RleHQiPjxwIHN0eWxlPSJtc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5OyBsaW5lLWhlaWdodDoxNzUlIj7wn46oIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkZyZXNoICZhbXA7IE1vZGVybiBXZWIgQ29uc29sZTogPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI-V2UndmUgY29tcGxldGVseSByZWltYWdpbmVkIG91ciB3ZWIgY29uc29sZSBpbnRlcmZhY2UsIGJyaW5naW5nIHlvdSBhIG1vcmUgaW50dWl0aXZlIGFuZCB2aXN1YWxseSBhcHBlYWxpbmcgZXhwZXJpZW5jZTo8L3NwYW4-PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI-PGJyPjwvc3Bhbj48L3A-DQo8dWwgc3R5bGU9Im1zby1saW5lLWhlaWdodC1ydWxlOmV4YWN0bHk7IGxpbmUtaGVpZ2h0OjE3NSUiPg0KPGxpIGFyaWEtbGV2ZWw9IjEiPjxzdHJvbmc-UmVkZXNpZ25lZCBOYXZpZ2F0aW9uOjwvc3Ryb25nPiBTdHJlYW1saW5lZCBtZW51IHN0cnVjdHVyZSBzZXBhcmF0aW5nIG9yZ2FuaXphdGlvbiBhbmQgcHJvamVjdCBsZXZlbHMgZm9yIGNsZWFyZXIgbmF2aWdhdGlvbiBwYXRocyBhbmQgaW1wcm92ZWQgZmVhdHVyZSBkaXNjb3ZlcmFiaWxpdHkuPC9saT4NCjxsaSBhcmlhLWxldmVsPSIxIj48c3Ryb25nPkNhcmQtQmFzZWQgRGVzaWduOjwvc3Ryb25nPiBSZXBsYWNlZCB0YWJsZSBsYXlvdXRzIHdpdGggb3JnYW5pemVkIGNhcmQgdmlld3MgZm9yIGJldHRlciBpbmZvcm1hdGlvbiBoaWVyYXJjaHkgYW5kIHJlZHVjZWQgdmlzdWFsIGNvbXBsZXhpdHkuPC9saT4NCjxsaSBhcmlhLWxldmVsPSIxIj48c3Ryb25nPkNvbnNpc3RlbnQgTGF5b3V0IFN5c3RlbTo8L3N0cm9uZz4gU3RhbmRhcmRpemVkIGdyaWQgc3lzdGVtIGFjcm9zcyBhbGwgcGFnZXMgZm9yIG1vcmUgaW50dWl0aXZlIGZlYXR1cmUgYWNjZXNzIGFuZCByZWR1Y2VkIGNvZ25pdGl2ZSBsb2FkLjwvbGk-DQo8L3VsPg0KPHAgc3R5bGU9Im1zby1saW5lLWhlaWdodC1ydWxlOmV4YWN0bHk7IGxpbmUtaGVpZ2h0OjE3NSUiPkNoZWNrIG91dCB0aGUgbmV3IGxvb2shIPCfkYc8L3A-PC9kaXY-PC9kaXY-PC90ZD48L3RyPjwvdGJvZHk-PC90YWJsZT4NCjwvZGl2Pg0KPCEtLVtpZiBndGUgbXNvIDldPjwvdGFibGU-PCFbZW5kaWZdLS0-DQo8IS0tW2lmIChtc28pfChJRSldPjwvdGQ-PCFbZW5kaWZdLS0-DQogICAgPCEtLVtpZiAobXNvKXwoSUUpXT48L3RyPjwvdGFibGU-PCFbZW5kaWZdLS0-DQogICAgPC9kaXY-DQogICANCiAgPC9kaXY-DQogIDxkaXYgaWQ9Im1vZHVsZV8xNjg5ODg5Mjc4ODg3IiBjbGFzcz0iaHNlLXNlY3Rpb24iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy1yaWdodDoxMHB4Ij4NCiAgICANCiAgICANCiAgICA8IS0tW2lmICEoKG1zbyl8KElFKSldPjwhLS0gLS0-DQogICAgICA8ZGl2IGNsYXNzPSJoc2UtY29sdW1uLWNvbnRhaW5lciIgc3R5bGU9Im1pbi13aWR0aDoyODBweDsgbWF4LXdpZHRoOjYwMHB4OyBNYXJnaW4tbGVmdDphdXRvOyBNYXJnaW4tcmlnaHQ6YXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmIiBiZ2NvbG9yPSIjZmZmZmZmIj4NCiAgICA8IS0tPCFbZW5kaWZdLS0-DQogICAgDQogICAgPCEtLVtpZiAobXNvKXwoSUUpXT4NCiAgICAgIDxkaXYgY2xhc3M9ImhzZS1jb2x1bW4tY29udGFpbmVyIiBzdHlsZT0ibWluLXdpZHRoOjI4MHB4O21heC13aWR0aDo2MDBweDt3aWR0aDoxMDAlO01hcmdpbi1sZWZ0OmF1dG87TWFyZ2luLXJpZ2h0OmF1dG87Ij4NCiAgICAgIDx0YWJsZSBhbGlnbj0iY2VudGVyIiBzdHlsZT0id2lkdGg6NjAwcHg7IiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgd2lkdGg9IjYwMCIgYmdjb2xvcj0iI2ZmZmZmZiI-DQogICAgICA8dHIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsiPg0KICAgIDwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-DQogIDx0ZCB2YWxpZ249InRvcCIgc3R5bGU9IndpZHRoOjYwMHB4OyI-DQo8IVtlbmRpZl0tLT4NCjwhLS1baWYgZ3RlIG1zbyA5XT4NCiAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgd2lkdGg9IjYwMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6NjAwcHgiPg0KPCFbZW5kaWZdLS0-DQo8ZGl2IGlkPSJtb2R1bGVfMTY4OTg4OTI3ODg4N18wIiBjbGFzcz0iaHNlLWNvbHVtbiBoc2Utc2l6ZS0xMiI-DQogIDxkaXYgaWQ9ImhzX2Nvc193cmFwcGVyX21vZHVsZV8xNzMyMzAwMzY4MTc0MSIgY2xhc3M9ImhzX2Nvc193cmFwcGVyIGhzX2Nvc193cmFwcGVyX3dpZGdldCBoc19jb3Nfd3JhcHBlcl90eXBlX21vZHVsZSIgc3R5bGU9ImNvbG9yOiBpbmhlcml0OyBmb250LXNpemU6IGluaGVyaXQ7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyIgZGF0YS1ocy1jb3MtZ2VuZXJhbC10eXBlPSJ3aWRnZXQiIGRhdGEtaHMtY29zLXR5cGU9Im1vZHVsZSI-PHRhYmxlIGNsYXNzPSJoc2UtaW1hZ2Utd3JhcHBlciIgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgICA8dGJvZHk-DQogICAgICA8dHI-DQogICAgICAgIDx0ZCBjbGFzcz0iaHNfcGFkZGVkIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEwcHggMjBweDsgZm9udC1zaXplOjBweCI-DQogICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kMlJOZlAwNC5uYTEuaHVic3BvdGxpbmtzLmNvbS9DdGMvRFArMTEzL2QyUk5mUDA0L1ZYZnZTRjN5NlpxWVczOTFHVG03RndjbC1XM0RsNFNtNW5RWkxKTjJicGMxbjNxbjlnVzh3TEtTUjZsWjNtWVZxalBLczYzOEpzNFcxUkRuajU0V3A5V0xXNFpGNVRLNG1Yai15VzdENjhkeDZmdGJuWE42MnhxTDJ6TVNkMFc0M2hYeUsyUEdSVjZON2M2WnIzaC1tSE1XNnpZRDY5OTVXRFZSVzdGUnc4azgwTHRDSFZ5NENWSDJRNDNxd1c2NFQ4UEIybFc1cldXOF9OVHRSOWd4eFJkVzdweXpycTF4NmdfVFcxY21aQ183Njl4d3ZXM252UEpyNTYzdnB0VzYwd2dQajdwTDJSR1cxaGdUelY0eWNCNm1XNHpua2tXOEIyakJKVzZTZE5nMDNXTVBqeVcxYmxZMkc4WUJZWHhXNWZaNHRENmQtTm01VzhNOFI5bjNnMnlKYlc1c0I5LU0xek5aODJXMWNTTmdLNDgtTGxIVzR5eUROczJ2RzBrQ042UlhkODVGaDlnalc3OUctNWozWmxiVkdXNnlUcGxZOWxfenZyZjVQSkxmZzA0IiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiMwMGE0YmQiIGRhdGEtaHMtbGluay1pZD0iMCI-DQogICAgICAgICAgICA8aW1nIGFsdD0iTGFyazIwMjQxMTE0LTE2MDUyMCIgc3JjPSJodHRwczovLzI0MDU0ODI4LmZzMS5odWJzcG90dXNlcmNvbnRlbnQtbmExLm5ldC9odWIvMjQwNTQ4MjgvaHViZnMvY3VzdG9tLXZpZGVvLXRodW1ibmFpbHMvTGFyazIwMjQxMTE0LTE2MDUyMC10aHVtYi0xLmpwZWc_dD0xNzMyMzAwNzkxODEyJmFtcDt3aWR0aD01MDAmYW1wO2NvbXBvc2VUeXBlPXBsYXlfYnV0dG9uJmFtcDtvdmVybGF5Q29sb3I9JTIzMmY0MjU0JmFtcDtvdmVybGF5U2NhbGU9MC4zJmFtcDtuYW1lPUxhcmsyMDI0MTExNC0xNjA1MjAtdGh1bWItMS5qcGVnIiBzdHlsZT0ib3V0bGluZTpub25lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyOm5vbmU7IG1heC13aWR0aDoxMDAlOyBmb250LXNpemU6MTZweCIgd2lkdGg9IjUwMCIgYWxpZ249Im1pZGRsZSI-DQogICAgICAgICAgPC9hPg0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KICA8L3RhYmxlPjwvZGl2Pg0KPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI-PHRib2R5Pjx0cj48dGQgY2xhc3M9ImhzX3BhZGRlZCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTVweDsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkOyBwYWRkaW5nOjEwcHggMzBweCI-PGRpdiBpZD0iaHNfY29zX3dyYXBwZXJfbW9kdWxlXzE2ODk4ODkyNzg4NjAxIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfbW9kdWxlIiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0ibW9kdWxlIj48ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tb2R1bGVfMTY4OTg4OTI3ODg2MDFfIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfcmljaF90ZXh0IiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0icmljaF90ZXh0Ij48cCBzdHlsZT0ibXNvLWxpbmUtaGVpZ2h0LXJ1bGU6ZXhhY3RseTsgbGluZS1oZWlnaHQ6MTc1JSI-PHN0cm9uZz7wn6aDIE90aGVyIEhpZ2hsaWdodHMgJmFtcDsgSW1wcm92ZW1lbnRzPC9zdHJvbmc-PC9wPg0KPHVsIHN0eWxlPSJtc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5OyBsaW5lLWhlaWdodDoxNzUlIj4NCjxsaSBhcmlhLWxldmVsPSIxIj48c3Ryb25nPkVuaGFuY2VkIERhdGEgTWlncmF0aW9uOjwvc3Ryb25nPiBOb3cgc3VwcG9ydGluZyA8YSBocmVmPSJodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzFuM2hLQmJXOHdMS1NSNmxaM3BkVzIydEdISDF0ZnlZWVc2Z203RG41eFZGbHBOMTNULVJYUlFUU0RXNjU1ZEZxNWRmVGQ5TjQ3eWZCZ1RZcHg4VzFxVG1WWThtMXBtNVcyRnN0ZncxSGxQV2tXNHgtVEwxNWw2QmZSVzVLSnNRODFyTEtDR1ZyR0ZKdDdaYnpCV1c1MDdWbUwyckN0VmpXMzdQbXdNNjY0eC1aTUJUNEs2eTQxSzZXMkNWYnNkNGpIVGtwVzctTlo3TjliVHgzNVc1d0tER003UzJXWjdWRERud3M3UmhHNlBXNm1MZjQxNGhLS19MVzJKQzZYcTgtZlRTcFcxbnRGUWY4SnlramJONUhkOFZxWm5yQ0xXNUh5Zm53OTBSelZwTjFmYzVteGdtUXduTVd0SzVWX1kxakxXNEJtbnpMN1J5UHRKVzNSazBneThaelk5Y1c1Y1hYOUwyWHlRanFONFh2UFlmc2RTNG5mNGRKbnBiMDQiIHJlbD0ibm9vcGVuZXIiIHN0eWxlPSJjb2xvcjojMzY3MGYyIiBkYXRhLWhzLWxpbmstaWQ9IjAiIHRhcmdldD0iX2JsYW5rIj5RZHJhbnQ8L2E-IGFuZCA8YSBocmVmPSJodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzFuM2hLQmJXOHdMS1NSNmxaM20xTjZyX21ZMFREVGgyVzhsZnNjejkzX1psUlc2VmtzSDM4S1FSQ0NXMjc4X1BYN3NtMjlZVzI1UHZ4ZzJCQmIyRlc5OWxIeXA0X3oxdGdWZzdTZ1I4UU10ZGRXOGxyZnZyMWJLa3hWVzNtamhtbTJYRmY5OVc3M1NGbDE2NmtDbGNXNDBtOFQzNnZDQkNwVzZLUlp4QjMtcmI3N1c3NGRNeHk0M3FTVDdXNVBTakRoN18zOGxSVzNyYmduNDVSQ1p3Tlc1bTBxaHQ1ZFNqbDdXNTBSTnpxM1RNbDdKVzYtc2dTWjhHXzZ6OVc2OXhWckY4NnI3ZlpXMzZ4dHhHNlc1WFR2Vzg1WnNCUTdTWmx2WFc4WTduLXcyOE02dnBXOG1OeXZEMThLY3FZVzFtZDBaMjhkak1yV1ZMSlAtUzdRcGtfNVcyNzZRcUI4S0dMdk1XMXpzV0hQM1J2SExIVzFOdmpMNDhaLTR2VGY3bDMyXzIwNCIgcmVsPSJub29wZW5lciIgc3R5bGU9ImNvbG9yOiMzNjcwZjIiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPlBpbmVjb25lIFNlcnZlcmxlc3M8L2E-IGZvciBzZWFtbGVzcyB0cmFuc2l0aW9ucyB0byBaaWxsaXogQ2xvdWQuPC9saT4NCjxsaSBhcmlhLWxldmVsPSIxIj48c3Ryb25nPkZsZXhpYmxlIFJlcGxpY2EgTWFuYWdlbWVudDo8L3N0cm9uZz4gQWRkIG9yIHJlbW92ZSB5b3VyIHJlcGxpY2FzIGluc3RhbnRseSB3aXRob3V0IGFueSBzZXJ2aWNlIGludGVycnVwdGlvbi4gQ2hlY2sgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZDJSTmZQMDQubmExLmh1YnNwb3RsaW5rcy5jb20vQ3RjL0RQKzExMy9kMlJOZlAwNC9WWGZ2U0YzeTZacVlXMzkxR1RtN0Z3Y2wtVzNEbDRTbTVuUVpMSk4yYnBjMW4zaEtCYlc4d0xLU1I2bFoza1JXNDIwd3hUMXdmeHNOVzZyZk1XeTctM0NIcVc2TDVTaFI0V190cl9WeW1HTHE5NFREUlFXNk52NHBGOFk0akpsVzJNTFZaTDJZTmwzUVZjcHEwejcxS0NjN1c0Rjc5d3I1Ml9HQllXOWxqODRyN216bks0VzMzRkJjeDc2c2RwdFc4bEotWXM0bXFSUmpXN3d3a1dxN3EzUHpnVzEySFQwQjRUYzAwUU43bHZNS0YxeWZwM1c4RFh6WGozRkpSQ2hXNHdSX2JHMWcxcVYzVzdjREd5TjdCOFktVFc1MGJYNG00eXk0Q0tONlRnY0pXa2JkNUhXNkhOZ2tsNXNIVGxLVzJSYzM5eThXTDczcVc3N2ZoNnE1dGpMd1lXOThzUl9fMVl0SERkVzFtSkcxeTdXV3JOOU41dEZUY1ZSM2RXc1c0d2tEVmM1ajk4Tl9XNXN5VDVuMm5QOEN4VzRieGo0ODNzdllQVmY5bHFkQzAwNCIgcmVsPSJub29wZW5lciIgc3R5bGU9ImNvbG9yOiMzNjcwZjIiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPmRvYzwvYT4gZm9yIG1vcmUgZGV0YWlscy48L2xpPg0KPGxpIGFyaWEtbGV2ZWw9IjEiPjxzdHJvbmc-UmVkZXNpZ25lZCBJbnZvaWNlIFBhZ2U6PC9zdHJvbmc-IEEgY2xlYXJlciB2aWV3IG9mIHlvdXIgdXNhZ2UgYW5kIGNvc3RzIHdpdGggZG93bmxvYWQgb3B0aW9ucy48L2xpPg0KPC91bD48L2Rpdj48L2Rpdj48L3RkPjwvdHI-PC90Ym9keT48L3RhYmxlPg0KPC9kaXY-DQo8IS0tW2lmIGd0ZSBtc28gOV0-PC90YWJsZT48IVtlbmRpZl0tLT4NCjwhLS1baWYgKG1zbyl8KElFKV0-PC90ZD48IVtlbmRpZl0tLT4NCiAgICA8IS0tW2lmIChtc28pfChJRSldPjwvdHI-PC90YWJsZT48IVtlbmRpZl0tLT4NCiAgICA8L2Rpdj4NCiAgIA0KICA8L2Rpdj4NCiAgPGRpdiBpZD0ibW9kdWxlXzE2ODI1NTc2MTYyODciIGNsYXNzPSJoc2Utc2VjdGlvbiIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHgiPg0KICAgIA0KICAgIA0KICAgIDwhLS1baWYgISgobXNvKXwoSUUpKV0-PCEtLSAtLT4NCiAgICAgIDxkaXYgY2xhc3M9ImhzZS1jb2x1bW4tY29udGFpbmVyIiBzdHlsZT0ibWluLXdpZHRoOjI4MHB4OyBtYXgtd2lkdGg6NjAwcHg7IE1hcmdpbi1sZWZ0OmF1dG87IE1hcmdpbi1yaWdodDphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYiIGJnY29sb3I9IiNmZmZmZmYiPg0KICAgIDwhLS08IVtlbmRpZl0tLT4NCiAgICANCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7bWF4LXdpZHRoOjYwMHB4O3dpZHRoOjEwMCU7TWFyZ2luLWxlZnQ6YXV0bztNYXJnaW4tcmlnaHQ6YXV0bzsiPg0KICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDo2MDBweDsiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBiZ2NvbG9yPSIjZmZmZmZmIj4NCiAgICAgIDx0ciBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyI-DQogICAgPCFbZW5kaWZdLS0-DQogICAgPCEtLVtpZiAobXNvKXwoSUUpXT4NCiAgPHRkIHZhbGlnbj0idG9wIiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4NCjwhW2VuZGlmXS0tPg0KPCEtLVtpZiBndGUgbXNvIDldPg0KICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJ3aWR0aDo2MDBweCI-DQo8IVtlbmRpZl0tLT4NCjxkaXYgaWQ9Im1vZHVsZV8xNjgyNTU3NjE2Mjg3XzAiIGNsYXNzPSJoc2UtY29sdW1uIGhzZS1zaXplLTEyIj4NCiAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI-PHRib2R5Pjx0cj48dGQgY2xhc3M9ImhzX3BhZGRlZCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTVweDsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkOyBwYWRkaW5nOjEwcHggMzBweCI-PGRpdiBpZD0iaHNfY29zX3dyYXBwZXJfbW9kdWxlXzE2ODI1NTc2MTYyNzQzIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfbW9kdWxlIiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0ibW9kdWxlIj48ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tb2R1bGVfMTY4MjU1NzYxNjI3NDNfIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfcmljaF90ZXh0IiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0icmljaF90ZXh0Ij48ZGl2IHN0eWxlPSJtc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5OyBsaW5lLWhlaWdodDoxNzUlIj4NCjxkaXYgc3R5bGU9Im1zby1saW5lLWhlaWdodC1ydWxlOmV4YWN0bHk7IGxpbmUtaGVpZ2h0OjE3NSUiPg0KPHAgc3R5bGU9Im1zby1saW5lLWhlaWdodC1ydWxlOmV4YWN0bHk7IGxpbmUtaGVpZ2h0OjE3NSUiPldlJ3JlIHRoYW5rZnVsIGZvciB5b3VyIGNvbnRpbnVlZCB0cnVzdCBpbiBaaWxsaXogQ2xvdWQgYW5kIGNhbid0IHdhaXQgdG8gc2VlIHdoYXQgeW91IGJ1aWxkIHdpdGggdGhlc2UgbmV3IGZlYXR1cmVzISBBcyBhbHdheXMsIHdlJ2QgbG92ZSB0byBoZWFyIHlvdXIgZmVlZGJhY2sgaW4gb3VyIDxhIGhyZWY9Imh0dHBzOi8vZDJSTmZQMDQubmExLmh1YnNwb3RsaW5rcy5jb20vQ3RjL0RQKzExMy9kMlJOZlAwNC9WWGZ2U0YzeTZacVlXMzkxR1RtN0Z3Y2wtVzNEbDRTbTVuUVpMSk4yYnBjMFAzcW45Z1c3bENkTFc2bFozbHhXNGd6dks3NF95NWR0VzR2WWg0UTNMTE5KM1c5N1BGR1c2cUJqNTVXM3NNakpaNzNSazJ3VzRNUHdybjVzQzIybFc1dnZjZ2gzODVNNTRXMzhoNFozOF9iY0h2VzNTWU5qSjhyUlRWa043Qll2NEZNeWxoVlc2QjlNcjA3U2t0RjNXN2JIcTg2NjRoSE1oVzd6OTZXWTJ0VlJ4UE44WFI2d2p4dnMtcVc3cGJQbUw0dEtwcDFWOWM2a18xWDgwRnhWU1Y2TUs4V1JLSjBWbXNNa0o3eXZ6VnhXN0tUdlluNzlmMVBRVzJqLWpxazJqRlBsbU43R1FtN05DV3p6NlczTldXTmY3ckQxQlRWZ0xNS0w0Yk4wMzFXN1NtSjd5N2c4RnhmVzkwVm10SzVNMnQyaGYzakZTYjAwNCIgc3R5bGU9ImNvbG9yOiMzNjcwZjIiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPkRpc2NvcmQgY29tbXVuaXR5PC9hPi48L3A-DQo8cCBzdHlsZT0ibXNvLWxpbmUtaGVpZ2h0LXJ1bGU6ZXhhY3RseTsgbGluZS1oZWlnaHQ6MTc1JSI-Jm5ic3A7PC9wPg0KPHAgc3R5bGU9Im1zby1saW5lLWhlaWdodC1ydWxlOmV4YWN0bHk7IGxpbmUtaGVpZ2h0OjE3NSUiPkhhcHB5IFRoYW5rc2dpdmluZyBhbmQgSGFwcHkgQnVpbGRpbmchIPCfjYE8L3A-DQo8L2Rpdj4NCjx1bCBzdHlsZT0ibXNvLWxpbmUtaGVpZ2h0LXJ1bGU6ZXhhY3RseTsgbGluZS1oZWlnaHQ6MTc1JSI-PC91bD4NCjwvZGl2Pg0KPHVsIHN0eWxlPSJtc28tbGluZS1oZWlnaHQtcnVsZTpleGFjdGx5OyBsaW5lLWhlaWdodDoxNzUlIj48L3VsPjwvZGl2PjwvZGl2PjwvdGQ-PC90cj48L3Rib2R5PjwvdGFibGU-DQo8L2Rpdj4NCjwhLS1baWYgZ3RlIG1zbyA5XT48L3RhYmxlPjwhW2VuZGlmXS0tPg0KPCEtLVtpZiAobXNvKXwoSUUpXT48L3RkPjwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPg0KICAgIDwvZGl2Pg0KICAgDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzZWN0aW9uLTIiIGNsYXNzPSJoc2Utc2VjdGlvbiIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHgiPg0KICAgIA0KICAgIA0KICAgIDwhLS1baWYgISgobXNvKXwoSUUpKV0-PCEtLSAtLT4NCiAgICAgIDxkaXYgY2xhc3M9ImhzZS1jb2x1bW4tY29udGFpbmVyIiBzdHlsZT0ibWluLXdpZHRoOjI4MHB4OyBtYXgtd2lkdGg6NjAwcHg7IE1hcmdpbi1sZWZ0OmF1dG87IE1hcmdpbi1yaWdodDphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYiIGJnY29sb3I9IiNmZmZmZmYiPg0KICAgIDwhLS08IVtlbmRpZl0tLT4NCiAgICANCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7bWF4LXdpZHRoOjYwMHB4O3dpZHRoOjEwMCU7TWFyZ2luLWxlZnQ6YXV0bztNYXJnaW4tcmlnaHQ6YXV0bzsiPg0KICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDo2MDBweDsiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBiZ2NvbG9yPSIjZmZmZmZmIj4NCiAgICAgIDx0ciBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyI-DQogICAgPCFbZW5kaWZdLS0-DQogICAgPCEtLVtpZiAobXNvKXwoSUUpXT4NCiAgPHRkIHZhbGlnbj0idG9wIiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4NCjwhW2VuZGlmXS0tPg0KPCEtLVtpZiBndGUgbXNvIDldPg0KICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJ3aWR0aDo2MDBweCI-DQo8IVtlbmRpZl0tLT4NCjxkaXYgaWQ9ImNvbHVtbi0yLTAiIGNsYXNzPSJoc2UtY29sdW1uIGhzZS1zaXplLTEyIj4NCiAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI-PHRib2R5Pjx0cj48dGQgY2xhc3M9ImhzX3BhZGRlZCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTVweDsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkOyBwYWRkaW5nOjEwcHggMzBweCI-PGRpdiBpZD0iaHNfY29zX3dyYXBwZXJfbW9kdWxlLTItMC0yIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfbW9kdWxlIiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0ibW9kdWxlIj48ZGl2IGlkPSJoc19jb3Nfd3JhcHBlcl9tb2R1bGUtMi0wLTJfIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfcmljaF90ZXh0IiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0icmljaF90ZXh0Ij48cCBzdHlsZT0ibXNvLWxpbmUtaGVpZ2h0LXJ1bGU6ZXhhY3RseTsgbGluZS1oZWlnaHQ6MTc1JSI-QmVzdCBSZWdhcmRzLDxicj5TdGVmZmkgTGk8YnI-RGlyZWN0b3Igb2YgUHJvZHVjdCBNYXJrZXRpbmcsIFppbGxpejxicj48YnI-PC9wPjwvZGl2PjwvZGl2PjwvdGQ-PC90cj48L3Rib2R5PjwvdGFibGU-DQo8L2Rpdj4NCjwhLS1baWYgZ3RlIG1zbyA5XT48L3RhYmxlPjwhW2VuZGlmXS0tPg0KPCEtLVtpZiAobXNvKXwoSUUpXT48L3RkPjwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPg0KICAgIDwvZGl2Pg0KICAgDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzZWN0aW9uLTMiIGNsYXNzPSJoc2Utc2VjdGlvbiIgc3R5bGU9InBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHgiPg0KICAgIA0KICAgIA0KICAgIDwhLS1baWYgISgobXNvKXwoSUUpKV0-PCEtLSAtLT4NCiAgICAgIDxkaXYgY2xhc3M9ImhzZS1jb2x1bW4tY29udGFpbmVyIiBzdHlsZT0ibWluLXdpZHRoOjI4MHB4OyBtYXgtd2lkdGg6NjAwcHg7IE1hcmdpbi1sZWZ0OmF1dG87IE1hcmdpbi1yaWdodDphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYiIGJnY29sb3I9IiNmZmZmZmYiPg0KICAgIDwhLS08IVtlbmRpZl0tLT4NCiAgICANCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7bWF4LXdpZHRoOjYwMHB4O3dpZHRoOjEwMCU7TWFyZ2luLWxlZnQ6YXV0bztNYXJnaW4tcmlnaHQ6YXV0bzsiPg0KICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDo2MDBweDsiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBiZ2NvbG9yPSIjZmZmZmZmIj4NCiAgICAgIDx0ciBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyI-DQogICAgPCFbZW5kaWZdLS0-DQogICAgPCEtLVtpZiAobXNvKXwoSUUpXT4NCiAgPHRkIHZhbGlnbj0idG9wIiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4NCjwhW2VuZGlmXS0tPg0KPCEtLVtpZiBndGUgbXNvIDldPg0KICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB3aWR0aD0iNjAwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJ3aWR0aDo2MDBweCI-DQo8IVtlbmRpZl0tLT4NCjxkaXYgaWQ9ImNvbHVtbi0zLTAiIGNsYXNzPSJoc2UtY29sdW1uIGhzZS1zaXplLTEyIj4NCiAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI-PHRib2R5Pjx0cj48dGQgY2xhc3M9ImhzX3BhZGRlZCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTVweDsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkOyBwYWRkaW5nOjEwcHggMjBweCI-PGRpdiBpZD0iaHNfY29zX3dyYXBwZXJfbW9kdWxlLTMtMC0wIiBjbGFzcz0iaHNfY29zX3dyYXBwZXIgaHNfY29zX3dyYXBwZXJfd2lkZ2V0IGhzX2Nvc193cmFwcGVyX3R5cGVfbW9kdWxlIiBzdHlsZT0iY29sb3I6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IiBkYXRhLWhzLWNvcy1nZW5lcmFsLXR5cGU9IndpZGdldCIgZGF0YS1ocy1jb3MtdHlwZT0ibW9kdWxlIj48dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0id2lkdGg6IGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsiIGNsYXNzPSJoc19jb3Nfd3JhcHBlcl90eXBlX3NvY2lhbF9tb2R1bGUiPg0KICA8dGJvZHk-DQogICAgPHRyIGFsaWduPSJjZW50ZXIiPg0KICAgICAgPHRkIGNsYXNzPSJzb2NpYWwtbmV0d29yay1jZWxsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQiPg0KICAgICAgICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0id2lkdGg6IGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsiIGNsYXNzPSJoc19jb3Nfd3JhcHBlcl90eXBlX3NvY2lhbF9tb2R1bGVfc2luZ2xlIj4NCiAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICA8dHIgYWxpZ249ImNlbnRlciI-DQogICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZGlzcGxheV9ibG9ja19vbl9zbWFsbF9zY3JlZW5zIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IHBhZGRpbmc6OHB4IDVweDsgbGluZS1oZWlnaHQ6MTsgdmVydGljYWwtYWxpZ246bWlkZGxlIiB2YWxpZ249Im1pZGRsZSI-DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kMlJOZlAwNC5uYTEuaHVic3BvdGxpbmtzLmNvbS9DdGMvRFArMTEzL2QyUk5mUDA0L1ZYZnZTRjN5NlpxWVczOTFHVG03RndjbC1XM0RsNFNtNW5RWkxKTjJicGMwUDNxbjlnVzdsQ2RMVzZsWjNuLU43UHBDSDh6LWRQMFc4ODZ4OHA4VGRDMlpXMzdsOXlQNW56YjFRVzE2NDdodjk1bkMwcVc0OEdocDI3cGQ3TmZXM0JHUDdqOF9uVGN6VzFObEN6ejVzU21UV1cyX0Z4em4xTFZ2azhXNU4wSzh6NzR5bWZrVzc0R0NnMzc1djdrOU4yRnlZcngtak41OFc3U18xNVE0TDAwcmZXNlMwdHBRMUdyNlo3VzZUOHZnSjd6MDZ2OVc4V3Fqd3czMVI2eFlXOWQ0bUZnMmg2a1ltVzNYNENybTNHREZTM1czOEJfeC00UVdIdHFXNVl2bVlLNWQxMDRjVzY1Y1p6RzJmLWNGYlc1S1l3ank4WVpHckxNaFlwek05NjlHa1cybk5oN04xNkpMUFZWd0pqc0o1dzdQcnJmNGstN2w4MDQiIHN0eWxlPSJjb2xvcjojMDBhNGJkOyB0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50IiBkYXRhLWhzLWxpbmstaWQ9IjAiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9ocy0yNDA1NDgyOC5mLmh1YnNwb3RlbWFpbC5uZXQvaHViLzI0MDU0ODI4L2h1YmZzL0ltcG9ydGVkJTIwc2l0ZXBhZ2UlMjBpbWFnZXMvR2l0aHViXzE5ZTdiYzI4MjQucG5nP2hlaWdodD01MCZhbXA7dXBzY2FsZT10cnVlJmFtcDtuYW1lPUdpdGh1Yl8xOWU3YmMyODI0LnBuZyIgYWx0PSJHaXRodWJfaWNvbiIgaGVpZ2h0PSIyNSIgc3R5bGU9Im91dGxpbmU6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlcjpub25lOyB3aWR0aDphdXRvIWltcG9ydGFudDsgaGVpZ2h0OjI1cHghaW1wb3J0YW50OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iYXV0byI-DQogICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD48dGQgY2xhc3M9InNvY2lhbC1uZXR3b3JrLWNlbGwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZCI-DQogICAgICAgIDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyIgY2xhc3M9ImhzX2Nvc193cmFwcGVyX3R5cGVfc29jaWFsX21vZHVsZV9zaW5nbGUiPg0KICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0ciBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgPHRkIGNsYXNzPSJkaXNwbGF5X2Jsb2NrX29uX3NtYWxsX3NjcmVlbnMiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZDsgcGFkZGluZzo4cHggNXB4OyBsaW5lLWhlaWdodDoxOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzE0M3FuOWdXN1k4LVBUNmxaM25IVzQ3cERHdzM0UFlxX1c0MllsMjU2blg0OXZXNlRyLURkMmZIZ1RSVzdXa3ZsWjNIRDJsak1mNUtxZDQ5Zm1CVzYwXzJQNjRNNGN0Tk44UjNYQnMyTlhSclcxQmNWc0I4VjU4QkxXOHlLdnR2MXZ4eldaVzQ4UFpMLTJnSHl6WVczdjE2WUY3SFQ4cTJXOWRnV0RkNExxNmR4VzRINVlzRzZqWnowMFcyaGNiZE4xV1gxUk1XNnBxNk5LMVc4OUgwVzRkcVNEZzJDZ1JLZlc4SnJ5eXIzNjhTbHdXOHF5NHFzNks4YkItVzczMWh5WTlqajNwYlc4ZkMzbGMyNmRMUWNXNndWVng3MllmMDVwVzhZQkY5SjZoY3dnalcxcFRyMms0Q0w1UzhXNWJMUThzNE4wRHc4VzRybGpHbDljZnAwNlcxakNzbHYxWnEyWmRmNnp3SmxzMDQiIHN0eWxlPSJjb2xvcjojMDBhNGJkOyB0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50IiBkYXRhLWhzLWxpbmstaWQ9IjAiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9ocy0yNDA1NDgyOC5mLmh1YnNwb3RlbWFpbC5uZXQvaHViLzI0MDU0ODI4L2h1YmZzL1R3aXR0ZXItMjAyMzEwMTgtMTExMTEwLnBuZz9oZWlnaHQ9NTAmYW1wO3Vwc2NhbGU9dHJ1ZSZhbXA7bmFtZT1Ud2l0dGVyLTIwMjMxMDE4LTExMTExMC5wbmciIGFsdD0iVHdpdHRlci0yMDIzMTAxOC0xMTExMTAiIGhlaWdodD0iMjUiIHN0eWxlPSJvdXRsaW5lOm5vbmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXI6bm9uZTsgd2lkdGg6YXV0byFpbXBvcnRhbnQ7IGhlaWdodDoyNXB4IWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlIiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9ImF1dG8iPg0KICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgIDwvdGQ-PHRkIGNsYXNzPSJzb2NpYWwtbmV0d29yay1jZWxsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQiPg0KICAgICAgICA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0id2lkdGg6IGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsiIGNsYXNzPSJoc19jb3Nfd3JhcHBlcl90eXBlX3NvY2lhbF9tb2R1bGVfc2luZ2xlIj4NCiAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICA8dHIgYWxpZ249ImNlbnRlciI-DQogICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZGlzcGxheV9ibG9ja19vbl9zbWFsbF9zY3JlZW5zIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IHBhZGRpbmc6OHB4IDVweDsgbGluZS1oZWlnaHQ6MTsgdmVydGljYWwtYWxpZ246bWlkZGxlIiB2YWxpZ249Im1pZGRsZSI-DQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kMlJOZlAwNC5uYTEuaHVic3BvdGxpbmtzLmNvbS9DdGMvRFArMTEzL2QyUk5mUDA0L1ZYZnZTRjN5NlpxWVczOTFHVG03RndjbC1XM0RsNFNtNW5RWkxKTjJicGMxNDNxbjlnVzdZOC1QVDZsWjNsVlc1UFZDbV8yZFI4WDRXOEZTdjg5MXFsV0gwVzFGNWNrMjFaTEM0Q1cyZm5aMWg4anZfNEpXMzVmVDY4NlpkanRoVzgzcDJ4XzFkUTZnWFcxQ2JNLWM0S1drOGpXNlNuYjkzMjd4Z3BsVzRKdHpnQzdybDdNRFcybGxSbUYzc1p0U1hOMWo4Qjl4bU5qdnZXNHBiWnZiNk03eWt5VzZnQ2RQWDJZUFg4Q1c0bnZxek0yeFZ4RmJXOWI0ejJCNzY1TE4xTjROd3RGekpxM0NMVzJIOVlZVjZod256alc5aGh3Rmw1dGw3c1JXOF9OYnFmNmhta2NuRjg0ZFdGd2tzM3dXMUc1UzlzOHlfWFhZVzdqdno5dDNrMFk5cFc1V015QlgzLXNSTHJXODEzSy1wMXZnbmtrVzJnZ0dzejdCR2xoc1c2UENWNnM2MXh4ODRkSkYwTWowNCIgc3R5bGU9ImNvbG9yOiMwMGE0YmQ7IHRleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2hzLTI0MDU0ODI4LmYuaHVic3BvdGVtYWlsLm5ldC9odWIvMjQwNTQ4MjgvaHViZnMvSW1wb3J0ZWQlMjBzaXRlcGFnZSUyMGltYWdlcy9MaW5rZWRpbl8zNjk4MGI2ZmI0LnBuZz9oZWlnaHQ9NTAmYW1wO3Vwc2NhbGU9dHJ1ZSZhbXA7bmFtZT1MaW5rZWRpbl8zNjk4MGI2ZmI0LnBuZyIgYWx0PSJMaW5rZWRpbl9pY29uIiBoZWlnaHQ9IjI1IiBzdHlsZT0ib3V0bGluZTpub25lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyOm5vbmU7IHdpZHRoOmF1dG8haW1wb3J0YW50OyBoZWlnaHQ6MjVweCFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSIgdmFsaWduPSJtaWRkbGUiIHdpZHRoPSJhdXRvIj4NCiAgICAgICAgICAgICAgICA8L2E-DQogICAgICAgICAgICAgIDwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgIDwvdGFibGU-DQogICAgICA8L3RkPjx0ZCBjbGFzcz0ic29jaWFsLW5ldHdvcmstY2VsbCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTVweDsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkIj4NCiAgICAgICAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgYWxpZ249ImNlbnRlciIgc3R5bGU9IndpZHRoOiBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IiBjbGFzcz0iaHNfY29zX3dyYXBwZXJfdHlwZV9zb2NpYWxfbW9kdWxlX3NpbmdsZSI-DQogICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgPHRyIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICAgICAgICA8dGQgY2xhc3M9ImRpc3BsYXlfYmxvY2tfb25fc21hbGxfc2NyZWVucyIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTVweDsgY29sb3I6IzIzNDk2ZDsgd29yZC1icmVhazpicmVhay13b3JkOyBwYWRkaW5nOjhweCA1cHg7IGxpbmUtaGVpZ2h0OjE7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSIgdmFsaWduPSJtaWRkbGUiPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZDJSTmZQMDQubmExLmh1YnNwb3RsaW5rcy5jb20vQ3RjL0RQKzExMy9kMlJOZlAwNC9WWGZ2U0YzeTZacVlXMzkxR1RtN0Z3Y2wtVzNEbDRTbTVuUVpMSk4yYnBjMTQzcW45Z1c3WTgtUFQ2bFozcDNXMktjYmxtNUpEX0xsVzE0alY2RzdUbG5LcVY4SHFkaDR6OU04cVc3Y0NHSkI4TlJTUG5XMlNTMzB5N3dadldkVzkyNFdfRDdMS3Y3d1cxa1hUcnk0OWZwM0dXNHB0Y1dZOGs5dnR0VnFzaEd2NDRGWHFTVzZaWFE4WjJYbmM4eFc3UTRiMEsxRDFCQzJWd3N0RzQ0bjUtRDJXNm43cERQNUQwazdDVzRNQzhGcTQ4d180LU40Q3BkTmg3Tm5qbFcxck1YeHo5MjdNbWZXOWR3V0wtNmQta25XVzdIdlNXYjRNUDRXWlcyelczZ3c1R2NKRnRXOEsxRHlCN2xnQjNZVzg3c0dDMTJSNW1ROVc4SEgtNU44WW1UemNONXFMUkd0Z19iQ1ZXNEJzalpRNWZCM1RXTjc3bVcwTnN3M2twVzVoWVRrcjZmS25qNWYyUUw1OWcwNCIgc3R5bGU9ImNvbG9yOiMwMGE0YmQ7IHRleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2hzLTI0MDU0ODI4LmYuaHVic3BvdGVtYWlsLm5ldC9odWIvMjQwNTQ4MjgvaHViZnMvaW5zLTIwMjMxMDE4LTExMTExOC5wbmc_aGVpZ2h0PTUwJmFtcDt1cHNjYWxlPXRydWUmYW1wO25hbWU9aW5zLTIwMjMxMDE4LTExMTExOC5wbmciIGFsdD0iaW5zLTIwMjMxMDE4LTExMTExOCIgaGVpZ2h0PSIyNSIgc3R5bGU9Im91dGxpbmU6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlcjpub25lOyB3aWR0aDphdXRvIWltcG9ydGFudDsgaGVpZ2h0OjI1cHghaW1wb3J0YW50OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iYXV0byI-DQogICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD48dGQgY2xhc3M9InNvY2lhbC1uZXR3b3JrLWNlbGwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZCI-DQogICAgICAgIDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyIgY2xhc3M9ImhzX2Nvc193cmFwcGVyX3R5cGVfc29jaWFsX21vZHVsZV9zaW5nbGUiPg0KICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0ciBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgPHRkIGNsYXNzPSJkaXNwbGF5X2Jsb2NrX29uX3NtYWxsX3NjcmVlbnMiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZDsgcGFkZGluZzo4cHggNXB4OyBsaW5lLWhlaWdodDoxOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzBQM3FuOWdXN2xDZExXNmxaM3BEVzI4MjN3LTFOMFk4TVc0Z2RXM1o3YjliR05XOGtZUmp0OEpHZnZaTjRoZHNSYzQ3OWY2VzR3UDNTSDVCN3E1Nk42UndiakY5OG1qUVcxd1ZUNlk3SlRRMzRXM0hselJ6M2xNWGtCVzhiUGdKeTdUMDA2MVczZGRqYlA0S3dYRkhONUwwMDRNbi1ELTFXMW5oRHpuNkdaSER6VzRWbFJORzZOSFpRcFc2S0tqdDAzQ2RCS2dXMXJQOVltM2hoTG1nVzMxMF9ybTJwV190R042THo1VnpINzNyN1czNFpqRDU2Y0RMNlRUTktSNjFsSHlOUlRfOV9xM1FfY3pUVzQtS2hrVDRaU25rLVc3V0tnWEYzMTRnZkRXNzhkakJZOWZiTndXVzVTalZqOTdzTjEyN2YxME1fS00wNCIgc3R5bGU9ImNvbG9yOiMwMGE0YmQ7IHRleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2hzLTI0MDU0ODI4LmYuaHVic3BvdGVtYWlsLm5ldC9odWIvMjQwNTQ4MjgvaHViZnMvRGlzY29yZC5wbmc_aGVpZ2h0PTUwJmFtcDt1cHNjYWxlPXRydWUmYW1wO25hbWU9RGlzY29yZC5wbmciIGFsdD0iRGlzY29yZCIgaGVpZ2h0PSIyNSIgc3R5bGU9Im91dGxpbmU6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlcjpub25lOyB3aWR0aDphdXRvIWltcG9ydGFudDsgaGVpZ2h0OjI1cHghaW1wb3J0YW50OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iYXV0byI-DQogICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD48dGQgY2xhc3M9InNvY2lhbC1uZXR3b3JrLWNlbGwiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZCI-DQogICAgICAgIDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyIgY2xhc3M9ImhzX2Nvc193cmFwcGVyX3R5cGVfc29jaWFsX21vZHVsZV9zaW5nbGUiPg0KICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0ciBhbGlnbj0iY2VudGVyIj4NCiAgICAgICAgICAgICAgPHRkIGNsYXNzPSJkaXNwbGF5X2Jsb2NrX29uX3NtYWxsX3NjcmVlbnMiIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE1cHg7IGNvbG9yOiMyMzQ5NmQ7IHdvcmQtYnJlYWs6YnJlYWstd29yZDsgcGFkZGluZzo4cHggNXB4OyBsaW5lLWhlaWdodDoxOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0Yy9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpOMmJwYzE0M3FuOWdXN1k4LVBUNmxaM3BiVzhLVmN2XzRkZEw0a1cyQlNuOEc3S21qVFRON0RtR3RkbGZzOXZXM0ZWYzlENDRYTDJrVzVwY3JNdzN0TnM2UVc0WHRDbEI4YjhMckdXMTNoZmNaNVNHWTdITjZLMFMwSmdaTjkxVzFYd1FybjZfc2tNSlcxcExEcHQ0WjZUVnBXNlIxNDVzN1ZSakdRVzNEWlFMMjdmWjNESlcxVnRjOHM2eDV2S1JOMngyU3BjWHpUMUxXNlRUWG5UMVFEOGY2VmwxOFpXN0Z2R1hoVzRUTjhXNDJ0Z3ByR1c0UTNScDk4V2dXbGdXMkt3WjZMNVkxa2RZVzNfbnZDYzduVGNrZ1c4WkhIM180QkR2ODJWWUxxYmsxOXgtcmZWLUM0WEc5MFpnR3JXODJwTVJXOTh0djg4TjJSYmpHMkY1NE10VzdqSFdjNjljS1FfOWYzakdxMDAwNCIgc3R5bGU9ImNvbG9yOiMwMGE0YmQ7IHRleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2hzLTI0MDU0ODI4LmYuaHVic3BvdGVtYWlsLm5ldC9odWIvMjQwNTQ4MjgvaHViZnMvTGlua2VkaW4tMjAyMzEwMTgtMTExMTAzLnBuZz9oZWlnaHQ9NTAmYW1wO3Vwc2NhbGU9dHJ1ZSZhbXA7bmFtZT1MaW5rZWRpbi0yMDIzMTAxOC0xMTExMDMucG5nIiBhbHQ9IkxpbmtlZGluLTIwMjMxMDE4LTExMTEwMyIgaGVpZ2h0PSIyNSIgc3R5bGU9Im91dGxpbmU6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlcjpub25lOyB3aWR0aDphdXRvIWltcG9ydGFudDsgaGVpZ2h0OjI1cHghaW1wb3J0YW50OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiIHZhbGlnbj0ibWlkZGxlIiB3aWR0aD0iYXV0byI-DQogICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgPC90ZD4NCiAgICA8L3RyPg0KICA8L3Rib2R5Pg0KPC90YWJsZT4NCjwvZGl2PjwvdGQ-PC90cj48L3Rib2R5PjwvdGFibGU-DQo8L2Rpdj4NCjwhLS1baWYgZ3RlIG1zbyA5XT48L3RhYmxlPjwhW2VuZGlmXS0tPg0KPCEtLVtpZiAobXNvKXwoSUUpXT48L3RkPjwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgKG1zbyl8KElFKV0-PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPg0KICAgIDwvZGl2Pg0KICAgDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzZWN0aW9uLTQiIGNsYXNzPSJoc2Utc2VjdGlvbiBoc2Utc2VjdGlvbi1sYXN0IiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweCI-DQogICAgDQogICAgDQogICAgPCEtLVtpZiAhKChtc28pfChJRSkpXT48IS0tIC0tPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7IG1heC13aWR0aDo2MDBweDsgTWFyZ2luLWxlZnQ6YXV0bzsgTWFyZ2luLXJpZ2h0OmF1dG87IHBhZGRpbmctYm90dG9tOjIwcHg7IHBhZGRpbmctdG9wOjIwcHgiPg0KICAgIDwhLS08IVtlbmRpZl0tLT4NCiAgICANCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICAgICAgPGRpdiBjbGFzcz0iaHNlLWNvbHVtbi1jb250YWluZXIiIHN0eWxlPSJtaW4td2lkdGg6MjgwcHg7bWF4LXdpZHRoOjYwMHB4O3dpZHRoOjEwMCU7TWFyZ2luLWxlZnQ6YXV0bztNYXJnaW4tcmlnaHQ6YXV0bzsiPg0KICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ3aWR0aDo2MDBweDsiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIj4NCiAgICAgIDx0cj4NCiAgICA8IVtlbmRpZl0tLT4NCiAgICA8IS0tW2lmIChtc28pfChJRSldPg0KICA8dGQgdmFsaWduPSJ0b3AiIHN0eWxlPSJ3aWR0aDo2MDBweDtwYWRkaW5nLWJvdHRvbToyMHB4OyBwYWRkaW5nLXRvcDoyMHB4OyI-DQo8IVtlbmRpZl0tLT4NCjwhLS1baWYgZ3RlIG1zbyA5XT4NCiAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgd2lkdGg9IjYwMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6NjAwcHgiPg0KPCFbZW5kaWZdLS0-DQo8ZGl2IGlkPSJjb2x1bW4tNC0wIiBjbGFzcz0iaHNlLWNvbHVtbiBoc2Utc2l6ZS0xMiI-DQogIDxkaXYgaWQ9ImhzX2Nvc193cmFwcGVyX21vZHVsZS00LTAtMCIgY2xhc3M9ImhzX2Nvc193cmFwcGVyIGhzX2Nvc193cmFwcGVyX3dpZGdldCBoc19jb3Nfd3JhcHBlcl90eXBlX21vZHVsZSIgc3R5bGU9ImNvbG9yOiBpbmhlcml0OyBmb250LXNpemU6IGluaGVyaXQ7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyIgZGF0YS1ocy1jb3MtZ2VuZXJhbC10eXBlPSJ3aWRnZXQiIGRhdGEtaHMtY29zLXR5cGU9Im1vZHVsZSI-PHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2xhc3M9ImhzZS1mb290ZXIgaHNlLXNlY29uZGFyeSIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTJweDsgbGluZS1oZWlnaHQ6MTM1JTsgY29sb3I6IzIzNDk2ZDsgbWFyZ2luLWJvdHRvbTowOyBwYWRkaW5nOjAiPg0KICA8dGJvZHk-DQogICAgPHRyPg0KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNXB4OyBjb2xvcjojMjM0OTZkOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tYm90dG9tOjA7IGxpbmUtaGVpZ2h0OjEzNSU7IHBhZGRpbmc6MTBweCAyMHB4Ij4NCiAgICAgICAgPHAgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjojMjM0OTZkIj4NCiAgICAgICAgICBaaWxsaXogSW5jLCAyMDEgUmVkd29vZCBTaG9yZXMgUGt3eSwgU3VpdGUgMzMwLCBSZWR3b29kIENpdHksIENBIDk0MDY1LCBVbml0ZWQgU3RhdGVzDQogICAgICAgIDwvcD4NCiAgICAgICAgPHA-DQogICAgICAgICAgPGEgZGF0YS11bnN1YnNjcmliZT0idHJ1ZSIgaHJlZj0iaHR0cHM6Ly9ocy0yNDA1NDgyOC5zLmh1YnNwb3RlbWFpbC5uZXQvaHMvcHJlZmVyZW5jZXMtY2VudGVyL2VuL2RpcmVjdD9kYXRhPVcyblhTLU4zMGgtQmNXMkhGVnFwNGNLZDl3VzNick1OTDMybEpWblczejFKTlczQzlOUmJXMkNGdEJtMzJzWEJLVzQxVjh5SDFCTnlZR1cyS0JLRzQyUE5rN2tXM2o2MlBnM3pkeUoxVzIxN3lkSjIyVE4wcFcyLUJkQnEzMnFzY1lXMVFybDl6MzZCN1FWVzNoLUI1XzNYTi1WMVcydDA0MkgyV0hfaC1XMzA2U3k3NDNRZjJGVzNDajI4QjFWeGxjY1czSGRHeWczMmctTTZXNDNGMTVtM0xHWXJiVzJxTXk0UzRjczJ5M1czTlhXY3QxWmc3SmhXNDNYeHlINGhLamc1VzNQNXZLYjR0RHhoWlc0Y2xKVl8yTUNSOExXMzhjUlkyMnIxNUpNVzJzRnQwdjI1MnJXNVcxTEZ5VzAyUnY4YzNXM0RNSzdENDNHaGpyVzFCdl9nMzJ2eUZsU1c0M3FTUWIzU0hZMl9XMjFsZmY4NGZMZ0RkVzJUaFhXODQxWTdfTFcxX2pzWkszODN0cUhXM2dubVBYMVZ5OC1qVzRrTTlNTDMwSzNfSlcxVmJSQy0yVFM3Zm1XM19zM1JHNG1xMjk2VzNkOWtKQzN6a3Z2eFcyMldxenA0NU15V1hXMkNNSHBaMzBMbFNLVzRrdDZRdjNRVkYzTVcyUmpfZFYxTDhON0dXM2pyLWZEMnAwdDIxVzJwM2t0azMwRFNqcVcxUTNNTHYySEZ4NS1XNHJwZkxRMjMxV1lqVzNfcHgtRzRyZktjbFc0ZnRaU3QxQnFUWkcwJmFtcDt1dG1fY2FtcGFpZ249WmlsbGl6LU1vbnRobHktUHJvZHVjdC1VcGRhdGVzJmFtcDt1dG1fc291cmNlPWhzX2VtYWlsJmFtcDt1dG1fbWVkaXVtPWVtYWlsJmFtcDt1dG1fY29udGVudD0zMzUyNTY1OTUmYW1wO19oc2VuYz1wMkFOcXR6LTkzNjBicFV1T1ZXbkZFOS1VYVl1NUg2Y2NGa0tZdS1zNXBYbEZQMVlMNV95YUQ2LXNjeWlxME9zMnhSVExaeTFaX095cnJ4NEd5LWgyOHZRUmlNWWNXRW1QV1VBJmFtcDtfaHNtaT0zMzUyNTY1OTUiIHN0eWxlPSJmb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHg7IGNvbG9yOiMzNjcwZjI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgZm9udC1zdHlsZTpub3JtYWwiIGRhdGEtaHMtbGluay1pZD0iMCIgdGFyZ2V0PSJfYmxhbmsiPlVuc3Vic2NyaWJlPC9hPg0KICAgICAgICAgIDxhIGRhdGEtdW5zdWJzY3JpYmU9InRydWUiIGhyZWY9Imh0dHBzOi8vaHMtMjQwNTQ4Mjgucy5odWJzcG90ZW1haWwubmV0L2hzL3ByZWZlcmVuY2VzLWNlbnRlci9lbi9wYWdlP2RhdGE9VzJuWFMtTjMwaC1CY1cySEZWcXA0Y0tkOXdXM2JyTU5MMzJsSlZuVzN6MUpOVzNDOU5SYlcyQ0Z0Qm0zMnNYQktXNDFWOHlIMUJOeVlHVzJLQktHNDJQTms3a1czajYyUGczemR5SjFXMjE3eWRKMjJUTjBwVzItQmRCcTMycXNjWVcxUXJsOXozNkI3UVZXM2gtQjVfM1hOLVYxVzJ0MDQySDJXSF9oLVczMDZTeTc0M1FmMkZXM0NqMjhCMVZ4bGNjVzNIZEd5ZzMyZy1NNlc0M0YxNW0zTEdZcmJXMnFNeTRTNGNzMnkzVzNOWFdjdDFaZzdKaFc0M1h4eUg0aEtqZzVXM1A1dktiNHREeGhaVzRjbEpWXzJNQ1I4TFczOGNSWTIycjE1Sk1XMnNGdDB2MjUyclc1VzFMRnlXMDJSdjhjM1czRE1LN0Q0M0doanJXMUJ2X2czMnZ5RmxTVzQzcVNRYjNTSFkyX1cyMWxmZjg0ZkxnRGRXMlRoWFc4NDFZN19MVzFfanNaSzM4M3RxSFczZ25tUFgxVnk4LWpXNGtNOU1MMzBLM19KVzFWYlJDLTJUUzdmbVczX3MzUkc0bXEyOTZXM2Q5a0pDM3prdnZ4VzIyV3F6cDQ1TXlXWFcyQ01IcFozMExsU0tXNGt0NlF2M1FWRjNNVzJSal9kVjFMOE43R1czanItZkQycDB0MjFXMnAza3RrMzBEU2pxVzFRM01MdjJIRng1LVc0cnBmTFEyMzFXWWpXM19weC1HNHJmS2NsVzRmdFpTdDFCcVRaRzAmYW1wO3V0bV9jYW1wYWlnbj1aaWxsaXotTW9udGhseS1Qcm9kdWN0LVVwZGF0ZXMmYW1wO3V0bV9zb3VyY2U9aHNfZW1haWwmYW1wO3V0bV9tZWRpdW09ZW1haWwmYW1wO3V0bV9jb250ZW50PTMzNTI1NjU5NSZhbXA7X2hzZW5jPXAyQU5xdHotOTM2MGJwVXVPVlduRkU5LVVhWXU1SDZjY0ZrS1l1LXM1cFhsRlAxWUw1X3lhRDYtc2N5aXEwT3MyeFJUTFp5MVpfT3lycng0R3ktaDI4dlFSaU1ZY1dFbVBXVUEmYW1wO19oc21pPTMzNTI1NjU5NSIgc3R5bGU9ImZvbnQtZmFtaWx5OkhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6MTJweDsgY29sb3I6IzM2NzBmMjsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBmb250LXN0eWxlOm5vcm1hbCIgZGF0YS1ocy1saW5rLWlkPSIwIiB0YXJnZXQ9Il9ibGFuayI-TWFuYWdlIHByZWZlcmVuY2VzPC9hPg0KICAgICAgICA8L3A-DQogICAgICA8L3RkPg0KICAgIDwvdHI-DQogIDwvdGJvZHk-DQo8L3RhYmxlPjwvZGl2Pg0KPC9kaXY-DQo8IS0tW2lmIGd0ZSBtc28gOV0-PC90YWJsZT48IVtlbmRpZl0tLT4NCjwhLS1baWYgKG1zbyl8KElFKV0-PC90ZD48IVtlbmRpZl0tLT4NCiAgICA8IS0tW2lmIChtc28pfChJRSldPjwvdHI-PC90YWJsZT48IVtlbmRpZl0tLT4NCiAgICA8L2Rpdj4NCiAgIA0KICA8L2Rpdj48L2Rpdj4NCiAgICAgICAgICA8L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgPC90Ym9keT48L3RhYmxlPg0KICAgIDwvZGl2Pg0KICANCjxpbWcgc3JjPSJodHRwczovL2QyUk5mUDA0Lm5hMS5odWJzcG90bGlua3MuY29tL0N0by9EUCsxMTMvZDJSTmZQMDQvVlhmdlNGM3k2WnFZVzM5MUdUbTdGd2NsLVczRGw0U201blFaTEpXMmJwYk5DOGZZQlZsMzExRjEiIGFsdD0iIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBib3JkZXI9IjAiIHN0eWxlPSJkaXNwbGF5Om5vbmUhaW1wb3J0YW50O21pbi1oZWlnaHQ6MXB4IWltcG9ydGFudDt3aWR0aDoxcHghaW1wb3J0YW50O2JvcmRlci13aWR0aDowIWltcG9ydGFudDttYXJnaW4tdG9wOjAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50O3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50Ij48L2JvZHk-PC9odG1sPg==" - } - } - ] - }, - "sizeEstimate": 58097, - "historyId": "528446", - "internalDate": "1732550489000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_05_19363d6a7f50225a_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_05_19363d6a7f50225a_20241126.json deleted file mode 100644 index a73143e..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_05_19363d6a7f50225a_20241126.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "id": "19363d6a7f50225a", - "threadId": "19363d6a7f50225a", - "labelIds": [ - "UNREAD", - "CATEGORY_SOCIAL", - "INBOX" - ], - "snippet": "I was shocked the first time I saw an email thread between CEOs. \u27a1\ufe0f Super\u2026 \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp947819wrq; Mon, 25 Nov 2024 07:00:33 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IEFN1+qQXQRzIufLuGn81fBtiEMpNVd70cc7F1JDgilDRmsroGRc1KakuQdeito894ZaWCJ" - }, - { - "name": "X-Received", - "value": "by 2002:a17:903:1cc:b0:213:1f66:7a0 with SMTP id d9443c01a7336-2131f660bb1mr162505755ad.5.1732546832257; Mon, 25 Nov 2024 07:00:32 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732546832; cv=none; d=google.com; s=arc-20240605; b=OefoSg4Osa/7UqDyfBdsqSwauKWbKt3mgv0CO65iqxq/6tJAToTEgQqKLwRQPjD2rI k1iTVlniP0xAeT7tF9IO5FszCwdxJMtApbZ1w5sgs6dCuhCW8CqaZPiyvRSM48d/EmS0 XU9zPhk1v3CamElaGDy44tgV/B1l+v7KHEyeH1cTrgMJWc2CQo2pq8YvgSLh0Dwi65hE 7+qHqYRTQCIxnFdTnSUCZ/re+ZBIdlsfRI6zbPD19CQ+m3gd0VZXydf1eku+xwx/syge 1XYXvWQlTvuwy48Alwj0W187eulpAdoBX9GLndpNIbSyXgsXWcDBzRpJHV/eDgRFppHq Oyog==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=require-recipient-valid-since:feedback-id:list-unsubscribe-post :list-unsubscribe:date:to:mime-version:subject:message-id:from :dkim-signature:dkim-signature; bh=QJIMampnsNTw4Zkt1PMWLbsgyfglSgJ+8/XrmCsl3fE=; fh=kl8GOc3xH49wmCQ5W74DCe5pDhPNnAeFoI4mGP4/wX4=; b=QtG1E2EuFXHDoOzoBPbZlyUiK3QsGFK+E9AUVyvVedcojVDu7DNTYeIetMQrPoQhyE aBU1SWlhJUhfIPBWOgx3PXCxEYOf79tzmq6+IJmhEngsM/mK3QIRFVxFIPNK6ntATr5l QN0xCBODlttA3zlPodu5X1oYKky6HSadTmNmeFsJCGz2XSL2PNgLSjrIT00vEu0DlqUg 6DGn0y4QGNRHTTu+G++Q/5RTl83KJbPUDw25q1zNPyoXm2S+tJmPRBwZIrOqWlcEfkGl JgXww2mZNo0PJ8YUYxi/V/GFefbJZCPNprtKngB894TrBjwreir+RAVnPG0xMLyMYH2G tKMA==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@maile.linkedin.com header.s=d2048-202308-0e header.b=JRwv1bF1; dkim=pass header.i=@linkedin.com header.s=d2048-202308-00 header.b=A29Lk2pK; spf=pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emfuz3e1jqnvn@bounce.linkedin.com designates 2620:109:c003:104::193 as permitted sender) smtp.mailfrom=m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emfuz3e1jqnvn@bounce.linkedin.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=linkedin.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from maile-ca.linkedin.com (maile-ca.linkedin.com. [2620:109:c003:104::193]) by mx.google.com with ESMTPS id d9443c01a7336-2129dcc2421si100253625ad.265.2024.11.25.07.00.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Nov 2024 07:00:32 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emfuz3e1jqnvn@bounce.linkedin.com designates 2620:109:c003:104::193 as permitted sender) client-ip=2620:109:c003:104::193;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@maile.linkedin.com header.s=d2048-202308-0e header.b=JRwv1bF1; dkim=pass header.i=@linkedin.com header.s=d2048-202308-00 header.b=A29Lk2pK; spf=pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emfuz3e1jqnvn@bounce.linkedin.com designates 2620:109:c003:104::193 as permitted sender) smtp.mailfrom=m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emfuz3e1jqnvn@bounce.linkedin.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=linkedin.com" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=maile.linkedin.com; s=d2048-202308-0e; t=1732546821; bh=QJIMampnsNTw4Zkt1PMWLbsgyfglSgJ+8/XrmCsl3fE=; h=From:Subject:MIME-Version:Content-Type:To:Date:X-LinkedIn-Class:\t X-LinkedIn-Template:X-LinkedIn-fbl; b=JRwv1bF1ZgWasLaV5ISDB6oRtNvnGdArHv7IH8WuhaNOJS9K9FKUTqls8jNUT9nKW\t qIuO1K8MiNn896sL30tt5C9aHXp9PlcByFX4R1nhF9KmBryfPf7fqyJ9PSU3kUIUji\t CwPW9QR2ebErCuAwYUbTIwzLrEK+tkC1088+vQt8llQdM1UcCq6lTIAHid8sCMgVfk\t U1tEhyImFWHlsoU6/bbL9xWu0zODgSdPu3k/7FMa4BXaTUGLdpatHoeMYQ7NB05hTu\t +/L1oBJNru7tikOJi+Lg5uqDXE9dbIxBHYxDxBpzxexJ4KIqAIBp5f+fM2uLlAALsh\t 8wv8egbBZVVXQ==" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkedin.com; s=d2048-202308-00; t=1732546821; bh=QJIMampnsNTw4Zkt1PMWLbsgyfglSgJ+8/XrmCsl3fE=; h=From:Subject:MIME-Version:Content-Type:To:Date:X-LinkedIn-Class:\t X-LinkedIn-Template:X-LinkedIn-fbl; b=A29Lk2pKp3MdOrd0ot1HCr426rNkgJG1uG5FwFw3Msav7EiuR3Hu9D8W8sp3Aguk3\t DJ4F8+Q1GyrSAQqp2EG+ej5Mkq0wIFCknKqS+dfIbV0WkXyt5gChl9U9+a0f3q45Sw\t kuc+Hu2npHCSqCS/ZnCEAGFac48iuxjWEZg5Gx+f3TgvaRk+4GbzLj9N3GpWK8gQJ1\t 0NfWqIwPtgD8x22otnhgaIMSe8p/SpmaHTA9is3oWFKy6cK6JiDYF9QCm9L7FUik6l\t doYcPxSEfyY1GOeDv77sE39JNZAInSnaoRLkMyhjpxa+wuZkjrk3e2OD2LcGANTjB6\t 5SXY4dCgRTuNw==" - }, - { - "name": "From", - "value": "LinkedIn Conversations " - }, - { - "name": "Message-ID", - "value": "<2103564692.15888884.1732546821012@lva1-app83618.prod.linkedin.com>" - }, - { - "name": "Subject", - "value": "Khushal, Kyle Coleman has a new post out now" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_15888882_780257305.1732546821006\"" - }, - { - "name": "To", - "value": "Khushal PS " - }, - { - "name": "Date", - "value": "Mon, 25 Nov 2024 15:00:21 +0000 (UTC)" - }, - { - "name": "X-LinkedIn-Class", - "value": "EMAIL-DEFAULT" - }, - { - "name": "X-LinkedIn-Template", - "value": "email_network_conversations_01" - }, - { - "name": "X-LinkedIn-fbl", - "value": "m2-aszvgmongouahf4m5l6zqvhltq38farw322nvqfwdw9s3eg192u3az2ognwtxtplrdia86qo0p50dvbiigckd8r282ipmolfihgoqa" - }, - { - "name": "X-LinkedIn-Id", - "value": "j7zu7i-m3x43csv-2c" - }, - { - "name": "List-Unsubscribe", - "value": "" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "Feedback-ID", - "value": "email_network_conversations_01:linkedin" - }, - { - "name": "Require-Recipient-Valid-Since", - "value": "pskhushal@gmail.com; Mon, 24 Jul 2023 06:55:23 +0000" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain;charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - }, - { - "name": "Content-ID", - "value": "text-body" - } - ], - "body": { - "size": 8151, - "data": "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KICAgICAgICAgIA0KICAgICAgICANCg0KICAgICAgICAgIEt5bGUgQ29sZW1hbiBzaGFyZWQgYSBwb3N0OiBJIHdhcyBzaG9ja2VkIHRoZSBmaXJzdCB0aW1lIEkgc2F3IGFuIGVtYWlsIHRocmVhZCBiZXR3ZWVuIENFT3MuDQoNCuKeoe-4jyBTdXBlciBzaG9ydCBzZW50ZW5jZXMNCuKeoe-4jyBJbXByb3BlciBwdW5jdHVhdGlvbg0K8J-ZgCBTcGVsbGluZyBlcnJvcnMhISANCg0KSXQgd2FzIG1vcmXigKYNCkxJS0UgUFJBSVNFIEVNUEFUSFkgMSwyODksIDIzOCBDb21tZW50cw0KUmVhZCBtb3JlOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2NDcxNjg0MTk3NjA1Mzc2MD9oaWdobGlnaHRlZFVwZGF0ZVVybj11cm4lM0FsaSUzQWFjdGl2aXR5JTNBNzI2NDcxNjg0MTk3NjA1Mzc2MCZzaG93Q29tbWVudEJveD10cnVlJm9yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmbGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0wRkVyWjdMWHc0RGJ3MSZ0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhfnRleHQtMC1yZWFkfm1vcmUmdHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhfnRleHQtMC1yZWFkfm1vcmUtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmVpZD1qN3p1N2ktbTN4NDNjc3YtMmMmb3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRA0KICAgICAgICANCg0KDQoNCiAgICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAgICBLaHVzaGkgQWdyYXdhbCBzaGFyZWQgYSBwb3N0OiDwn5qoRGVsZXRlIHRoZXNlIGZyb20geW91ciBDViBub3ch8J-aqA0KSW1hZ2luZSB0aGUgcmVjcnVpdGVyIHNpdHRpbmcgdGhlcmUsIGdvaW5nIHRocm91Z2ggZG96ZW5zIG9mIENWcyBldmVyeSBkYXkuIFdoYXQgbWFrZXMgdGhlbSBzdG9wIGF0IHlvdXJzPyBOb3TigKYNCkxJS0UgUFJBSVNFIEVNUEFUSFkgMjIyLCAxMTEgQ29tbWVudHMNCg0KDQpSZWFkIG1vcmU6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjYzMDk4NjMwMDQ2MTcxMTM3P2hpZ2hsaWdodGVkVXBkYXRlVXJuPXVybiUzQWxpJTNBYWN0aXZpdHklM0E3MjYzMDk4NjMwMDQ2MTcxMTM3JnNob3dDb21tZW50Qm94PXRydWUmb3JpZ2luPU5FVFdPUktfQ09OVkVSU0FUSU9OUyZsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTBGRXJaN0xYdzREYncxJnRyaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGF-dGV4dC0wLXJlYWR-bW9yZSZ0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGF-dGV4dC0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEDQogICAgICAgIA0KDQoNCg0KICAgICAgICAgIA0KICAgICAgICANCg0KICAgICAgICAgIFB1cnZpIEJvdGhyYSBzaGFyZWQgYSBwb3N0OiBPdmVyY29taW5nIEJ1cm5vdXQgaW4gUmVtb3RlIFdvcms6IE15IEV4cGVyaWVuY2UgYW5kIFN0cmF0ZWdpZXMNCg0KQnVybm91dCBpbiByZW1vdGUgd29yayBpcyByZWFsLCBhbmQgSeKAmXZlIHNlZW4gaG93IGl0IGNhbiBzaWxlbnRseSBjcmVlcCBpbnRvIG91cuKApg0KTElLRSBQUkFJU0UgQVBQUkVDSUFUSU9OIDc4LCA1NyBDb21tZW50cw0KUmVhZCBtb3JlOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2MzUzNTAyMjU5MzIyMDYwOD9oaWdobGlnaHRlZFVwZGF0ZVVybj11cm4lM0FsaSUzQWFjdGl2aXR5JTNBNzI2MzUzNTAyMjU5MzIyMDYwOCZzaG93Q29tbWVudEJveD10cnVlJm9yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmbGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0wRkVyWjdMWHc0RGJ3MSZ0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhfnRleHQtMC1yZWFkfm1vcmUmdHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhfnRleHQtMC1yZWFkfm1vcmUtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmVpZD1qN3p1N2ktbTN4NDNjc3YtMmMmb3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRA0KICAgICAgICANCg0KDQoNCiAgICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAgICBBbGlzaGEgU2FudGlhZ28gc2hhcmVkIGEgcG9zdDogRGVzcGl0ZSB0aGUgbnVtZXJvdXMgam9iIGludGVydmlld3MgSSd2ZSBwYXJ0aWNpcGF0ZWQgaW4sIEkgc3RpbGwgZmluZCBteXNlbGYgdW5jZXJ0YWluIGFib3V0IHdoZW4gaXQncyBhcHByb3ByaWF0ZSB0byBkaXNjdXNzIHNhbGFyeS4gSW4gbXkgbW9zdOKApg0KTElLRSBQUkFJU0UgRU1QQVRIWSAxNDUsIDg3IENvbW1lbnRzDQpSZWFkIG1vcmU6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0MzM4MDczMzkwMzUwMzM2P2hpZ2hsaWdodGVkVXBkYXRlVXJuPXVybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY0MzM4MDczMzkwMzUwMzM2JnNob3dDb21tZW50Qm94PXRydWUmb3JpZ2luPU5FVFdPUktfQ09OVkVSU0FUSU9OUyZsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTBGRXJaN0xYdzREYncxJnRyaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGF-dGV4dC0wLXJlYWR-bW9yZSZ0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGF-dGV4dC0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEDQogICAgICAgIA0KDQoNCg0KICAgICAgICAgIA0KICAgICAgICANCg0KICAgICAgICAgIEF1c3RpbiBCZWxjYWsgc2hhcmVkIGEgcG9zdDogSSBzaGFyZWQgYSBwb3N0IGFib3V0IHdoeSB5b3UgcHVyc3VlIGpvYnMgZXZlbiBpZiB5b3UgZG9u4oCZdCBtZWV0IDEwMCUgb2YgdGhlIHF1YWxpZmljYXRpb25zLg0KDQpNYW55IHBlb3BsZSByZXBsaWVkIHRlbGxpbmcgbWUgaXQgd2FzIOKAnHRlcnJpYmxl4oCmDQpMSUtFIFBSQUlTRSBFTVBBVEhZIDUyNiwgMTE4IENvbW1lbnRzDQpSZWFkIG1vcmU6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0MzM4MDcxMTUwNjI4ODY1P2hpZ2hsaWdodGVkVXBkYXRlVXJuPXVybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY0MzM4MDcxMTUwNjI4ODY1JnNob3dDb21tZW50Qm94PXRydWUmb3JpZ2luPU5FVFdPUktfQ09OVkVSU0FUSU9OUyZsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTBGRXJaN0xYdzREYncxJnRyaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGF-dGV4dC0wLXJlYWR-bW9yZSZ0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGF-dGV4dC0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEDQogICAgICAgIA0KDQoNClNlZSBtb3JlIG9uIExpbmtlZEluOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkLz9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTBGRXJaN0xYdzREYncxJnRyaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWZvb3Rlcl9wcm9tby0wLWZvb3Rlcl9zZWVfYWxsJnRya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtZm9vdGVyX3Byb21vLTAtZm9vdGVyX3NlZV9hbGwtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmVpZD1qN3p1N2ktbTN4NDNjc3YtMmMmb3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRA0KICAgICAgDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KVGhpcyBlbWFpbCB3YXMgaW50ZW5kZWQgZm9yIEtodXNoYWwgUFMgKC0tKQ0KTGVhcm4gd2h5IHdlIGluY2x1ZGVkIHRoaXM6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9oZWxwL2xpbmtlZGluL2Fuc3dlci80Nzg4P2xhbmc9ZW4mbGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0wRkVyWjdMWHc0RGJ3MSZ0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1TZWN1cml0eUhlbHAtMC10ZXh0Zm9vdGVyZ2xpbW1lciZ0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLVNlY3VyaXR5SGVscC0wLXRleHRmb290ZXJnbGltbWVyLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJm90cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QNCllvdSBhcmUgcmVjZWl2aW5nIE5ldHdvcmsgQ29udmVyc2F0aW9ucyBlbWFpbHMuIFNvbWUgY29udGVudCBtYXkgYmUgYXV0b21hdGljYWxseSB0cmFuc2xhdGVkIGJhc2VkIG9uDQogICAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vbXlwcmVmZXJlbmNlcy9kL2xhbmd1YWdlLWZvci10cmFuc2xhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsaW5rLW5vLXZpc2l0ZWQtc3RhdGUiIGRhdGEtdHJhY2tpbmctd2lsbC1uYXZpZ2F0ZSBkYXRhLXRyYWNraW5nLWNvbnRyb2wtbmFtZT0iZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zX2NvbnRlbnRfc2V0dGluZ3NfbGluayIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMGE2NmMyOyI-eW91ciBzZXR0aW5nczwvYT4uDQoNClVuc3Vic2NyaWJlOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9wc2V0dGluZ3MvZW1haWwtdW5zdWJzY3JpYmU_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0wRkVyWjdMWHc0RGJ3MSZ0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS11bnN1YnNjcmliZS0wLXRleHRmb290ZXJnbGltbWVyJnRya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtdW5zdWJzY3JpYmUtMC10ZXh0Zm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZsb2lkPUFRR1NlMFF6V1F4MjZBQUFBWk5qMW5mY3RCalBkV2V6a2lud05HMFVkN3ZZd3NuYWxoMFVzTWFZWWFRM2wzNmZUcnJqOXNjVko5emJjRzgtdENqalhhWEFDQkZEbWpjZ0pCVEZheHNRMFR4MDdpLU5FLVh5LU55V2JnDQpIZWxwOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vaGVscC9saW5rZWRpbi9hbnN3ZXIvNjc_bGFuZz1lbiZsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTBGRXJaN0xYdzREYncxJnRyaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWhlbHAtMC10ZXh0Zm9vdGVyZ2xpbW1lciZ0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWhlbHAtMC10ZXh0Zm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEDQoNCsKpIDIwMjQgTGlua2VkSW4gQ29ycG9yYXRpb24sIDF6d25qMDAwIFdlc3QgTWF1ZGUgQXZlbnVlLCBTdW5ueXZhbGUsIENBIDk0MDg1Lg0KTGlua2VkSW4gYW5kIHRoZSBMaW5rZWRJbiBsb2dvIGFyZSByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgTGlua2VkSW4u" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html;charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - }, - { - "name": "Content-ID", - "value": "html-body" - } - ], - "body": { - "size": 102165, - "data": "PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPiA8aGVhZD4gPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI-IDxtZXRhIG5hbWU9IkhhbmRoZWxkRnJpZW5kbHkiIGNvbnRlbnQ9InRydWUiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTAuNjY2NjY3OyB1c2VyLXNjYWxhYmxlPTAiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4gPHRpdGxlPjwvdGl0bGU-IDxzdHlsZT4NCiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MTJweCkgeyAubWVyY2Fkby1jb250YWluZXIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9IH0NCiAgICAgICAgICA8L3N0eWxlPiA8c3R5bGU-DQogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsgLmlubGluZS1idXR0b24sIC5pbmxpbmUtYnV0dG9uIHRhYmxlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9DQogICAgICAgICAgICAuZnVsbC13aWR0aC1idXR0b24sIC5mdWxsLXdpZHRoLWJ1dHRvbiB0YWJsZSB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH0gfQ0KICAgICAgICAgIDwvc3R5bGU-IDxzdHlsZT5ib2R5IHtmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywNCiAgICAgICAgICAgICdGaXJhIFNhbnMnLCBVYnVudHUsIE94eWdlbiwgJ094eWdlbiBTYW5zJywgQ2FudGFyZWxsLCAnRHJvaWQgU2FucycsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsDQogICAgICAgICAgICAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO308L3N0eWxlPiA8IS0tW2lmIG1zb10-PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gPC9zdHlsZT48IVtlbmRpZl0tLT4gPCEtLVtpZiBJRV0-PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gPC9zdHlsZT48IVtlbmRpZl0tLT4gPC9oZWFkPiA8Ym9keSBkaXI9Imx0ciIgY2xhc3M9ImZvbnQtc2FucyBiZy1jb2xvci1iYWNrZ3JvdW5kLWNhbnZhcyB3LWZ1bGwgbS0wIHAtMCBwdC0xIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbWFyZ2luOiAwcHg7IHdpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMmYwOyBwYWRkaW5nOiAwcHg7IHBhZGRpbmctdG9wOiA4cHg7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCAnRmlyYSBTYW5zJywgVWJ1bnR1LCBPeHlnZW4sICdPeHlnZW4gU2FucycsIENhbnRhcmVsbCwgJ0Ryb2lkIFNhbnMnLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyI-IDxkaXYgY2xhc3M9ImgtMCBvcGFjaXR5LTAgdGV4dC10cmFuc3BhcmVudCBpbnZpc2libGUgb3ZlcmZsb3ctaGlkZGVuIHctMCBtYXgtaC1bMF0iIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47IGhlaWdodDogMHB4OyBtYXgtaGVpZ2h0OiAwOyB3aWR0aDogMHB4OyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAwOyBtc28taGlkZTogYWxsOyIgZGF0YS1lbWFpbC1wcmVoZWFkZXI9InRydWUiPkkgd2FzIHNob2NrZWQgdGhlIGZpcnN0IHRpbWUgSSBzYXcgYW4gZW1haWwgdGhyZWFkIGJldHdlZW4gQ0VPcy4g4p6h77iPIFN1cGVy4oCmPC9kaXY-IDxkaXYgY2xhc3M9ImgtMCBvcGFjaXR5LTAgdGV4dC10cmFuc3BhcmVudCBpbnZpc2libGUgb3ZlcmZsb3ctaGlkZGVuIHctMCBtYXgtaC1bMF0iIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47IGhlaWdodDogMHB4OyBtYXgtaGVpZ2h0OiAwOyB3aWR0aDogMHB4OyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAwOyBtc28taGlkZTogYWxsOyI-IM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgPC9kaXY-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjUxMiIgYWxpZ249ImNlbnRlciIgY2xhc3M9Im1lcmNhZG8tY29udGFpbmVyIHctWzUxMnB4XSBtYXgtdy1bNTEycHhdIG14LWF1dG8gbXktMCBwLTAgYmctY29sb3ItYmFja2dyb3VuZC1jb250YWluZXIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgbWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IHdpZHRoOiA1MTJweDsgbWF4LXdpZHRoOiA1MTJweDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgcGFkZGluZzogMHB4OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIHAtMyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nOiAyNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgY2xhc3M9Im1pbi13LWZ1bGwiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgbWluLXdpZHRoOiAxMDAlOyI-IDx0Ym9keT4gPHRyPiA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC8_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1oZWFkZXItMC1ob21lX2dsaW1tZXJfZHluYW1pY19iYWRnaW5nX2hpZ2hfZHBpJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWhlYWRlci0wLWhvbWVfZ2xpbW1lcl9keW5hbWljX2JhZGdpbmdfaGlnaF9kcGktbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InctWzg0cHhdIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHdpZHRoOiA4NHB4OyI-IDxpbWcgY2xhc3M9ImgtWzM3cHhdIHctWzEwMXB4XSIgYWx0PSJMaW5rZWRJbiIgc3JjPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9kbXMvbG9nby92Mj9iYWRnZVRoZW1lPW1lcmNhZG8mYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1udWxsLTAtY29tbXMlN0ViYWRnaW5nJTdFZHluYW1pYyU3RWdsaW1tZXIlN0V2Mi1udWxsLWo3enU3aSU3RW0zeDQzY3N2JTdFMmMtbnVsbC1udWxsJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1udWxsLTAtY29tbXMlN0ViYWRnaW5nJTdFZHluYW1pYyU3RWdsaW1tZXIlN0V2MiZhbXA7X3NpZz0wcDFBZ2xuREE0RGJ3MSIgZGF0YS10ZXN0LWhlYWRlci1keW5hbWljLWJhZGdpbmctaW1nLWhpZ2gtZHBpIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGhlaWdodDogMzdweDsgd2lkdGg6IDEwMXB4OyIgd2lkdGg9IjEwMSIgaGVpZ2h0PSIzNyI-IDwvYT4gPC90ZD4gPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0icmlnaHQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBkYXRhLXRlc3QtaGVhZGVyLXByb2ZpbGUgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vaW4ubGlua2VkaW4uY29tL2NvbW0vaW4va2h1c2hhbC1wcy03YTYyYjcyODU_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1oZWFkZXItMC1wcm9maWxlX2dsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtaGVhZGVyLTAtcHJvZmlsZV9nbGltbWVyLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lIHRleHQtc3lzdGVtLWdyYXktOTAiIHN0eWxlPSJjb2xvcjogIzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij5LaHVzaGFsIFBTPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwLTAgIXBiLTAgcGItMyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nOiAwcHg7IHBhZGRpbmctYm90dG9tOiAwcHggIWltcG9ydGFudDsiPiA8ZGl2PiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0icC0zIGJvcmRlci0wIGJvcmRlci1iLTEgYm9yZGVyLXNvbGlkIGJvcmRlci1zeXN0ZW0tZ3JheS0zMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItd2lkdGg6IDA7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiAjZTZlNmU2OyBwYWRkaW5nOiAyNHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0NzE2ODQxOTc2MDUzNzYwP29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0LTAtd3JhcHBlcn5saW5rJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdC0wLXdyYXBwZXJ-bGluay1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idy1mdWxsIiBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1saW5rIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHdpZHRoOiAxMDAlOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC91cGRhdGUvdXJuOmxpOmFjdGl2aXR5OjcyNjQ3MTY4NDE5NzYwNTM3NjA_aGlnaGxpZ2h0ZWRVcGRhdGVVcm49dXJuJTNBbGklM0FhY3Rpdml0eSUzQTcyNjQ3MTY4NDE5NzYwNTM3NjAmYW1wO3Nob3dDb21tZW50Qm94PXRydWUmYW1wO29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtYWN0b3JfY2FyZCZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1hY3Rvcl9jYXJkLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJibG9jayIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtbGluayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgZGlzcGxheTogYmxvY2s7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyIGRhdGEtdGVzdC1pZD0idjJzdHlsZS1kaXNhYmxlIj4gPHRkIGNsYXNzPSJ3LVs3MnB4XSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3aWR0aDogNzJweDsiIHdpZHRoPSI3MiI-IDxpbWcgY2xhc3M9ImlubGluZS1ibG9jayByZWxhdGl2ZSBiZy1jb2xvci1lbnRpdHktZ2hvc3QtYmFja2dyb3VuZCBjbGlwLXBhdGgtY2lyY2xlLTUwIHJvdW5kZWQtZnVsbCB3LTYgaC02ICF3LVs3MnB4XSAhaC1bNzJweF0gIWJsb2NrIiBzcmM9Imh0dHBzOi8vbWVkaWEubGljZG4uY29tL2Rtcy9pbWFnZS92Mi9DNEQwM0FRSExib2l4VFU0QkdRL3Byb2ZpbGUtZGlzcGxheXBob3RvLXNocmlua180MDBfNDAwL3Byb2ZpbGUtZGlzcGxheXBob3RvLXNocmlua180MDBfNDAwLzAvMTY0Mzg1MDY2MzU5OT9lPTIxNDc0ODM2NDcmYW1wO3Y9YmV0YSZhbXA7dD02RWJXZnhOOEpZMC1FWjZXN0xaRTd3cGsxNVZXdHJQeERXbnBIWm9XdVlzIiBhbHQ9Ikt5bGUgQ29sZW1hbiIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXItcmFkaXVzOiA5OTk5cHg7IGJhY2tncm91bmQtY29sb3I6ICNlYWU2ZGY7IGNsaXAtcGF0aDogY2lyY2xlKDUwJSk7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IGhlaWdodDogNzJweCAhaW1wb3J0YW50OyB3aWR0aDogNzJweCAhaW1wb3J0YW50OyIgd2lkdGg9IjcyIiBoZWlnaHQ9IjcyIj4gPC90ZD4gPHRkIGNsYXNzPSJwbC0xIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctbGVmdDogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJmb250LWJvbGQgdGV4dC1tZCBsZWFkaW5nLXJlZ3VsYXIgdGV4dC1zeXN0ZW0tZ3JheS05MCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzI4MjgyODsiPiBLeWxlIENvbGVtYW4gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0iYWN0b3ItY2FyZC1oZWFkbGluZSI-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLVsxNnB4XSB0ZXh0LWNvbG9yLXRleHQtc29saWQtc2Vjb25kYXJ5IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE2cHg7IGNvbG9yOiAjNjY2NjY2OyI-IENNTyBAIENvcHkuYWkgfHwgSGVscGluZyBjb21wYW5pZXMgZWxpbWluYXRlIEdUTSBCbG9hdOKApiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDx0ZCBjbGFzcz0icGwtMSBtdC1bMjJweF0gbXItMSBpbmxpbmUtYmxvY2siIGRhdGEtdGVzdC1pZD0ibmV0d29yay1wb3N0LWZvbGxvdy1jdGEiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgbWFyZ2luLXJpZ2h0OiA4cHg7IG1hcmdpbi10b3A6IDIycHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZy1sZWZ0OiA4cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgY2xhc3M9ImVtYWlsLWJ1dHRvbiAiIGRhdGEtdGVzdC1pZD0iZW1haWwtYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249Im1pZGRsZSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2J1aWxkLXJlbGF0aW9uL3Blb3BsZS1mb2xsb3cvP2VudGl0eU5hbWU9a3lsZXRjb2xlbWFuJmFtcDtlbnRpdHlVcm49QURvQUFBWVItZWtCS3VNM2oxZko5UlY5V2cwRnczZ2dTOEpQcXhzJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtZm9sbG93X2N0YS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBhcmlhLWxhYmVsPSJGb2xsb3ciIGNsYXNzPSJhbGlnbi10b3Agbm8tdW5kZXJsaW5lICIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSJhdXRvIiBjbGFzcz0iYm9yZGVyLXNlcGFyYXRlICIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImJ0bi1zbSBidG4tdGVydGlhcnktZW1waGFzaXMgYm9yZGVyLW5vbmUgYnV0dG9uLWxpbmsgbGVhZGluZy1yZWd1bGFyICFtaW4taC1bYXV0b10gIXNoYWRvdy1ub25lIGJvcmRlci0xIGJvcmRlci1zb2xpZCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBoZWlnaHQ6IG1pbi1jb250ZW50OyBib3JkZXItcmFkaXVzOiAyNHB4OyBwYWRkaW5nLXRvcDogN3B4OyBwYWRkaW5nLWJvdHRvbTogN3B4OyBwYWRkaW5nLWxlZnQ6IDE2cHg7IHBhZGRpbmctcmlnaHQ6IDE2cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOyBjb2xvcjogIzBhNjZjMjsgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogbm9uZTsgbGluZS1oZWlnaHQ6IDEuMjU7IG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgYm94LXNoYWRvdzogMCAwICMwMDAwLCAwIDAgIzAwMDAsIDAgMCAjMDAwMCAhaW1wb3J0YW50OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2J1aWxkLXJlbGF0aW9uL3Blb3BsZS1mb2xsb3cvP2VudGl0eU5hbWU9a3lsZXRjb2xlbWFuJmFtcDtlbnRpdHlVcm49QURvQUFBWVItZWtCS3VNM2oxZko5UlY5V2cwRnczZ2dTOEpQcXhzJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtZm9sbG93X2N0YS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0ibm8tdW5kZXJsaW5lIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gRm9sbG93IDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwdC0yIHRleHQtbWQgbGVhZGluZy1yZWd1bGFyIHRleHQtc3lzdGVtLWdyYXktOTAiIGNvbHNwYW49IjIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDEuMjU7IGNvbG9yOiAjMjgyODI4OyI-IDxzcGFuIGRhdGEtdGVzdC1pZD0idHJ1bmNhdGVkLW1lc3NhZ2UtdGV4dCI-IEkgd2FzIHNob2NrZWQgdGhlIGZpcnN0IHRpbWUgSSBzYXcgYW4gZW1haWwgdGhyZWFkIGJldHdlZW4gQ0VPcy4g4p6h77iPIFN1cGVyIHNob3J0IHNlbnRlbmNlcyDinqHvuI8gSW1wcm9wZXLigKYgPC9zcGFuPiA8c3BhbiBkYXRhLXRlc3QtaWQ9InRydW5jYXRlZC1tZXNzYWdlLXNlZS1tb3JlIiBjbGFzcz0idGV4dC1jb2xvci1saW5rIGZvbnQtYm9sZCIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMGE2NmMyOyI-IHNlZSBtb3JlIDwvc3Bhbj4gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0ibmV0d29yay1wb3N0LXNvY2lhbC1tZXRhZGF0YSI-IDx0ZCBjbGFzcz0icHQtMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXRvcDogMTZweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSJhdXRvIiBjbGFzcz0idy1hdXRvIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHdpZHRoOiBhdXRvOyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InByLTAuNSIgZGF0YS10ZXN0LXJlYWN0aW9uPSJMSUtFIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctcmlnaHQ6IDRweDsiPiA8aW1nIGNsYXNzPSJibG9jayB3LTIgaC0yIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oLzkxdGRzY24waDFhYW9lZnVpOWNyZjExajYiIGFsdD0iTElLRSIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiA8L3RkPiA8dGQgY2xhc3M9InByLTAuNSIgZGF0YS10ZXN0LXJlYWN0aW9uPSJQUkFJU0UiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1yaWdodDogNHB4OyI-IDxpbWcgY2xhc3M9ImJsb2NrIHctMiBoLTIiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL3NjL2gvYWRpZzV1cnF4aTAzcXp1eTZpeWpmbTFiNSIgYWx0PSJQUkFJU0UiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iRU1QQVRIWSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXJpZ2h0OiA0cHg7Ij4gPGltZyBjbGFzcz0iYmxvY2sgdy0yIGgtMiIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vc2MvaC9ldnMyeDV6Zm56NWcweHJjNnUyMnRyZXEyIiBhbHQ9IkVNUEFUSFkiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJ0ZXh0LXNtIGxlYWRpbmctcmVndWxhciBmb250LW5vcm1hbCB0ZXh0LXN5c3RlbS1ncmF5LTcwIiBkYXRhLXRlc3QtaWQ9InJlYWN0aW9ucy1jb3VudCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzY2NjY2NjsiPiAxLDI4OSA8L3RkPiA8dGQgY2xhc3M9InB4LTAuNSIgZGF0YS10ZXN0LWlkPSJzZXBhcmF0b3IiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1sZWZ0OiA0cHg7IHBhZGRpbmctcmlnaHQ6IDRweDsiPsK3PC90ZD4gPHRkIGNsYXNzPSJ0ZXh0LXNtIGxlYWRpbmctcmVndWxhciBmb250LW5vcm1hbCB0ZXh0LXN5c3RlbS1ncmF5LTcwIiBkYXRhLXRlc3QtaWQ9ImNvbW1lbnRzLWNvdW50IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDEuMjU7IGNvbG9yOiAjNjY2NjY2OyI-IDIzOCBDb21tZW50cyA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8dHIgZGF0YS10ZXN0LWlkPSJyZWFkLW1vcmUtY3RhLWJsb2NrIj4gPHRkIGNsYXNzPSJwdC0zIiBjb2xzcGFuPSIyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctdG9wOiAyNHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzPSJlbWFpbC1idXR0b24gdy1mdWxsIGtvc2hpbl9fYnV0dG9uLXdpdGgtZnVsbC13aWR0aCIgZGF0YS10ZXN0LWlkPSJlbWFpbC1idXR0b24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgd2lkdGg6IDEwMCU7Ij4gPHRib2R5PiA8dHI-IDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249Im1pZGRsZSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0NzE2ODQxOTc2MDUzNzYwP29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhLTAtcmVhZH5tb3JlLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGFyaWEtbGFiZWw9IlJlYWQgbW9yZSIgY2xhc3M9ImFsaWduLXRvcCBuby11bmRlcmxpbmUgIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iYm9yZGVyLXNlcGFyYXRlICIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImJ0bi1tZCBidG4tc2Vjb25kYXJ5LWVtcGhhc2lzIGJvcmRlci1jb2xvci1icmFuZCBidXR0b24tbGluayBsZWFkaW5nLXJlZ3VsYXIgIW1pbi1oLVthdXRvXSAhc2hhZG93LW5vbmUgYm9yZGVyLTEgYm9yZGVyLXNvbGlkIiBkYXRhLXRlc3QtaWQ9InJlYWQtbW9yZS1jdGEtYmVsb3ciIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgaGVpZ2h0OiBtaW4tY29udGVudDsgYm9yZGVyLXJhZGl1czogMjRweDsgcGFkZGluZy10b3A6IDEycHg7IHBhZGRpbmctYm90dG9tOiAxMnB4OyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOyBjb2xvcjogIzBhNjZjMjsgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogIzBhNjZjMjsgbGluZS1oZWlnaHQ6IDEuMjU7IG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgYm94LXNoYWRvdzogMCAwICMwMDAwLCAwIDAgIzAwMDAsIDAgMCAjMDAwMCAhaW1wb3J0YW50OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0NzE2ODQxOTc2MDUzNzYwP29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhLTAtcmVhZH5tb3JlLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIHRhYmluZGV4PSItMSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJuby11bmRlcmxpbmUiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgdGV4dC1jb2xvci1icmFuZCIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiBSZWFkIG1vcmUgPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icC0zIGJvcmRlci0wIGJvcmRlci1iLTEgYm9yZGVyLXNvbGlkIGJvcmRlci1zeXN0ZW0tZ3JheS0zMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItd2lkdGg6IDA7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiAjZTZlNmU2OyBwYWRkaW5nOiAyNHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjYzMDk4NjMwMDQ2MTcxMTM3P29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0LTAtd3JhcHBlcn5saW5rJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdC0wLXdyYXBwZXJ-bGluay1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idy1mdWxsIiBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1saW5rIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHdpZHRoOiAxMDAlOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC91cGRhdGUvdXJuOmxpOmFjdGl2aXR5OjcyNjMwOTg2MzAwNDYxNzExMzc_aGlnaGxpZ2h0ZWRVcGRhdGVVcm49dXJuJTNBbGklM0FhY3Rpdml0eSUzQTcyNjMwOTg2MzAwNDYxNzExMzcmYW1wO3Nob3dDb21tZW50Qm94PXRydWUmYW1wO29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtYWN0b3JfY2FyZCZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1hY3Rvcl9jYXJkLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJibG9jayIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtbGluayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgZGlzcGxheTogYmxvY2s7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyIGRhdGEtdGVzdC1pZD0idjJzdHlsZS1kaXNhYmxlIj4gPHRkIGNsYXNzPSJ3LVs3MnB4XSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3aWR0aDogNzJweDsiIHdpZHRoPSI3MiI-IDxpbWcgY2xhc3M9ImlubGluZS1ibG9jayByZWxhdGl2ZSBiZy1jb2xvci1lbnRpdHktZ2hvc3QtYmFja2dyb3VuZCBjbGlwLXBhdGgtY2lyY2xlLTUwIHJvdW5kZWQtZnVsbCB3LTYgaC02ICF3LVs3MnB4XSAhaC1bNzJweF0gIWJsb2NrIiBzcmM9Imh0dHBzOi8vbWVkaWEubGljZG4uY29tL2Rtcy9pbWFnZS92Mi9ENEQwM0FRRm8tWkhqLU4wZlFnL3Byb2ZpbGUtZGlzcGxheXBob3RvLXNocmlua180MDBfNDAwL3Byb2ZpbGUtZGlzcGxheXBob3RvLXNocmlua180MDBfNDAwLzAvMTcyMjQxMzMzODM5OD9lPTIxNDc0ODM2NDcmYW1wO3Y9YmV0YSZhbXA7dD1sVC0wRk5xNmFmUmlXbkoyWHNrTnZPQTkwWXBXOURUTVJGY2JTbFNnanU4IiBhbHQ9IktodXNoaSBBZ3Jhd2FsIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlci1yYWRpdXM6IDk5OTlweDsgYmFja2dyb3VuZC1jb2xvcjogI2VhZTZkZjsgY2xpcC1wYXRoOiBjaXJjbGUoNTAlKTsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgaGVpZ2h0OiA3MnB4ICFpbXBvcnRhbnQ7IHdpZHRoOiA3MnB4ICFpbXBvcnRhbnQ7IiB3aWR0aD0iNzIiIGhlaWdodD0iNzIiPiA8L3RkPiA8dGQgY2xhc3M9InBsLTEiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1sZWZ0OiA4cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImZvbnQtYm9sZCB0ZXh0LW1kIGxlYWRpbmctcmVndWxhciB0ZXh0LXN5c3RlbS1ncmF5LTkwIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgbGluZS1oZWlnaHQ6IDEuMjU7IGNvbG9yOiAjMjgyODI4OyI-IEtodXNoaSBBZ3Jhd2FsIDwvdGQ-IDwvdHI-IDx0ciBkYXRhLXRlc3QtaWQ9ImFjdG9yLWNhcmQtaGVhZGxpbmUiPiA8dGQgY2xhc3M9InRleHQtc20gbGVhZGluZy1bMTZweF0gdGV4dC1jb2xvci10ZXh0LXNvbGlkLXNlY29uZGFyeSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxNnB4OyBjb2xvcjogIzY2NjY2NjsiPiBTb2Z0d2FyZSBFbmdpbmVlciB8fCBFeCBTREUgSW50ZXJuIEAgSVRKT0JYUyxHRkcgfHzigKYgPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8dGQgY2xhc3M9InBsLTEgbXQtWzIycHhdIG1yLTEgaW5saW5lLWJsb2NrIiBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1mb2xsb3ctY3RhIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IG1hcmdpbi1yaWdodDogOHB4OyBtYXJnaW4tdG9wOiAyMnB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmctbGVmdDogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzPSJlbWFpbC1idXR0b24gIiBkYXRhLXRlc3QtaWQ9ImVtYWlsLWJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9idWlsZC1yZWxhdGlvbi9wZW9wbGUtZm9sbG93Lz9lbnRpdHlOYW1lPWtodXNoaS1hZ3Jhd2FsLXplcm90d28mYW1wO2VudGl0eVVybj1BRG9BQURPLWxvY0JySnRLQXVhaldQczJHbmhENWR0dVUxUmNpVWsmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtZm9sbG93X2N0YSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1mb2xsb3dfY3RhLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGFyaWEtbGFiZWw9IkZvbGxvdyIgY2xhc3M9ImFsaWduLXRvcCBuby11bmRlcmxpbmUgIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9ImF1dG8iIGNsYXNzPSJib3JkZXItc2VwYXJhdGUgIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0iYnRuLXNtIGJ0bi10ZXJ0aWFyeS1lbXBoYXNpcyBib3JkZXItbm9uZSBidXR0b24tbGluayBsZWFkaW5nLXJlZ3VsYXIgIW1pbi1oLVthdXRvXSAhc2hhZG93LW5vbmUgYm9yZGVyLTEgYm9yZGVyLXNvbGlkIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGhlaWdodDogbWluLWNvbnRlbnQ7IGJvcmRlci1yYWRpdXM6IDI0cHg7IHBhZGRpbmctdG9wOiA3cHg7IHBhZGRpbmctYm90dG9tOiA3cHg7IHBhZGRpbmctbGVmdDogMTZweDsgcGFkZGluZy1yaWdodDogMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7IGNvbG9yOiAjMGE2NmMyOyBib3JkZXItd2lkdGg6IDFweDsgYm9yZGVyLXN0eWxlOiBub25lOyBsaW5lLWhlaWdodDogMS4yNTsgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OyBib3gtc2hhZG93OiAwIDAgIzAwMDAsIDAgMCAjMDAwMCwgMCAwICMwMDAwICFpbXBvcnRhbnQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vYnVpbGQtcmVsYXRpb24vcGVvcGxlLWZvbGxvdy8_ZW50aXR5TmFtZT1raHVzaGktYWdyYXdhbC16ZXJvdHdvJmFtcDtlbnRpdHlVcm49QURvQUFETy1sb2NCckp0S0F1YWpXUHMyR25oRDVkdHVVMVJjaVVrJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtZm9sbG93X2N0YS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0ibm8tdW5kZXJsaW5lIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gRm9sbG93IDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwdC0yIHRleHQtbWQgbGVhZGluZy1yZWd1bGFyIHRleHQtc3lzdGVtLWdyYXktOTAiIGNvbHNwYW49IjIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDEuMjU7IGNvbG9yOiAjMjgyODI4OyI-IDxzcGFuIGRhdGEtdGVzdC1pZD0idHJ1bmNhdGVkLW1lc3NhZ2UtdGV4dCI-IPCfmqhEZWxldGUgdGhlc2UgZnJvbSB5b3VyIENWIG5vdyHwn5qoIEltYWdpbmUgdGhlIHJlY3J1aXRlciBzaXR0aW5nIHRoZXJlLCBnb2luZyB0aHJvdWdoIGRvemVucyBvZiBDVnMgZXZlcnnigKYgPC9zcGFuPiA8c3BhbiBkYXRhLXRlc3QtaWQ9InRydW5jYXRlZC1tZXNzYWdlLXNlZS1tb3JlIiBjbGFzcz0idGV4dC1jb2xvci1saW5rIGZvbnQtYm9sZCIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMGE2NmMyOyI-IHNlZSBtb3JlIDwvc3Bhbj4gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0ibmV0d29yay1wb3N0LXNvY2lhbC1tZXRhZGF0YSI-IDx0ZCBjbGFzcz0icHQtMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXRvcDogMTZweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSJhdXRvIiBjbGFzcz0idy1hdXRvIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHdpZHRoOiBhdXRvOyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InByLTAuNSIgZGF0YS10ZXN0LXJlYWN0aW9uPSJMSUtFIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctcmlnaHQ6IDRweDsiPiA8aW1nIGNsYXNzPSJibG9jayB3LTIgaC0yIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oLzkxdGRzY24waDFhYW9lZnVpOWNyZjExajYiIGFsdD0iTElLRSIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiA8L3RkPiA8dGQgY2xhc3M9InByLTAuNSIgZGF0YS10ZXN0LXJlYWN0aW9uPSJQUkFJU0UiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1yaWdodDogNHB4OyI-IDxpbWcgY2xhc3M9ImJsb2NrIHctMiBoLTIiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL3NjL2gvYWRpZzV1cnF4aTAzcXp1eTZpeWpmbTFiNSIgYWx0PSJQUkFJU0UiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iRU1QQVRIWSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXJpZ2h0OiA0cHg7Ij4gPGltZyBjbGFzcz0iYmxvY2sgdy0yIGgtMiIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vc2MvaC9ldnMyeDV6Zm56NWcweHJjNnUyMnRyZXEyIiBhbHQ9IkVNUEFUSFkiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJ0ZXh0LXNtIGxlYWRpbmctcmVndWxhciBmb250LW5vcm1hbCB0ZXh0LXN5c3RlbS1ncmF5LTcwIiBkYXRhLXRlc3QtaWQ9InJlYWN0aW9ucy1jb3VudCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzY2NjY2NjsiPiAyMjIgPC90ZD4gPHRkIGNsYXNzPSJweC0wLjUiIGRhdGEtdGVzdC1pZD0ic2VwYXJhdG9yIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctbGVmdDogNHB4OyBwYWRkaW5nLXJpZ2h0OiA0cHg7Ij7CtzwvdGQ-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLXJlZ3VsYXIgZm9udC1ub3JtYWwgdGV4dC1zeXN0ZW0tZ3JheS03MCIgZGF0YS10ZXN0LWlkPSJjb21tZW50cy1jb3VudCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzY2NjY2NjsiPiAxMTEgQ29tbWVudHMgPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0icmVhZC1tb3JlLWN0YS1ibG9jayI-IDx0ZCBjbGFzcz0icHQtMyIgY29sc3Bhbj0iMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXRvcDogMjRweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iZW1haWwtYnV0dG9uIHctZnVsbCBrb3NoaW5fX2J1dHRvbi13aXRoLWZ1bGwtd2lkdGgiIGRhdGEtdGVzdC1pZD0iZW1haWwtYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHdpZHRoOiAxMDAlOyI-IDx0Ym9keT4gPHRyPiA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2MzA5ODYzMDA0NjE3MTEzNz9vcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGEtMC1yZWFkfm1vcmUmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBhcmlhLWxhYmVsPSJSZWFkIG1vcmUiIGNsYXNzPSJhbGlnbi10b3Agbm8tdW5kZXJsaW5lICIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgY2xhc3M9ImJvcmRlci1zZXBhcmF0ZSAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJidG4tbWQgYnRuLXNlY29uZGFyeS1lbXBoYXNpcyBib3JkZXItY29sb3ItYnJhbmQgYnV0dG9uLWxpbmsgbGVhZGluZy1yZWd1bGFyICFtaW4taC1bYXV0b10gIXNoYWRvdy1ub25lIGJvcmRlci0xIGJvcmRlci1zb2xpZCIgZGF0YS10ZXN0LWlkPSJyZWFkLW1vcmUtY3RhLWJlbG93IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGhlaWdodDogbWluLWNvbnRlbnQ7IGJvcmRlci1yYWRpdXM6IDI0cHg7IHBhZGRpbmctdG9wOiAxMnB4OyBwYWRkaW5nLWJvdHRvbTogMTJweDsgcGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgY29sb3I6ICMwYTY2YzI7IGJvcmRlci13aWR0aDogMXB4OyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICMwYTY2YzI7IGxpbmUtaGVpZ2h0OiAxLjI1OyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IDAgMCAjMDAwMCwgMCAwICMwMDAwLCAwIDAgIzAwMDAgIWltcG9ydGFudDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2MzA5ODYzMDA0NjE3MTEzNz9vcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGEtMC1yZWFkfm1vcmUmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0ibm8tdW5kZXJsaW5lIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lIHRleHQtY29sb3ItYnJhbmQiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gUmVhZCBtb3JlIDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0cj48dGQgY2xhc3M9ImgtMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBoZWlnaHQ6IDE2cHg7IiBoZWlnaHQ9IjE2Ij48L3RkPjwvdHI-IDx0cj4gPHRkIGNsYXNzPSJyb3VuZGVkLW1kIG92ZXJmbG93LWhpZGRlbiIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtdXBkYXRlLWNhcmQiIGNvbHNwYW49IjIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyLXJhZGl1czogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJiZy1jb29sLWdyYXktMjAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYmFja2dyb3VuZC1jb2xvcjogI2VkZjNmODsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0iYmctY2VudGVyIGJnLW5vLXJlcGVhdCBoLVsyNTJweF0gYmctc3lzdGVtLWdyYXktNDAiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgaGVpZ2h0OiAyNTJweDsgYmFja2dyb3VuZC1jb2xvcjogI2NmY2ZjZjsgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJnF1b3Q7aHR0cHM6Ly9tZWRpYS5saWNkbi5jb20vZG1zL2ltYWdlL3YyL0Q0RDIyQVFGd2dpMEZnRHhvUkEvZmVlZHNoYXJlLXNocmlua18yMDQ4XzE1MzYvZmVlZHNoYXJlLXNocmlua18yMDQ4XzE1MzYvMC8xNzMxNjU3NjUzNzExP2U9MTczNTE3MTIwMCZhbXA7dj1iZXRhJmFtcDt0PXdWejE3Xy0ycy1tbkRSVDU3c1Nxbm9rckZVTkFqZmM0RWh4LTZic1MwdVEmcXVvdDspOyIgaGVpZ2h0PSIyNTIiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2MzA5ODYzMDA0NjE3MTEzNz9oaWdobGlnaHRlZFVwZGF0ZVVybj11cm4lM0FsaSUzQWFjdGl2aXR5JTNBNzI2MzA5ODYzMDA0NjE3MTEzNyZhbXA7c2hvd0NvbW1lbnRCb3g9dHJ1ZSZhbXA7b3JpZ2luPU5FVFdPUktfQ09OVkVSU0FUSU9OUyZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS11cGRhdGV-Y2FyZC0wLXRodW1ibmFpbH5vdmVybGF5fmltYWdlJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLXVwZGF0ZX5jYXJkLTAtdGh1bWJuYWlsfm92ZXJsYXl-aW1hZ2UtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgYXJpYS1sYWJlbD0iUmVhZCBtb3JlIiBjbGFzcz0idy1mdWxsICIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB3aWR0aDogMTAwJTsiPiA8aW1nIGNsYXNzPSJ3LVs0NDhweF0gaC1bMjUycHhdIGhpZGRlbiAiIHNyYz0iaHR0cHM6Ly9tZWRpYS5saWNkbi5jb20vZG1zL2ltYWdlL3YyL0Q0RDIyQVFGd2dpMEZnRHhvUkEvZmVlZHNoYXJlLXNocmlua18yMDQ4XzE1MzYvZmVlZHNoYXJlLXNocmlua18yMDQ4XzE1MzYvMC8xNzMxNjU3NjUzNzExP2U9MTczNTE3MTIwMCZhbXA7dj1iZXRhJmFtcDt0PXdWejE3Xy0ycy1tbkRSVDU3c1Nxbm9rckZVTkFqZmM0RWh4LTZic1MwdVEiIGFsdD0iVmlldyBpbWFnZSIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgZGlzcGxheTogbm9uZTsgaGVpZ2h0OiAyNTJweDsgd2lkdGg6IDQ0OHB4OyIgd2lkdGg9IjQ0OCIgaGVpZ2h0PSIyNTIiPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InAtMyBib3JkZXItMCBib3JkZXItYi0xIGJvcmRlci1zb2xpZCBib3JkZXItc3lzdGVtLWdyYXktMzAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLXdpZHRoOiAwOyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogI2U2ZTZlNjsgcGFkZGluZzogMjRweDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2MzUzNTAyMjU5MzIyMDYwOD9vcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdC0wLXdyYXBwZXJ-bGluayZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3QtMC13cmFwcGVyfmxpbmstbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InctZnVsbCIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtbGluayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB3aWR0aDogMTAwJTsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjYzNTM1MDIyNTkzMjIwNjA4P2hpZ2hsaWdodGVkVXBkYXRlVXJuPXVybiUzQWxpJTNBYWN0aXZpdHklM0E3MjYzNTM1MDIyNTkzMjIwNjA4JmFtcDtzaG93Q29tbWVudEJveD10cnVlJmFtcDtvcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWFjdG9yX2NhcmQmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtYWN0b3JfY2FyZC1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYmxvY2siIGRhdGEtdGVzdC1pZD0ibmV0d29yay1wb3N0LWxpbmsiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGRpc3BsYXk6IGJsb2NrOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0ciBkYXRhLXRlc3QtaWQ9InYyc3R5bGUtZGlzYWJsZSI-IDx0ZCBjbGFzcz0idy1bNzJweF0iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgd2lkdGg6IDcycHg7IiB3aWR0aD0iNzIiPiA8aW1nIGNsYXNzPSJpbmxpbmUtYmxvY2sgcmVsYXRpdmUgYmctY29sb3ItZW50aXR5LWdob3N0LWJhY2tncm91bmQgY2xpcC1wYXRoLWNpcmNsZS01MCByb3VuZGVkLWZ1bGwgdy02IGgtNiAhdy1bNzJweF0gIWgtWzcycHhdICFibG9jayIgc3JjPSJodHRwczovL21lZGlhLmxpY2RuLmNvbS9kbXMvaW1hZ2UvdjIvRDREMDNBUUgzT3ExSzJDTWFsQS9wcm9maWxlLWRpc3BsYXlwaG90by1zaHJpbmtfNDAwXzQwMC9wcm9maWxlLWRpc3BsYXlwaG90by1zaHJpbmtfNDAwXzQwMC8wLzE3MjMzNTQ3NTY0MTE_ZT0yMTQ3NDgzNjQ3JmFtcDt2PWJldGEmYW1wO3Q9UXF5SnZMYlZVZzFXVW10N0RteDlFUnFYZVhZTm5wZEwyN3U5OWZOYUI3YyIgYWx0PSJQdXJ2aSBCb3RocmEiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm9yZGVyLXJhZGl1czogOTk5OXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlNmRmOyBjbGlwLXBhdGg6IGNpcmNsZSg1MCUpOyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyBoZWlnaHQ6IDcycHggIWltcG9ydGFudDsgd2lkdGg6IDcycHggIWltcG9ydGFudDsiIHdpZHRoPSI3MiIgaGVpZ2h0PSI3MiI-IDwvdGQ-IDx0ZCBjbGFzcz0icGwtMSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDhweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0iZm9udC1ib2xkIHRleHQtbWQgbGVhZGluZy1yZWd1bGFyIHRleHQtc3lzdGVtLWdyYXktOTAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyBsaW5lLWhlaWdodDogMS4yNTsgY29sb3I6ICMyODI4Mjg7Ij4gUHVydmkgQm90aHJhIDwvdGQ-IDwvdHI-IDx0ciBkYXRhLXRlc3QtaWQ9ImFjdG9yLWNhcmQtaGVhZGxpbmUiPiA8dGQgY2xhc3M9InRleHQtc20gbGVhZGluZy1bMTZweF0gdGV4dC1jb2xvci10ZXh0LXNvbGlkLXNlY29uZGFyeSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxNnB4OyBjb2xvcjogIzY2NjY2NjsiPiBWZXJzYXRpbGUgUHJvamVjdCBNYW5hZ2VyIGZyb20gUHJvamVjdCBJbml0aWF0aW9uIHRv4oCmIDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvYT4gPC90ZD4gPHRkIGNsYXNzPSJwbC0xIG10LVsyMnB4XSBtci0xIGlubGluZS1ibG9jayIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtZm9sbG93LWN0YSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW4tcmlnaHQ6IDhweDsgbWFyZ2luLXRvcDogMjJweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nLWxlZnQ6IDhweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iZW1haWwtYnV0dG9uICIgZGF0YS10ZXN0LWlkPSJlbWFpbC1idXR0b24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vYnVpbGQtcmVsYXRpb24vcGVvcGxlLWZvbGxvdy8_ZW50aXR5TmFtZT1wdXJ2aS1ib3RocmEyNCZhbXA7ZW50aXR5VXJuPUFEb0FBQVBHUV9nQnNjRFdXWkFMN29oLWdnMnBiNWxCUHV0VzlhQSZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1mb2xsb3dfY3RhJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgYXJpYS1sYWJlbD0iRm9sbG93IiBjbGFzcz0iYWxpZ24tdG9wIG5vLXVuZGVybGluZSAiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgY2xhc3M9ImJvcmRlci1zZXBhcmF0ZSAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJidG4tc20gYnRuLXRlcnRpYXJ5LWVtcGhhc2lzIGJvcmRlci1ub25lIGJ1dHRvbi1saW5rIGxlYWRpbmctcmVndWxhciAhbWluLWgtW2F1dG9dICFzaGFkb3ctbm9uZSBib3JkZXItMSBib3JkZXItc29saWQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgaGVpZ2h0OiBtaW4tY29udGVudDsgYm9yZGVyLXJhZGl1czogMjRweDsgcGFkZGluZy10b3A6IDdweDsgcGFkZGluZy1ib3R0b206IDdweDsgcGFkZGluZy1sZWZ0OiAxNnB4OyBwYWRkaW5nLXJpZ2h0OiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgY29sb3I6ICMwYTY2YzI7IGJvcmRlci13aWR0aDogMXB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGxpbmUtaGVpZ2h0OiAxLjI1OyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IDAgMCAjMDAwMCwgMCAwICMwMDAwLCAwIDAgIzAwMDAgIWltcG9ydGFudDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9idWlsZC1yZWxhdGlvbi9wZW9wbGUtZm9sbG93Lz9lbnRpdHlOYW1lPXB1cnZpLWJvdGhyYTI0JmFtcDtlbnRpdHlVcm49QURvQUFBUEdRX2dCc2NEV1daQUw3b2gtZ2cycGI1bEJQdXRXOWFBJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtZm9sbG93X2N0YS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0ibm8tdW5kZXJsaW5lIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gRm9sbG93IDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwdC0yIHRleHQtbWQgbGVhZGluZy1yZWd1bGFyIHRleHQtc3lzdGVtLWdyYXktOTAiIGNvbHNwYW49IjIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDEuMjU7IGNvbG9yOiAjMjgyODI4OyI-IDxzcGFuIGRhdGEtdGVzdC1pZD0idHJ1bmNhdGVkLW1lc3NhZ2UtdGV4dCI-IE92ZXJjb21pbmcgQnVybm91dCBpbiBSZW1vdGUgV29yazogTXkgRXhwZXJpZW5jZSBhbmQgU3RyYXRlZ2llcyBCdXJub3V0IGluIHJlbW90ZSB3b3JrIGlzIHJlYWwsIGFuZCBJ4oCZdmXigKYgPC9zcGFuPiA8c3BhbiBkYXRhLXRlc3QtaWQ9InRydW5jYXRlZC1tZXNzYWdlLXNlZS1tb3JlIiBjbGFzcz0idGV4dC1jb2xvci1saW5rIGZvbnQtYm9sZCIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMGE2NmMyOyI-IHNlZSBtb3JlIDwvc3Bhbj4gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0ibmV0d29yay1wb3N0LXNvY2lhbC1tZXRhZGF0YSI-IDx0ZCBjbGFzcz0icHQtMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXRvcDogMTZweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSJhdXRvIiBjbGFzcz0idy1hdXRvIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHdpZHRoOiBhdXRvOyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InByLTAuNSIgZGF0YS10ZXN0LXJlYWN0aW9uPSJMSUtFIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctcmlnaHQ6IDRweDsiPiA8aW1nIGNsYXNzPSJibG9jayB3LTIgaC0yIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oLzkxdGRzY24waDFhYW9lZnVpOWNyZjExajYiIGFsdD0iTElLRSIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMTZweDsgd2lkdGg6IDE2cHg7IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPiA8L3RkPiA8dGQgY2xhc3M9InByLTAuNSIgZGF0YS10ZXN0LXJlYWN0aW9uPSJQUkFJU0UiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1yaWdodDogNHB4OyI-IDxpbWcgY2xhc3M9ImJsb2NrIHctMiBoLTIiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL3NjL2gvYWRpZzV1cnF4aTAzcXp1eTZpeWpmbTFiNSIgYWx0PSJQUkFJU0UiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iQVBQUkVDSUFUSU9OIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctcmlnaHQ6IDRweDsiPiA8aW1nIGNsYXNzPSJibG9jayB3LTIgaC0yIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oL2J1ZDhsM2JobTBhanB5Y2R3anZhaGEybDEiIGFsdD0iQVBQUkVDSUFUSU9OIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI-IDwvdGQ-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLXJlZ3VsYXIgZm9udC1ub3JtYWwgdGV4dC1zeXN0ZW0tZ3JheS03MCIgZGF0YS10ZXN0LWlkPSJyZWFjdGlvbnMtY291bnQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNTsgY29sb3I6ICM2NjY2NjY7Ij4gNzggPC90ZD4gPHRkIGNsYXNzPSJweC0wLjUiIGRhdGEtdGVzdC1pZD0ic2VwYXJhdG9yIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctbGVmdDogNHB4OyBwYWRkaW5nLXJpZ2h0OiA0cHg7Ij7CtzwvdGQ-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLXJlZ3VsYXIgZm9udC1ub3JtYWwgdGV4dC1zeXN0ZW0tZ3JheS03MCIgZGF0YS10ZXN0LWlkPSJjb21tZW50cy1jb3VudCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzY2NjY2NjsiPiA1NyBDb21tZW50cyA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8dHIgZGF0YS10ZXN0LWlkPSJyZWFkLW1vcmUtY3RhLWJsb2NrIj4gPHRkIGNsYXNzPSJwdC0zIiBjb2xzcGFuPSIyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctdG9wOiAyNHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzPSJlbWFpbC1idXR0b24gdy1mdWxsIGtvc2hpbl9fYnV0dG9uLXdpdGgtZnVsbC13aWR0aCIgZGF0YS10ZXN0LWlkPSJlbWFpbC1idXR0b24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgd2lkdGg6IDEwMCU7Ij4gPHRib2R5PiA8dHI-IDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249Im1pZGRsZSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjYzNTM1MDIyNTkzMjIwNjA4P29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhLTAtcmVhZH5tb3JlLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGFyaWEtbGFiZWw9IlJlYWQgbW9yZSIgY2xhc3M9ImFsaWduLXRvcCBuby11bmRlcmxpbmUgIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iYm9yZGVyLXNlcGFyYXRlICIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImJ0bi1tZCBidG4tc2Vjb25kYXJ5LWVtcGhhc2lzIGJvcmRlci1jb2xvci1icmFuZCBidXR0b24tbGluayBsZWFkaW5nLXJlZ3VsYXIgIW1pbi1oLVthdXRvXSAhc2hhZG93LW5vbmUgYm9yZGVyLTEgYm9yZGVyLXNvbGlkIiBkYXRhLXRlc3QtaWQ9InJlYWQtbW9yZS1jdGEtYmVsb3ciIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgaGVpZ2h0OiBtaW4tY29udGVudDsgYm9yZGVyLXJhZGl1czogMjRweDsgcGFkZGluZy10b3A6IDEycHg7IHBhZGRpbmctYm90dG9tOiAxMnB4OyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNjAwOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOyBjb2xvcjogIzBhNjZjMjsgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogIzBhNjZjMjsgbGluZS1oZWlnaHQ6IDEuMjU7IG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgYm94LXNoYWRvdzogMCAwICMwMDAwLCAwIDAgIzAwMDAsIDAgMCAjMDAwMCAhaW1wb3J0YW50OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjYzNTM1MDIyNTkzMjIwNjA4P29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhLTAtcmVhZH5tb3JlLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIHRhYmluZGV4PSItMSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJuby11bmRlcmxpbmUiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgdGV4dC1jb2xvci1icmFuZCIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiBSZWFkIG1vcmUgPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icC0zIGJvcmRlci0wIGJvcmRlci1iLTEgYm9yZGVyLXNvbGlkIGJvcmRlci1zeXN0ZW0tZ3JheS0zMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItd2lkdGg6IDA7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiAjZTZlNmU2OyBwYWRkaW5nOiAyNHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0MzM4MDczMzkwMzUwMzM2P29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0LTAtd3JhcHBlcn5saW5rJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdC0wLXdyYXBwZXJ-bGluay1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idy1mdWxsIiBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1saW5rIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHdpZHRoOiAxMDAlOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC91cGRhdGUvdXJuOmxpOmFjdGl2aXR5OjcyNjQzMzgwNzMzOTAzNTAzMzY_aGlnaGxpZ2h0ZWRVcGRhdGVVcm49dXJuJTNBbGklM0FhY3Rpdml0eSUzQTcyNjQzMzgwNzMzOTAzNTAzMzYmYW1wO3Nob3dDb21tZW50Qm94PXRydWUmYW1wO29yaWdpbj1ORVRXT1JLX0NPTlZFUlNBVElPTlMmYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtYWN0b3JfY2FyZCZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1hY3Rvcl9jYXJkLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJibG9jayIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtbGluayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgZGlzcGxheTogYmxvY2s7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyIGRhdGEtdGVzdC1pZD0idjJzdHlsZS1kaXNhYmxlIj4gPHRkIGNsYXNzPSJ3LVs3MnB4XSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3aWR0aDogNzJweDsiIHdpZHRoPSI3MiI-IDxpbWcgY2xhc3M9ImlubGluZS1ibG9jayByZWxhdGl2ZSBiZy1jb2xvci1lbnRpdHktZ2hvc3QtYmFja2dyb3VuZCBjbGlwLXBhdGgtY2lyY2xlLTUwIHJvdW5kZWQtZnVsbCB3LTYgaC02ICF3LVs3MnB4XSAhaC1bNzJweF0gIWJsb2NrIiBzcmM9Imh0dHBzOi8vbWVkaWEubGljZG4uY29tL2Rtcy9pbWFnZS92Mi9ENTYwM0FRR3Vlc0tGMi0wVmhBL3Byb2ZpbGUtZGlzcGxheXBob3RvLXNocmlua180MDBfNDAwL3Byb2ZpbGUtZGlzcGxheXBob3RvLXNocmlua180MDBfNDAwLzAvMTY3OTQ5NjkzMDIyMj9lPTIxNDc0ODM2NDcmYW1wO3Y9YmV0YSZhbXA7dD1kQkI4ZEpma2NpNGJNWFNxRkM5OFVCQTA5WjFuYkM3M0NjRWt4RnpnWUhZIiBhbHQ9IkFsaXNoYSBTYW50aWFnbyIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXItcmFkaXVzOiA5OTk5cHg7IGJhY2tncm91bmQtY29sb3I6ICNlYWU2ZGY7IGNsaXAtcGF0aDogY2lyY2xlKDUwJSk7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IGhlaWdodDogNzJweCAhaW1wb3J0YW50OyB3aWR0aDogNzJweCAhaW1wb3J0YW50OyIgd2lkdGg9IjcyIiBoZWlnaHQ9IjcyIj4gPC90ZD4gPHRkIGNsYXNzPSJwbC0xIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctbGVmdDogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJmb250LWJvbGQgdGV4dC1tZCBsZWFkaW5nLXJlZ3VsYXIgdGV4dC1zeXN0ZW0tZ3JheS05MCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzI4MjgyODsiPiBBbGlzaGEgU2FudGlhZ28gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0iYWN0b3ItY2FyZC1oZWFkbGluZSI-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLVsxNnB4XSB0ZXh0LWNvbG9yLXRleHQtc29saWQtc2Vjb25kYXJ5IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE2cHg7IGNvbG9yOiAjNjY2NjY2OyI-IFNvY2lhbCBKdXN0aWNlIHwgQ3VsdHVyYWwgQXdhcmVuZXNzIHwgTGFuZ3VhZ2XigKYgPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8dGQgY2xhc3M9InBsLTEgbXQtWzIycHhdIG1yLTEgaW5saW5lLWJsb2NrIiBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1mb2xsb3ctY3RhIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IG1hcmdpbi1yaWdodDogOHB4OyBtYXJnaW4tdG9wOiAyMnB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmctbGVmdDogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzPSJlbWFpbC1idXR0b24gIiBkYXRhLXRlc3QtaWQ9ImVtYWlsLWJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9idWlsZC1yZWxhdGlvbi9wZW9wbGUtZm9sbG93Lz9lbnRpdHlOYW1lPWFsaXNoYWJzYW50aWFnbyZhbXA7ZW50aXR5VXJuPUFEb0FBRDQ5RlA4QmxwdVhhX2dENm5oYk4xVUR3Ymg1eGFzRHBXdyZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1mb2xsb3dfY3RhJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgYXJpYS1sYWJlbD0iRm9sbG93IiBjbGFzcz0iYWxpZ24tdG9wIG5vLXVuZGVybGluZSAiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgY2xhc3M9ImJvcmRlci1zZXBhcmF0ZSAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJidG4tc20gYnRuLXRlcnRpYXJ5LWVtcGhhc2lzIGJvcmRlci1ub25lIGJ1dHRvbi1saW5rIGxlYWRpbmctcmVndWxhciAhbWluLWgtW2F1dG9dICFzaGFkb3ctbm9uZSBib3JkZXItMSBib3JkZXItc29saWQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgaGVpZ2h0OiBtaW4tY29udGVudDsgYm9yZGVyLXJhZGl1czogMjRweDsgcGFkZGluZy10b3A6IDdweDsgcGFkZGluZy1ib3R0b206IDdweDsgcGFkZGluZy1sZWZ0OiAxNnB4OyBwYWRkaW5nLXJpZ2h0OiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgY29sb3I6ICMwYTY2YzI7IGJvcmRlci13aWR0aDogMXB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGxpbmUtaGVpZ2h0OiAxLjI1OyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IDAgMCAjMDAwMCwgMCAwICMwMDAwLCAwIDAgIzAwMDAgIWltcG9ydGFudDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9idWlsZC1yZWxhdGlvbi9wZW9wbGUtZm9sbG93Lz9lbnRpdHlOYW1lPWFsaXNoYWJzYW50aWFnbyZhbXA7ZW50aXR5VXJuPUFEb0FBRDQ5RlA4QmxwdVhhX2dENm5oYk4xVUR3Ymg1eGFzRHBXdyZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1mb2xsb3dfY3RhJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9Im5vLXVuZGVybGluZSIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lICIgc3R5bGU9InRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IEZvbGxvdyA8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icHQtMiB0ZXh0LW1kIGxlYWRpbmctcmVndWxhciB0ZXh0LXN5c3RlbS1ncmF5LTkwIiBjb2xzcGFuPSIyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctdG9wOiAxNnB4OyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzI4MjgyODsiPiA8c3BhbiBkYXRhLXRlc3QtaWQ9InRydW5jYXRlZC1tZXNzYWdlLXRleHQiPiBEZXNwaXRlIHRoZSBudW1lcm91cyBqb2IgaW50ZXJ2aWV3cyBJJ3ZlIHBhcnRpY2lwYXRlZCBpbiwgSSBzdGlsbCBmaW5kIG15c2VsZiB1bmNlcnRhaW4gYWJvdXQgd2hlbiBpdCdz4oCmIDwvc3Bhbj4gPHNwYW4gZGF0YS10ZXN0LWlkPSJ0cnVuY2F0ZWQtbWVzc2FnZS1zZWUtbW9yZSIgY2xhc3M9InRleHQtY29sb3ItbGluayBmb250LWJvbGQiIHN0eWxlPSJmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzBhNjZjMjsiPiBzZWUgbW9yZSA8L3NwYW4-IDwvdGQ-IDwvdHI-IDx0ciBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1zb2NpYWwtbWV0YWRhdGEiPiA8dGQgY2xhc3M9InB0LTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgY2xhc3M9InctYXV0byIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3aWR0aDogYXV0bzsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iTElLRSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXJpZ2h0OiA0cHg7Ij4gPGltZyBjbGFzcz0iYmxvY2sgdy0yIGgtMiIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vc2MvaC85MXRkc2NuMGgxYWFvZWZ1aTljcmYxMWo2IiBhbHQ9IkxJS0UiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iUFJBSVNFIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctcmlnaHQ6IDRweDsiPiA8aW1nIGNsYXNzPSJibG9jayB3LTIgaC0yIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oL2FkaWc1dXJxeGkwM3F6dXk2aXlqZm0xYjUiIGFsdD0iUFJBSVNFIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI-IDwvdGQ-IDx0ZCBjbGFzcz0icHItMC41IiBkYXRhLXRlc3QtcmVhY3Rpb249IkVNUEFUSFkiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1yaWdodDogNHB4OyI-IDxpbWcgY2xhc3M9ImJsb2NrIHctMiBoLTIiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL3NjL2gvZXZzMng1emZuejVnMHhyYzZ1MjJ0cmVxMiIgYWx0PSJFTVBBVEhZIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI-IDwvdGQ-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLXJlZ3VsYXIgZm9udC1ub3JtYWwgdGV4dC1zeXN0ZW0tZ3JheS03MCIgZGF0YS10ZXN0LWlkPSJyZWFjdGlvbnMtY291bnQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNTsgY29sb3I6ICM2NjY2NjY7Ij4gMTQ1IDwvdGQ-IDx0ZCBjbGFzcz0icHgtMC41IiBkYXRhLXRlc3QtaWQ9InNlcGFyYXRvciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDRweDsgcGFkZGluZy1yaWdodDogNHB4OyI-wrc8L3RkPiA8dGQgY2xhc3M9InRleHQtc20gbGVhZGluZy1yZWd1bGFyIGZvbnQtbm9ybWFsIHRleHQtc3lzdGVtLWdyYXktNzAiIGRhdGEtdGVzdC1pZD0iY29tbWVudHMtY291bnQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNTsgY29sb3I6ICM2NjY2NjY7Ij4gODcgQ29tbWVudHMgPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0icmVhZC1tb3JlLWN0YS1ibG9jayI-IDx0ZCBjbGFzcz0icHQtMyIgY29sc3Bhbj0iMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXRvcDogMjRweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iZW1haWwtYnV0dG9uIHctZnVsbCBrb3NoaW5fX2J1dHRvbi13aXRoLWZ1bGwtd2lkdGgiIGRhdGEtdGVzdC1pZD0iZW1haWwtYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHdpZHRoOiAxMDAlOyI-IDx0Ym9keT4gPHRyPiA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2NDMzODA3MzM5MDM1MDMzNj9vcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGEtMC1yZWFkfm1vcmUmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBhcmlhLWxhYmVsPSJSZWFkIG1vcmUiIGNsYXNzPSJhbGlnbi10b3Agbm8tdW5kZXJsaW5lICIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgY2xhc3M9ImJvcmRlci1zZXBhcmF0ZSAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJidG4tbWQgYnRuLXNlY29uZGFyeS1lbXBoYXNpcyBib3JkZXItY29sb3ItYnJhbmQgYnV0dG9uLWxpbmsgbGVhZGluZy1yZWd1bGFyICFtaW4taC1bYXV0b10gIXNoYWRvdy1ub25lIGJvcmRlci0xIGJvcmRlci1zb2xpZCIgZGF0YS10ZXN0LWlkPSJyZWFkLW1vcmUtY3RhLWJlbG93IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGhlaWdodDogbWluLWNvbnRlbnQ7IGJvcmRlci1yYWRpdXM6IDI0cHg7IHBhZGRpbmctdG9wOiAxMnB4OyBwYWRkaW5nLWJvdHRvbTogMTJweDsgcGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgY29sb3I6ICMwYTY2YzI7IGJvcmRlci13aWR0aDogMXB4OyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICMwYTY2YzI7IGxpbmUtaGVpZ2h0OiAxLjI1OyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IDAgMCAjMDAwMCwgMCAwICMwMDAwLCAwIDAgIzAwMDAgIWltcG9ydGFudDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2NDMzODA3MzM5MDM1MDMzNj9vcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGEtMC1yZWFkfm1vcmUmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya35wb3N0fmN0YS0wLXJlYWR-bW9yZS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiB0YWJpbmRleD0iLTEiIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0ibm8tdW5kZXJsaW5lIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lIHRleHQtY29sb3ItYnJhbmQiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gUmVhZCBtb3JlIDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InAtMyBib3JkZXItMCBib3JkZXItYi0xIGJvcmRlci1zb2xpZCBib3JkZXItc3lzdGVtLWdyYXktMzAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLXdpZHRoOiAwOyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogI2U2ZTZlNjsgcGFkZGluZzogMjRweDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL3VwZGF0ZS91cm46bGk6YWN0aXZpdHk6NzI2NDMzODA3MTE1MDYyODg2NT9vcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdC0wLXdyYXBwZXJ-bGluayZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3QtMC13cmFwcGVyfmxpbmstbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InctZnVsbCIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtbGluayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB3aWR0aDogMTAwJTsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybjpsaTphY3Rpdml0eTo3MjY0MzM4MDcxMTUwNjI4ODY1P2hpZ2hsaWdodGVkVXBkYXRlVXJuPXVybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY0MzM4MDcxMTUwNjI4ODY1JmFtcDtzaG93Q29tbWVudEJveD10cnVlJmFtcDtvcmlnaW49TkVUV09SS19DT05WRVJTQVRJT05TJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWFjdG9yX2NhcmQmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtYWN0b3JfY2FyZC1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYmxvY2siIGRhdGEtdGVzdC1pZD0ibmV0d29yay1wb3N0LWxpbmsiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGRpc3BsYXk6IGJsb2NrOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0ciBkYXRhLXRlc3QtaWQ9InYyc3R5bGUtZGlzYWJsZSI-IDx0ZCBjbGFzcz0idy1bNzJweF0iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgd2lkdGg6IDcycHg7IiB3aWR0aD0iNzIiPiA8aW1nIGNsYXNzPSJpbmxpbmUtYmxvY2sgcmVsYXRpdmUgYmctY29sb3ItZW50aXR5LWdob3N0LWJhY2tncm91bmQgY2xpcC1wYXRoLWNpcmNsZS01MCByb3VuZGVkLWZ1bGwgdy02IGgtNiAhdy1bNzJweF0gIWgtWzcycHhdICFibG9jayIgc3JjPSJodHRwczovL21lZGlhLmxpY2RuLmNvbS9kbXMvaW1hZ2UvdjIvQzREMDNBUUVPYkFZYkJkWnZvQS9wcm9maWxlLWRpc3BsYXlwaG90by1zaHJpbmtfNDAwXzQwMC9wcm9maWxlLWRpc3BsYXlwaG90by1zaHJpbmtfNDAwXzQwMC8wLzE1OTA3ODUyMTIwODI_ZT0yMTQ3NDgzNjQ3JmFtcDt2PWJldGEmYW1wO3Q9VXF4ekdQUlZSSS1xVEpSSnFFQ25Hb29rXy1JU2RidEFvYnh1ZVRuMzYzSSIgYWx0PSJBdXN0aW4gQmVsY2FrIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlci1yYWRpdXM6IDk5OTlweDsgYmFja2dyb3VuZC1jb2xvcjogI2VhZTZkZjsgY2xpcC1wYXRoOiBjaXJjbGUoNTAlKTsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgaGVpZ2h0OiA3MnB4ICFpbXBvcnRhbnQ7IHdpZHRoOiA3MnB4ICFpbXBvcnRhbnQ7IiB3aWR0aD0iNzIiIGhlaWdodD0iNzIiPiA8L3RkPiA8dGQgY2xhc3M9InBsLTEiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1sZWZ0OiA4cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImZvbnQtYm9sZCB0ZXh0LW1kIGxlYWRpbmctcmVndWxhciB0ZXh0LXN5c3RlbS1ncmF5LTkwIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgbGluZS1oZWlnaHQ6IDEuMjU7IGNvbG9yOiAjMjgyODI4OyI-IEF1c3RpbiBCZWxjYWsgPC90ZD4gPC90cj4gPHRyIGRhdGEtdGVzdC1pZD0iYWN0b3ItY2FyZC1oZWFkbGluZSI-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLVsxNnB4XSB0ZXh0LWNvbG9yLXRleHQtc29saWQtc2Vjb25kYXJ5IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE2cHg7IGNvbG9yOiAjNjY2NjY2OyI-IEkgVGVhY2ggUGVvcGxlIEhvdyBUbyBMYW5kIEFtYXppbmcgSm9icyBXaXRob3V04oCmIDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvYT4gPC90ZD4gPHRkIGNsYXNzPSJwbC0xIG10LVsyMnB4XSBtci0xIGlubGluZS1ibG9jayIgZGF0YS10ZXN0LWlkPSJuZXR3b3JrLXBvc3QtZm9sbG93LWN0YSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW4tcmlnaHQ6IDhweDsgbWFyZ2luLXRvcDogMjJweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nLWxlZnQ6IDhweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iZW1haWwtYnV0dG9uICIgZGF0YS10ZXN0LWlkPSJlbWFpbC1idXR0b24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vYnVpbGQtcmVsYXRpb24vcGVvcGxlLWZvbGxvdy8_ZW50aXR5TmFtZT1hYmVsY2FrJmFtcDtlbnRpdHlVcm49QURvQUFBY241OElCc05SWDU4WEtOLUVDdngyVTZqZDluUWdZRmpZJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtbmV0d29ya19wb3N0LTAtZm9sbG93X2N0YS1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBhcmlhLWxhYmVsPSJGb2xsb3ciIGNsYXNzPSJhbGlnbi10b3Agbm8tdW5kZXJsaW5lICIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSJhdXRvIiBjbGFzcz0iYm9yZGVyLXNlcGFyYXRlICIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImJ0bi1zbSBidG4tdGVydGlhcnktZW1waGFzaXMgYm9yZGVyLW5vbmUgYnV0dG9uLWxpbmsgbGVhZGluZy1yZWd1bGFyICFtaW4taC1bYXV0b10gIXNoYWRvdy1ub25lIGJvcmRlci0xIGJvcmRlci1zb2xpZCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBoZWlnaHQ6IG1pbi1jb250ZW50OyBib3JkZXItcmFkaXVzOiAyNHB4OyBwYWRkaW5nLXRvcDogN3B4OyBwYWRkaW5nLWJvdHRvbTogN3B4OyBwYWRkaW5nLWxlZnQ6IDE2cHg7IHBhZGRpbmctcmlnaHQ6IDE2cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOyBjb2xvcjogIzBhNjZjMjsgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogbm9uZTsgbGluZS1oZWlnaHQ6IDEuMjU7IG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgYm94LXNoYWRvdzogMCAwICMwMDAwLCAwIDAgIzAwMDAsIDAgMCAjMDAwMCAhaW1wb3J0YW50OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2J1aWxkLXJlbGF0aW9uL3Blb3BsZS1mb2xsb3cvP2VudGl0eU5hbWU9YWJlbGNhayZhbXA7ZW50aXR5VXJuPUFEb0FBQWNuNThJQnNOUlg1OFhLTi1FQ3Z4MlU2amQ5blFnWUZqWSZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrX3Bvc3QtMC1mb2xsb3dfY3RhJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmtfcG9zdC0wLWZvbGxvd19jdGEtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9Im5vLXVuZGVybGluZSIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lICIgc3R5bGU9InRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IEZvbGxvdyA8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icHQtMiB0ZXh0LW1kIGxlYWRpbmctcmVndWxhciB0ZXh0LXN5c3RlbS1ncmF5LTkwIiBjb2xzcGFuPSIyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctdG9wOiAxNnB4OyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxLjI1OyBjb2xvcjogIzI4MjgyODsiPiA8c3BhbiBkYXRhLXRlc3QtaWQ9InRydW5jYXRlZC1tZXNzYWdlLXRleHQiPiBJIHNoYXJlZCBhIHBvc3QgYWJvdXQgd2h5IHlvdSBwdXJzdWUgam9icyBldmVuIGlmIHlvdSBkb27igJl0IG1lZXQgMTAwJSBvZiB0aGUgcXVhbGlmaWNhdGlvbnMuIE1hbnkgcGVvcGxl4oCmIDwvc3Bhbj4gPHNwYW4gZGF0YS10ZXN0LWlkPSJ0cnVuY2F0ZWQtbWVzc2FnZS1zZWUtbW9yZSIgY2xhc3M9InRleHQtY29sb3ItbGluayBmb250LWJvbGQiIHN0eWxlPSJmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzBhNjZjMjsiPiBzZWUgbW9yZSA8L3NwYW4-IDwvdGQ-IDwvdHI-IDx0ciBkYXRhLXRlc3QtaWQ9Im5ldHdvcmstcG9zdC1zb2NpYWwtbWV0YWRhdGEiPiA8dGQgY2xhc3M9InB0LTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgY2xhc3M9InctYXV0byIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3aWR0aDogYXV0bzsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iTElLRSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLXJpZ2h0OiA0cHg7Ij4gPGltZyBjbGFzcz0iYmxvY2sgdy0yIGgtMiIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vc2MvaC85MXRkc2NuMGgxYWFvZWZ1aTljcmYxMWo2IiBhbHQ9IkxJS0UiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDE2cHg7IHdpZHRoOiAxNnB4OyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4gPC90ZD4gPHRkIGNsYXNzPSJwci0wLjUiIGRhdGEtdGVzdC1yZWFjdGlvbj0iUFJBSVNFIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctcmlnaHQ6IDRweDsiPiA8aW1nIGNsYXNzPSJibG9jayB3LTIgaC0yIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oL2FkaWc1dXJxeGkwM3F6dXk2aXlqZm0xYjUiIGFsdD0iUFJBSVNFIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI-IDwvdGQ-IDx0ZCBjbGFzcz0icHItMC41IiBkYXRhLXRlc3QtcmVhY3Rpb249IkVNUEFUSFkiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1yaWdodDogNHB4OyI-IDxpbWcgY2xhc3M9ImJsb2NrIHctMiBoLTIiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL3NjL2gvZXZzMng1emZuejVnMHhyYzZ1MjJ0cmVxMiIgYWx0PSJFTVBBVEhZIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI-IDwvdGQ-IDx0ZCBjbGFzcz0idGV4dC1zbSBsZWFkaW5nLXJlZ3VsYXIgZm9udC1ub3JtYWwgdGV4dC1zeXN0ZW0tZ3JheS03MCIgZGF0YS10ZXN0LWlkPSJyZWFjdGlvbnMtY291bnQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNTsgY29sb3I6ICM2NjY2NjY7Ij4gNTI2IDwvdGQ-IDx0ZCBjbGFzcz0icHgtMC41IiBkYXRhLXRlc3QtaWQ9InNlcGFyYXRvciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDRweDsgcGFkZGluZy1yaWdodDogNHB4OyI-wrc8L3RkPiA8dGQgY2xhc3M9InRleHQtc20gbGVhZGluZy1yZWd1bGFyIGZvbnQtbm9ybWFsIHRleHQtc3lzdGVtLWdyYXktNzAiIGRhdGEtdGVzdC1pZD0iY29tbWVudHMtY291bnQiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNTsgY29sb3I6ICM2NjY2NjY7Ij4gMTE4IENvbW1lbnRzIDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0ciBkYXRhLXRlc3QtaWQ9InJlYWQtbW9yZS1jdGEtYmxvY2siPiA8dGQgY2xhc3M9InB0LTMiIGNvbHNwYW49IjIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDI0cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgY2xhc3M9ImVtYWlsLWJ1dHRvbiB3LWZ1bGwga29zaGluX19idXR0b24td2l0aC1mdWxsLXdpZHRoIiBkYXRhLXRlc3QtaWQ9ImVtYWlsLWJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB3aWR0aDogMTAwJTsiPiA8dGJvZHk-IDx0cj4gPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC91cGRhdGUvdXJuOmxpOmFjdGl2aXR5OjcyNjQzMzgwNzExNTA2Mjg4NjU_b3JpZ2luPU5FVFdPUktfQ09OVkVSU0FUSU9OUyZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhLTAtcmVhZH5tb3JlJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGEtMC1yZWFkfm1vcmUtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgYXJpYS1sYWJlbD0iUmVhZCBtb3JlIiBjbGFzcz0iYWxpZ24tdG9wIG5vLXVuZGVybGluZSAiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzPSJib3JkZXItc2VwYXJhdGUgIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0iYnRuLW1kIGJ0bi1zZWNvbmRhcnktZW1waGFzaXMgYm9yZGVyLWNvbG9yLWJyYW5kIGJ1dHRvbi1saW5rIGxlYWRpbmctcmVndWxhciAhbWluLWgtW2F1dG9dICFzaGFkb3ctbm9uZSBib3JkZXItMSBib3JkZXItc29saWQiIGRhdGEtdGVzdC1pZD0icmVhZC1tb3JlLWN0YS1iZWxvdyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBoZWlnaHQ6IG1pbi1jb250ZW50OyBib3JkZXItcmFkaXVzOiAyNHB4OyBwYWRkaW5nLXRvcDogMTJweDsgcGFkZGluZy1ib3R0b206IDEycHg7IHBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7IGNvbG9yOiAjMGE2NmMyOyBib3JkZXItd2lkdGg6IDFweDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiAjMGE2NmMyOyBsaW5lLWhlaWdodDogMS4yNTsgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OyBib3gtc2hhZG93OiAwIDAgIzAwMDAsIDAgMCAjMDAwMCwgMCAwICMwMDAwICFpbXBvcnRhbnQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC91cGRhdGUvdXJuOmxpOmFjdGl2aXR5OjcyNjQzMzgwNzExNTA2Mjg4NjU_b3JpZ2luPU5FVFdPUktfQ09OVkVSU0FUSU9OUyZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1uZXR3b3JrfnBvc3R-Y3RhLTAtcmVhZH5tb3JlJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLW5ldHdvcmt-cG9zdH5jdGEtMC1yZWFkfm1vcmUtbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9Im5vLXVuZGVybGluZSIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Ij4gPHNwYW4gY2xhc3M9Im5vLXVuZGVybGluZSB0ZXh0LWNvbG9yLWJyYW5kIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IFJlYWQgbW9yZSA8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwdC00IHBiLTIgcHgtMyBiZy1jb2xvci1iYWNrZ3JvdW5kLWNhbnZhcyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMmYwOyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IHBhZGRpbmctYm90dG9tOiAxNnB4OyBwYWRkaW5nLXRvcDogMzJweDsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iZW1haWwtYnV0dG9uICIgZGF0YS10ZXN0LWlkPSJlbWFpbC1idXR0b24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC8_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDElM0JsaURBSWtKSFN0cUtua2kwOGNJaG5RJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTBGRXJaN0xYdzREYncxJmFtcDt0cms9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1mb290ZXJfcHJvbW8tMC1mb290ZXJfc2VlX2FsbCZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS1mb290ZXJfcHJvbW8tMC1mb290ZXJfc2VlX2FsbC1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBhcmlhLWxhYmVsPSJTZWUgbW9yZSBvbiBMaW5rZWRJbiIgY2xhc3M9ImFsaWduLXRvcCBuby11bmRlcmxpbmUgIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9ImF1dG8iIGNsYXNzPSJib3JkZXItc2VwYXJhdGUgIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0iYnRuLW1kIGJ0bi1wcmltYXJ5IGJvcmRlci1jb2xvci1icmFuZCBidXR0b24tbGluayBsZWFkaW5nLXJlZ3VsYXIgIW1pbi1oLVthdXRvXSAhc2hhZG93LW5vbmUgYm9yZGVyLTEgYm9yZGVyLXNvbGlkIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGhlaWdodDogbWluLWNvbnRlbnQ7IGJvcmRlci1yYWRpdXM6IDI0cHg7IHBhZGRpbmctdG9wOiAxMnB4OyBwYWRkaW5nLWJvdHRvbTogMTJweDsgcGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzBhNjZjMjsgY29sb3I6ICNmZmZmZmY7IGJvcmRlci13aWR0aDogMXB4OyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICMwYTY2YzI7IGxpbmUtaGVpZ2h0OiAxLjI1OyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IDAgMCAjMDAwMCwgMCAwICMwMDAwLCAwIDAgIzAwMDAgIWltcG9ydGFudDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkLz9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWZvb3Rlcl9wcm9tby0wLWZvb3Rlcl9zZWVfYWxsJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWZvb3Rlcl9wcm9tby0wLWZvb3Rlcl9zZWVfYWxsLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIHRhYmluZGV4PSItMSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJuby11bmRlcmxpbmUiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gPHNwYW4gY2xhc3M9Im5vLXVuZGVybGluZSB0ZXh0LXdoaXRlIiBzdHlsZT0iY29sb3I6ICNmZmZmZmY7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IFNlZSBtb3JlIG9uIExpbmtlZEluIDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0iYmctY29sb3ItYmFja2dyb3VuZC1jYW52YXMgcC0zIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJhY2tncm91bmQtY29sb3I6ICNmM2YyZjA7IHBhZGRpbmc6IDI0cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIHBiLTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1ib3R0b206IDE2cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPiA8aDIgY2xhc3M9InRleHQtbGcgdGV4dC10ZWFsLTgwIiBzdHlsZT0ibWFyZ2luOiAwOyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDIwcHg7IGNvbG9yOiAjMTE0OTUxOyI-IEdldCB0aGUgbmV3IExpbmtlZEluIGRlc2t0b3AgYXBwIDwvaDI-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciBwYi0yIiBkYXRhLXRlc3QtaWQ9ImZvb3Rlci1hcHAtc3RvcmUtaWNvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyI-IDxhIGhyZWY9Imh0dHBzOi8vYXBwcy5taWNyb3NvZnQuY29tL3N0b3JlL2RldGFpbC85V1pETkNSRko0UTc_bGF1bmNoPXRydWUmYW1wO2NpZD1saW5rZWRpbl9lbWFpbF91cHNlbGwmYW1wO21vZGU9ZnVsbCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgYWx0PSJHZXQgaXQgZnJvbSBNaWNyb3NvZnQiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL3NjL2gvZWpwa2twd3Zxa3MzMWEzY2pxb2tiN2ZibSIgY2xhc3M9ImgtWzQwcHhdIHctWzExMnB4XSIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgaGVpZ2h0OiA0MHB4OyB3aWR0aDogMTEycHg7IiB3aWR0aD0iMTEyIiBoZWlnaHQ9IjQwIj4gPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0idGV4dC1jZW50ZXIgcGItMiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyI-IDxoMiBjbGFzcz0idGV4dC1tZCB0ZXh0LXRlYWwtODAiIHN0eWxlPSJtYXJnaW46IDA7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc2l6ZTogMTZweDsgY29sb3I6ICMxMTQ5NTE7Ij4gQWxzbyBhdmFpbGFibGUgb24gbW9iaWxlIDwvaDI-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciIgZGF0YS10ZXN0LWlkPSJmb290ZXItYXBwLXN0b3JlLWljb24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgdGV4dC1hbGlnbjogY2VudGVyOyI-IDxhIGhyZWY9Imh0dHBzOi8vaXR1bmVzLmFwcGxlLmNvbS91cy9hcHAvbGlua2VkaW4vaWQyODg0MjkwNDA_cHQ9MTA3NDYmYW1wO2N0PXN0X2FwcHNpdGVfZmxhZ3NoaXAmYW1wO210PTgiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsiPiA8aW1nIGFsdD0iRG93bmxvYWQgb24gdGhlIEFwcCBTdG9yZSIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vc2MvaC83Nnl6a2QwaDVraXYyN2xyZDR5YWVueWxrIiBjbGFzcz0iaC1bNDBweF0gdy1bMTIwcHhdIHByLTEiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGhlaWdodDogNDBweDsgd2lkdGg6IDEyMHB4OyBwYWRkaW5nLXJpZ2h0OiA4cHg7IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjQwIj4gPC9hPiA8YSBocmVmPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM_aWQ9Y29tLmxpbmtlZGluLmFuZHJvaWQmYW1wO3JlZmVycmVyPXN0X2FwcHNpdGVfZmxhZ3NoaXAiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsiPiA8aW1nIGFsdD0iR2V0IGl0IG9uIEdvb2dsZSBQbGF5IiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9zYy9oLzE0MnF1ZHdibHA1OHp3bWM5dmtxZnBsdWciIGNsYXNzPSJoLVs0MHB4XSB3LVsxMzRweF0iIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGhlaWdodDogNDBweDsgd2lkdGg6IDEzNHB4OyIgd2lkdGg9IjEzNCIgaGVpZ2h0PSI0MCI-IDwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InB5LTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7IHBhZGRpbmctYm90dG9tOiAxNnB4OyI-PGhyIGNsYXNzPSJib3JkZXItbm9uZSBiZy1bI2UwZGZkZF0gaC1bMXB4XSIgc3R5bGU9ImhlaWdodDogMXB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNlMGRmZGQ7Ij48L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0idGV4dC14cyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDEycHg7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0icGItMSBtLTAiIGRhdGEtdGVzdC1pZD0iZW1haWwtZm9vdGVyX19pbnRlbmRlZCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiBUaGlzIGVtYWlsIHdhcyBpbnRlbmRlZCBmb3IgS2h1c2hhbCBQUyAoLS0pIDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwYi0xIG0tMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaGVscC9saW5rZWRpbi9hbnN3ZXIvNDc4OD9sYW5nPWVuJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLVNlY3VyaXR5SGVscC0wLWZvb3RlcmdsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtU2VjdXJpdHlIZWxwLTAtZm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3g0M2Nzdn4yYy1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NDNjc3YtMmMmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1NNFpEZzBNems1WVdVNE56WmtOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5ETmtZV1l3WkRjME5qaGlaams0TUdaall6QTJNakEyWVRsak5ESXdPREU1WldKak5UVmhaV0l5T1dSaVpEa3dMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGV4dC1pbmhlcml0IHVuZGVybGluZSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGNvbG9yOiBpbmhlcml0OyB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lOyI-TGVhcm4gd2h5IHdlIGluY2x1ZGVkIHRoaXMuPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMSBtLTAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctYm90dG9tOiA4cHg7Ij5Zb3UgYXJlIHJlY2VpdmluZyBOZXR3b3JrIENvbnZlcnNhdGlvbnMgZW1haWxzLiBTb21lIGNvbnRlbnQgbWF5IGJlIGF1dG9tYXRpY2FsbHkgdHJhbnNsYXRlZCBiYXNlZCBvbiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vbXlwcmVmZXJlbmNlcy9kL2xhbmd1YWdlLWZvci10cmFuc2xhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsaW5rLW5vLXZpc2l0ZWQtc3RhdGUiIGRhdGEtdHJhY2tpbmctd2lsbC1uYXZpZ2F0ZSBkYXRhLXRyYWNraW5nLWNvbnRyb2wtbmFtZT0iZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zX2NvbnRlbnRfc2V0dGluZ3NfbGluayIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMGE2NmMyOyI-eW91ciBzZXR0aW5nczwvYT4uPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InBiLTEgbS0wIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWJvdHRvbTogOHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL3BzZXR0aW5ncy9lbWFpbC11bnN1YnNjcmliZT9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLXVuc3Vic2NyaWJlLTAtZm9vdGVyR2xpbW1lciZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMS11bnN1YnNjcmliZS0wLWZvb3RlckdsaW1tZXItbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtsb2lkPUFRR1NlMFF6V1F4MjZBQUFBWk5qMW5mY3RCalBkV2V6a2lud05HMFVkN3ZZd3NuYWxoMFVzTWFZWWFRM2wzNmZUcnJqOXNjVko5emJjRzgtdENqalhhWEFDQkZEbWpjZ0pCVEZheHNRMFR4MDdpLU5FLVh5LU55V2JnIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRleHQtaW5oZXJpdCB1bmRlcmxpbmUiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTsiPlVuc3Vic2NyaWJlPC9hPiDCoMKgwrfCoMKgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9oZWxwL2xpbmtlZGluL2Fuc3dlci82Nz9sYW5nPWVuJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25ldHdvcmtfY29udmVyc2F0aW9uc18wMSUzQmxpREFJa0pIU3RxS25raTA4Y0loblElM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MEZFclo3TFh3NERidzEmYW1wO3Ryaz1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWhlbHAtMC1mb290ZXJnbGltbWVyJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxLWhlbHAtMC1mb290ZXJnbGltbWVyLW51bGwtajd6dTdpfm0zeDQzY3N2fjJjLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0M2Nzdi0yYyZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU00WkRnME16azVZV1U0Tnpaa04ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkROa1lXWXdaRGMwTmpoaVpqazRNR1pqWXpBMk1qQTJZVGxqTkRJd09ERTVaV0pqTlRWaFpXSXlPV1JpWkRrd0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJ0ZXh0LWluaGVyaXQgdW5kZXJsaW5lIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7Ij5IZWxwPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogOHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvP2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbmV0d29ya19jb252ZXJzYXRpb25zXzAxJTNCbGlEQUlrSkhTdHFLbmtpMDhjSWhuUSUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0wRkVyWjdMWHc0RGJ3MSZhbXA7dHJrPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtZm9vdGVyLTAtbG9nb0dsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9uZXR3b3JrX2NvbnZlcnNhdGlvbnNfMDEtZm9vdGVyLTAtbG9nb0dsaW1tZXItbnVsbC1qN3p1N2l-bTN4NDNjc3Z-MmMtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDQzY3N2LTJjJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTTRaRGcwTXprNVlXVTROelprTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVORE5rWVdZd1pEYzBOamhpWmprNE1HWmpZekEyTWpBMllUbGpOREl3T0RFNVpXSmpOVFZoWldJeU9XUmlaRGt3TERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vc2MvaC85ZWhlNm4zOWZhMDdkYzVlZHp2MHJsYTRlIiBhbHQ9IkxpbmtlZEluIiBjbGFzcz0iYmxvY2sgaC1bMTRweF0gdy1bNTZweF0gaW1hZ2UtcmVuZGVyaW5nLWNyaXNwIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7IGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7IGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDsgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlczsgLW1zLWludGVycG9sYXRpb24tbW9kZTogbmVhcmVzdC1uZWlnaGJvcjsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMTRweDsgd2lkdGg6IDU2cHg7IiB3aWR0aD0iNTYiIGhlaWdodD0iMTQiPiA8L2E-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGRhdGEtdGVzdC1jb3B5cmlnaHQtdGV4dCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gwqkgMjAyNCBMaW5rZWRJbiBDb3Jwb3JhdGlvbiwgMSZ6d25qOzAwMCBXZXN0IE1hdWRlIEF2ZW51ZSwgU3Vubnl2YWxlLCBDQSA5NDA4NS4gPHNwYW4gZGF0YS10ZXN0LXRyYWRlbWFya3MtdGV4dD4gTGlua2VkSW4gYW5kIHRoZSBMaW5rZWRJbiBsb2dvIGFyZSByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgTGlua2VkSW4uIDwvc3Bhbj4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPGltZyBhbHQgcm9sZT0icHJlc2VudGF0aW9uIiBzcmM9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9lbWltcC9pcF9ZV3BrTm1SVVpIQk1WekI2WlVSUmVsa3pUakpNVkVwcU9scFhNV2hoVjNobVltMVdNR1F5T1hsaE1UbHFZakkxTWxwWVNucFpXRkp3WWpJMWVsaDZRWGc2LmdpZiIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4gPC9ib2R5PiA8L2h0bWw-" - } - } - ] - }, - "sizeEstimate": 126327, - "historyId": "527489", - "internalDate": "1732546821000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_06_19363ba8e2582133_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_06_19363ba8e2582133_20241126.json deleted file mode 100644 index 540a154..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_06_19363ba8e2582133_20241126.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "id": "19363ba8e2582133", - "threadId": "19363ba8e2582133", - "labelIds": [ - "UNREAD", - "CATEGORY_SOCIAL", - "INBOX" - ], - "snippet": "Here's what's happened since you were last on LinkedIn \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp931742wrq; Mon, 25 Nov 2024 06:29:51 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IEbPIe+TQ88Z+DHd/A8yyLcAOjv+R1/RIRwiGYiSt7ujLYGK/lw0vafU0SHGdQj6lXZicwS" - }, - { - "name": "X-Received", - "value": "by 2002:a05:6a00:3ccc:b0:71e:818a:97d9 with SMTP id d2e1a72fcca58-724df3c8151mr20294806b3a.5.1732544991113; Mon, 25 Nov 2024 06:29:51 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732544991; cv=none; d=google.com; s=arc-20240605; b=Wxqp5Njjc5z1wRZ9vyWy4ihWjaE4SrMZsFoHfAbUhXYc7PnTsQaLebvf+Zg9oqipO2 7e72Ig1P9gfmke8h4jj0AfYHkiXQjkcOk0L0qQRrk7Fhm8y+bbqU/R6GjhZJO5Hp5njx bN/jQzJtO8Rnz5NpVU1ETfKChDRkM4/STfudNz0CvRDyskVVkeuoYmbvLFcSN6CUn4tt ye1hOKaQtTkq52DX9jVw1T0VXynCViWWpaybNg1TJOnezXXcNm2b+sTA61Cu8PQnhrNJ n9gi1Q/PW60s8yENi5loDvB3iAvi+7E1iNrUui3OhKTVHgWAV7KWiAKkvlsCCLORUc1T z42Q==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=require-recipient-valid-since:feedback-id:list-unsubscribe-post :list-unsubscribe:date:to:mime-version:subject:message-id:from :dkim-signature:dkim-signature; bh=udF/XJRPK1mCktHLuGIIfGeisUjxh0OfM+Tlg7u5R9g=; fh=kl8GOc3xH49wmCQ5W74DCe5pDhPNnAeFoI4mGP4/wX4=; b=RgsKftzTPZcKwxh/G/887LKpeDh6lU89MW+LoktXl0h6OZM2Mv8afCVBFjWsojIANF OY81a561ZEk9EbYADd1vGn7zL1cByE1/7p6xsigppTnhotEK8DpHCwGJeqdnpjVitPvA I106x5rD2+qzC/Lsmb0zAfify/FXY+NfInQQczg16gG6ONKcVGgxbUgzbtHePWmhxdRI XSbZNVRZIzLz1vTX/GfZjRmKBe1J2vY22BpD1mx0GAmAPE1rjVS0cFKavyz8rF/br8WN OLjkjTwY/CyKq4cfnH5uvDI7N+CsxMIgIu6NDt8/l01KLYjSmKPFOBkpzT6Ks/Grtt3+ 5O4w==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@mailc.linkedin.com header.s=d2048-202308-0c header.b=XUxElvqG; dkim=pass header.i=@linkedin.com header.s=d2048-202308-00 header.b=eEOICj8q; spf=pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emjprzmiodkrl@bounce.linkedin.com designates 2620:109:c003:104::161 as permitted sender) smtp.mailfrom=m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emjprzmiodkrl@bounce.linkedin.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=linkedin.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from mailc-ca.linkedin.com (mailc-ca.linkedin.com. [2620:109:c003:104::161]) by mx.google.com with ESMTPS id d2e1a72fcca58-72519ec5c96si400699b3a.371.2024.11.25.06.29.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Nov 2024 06:29:51 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emjprzmiodkrl@bounce.linkedin.com designates 2620:109:c003:104::161 as permitted sender) client-ip=2620:109:c003:104::161;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@mailc.linkedin.com header.s=d2048-202308-0c header.b=XUxElvqG; dkim=pass header.i=@linkedin.com header.s=d2048-202308-00 header.b=eEOICj8q; spf=pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emjprzmiodkrl@bounce.linkedin.com designates 2620:109:c003:104::161 as permitted sender) smtp.mailfrom=m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo1emjprzmiodkrl@bounce.linkedin.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=linkedin.com" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailc.linkedin.com; s=d2048-202308-0c; t=1732544987; bh=udF/XJRPK1mCktHLuGIIfGeisUjxh0OfM+Tlg7u5R9g=; h=From:Subject:MIME-Version:Content-Type:To:Date:X-LinkedIn-Class:\t X-LinkedIn-Template:X-LinkedIn-fbl; b=XUxElvqGO3ViqDffleqSmJOF/ZDaKDpiTnSv7vejgQqlK5ac8rl7QpZ74KquDvVSY\t OhGD5AQMrZw+yR913qRvj3tzS+n+9x2M4vdiCzVaZEZB4vPoeg7osKsdsFgor5yi+R\t b9zg16ovDDFoB2QPkrwSWQyFss+iOxGvM0w0fyHoqoNYf/q3JOwigzjj4SvtmGSxJ3\t UNIR9Lc2K9DGvTyYJ8e3Y/906t20DvpelCbxvTBEyGgi0diSxmA0Rw5a0UUSxVaUqd\t VqjhBTDqxSwRQwttoRQ0XBVjqm64XQ5fGsazJSRjuHD1VloxHu3dtX/Ss5dAoajvus\t cMMSwhfbsnUBA==" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkedin.com; s=d2048-202308-00; t=1732544987; bh=udF/XJRPK1mCktHLuGIIfGeisUjxh0OfM+Tlg7u5R9g=; h=From:Subject:MIME-Version:Content-Type:To:Date:X-LinkedIn-Class:\t X-LinkedIn-Template:X-LinkedIn-fbl; b=eEOICj8q4rI5QFph2OzYmK3p6xwZY3pJfAfq7/+JS+IHd0fAjuEA34d3dZgADxUNo\t QefEvudi3vlE6D/ygvX+8l1pm/8/feQaCnSTzssropJtrmc+PZGO12ba6m9sxfG7EQ\t +pq8I4pZ8+3YyDKCjcneoPzPbBqqX+LCnhJ8yuAX7v9IcW7KtT9qQtje9LwY7RRjTL\t QtYSqp7FCzay59pBDSFSYNeYXhYRGNtylfWofu+xgQ5D1YiR2ARqI4kolxvgPEmtkO\t PzxlGATlIzInLPKEppcmQ0cz1xK0sDIapONVyOhNgJaA+xK8AwbunLrSeqei2TgyO0\t p0uM+TQMHBGXg==" - }, - { - "name": "From", - "value": "LinkedIn " - }, - { - "name": "Message-ID", - "value": "<1307744455.19685006.1732544987164@lor1-app113732.prod.linkedin.com>" - }, - { - "name": "Subject", - "value": "Don\u2019t be too quick to accept a job\u2026" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_19685004_847781199.1732544987162\"" - }, - { - "name": "To", - "value": "Khushal PS " - }, - { - "name": "Date", - "value": "Mon, 25 Nov 2024 14:29:47 +0000 (UTC)" - }, - { - "name": "X-LinkedIn-Class", - "value": "NETWORKDIGEST" - }, - { - "name": "X-LinkedIn-Template", - "value": "email_notification_digest_01" - }, - { - "name": "X-LinkedIn-fbl", - "value": "m2-aszqd8zkspuf287a8bx31vrz8sk5ja17z01xcysyvru7cm8ox3fyjnnbn805spqs14tmds35nuyhnbcesiw70a1qp24c3d0m71rtbm" - }, - { - "name": "X-LinkedIn-Id", - "value": "j7zu7i-m3x4exhn-ja" - }, - { - "name": "List-Unsubscribe", - "value": "" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "Feedback-ID", - "value": "email_notification_digest_01:linkedin" - }, - { - "name": "Require-Recipient-Valid-Since", - "value": "pskhushal@gmail.com; Mon, 24 Jul 2023 06:55:23 +0000" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain;charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - }, - { - "name": "Content-ID", - "value": "text-body" - } - ], - "body": { - "size": 2736, - "data": "RG9u4oCZdCBiZSB0b28gcXVpY2sgdG8gYWNjZXB0IGEgam9iIG9mZmVyLiBNYWtlIHN1cmUgdG8gYXNrIHlvdXJzZWxmIHRoZXNlIHF1ZXN0aW9ucyBmaXJzdC4NClNlZSBuZXdzbGV0dGVyOmh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY1MzMzNDQ5NDA4ODY0MjU3P2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0ybWF1Y19tZnZCQ1h3MSZ0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtbm90aWZpY2F0aW9uX2RpZ2VzdC0wLUVESVRPUklBTF9CTEFaRV9JTkFQUCZ0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1ub3RpZmljYXRpb25fZGlnZXN0LTAtRURJVE9SSUFMX0JMQVpFX0lOQVBQLW51bGwtajd6dTdpfm0zeDRleGhufmphLW51bGwtbnVsbCZlaWQ9ajd6dTdpLW0zeDRleGhuLWphJm90cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1OaFpEazBPVGxtWVdFNFpUWmhOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5HUmtObU5oWmpNME5XWmpZekpoWWpFelpXSTJPVEZtTWpNd1lXUm1PVFppTXpJek1EWm1aR1V4T1RFME5UZzBMREVzTVElM0QlM0QNCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClRoaXMgZW1haWwgd2FzIGludGVuZGVkIGZvciBLaHVzaGFsIFBTICgtLSkNCkxlYXJuIHdoeSB3ZSBpbmNsdWRlZCB0aGlzOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vaGVscC9saW5rZWRpbi9hbnN3ZXIvNDc4OD9sYW5nPWVuJmxpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0ybWF1Y19tZnZCQ1h3MSZ0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtU2VjdXJpdHlIZWxwLTAtdGV4dGZvb3RlcmdsaW1tZXImdHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtU2VjdXJpdHlIZWxwLTAtdGV4dGZvb3RlcmdsaW1tZXItbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmVpZD1qN3p1N2ktbTN4NGV4aG4tamEmb3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU5oWkRrME9UbG1ZV0U0WlRaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkdSa05tTmhaak0wTldaall6SmhZakV6WldJMk9URm1Nak13WVdSbU9UWmlNekl6TURabVpHVXhPVEUwTlRnMExERXNNUSUzRCUzRA0KWW91IGFyZSByZWNlaXZpbmcgTGlua2VkSW4gbm90aWZpY2F0aW9uIGVtYWlscy4NCg0KVW5zdWJzY3JpYmU6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL3BzZXR0aW5ncy9lbWFpbC11bnN1YnNjcmliZT9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkJsOWY1ejVZUk9TbXJWc00lMkZFZ2hoZyUzRCUzRCZtaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZtaWRTaWc9Mm1hdWNfbWZ2QkNYdzEmdHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLXVuc3Vic2NyaWJlLTAtdGV4dGZvb3RlcmdsaW1tZXImdHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtdW5zdWJzY3JpYmUtMC10ZXh0Zm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3g0ZXhobn5qYS1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0ZXhobi1qYSZsb2lkPUFRSDVQQ3dDVjR3WF9BQUFBWk5qdW4wTEhVVHROM3R5dHdEYlN2Q0U0UWR2RTNNMFhaVzV4cmpfdFFRdFRLdEZ4WHljMHNOZnVmRHVXR2dkLXl5blNudkVrcFlDbWVIUEs3RFFNancNCkhlbHA6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9oZWxwL2xpbmtlZGluL2Fuc3dlci82Nz9sYW5nPWVuJmxpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJm1pZFRva2VuPUFRRlBhMjNOem8xOEZRJm1pZFNpZz0ybWF1Y19tZnZCQ1h3MSZ0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVscC0wLXRleHRmb290ZXJnbGltbWVyJnRya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWhlbHAtMC10ZXh0Zm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3g0ZXhobn5qYS1udWxsLW51bGwmZWlkPWo3enU3aS1tM3g0ZXhobi1qYSZvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTmhaRGswT1RsbVlXRTRaVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVOR1JrTm1OaFpqTTBOV1pqWXpKaFlqRXpaV0kyT1RGbU1qTXdZV1JtT1RaaU16SXpNRFptWkdVeE9URTBOVGcwTERFc01RJTNEJTNEDQoNCsKpIDIwMjQgTGlua2VkSW4gQ29ycG9yYXRpb24sIDF6d25qMDAwIFdlc3QgTWF1ZGUgQXZlbnVlLCBTdW5ueXZhbGUsIENBIDk0MDg1Lg0KTGlua2VkSW4gYW5kIHRoZSBMaW5rZWRJbiBsb2dvIGFyZSByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgTGlua2VkSW4u" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html;charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - }, - { - "name": "Content-ID", - "value": "html-body" - } - ], - "body": { - "size": 22899, - "data": "PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPiA8aGVhZD4gPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI-IDxtZXRhIG5hbWU9IkhhbmRoZWxkRnJpZW5kbHkiIGNvbnRlbnQ9InRydWUiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTAuNjY2NjY3OyB1c2VyLXNjYWxhYmxlPTAiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4gPHRpdGxlPjwvdGl0bGU-IDxzdHlsZT4NCiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MTJweCkgeyAubWVyY2Fkby1jb250YWluZXIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9IH0NCiAgICAgICAgICA8L3N0eWxlPiA8c3R5bGU-DQogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsgLmlubGluZS1idXR0b24sIC5pbmxpbmUtYnV0dG9uIHRhYmxlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9DQogICAgICAgICAgICAuZnVsbC13aWR0aC1idXR0b24sIC5mdWxsLXdpZHRoLWJ1dHRvbiB0YWJsZSB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH0gfQ0KICAgICAgICAgIDwvc3R5bGU-IDxzdHlsZT5ib2R5IHtmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywNCiAgICAgICAgICAgICdGaXJhIFNhbnMnLCBVYnVudHUsIE94eWdlbiwgJ094eWdlbiBTYW5zJywgQ2FudGFyZWxsLCAnRHJvaWQgU2FucycsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsDQogICAgICAgICAgICAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO308L3N0eWxlPiA8IS0tW2lmIG1zb10-PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gPC9zdHlsZT48IVtlbmRpZl0tLT4gPCEtLVtpZiBJRV0-PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gPC9zdHlsZT48IVtlbmRpZl0tLT4gPC9oZWFkPiA8Ym9keSBkaXI9Imx0ciIgY2xhc3M9ImZvbnQtc2FucyBiZy1jb2xvci1iYWNrZ3JvdW5kLWNhbnZhcyB3LWZ1bGwgbS0wIHAtMCBwdC0xIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbWFyZ2luOiAwcHg7IHdpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMmYwOyBwYWRkaW5nOiAwcHg7IHBhZGRpbmctdG9wOiA4cHg7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCAnRmlyYSBTYW5zJywgVWJ1bnR1LCBPeHlnZW4sICdPeHlnZW4gU2FucycsIENhbnRhcmVsbCwgJ0Ryb2lkIFNhbnMnLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyI-IDxkaXYgY2xhc3M9ImgtMCBvcGFjaXR5LTAgdGV4dC10cmFuc3BhcmVudCBpbnZpc2libGUgb3ZlcmZsb3ctaGlkZGVuIHctMCBtYXgtaC1bMF0iIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47IGhlaWdodDogMHB4OyBtYXgtaGVpZ2h0OiAwOyB3aWR0aDogMHB4OyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAwOyBtc28taGlkZTogYWxsOyIgZGF0YS1lbWFpbC1wcmVoZWFkZXI9InRydWUiPkhlcmXigJlzIHdoYXTigJlzIGhhcHBlbmVkIHNpbmNlIHlvdSB3ZXJlIGxhc3Qgb24gTGlua2VkSW48L2Rpdj4gPGRpdiBjbGFzcz0iaC0wIG9wYWNpdHktMCB0ZXh0LXRyYW5zcGFyZW50IGludmlzaWJsZSBvdmVyZmxvdy1oaWRkZW4gdy0wIG1heC1oLVswXSIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsgaGVpZ2h0OiAwcHg7IG1heC1oZWlnaHQ6IDA7IHdpZHRoOiAwcHg7IG92ZXJmbG93OiBoaWRkZW47IG9wYWNpdHk6IDA7IG1zby1oaWRlOiBhbGw7Ij4gzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCA8L2Rpdj4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iNTEyIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0ibWVyY2Fkby1jb250YWluZXIgdy1bNTEycHhdIG1heC13LVs1MTJweF0gbXgtYXV0byBteS0wIHAtMCBiZy1jb2xvci1iYWNrZ3JvdW5kLWNvbnRhaW5lciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgd2lkdGg6IDUxMnB4OyBtYXgtd2lkdGg6IDUxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyBwYWRkaW5nOiAwcHg7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0idGV4dC1jZW50ZXIgcC0zIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmc6IDI0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0ibWluLXctZnVsbCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtaW4td2lkdGg6IDEwMCU7Ij4gPHRib2R5PiA8dHI-IDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkLz9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkJsOWY1ejVZUk9TbXJWc00lMkZFZ2hoZyUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0ybWF1Y19tZnZCQ1h3MSZhbXA7dHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWhlYWRlci0wLWhvbWVfZ2xpbW1lcl9keW5hbWljX2JhZGdpbmdfaGlnaF9kcGkmYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWhlYWRlci0wLWhvbWVfZ2xpbW1lcl9keW5hbWljX2JhZGdpbmdfaGlnaF9kcGktbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDRleGhuLWphJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTmhaRGswT1RsbVlXRTRaVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVOR1JrTm1OaFpqTTBOV1pqWXpKaFlqRXpaV0kyT1RGbU1qTXdZV1JtT1RaaU16SXpNRFptWkdVeE9URTBOVGcwTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InctWzg0cHhdIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHdpZHRoOiA4NHB4OyI-IDxpbWcgY2xhc3M9ImgtWzM3cHhdIHctWzEwMXB4XSIgYWx0PSJMaW5rZWRJbiIgc3JjPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9kbXMvbG9nby92Mj9iYWRnZVRoZW1lPW1lcmNhZG8mYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRTaWc9Mm1hdWNfbWZ2QkNYdzEmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1udWxsLTAtY29tbXMlN0ViYWRnaW5nJTdFZHluYW1pYyU3RWdsaW1tZXIlN0V2Mi1udWxsLWo3enU3aSU3RW0zeDRleGhuJTdFamEtbnVsbC1udWxsJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtbnVsbC0wLWNvbW1zJTdFYmFkZ2luZyU3RWR5bmFtaWMlN0VnbGltbWVyJTdFdjImYW1wO19zaWc9MTVhdXNGVUtUQkNYdzEiIGRhdGEtdGVzdC1oZWFkZXItZHluYW1pYy1iYWRnaW5nLWltZy1oaWdoLWRwaSBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBoZWlnaHQ6IDM3cHg7IHdpZHRoOiAxMDFweDsiIHdpZHRoPSIxMDEiIGhlaWdodD0iMzciPiA8L2E-IDwvdGQ-IDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249InJpZ2h0IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgZGF0YS10ZXN0LWhlYWRlci1wcm9maWxlIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL2luLmxpbmtlZGluLmNvbS9jb21tL2luL2todXNoYWwtcHMtN2E2MmI3Mjg1P2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVhZGVyLTAtcHJvZmlsZV9nbGltbWVyJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1oZWFkZXItMC1wcm9maWxlX2dsaW1tZXItbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDRleGhuLWphJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTmhaRGswT1RsbVlXRTRaVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVOR1JrTm1OaFpqTTBOV1pqWXpKaFlqRXpaV0kyT1RGbU1qTXdZV1JtT1RaaU16SXpNRFptWkdVeE9URTBOVGcwTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgdGV4dC1zeXN0ZW0tZ3JheS05MCIgc3R5bGU9ImNvbG9yOiAjMjgyODI4OyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPktodXNoYWwgUFM8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InB4LTMgcGItMyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IHBhZGRpbmctYm90dG9tOiAyNHB4OyI-IDxkaXY-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJweC0xICIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy1yaWdodDogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJwYi0yIHRleHQtY2VudGVyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctYm90dG9tOiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgYWxpZ249ImNlbnRlciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImlubGluZS1ibG9jayB3LTggaC04IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgaGVpZ2h0OiA2NHB4OyB3aWR0aDogNjRweDsiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY1MzMzNDQ5NDA4ODY0MjU3P2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtZW50aXR5X3BpbGUtMC1FRElUT1JJQUxfQkxBWkVfSU5BUFBfMCZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtZW50aXR5X3BpbGUtMC1FRElUT1JJQUxfQkxBWkVfSU5BUFBfMC1udWxsLWo3enU3aX5tM3g0ZXhobn5qYS1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN4NGV4aG4tamEmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakU0WW1OaFpEazBPVGxtWVdFNFpUWmhOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU5HUmtObU5oWmpNME5XWmpZekpoWWpFelpXSTJPVEZtTWpNd1lXUm1PVFppTXpJek1EWm1aR1V4T1RFME5UZzBMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7Ij4gPGltZyBjbGFzcz0iaW5saW5lLWJsb2NrIHJlbGF0aXZlIGJnLWNvbG9yLWVudGl0eS1naG9zdC1iYWNrZ3JvdW5kIHctOCBoLTggIWJsb2NrIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9hZXJvLXYxL3NjL2gvODd1dTd4NW13bWF0c243djZmMjhzMjZvNSIgYWx0PSJHZXQgSGlyZWQgTG9nbyIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgcG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDY0cHg7IHdpZHRoOiA2NHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlNmRmOyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMiB0ZXh0LWNlbnRlciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyI-IERvbuKAmXQgYmUgdG9vIHF1aWNrIHRvIGFjY2VwdCBhIGpvYiBvZmZlci4gTWFrZSBzdXJlIHRvIGFzayB5b3Vyc2VsZiB0aGVzZSBxdWVzdGlvbnMgZmlyc3QuIDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgY2xhc3M9ImVtYWlsLWJ1dHRvbiAiIGRhdGEtdGVzdC1pZD0iZW1haWwtYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249Im1pZGRsZSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY1MzMzNDQ5NDA4ODY0MjU3P2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVyb19ub3RpZmljYXRpb25fY3RhLTAtRURJVE9SSUFMX0JMQVpFX0lOQVBQJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1oZXJvX25vdGlmaWNhdGlvbl9jdGEtMC1FRElUT1JJQUxfQkxBWkVfSU5BUFAtbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDRleGhuLWphJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTmhaRGswT1RsbVlXRTRaVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVOR1JrTm1OaFpqTTBOV1pqWXpKaFlqRXpaV0kyT1RGbU1qTXdZV1JtT1RaaU16SXpNRFptWkdVeE9URTBOVGcwTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgYXJpYS1sYWJlbD0iUmVhZCBtb3JlIiBjbGFzcz0iYWxpZ24tdG9wIG5vLXVuZGVybGluZSAiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgY2xhc3M9ImJvcmRlci1zZXBhcmF0ZSAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJidG4tbWQgYnRuLXByaW1hcnkgYm9yZGVyLWNvbG9yLWJyYW5kIGJ1dHRvbi1saW5rIGxlYWRpbmctcmVndWxhciAhbWluLWgtW2F1dG9dICFzaGFkb3ctbm9uZSBib3JkZXItMSBib3JkZXItc29saWQgdy1bMzkwcHhdIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGhlaWdodDogbWluLWNvbnRlbnQ7IGJvcmRlci1yYWRpdXM6IDI0cHg7IHBhZGRpbmctdG9wOiAxMnB4OyBwYWRkaW5nLWJvdHRvbTogMTJweDsgcGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzBhNjZjMjsgY29sb3I6ICNmZmZmZmY7IHdpZHRoOiAzOTBweDsgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogIzBhNjZjMjsgbGluZS1oZWlnaHQ6IDEuMjU7IG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgYm94LXNoYWRvdzogMCAwICMwMDAwLCAwIDAgIzAwMDAsIDAgMCAjMDAwMCAhaW1wb3J0YW50OyIgd2lkdGg9IjM5MCI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvdXBkYXRlL3VybiUzQWxpJTNBYWN0aXZpdHklM0E3MjY1MzMzNDQ5NDA4ODY0MjU3P2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVyb19ub3RpZmljYXRpb25fY3RhLTAtRURJVE9SSUFMX0JMQVpFX0lOQVBQJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1oZXJvX25vdGlmaWNhdGlvbl9jdGEtMC1FRElUT1JJQUxfQkxBWkVfSU5BUFAtbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDRleGhuLWphJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTmhaRGswT1RsbVlXRTRaVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVOR1JrTm1OaFpqTTBOV1pqWXpKaFlqRXpaV0kyT1RGbU1qTXdZV1JtT1RaaU16SXpNRFptWkdVeE9URTBOVGcwTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9Im5vLXVuZGVybGluZSIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lIHRleHQtd2hpdGUiIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gUmVhZCBtb3JlIDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0iYmctY29sb3ItYmFja2dyb3VuZC1jYW52YXMgcC0zIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJhY2tncm91bmQtY29sb3I6ICNmM2YyZjA7IHBhZGRpbmc6IDI0cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIHBiLTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1ib3R0b206IDE2cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPiA8aDIgY2xhc3M9InRleHQtbGcgdGV4dC10ZWFsLTgwIiBzdHlsZT0ibWFyZ2luOiAwOyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDIwcHg7IGNvbG9yOiAjMTE0OTUxOyI-IEdldCB0aGUgbmV3IExpbmtlZEluIGRlc2t0b3AgYXBwIDwvaDI-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciBwYi0yIiBkYXRhLXRlc3QtaWQ9ImZvb3Rlci1hcHAtc3RvcmUtaWNvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyI-IDxhIGhyZWY9Imh0dHBzOi8vYXBwcy5taWNyb3NvZnQuY29tL3N0b3JlL2RldGFpbC85V1pETkNSRko0UTc_bGF1bmNoPXRydWUmYW1wO2NpZD1saW5rZWRpbl9lbWFpbF91cHNlbGwmYW1wO21vZGU9ZnVsbCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgYWx0PSJHZXQgaXQgZnJvbSBNaWNyb3NvZnQiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL2Flcm8tdjEvc2MvaC9lanBra3B3dnFrczMxYTNjanFva2I3ZmJtIiBjbGFzcz0iaC1bNDBweF0gdy1bMTEycHhdIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiAxMTJweDsiIHdpZHRoPSIxMTIiIGhlaWdodD0iNDAiPiA8L2E-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciBwYi0yIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctYm90dG9tOiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPGgyIGNsYXNzPSJ0ZXh0LW1kIHRleHQtdGVhbC04MCIgc3R5bGU9Im1hcmdpbjogMDsgZm9udC13ZWlnaHQ6IDUwMDsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzExNDk1MTsiPiBBbHNvIGF2YWlsYWJsZSBvbiBtb2JpbGUgPC9oMj4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIiBkYXRhLXRlc3QtaWQ9ImZvb3Rlci1hcHAtc3RvcmUtaWNvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPGEgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL3VzL2FwcC9saW5rZWRpbi9pZDI4ODQyOTA0MD9wdD0xMDc0NiZhbXA7Y3Q9c3RfYXBwc2l0ZV9mbGFnc2hpcCZhbXA7bXQ9OCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgYWx0PSJEb3dubG9hZCBvbiB0aGUgQXBwIFN0b3JlIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9hZXJvLXYxL3NjL2gvNzZ5emtkMGg1a2l2MjdscmQ0eWFlbnlsayIgY2xhc3M9ImgtWzQwcHhdIHctWzEyMHB4XSBwci0xIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiAxMjBweDsgcGFkZGluZy1yaWdodDogOHB4OyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSI0MCI-IDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5saW5rZWRpbi5hbmRyb2lkJmFtcDtyZWZlcnJlcj1zdF9hcHBzaXRlX2ZsYWdzaGlwIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7Ij4gPGltZyBhbHQ9IkdldCBpdCBvbiBHb29nbGUgUGxheSIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vYWVyby12MS9zYy9oLzE0MnF1ZHdibHA1OHp3bWM5dmtxZnBsdWciIGNsYXNzPSJoLVs0MHB4XSB3LVsxMzRweF0iIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGhlaWdodDogNDBweDsgd2lkdGg6IDEzNHB4OyIgd2lkdGg9IjEzNCIgaGVpZ2h0PSI0MCI-IDwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InB5LTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7IHBhZGRpbmctYm90dG9tOiAxNnB4OyI-PGhyIGNsYXNzPSJib3JkZXItbm9uZSBiZy1bI2UwZGZkZF0gaC1bMXB4XSIgc3R5bGU9ImhlaWdodDogMXB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNlMGRmZGQ7Ij48L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0idGV4dC14cyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDEycHg7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0icGItMSBtLTAiIGRhdGEtdGVzdC1pZD0iZW1haWwtZm9vdGVyX19pbnRlbmRlZCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiBUaGlzIGVtYWlsIHdhcyBpbnRlbmRlZCBmb3IgS2h1c2hhbCBQUyAoLS0pIDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwYi0xIG0tMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaGVscC9saW5rZWRpbi9hbnN3ZXIvNDc4OD9sYW5nPWVuJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkJsOWY1ejVZUk9TbXJWc00lMkZFZ2hoZyUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0ybWF1Y19tZnZCQ1h3MSZhbXA7dHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLVNlY3VyaXR5SGVscC0wLWZvb3RlcmdsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLVNlY3VyaXR5SGVscC0wLWZvb3RlcmdsaW1tZXItbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDRleGhuLWphJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpFNFltTmhaRGswT1RsbVlXRTRaVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVOR1JrTm1OaFpqTTBOV1pqWXpKaFlqRXpaV0kyT1RGbU1qTXdZV1JtT1RaaU16SXpNRFptWkdVeE9URTBOVGcwTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRleHQtaW5oZXJpdCB1bmRlcmxpbmUiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTsiPkxlYXJuIHdoeSB3ZSBpbmNsdWRlZCB0aGlzLjwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InBiLTEgbS0wIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWJvdHRvbTogOHB4OyI-WW91IGFyZSByZWNlaXZpbmcgTGlua2VkSW4gbm90aWZpY2F0aW9uIGVtYWlscy48L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMSBtLTAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctYm90dG9tOiA4cHg7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vcHNldHRpbmdzL2VtYWlsLXVuc3Vic2NyaWJlP2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtdW5zdWJzY3JpYmUtMC1mb290ZXJHbGltbWVyJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS11bnN1YnNjcmliZS0wLWZvb3RlckdsaW1tZXItbnVsbC1qN3p1N2l-bTN4NGV4aG5-amEtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zeDRleGhuLWphJmFtcDtsb2lkPUFRSDVQQ3dDVjR3WF9BQUFBWk5qdW4wTEhVVHROM3R5dHdEYlN2Q0U0UWR2RTNNMFhaVzV4cmpfdFFRdFRLdEZ4WHljMHNOZnVmRHVXR2dkLXl5blNudkVrcFlDbWVIUEs3RFFNanciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGV4dC1pbmhlcml0IHVuZGVybGluZSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGNvbG9yOiBpbmhlcml0OyB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lOyI-VW5zdWJzY3JpYmU8L2E-IMKgwqDCt8KgwqAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2hlbHAvbGlua2VkaW4vYW5zd2VyLzY3P2xhbmc9ZW4mYW1wO2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVscC0wLWZvb3RlcmdsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWhlbHAtMC1mb290ZXJnbGltbWVyLW51bGwtajd6dTdpfm0zeDRleGhufmphLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0ZXhobi1qYSZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU5oWkRrME9UbG1ZV0U0WlRaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkdSa05tTmhaak0wTldaall6SmhZakV6WldJMk9URm1Nak13WVdSbU9UWmlNekl6TURabVpHVXhPVEUwTlRnMExERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJ0ZXh0LWluaGVyaXQgdW5kZXJsaW5lIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7Ij5IZWxwPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogOHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvP2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyQmw5ZjV6NVlST1NtclZzTSUyRkVnaGhnJTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTJtYXVjX21mdkJDWHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtZm9vdGVyLTAtbG9nb0dsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWZvb3Rlci0wLWxvZ29HbGltbWVyLW51bGwtajd6dTdpfm0zeDRleGhufmphLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3g0ZXhobi1qYSZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqRTRZbU5oWkRrME9UbG1ZV0U0WlRaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TkdSa05tTmhaak0wTldaall6SmhZakV6WldJMk9URm1Nak13WVdSbU9UWmlNekl6TURabVpHVXhPVEUwTlRnMExERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsiPiA8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL2Flcm8tdjEvc2MvaC85ZWhlNm4zOWZhMDdkYzVlZHp2MHJsYTRlIiBhbHQ9IkxpbmtlZEluIiBjbGFzcz0iYmxvY2sgaC1bMTRweF0gdy1bNTZweF0gaW1hZ2UtcmVuZGVyaW5nLWNyaXNwIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7IGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7IGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDsgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlczsgLW1zLWludGVycG9sYXRpb24tbW9kZTogbmVhcmVzdC1uZWlnaGJvcjsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMTRweDsgd2lkdGg6IDU2cHg7IiB3aWR0aD0iNTYiIGhlaWdodD0iMTQiPiA8L2E-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGRhdGEtdGVzdC1jb3B5cmlnaHQtdGV4dCBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gwqkgMjAyNCBMaW5rZWRJbiBDb3Jwb3JhdGlvbiwgMSZ6d25qOzAwMCBXZXN0IE1hdWRlIEF2ZW51ZSwgU3Vubnl2YWxlLCBDQSA5NDA4NS4gPHNwYW4gZGF0YS10ZXN0LXRyYWRlbWFya3MtdGV4dD4gTGlua2VkSW4gYW5kIHRoZSBMaW5rZWRJbiBsb2dvIGFyZSByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgTGlua2VkSW4uIDwvc3Bhbj4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPGltZyBhbHQgcm9sZT0icHJlc2VudGF0aW9uIiBzcmM9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9lbWltcC9pcF9ZV3BrTm1SVVpIQk1WekI2WlVSU2JHVkhhSFZNVjNCb09scFhNV2hoVjNobVltMDVNR0ZYV25CWk1rWXdZVmM1ZFZneVVuQmFNbFo2WkVZNGQwMVJQVDA2LmdpZiIgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4gPC9ib2R5PiA8L2h0bWw-" - } - } - ] - }, - "sizeEstimate": 35324, - "historyId": "527418", - "internalDate": "1732544987000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_07_19362f9983e58ea6_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_07_19362f9983e58ea6_20241126.json deleted file mode 100644 index 5786592..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_07_19362f9983e58ea6_20241126.json +++ /dev/null @@ -1,210 +0,0 @@ -{ - "id": "19362f9983e58ea6", - "threadId": "19362f9983e58ea6", - "labelIds": [ - "CATEGORY_PROMOTIONS", - "UNREAD", - "INBOX" - ], - "snippet": "INDIAN FILM & TELEVISION DIRECTORS' ASSOCIATION G- 8/9/10, Crescent Towers, Near Morya House, Andheri (W), Mumbai - 400 053 Tel: 022 46088096 Mob: 9892885346/ 7021494476 www.directorsiftda.com", - "payload": { - "partId": "", - "mimeType": "multipart/related", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp832066wrq; Mon, 25 Nov 2024 02:59:05 -0800 (PST)" - }, - { - "name": "X-Forwarded-Encrypted", - "value": "i=2; AJvYcCWTJ16JRatSfV54WvhqvY7z3mW9LUmKJsBYYVJp5gas68X0OXWAugWTJyyEQE0ESerQAquXl7ZIugA=@gmail.com" - }, - { - "name": "X-Received", - "value": "by 2002:a17:906:3188:b0:a99:7bc0:bca9 with SMTP id a640c23a62f3a-aa50990b300mr1091084466b.3.1732532345051; Mon, 25 Nov 2024 02:59:05 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732532345; cv=none; d=google.com; s=arc-20240605; b=cGPTlt9iJZomIZrEX1YxFZt7CeiQG3g/9XJ/DHe6g6ghGuBopYyGtWRIq/b0u5ezsK 3JyasTQwmCnqAmvhDEgUZQM/f2Bk8PshykVmLfSUzhP0vUS2wfg90N1jmaMTefDGFvlF lSjmHBlgpl4Vhn4BKGBnLuN3ttrMXvyZ6Vi4xGil9yDgW+KjwrL3fN2jdlFsOvhxODZR EE7q5SC0waIenSAllTd+0CcG4TrH7Q0ZrQYR0yVH98JZ4UJN6v5xqhwBmTMtlPx3mWw2 d8H5HXwevTXeYzYf/F7iKAlaaWu2IPM7k/e3HAatqQk/pKHfh6cmYqN1G/MzENERvOsk HmUQ==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=52sadrERSC8TqD31OwCOGWYBr43KUD3rPyq2rw8jz2Y=; fh=3tsGDR7RWsLBUvHMNbctop2/zoZmFmKl/B1BkNJ2jsE=; b=N9JHVDUsSOQO9HPax1y++VDKEbumii3FfXCPi2ec+NDD0lV4w+48dqXsrPO9k8XO03 FgGp+qnSgZps8TogBykk8a/bFPO4VJ0AZgt5b7v4i08Y+auiO+ywcP37yeZjB52iGVSU U0TcBLTtqQSBtlirHN4lG5t4CvNTgDhKDwr9UjvOqtLgValnrsySlSpoQQ+CRhaxC3Pq bEVn4CKh8dGlJWVvOA037UDZFBQtR6ygY7IbiXBEIFZsC49aH4lZbpyzA+Xh3H3X0Xtg LrM/0hxRNj33PLOvbm5gdS7F32djBbaoIXRl057QZV0JQbPa1fvEeDOwJCv8H6rECfHK m0UQ==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@directorsiftda-com.20230601.gappssmtp.com header.s=20230601 header.b=h3FDhhUH; spf=fail (google.com: domain of contact@directorsiftda.com does not designate 209.85.220.41 as permitted sender) smtp.mailfrom=contact@directorsiftda.com; dara=pass header.i=@gmail.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id a640c23a62f3a-aa560bdd42csor237566b.0.2024.11.25.02.59.04 for (Google Transport Security); Mon, 25 Nov 2024 02:59:04 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "fail (google.com: domain of contact@directorsiftda.com does not designate 209.85.220.41 as permitted sender) client-ip=209.85.220.41;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@directorsiftda-com.20230601.gappssmtp.com header.s=20230601 header.b=h3FDhhUH; spf=fail (google.com: domain of contact@directorsiftda.com does not designate 209.85.220.41 as permitted sender) smtp.mailfrom=contact@directorsiftda.com; dara=pass header.i=@gmail.com" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=directorsiftda-com.20230601.gappssmtp.com; s=20230601; t=1732532344; x=1733137144; dara=google.com; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=52sadrERSC8TqD31OwCOGWYBr43KUD3rPyq2rw8jz2Y=; b=h3FDhhUHelnzSe5+as+rP+HnwiQlFmbqO/XDImaXOHroIQfkSRt1MAwH2o8MiNS07l fzAKjxqRmO+p+fy9FyRuQ7d0/TDALivdP4HW1CpU7nHUqqp8BamVDC06zS1RI2PCVo7s qp4cxTIJsFTVaMauaTWQCIj9xstz9lGMa7DuhyJ8deSJU6zIAn0rFOhLISFZfZkVtZEy Q4J4MBtf2DZVvaxqUNr/DqkaownkPsTWaxfXTE8Ztq41a9kb+2IfX+6kk6M80DF4pm8I 5Wju6mVd6xpms0UXJPtRPfRBFKEjEApYq6dypd37ETr+tkUynPrv10xfuSUvrZdzU73L 1uEQ==" - }, - { - "name": "X-Google-DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732532344; x=1733137144; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=52sadrERSC8TqD31OwCOGWYBr43KUD3rPyq2rw8jz2Y=; b=tQU+3IcgiGI90Bknb75WOMN2IpL9BIunrIP5KwfkJMvrRTWq9GzjUl0t6gUocRNiPn 1fJ2VgBd/nAvzUpg/2lcypTBbfp7019CxuW5aqungvCD5iWFzMUcOoudN0O4kMx0KrMX DFThj9pD951evE/jteODFBQt0886+8Ofo8KIWaCsSiJ7uerf968pWkkJm6lkHsMCFf97 wgiA4kN8X8i9d+ZFs2yo5MxZykY1Ll2YYmMozgIS6jsXLb0pveLtA1L0SFxbqRU+/Njf n6ibGo42xOWOM92qDEbJnDXNtlnOEVOAKA3sgazkG8pDpC9yf2RqMPWex9xCNAbbVNQE KTog==" - }, - { - "name": "X-Forwarded-Encrypted", - "value": "i=1; AJvYcCWtfq6Mi9XsVN+r9oOb64yoh/F6ROqg/9C0UMWDuXU/fz1A74BwcwwZQy0hyIykg2dwtgxUFBLIz0w=@gmail.com" - }, - { - "name": "X-Gm-Message-State", - "value": "AOJu0YxUy7pf/My+et+YkWa4bqQ26C2PeklIXRKdME1VkRVdK9A8dtmN p34rPukc6VEwoEvOLsIh42JHO+nLEOYgcdIMTfklpdIp+2SaamAG+j/zSQFpfdFhWov4PO2vbqx aOztICe4xCfaWEiv4jKQ3arZkHmUWwrT6xb1sOQ==" - }, - { - "name": "X-Gm-Gg", - "value": "ASbGncsXwRmXGJJAyTvAKY+pMS2y7/Mf8mmUI9AmHaycDBvZnbQkc20j125cXkjxmOG o3M/KYTcTZDKyHLOi5xRqMfOv1Qs8lwFelQ==" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IFopa4irNtf4tkqOS0N6Tc13BHGQQ6fNDsmqoW9klWPS/JD7cYNG9eMDQkP9k7DPZCzWaTq4bPYSLxo6IJY2OU=" - }, - { - "name": "X-Received", - "value": "by 2002:a17:906:1daa:b0:aa5:3853:5532 with SMTP id a640c23a62f3a-aa53853589dmr630025266b.43.1732532343546; Mon, 25 Nov 2024 02:59:03 -0800 (PST)" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "From", - "value": "Iftda India " - }, - { - "name": "Date", - "value": "Mon, 25 Nov 2024 16:28:50 +0530" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "Subject", - "value": "Sad Demise of Mr. Jalaj Dhir" - }, - { - "name": "To", - "value": "undisclosed-recipients:;" - }, - { - "name": "Content-Type", - "value": "multipart/related; boundary=\"000000000000e67bea0627ba9e63\"" - }, - { - "name": "Bcc", - "value": "pskhushal@gmail.com" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"000000000000e67be90627ba9e62\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0.0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"UTF-8\"" - } - ], - "body": { - "size": 672, - "data": "W2ltYWdlOiBjb25kb2xlbmNlcyBNci4gSkFMQUogREhJUi5qcGddDQoNCg0KKklORElBTioqIEZJTE0gJiBURUxFVklTSU9OIERJUkVDVE9SUycgQVNTT0NJQVRJT04qDQpHLSA4LzkvMTAsIENyZXNjZW50IFRvd2VycywNCk5lYXIgTW9yeWEgSG91c2UsDQpBbmRoZXJpIChXKSwgTXVtYmFpIC0gNDAwIDA1Mw0KVGVsOiAwMjIgNDYwODgwOTYNCk1vYjogOTg5Mjg4NTM0Ni8gNzAyMTQ5NDQ3Ng0Kd3d3LmRpcmVjdG9yc2lmdGRhLmNvbSB8IEZhY2Vib29rL2RpcmVjdG9yc2lmdGRhDQoNCipESVNDTEFJTUVSOiogVGhpcyBlLW1haWwgbWF5IGJlIHByaXZpbGVnZWQgYW5kL29yIGNvbmZpZGVudGlhbCwgYW5kIHRoZQ0Kc2VuZGVyIGRvZXMgbm90IHdhaXZlIGFueSByZWxhdGVkIHJpZ2h0cyBhbmQgb2JsaWdhdGlvbnMuIEFueSBkaXN0cmlidXRpb24sDQp1c2Ugb3IgY29weWluZyBvZiB0aGlzIGUtbWFpbCBvciB0aGUgaW5mb3JtYXRpb24gaXQgY29udGFpbnMgYnkgb3RoZXIgdGhhbg0KYW4gaW50ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHVuYXV0aG9yaXplZC4gSWYgeW91IHJlY2VpdmVkIHRoaXMgZS1tYWlsIGluDQplcnJvciwgcGxlYXNlIGFkdmlzZSB1cyAoYnkgcmV0dXJuIGUtbWFpbCBvciBvdGhlcndpc2UpIGltbWVkaWF0ZWx5IGFuZA0KZGVsZXRlIHRoaXMgZS1tYWlsLg0K" - } - }, - { - "partId": "0.1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"UTF-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 2187, - "data": "PGRpdiBkaXI9Imx0ciI-PGRpdj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7dHJlYnVjaGV0IG1zJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6cmdiKDY4LDY4LDY4KSI-PC9kaXY-PGltZyBzcmM9ImNpZDppaV9tM3d4MGo5YzAiIGFsdD0iY29uZG9sZW5jZXMgTXIuIEpBTEFKIERISVIuanBnIiB3aWR0aD0iNDcyIiBoZWlnaHQ9IjMzNCI-PGJyPjxiciBjbGVhcj0iYWxsIj48L2Rpdj48ZGl2PjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9zaWduYXR1cmUiIGRhdGEtc21hcnRtYWlsPSJnbWFpbF9zaWduYXR1cmUiPjxkaXYgZGlyPSJsdHIiPjxkaXY-PGRpdiBkaXI9Imx0ciI-PGRpdj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2PjxzcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoNjgsNjgsNjgpIj48c3Bhbj48Yj48Zm9udCBzaXplPSI0Ij48YnI-PC9mb250PjwvYj48L3NwYW4-PC9zcGFuPjwvc3Bhbj48ZGl2Pjxmb250IGZhY2U9InRhaG9tYSwgc2Fucy1zZXJpZiI-PGZvbnQ-PGI-SU5ESUFOPC9iPjwvZm9udD48Yj7CoEZJTE0gJmFtcDsgVEVMRVZJU0lPTiBESVJFQ1RPUlMmIzM5OyBBU1NPQ0lBVElPTjwvYj48L2ZvbnQ-PC9kaXY-PGRpdj48Zm9udCBmYWNlPSJ0YWhvbWEsIHNhbnMtc2VyaWYiPkctIDgvOS8xMCwgQ3Jlc2NlbnQgVG93ZXJzLMKgPGJyPjwvZm9udD48L2Rpdj48ZGl2IGRpcj0ibHRyIj48ZGl2Pjxmb250IGZhY2U9InRhaG9tYSwgc2Fucy1zZXJpZiI-TmVhciBNb3J5YSBIb3VzZSw8L2ZvbnQ-PC9kaXY-PGRpdj48Zm9udCBmYWNlPSJ0YWhvbWEsIHNhbnMtc2VyaWYiPkFuZGhlcmkgKFcpLCBNdW1iYWkgLSA0MDAgMDUzPC9mb250PjwvZGl2PjxkaXY-PHNwYW4gc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj5UZWw6wqA8L3NwYW4-PHNwYW4gc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4wMjIgNDYwODgwOTY8L3NwYW4-PGZvbnQgZmFjZT0idGFob21hLCBzYW5zLXNlcmlmIj48YnI-PC9mb250PjwvZGl2PjxkaXY-PGZvbnQgZmFjZT0idGFob21hLCBzYW5zLXNlcmlmIj5Nb2I6IDxzcGFuIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI-OTg5Mjg4NTM0Ni8gNzAyMTQ5NDQ3Njwvc3Bhbj48L2ZvbnQ-PC9kaXY-PC9kaXY-PC9kaXY-PGRpdj48ZGl2IGRpcj0ibHRyIj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoNjgsNjgsNjgpIj48Zm9udCBmYWNlPSJ0YWhvbWEsIHNhbnMtc2VyaWYiPjxmb250IHNpemU9IjIiPnd3dy5kaXJlY3RvcnNpZnRkYTwvZm9udD4uY29tIHwgRmFjZWJvb2svZGlyZWN0b3JzaWZ0ZGE8L2ZvbnQ-PGJyPjxicj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjhweCI-PGI-PGk-PHU-PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo4cHQiIGxhbmc9IkVOLVVTIj5ESVNDTEFJTUVSOjwvc3Bhbj48L3U-PC9pPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjhwdCI-PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6OHB0O2JhY2tncm91bmQ6d2hpdGUgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlIj4gVGhpcw0KIGUtbWFpbCBtYXkgYmUgcHJpdmlsZWdlZCBhbmQvb3IgY29uZmlkZW50aWFsLCBhbmQgdGhlIHNlbmRlciBkb2VzIG5vdCANCndhaXZlIGFueSByZWxhdGVkIHJpZ2h0cyBhbmQgb2JsaWdhdGlvbnMuIEFueSBkaXN0cmlidXRpb24sIHVzZSBvciANCmNvcHlpbmcgb2YgdGhpcyBlLW1haWwgb3IgdGhlIGluZm9ybWF0aW9uIGl0IGNvbnRhaW5zIGJ5IG90aGVyIHRoYW4gYW4gDQppbnRlbmRlZCByZWNpcGllbnQocykgaXMgdW5hdXRob3JpemVkLiBJZiB5b3UgcmVjZWl2ZWQgdGhpcyBlLW1haWwgaW4gDQplcnJvciwgcGxlYXNlIGFkdmlzZSB1cyAoYnkgcmV0dXJuIGUtbWFpbCBvciBvdGhlcndpc2UpIGltbWVkaWF0ZWx5IGFuZCANCmRlbGV0ZSB0aGlzIGUtbWFpbC48L3NwYW4-PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTo4cHQiPjwvc3Bhbj48L3NwYW4-PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg0K" - } - } - ] - }, - { - "partId": "1", - "mimeType": "image/jpeg", - "filename": "condolences Mr. JALAJ DHIR.jpg", - "headers": [ - { - "name": "Content-Type", - "value": "image/jpeg; name=\"condolences Mr. JALAJ DHIR.jpg\"" - }, - { - "name": "Content-Disposition", - "value": "inline; filename=\"condolences Mr. JALAJ DHIR.jpg\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "base64" - }, - { - "name": "Content-ID", - "value": "" - }, - { - "name": "X-Attachment-Id", - "value": "ii_m3wx0j9c0" - } - ], - "body": { - "attachmentId": "ANGjdJ8zCv8y-pC8ecFP7IVoYsW4sTkayvcSepjUwiCDIrSUTJPBua7Ack8YvSuFPYcM-np_PeWRTl_wq5dYpyz3k6Hc5e-tp4RZjT6t2ITBDpkqJhPn17eR36sVN41ojkJ63Wzd9HD60LDk3o4GiL8C6iyMlsHMhadvOXKYK5zITlU9mvtdMoye6fofiiLwRsoNuT9dEpBbk9r2gh-vmuYpbu0waybh_EKefEejDvuOl7cIFU1Y3Dv8kxWYQwtZ1kx1LhHF24TzisZjvBaF6cno1T6f9aTdNd3x5T0_YsgJNilfU3xdWbCYilbVACU8axpIN5mC9CwhD45ogliA9kLadSpig8KmW9MNJJxr1vMnOAI4G-zr1SAhkzm6ZXcHllk9WpncS8RRRaLilLxo", - "size": 1736748 - } - } - ] - }, - "sizeEstimate": 2385712, - "historyId": "527104", - "internalDate": "1732532330000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_08_19360aabcb976cfc_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_08_19360aabcb976cfc_20241126.json deleted file mode 100644 index 3d27db3..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_08_19360aabcb976cfc_20241126.json +++ /dev/null @@ -1,175 +0,0 @@ -{ - "id": "19360aabcb976cfc", - "threadId": "19360aabcb976cfc", - "labelIds": [ - "CATEGORY_PROMOTIONS", - "UNREAD", - "INBOX" - ], - "snippet": "We have recommendations for you. Amazon.in Your Amazon.in Today's Deals Get Amazon App Hello Khushal PS, Amazon has new recommendations for you based on your browsing history. ApTechDeals Jumper", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp661788wrq; Sun, 24 Nov 2024 16:13:42 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IHanryCaGmStSWs4yq7Sf1frpeEiyg5Nggft2Z8FInics0aCrk0ZHEoyH5QEoE10zCg/rlE" - }, - { - "name": "X-Received", - "value": "by 2002:a05:6402:1ed1:b0:5cf:d154:8360 with SMTP id 4fb4d7f45d1cf-5d020629086mr8314902a12.14.1732493622319; Sun, 24 Nov 2024 16:13:42 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732493622; cv=none; d=google.com; s=arc-20240605; b=UIRhCb665snEBYH7WT/9jeDblWtB56t1BU6l9H+yfSaNFtRD5rWCBgwJA3px3AmImK DdiaEz0+DyVA5MZzVNNE7ElVVLv16fRL+2rkS7BsocFTdooUdo746+MlE/8Nc7LAjLVU 02xrjPGQnPg0R+gia6OTfn6EB2CaNxgzvTTNrc4MLX8B2fQGbVcgorjBZXb7SLXtcPEe YgmyvfLt5rH/zIxUUxcWVDffT4naGSgLZu4gGJEWc1Lb4bimx0JyXMZZz0JQKpoCngZ2 vz3KECtMn3zyBx7074Dfgkp+AJ1c6pdUeOaOmLyb/kRJbYlZzKmjARDOw0opKjsmmTIJ X6hw==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:list-unsubscribe:list-unsubscribe-post:bounces-to :mime-version:subject:message-id:to:from:date:dkim-signature :dkim-signature; bh=ldmDubq3LFGMnmC2Cu4/f11BWUDZh+9c76Uthp8D9q4=; fh=u/EceduMLbMJaVmVACWimtVNyu5iebWbNB9Q7JrDYgs=; b=BMSGvb44O+D1FMvIpIUyDdENgV2TzRErw6LmoIlmuab/SR6d+bWpDaEpskmxWYGl35 58rcSu0aeIDRmj/t859PlX7YBf5ncJt47K9VaNj8HkAYajFcp3jGUxXNuvo0pI4RmX+e DQTTKqw036f2nsuSoZT/6ZUFKODp7Ul6okiO/Ox1qVlB2IEAGcPun1lGOjIhKCRgbYao G51Tx9eZz73WUWN2px/FN3es920oHjbAkFiu869kZNb+wHROuqY6s3EepMPkX2V6cEFm EszKcCahoFYW3z3LUVEpQTIbCwtJ1nqhXQHxkdVFzs/LeAzptWwXd4eRJt3B/I+1/tcq XWow==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@amazon.in header.s=55spn7jg3iwyluzn4ej7wq3ev2vqedgu header.b=s9BTBq8d; dkim=pass header.i=@amazonses.com header.s=uku4taia5b5tsbglxyj6zym32efj7xqv header.b=\"g/7NynP4\"; spf=pass (google.com: domain of 202411250013413641827aa48d45a0a7523e458630p0eu-c1omwb0dighlu8@bounces.amazon.in designates 23.249.218.111 as permitted sender) smtp.mailfrom=202411250013413641827aa48d45a0a7523e458630p0eu-C1OMWB0DIGHLU8@bounces.amazon.in; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.in" - }, - { - "name": "Return-Path", - "value": "<202411250013413641827aa48d45a0a7523e458630p0eu-C1OMWB0DIGHLU8@bounces.amazon.in>" - }, - { - "name": "Received", - "value": "from d218-111.smtp-out.eu-west-2.amazonses.com (d218-111.smtp-out.eu-west-2.amazonses.com. [23.249.218.111]) by mx.google.com with ESMTPS id a640c23a62f3a-aa50b5aac4bsi380328066b.813.2024.11.24.16.13.42 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Nov 2024 16:13:42 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of 202411250013413641827aa48d45a0a7523e458630p0eu-c1omwb0dighlu8@bounces.amazon.in designates 23.249.218.111 as permitted sender) client-ip=23.249.218.111;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@amazon.in header.s=55spn7jg3iwyluzn4ej7wq3ev2vqedgu header.b=s9BTBq8d; dkim=pass header.i=@amazonses.com header.s=uku4taia5b5tsbglxyj6zym32efj7xqv header.b=\"g/7NynP4\"; spf=pass (google.com: domain of 202411250013413641827aa48d45a0a7523e458630p0eu-c1omwb0dighlu8@bounces.amazon.in designates 23.249.218.111 as permitted sender) smtp.mailfrom=202411250013413641827aa48d45a0a7523e458630p0eu-C1OMWB0DIGHLU8@bounces.amazon.in; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.in" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=55spn7jg3iwyluzn4ej7wq3ev2vqedgu; d=amazon.in; t=1732493621; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:List-Unsubscribe-Post:List-Unsubscribe; bh=BWlUoMNUXOKxZJNOjaXvq7Yu52kYUSPrnq16gYbWThY=; b=s9BTBq8d8PNsS3tkQOQHNpDubQYycaDvfh9Yo7nr675VilgUodcx+FoDklgEz1fy sAccjqxkAgSGtulLLF9LeALdylPONbtfh5tPNnWtq5ffx4jQ23Wx2ctCYcYu92jl31k 3u0SS6pqy97wJC6cxQj1YDDBifahkV0JUiOpxsy0=" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=uku4taia5b5tsbglxyj6zym32efj7xqv; d=amazonses.com; t=1732493621; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type:List-Unsubscribe-Post:List-Unsubscribe:Feedback-ID; bh=BWlUoMNUXOKxZJNOjaXvq7Yu52kYUSPrnq16gYbWThY=; b=g/7NynP4SzLDufmCYtRzshP8Vhzusb0okP9AzqCIOl88VBEHn51s+ixZmMD8TBbj XapRYYsU6j7DxsYv7e7hkMLFk7BooJxrcqxNsI7RSsShBr82OUptA6VmpinPN1W8Trq 0288+IonhmVzaQwXJ+0OfhxJmtJHULN66zT5zXDE=" - }, - { - "name": "Date", - "value": "Mon, 25 Nov 2024 00:13:41 +0000" - }, - { - "name": "From", - "value": "\"Amazon.in\" " - }, - { - "name": "To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Message-ID", - "value": "<0102019360aaba40-7b9b78a6-a8c2-466a-b85d-ae4a38330684-000000@eu-west-1.amazonses.com>" - }, - { - "name": "Subject", - "value": "\"ApTechDeals Jumper Wires Male to...\" and more" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_3547416_1504951793.1732493621814\"" - }, - { - "name": "X-AMAZON-MAIL-RELAY-TYPE", - "value": "notification" - }, - { - "name": "Bounces-to", - "value": "202411250013413641827aa48d45a0a7523e458630p0eu-C1OMWB0DIGHLU8@bounces.amazon.in" - }, - { - "name": "X-AMAZON-METADATA", - "value": "CA=C1OMWB0DIGHLU8-CU=AO8IZF00FXJKW" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "List-Unsubscribe", - "value": "" - }, - { - "name": "X-Original-MessageID", - "value": "" - }, - { - "name": "Feedback-ID", - "value": "1217521881::1.eu-west-1.kjoQSiqb8G+7lWWiDVsxjM2m0ynYd4I6yEFlfoox6aY=:AmazonSES" - }, - { - "name": "X-SES-Outgoing", - "value": "2024.11.25-23.249.218.111" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 2315, - "data": "DQoNCg0KDQo9PT09PT09PT09DQpBTUFaT04uSU4NCj09PT09PT09PT0NCg0KDQoNCkFtYXpvbiBoYXMgbmV3IHJlY29tbWVuZGF0aW9ucyBmb3IgeW91IGJhc2VkIG9uIHlvdXIgYnJvd3NpbmcgaGlzdG9yeS4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQpBcFRlY2hEZWFscyBKdW1wZXIgV2lyZXMgTWFsZSB0byBNYWxlLCBNYWxlIHRvIEZlbWFsZSwgRmVtYWxlIHRvIEZlbWFsZS9icmVhZGJvYXJkIGp1bXBlciB3aXJlcyAoNDArNDArNDApDQpBcFRlY2hEZWFscw0KaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3Byb2R1Y3QvQjA3NEpCNlNYOC9yZWY9cGVfNDEwNzUwMV8xMjE3NTIxODgxX2VtXzFwXzFfdGkNCk0uUi5QLjog4oK5NDk5LjAwICAgDQpQcmljZTog4oK5MTg5LjAwDQpZb3UgU2F2ZTog4oK5MzEwLjAwICg2MiUpDQouLi4NCg0KICAgIA0KDQoNClNxdWFkUGl4ZWwgRXNwLTMyIFdpZmksIEJsdWV0b290aCwgRHVhbCBDb3JlIENoaXAgRGV2ZWxvcG1lbnQgQm9hcmQgKEVTUC1XUk9PTS0zMikNCmRpeW1vcmUNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwNzFYUDU2TE0vcmVmPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9lbV8xcF8yX3RpDQpNLlIuUC46IOKCuTk5OS4wMCAgIA0KUHJpY2U6IOKCuTU1Ny4wMA0KWW91IFNhdmU6IOKCuTQ0Mi4wMCAoNDQlKQ0KLi4uDQoNCiAgICANCg0KDQp4Y2x1bWEgREFDIE1vZHVsZSAxMzM0IFVEQTEzMzRBIEkyUyBEQUMgU3RlcmVvIERlY29kZXIgTW9kdWxlIEZvciB1bm8gMy4zViAtIDVWDQp4Y2x1bWENCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9wcm9kdWN0L0IwQkI3UEc1NFQvcmVmPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9lbV8xcF8zX3RpDQpNLlIuUC46IOKCuTcwOS4wMCAgIA0KRGVhbCBQcmljZTog4oK5NTE2LjAwDQpZb3UgU2F2ZTog4oK5MTkzLjAwICgyNyUpDQouLi4NCg0KICAgIA0KDQoNCg0KDQoNCg0KU2VlIHNpbWlsYXIgcHJvZHVjdHMNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC95b3Vyc3RvcmUvcmVmPWVtX2ZsDQoNCj09PT09PT09PT0NCkFtYXpvbi5pbg0KaHR0cDovL3d3dy5hbWF6b24uaW4vcmVmPXBlX2Zvb3Rlci8NCg0KQ29ubmVjdCB3aXRoIFVzDQpPbiBGYWNlYm9vaw0KaHR0cDovL3d3dy5hbWF6b24uaW4vZ3AvcmVkaXJlY3QuaHRtbC9yZWY9cGVfNDIzMzcxXzM4NDc4OTMxX3BlXzBfMzQzNl9wZV9mYl9mdHIvP2xvY2F0aW9uPWh0dHA6Ly93d3cuZmFjZWJvb2suY29tL0FtYXpvbklOJnRva2VuPTIwNzVENUVBQzdCQjIxNDA4OTcyOEUyMTgzRkQzOTE3MDZENDFFOTQNCg0KT24gVHdpdHRlcg0KaHR0cDovL3d3dy5hbWF6b24uaW4vZ3AvcmVkaXJlY3QuaHRtbC9yZWY9cGVfNDIzMzcxXzM4NDc4OTMxX3BlXzBfMzQzNl9wZV90d19mdHIvP2xvY2F0aW9uPWh0dHA6Ly90d2l0dGVyLmNvbS9BbWF6b25JTiZ0b2tlbj1BMzA5REZCRkNCMUUzN0E4MDhGRjUzMTkzNDg1NURDODE3RjEzMEI2DQoNCj09PT09PT09PT0NCg0KV2UgaG9wZSB5b3UgZm91bmQgdGhpcyBtZXNzYWdlIHRvIGJlIHVzZWZ1bC4gSG93ZXZlciwgaWYgeW91J2QgcmF0aGVyIG5vdCByZWNlaXZlIGZ1dHVyZSBlLW1haWxzIG9mIHRoaXMgc29ydCBmcm9tIEFtYXpvbi5pbiwgcGxlYXNlIHZpc2l0IHRoZSBvcHQtb3V0IGxpbmsgaGVyZToNCmh0dHBzOi8vd3d3LmFtYXpvbi5pbi8vZ3AvZ3NzL28vMS1QaXZqVnF4STU2aFBTNGJFUElhaWZyekswcXFVaHk0UlZlSklQRmFGU21kTmpaemplNVc0dlRob3AwY21RM0EuDQoNClBsZWFzZSBub3RlIHRoYXQgcHJvZHVjdCBwcmljZXMgYW5kIGF2YWlsYWJpbGl0eSBhcmUgc3ViamVjdCB0byBjaGFuZ2UuIFByaWNlcyBhbmQgYXZhaWxhYmlsaXR5IHdlcmUgYWNjdXJhdGUgYXQgdGhlIHRpbWUgdGhpcyBuZXdzbGV0dGVyIHdhcyBzZW50OyBob3dldmVyLCB0aGV5IG1heSBkaWZmZXIgZnJvbSB0aG9zZSB5b3Ugc2VlIHdoZW4geW91IHZpc2l0IEFtYXpvbi5pbi4gDQoNCg0KDQpBbWF6b24uaW4gTWFya2V0cGxhY2UgcGxhdGZvcm06IFByb2R1Y3RzIHNvbGQgYnkgYSBNYXJrZXRwbGFjZSBzZWxsZXIgYXJlIHN1YmplY3QgdG8gdGhhdCBzZWxsZXIncyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiBzYWxlLiBTZWUgd3d3LkFtYXpvbi5pbiBmb3IgZGV0YWlscy4NCg0KUmVmZXJlbmNlOiAxMjE3NTIxODgxDQoNClRoaXMgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgZm9sbG93aW5nIGUtbWFpbCBhZGRyZXNzOiBwc2todXNoYWxAZ21haWwuY29tDQo=" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=utf-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 81426, - "data": "DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoJDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI-DQo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9IndpZHRoOiAxMDAlIj4NCiA8aGVhZD4NCiAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0idGFyZ2V0LWRlbnNpdHlkcGk9ZGV2aWNlLWRwaSI-DQogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGUgPSAxLjAsIG1heGltdW0tc2NhbGUgPSAxLjAiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICAgICAgYm9keSB7DQogICAgcGFkZGluZzowOw0KICAgIG1hcmdpbjowOw0KICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7DQogICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7DQp9DQppbWcgew0KICAgIGhlaWdodDogYXV0bzsNCiAgICBvdXRsaW5lOm5vbmU7DQogICAgYm9yZGVyOjAgbm9uZTsNCiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOmJpY3ViaWM7DQp9DQoNCnRhYmxlIHsNCiAgICBtc28tdGFibGUtbHNwYWNlOjBwdDsNCiAgICBtc28tdGFibGUtcnNwYWNlOjBwdDsNCiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOw0KfQ0KDQouRXh0ZXJuYWxDbGFzc3sNCiAgICB3aWR0aDoxMDAlOw0KfQ0KDQouRXh0ZXJuYWxDbGFzcywNCi5FeHRlcm5hbENsYXNzIHAsDQouRXh0ZXJuYWxDbGFzcyBzcGFuLA0KLkV4dGVybmFsQ2xhc3MgdGQsDQouRXh0ZXJuYWxDbGFzcyBkaXYgew0KICAgIGxpbmUtaGVpZ2h0OiAxMDAlOw0KfQ0KDQojb3V0bG9vayBhIHsNCiAgcGFkZGluZzogMDsgDQp9DQoNCi53aWRnZXRIZWFkZXINCnsNCnRleHQtZGVjb3JhdGlvbjpub25lOw0KY29sb3I6I0U0NzkxMTsNCmZvbnQtc2l6ZToxNXB4Ow0KZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7DQpmb250LXdlaWdodDpib2xkOw0KfQ0KLmJ0bi1sZWFybm1vcmUtc21hbGwNCnsgDQpiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCNmN2RmYTUsI2YwYzE0Yik7DQpib3JkZXItcmFkaXVzOiA1cHg7IA0KZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyANCmZvbnQtc2l6ZTogMTJweDsNCmZvbnQtd2VpZ2h0OiBub3JtYWw7DQpib3JkZXItY29sb3I6ICNhODg3MzQgIzljN2UzMSAjODQ2YTI5ICFpbXBvcnRhbnQ7DQpib3JkZXItc3R5bGU6c29saWQgIWltcG9ydGFudDsNCmJvcmRlci13aWR0aDoxcHggIWltcG9ydGFudDsNCmJvcmRlci1jb2xsYXBzZTppbml0aWFsICFpbXBvcnRhbnQ7DQp9DQouYnRuLWFkZHRvbGlzdC1zbWFsbA0Kew0KYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjZjdmOGZhLCNlN2U5ZWMpOw0KYm9yZGVyLXJhZGl1czogNXB4Ow0KZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyANCmZvbnQtc2l6ZTogMTJweDsNCmZvbnQtd2VpZ2h0OiBub3JtYWw7DQpib3JkZXItY29sb3I6ICNhZGIxYjggI2EyYTZhYyAjOGQ5MDk2ICFpbXBvcnRhbnQ7DQpib3JkZXItc3R5bGU6c29saWQgIWltcG9ydGFudDsNCmJvcmRlci13aWR0aDoxcHggIWltcG9ydGFudDsNCm1pbi13aWR0aDogMTAwcHg7DQpib3JkZXItY29sbGFwc2U6aW5pdGlhbCAhaW1wb3J0YW50Ow0KfSANCnNwYW4ubWFpbm1lc3NhZ2Ugew0KICAgIGZvbnQtc2l6ZTogMzRweDsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOw0KICAgIGxpbmUtaGVpZ2h0OiAxOw0KICAgIGNvbG9yOiAjRkY5OTAwOw0KICAgIGZvbnQtd2VpZ2h0OiA1MDA7DQogICAgbWFyZ2luLWJvdHRvbTogNXB4Ow0KfQ0KLm9tYV9wcl9pbWFnZSB7DQogICAgZGlzcGxheTpibG9jazsNCiAgDQp9DQouZW1haWxfc3VwZXJfc3ViamVjdCBhIHsNCiAgICBjb2xvcjogIzMzNjY5OSAhaW1wb3J0YW50Ow0KfQ0KLmN0YS1idG4gew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkM0MzU7DQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQouYnRuLWxlYXJubW9yZS1iaWcgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkM0MzU7DQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQouYnRuLWFkZHRvbGlzdC1iaWcgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNFN0U3QzI7DQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDEycHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQouZW1haWwtc3VwZXItc3ViamVjdCB7DQogICAgZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogOXB4Ow0KICAgIGxpbmUtaGVpZ2h0OiAxMXB4Ow0KICAgIGNvbG9yOiAjNTU1Ow0KfQ0KLmhlYWRlci1tZW51IHsNCiAgICBmb250LWZhbWlseTogYXJpYWwsIHZlcmRhbmEsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIGNvbG9yOiByZ2IoNTEsIDEwMiwgMTUzKTsNCiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQouaW50cm8tdGV4dCB7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIGNvbG9yOiAjMzMzMzMzOw0KICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgbGluZS1oZWlnaHQ6IDE2cHg7DQogICAgdmVydGljYWwtYWxpZ246IHRvcDsNCiAgICBwYWRkaW5nOiA2cHggMTVweCAxMnB4IDE1cHg7DQp9DQouZmFybWhlYWQgew0KICAgIGZvbnQtZmFtaWx5OiBhcmlhbDsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgY29sb3I6ICNlNDc5MTE7DQogICAgbGluZS1oZWlnaHQ6IDE2cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQouZmFybWhlYWQtZm9udCB7DQogICAgZm9udC1mYW1pbHk6IGFyaWFsOw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICBjb2xvcjogI2U0NzkxMTsNCiAgICBsaW5lLWhlaWdodDogMTZweDsNCn0NCi5saW5rZmFybS1jb2wtczEgew0KICAgIGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCn0NCi5saW5rZmFybS1jb2wtczIgew0KICAgIGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCn0NCi5saW5rZmFybS1saW5rLXMxIHsNCiAgICBjb2xvcjogIzY2NjsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQp9DQoubGVnYWwtdGV4dCB7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIFNhbnMtU2VyaWY7DQogICAgZm9udC1zaXplOiAxMHB4Ow0KICAgIGNvbG9yOiAjNjY2DQp9DQoubGVnYWwtdGV4dC1jMSB7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIFNhbnMtU2VyaWY7DQogICAgZm9udC1zaXplOiAxMHB4Ow0KICAgIGNvbG9yOiAjOTk5Ow0KfQ0KLmxlZ2FsLXRleHQtYzIgew0KICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBTYW5zLVNlcmlmOw0KICAgIGZvbnQtc2l6ZTogMTBweDsNCiAgICBjb2xvcjogI2JmYmZiZjsNCn0NCi5sZWdhbC10ZXh0LWMzIHsNCiAgICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgICBmb250LXNpemU6IDdwdDsNCiAgICBjb2xvcjogIzNFN0NCQjsNCn0NCi5zYWx1dGF0aW9uLXRleHQgew0KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICBjb2xvcjogIzMwMzk0MjsNCiAgICBmb250LXNpemU6IDE0cHg7DQogICAgY29sb3I6ICMzMDM5NDI7DQogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsNCn0NCmJvZHkgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2UzZTM7DQp9DQpib2R5W3lhaG9vXSB7DQogICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBub25lOw0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2UzZTM7DQogICAgbWFyZ2luOiAwOw0KICAgIHBhZGRpbmc6IDA7DQogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7DQp9DQouUmVhZE1zZ0JvZHkgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2UzZTM7DQp9DQouRXh0ZXJuYWxDbGFzcyB7DQogICAgd2lkdGg6IDEwMCU7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTNlMzsNCn0NCmh0bWwgew0KICAgIHdpZHRoOiAxMDAlOw0KfQ0KYm9keVt5YWhvb10gdGFibGUgew0KICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7DQp9DQpib2R5W3lhaG9vXSAuYnRuIHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXIhaW1wb3J0YW50Ow0KfQ0KYm9keVt5YWhvb10gLmZhcm0tcm93IHsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICAgIHBhZGRpbmc6IDNweDsNCiAgICBjb2xvcjogIzMzMzMzMw0KfQ0KYm9keVt5YWhvb10gLnRvcDEwLWltZy1XaWR0aCB7DQogICAgd2lkdGg6IDI5MHB4IWltcG9ydGFudDsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXINCn0NCnNwYW4ubWFpbm1lc3NhZ2Ugew0KICAgIGZvbnQtc2l6ZTogMzRweDsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOw0KICAgIGxpbmUtaGVpZ2h0OiAxOw0KICAgIGNvbG9yOiAjRkY5OTAwOw0KICAgIGZvbnQtd2VpZ2h0OiA1MDANCn0NCmJvZHlbeWFob29dIC5pbWFnZS1jc3Nsb3Qtbm9ybWFsIGltZyB7DQogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsNCn0NCmJvZHlbeWFob29dIHRkW2NsYXNzPSJsY29sIl0gaW1nIHsNCiAgICB3aWR0aDogMTc1cHggIWltcG9ydGFudDsNCiAgICBoZWlnaHQ6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQouc2VmX2xlZ2FsX2Zvb3RlciB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI0UzRTNFMzsNCn0NCi5zZWZfZm9vdGVyX2Nvbm5lY3Qgew0KICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjODg4ODg4Ow0KICAgIGhlaWdodDogMHB4ICFpbXBvcnRhbnQ7DQogICAgbWF4LWhlaWdodDogMHB4ICFpbXBvcnRhbnQ7DQogICAgZm9udC1zaXplOiAwcHg7DQogICAgbWFyZ2luOiAwOw0KICAgIHdpZHRoOiAxMDAlOw0KfQ0KYm9keVt5YWhvb10gLnNlZl9zcGFjZXIgZGl2IHsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImh0dHBzOi8vaW1hZ2VzLW5hLnNzbC1pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS90ZW1wbGF0ZS9zZWN0aW9uLWRpdl82NDB4OC5qcGciKSAhaW1wb3J0YW50Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7DQogICAgaGVpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCn0NCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjgwcHgpIHsNCiAgICAubW9iaWxlLWhpZGUtZ21haWwgew0KICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogICAgICAgIG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50Ow0KICAgICAgICBtc28taGlkZTphbGwgIWltcG9ydGFudDsNCiAgICAgICAgbGluZS1oZWlnaHQ6IDBweCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICAubW9iaWxlLWhpZGUtZ21haWwgdGFibGV7DQogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsNCiAgICAgICAgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7DQogICAgICAgIG1zby1oaWRlOmFsbCAhaW1wb3J0YW50Ow0KICAgICAgICBsaW5lLWhlaWdodDogMHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIA0KICAgIGJvZHlbeWFob29dIC5kZXZpY2VXaWR0aCB7DQogICAgICAgIHdpZHRoOiAxMDAlIWltcG9ydGFudA0KICAgIH0NCiAgICBib2R5W3lhaG9vXSB0ZFtjbGFzcz0iY29sIl0gYSBpbWcgew0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgICAgICBtYXgtd2lkdGg6IDYwcHggIWltcG9ydGFudDsNCiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7DQogICAgICAgIG1pbi13aWR0aDogNDFweCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICB0ZFtjbGFzcz0iY29sIl0gew0KICAgICAgICB3aWR0aDogMzAlICFpbXBvcnRhbnQ7DQogICAgICAgIG1heC13aWR0aDogNjBweCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuZmFybUxpbmtzIHsNCiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsNCiAgICAgICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuZmFybUxpbmtzIHRkIHsNCiAgICAgICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSB0ZFtjbGFzcz0iZmFybUNvbnRhaW5lciJdIHsNCiAgICAgICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50Ow0KICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZWZfZm9vdGVyX2xpbmtmYXJtIHRkIHsNCiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9mb290ZXJfbGlua2Zhcm0gdGFibGUgew0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2xlZ2FsX2Zvb3RlciwNCiAgICBib2R5W3lhaG9vXSAuc2VmX3NwYWNlciwNCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9jb25uZWN0LA0KICAgIGJvZHlbeWFob29dIC5zZWZfbGVnYWxfZm9vdGVyLA0KICAgIGJvZHlbeWFob29dIC5zZWZfZm9vdGVyX2xpbmtmYXJtIHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9mb290ZXJfbGlua2Zhcm0gdHI6bGFzdC1jaGlsZCB0ZCwNCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9saW5rZmFybSB0cjpmaXJzdC1jaGlsZCB0ZCB7DQogICAgICAgIHdpZHRoOiAxMDAlOw0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9saW5rZmFybSB0ciB0ZCB0YWJsZSB7DQogICAgICAgIHdpZHRoOiAxMDAlOw0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuYnRuIHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gdGRbY2xhc3M9Ingtc2l0ZS10YWJsZXQiXSB7DQogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlcGVyYXRvciB7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZXBlcmF0b3IgaW1nIHsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgIH0NCn0NCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHsNCiAgICBib2R5W3lhaG9vXSAudG9wMTAtaW1nLVdpZHRoIHsNCiAgICAgICAgd2lkdGg6IDQ0MHB4IWltcG9ydGFudDsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyDQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5jZW50ZXIgew0KICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuZm9vdGVyTGlua3Mgew0KICAgICAgICB3aWR0aDogMzIlOw0KICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4DQogICAgfQ0KICAgIGJvZHlbeWFob29dIHRkW2NsYXNzPSJsY29sIl0sDQogICAgYm9keVt5YWhvb10gdGRbY2xhc3M9InJjb2wiXSB7DQogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Ow0KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7DQogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7DQogICAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDsNCiAgICAgICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5mYXJtTGlua3Mgew0KICAgICAgICBtaW4td2lkdGg6IDE0OHB4ICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5mYXJtQm90dG9tIHsNCiAgICAgICAgd2lkdGg6IDEwMCUhaW1wb3J0YW50DQogICAgfQ0KICAgIGJvZHlbeWFob29dIHRkW2NsYXNzPSJwZV9hc2luIl0gew0KICAgICAgICBwYWRkaW5nOiA0cHggMTVweCA0cHggMTVweCAhaW1wb3J0YW50Ow0KICAgIH0NCn0NCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTE1cHgpIHsNCiAgICBib2R5W3lhaG9vXSAubG9nb1RvcCB7DQogICAgICAgIHdpZHRoOiAxMDAlIWltcG9ydGFudA0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAudG9wMTAtaW1nLVdpZHRoIHsNCiAgICAgICAgd2lkdGg6IDI5MHB4IWltcG9ydGFudDsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyDQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5jZW50ZXIgew0KICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuZm9vdGVyTGlua3Mgew0KICAgICAgICB3aWR0aDogMzIlOw0KICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5idG4gew0KICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gdGRbY2xhc3M9Ingtc2l0ZSJdLA0KICAgIGJvZHlbeWFob29dIC54LXNpdGUgew0KICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2Zvb3Rlcl9saW5rZmFybSB7DQogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnNlZl9zcGFjZXIgew0KICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5zZWZfZm9vdGVyX2Nvbm5lY3Qgew0KICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAuc2VmX2xlZ2FsX2Zvb3RlciB7DQogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgfQ0KICAgIGJvZHlbeWFob29dIC5sb2dvVG9wIC5jZW50ZXIgYSB7DQogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Ow0KICAgIH0NCiAgICBib2R5W3lhaG9vXSAubG9nb1RvcCB0ZCB7DQogICAgICAgIHBhZGRpbmc6IHJpZ2h0OiAwcHggIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmFtYXpvbkxvZ28gew0KICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLnRvcE1lbnUgew0KICAgICAgICBwYWRkaW5nOiAwIDAgNXB4IDAgIWltcG9ydGFudDsNCiAgICB9DQogICAgYm9keVt5YWhvb10gLmNzLWltYWdlLXNsb3Qgew0KICAgICAgICBtYXJnaW46IGF1dG87DQogICAgfQ0KfQ0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkgew0KICAgIGJvZHlbeWFob29dIHRkW2NsYXNzPSJwYWNrQ29sIl0gew0KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsNCiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgICAgICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsNCiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsNCiAgICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50Ow0KICAgICAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDsNCiAgICB9DQp9DQogICAgICAgIDwvc3R5bGU-DQogPC9oZWFkPg0KIDxib2R5IHlhaG9vPSJmaXgiIGNsYXNzPSJvbWFfbWFpbl9ib2R5IiBzdHlsZT0icGFkZGluZzogMDsgbWFyZ2luOiAwOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO2JhY2tncm91bmQtY29sb3I6IHJnYigyMjcsIDIyNywgMjI3KTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7IHdpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI3LCAyMjcsIDIyNyk7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQiPjxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MUtVQlQ0V1ZXME9CUCZUPU8mVT1odHRwcyUzQSUyRiUyRmltYWdlcy1ldS5zc2wtaW1hZ2VzLWFtYXpvbi5jb20lMkZpbWFnZXMlMkZHJTJGMDElMkZuYXYlMkZ0cmFuc3AuZ2lmJkg9SUxSMUNPWVJWS05JNExZRFA3TkFUWFJTVEJZQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9vcGVucyIgLz4NCiAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlM2UzO21zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIHlhaG9vPSJmaXgiPg0KICAgPHRib2R5Pg0KICAgIDx0cj4NCiAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIj4NCiAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9ImRldmljZVdpZHRoIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgPHRib2R5Pg0KICAgICAgICA8dHI-DQogICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6MCAwIDEwcHggMDsgZm9udC1zaXplOjA7IGhlaWdodDowOyIgY2xhc3M9Ingtc2l0ZSIgdmFsaWduPSJib3R0b20iPg0KICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPSJlbWFpbF9zdXBlcl9zdWJqZWN0IiBzdHlsZT0iZm9udC1mYW1pbHk6dmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTo5cHg7bGluZS1oZWlnaHQ6MTFweDtjb2xvcjojNTU1OyI-IFdlIGhhdmUgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFPSVRLSkxTUzI1QlQmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZ5b3Vyc3RvcmUlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcmVjX3NzJkg9UlU2SVNBQ0tPV1FHV1BBQVBBTE5IVFBEM09VQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9yZWNfc3MiIHN0eWxlPSJjb2xvcjogcmdiKDUxLCAxMDIsIDE1MykgIWltcG9ydGFudCI-cmVjb21tZW5kYXRpb25zPC9hPiBmb3IgeW91LiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgY2xhc3M9ImhlYWRlci1jc3Nsb3QiPjwvdGQ-DQogICAgICAgIDwvdHI-DQogICAgICAgPC90Ym9keT4NCiAgICAgIDwvdGFibGU-DQogICAgICA8dGFibGUgd2lkdGg9IjY0MCIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJkZXZpY2VXaWR0aCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgIDx0Ym9keT4NCiAgICAgICAgPHRyPg0KICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJoZWFkZXItY3NzbG90Ij48L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgIDwvdGJvZHk-DQogICAgICA8L3RhYmxlPg0KICAgICAgPHRhYmxlIHdpZHRoPSI2NDAiIGhlaWdodD0iNiIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJkZXZpY2VXaWR0aCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgIDx0Ym9keT4NCiAgICAgICAgPHRyPg0KICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjZTNlM2UzIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkICNGRjk5MDA7IGhlaWdodDogMHB4ICFpbXBvcnRhbnQ7IG1heC1oZWlnaHQ6IDBweCAhaW1wb3J0YW50OyBmb250LXNpemU6MHB4OyBtYXJnaW46IDA7Ij48cD4mbmJzcDs8L3A-PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICA8L3Rib2R5Pg0KICAgICAgPC90YWJsZT4NCiAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNmZmZmZmYiIGJvcmRlcj0iMCIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjttc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBjbGFzcz0iZGV2aWNlV2lkdGgiPg0KICAgICAgIDx0Ym9keT4NCiAgICAgICAgPHRyPg0KICAgICAgICAgPHRkPg0KICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1cHgiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0iZGV2aWNlV2lkdGgiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgIDx0ZD48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIHZhbGlnbj0ibWlkZGxlIj48IS0tIEJlZ2luIFNpbXBsZSBUZW1wbGF0ZSAtLT4gPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICBib2R5W3lhaG9vXSAuc2VwZXJhdG9yIHt3aWR0aDogMTAwJSAhaW1wb3J0YW50O30NCiAgICBib2R5W3lhaG9vXSAuc2VwZXJhdG9yIGltZyB7d2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvO30NCjwvc3R5bGU-DQogICAgICAgICAgICAgIDx0YWJsZSBiZ2NvbG9yPSIjRkZGRkZGIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9ImxvZ29Ub3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNlbnRlciI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPVo4MEE5Nzc4VVhDNSZUPUMmVT1odHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9zZWZfbG9nbyZIPUtXVzJTTDVQQlhBRFBWUFhNNEVBT1JSU1VUT0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfc2VmX2xvZ28iPiA8aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMtZXUuc3NsLWltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzMxL2VtYWlsL2luL2xvZ28vYW1hem9uX3ByaW1lX2xvZ29faW5fMTUweDQ4LmpwZyIgYWx0PSJBbWF6b24uaW4iIGJvcmRlcj0iMCIgaHNwYWNlPSI2IiB2c3BhY2U9IjYiIHN0eWxlPSJoZWlnaHQ6IGF1dG87IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMCBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljIj4gPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0ibG9nb1RvcCAiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjEwIiBjZWxsc3BhY2luZz0iMCIgYWxpZ249InJpZ2h0IiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiBjbGFzcz0idG9wTWVudSI-DQogICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0ibWFyZ2luOjAgYXV0bzttc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9VjA1VUYwS1M4U0dJJlQ9QyZVPWh0dHAlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZ5b3Vyc3RvcmUlMkZob21lJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX3lvdXJzdG9yZSUyRiZIPVRYMVVMTVZST1JISENCWFEzSFkyV1BPRkQwVUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfeW91cnN0b3JlIiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLHZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogcmdiKDUxLCAxMDIsIDE1Myk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7IHdvcmQtd3JhcDogbm9ybWFsICEgaW1wb3J0YW50OyI-IFlvdXIgQW1hem9uLmluIDwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjIiIHdpZHRoPSI4Ij4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNjY2MiIHdpZHRoPSIyIiBoZWlnaHQ9IjE1Ij48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjIiIHdpZHRoPSIxMiI-Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MTVXNlU0NjJaN0MwTSZUPUMmVT1odHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcmVkaXJlY3QuaHRtbCUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9kZWFscyUzRmxvY2F0aW9uJTNEaHR0cCUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmdvbGRib3gmSD1EME1RMEE1VDFJRU9BWU9YTERMOFIxVkFUUE1BJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2RlYWxzIiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLHZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogcmdiKDUxLCAxMDIsIDE1Myk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7IHdvcmQtd3JhcDogbm9ybWFsICEgaW1wb3J0YW50OyI-IFRvZGF5J3MgRGVhbHMgPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMiIgd2lkdGg9IjgiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2NjYyIgd2lkdGg9IjIiIGhlaWdodD0iMTUiPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMiIgd2lkdGg9IjgiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTJITlg0RTJPWDYzVEImVD1DJlU9aHR0cCUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnJlZGlyZWN0Lmh0bWwlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfYXBwJTJGJTNGbG9jYXRpb24lM0RodHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRm1zaG9wJkg9WFlVRzI0WEdEV0tMUlZCV1VGV1cxV1pHWVY4QSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9hcHAiIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsdmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiByZ2IoNTEsIDEwMiwgMTUzKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDt0ZXh0LWFsaWduOmNlbnRlcjsgd29yZC13cmFwOiBub3JtYWwgISBpbXBvcnRhbnQ7Ij4gR2V0IEFtYXpvbiBBcHAgPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMiIgd2lkdGg9IjgiIGNsYXNzPSJ4LXNpdGUiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT48IS0tIEVuZCBTaW1wbGUgVGVtcGxhdGUgLS0-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgPC90YWJsZT48IS0tICBFbmQgSEVBREVSIC0tPg0KICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI-PGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLW5hLnNzbC1pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS90ZW1wbGF0ZS9zZWN0aW9uLWRpdl82NDB4OC5qcGciIGFsdD0iPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ICIgYm9yZGVyPSIwIiBhbGlnbj0ibWlkZGxlIiBjbGFzcz0iZGV2aWNlV2lkdGgiIHN0eWxlPSJiaWN1YmljOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6OHB4OyBjb2xvcjojQ0NDQ0NDOyBsaW5lLWhlaWdodDoxcHg7aGVpZ2h0OiBhdXRvOyBvdXRsaW5lOiBub25lOyBib3JkZXI6IDAgbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYyI-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICA8dGFibGUgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB3aWR0aDoxMDAlO21zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgPHRkIGNsYXNzPSJBbGV4YS1iYW5uZXIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjEwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE1IiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJkZXZpY2VXaWR0aCIgc3R5bGU9IndpZHRoOjEwMCU7bXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgY2xhc3M9ImludHJvLXRleHQiIGFsaWduPSJsZWZ0IiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O2ZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogMTZweDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZzogNnB4IDE1cHggMTJweCAxNXB4Ij48c3BhbiBjbGFzcz0ic2FsdXRhdGlvbi10ZXh0IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogcmdiKDQ4LCA1NywgNjYpOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoNDgsIDU3LCA2Nik7IGZvbnQtd2VpZ2h0OiBub3JtYWwiPiBIZWxsbyBLaHVzaGFsIFAgUywgPGJyPg0KICAgICAgICAgICAgICAgQW1hem9uIGhhcyBuZXcgcmVjb21tZW5kYXRpb25zIGZvciB5b3UgYmFzZWQgb24geW91ciBicm93c2luZyBoaXN0b3J5LiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjY0MCIgY2xhc3M9ImRldmljZVdpZHRoIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iI0ZGRkZGRiIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPjxpbWcgc3JjPSJodHRwczovL2ltYWdlcy1uYS5zc2wtaW1hZ2VzLWFtYXpvbi5jb20vaW1hZ2VzL0cvMDEvdGVtcGxhdGUvc2VjdGlvbi1kaXZfNjQweDguanBnIiBhbHQ9Ij0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSAiIGJvcmRlcj0iMCIgYWxpZ249Im1pZGRsZSIgY2xhc3M9ImRldmljZVdpZHRoIiBzdHlsZT0iYmljdWJpYzsgbWF4LXdpZHRoOjY0MHB4OyBtYXgtaGVpZ2h0OjhweDsgY29sb3I6I0NDQ0NDQzsgbGluZS1oZWlnaHQ6MXB4O2hlaWdodDogYXV0bzsgb3V0bGluZTogbm9uZTsgYm9yZGVyOiAwIG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWMiPjwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgPHRhYmxlIHdpZHRoPSI2NDAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0idmVydGljYWwtYWxpZ246Y2VudHJhbDttc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBjbGFzcz0iZGV2aWNlV2lkdGgiPg0KICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgPHRkIHdpZHRoPSIzMiUiIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCIgc3R5bGU9InBhZGRpbmc6NnB4IDAiIGNsYXNzPSJsY29sIj4NCiAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMHB4IiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJib3R0b20iIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBwYWRkaW5nOjRweCA4cHggNHB4IDhweDttYXgtd2lkdGg6MjQycHggIWltcG9ydGFudDsiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj1ZODhJSUs1STkzUSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMDc0SkI2U1g4JTNGcmVmJTNEZW1fMXBfMV9pbSUyNnJlZl8lM0RwZV80MTA3NTAxXzEyMTc1MjE4ODEmSD1RN0pTQk9FQjFENUZOT0owNElHSFNCUzRZUElBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxIj4gPGltZyBzcmM9Imh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9JLzUxMkVudWJmTXpMLl9TUjUwMCw1MDBfLl9BQ19TTDUwMF9TUzE3NV8uanBnIiBjbGFzcz0ib21hX3ByX2ltYWdlIiBhbHQ9IkFwVGVjaERlYWxzIEp1bXBlciBXaXJlcyBNYWxlIHRvIE1hbGUsIE1hbGUgdG8gRmVtYWxlLCBGZW1hbGUgdG8gRmVtYWxlL2JyZWFkYm9hcmQganVtcGVyIHdpcmVzICg0MCs0MCs0MCkiIGJvcmRlcj0iMCIgc3R5bGU9ImhlaWdodDogYXV0bzsgb3V0bGluZTogbm9uZTsgYm9yZGVyOiAwIG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7ZGlzcGxheTogYmxvY2s7d2lkdGg6IDE3NXB4ICFpbXBvcnRhbnQ7IGhlaWdodDogMTc1cHggIWltcG9ydGFudCI-IDwvYT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgPHRkIHdpZHRoPSI2NyUiIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJwYWRkaW5nOjZweCAwIiBjbGFzcz0icmNvbCI-DQogICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiIGNsYXNzPSJwZV9hc2luIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzMzMzMzMzsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgZm9udC1mYW1pbHk6QXJpYWwsIHNhbnMtc2VyaWY7IGxpbmUtaGVpZ2h0OiAxNHB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBwYWRkaW5nOjRweCAxNXB4IDRweCAwIj4NCiAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfdGl0bGUiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCI-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLFNhbnMtU2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC1zdHlsZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMzMzY2OTk7Ij4gPGEgY2xhc3M9Im9tYV9wcl90aXRsZSIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTI0SlBSVEEzRU5VRTAmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA3NEpCNlNYOCUzRnJlZiUzRGVtXzFwXzFfdGklMjZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxJkg9T1NZR1EwTVFZOEZXTlhFR1BBVFdUSVRBVjFDQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MSIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiMzMzY2OTk7Ij4gQXBUZWNoRGVhbHMgSnVtcGVyIFdpcmVzIE1hbGUgdG8gTWFsZSwgTWFsZSB0byBGZW1hbGUsIEZlbWFsZS4uLjwvYT4gPC9zcGFuPiA8c3BhbiBjbGFzcz0ib21hLXByLWJsIiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMzM7dGV4dC1hbGlnbjpsZWZ0OyI-IDxicj48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MlBPUldFQVFVNk8yMSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZzdG9yZXMlMkZBcHRlY2hkZWFscyUyRnBhZ2UlMkYzN0JEN0I1NS00MDQ4LTQ5REEtQkQxQy0zRkI5NEE2MkE2RTglM0ZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX2FzdF9ibG4mSD1JNU5QWERKQVZBR040SU1aNlRJUkhSOTVDVldBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX2FzdF9ibG4iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IzMzNjY5OTsiPkFwVGVjaERlYWxzPC9hPiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2VfbGlzdCI-DQogICAgICAgICAgICAgICAgICAgICA8dGQ-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4gPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4gTS5SLlAuOiA8L3NwYW4-IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-IDxzdHJpa2U-4oK5NDk5LjAwPC9zdHJpa2U-IDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPiA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPiBQcmljZTogPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0icHJfcHJpY2VfaGlnaGxpZ2h0Ij4g4oK5MTg5LjAwIDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICA8dGQ-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4gPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4gWW91IFNhdmU6IDwvc3Bhbj4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9zYXZpbmdzIj4g4oK5MzEwLjAwICg2MiUpIDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-IFNvbGQgYnkgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTNJWDJUSDFHRERJUlYmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZhYWclMkZtYWluJTNGaWUlM0RVVEY4JTI2YXNpbiUzREIwNzRKQjZTWDglMjZpc0FtYXpvbkZ1bGZpbGxlZCUzRDElMjZtYXJrZXRwbGFjZUlEJTNEQTIxVEpSVVVONEtHViUyNnByb3RvY29sJTNEY3VycmVudCUyNnNlbGxlciUzREFKNlNJWkM4WVFEWlglMjZzc2htUGF0aCUzRCUyNnJlZl8lM0RwZV80MTA3NTAxXzEyMTc1MjE4ODEmSD1PRTVRVlBPSkZKOExaQVhKU1YzVEJaMzRIS0VBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEycHg7Y29sb3I6ICMzMzY2OTk7Ij5DbGlja3RlY2ggUmV0YWlsIFByaXZhdGUgTHRkPC9hPiBhbmQgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI-RnVsZmlsbGVkIGJ5IEFtYXpvbjwvc3Bhbj4uIDwvc3Bhbj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMCI-DQogICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTBweCI-DQogICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZTo4cHg7bGluZS1oZWlnaHQ6OHB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfYnlsaW5lIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGhlaWdodD0iNTAiIGNsYXNzPSJidG4iIHdpZHRoPSI4MCUiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO3dpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudCI-DQogICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgaGVpZ2h0PSIzNCIgd2lkdGg9IjEwMCUiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgaGVpZ2h0PSIzNCIgY2xhc3M9ImJ0bi1sZWFybm1vcmUtYmlnIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMTk2LCA1Myk7IGJvcmRlci1yYWRpdXM6IDVweDsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiBib2xkIj48YSBjbGFzcz0ib21hX2JpZ19sbWJ1dHRvbiIgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTJOQ0YzQUhZTFUzVlMmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA3NEpCNlNYOCUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9lbV8xcF8xX2xtJkg9VEE0MTU0VFdSSkxRVFhNVE9NU1RTV0pWR0RLQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9lbV8xcF8xX2xtIiBzdHlsZT0iZGlzcGxheTpibG9jazt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMzAzOTQyO3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nOjEwcHg7Ij5MZWFybiBtb3JlPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNnB4Ij4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJidG4tYWRkdG9saXN0LWJpZyIgd2lkdGg9IjMwJSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMTk0KTsgYm9yZGVyLXJhZGl1czogNXB4OyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IGJvbGQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0xNkI3V01QTzY2TTZRJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGaXRlbS1kaXNwYXRjaCUyRjE4Ni01NzUzNTMzLTUyNjIyNDklM0YlMjZhY3Rpb24lM0RhZGQtdG8tcmVnaXN0cnkud2lzaGxpc3QlMjZhc2luLjElM0RCMDc0SkI2U1g4JTI2c3VibWl0LmFkZC10by1yZWdpc3RyeS53aXNobGlzdC54JTNEMSUyNnN1Ym1pdC5hZGQtdG8tcmVnaXN0cnkud2lzaGxpc3QueSUzRDElMjZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxJkg9VFRMTEQyQkc4TTRaVUxDNlFVR0E4OVFVTUZLQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGNvbG9yOiByZ2IoNDcsIDQ3LCAxMjEpOyBwYWRkaW5nOjdweDsiPkFkZCB0byBXaXNoIExpc3Q8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI-PGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLW5hLnNzbC1pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS90ZW1wbGF0ZS9zZWN0aW9uLWRpdl82NDB4OC5qcGciIGFsdD0iPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ICIgYm9yZGVyPSIwIiBhbGlnbj0ibWlkZGxlIiBjbGFzcz0iZGV2aWNlV2lkdGgiIHN0eWxlPSJiaWN1YmljOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6OHB4OyBjb2xvcjojQ0NDQ0NDOyBsaW5lLWhlaWdodDoxcHg7aGVpZ2h0OiBhdXRvOyBvdXRsaW5lOiBub25lOyBib3JkZXI6IDAgbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYyI-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjY0MCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjpjZW50cmFsO21zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGNsYXNzPSJkZXZpY2VXaWR0aCI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgd2lkdGg9IjMyJSIgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiBzdHlsZT0icGFkZGluZzo2cHggMCIgY2xhc3M9Imxjb2wiPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwcHgiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImNlbnRlciIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHBhZGRpbmc6NHB4IDhweCA0cHggOHB4O21heC13aWR0aDoyNDJweCAhaW1wb3J0YW50OyI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFPMTAwSFM5TEhES1EmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjA3MVhQNTZMTSUzRnJlZiUzRGVtXzFwXzJfaW0lMjZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxJkg9U1ZITE9HQ1RTWlZDTUozQUFLU0kyVUJDQ0tZQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MSI-IDxpbWcgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvSS81MW1YdWU2ek5BTC5fU1I1MDAsNTAwXy5fQUNfU0w1MDBfU1MxNzVfLmpwZyIgY2xhc3M9Im9tYV9wcl9pbWFnZSIgYWx0PSJTcXVhZFBpeGVsIEVzcC0zMiBXaWZpLCBCbHVldG9vdGgsIER1YWwgQ29yZSBDaGlwIERldmVsb3BtZW50IEJvYXJkIChFU1AtV1JPT00tMzIpIiBib3JkZXI9IjAiIHN0eWxlPSJoZWlnaHQ6IGF1dG87IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMCBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO2Rpc3BsYXk6IGJsb2NrO3dpZHRoOiAxNzVweCAhaW1wb3J0YW50OyBoZWlnaHQ6IDE3NXB4ICFpbXBvcnRhbnQiPiA8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjclIiB2YWxpZ249Im1pZGRsZSIgYWxpZ249InJpZ2h0IiBzdHlsZT0icGFkZGluZzo2cHggMCIgY2xhc3M9InJjb2wiPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiBjbGFzcz0icGVfYXNpbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICMzMzMzMzM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IGxlZnQ7IGZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogMTRweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgcGFkZGluZzo0cHggMTVweCA0cHggMCI-DQogICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtYWxpZ246bGVmdDtjb2xvcjojMzM2Njk5OyI-IDxhIGNsYXNzPSJvbWFfcHJfdGl0bGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0yVUFGSFdLUVFDQ01BJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwNzFYUDU2TE0lM0ZyZWYlM0RlbV8xcF8yX3RpJTI2cmVmXyUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MSZIPURIRlBYWURDRFBUQ0U3Rk1GU0pFUFhVQVhQQUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODEiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMzM2Njk5OyI-IFNxdWFkUGl4ZWwgRXNwLTMyIFdpZmksIEJsdWV0b290aCwgRHVhbCBDb3JlIENoaXAgRGV2ZWxvcG1lbnQuLi48L2E-IDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im9tYS1wci1ibCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMzMzO3RleHQtYWxpZ246bGVmdDsiPiA8YnI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTMzT0NBUTJZWElCSk4mVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGc3RvcmVzJTJGc3Vucm9ib3RpY3MlMkZwYWdlJTJGMTA0MEYyRTktQTNCRS00NkUyLUExMjItRkE1RDZFREVEMzY2JTNGcmVmXyUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9hc3RfYmxuJkg9TkhHWlNBR1hXM0tKVVQyUUhETk1VUEE4QVhPQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9hc3RfYmxuIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiMzMzY2OTk7Ij5kaXltb3JlPC9hPiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2VfbGlzdCI-DQogICAgICAgICAgICAgICAgICAgICA8dGQ-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4gPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4gTS5SLlAuOiA8L3NwYW4-IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-IDxzdHJpa2U-4oK5OTk5LjAwPC9zdHJpa2U-IDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPiA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPiBQcmljZTogPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0icHJfcHJpY2VfaGlnaGxpZ2h0Ij4g4oK5NTU3LjAwIDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfc2F2aW5ncyI-DQogICAgICAgICAgICAgICAgICAgICA8dGQ-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4gPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4gWW91IFNhdmU6IDwvc3Bhbj4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICNDQzAwMDA7IiBjbGFzcz0ib21hX3ByX3ByaWNlX3ZhbF9zYXZpbmdzIj4g4oK5NDQyLjAwICg0NCUpIDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfbWVyY2hhbnQiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1NTU1NTU7IGZvbnQtc2l6ZToxMnB4OyI-IFNvbGQgYnkgPGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPThUUzhUOFU1VkZVUiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmFhZyUyRm1haW4lM0ZpZSUzRFVURjglMjZhc2luJTNEQjA3MVhQNTZMTSUyNmlzQW1hem9uRnVsZmlsbGVkJTNEMSUyNm1hcmtldHBsYWNlSUQlM0RBMjFUSlJVVU40S0dWJTI2cHJvdG9jb2wlM0RjdXJyZW50JTI2c2VsbGVyJTNEQUo2U0laQzhZUURaWCUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MSZIPU1OU0RaU0ZOQUtCQ0FZV1BQUU8xTDdEWUZTMEEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODEiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MTJweDtjb2xvcjogIzMzNjY5OTsiPkNsaWNrdGVjaCBSZXRhaWwgUHJpdmF0ZSBMdGQ8L2E-IGFuZCA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij5GdWxmaWxsZWQgYnkgQW1hem9uPC9zcGFuPi4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0ic3BhY2VyIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjhweDtsaW5lLWhlaWdodDo4cHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9ieWxpbmUiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgaGVpZ2h0PSI1MCIgY2xhc3M9ImJ0biIgd2lkdGg9IjgwJSIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7d2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBoZWlnaHQ9IjM0IiB3aWR0aD0iMTAwJSIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiBoZWlnaHQ9IjM0IiBjbGFzcz0iYnRuLWxlYXJubW9yZS1iaWciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAxOTYsIDUzKTsgYm9yZGVyLXJhZGl1czogNXB4OyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IGJvbGQiPjxhIGNsYXNzPSJvbWFfYmlnX2xtYnV0dG9uIiBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9V0JUUllSVTJGUFAwJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwNzFYUDU2TE0lMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfZW1fMXBfMl9sbSZIPVZSUksyNUtQNlZDRFNDUjdNWktTMEdFTzFPUUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfZW1fMXBfMl9sbSIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzMwMzk0Mjt3aGl0ZS1zcGFjZTpub3dyYXA7cGFkZGluZzoxMHB4OyI-TGVhcm4gbW9yZTwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjZweCI-Jm5ic3A7PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0iYnRuLWFkZHRvbGlzdC1iaWciIHdpZHRoPSIzMCUiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDE5NCk7IGJvcmRlci1yYWRpdXM6IDVweDsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBib2xkIj48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9VElQS082MDJFTlQwJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGaXRlbS1kaXNwYXRjaCUyRjE4Ni01NzUzNTMzLTUyNjIyNDklM0YlMjZhY3Rpb24lM0RhZGQtdG8tcmVnaXN0cnkud2lzaGxpc3QlMjZhc2luLjElM0RCMDcxWFA1NkxNJTI2c3VibWl0LmFkZC10by1yZWdpc3RyeS53aXNobGlzdC54JTNEMSUyNnN1Ym1pdC5hZGQtdG8tcmVnaXN0cnkud2lzaGxpc3QueSUzRDElMjZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxJkg9VkpYQTJITzhWQ0dOVVRYU1hGQU1GMklSTEFJQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGNvbG9yOiByZ2IoNDcsIDQ3LCAxMjEpOyBwYWRkaW5nOjdweDsiPkFkZCB0byBXaXNoIExpc3Q8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDx0YWJsZSB3aWR0aD0iNjQwIiBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjRkZGRkZGIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI-PGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLW5hLnNzbC1pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS90ZW1wbGF0ZS9zZWN0aW9uLWRpdl82NDB4OC5qcGciIGFsdD0iPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ICIgYm9yZGVyPSIwIiBhbGlnbj0ibWlkZGxlIiBjbGFzcz0iZGV2aWNlV2lkdGgiIHN0eWxlPSJiaWN1YmljOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6OHB4OyBjb2xvcjojQ0NDQ0NDOyBsaW5lLWhlaWdodDoxcHg7aGVpZ2h0OiBhdXRvOyBvdXRsaW5lOiBub25lOyBib3JkZXI6IDAgbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYyI-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICA8dGFibGUgd2lkdGg9IjY0MCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjpjZW50cmFsO21zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGNsYXNzPSJkZXZpY2VXaWR0aCI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgd2lkdGg9IjMyJSIgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiBzdHlsZT0icGFkZGluZzo2cHggMCIgY2xhc3M9Imxjb2wiPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwcHgiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249ImJvdHRvbSIgYWxpZ249ImNlbnRlciIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHBhZGRpbmc6NHB4IDhweCA0cHggOHB4O21heC13aWR0aDoyNDJweCAhaW1wb3J0YW50OyI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTNNRURLUlJNRTFPRVAmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZwcm9kdWN0JTJGQjBCQjdQRzU0VCUzRnJlZiUzRGVtXzFwXzNfaW0lMjZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxJkg9VE5BUkRQWkFWRkRXSEU2Q1U2N0FJSzJXN0xFQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MSI-IDxpbWcgc3JjPSJodHRwczovL20ubWVkaWEtYW1hem9uLmNvbS9pbWFnZXMvSS80MThVdWdjZk9sTC5fU1I1MDAsNTAwXy5fQUNfU0w1MDBfU1MxNzVfLmpwZyIgY2xhc3M9Im9tYV9wcl9pbWFnZSIgYWx0PSJ4Y2x1bWEgREFDIE1vZHVsZSAxMzM0IFVEQTEzMzRBIEkyUyBEQUMgU3RlcmVvIERlY29kZXIgTW9kdWxlIEZvciB1bm8gMy4zViAtIDVWIiBib3JkZXI9IjAiIHN0eWxlPSJoZWlnaHQ6IGF1dG87IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMCBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO2Rpc3BsYXk6IGJsb2NrO3dpZHRoOiAxNzVweCAhaW1wb3J0YW50OyBoZWlnaHQ6IDE3NXB4ICFpbXBvcnRhbnQiPiA8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNjclIiB2YWxpZ249Im1pZGRsZSIgYWxpZ249InJpZ2h0IiBzdHlsZT0icGFkZGluZzo2cHggMCIgY2xhc3M9InJjb2wiPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0IiBjbGFzcz0icGVfYXNpbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICMzMzMzMzM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IGxlZnQ7IGZvbnQtZmFtaWx5OkFyaWFsLCBzYW5zLXNlcmlmOyBsaW5lLWhlaWdodDogMTRweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgcGFkZGluZzo0cHggMTVweCA0cHggMCI-DQogICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InByX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtc3R5bGU6bm9ybWFsO3RleHQtYWxpZ246bGVmdDtjb2xvcjojMzM2Njk5OyI-IDxhIGNsYXNzPSJvbWFfcHJfdGl0bGUiIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0yMDdaS1o4WkFCMlhMJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcHJvZHVjdCUyRkIwQkI3UEc1NFQlM0ZyZWYlM0RlbV8xcF8zX3RpJTI2cmVmXyUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MSZIPVlaQVFHVUU3T0FHSjBDVUFHQUJFRU1BWFNFQ0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODEiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjojMzM2Njk5OyI-IHhjbHVtYSBEQUMgTW9kdWxlIDEzMzQgVURBMTMzNEEgSTJTIERBQyBTdGVyZW8gRGVjb2RlciBNb2R1bGUuLi48L2E-IDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im9tYS1wci1ibCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMzMzO3RleHQtYWxpZ246bGVmdDsiPiA8YnI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFYNTVTSTBFUEtNRDEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGc3RvcmVzJTJGeGNsdW1hJTJGcGFnZSUyRjE1NzFEMzBELTAyOTYtNDA0Qy04OTZFLUJBMzQzNjFGRkI1NyUzRnJlZl8lM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfYXN0X2JsbiZIPU5OMElPTlVBOUFWNlJBWEhUVUJDT05GTktGVUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfYXN0X2JsbiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjojMzM2Njk5OyI-eGNsdW1hPC9hPiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGhlaWdodD0iMTAiPg0KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-DQogICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2VfbGlzdCI-DQogICAgICAgICAgICAgICAgICAgICA8dGQ-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij4gPHNwYW4gY2xhc3M9InByX3ByaWNlX2xhYmVsIj4gTS5SLlAuOiA8L3NwYW4-IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjQ0MwMDAwOyIgY2xhc3M9Im9tYV9wcl9wcmljZV92YWxfbGlzdCI-IDxzdHJpa2U-4oK5NzA5LjAwPC9zdHJpa2U-IDwvc3Bhbj4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0icHJfcHJpY2Vfb3VyIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPiA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPiBEZWFsIFByaWNlOiA8L3NwYW4-IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJwcl9wcmljZV9oaWdobGlnaHQiPiDigrk1MTYuMDAgPC9zcGFuPiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9wcmljZV9zYXZpbmdzIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPiA8c3BhbiBjbGFzcz0icHJfcHJpY2VfbGFiZWwiPiBZb3UgU2F2ZTogPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogI0NDMDAwMDsiIGNsYXNzPSJvbWFfcHJfcHJpY2VfdmFsX3NhdmluZ3MiPiDigrkxOTMuMDAgKDI3JSkgPC9zcGFuPiA8L3NwYW4-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9tZXJjaGFudCI-DQogICAgICAgICAgICAgICAgICAgICA8dGQ-PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzU1NTU1NTsgZm9udC1zaXplOjEycHg7Ij4gRGlzcGF0Y2hlZCBmcm9tIGFuZCBzb2xkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0yQjhSUVJKSjVIU1BLJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGYWFnJTJGbWFpbiUzRmllJTNEVVRGOCUyNmFzaW4lM0RCMEJCN1BHNTRUJTI2aXNBbWF6b25GdWxmaWxsZWQlM0QwJTI2bWFya2V0cGxhY2VJRCUzREEyMVRKUlVVTjRLR1YlMjZwcm90b2NvbCUzRGN1cnJlbnQlMjZzZWxsZXIlM0RBMzFQVUlPUEhKNTZZMyUyNnNzaG1QYXRoJTNEJTI2cmVmXyUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MSZIPUFTUFNCQUwwMjJWTUFOWERMSVJBMkJZRE5MMEEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODEiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MTJweDtjb2xvcjogIzMzNjY5OTsiPnhjbHVtYcKuPC9hPi4gPC9zcGFuPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0ic3BhY2VyIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InNwYWNlciI-DQogICAgICAgICAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxMHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHdpZHRoPSIxIiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjhweDtsaW5lLWhlaWdodDo4cHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJwcl9ieWxpbmUiPg0KICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCIgaGVpZ2h0PSI1MCIgY2xhc3M9ImJ0biIgd2lkdGg9IjgwJSIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7d2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIiBoZWlnaHQ9IjM0IiB3aWR0aD0iMTAwJSIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiBoZWlnaHQ9IjM0IiBjbGFzcz0iYnRuLWxlYXJubW9yZS1iaWciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAxOTYsIDUzKTsgYm9yZGVyLXJhZGl1czogNXB4OyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IGJvbGQiPjxhIGNsYXNzPSJvbWFfYmlnX2xtYnV0dG9uIiBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MjdDSVIyTlJSQkU2WSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnByb2R1Y3QlMkZCMEJCN1BHNTRUJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX2VtXzFwXzNfbG0mSD0zVTRZQTAyTjEwREFOQVJZUlgyNElESEdBV1VBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX2VtXzFwXzNfbG0iIHN0eWxlPSJkaXNwbGF5OmJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMzMDM5NDI7d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6MTBweDsiPkxlYXJuIG1vcmU8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI2cHgiPiZuYnNwOzwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgY2xhc3M9ImJ0bi1hZGR0b2xpc3QtYmlnIiB3aWR0aD0iMzAlIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAxOTQpOyBib3JkZXItcmFkaXVzOiA1cHg7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogYm9sZCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTJKODMyNk5RTjlLRVkmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGZ3AlMkZpdGVtLWRpc3BhdGNoJTJGMTg2LTU3NTM1MzMtNTI2MjI0OSUzRiUyNmFjdGlvbiUzRGFkZC10by1yZWdpc3RyeS53aXNobGlzdCUyNmFzaW4uMSUzREIwQkI3UEc1NFQlMjZzdWJtaXQuYWRkLXRvLXJlZ2lzdHJ5Lndpc2hsaXN0LnglM0QxJTI2c3VibWl0LmFkZC10by1yZWdpc3RyeS53aXNobGlzdC55JTNEMSUyNnJlZl8lM0RwZV80MTA3NTAxXzEyMTc1MjE4ODEmSD1KUVRYMUFETVhYQjBWV1BEOE9QQ0tQM0hQVVlBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgY29sb3I6IHJnYig0NywgNDcsIDEyMSk7IHBhZGRpbmc6N3B4OyI-QWRkIHRvIFdpc2ggTGlzdDwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgPHRhYmxlIHdpZHRoPSI2NDAiIGNsYXNzPSJkZXZpY2VXaWR0aCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiNGRkZGRkYiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMtbmEuc3NsLWltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzAxL3RlbXBsYXRlL3NlY3Rpb24tZGl2XzY0MHg4LmpwZyIgYWx0PSI9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gPSA9ID0gIiBib3JkZXI9IjAiIGFsaWduPSJtaWRkbGUiIGNsYXNzPSJkZXZpY2VXaWR0aCIgc3R5bGU9ImJpY3ViaWM7IG1heC13aWR0aDo2NDBweDsgbWF4LWhlaWdodDo4cHg7IGNvbG9yOiNDQ0NDQ0M7IGxpbmUtaGVpZ2h0OjFweDtoZWlnaHQ6IGF1dG87IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMCBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljIj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDx0YWJsZSBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjUiIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMTAwJSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZTo1cHg7bGluZS1oZWlnaHQ6NXB4OyI-DQogICAgICAgICAgICAgICAmbmJzcDsNCiAgICAgICAgICAgICAgPC9kaXY-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJsZWZ0IiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE1Ij4NCiAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjE1IiBjbGFzcz0ic3BhY2VyIiBzdHlsZT0iZm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDsiPg0KICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgPC9kaXY-PC90ZD4NCiAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMCIgdmFsaWduPSJ0b3AiPjxpbWcgY2xhc3M9Im9tYV9vdXRyb190ZXh0X2hhbGZfYXJyb3ciIHNyYz0iaHR0cHM6Ly9pbWFnZXMtbmEuc3NsLWltYWdlcy1hbWF6b24uY29tL2ltYWdlcy9HLzAxL3RlYS9hNC5fQ0IzMzI5MzUzNzlfLmdpZiIgd2lkdGg9IjEwIiBhbHQ9Ij4iIGhlaWdodD0iMTRweCIgYm9yZGVyPSIwIiBzdHlsZT0iaGVpZ2h0OiBhdXRvOyBvdXRsaW5lOiBub25lOyBib3JkZXI6IDAgbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYyI-PC90ZD4NCiAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MUpNUjFDSjFPQUNDQyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnlvdXJzdG9yZSUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9lbV9mbCZIPTI1S01LWFpERlBCQkNHQVhHTlZKTldaU0haSUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfZW1fZmwiIGNsYXNzPSJvbWEtb3V0cm8tdGV4dCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxTYW5zLVNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zdHlsZTpub3JtYWw7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzAwNEI5MTt0ZXh0LWFsaWduOmxlZnQ7Ij4gU2VlIHNpbWlsYXIgcHJvZHVjdHMgPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTUiPg0KICAgICAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMTUiIGNsYXNzPSJzcGFjZXIiIHN0eWxlPSJmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4OyI-DQogICAgICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyIGhlaWdodD0iMTUiIGNsYXNzPSJzcGFjZXIiPg0KICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgPGRpdiB3aWR0aD0iMTAwJSIgY2xhc3M9InNwYWNlciIgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjE1cHg7Ij4NCiAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICA8L2Rpdj48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDx0YWJsZSBjbGFzcz0ic2VmX3NwYWNlciIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0iYm9yZGVyLXNwYWNpbmc6MHB4O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTttaW4td2lkdGg6MTAwJTttc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgPHRyIGhlaWdodD0iMiI-DQogICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNjY2NjYzkiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjIiPg0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvbWFfZGl2aWRlcl9mb290ZXIiIHdpZHRoPSIxMDAlIiBzdHlsZT0iZm9udC1zaXplOjJweDtsaW5lLWhlaWdodDoycHg7YmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHBzOi8vaW1hZ2VzLW5hLnNzbC1pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS90ZW1wbGF0ZS9zZWN0aW9uLWRpdl82NDB4OC5qcGcpICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgaGVpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQiPg0KICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgIDwvZGl2PjwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgIDwvdGFibGU-PCEtLSBjaGVjayBpZiB3ZSBhcmUgZ2V0dGluZyB0aGUgZW1haWxBZHMgcHJvcGVybHkgb3RoZXJ3aXNlIGRvIG5vdCBkaXNwbGF5IEFkcy0tPg0KICAgICAgICAgIDx0YWJsZSBjbGFzcz0iY3Mtc2xvdCBkZXZpY2VXaWR0aCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2NDAiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lkdGg6MTAwJTttc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIj4NCiAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZm9vdGVyLWJhbm5lciIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZm9vdGVyLWJhbm5lciIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZm9vdGVyLWJhbm5lciIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjY0MCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJkZXZpY2VXaWR0aCBzZWZfZm9vdGVyX2xpbmtmYXJtIiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIiBjbGFzcz0ibGlua2Zhcm0iIHN0eWxlPSJmb250LWZhbWlseTpIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO2Rpc3BsYXk6aW5saW5lLWJsb2NrOyI-DQogICAgICAgICAgICAgICAgICA8dGFibGUgd2lkdGg9IjY0MCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJkZXZpY2VXaWR0aCBzZWZfZm9vdGVyX2xpbmtmYXJtIiBiZ2NvbG9yPSIjRkZGRkZGIiB2YWxpZ249Im1pZGRsZSIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjRkZGRkZGIiBjbGFzcz0ibGlua2Zhcm0iIHN0eWxlPSJmb250LWZhbWlseTpIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyI-DQogICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCIgY2VsbHNwYWNpbmc9IjAiIGJnY29sb3I9IiNGRkZGRkYiIGNsYXNzPSJmYXJtIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0iZmFybWhlYWQiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTRweDtjb2xvcjojZTQ3OTExO2xpbmUtaGVpZ2h0OjE2cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMjI4LCAxMjEsIDE3KTsgbGluZS1oZWlnaHQ6IDE2cHg7IGZvbnQtd2VpZ2h0OiBib2xkIj48Zm9udCBmYWNlPSJhcmlhbCwgdmVyZGFuYSxhIHNhbnMtc2VyaWYiIHNpemU9IjMiIGNvbG9yPSIjZTQ3OTExIiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjE0cHg7Y29sb3I6I2U0NzkxMTtsaW5lLWhlaWdodDoxNnB4Ij5GaW5kIEdyZWF0IERlYWxzIG9uIE1pbGxpb25zIG9mIFByb2R1Y3RzPC9mb250PjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7bXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgY2xhc3M9InNlZl9mb290ZXJfbGlua2Zhcm0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxNTUiIHZhbGlnbj0idG9wIiBjbGFzcz0iZmFybTEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDttc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiB3aWR0aD0iOTUlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIyIiBjZWxscGFkZGluZz0iMCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj1KOVBVSjVXUExINlAmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9Cb29rcyUyRiUzRm5vZGUlM0Q5NzYzODkwMzEmSD1PU0dKOE9IM1FRWUM2NzlVVkFFRExRVUFQS1FBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX0Jvb2tzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-Qm9va3M8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0xUjc1SlA1STRSRkdLJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfbGZfZUJvb2tzJTJGJTNGbm9kZSUzRDE2MzQ3NTMwMzEmSD1ETjFWSlRTME1YME5aSVc1SkdQSk1KUlRDWDRBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX2VCb29rcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPktpbmRsZSBlQm9va3M8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj1MOENIMVpPTlJWSlYmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUzRm5vZGUlM0Q5ODQwMDk3MDMxJTI2cmVmJTNEcGVfbGZfS2VSZWFkZXIlMjZyZWZfJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxJkg9T0VNRk5CVTdESVBTR0xFN0hZS0dFSEtYQUgwQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPktpbmRsZSBlLXJlYWRlciA8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0yWDg3SU05OFNNR1Q1JlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmRwJTJGQjAwUUpET0VBTyUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9LUFcmSD1YS1pERThFNFJUNEVGWlZSVkdHUlA2WFVTSktBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX0tQVyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPktpbmRsZSBQYXBlcndoaXRlIDwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFLRFk4RjdTTlk1SzgmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9NdXNpYyUyRiUzRm5vZGUlM0Q5NzY0NDUwMzEmSD1RN0RVMUZQRElXMFBGV1ZES0NTQTBEMU01MU9BJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX011c2ljIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-TXVzaWMsPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MlFESzZWSVVJTkJRRyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX01vdmllcyUyRiUzRm5vZGUlM0Q5NzY0MTYwMzEmSD1VSkJQSTVETUU2UkVLVDZRSUE5VkNGTVJXS0FBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX01vdmllcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPk1vdmllczwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFKN0tVN0ZSOVBISUsmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9WRyUyRiUzRm5vZGUlM0Q5NzY0NjAwMzEmSD1CR0tPR0NCRlhBSTczNDlRUVJUUEJHSENBSENBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX1ZHIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-VmlkZW8gR2FtZXM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE4MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJmYXJtMiI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O21zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIHdpZHRoPSI5NSUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjIiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTNRUThRUk9VWFpRUTEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9Nb2JpbGVzJTJGJTNGbm9kZSUzRDEzODk0MDEwMzEmSD1TQUFLQ0pBTzE4RktQS1NBTEVMQ0pUU05VSUtBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2xmX01vYmlsZXMiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5Nb2JpbGVzICZhbXA7IDwvYT48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MjhUTjdVQUFLSUJBVSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX1RhYmxldHMlMkYlM0Zub2RlJTNEMTM3NTQ1ODAzMSZIPU1aNk9YTDVaU1Y5WEhERkZLRkRJWlU2QkFBQ0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfVGFibGV0cyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPlRhYmxldHM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0zT1VPTjU1Rk5NNjU4JlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfbGZfQ29tcHMlMkYlM0Zub2RlJTNEOTc2MzkyMDMxJkg9TlcyN1VCOU9ZRUZSQVZEQUdXQklZQktBV09XQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9Db21wcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkNvbXB1dGVycyAmYW1wOyBBY2Nlc3NvcmllczwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFGS0FSUlpZVVdIUUYmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9sZl9DYW1lcmElMkYlM0Zub2RlJTNEMTM4ODk3NzAzMSZIPUVaMEZFUlNKVEFaSFRYR1A1QlpBSExYNlVBWUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfbGZfQ2FtZXJhIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-Q2FtZXJhcyw8L2E-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPU9PQ0hRSUJTS1FaRyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0FWVFYlMkYlM0Zub2RlJTNEMTU3NTQwNzAzMSZIPVEyTldRU0xGSzFKMkFXRUlBM1hYOUFGUkFYRUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfQVZUViIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPiBBdWRpbyAmYW1wOyBWaWRlbzwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFLWlJMT1NPRUpPSkcmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9NdXNpY2FsSW5zdHIlMkYlM0Zub2RlJTNEMzY3NzY5NzAzMSZIPTRJRUEyMDdEREFZQVZFVUxYWDlZN1dBU0hTU0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfTXVzaWNhbEluc3RyIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-TXVzaWNhbCBJbnN0cnVtZW50czwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTNMUEozWEg4M0FNSEQmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9TcG9ydHMlMkYlM0Zub2RlJTNEMTk4NDQ0MzAzMSZIPU1BRlY4UFNVTFVWSktOWlBRNVBKTFJWQ1NPT0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfU3BvcnRzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-U3BvcnRzICZhbXA7IEZpdG5lc3M8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0yTzFZT0JUWkxaOEdJJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfSEslMkYlM0Zub2RlJTNEOTc2NDQyMDMxJkg9VTI2RzdCUVMzQVRSWERaNVZRU09QR1ZZRzNTQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9ISyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkhvbWUgJmFtcDsgS2l0Y2hlbjwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTM1IiB2YWxpZ249InRvcCIgY2xhc3M9ImZhcm0zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7bXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgd2lkdGg9Ijk1JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MzhMV0xGQjFURzlRRCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0Nsb3RoaW5nJTJGJTNGbm9kZSUzRDE1NzEyNzEwMzEmSD1RUU9POU9OSlVKSlhTN1E4R0FIWFZBTEJGQUFBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0Nsb3RoaW5nIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-Q2xvdGhpbmcsIEFjY2Vzc29yaWVzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MUxGMUkxQldVUlVSMSZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX1dhdGNoZXMlMkYlM0Zub2RlJTNEMTM1MDM4NzAzMSZIPUFaU0tRVEw0WURLREZRVkNMWVNKTEFUM040OEEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfV2F0Y2hlcyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPldhdGNoZXMsPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9Mk01SUhISTFGSDk3SCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0pld2VsbGVyeSUyRiUzRm5vZGUlM0QxOTUxMDQ4MDMxJkg9V1hBT0ZUTERNNFZIRk9LTllXQ1FBWkJWRlBXQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9KZXdlbGxlcnkiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5KZXdlbGxlcnk8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj1WWEcxOVhZUlVKWFomVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9IYW5kYmFncyUyRiUzRm5vZGUlM0QxOTgzMzM4MDMxJkg9S1BMM1NZNUpOSjdLNUxWRUJUVkJPM09YVlpJQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9IYW5kYmFncyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkhhbmRiYWdzICZhbXA7IDwvYT48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9Mlo0QTBWQ1FDOERWUiZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0x1Z2dhZ2UlMkYlM0Zub2RlJTNEMjQ1NDE2OTAzMSZIPUFLQ0VBWVRRMkVFR1NVTllSWDNCOFBEODNISUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfTHVnZ2FnZSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkx1Z2dhZ2U8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0yQTM5QUpXTk02MDdZJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfU2hvZXMlMkYlM0Zub2RlJTNEMTk4MzM5NjAzMSZIPUNBUUMzTklJVVRFTVVSTFhWQUJRQUNNT0JaT0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfU2hvZXMiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5TaG9lczwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTNPMTZMUlVZOVRVUEQmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9CZWF1dHklMkYlM0Zub2RlJTNEMTM1NTAxNjAzMSZIPUM1RjhQUFlZWFlWTFhYWk1YSzFIQUxWOUxTS0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfQmVhdXR5IiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-QmVhdXR5ICZhbXA7IDwvYT48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9M0dYRk4yWTFOQ0tTTyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0hlYWx0aCUyRiUzRm5vZGUlM0QxMzUwMzg0MDMxJkg9RFhLRUpaTFcxVlcwUFNPVU5EM0ZFWFlUTlg0QSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9IZWFsdGgiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5IZWFsdGg8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0xWVM1UlVKVlNDUFEmVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9Ub3lzJTJGJTNGbm9kZSUzRDEzNTAzODAwMzEmSD1ISERRN1EzRkVESjBSQTVZQVZMNFhBMEJQQU1BJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX1RveXMiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5Ub3lzICZhbXA7IDwvYT48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MTdEMTBHRTUzQzZCRCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0JhYnklMkYlM0Zub2RlJTNEMTU3MTI3NDAzMSZIPUNEQUVMR1ZZT1NEOFJPNEQ3QVNSR1hQSDNHUUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfQmFieSIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkJhYnkgUHJvZHVjdHM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjE3MCIgdmFsaWduPSJ0b3AiIGNsYXNzPSJmYXJtNCI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O21zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIHdpZHRoPSI5NSUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjIiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL3IuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTM1RklTQjRMTEczTE0mVD1DJlU9aHR0cHMlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGYiUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9HQyUyRiUzRm5vZGUlM0QzNzA0OTgyMDMxJkg9VjFITUkxTjNJS1NGWkRLTUVRRjlFTVhBU0JJQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9HQyIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkdpZnQgQ2FyZHM8L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9yLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0xWUZFU1dQUklBUkJUJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmIlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfUGV0cyUyRiUzRm5vZGUlM0QyNDU0MTgxMDMxJkg9SDFWRkI5TkFVTkUxRkZYQ0tBSlE2QkhZR1QwQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9QZXRzIiBzdHlsZT0iY29sb3I6IzY2Njt0ZXh0LWRlY29yYXRpb246bm9uZSI-UGV0IFN1cHBsaWVzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MkdKT0VBWkRVMFczTCZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZiJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX0dvdXJtZXQlMkYlM0Zub2RlJTNEMjQ1NDE3ODAzMSZIPTNMOEE1VlY2VlZSTlFEWFhQMEFPVENZMEU4T0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfR291cm1ldCIgc3R5bGU9ImNvbG9yOiM2NjY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPkdvdXJtZXQgPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9UVMwRFpESU9TQ0FPJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRm1zaG9wJTNGcmVmXyUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MSZIPTVPU0xSNExRSEwwQlVaSDhJVExFV1hQVUJNVUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODEiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5BbWF6b24gU2hvcHBpbmcgQXBwPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9OUk3M1c2WE9OUU5ZJlQ9QyZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGZGlnaXRhbCUyRmZpb25hJTJGa2NwLWxhbmRpbmctcGFnZSUzRnJlZl8lM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfS0NQJkg9SlpLQVZUVE9JS1UzQVROUkdQSzU1TERTVlRPQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9LQ1AiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5LaW5kbGUgUmVhZGluZyBBcHBzPC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3AvZi5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MjFOREZDSlFUOVVONyZUPUMmVT1odHRwcyUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRmZlYXR1cmUuaHRtbCUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9BcHBzdG9yZSUzRmllJTNEVVRGOCUyNmRvY0lkJTNEMTAwMDcyMTc3MyZIPTBHOE9EQUhRSVlOVVNJRllVSUYySlBaVTNaR0EmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfQXBwc3RvcmUiIHN0eWxlPSJjb2xvcjojNjY2O3RleHQtZGVjb3JhdGlvbjpub25lIj5BcHBzdG9yZSBmb3IgQW5kcm9pZDwvYT48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJzZWZfc3BhY2VyIiB3aWR0aD0iNjQwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImJvcmRlci1zcGFjaW5nOjBweDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7bXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgICA8dHIgaGVpZ2h0PSIyIj4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjY2NjY2M5IiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjIiPg0KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjY0MCIgc3R5bGU9ImZvbnQtc2l6ZToycHg7bGluZS1oZWlnaHQ6MnB4O2JhY2tncm91bmQtaW1hZ2U6IHVybChodHRwczovL2ltYWdlcy1uYS5zc2wtaW1hZ2VzLWFtYXpvbi5jb20vaW1hZ2VzL0cvMDEvdGVtcGxhdGUvc2VjdGlvbi1kaXZfNjQweDguanBnKSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGhlaWdodDogMTBweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgPC9kaXY-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-DQogICAgLnNlZl9mb290ZXJfY29ubmVjdCAueXNob3J0Y3V0cyB7IGNvbG9yOiNGRkZGRkYgfQ0KPC9zdHlsZT4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJzZWZfZm9vdGVyX2Nvbm5lY3QiIGJnY29sb3I9IiNGRkZGRkYiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjEwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjY0MCIgYWxpZ249ImNlbnRlciIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHJnYigxMzYsIDEzNiwgMTM2KTsgaGVpZ2h0OiAwcHggIWltcG9ydGFudDsgbWF4LWhlaWdodDogMHB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMHB4OyBtYXJnaW46IDA7IHdpZHRoOiAxMDAlIj4NCiAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICA8dHI-DQogICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNTAlIj4NCiAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGFsaWduPSJsZWZ0IiBjZWxscGFkZGluZz0iNiIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJzZXR0aW5ncyIgY2JvcmRlcj0iMCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9VkNFSERKREozR1pQJlQ9QyZVPWh0dHAlM0ElMkYlMkZ3d3cuYW1hem9uLmluJTJGcmVmJTNEcGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2Zvb3Rlcl9hbWF6b25sb2dvJTJGJkg9WUNYR0lDVk8wVlNVQkYyNVJETjRQRjZLNExHQSZyZWZfPXBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9mb290ZXJfYW1hem9ubG9nbyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vZy1lYzIuaW1hZ2VzLWFtYXpvbi5jb20vaW1hZ2VzL0cvMzEvYWEvYW1hem9uL2xvZ28yLmdpZiIgYWx0PSJBbWF6b24uaW4iIGJvcmRlcj0iMCIgYWxpZ249ImxlZnQiIHN0eWxlPSJoZWlnaHQ6IGF1dG87IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMCBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljIj48L2E-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgICAgICA8dGQgYWxpZ249InJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iY29ubmVjdCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNiIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJyaWdodCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiPg0KICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI-PGZvbnQgc3R5bGU9ImZvbnQtZmFtaWx5OiB2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM2NjY7IGxpbmUtaGVpZ2h0OjEwcHgiIGNvbG9yPSIjOTk5IiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWYiIHNpemU9IjEiPkNvbm5lY3Qgd2l0aCBBbWF6b24gSW5kaWE8L2ZvbnQ-PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZmFjZWJvb2siPjxmb250IHN0eWxlPSJmb250LWZhbWlseTogdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjOTk5OyIgY29sb3I9IiM5OTkiIGZhY2U9InZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZiIgc2l6ZT0iMSI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPVpBQjUyTURHNDZIOCZUPUMmVT1odHRwJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRmdwJTJGcmVkaXJlY3QuaHRtbCUyRnJlZiUzRHBlXzQxMDc1MDFfMTIxNzUyMTg4MV9wZV9mYl9mdHIlMkYlM0Zsb2NhdGlvbiUzRGh0dHAlM0ElMkYlMkZ3d3cuZmFjZWJvb2suY29tJTJGQW1hem9uSU4lMjZ0b2tlbiUzRDIwNzVENUVBQzdCQjIxNDA4OTcyOEUyMTgzRkQzOTE3MDZENDFFOTQmSD05SVRBM0VFUlVKWjhFOUJaQjJNWUpWQVRZQ1lBJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX3BlX2ZiX2Z0ciIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vZy1lY3guaW1hZ2VzLWFtYXpvbi5jb20vaW1hZ2VzL0cvMDEvdXMtbWFpbC9GQmxvZ28uZ2lmIiBhbHQ9ImltYWdlIiBib3JkZXI9IjAiIGhlaWdodD0iMzAiIGhzcGFjZT0iMCIgdnNwYWNlPSIwIiB3aWR0aD0iMzAiIHN0eWxlPSJ3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDtoZWlnaHQ6IGF1dG87IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMCBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljIj48L2E-PC9mb250PjwvdGQ-DQogICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InR3aXR0ZXIiPjxmb250IHN0eWxlPSJmb250LWZhbWlseTogdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjOTk5OyIgY29sb3I9IiM5OTkiIGZhY2U9InZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZiIgc2l6ZT0iMSI-PGEgaHJlZj0iaHR0cHM6Ly93d3cuYW1hem9uLmluL2dwL2YuaHRtbD9DPTFEWVdGQ1lEQllGMEsmSz0ySDVEUEtYVlNaQTJTJk09dXJuOnJ0bjptc2c6MjAyNDExMjUwMDEzNDEzNjQxODI3YWE0OGQ0NWEwYTc1MjNlNDU4NjMwcDBldSZSPTFRRTNJRFRWVEhMN1QmVD1DJlU9aHR0cCUzQSUyRiUyRnd3dy5hbWF6b24uaW4lMkZncCUyRnJlZGlyZWN0Lmh0bWwlMkZyZWYlM0RwZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfdHdfZnRyJTJGJTNGbG9jYXRpb24lM0RodHRwJTNBJTJGJTJGdHdpdHRlci5jb20lMkZBbWF6b25JTiUyNnRva2VuJTNEQTMwOURGQkZDQjFFMzdBODA4RkY1MzE5MzQ4NTVEQzgxN0YxMzBCNiZIPUEwQTI3WElSUzlNRkFDSTJZMEVTUTQ2WkFTSUEmcmVmXz1wZV80MTA3NTAxXzEyMTc1MjE4ODFfcGVfdHdfZnRyIiB0YXJnZXQ9Il9ibGFuayI-PGltZyBzcmM9Imh0dHA6Ly9nLWVjeC5pbWFnZXMtYW1hem9uLmNvbS9pbWFnZXMvRy8wMS91cy1tYWlsL1R3aXR0ZXJMb2dvLmdpZiIgYWx0PSJpbWFnZSIgYm9yZGVyPSIwIiBoZWlnaHQ9IjMwIiBoc3BhY2U9IjAiIHZzcGFjZT0iMCIgd2lkdGg9IjMwIiBzdHlsZT0id2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7aGVpZ2h0OiBhdXRvOyBvdXRsaW5lOiBub25lOyBib3JkZXI6IDAgbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYyI-PC9hPjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgIDwvdGJvZHk-DQogICAgICAgICAgICAgIDwvdGFibGU-DQogICAgICAgICAgICAgIDx0YWJsZSBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNjQwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InNlZl9sZWdhbF9mb290ZXIiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNlM2UzZTM7bXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI3LCAyMjcsIDIyNykiIGJnY29sb3I9IiNlM2UzZTMiPg0KICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgIDx0ciBoZWlnaHQ9IjEwIj4NCiAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIxMDAlIj4NCiAgICAgICAgICAgICAgICAgIDxkaXYgd2lkdGg9IjEwMCUiIHN0eWxlPSJmb250LXNpemU6MTBweDsgbGluZS1oZWlnaHQ6MTBweCI-DQogICAgICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPg0KICAgICAgICAgICAgICAgIDwvdHI-DQogICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiIGNsYXNzPSJsZWdhbC10ZXh0IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIFNhbnMtU2VyaWY7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6IHJnYigxMDIsIDEwMiwgMTAyKSI-V2UgaG9wZSB5b3UgZm91bmQgdGhpcyBtZXNzYWdlIHRvIGJlIHVzZWZ1bC4gSG93ZXZlciwgaWYgeW91J2QgcmF0aGVyIG5vdCByZWNlaXZlIGZ1dHVyZSBlLW1haWxzIG9mIHRoaXMgc29ydCBmcm9tIEFtYXpvbi5pbiwgcGxlYXNlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFtYXpvbi5pbi9ncC9mLmh0bWw_Qz0xRFlXRkNZREJZRjBLJks9Mkg1RFBLWFZTWkEyUyZNPXVybjpydG46bXNnOjIwMjQxMTI1MDAxMzQxMzY0MTgyN2FhNDhkNDVhMGE3NTIzZTQ1ODYzMHAwZXUmUj0zQ1JFUFhBQTdaVk9CJlQ9WCZVPWh0dHBzJTNBJTJGJTJGd3d3LmFtYXpvbi5pbiUyRiUyRmdwJTJGZ3NzJTJGbyUyRjEtUGl2alZxeEk1NmhQUzRiRVBJYWlmcnpLMHFxVWh5NFJWZUpJUEZhRlNtZE5qWnpqZTVXNHZUaG9wMGNtUTNBJkg9TUlESVpONllSUE9BVTJLTklUVTFDTExGSFQ4QSIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2EsU2Fucy1TZXJpZjsgZm9udC1zaXplOiAxMHB4OyI-b3B0LW91dCBoZXJlPC9hPiA8YnI-PGJyPg0KICAgICAgICAgICAgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgcHJvZHVjdCBwcmljZXMgYW5kIGF2YWlsYWJpbGl0eSBhcmUgc3ViamVjdCB0byBjaGFuZ2UuIFByaWNlcyBhbmQgYXZhaWxhYmlsaXR5IHdlcmUgYWNjdXJhdGUgYXQgdGhlIHRpbWUgdGhpcyBuZXdzbGV0dGVyIHdhcyBzZW50OyBob3dldmVyLCB0aGV5IG1heSBkaWZmZXIgZnJvbSB0aG9zZSB5b3Ugc2VlIHdoZW4geW91IHZpc2l0IEFtYXpvbi5pbi4gPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgIEFtYXpvbi5pbiBNYXJrZXRwbGFjZSBwbGF0Zm9ybTogUHJvZHVjdHMgc29sZCBieSBhIE1hcmtldHBsYWNlIHNlbGxlciBhcmUgc3ViamVjdCB0byB0aGF0IHNlbGxlcidzIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHNhbGUuIFNlZSB3d3cuQW1hem9uLmluIGZvciBkZXRhaWxzLiA8YnI-PGJyPg0KICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZTogMTIxNzUyMTg4MTxicj48YnI-DQogICAgICAgICAgICAgICAgICAgVGhpcyBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSBmb2xsb3dpbmcgZS1tYWlsIGFkZHJlc3M6IDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLFNhbnMtU2VyaWY7IGZvbnQtc2l6ZTogMTBweDsiPnBza2h1c2hhbEBnbWFpbC5jb208L3NwYW4-PC90ZD4NCiAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT48L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgY2xhc3M9Im1vYmlsZS1oaWRlLWdtYWlsIiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSI-DQogICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICA8dGQgaGVpZ2h0PSIxIiBjbGFzcz0iaGlkZSIgc3R5bGU9Im1pbi13aWR0aDo2MjBweDsgZm9udC1zaXplOjBweDtsaW5lLWhlaWdodDowcHg7Ij48aW1nIGhlaWdodD0iMSIgc3R5bGU9Im1pbi13aWR0aDogNjIwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO2hlaWdodDogYXV0bzsgb3V0bGluZTogbm9uZTsgYm9yZGVyOiAwIG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWMiPjwvdGQ-DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgIDwvdGFibGU-PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICA8L3Rib2R5Pg0KICAgICAgPC90YWJsZT48L3RkPg0KICAgIDwvdHI-DQogICA8L3Rib2R5Pg0KICA8L3RhYmxlPg0KIDxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL3d3dy5hbWF6b24uaW4vZ3Avci5odG1sP0M9MURZV0ZDWURCWUYwSyZLPTJINURQS1hWU1pBMlMmTT11cm46cnRuOm1zZzoyMDI0MTEyNTAwMTM0MTM2NDE4MjdhYTQ4ZDQ1YTBhNzUyM2U0NTg2MzBwMGV1JlI9MUNSVkoyQU5JWEtEJlQ9RSZVPWh0dHBzJTNBJTJGJTJGaW1hZ2VzLWV1LnNzbC1pbWFnZXMtYW1hem9uLmNvbSUyRmltYWdlcyUyRkclMkYwMSUyRm5hdiUyRnRyYW5zcC5naWYmSD0wNkRRQUcxQ1I0VDlVUDEyM05KWk41S1NPUU9BJnJlZl89cGVfNDEwNzUwMV8xMjE3NTIxODgxX29wZW4iIC8-PC9ib2R5Pg0KPC9odG1sPg0KDQoNCg0K" - } - } - ] - }, - "sizeEstimate": 95303, - "historyId": "527027", - "internalDate": "1732493621000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_09_193604ad97c9fe62_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_09_193604ad97c9fe62_20241126.json deleted file mode 100644 index 6c7dde9..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_09_193604ad97c9fe62_20241126.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "id": "193604ad97c9fe62", - "threadId": "193604ad97c9fe62", - "labelIds": [ - "CATEGORY_PROMOTIONS", - "UNREAD", - "INBOX" - ], - "snippet": "Recycle your PDF gold and reduce your workload with Acrobat Pro. Don't retype \u2014 convert. Don't start from scratch. Easily export PDFs to Microsoft Word, Excel, or PowerPoint with Adobe Acrobat", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp636404wrq; Sun, 24 Nov 2024 14:28:58 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IG02Zz30iAXQJFRHwhVqBjRs62bpBBF9EmsARKy8d0TbGNC/QbESPGoHcwafLZ+/DTw8fAP" - }, - { - "name": "X-Received", - "value": "by 2002:a05:6a00:2ea5:b0:724:f1c9:236c with SMTP id d2e1a72fcca58-724f1c924a3mr11174135b3a.23.1732487338215; Sun, 24 Nov 2024 14:28:58 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732487338; cv=none; d=google.com; s=arc-20240605; b=BkRQX1CoSbdgeVpMHZuyACpWp9taQwJGxtvDTif3IxAICjpTdjeWq+5JdDV4Uwnu02 NdzQIxmVL/NR2u6kGifSp2aNI5G5kNlAcKbW3FFAuYPYGyEwKGF4cgayfyT5ttOxXSb8 OL/vIfHGMB+EhWM9CdxN/bDiqrwSKhKr7HeyE5qa5+KvcnWayhPk+drRLcxfaVdx8c09 G9a+LuNwnaRkINQuT9uCNYn1nYbt6VXC6aycx0tXwKbkT1jEMmbEbfATfxz0JV7N0LZL S20NrLq6gyBqaOeMtYj7yoGK66S1WO93I2IvkQ/cL1RHjVTWi11uJQwCX6r+a0DIJSr+ SqVw==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe-post:list-unsubscribe:precedence:list-id :message-id:mime-version:reply-to:to:date:subject:from :dkim-signature; bh=1lptYPv/3h7ptWQkDQ2BQd+y6H+sw4rkTtaN67WzQ0g=; fh=wSHF2rrasHXl3o4LupFQZ06Qw8S5yTQ44eGiiuBsHt4=; b=O2SbZHiPbOR3NTCBFGyrvX4FO8Jt4Xk1bZYoKlaJJ4iIJa4s7H972SL3ulx8p387KG KPDMaDD3rK5AFHj912NyuvG1E0hnbbPM7avJ9b/etApzS7vAqPWsbsRNlzlVA1fkVwBE I09G12ixs68RrKRG4ektvSgvwtadrSQbIjGshTRdUEh37rn3qg4onOYrm51/8vw5hx4k bErFBhmk/NSiM0Bhd36CbJjIYhpF2es4focowTXAUku8/Z5FTGjn42PmCclg1MXNDAb/ pAaYYlblh3eqDhsMxxWS4Cg5e4AMC3BXZK90q++mstuxthl4CxL7gxcPVaUD7s/NYN5w QoNg==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@mail.adobe.com header.s=neolane header.b=PGed0onR; spf=pass (google.com: domain of adobe1apacmid@mail.adobe.com designates 192.243.228.145 as permitted sender) smtp.mailfrom=adobe1apacmid@mail.adobe.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=mail.adobe.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from r145.mail.adobe.com (r145.mail.adobe.com. [192.243.228.145]) by mx.google.com with ESMTPS id d2e1a72fcca58-724de6d55b0si7337017b3a.335.2024.11.24.14.28.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Nov 2024 14:28:58 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of adobe1apacmid@mail.adobe.com designates 192.243.228.145 as permitted sender) client-ip=192.243.228.145;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@mail.adobe.com header.s=neolane header.b=PGed0onR; spf=pass (google.com: domain of adobe1apacmid@mail.adobe.com designates 192.243.228.145 as permitted sender) smtp.mailfrom=adobe1apacmid@mail.adobe.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=mail.adobe.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.adobe.com; s=neolane; t=1732487085; bh=1lptYPv/3h7ptWQkDQ2BQd+y6H+sw4rkTtaN67WzQ0g=; h=From:Subject:Date:To:MIME-Version:Message-ID:List-Unsubscribe:\t List-Unsubscribe-Post:Content-Type; b=PGed0onRzbU40A0rSs93G37hCp/BC21G75ixcyQIY7N0j4E/T2iszXK69V8W6VR6b\t FhQiwITgY75GLCbWQFfXS/f53b1d0KcnR1flrGqCUOwVnhnC4BMxb2jSNuRY7xJQzU\t oj2qPmkO2EDyiqWgMRdKgO7iYcfGa3HHQVjOtbeY=" - }, - { - "name": "X-MSFBL", - "value": "FNvCf8tUPE+TVHz+Db2yzES18D7yLKbBjFGiRb5d/P0=|eyJnIjoicHJvZC5kZWZ hdWx0XzQ3YjUzMWVjLWY5MzEtNDYwMS1hMGU4LTIzZTE4MWRlYTBkMCIsInJjcHR fbWV0YSI6eyAibSI6ICItNzI4MDY3MTk2IiwgImQiOiAiMTQ3OTQwNDkxIiwgIml uIjogImFkb2JlaW5fbWlkX3Byb2Q4IiwgInIiOiAicHNraHVzaGFsQGdtYWlsLmN vbSIgfSwiciI6InBza2h1c2hhbEBnbWFpbC5jb20iLCJiIjoiYXdzX2Fkb2JlaW5 0X3Byb2Q4X3Byb2QuZGVmYXVsdF9tb21lbnR1bTAzX210YTAwMV8xOTIuMjQzLjI yOC4xNDUifQ==" - }, - { - "name": "Received", - "value": "from [10.139.37.132] ([10.139.37.132:39084] helo=r143.mail.adobe.com) by momentum03.or1.cpt.adobe.net (envelope-from ) (ecelerity 4.2.38.999 r(:)) with ESMTP id F7/55-50100-DA7A3476; Sun, 24 Nov 2024 14:24:45 -0800" - }, - { - "name": "From", - "value": "Adobe Acrobat " - }, - { - "name": "Subject", - "value": "Save time and reuse your best content" - }, - { - "name": "Date", - "value": "Sun, 24 Nov 2024 14:24:43 -0800" - }, - { - "name": "To", - "value": "" - }, - { - "name": "Reply-To", - "value": "Adobe Acrobat " - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "X-mailer", - "value": "nlserver, Build 6.7.0" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "X-250ok-CID", - "value": "adobeA681974_APAC-17120766_241124" - }, - { - "name": "X-CSA-Complaints", - "value": "whitelist-complaints@eco.de" - }, - { - "name": "List-Id", - "value": "<-509008722.neolane.client.com>" - }, - { - "name": "Precedence", - "value": "bulk" - }, - { - "name": "List-Unsubscribe", - "value": "" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; charset=\"windows-1252\"; boundary=\"----=_NextPart_823_A9D79D3B.A9D79D3B\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"utf-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "8bit" - } - ], - "body": { - "size": 1357, - "data": "VmlldyB3ZWIgdmVyc2lvbjoNCmh0dHBzOi8vdC1pbmZvLm1haWwuYWRvYmUuY29tL3IvP2lkPXRlOWVmZTIxOCxmZTNlOGJlZSxjMDA1ODE0ZiZlPWNERTlKVFF3YmxkelEyUndSRkk0VVRsTGRsTnVZVzVESlRKR2JuUnJVVU5hY0ZsellqTlpSa3RSZGtGUmRXNWpNelZqSlRORSZzPXozblFVcjV0TDZrMERWOFd5eDhYb2U0QXJKWWk0dTdheGI3N0dZaU51dlENCg0KVW5mb3J0dW5hdGVseSwgeW91ciBlbWFpbCBjbGllbnQgY2Fubm90IGRpc3BsYXkgSFRNTCBvciB5b3VyIHNldHRpbmdzIGFyZSB0dXJuZWQgb2ZmLiBUbyB2aWV3IHRoaXMgZW1haWwsIHBsZWFzZSBjbGljayBvciBjb3B5IGFuZCBwYXN0ZSB0aGUgbGluayBhYm92ZSBpbnRvIHlvdXIgYnJvd3Nlci4NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KVGhpcyBpcyBhIG1hcmtldGluZyBlbWFpbCBmcm9tIEFkb2JlIFN5c3RlbXMgU29mdHdhcmUgSXJlbGFuZCBMaW1pdGVkLCA0LTYgUml2ZXJ3YWxrLCBDaXR5d2VzdCBCdXNpbmVzcyBQYXJrLCBEdWJsaW4gMjQsIElyZWxhbmQuDQoNCkNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluayB0byB1bnN1YnNjcmliZSwgb3Igc2VuZCB1cyBhbiB1bnN1YnNjcmliZSByZXF1ZXN0IHRvIHRoZSBwb3N0YWwgYWRkcmVzcyBhYm92ZS4NCkNsaWNrJm5ic3A7aGVyZTogIGh0dHBzOi8vdC1pbmZvLm1haWwuYWRvYmUuY29tL3IvP2lkPXRlOWVmZTIxOCxmZTNlOGJlZSxjMDA1ODE1MCZlPWNERTlKVFF3VDFjMGNuSTRVMGRqTmpKT1RVVlZiWGRoU1RKU2RITmtVV2xsY0V4NU1VZG1Ua1FsTWtadVNsWm5WMWhKSlRORUpuQXlQU1pzYjJNOWFXNG1jRE05TVRrJnM9TnJxVGxzVmhUcTBLWnY1dnB2UXRPd0hWZi03bDB0UWhRU3RfbDRRX3NOcyAgDQoNClBsZWFzZSByZXZpZXcgdGhlIEFkb2JlIFByaXZhY3kgUG9saWN5Lg0KaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9dGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MTUxDQoNClRvIGVuc3VyZSBmdXR1cmUgZGVsaXZlcnkgb2YgZW1haWwsIHBsZWFzZSBhZGQgbWFpbEBtYWlsLmFkb2JlLmNvbSB0byB5b3VyIGFkZHJlc3MgYm9vaywgY29udGFjdHMsIG9yIHNhZmUgc2VuZGVycyBsaXN0Lg0KaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9dGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MTUyDQoNClBsZWFzZSBkbyBub3QgcmVwbHkgdG8gdGhpcyBtZXNzYWdlLiBUbyBjb250YWN0IEFkb2JlLGZpbmQgb3B0aW9ucyBvbmxpbmUuDQpodHRwczovL3QtaW5mby5tYWlsLmFkb2JlLmNvbS9yLz9pZD10ZTllZmUyMTgsZmUzZThiZWUsYzAwNTgxNTMNCg==" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"utf-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 15684, - "data": "DQoNCg0KPCFET0NUWVBFIGh0bWw-DQo8aHRtbCB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOnY9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiPg0KPGhlYWQ-DQo8bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vd3d3LmFkb2JlLmNvbS9mYXZpY29uLmljbyIgdHlwZT0iaW1hZ2UveC1pY29uIj4NCjxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly93d3cuYWRvYmUuY29tL2Zhdmljb24uaWNvIiB0eXBlPSJpbWFnZS94LWljb24iPg0KPG1ldGEgbmFtZT0ieC1hcHBsZS1kaXNhYmxlLW1lc3NhZ2UtcmVmb3JtYXR0aW5nIj4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLjAiPg0KPG1ldGEgbmFtZT0iZm9ybWF0LWRldGVjdGlvbiIgY29udGVudD0idGVsZXBob25lPW5vIj4NCjxtZXRhIG5hbWU9ImZvcm1hdC1kZXRlY3Rpb24iIGNvbnRlbnQ9ImRhdGU9bm8iPg0KPG1ldGEgbmFtZT0iZm9ybWF0LWRldGVjdGlvbiIgY29udGVudD0iYWRkcmVzcz1ubyI-DQo8bWV0YSBuYW1lPSJmb3JtYXQtZGV0ZWN0aW9uIiBjb250ZW50PSJlbWFpbD1ubyI-DQo8dGl0bGU-U2F2ZSB0aW1lIGFuZCByZXVzZSB5b3VyIGJlc3QgY29udGVudDwvdGl0bGU-DQoNCjwhLS1baWYgbXNvXT4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI-DQpib2R5LCB0YWJsZSwgdGQgew0KZm9udC1mYW1pbHk6YWRvYmUtY2xlYW4sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQp9DQp0ZC5oaWRle2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30NCi53ZWI1MHt3aWR0aDogMjBweCAhaW1wb3J0YW50O30NCi53ZWIyMHt3aWR0aDogNTBweCAhaW1wb3J0YW50O30NCjwvc3R5bGU-DQo8eG1sPg0KPG86T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4NCjxvOkFsbG93UE5HLz4NCjxvOlBpeGVsc1BlckluY2g-OTY8L286UGl4ZWxzUGVySW5jaD4NCjwvbzpPZmZpY2VEb2N1bWVudFNldHRpbmdzPg0KPC94bWw-DQo8IVtlbmRpZl0tLT4gDQo8IS0tW2lmIGd0IG1zbyAxNV0-DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwiPg0KLyogT3V0bG9vayAyMDE2IEhlaWdodCBGaXggKi8NCnRhYmxlLCB0ciwgdGQge2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7fQ0KdHIgeyBmb250LXNpemU6MHB4OyBsaW5lLWhlaWdodDowcHg7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IH0NCjwvc3R5bGU-DQo8IVtlbmRpZl0tLT4NCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCkBpbXBvcnQgdXJsKCJodHRwczovL3VzZS50eXBla2l0Lm5ldC9vbnI4dGJyLmNzcyIpOw0KDQpAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7DQp9DQouUmVhZE1zZ0JvZHkgew0Kd2lkdGg6IDEwMCU7DQp9DQouRXh0ZXJuYWxDbGFzcyB7DQp3aWR0aDogMTAwJTsNCn0NCnRhYmxlIHsNCmJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7DQp9DQphLCBhOnZpc2l0ZWQgew0KY29sb3I6ICMzMjFGRUQ7DQp0ZXh0LWRlY29yYXRpb246IG5vbmU7DQp9DQoubGVnYWwgYSB7DQp0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCn0NCi8qIGlPUyBCTFVFIExJTktTICovDQphW3gtYXBwbGUtZGF0YS1kZXRlY3RvcnNdIHsNCmNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7DQp0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsNCmZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50Ow0KZm9udC1mYW1pbHk6IGluaGVyaXQgIWltcG9ydGFudDsNCmZvbnQtd2VpZ2h0OiBpbmhlcml0ICFpbXBvcnRhbnQ7DQpsaW5lLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50Ow0KfQ0KLm1vYmlsZSB7DQpib3JkZXItc3BhY2luZzogMDsNCmRpc3BsYXk6IG5vbmUhaW1wb3J0YW50Ow0KaGVpZ2h0OiAwOw0KbWF4LWhlaWdodDogMDsNCm1zby1oaWRlOiBhbGw7DQpvdmVyZmxvdzogaGlkZGVuOw0KdmlzaWJpbGl0eTogaGlkZGVuOw0Kd2lkdGg6IDA7DQp9DQoNCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCkgew0KdSB-IGRpdiB7DQptaW4td2lkdGg6IDEwMHZ3Ow0KfQ0KZGl2ID4gdSB-IGRpdiB7DQptaW4td2lkdGg6IDEwMCU7DQp9DQoud2ViLCAud2ViMjAsIC53ZWI1MCB7DQpkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQp9DQoubW9iaWxlIHsNCmRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7DQp3aWR0aDogYXV0byAhaW1wb3J0YW50Ow0Kb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsNCmhlaWdodDogYXV0byAhaW1wb3J0YW50Ow0KbWF4LWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50Ow0KZm9udC1zaXplOiAxNXB4ICFpbXBvcnRhbnQ7DQpsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50Ow0KdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Ow0KfQ0KLmJsb2NrIHsNCmRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7DQp3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0Kb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsNCmhlaWdodDogYXV0byAhaW1wb3J0YW50Ow0KbWF4LWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50Ow0KdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Ow0KcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7DQp9DQoucGFkYi01MCB7DQpwYWRkaW5nLWJvdHRvbTogNTBweCAhaW1wb3J0YW50Ow0KfQ0KLm1rdG9UZXh0IHsNCndpZHRoOiAyMDBweCFpbXBvcnRhbnQ7DQp9DQouZW1haWwtd2lkdGggew0Kd2lkdGg6IDg0JSAhaW1wb3J0YW50Ow0KfQ0KLmZ1bGwtd2lkdGggew0Kd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCn0NCi5tb2JpbGUtaW1hZ2Ugew0KaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7DQp3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KfQ0KLnNvY2lhbCB7DQpmbG9hdDogbGVmdCAhaW1wb3J0YW50Ow0KcGFkZGluZy10b3A6IDY2cHggIWltcG9ydGFudDsNCnRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCn0NCi5oZWFkZXIgew0KZm9udC1zaXplOiA0MHB4ICFpbXBvcnRhbnQ7DQpsaW5lLWhlaWdodDogNDZweCAhaW1wb3J0YW50Ow0KfQ0KLnBhZGRpbmctcjAgew0KcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7DQp9DQoucmFpbmJvdzEgew0KYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCUgIWltcG9ydGFudDsNCn0NCi5wYWRiLTAgew0KcGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50Ow0KfQ0KLnBhZGItNDAgew0KcGFkZGluZy1ib3R0b206IDQwcHggIWltcG9ydGFudDsNCn0NCi5idG1fcGFkYm90dG9tIHsNCnBhZGRpbmctYm90dG9tOiAxMDBweCFpbXBvcnRhbnQ7DQp9DQp9DQo8L3N0eWxlPg0KPC9tZXRhPjwvbWV0YT48L21ldGE-PC9tZXRhPjwvbWV0YT48L21ldGE-PC9tZXRhPjwvbGluaz48L2xpbms-PC9oZWFkPg0KDQo8Ym9keSBiZ2NvbG9yPSIjRTRFNEU0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRTRFNEU0OyBtYXJnaW46MDsgcGFkZGluZzowOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7d2lkdGg6MTAwJSAhaW1wb3J0YW50Ow0KLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0Om5vbmU7IiB0b3BtYXJnaW49IjAiPg0KPGRpdiBzdHlsZT0iZm9udC1zaXplOjFweDsgY29sb3I6I0U0RTRFNDsgZGlzcGxheTpub25lOyBvdmVyZmxvdzpoaWRkZW47IHZpc2liaWxpdHk6aGlkZGVuOyI-UmVjeWNsZSB5b3VyIFBERiBnb2xkIGFuZCByZWR1Y2UgeW91ciB3b3JrbG9hZCB3aXRoIEFjcm9iYXQgUHJvLjwvZGl2Pg0KPHRhYmxlIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjRTRFNEU0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRTRFNEU0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiI-DQo8dGJvZHk-DQo8dHI-DQo8dGQ-PHRhYmxlIGNsYXNzPSJmdWxsLXdpZHRoIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNjAwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4NCjx0Ym9keT4NCjx0cj4NCjx0ZCBiZ2NvbG9yPSIjZmZmZmZmIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsiPjwhLS0gUE9EIDEgLS0-DQoNCjx0YWJsZSBjbGFzcz0iZW1haWwtd2lkdGgiIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI1MDAiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiByb2xlPSJwcmVzZW50YXRpb24iIHN0eWxlPSJ3aWR0aDo1MDBweDsiPg0KPHRib2R5Pg0KICA8dHI-DQogICAgPHRkIHN0eWxlPSJjb2xvcjojMkMyQzJDO2ZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyNnB4O3BhZGRpbmctdG9wOiA0N3B4O3BhZGRpbmctYm90dG9tOiA0N3B4OyI-PHRhYmxlIGFsaWduPSJsZWZ0IiB3aWR0aD0iYXV0byIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiI-DQogICAgICAgIDx0Ym9keT4NCiAgICAgICAgICA8dHI-DQogICAgICAgICAgICA8dGQgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSJjb2xvcjogIzAwMDAwMDsgZm9udC1mYW1pbHk6YWRvYmUtY2xlYW4sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOyANCmZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoyMHB4OyI-PGltZyBhbHQ9IkFkb2JlIEFjcm9iYXQgUHJvIiBzcmM9Imh0dHBzOi8vbGFuZGluZy5hZG9iZS5jb20vZGFtL2dsb2JhbC9pbWFnZXMvbG9ja3Vwcy9hY3JvYmF0LXByby5sb2dvLjc0Nzc3YS40NDR4NDAucG5nIiB3aWR0aD0iMjIyIiBoZWlnaHQ9ImF1dG8iIGJvcmRlcj0iMCIgaHNwYWNlPSIwIiB2c3BhY2U9IjAiIHN0eWxlPSJkaXNwbGF5OmJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcCIgLz48L3RkPg0KICAgICAgICAgIDwvdHI-DQogICAgICAgIDwvdGJvZHk-DQogICAgICA8L3RhYmxlPjwvdGQ-DQogIDwvdHI-DQogIDx0cj4NCiAgICA8dGQ-PHRhYmxlIGNsYXNzPSJmdWxsLXdpZHRoIiBhbGlnbj0ibGVmdCIgd2lkdGg9IjUwMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9IndpZHRoOjUwMHB4OyI-DQogICAgICAgIDx0Ym9keT4NCiAgICAgICAgICA8dHIgc3R5bGU9ImZvbnQtc2l6ZTogMCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMCAhaW1wb3J0YW50OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7Ij4NCiAgICAgICAgICAgIDx0ZCBzdHlsZT0iDQpjb2xvcjogIzAwMDAwMDsNCmZvbnQtZmFtaWx5Og0KYWRvYmUtY2xlYW4sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6NjBweDsgbGluZS1oZWlnaHQ6NjRweDsNCnBhZGRpbmctdG9wOiAyMHB4Ow0KcGFkZGluZy1yaWdodDogMHB4Ow0KZm9udC13ZWlnaHQ6OTAwOyIgY2xhc3M9ImhlYWRlciI-RG9u4oCZdCByZXR5cGUg4oCUIGNvbnZlcnQuIDwvdGQ-DQogICAgICAgICAgPC90cj4NCiAgICAgICAgPC90Ym9keT4NCiAgICAgIDwvdGFibGU-PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBzdHlsZT0iDQpjb2xvcjogIzAwMDAwMDsNCmZvbnQtZmFtaWx5Og0KYWRvYmUtY2xlYW4sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOw0KZm9udC1zaXplOjE4cHg7DQpsaW5lLWhlaWdodDoyNnB4Ow0KcGFkZGluZy10b3A6MjBweDsNCmZvbnQtd2VpZ2h0OiA0MDA7DQoiIGNsYXNzPSJwYWRkaW5nLXIwIj5Eb27igJl0IHN0YXJ0IGZyb20gc2NyYXRjaC4gRWFzaWx5IGV4cG9ydCBQREZzIHRvIE1pY3Jvc29mdCBXb3JkLCBFeGNlbCwgb3IgUG93ZXJQb2ludCB3aXRoIEFkb2JlIEFjcm9iYXQgUHJvLiAgPC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBjbGFzcz0iZGFyay1zcGFjZSIgc3R5bGU9Ig0KY29sb3I6IzE0NzNFNjsNCmZvbnQtZmFtaWx5Og0KYWRvYmUtY2xlYW4sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOw0KZm9udC1zaXplOjE1cHg7DQpsaW5lLWhlaWdodDo0MHB4Ow0KcGFkZGluZy10b3A6IDQwcHg7DQpwYWRkaW5nLWJvdHRvbTogNDBweDsNCiI-PCEtLVtpZiBndGUgbXNvIDldPjx2OnJvdW5kcmVjdA0KeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiDQp4bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiBzdHlsZT0iaGVpZ2h0OjQwcHg7IHYtdGV4dC1hbmNob3I6bWlkZGxlOyANCndpZHRoOjIwMHB4OyIgYXJjc2l6ZT0iNTAlIiBzdHJva2U9ImYiIGZpbGxjb2xvcj0iIzE0NzNFNiIgc3R5bGU9ImNvbG9yOiNmZmZmZmY7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwIj4NCjx2OnRleHRib3ggc3R5bGU9Im1zby1maXQtc2hhcGUtdG8tdGV4dDp0Ij4NCjxjZW50ZXIgc3R5bGU9ImNvbG9yOiNmZmZmZmY7IGZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE2cHg7Ij48IVtlbmRpZl0tLT4gDQogICAgICA8YSBocmVmPSJodHRwczovL3QtaW5mby5tYWlsLmFkb2JlLmNvbS9yLz9pZD1oZTllZmUyMTgsZmUzZThiZWUsYzAwNTgwZGUmZT1jREU5U0VoS05GZzNNbG8mcz1TSTdGV2M1dkU5QTFkd25PZDRENk9DMFlJY2szY2lsbWlUOHlVY2NNdUI4IiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiNmZmY7bGluZS1oZWlnaHQ6NDBweDt0ZXh0LWFsaWduOmxlZnQiPjxkaXYgY2xhc3M9Im1rdG9UZXh0IiBhbGlnbj0ibGVmdCIgaWQ9IkFETzEwODcxLWUiIHN0eWxlPSJmb250LWZhbWlseTphZG9iZS1jbGVhbixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7YmFja2dyb3VuZC1jb2xvcjojMTQ3M2U2O2JvcmRlci1yYWRpdXM6NTBweDt3aWR0aDoyMDBweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojZmZmO2xpbmUtaGVpZ2h0OjQwcHgiPjxzdHJvbmc-R2V0IHN0YXJ0ZWQ8L3N0cm9uZz48L2Rpdj4NCiAgICAgIDwvYT4gDQogICAgICA8IS0tW2lmIGd0ZSBtc28gOV0-PC9jZW50ZXI-DQo8cCBzdHlsZT0ibWFyZ2luOjA7IGZvbnQtc2l6ZTowOyBsaW5lLWhlaWdodDowOyI-DQo8bzpwDQp4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiPiANCjwvbzpwPg0KPC9wPg0KPC92OnRleHRib3g-DQo8L3Y6cm91bmRyZWN0PjwhW2VuZGlmXS0tPjwvdGQ-DQogIDwvdHI-DQo8L3Rib2R5Pg0KPC90YWJsZT48L3RkPg0KPC90cj4NCjx0cj4NCjx0ZCBiZ2NvbG9yPSIjRkFEQTNBIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0ZBREEzQTsiPjwhLS0gUE9EIDEgLS0-IA0KDQo8IS0tIHBvZDEgbWFycXVlZSAtLT4NCg0KPHRhYmxlIGNsYXNzPSJmdWxsLXdpZHRoIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNjAwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4NCjx0Ym9keT4NCiAgPHRyPg0KICAgIDx0ZCBiZ2NvbG9yPSIjZmZmZmZmIiBzdHlsZT0iY29sb3I6IzAwMDAwMDtmb250LWZhbWlseTphZG9iZS1jbGVhbiwgSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjIycHg7bGluZS1oZWlnaHQ6MjhweDtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyI-PGEgaHJlZj0iaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9aGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MGRmJmU9Y0RFOVNFaEtORmczTWxvJnM9a1FRWXAzaE1qNkNKLUtmazM1bzVGNndQZ2kxZ2dueFAwMHd2WGdrb1NYYyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgY2xhc3M9Im1vYmlsZS1pbWFnZSIgYWx0PSJEb27igJl0IHJldHlwZSDigJQgY29udmVydC4iIHNyYz0iaHR0cHM6Ly9sYW5kaW5nLmFkb2JlLmNvbS9jb250ZW50L2RhbS9sYW5kaW5nL3VwbG9hZHMvMjAyNC9lbWVhL2Fzc2V0cy9pbWFnZXMvbWFycXVlZS82NzMyNGE2NjAwMTBiNDcxYjBjMjZmYTM2ZjM4MzhjMF9hcGFjX2VuX2Fjcm9iYXRfY29udmVyc2lvbl9kZXNrdG9wXzJ4LmpwZyIgc3Jjc2V0PSJodHRwczovL2xhbmRpbmcuYWRvYmUuY29tL2NvbnRlbnQvZGFtL2xhbmRpbmcvdXBsb2Fkcy8yMDI0L2VtZWEvYXNzZXRzL2ltYWdlcy9tYXJxdWVlLzY3MzI0YTY2MDAxMGI0NzFiMGMyNmZhMzZmMzgzOGMwX2FwYWNfZW5fYWNyb2JhdF9jb252ZXJzaW9uX21vYmlsZV8yeC5qcGcgNjIxdywNCmh0dHBzOi8vbGFuZGluZy5hZG9iZS5jb20vY29udGVudC9kYW0vbGFuZGluZy91cGxvYWRzLzIwMjQvZW1lYS9hc3NldHMvaW1hZ2VzL21hcnF1ZWUvNjczMjRhNjYwMDEwYjQ3MWIwYzI2ZmEzNmYzODM4YzBfYXBhY19lbl9hY3JvYmF0X2NvbnZlcnNpb25fZGVza3RvcF8yeC5qcGcgMTIwMHciIHNpemVzPSIobWF4LXdpZHRoOiA0ODBweCkgNTB2dyIgd2lkdGg9IjYwMCIgaGVpZ2h0PSJhdXRvIiBib3JkZXI9IjAiIGhzcGFjZT0iMCIgdnNwYWNlPSIwIiBzdHlsZT0iY29sb3I6IzAwMDAwMDsgZm9udC1mYW1pbHk6YWRvYmUtY2xlYW4sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MjJweDsgbGluZS1oZWlnaHQ6MjhweDsgZGlzcGxheTpibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyIgLz48L2E-PC90ZD4NCiAgPC90cj4NCjwvdGJvZHk-DQo8L3RhYmxlPg0KDQo8IS0tIEVORCBwb2QxIG1hcnF1ZWUgLS0-IA0KPCEtLSBFTkQgcG9kMSAtLT48L3RkPg0KPC90cj4NCjwhLS0gUE9EIDIgLS0-IA0KDQo8IS0tIFBPRCAyIEVORFMgLS0-DQoNCjx0cj4NCjx0ZCBiZ2NvbG9yPSIjRjVGNUY1IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRjVGNUY1Ij48dGFibGUgY2xhc3M9ImVtYWlsLXdpZHRoIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNTAwIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgcm9sZT0icHJlc2VudGF0aW9uIiBzdHlsZT0id2lkdGg6NTAwcHgiPg0KPHRib2R5Pg0KICA8dHI-DQogICAgPHRkIHZhbGlnbj0idG9wIiBzdHlsZT0icGFkZGluZy10b3A6NTBweCI-PHRhYmxlIGNsYXNzPSJmdWxsLXdpZHRoIiBhbGlnbj0ibGVmdCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgd2lkdGg9IjUwMCIgc3R5bGU9IndpZHRoOjUwMHB4Ij4NCiAgICAgICAgPHRib2R5Pg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgc3R5bGU9ImNvbG9yOiNFQjEwMDA7Zm9udC1mYW1pbHk6YWRvYmUtY2xlYW4sSGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLFZlcmRhbmEsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxOHB4O3BhZGRpbmctYm90dG9tOjAiIGNsYXNzPSJibG9jayBwYWRiLTUwIj48aW1nIGFsdD0iQWRvYmUiIHNyYz0iaHR0cHM6Ly9sYW5kaW5nLmFkb2JlLmNvbS9jb250ZW50L2RhbS9sYW5kaW5nL3VwbG9hZHMvMjAyMy9lbWVhL2Fzc2V0cy9pbWFnZXMvbWFycXVlZS82NTI4ZTA2OTAwMGM0MGUyYzQ0MzQ2ZDJkNzI2NTg2Ml9hZG9iZV9sb2dvXzJ4LnBuZyIgd2lkdGg9IjgwIiBoZWlnaHQ9ImF1dG8iIGJvcmRlcj0iMCIgaHNwYWNlPSIwIiB2c3BhY2U9IjAiIHN0eWxlPSJjb2xvcjojRUIxMDAwO2ZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MThweDtkaXNwbGF5OmJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcCIgLz48L3RkPg0KICAgICAgICAgICAgPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0icmlnaHQiIHN0eWxlPSJjb2xvcjojRUIxMDAwO2ZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MThweDtwYWRkaW5nLWJvdHRvbTowO3RleHQtYWxpZ246cmlnaHQ7cGFkZGluZy1sZWZ0OjE4MHB4IiBjbGFzcz0iYmxvY2siPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InNvY2lhbCIgYWxpZ249InJpZ2h0IiB3aWR0aD0iYXV0byIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImZsb2F0OnJpZ2h0Ij4NCiAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iY29sb3I6Izk1OTU5NTtmb250LWZhbWlseTphZG9iZS1jbGVhbixIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsVmVyZGFuYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjIxcHg7cGFkZGluZy1ib3R0b206NDBweCI-PGEgaHJlZj0iaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9aGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MGUwIiBhbGlhcz0iRmFjZWJvb2siIHRhcmdldD0iX2JsYW5rIj48aW1nIGFsdD0iRmFjZWJvb2siIHNyYz0iaHR0cHM6Ly9sYW5kaW5nLmFkb2JlLmNvbS9kYW0vZ2xvYmFsL2ltYWdlcy9zb2NpYWwvZmFjZWJvb2suOTU5NTk1LnBuZyIgd2lkdGg9IjkiIGhlaWdodD0iYXV0byIgYm9yZGVyPSIwIiBoc3BhY2U9IjAiIHZzcGFjZT0iMCIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246dG9wIj4gPC9pbWc-PC9hPjwvdGQ-DQogICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNiIgc3R5bGU9IndpZHRoOjM2cHgiPjwvdGQ-DQogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJjb2xvcjojOTU5NTk1O2ZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MjFweDtwYWRkaW5nLWJvdHRvbTo0MHB4Ij48YSBocmVmPSJodHRwczovL3QtaW5mby5tYWlsLmFkb2JlLmNvbS9yLz9pZD1oZTllZmUyMTgsZmUzZThiZWUsYzAwNTgwZTEiIGFsaWFzPSJMaW5rZWRJbiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgYWx0PSJMaW5rZWRJbiIgc3JjPSJodHRwczovL2xhbmRpbmcuYWRvYmUuY29tL2RhbS9nbG9iYWwvaW1hZ2VzL3NvY2lhbC9saW5rZWRpbi45NTk1OTUucG5nIiB3aWR0aD0iMTgiIGhlaWdodD0iYXV0byIgYm9yZGVyPSIwIiBoc3BhY2U9IjAiIHZzcGFjZT0iMCIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246dG9wIj4gPC9pbWc-PC9hPjwvdGQ-DQogICAgPHRkIHdpZHRoPSIzNiIgc3R5bGU9IndpZHRoOjM2cHgiPjwvdGQ-DQogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJjb2xvcjojOTU5NTk1O2ZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MjFweDtwYWRkaW5nLWJvdHRvbTo0MHB4O3BhZGRpbmctcmlnaHQ6MTBweCI-PGEgaHJlZj0iaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9aGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MGUyIiBhbGlhcz0iVHdpdHRlciIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgYWx0PSJUd2l0dGVyIiBzcmM9Imh0dHBzOi8vbGFuZGluZy5hZG9iZS5jb20vZGFtL2dsb2JhbC9pbWFnZXMvc29jaWFsL3R3aXR0ZXIuOTU5NTk1LnBuZyIgd2lkdGg9IjE3IiBoZWlnaHQ9ImF1dG8iIGJvcmRlcj0iMCIgaHNwYWNlPSIwIiB2c3BhY2U9IjAiIHN0eWxlPSJkaXNwbGF5OmJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcCI-IDwvaW1nPjwvYT48L3RkPiAgICAgICAgICAgIA0KIDx0ZCB3aWR0aD0iMTAiIHN0eWxlPSJ3aWR0aDoxMHB4Ij48L3RkPiAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICA8L3RhYmxlPjwvdGQ-DQogICAgICAgICAgPC90cj4NCiAgICAgICAgPC90Ym9keT4NCiAgICAgIDwvdGFibGU-PC90ZD4NCiAgPC90cj4NCjwvdGJvZHk-DQo8L3RhYmxlPg0KPHRhYmxlIGNsYXNzPSJlbWFpbC13aWR0aCIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjUwMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9IndpZHRoOjUwMHB4Ij4NCjx0Ym9keT4NCiAgPHRyPg0KICAgIDx0ZCBjbGFzcz0ibGVnYWwiIHN0eWxlPSJjb2xvcjojOTU5NTk1O2ZvbnQtZmFtaWx5OmFkb2JlLWNsZWFuLEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MThweDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjEwMHB4Ij5BZG9iZSBzZXJ2aWNlcywgbGlrZSBBZG9iZSBEb2N1bWVudCBDbG91ZCwgYXJlIGF2YWlsYWJsZSBvbmx5IHRvIHVzZXJzIDEzIGFuZCBvbGRlci4gVXNlIG9mIEFkb2JlIHNlcnZpY2VzIGFuZCBhcHBsaWNhdGlvbnMgcmVxdWlyZXMgYWdyZWVtZW50IHdpdGggdGhlIGFwcGxpY2FibGUgPGEgaHJlZj0iaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9aGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MGUzIiBhbGlhcz0iRk9PVEVSIC0gVGVybXMiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6Izk1OTU5NTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUiPlRlcm1zIG9mIFVzZTwvYT4gYW5kIHRoZSA8YSBocmVmPSJodHRwczovL3QtaW5mby5tYWlsLmFkb2JlLmNvbS9yLz9pZD1oZTllZmUyMTgsZmUzZThiZWUsYzAwNTgwZTYiIGFsaWFzPSJGT09URVIgLSBQcml2YWN5IFBvbGljeSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojOTU5NTk1O3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIj5BZG9iZSBQcml2YWN5IFBvbGljeTwvYT4uDQogICAgICA8cCBpZD0icmVnX2Zvb3QiPkFkb2JlLCB0aGUgQWRvYmUgbG9nbywgQ3JlYXRpdmUgQ2xvdWQsIHRoZSBDcmVhdGl2ZSBDbG91ZCBsb2dvLCBhbmQgRG9jdW1lbnQgQ2xvdWQgYXJlIGVpdGhlciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb3IgdHJhZGVtYXJrcyBvZiBBZG9iZSBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhbmQvb3Igb3RoZXIgY291bnRyaWVzLjxiciAvPjxiciAvPg0KICBUaGlzIGlzIG5vdCBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiBhbGwgQWRvYmUgdHJhZGVtYXJrcy4gRm9yIGEgZnVsbCBsaXN0LCByZWZlciB0byB0aGUgPGEgaHJlZj0iaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9aGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MGU0IiBhbGlhcz0iRk9PVEVSIC0gVHJhZGVtYXJrIEd1aWRlbGluZXMiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6Izk1OTU5NTsiPkFkb2JlIFRyYWRlbWFyayBHdWlkZWxpbmVzPC9hPi4gQWxsIG90aGVyIHRyYWRlbWFya3MgYXJlIHRoZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIG93bmVycy48YnIgLz48YnIgLz4NCiAgVGhpcyBpcyBhIG1hcmtldGluZyBlbWFpbCBmcm9tIEFkb2JlIFN5c3RlbXMgU29mdHdhcmUgSXJlbGFuZCBMaW1pdGVkLCA04oCRNiZuYnNwO1JpdmVyd2FsaywgQ2l0eXdlc3QgQnVzaW5lc3MgUGFyaywgRHVibGluJm5ic3A7MjQsIElyZWxhbmQuDQogICA8YSBzdHlsZT0iVEVYVC1ERUNPUkFUSU9OOiB1bmRlcmxpbmU7IENPTE9SOiAjYTFhMWExIiBocmVmPSJodHRwczovL3QtaW5mby5tYWlsLmFkb2JlLmNvbS9yLz9pZD1oZTllZmUyMTgsZmUzZThiZWUsYzAwNTgwZTUmZT1jREU5SlRRd1QxYzBjbkk0VTBkak5qSk9UVVZWYlhkaFNUSlNkSE5rVVdsbGNFeDVNVWRtVGtRbE1rWnVTbFpuVjFoSkpUTkVKbkF5UFNac2IyTTlhVzRtY0RNOU1UayZzPVYzMThHRXRzWDg1blR3N0l6eVlPNEtQS2FwaGVUVGQ5eDlpMzJPUTN3SmMiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ib3B0X291dCIgYWxpYXM9IlVuc3Vic2NyaWJlIiBfdHlwZT0ib3B0b3V0IiBfbGFiZWw9Ik9wdC1vdXQgbGluayI-Q2xpY2smbmJzcDtoZXJlPC9BPiAgdG8gdW5zdWJzY3JpYmUuIFBsZWFzZSByZXZpZXcgdGhlIDxhIGhyZWY9Imh0dHBzOi8vdC1pbmZvLm1haWwuYWRvYmUuY29tL3IvP2lkPWhlOWVmZTIxOCxmZTNlOGJlZSxjMDA1ODBlNyIgYWxpYXM9IkZPT1RFUiAtIFByaXZhY3kiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6Izk1OTU5NTsiPkFkb2JlIFByaXZhY3kgUG9saWN5PC9hPi48YnIgLz48YnIgLz4NCiAgVG8gZW5zdXJlIGVtYWlsIGRlbGl2ZXJ5LCBhZGQgPGEgaHJlZj0iaHR0cHM6Ly90LWluZm8ubWFpbC5hZG9iZS5jb20vci8_aWQ9aGU5ZWZlMjE4LGZlM2U4YmVlLGMwMDU4MGU4IiBhbGlhcz0iQWRkIHRvIGFkZHJlc3MgYm9vayAtIG1haWxAbWFpbC5hZG9iZS5jb20iIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6Izk1OTU5NTsiPm1haWxAbWFpbC5hZG9iZS5jb208L2E-IHRvIHlvdXIgYWRkcmVzcyBib29rLCBjb250YWN0cywgb3Igc2FmZSBzZW5kZXImbmJzcDtsaXN0LjxiciAvPjxiciAvPjwvcD4gPHNwYW4-DQogICAgICANCiAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdC1pbmZvLm1haWwuYWRvYmUuY29tL3IvP2lkPWhlOWVmZTIxOCxmZTNlOGJlZSxjMDA1ODBlOSZlPWNERTlKVFF3YmxkelEyUndSRkk0VVRsTGRsTnVZVzVESlRKR2JuUnJVVU5hY0ZsellqTlpSa3RSZGtGUmRXNWpNelZqSlRORSZzPWlQdmMzX0pvbGdyY2RmUTJiZFRpOEcwQTVSaXp1N3YydEo1MkdVTl8xd00iIF9sYWJlbD0iTWlycm9yIFBhZ2UiIF90eXBlPSJtaXJyb3JQYWdlIiBhbGlhcz0iUmVhZCBvbmxpbmUiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6Izk1OTU5NTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIj5SZWFkIG9ubGluZTwvYT4NCiAgICAgIA0KICAgICAgPC9zcGFuPjwvdGQ-DQogIDwvdHI-DQo8L3Rib2R5Pg0KPC90YWJsZT48L3RkPg0KPC90cj4NCjwvdGJvZHk-DQo8L3RhYmxlPjwvdGQ-DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU-DQo8L2JvZHk-DQo8L2h0bWw-DQo8aW1nIGhlaWdodD0nMCcgd2lkdGg9JzAnIGFsdD0nJyBzcmM9J2h0dHBzOi8vdC1pbmZvLm1haWwuYWRvYmUuY29tL3IvP2lkPWhlOWVmZTIxOCxmZTNlOGJlZSwxJy8-PGltZyBoZWlnaHQ9JzAnIHdpZHRoPScwJyBhbHQ9Jycgc3JjPSdodHRwczovL2Fkb2JlLmRlbWRleC5uZXQvZXZlbnQ_Y19zeW5jcGxhY2VtZW50PWVtYWlsJmRfY2lkPTgxMyUwMTFGQ0Y2OUVCNjE1NUExRjAwQTQ5NUNCNCcvPg0K" - } - } - ] - }, - "sizeEstimate": 23490, - "historyId": "526904", - "internalDate": "1732487083000" -} \ No newline at end of file diff --git a/utils_v2/goog/gmail/json/messages/raw_message_10_1935e92672e67f22_20241126.json b/utils_v2/goog/gmail/json/messages/raw_message_10_1935e92672e67f22_20241126.json deleted file mode 100644 index 4adaa68..0000000 --- a/utils_v2/goog/gmail/json/messages/raw_message_10_1935e92672e67f22_20241126.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "id": "1935e92672e67f22", - "threadId": "1935e92672e67f22", - "labelIds": [ - "UNREAD", - "CATEGORY_SOCIAL", - "INBOX" - ], - "snippet": "Here's what's happened since you were last on LinkedIn \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f \u034f", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "pskhushal@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a5d:4205:0:b0:382:44a8:2102 with SMTP id n5csp489491wrq; Sun, 24 Nov 2024 06:27:53 -0800 (PST)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IEcS3t6I5EYTeXutTWCaj0fEAX/BFkSa6Xaw/nMo6+pyLJJtvz7S/MBZv44qMdTc6JVxq+f" - }, - { - "name": "X-Received", - "value": "by 2002:a05:6602:13c8:b0:83e:6232:11a with SMTP id ca18e2360f4ac-83ecdcaa81emr914357339f.7.1732458473211; Sun, 24 Nov 2024 06:27:53 -0800 (PST)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1732458473; cv=none; d=google.com; s=arc-20240605; b=hrGVGOdrsnWXBSb3+YUlgbJwXMCirSm5AHNJ8GbUwyw7Bz6C2fOxPZw1GlXVDn0okR OXBflsE0WgRxGsJTDGO56d9MDdZRW1VTE+O3bquEXcbN1D19PrxCGxNa4rFZIlVhpGqz WqCvyOK3NlpyyILFmKYAQWjBRY/OOlDC9AlDshnhzDB5Vg1AoDlywRK/peISQ/OPbnwt klOd3kzKIRKsQNDB6CqVG0Ag7EhAZHGYTvc2HmiuPg9FPOePJTWXJ1h2zJKGTAR+Ouzi SA8IWMA7MknUNK/8RMRYowg967Y3kub0ABo89lyuUZMeZRCsWchxvKDcBmR8Z4o1W29V irKQ==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=require-recipient-valid-since:feedback-id:list-unsubscribe-post :list-unsubscribe:date:to:mime-version:subject:message-id:from :dkim-signature:dkim-signature; bh=nySe/MiYyd+StYNNKhFQvs+nBTs6HguWRtf5H+LonXg=; fh=kl8GOc3xH49wmCQ5W74DCe5pDhPNnAeFoI4mGP4/wX4=; b=MOuaP5zl+0G9/BbA/whMa6POlvCfiPyZFMqwLKvGoiOB8nBXoMnqdomtKf/QzkWDBg sTFkP+4nEfEbokkWOWwgee+e+5lDg/BDJPkS/Pwfm5jkzCxxOVSAJbsd5Ad7zS9hcowa BnZE/5W5Z7FfdQh+zZbRMRNA8Mmv/U7tBT1a0fNtm1LmKAb2QMIJtRXfwbLu+XNjCXHY p2lPn6YM+mnGmcFvW4QpTZERJ2GHEVZdPXZpf7SW5qkUFEQGOKlrSaoZHS+xAuC5hoV3 kn9lAQ8YaRKk3tgtCjDGr0d5lR9k5YQA6stK2iJS0xqVfn7xlIe2OYdiL3KtpxExoIni yDaQ==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@mailc.linkedin.com header.s=d2048-202308-0c header.b=Adk2r7bx; dkim=pass header.i=@linkedin.com header.s=d2048-202308-00 header.b=M94Hf2OM; spf=pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo17qlc4r172gpk4@bounce.linkedin.com designates 108.174.3.172 as permitted sender) smtp.mailfrom=m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo17qlc4r172gpk4@bounce.linkedin.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=linkedin.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from mailc-bd.linkedin.com (mailc-bd.linkedin.com. [108.174.3.172]) by mx.google.com with ESMTPS id ca18e2360f4ac-83ecd39e071si357074239f.47.2024.11.24.06.27.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Nov 2024 06:27:53 -0800 (PST)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo17qlc4r172gpk4@bounce.linkedin.com designates 108.174.3.172 as permitted sender) client-ip=108.174.3.172;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@mailc.linkedin.com header.s=d2048-202308-0c header.b=Adk2r7bx; dkim=pass header.i=@linkedin.com header.s=d2048-202308-00 header.b=M94Hf2OM; spf=pass (google.com: domain of m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo17qlc4r172gpk4@bounce.linkedin.com designates 108.174.3.172 as permitted sender) smtp.mailfrom=m-7rn15dcklyh67ma8mwwua3ozups21yzaxmcrqxdlmxexo17qlc4r172gpk4@bounce.linkedin.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=linkedin.com" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailc.linkedin.com; s=d2048-202308-0c; t=1732458470; bh=nySe/MiYyd+StYNNKhFQvs+nBTs6HguWRtf5H+LonXg=; h=From:Subject:MIME-Version:Content-Type:To:Date:X-LinkedIn-Class:\t X-LinkedIn-Template:X-LinkedIn-fbl; b=Adk2r7bx1vZ9JpUoh2QYgUmH2WTHWP8wXudTdb0M060/7XwbzuiqBRKyhy6zEyWkq\t AlFD7cTp2ya5xg8Ouev9TmtYownVpWgqyGvYkRBqkHczCA49ozHxHUo5qrfgU8DKI0\t V2fZkhgIM/AEiZERzuSvhUnBRo7nBWBjQg1vTl7kk5NMphCn1sxCq1qIyLUDLDp60D\t DPVmFR75bri3sECOzbu1K/EZnspoLLV/spGKLgb9S/FVzJMRmi2oRi0l8uz0jH8fBo\t 17VWd6k3rTpFeGVNPrSK3lWdOSDf2i2QQA5oK37vxvczzz/SDWZnx1LTHVInRjLlJm\t nEf8cH5ewVn+A==" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkedin.com; s=d2048-202308-00; t=1732458470; bh=nySe/MiYyd+StYNNKhFQvs+nBTs6HguWRtf5H+LonXg=; h=From:Subject:MIME-Version:Content-Type:To:Date:X-LinkedIn-Class:\t X-LinkedIn-Template:X-LinkedIn-fbl; b=M94Hf2OMaPkAxHXA/zOhOXLZzzHQVibZfX4W1pWVaf+eoUen1hl1rvFQWA0YEjIzz\t 9Xv+x9YT0Z5+yRma/Sq9Ys/Mh8AZi/a4UI4439oLy8RP1IXiMqr8idcWVJzhMJboi1\t VsaVxftwyt79bfN6E9DGKYGObpulcq/LYFzY64usl1/VXJg6bySmaHaFtoFDVLXqe0\t o8rQXswkdDJHZtoMur05q1Fal4PXbnGe6G7f/Roq7WALaPXldYeiyvPyGmkABQItTA\t w3MEAf7iDcTptv3SOY2vmAjX4Tq7lbG66eO/stqeTaR3fSgx5gqYC1sk9rjd4Ua5bQ\t FRtdrqLGbTcJw==" - }, - { - "name": "From", - "value": "LinkedIn " - }, - { - "name": "Message-ID", - "value": "<936622671.17289057.1732458470082@lor1-app81838.prod.linkedin.com>" - }, - { - "name": "Subject", - "value": "Using AI at work? Take note of these\u2026" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"----=_Part_17289055_909100289.1732458470080\"" - }, - { - "name": "To", - "value": "Khushal PS " - }, - { - "name": "Date", - "value": "Sun, 24 Nov 2024 14:27:50 +0000 (UTC)" - }, - { - "name": "X-LinkedIn-Class", - "value": "NETWORKDIGEST" - }, - { - "name": "X-LinkedIn-Template", - "value": "email_notification_digest_01" - }, - { - "name": "X-LinkedIn-fbl", - "value": "m2-aszz463uxzxisdhpefpvpzxet5cq38t8k08yi4636s5ds5vlxlpz3fpxz5rw4m9h9czfj84szwhzrzycmbllc5jq2ky0sgxcabi7n6" - }, - { - "name": "X-LinkedIn-Id", - "value": "j7zu7i-m3voz2l3-sd" - }, - { - "name": "List-Unsubscribe", - "value": "" - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "Feedback-ID", - "value": "email_notification_digest_01:linkedin" - }, - { - "name": "Require-Recipient-Valid-Since", - "value": "pskhushal@gmail.com; Mon, 24 Jul 2023 06:55:23 +0000" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain;charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - }, - { - "name": "Content-ID", - "value": "text-body" - } - ], - "body": { - "size": 2660, - "data": "VXNpbmcgQUkgYXQgd29yaz8gVGFrZSBub3RlIG9mIHRoZXNlIGlzc3Vlcy4NClNlZSBuZXdzbGV0dGVyOmh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvbmV3cy82MjE3MjIwP2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyRk1MJTJCTXJrQVJkeVBzJTJGZlZOSG1NNnclM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTFPUXN1S3hSQjNCSHcxJnRyaz1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1ub3RpZmljYXRpb25fZGlnZXN0LTAtRURJVE9SSUFMX0JMQVpFX0lOQVBQJnRya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLW5vdGlmaWNhdGlvbl9kaWdlc3QtMC1FRElUT1JJQUxfQkxBWkVfSU5BUFAtbnVsbC1qN3p1N2l-bTN2b3oybDN-c2QtbnVsbC1udWxsJmVpZD1qN3p1N2ktbTN2b3oybDMtc2Qmb3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqQTRZV00yWkRRME56a3dZV1E0T1RaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TVRabU1XUmhaREkzT0dZeVpqZGlNVGRqTXpVNFptTmpZVE0yTmpKaE1HUXlOekF5TkRJeFkySXdOakUyWW1Ka0xERXNNUSUzRCUzRA0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KVGhpcyBlbWFpbCB3YXMgaW50ZW5kZWQgZm9yIEtodXNoYWwgUFMgKC0tKQ0KTGVhcm4gd2h5IHdlIGluY2x1ZGVkIHRoaXM6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9oZWxwL2xpbmtlZGluL2Fuc3dlci80Nzg4P2xhbmc9ZW4mbGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxJTNCJTJGTUwlMkJNcmtBUmR5UHMlMkZmVk5IbU02dyUzRCUzRCZtaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZtaWRTaWc9MU9Rc3VLeFJCM0JIdzEmdHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLVNlY3VyaXR5SGVscC0wLXRleHRmb290ZXJnbGltbWVyJnRya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLVNlY3VyaXR5SGVscC0wLXRleHRmb290ZXJnbGltbWVyLW51bGwtajd6dTdpfm0zdm96MmwzfnNkLW51bGwtbnVsbCZlaWQ9ajd6dTdpLW0zdm96MmwzLXNkJm90cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakE0WVdNMlpEUTBOemt3WVdRNE9UWmhOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU1UWm1NV1JoWkRJM09HWXlaamRpTVRkak16VTRabU5qWVRNMk5qSmhNR1F5TnpBeU5ESXhZMkl3TmpFMlltSmtMREVzTVElM0QlM0QNCllvdSBhcmUgcmVjZWl2aW5nIExpbmtlZEluIG5vdGlmaWNhdGlvbiBlbWFpbHMuDQoNClVuc3Vic2NyaWJlOiBodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9wc2V0dGluZ3MvZW1haWwtdW5zdWJzY3JpYmU_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxJTNCJTJGTUwlMkJNcmtBUmR5UHMlMkZmVk5IbU02dyUzRCUzRCZtaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZtaWRTaWc9MU9Rc3VLeFJCM0JIdzEmdHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLXVuc3Vic2NyaWJlLTAtdGV4dGZvb3RlcmdsaW1tZXImdHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtdW5zdWJzY3JpYmUtMC10ZXh0Zm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3ZvejJsM35zZC1udWxsLW51bGwmZWlkPWo3enU3aS1tM3ZvejJsMy1zZCZsb2lkPUFRRzdEcE1jQm1KQmVnQUFBWk5la2xmZHk1UmlsbVhRUzBMWkx5UUZjZGhNU1E4emR3V1I3b0NaUUU4YzZkNjRMbmRxZFFUZXZMb3RERFByallETUVLeTZMMkZwSjNxcTB1U2ctblkNCkhlbHA6IGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9oZWxwL2xpbmtlZGluL2Fuc3dlci82Nz9sYW5nPWVuJmxpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyRk1MJTJCTXJrQVJkeVBzJTJGZlZOSG1NNnclM0QlM0QmbWlkVG9rZW49QVFGUGEyM056bzE4RlEmbWlkU2lnPTFPUXN1S3hSQjNCSHcxJnRyaz1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1oZWxwLTAtdGV4dGZvb3RlcmdsaW1tZXImdHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVscC0wLXRleHRmb290ZXJnbGltbWVyLW51bGwtajd6dTdpfm0zdm96MmwzfnNkLW51bGwtbnVsbCZlaWQ9ajd6dTdpLW0zdm96MmwzLXNkJm90cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakE0WVdNMlpEUTBOemt3WVdRNE9UWmhOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU1UWm1NV1JoWkRJM09HWXlaamRpTVRkak16VTRabU5qWVRNMk5qSmhNR1F5TnpBeU5ESXhZMkl3TmpFMlltSmtMREVzTVElM0QlM0QNCg0KwqkgMjAyNCBMaW5rZWRJbiBDb3Jwb3JhdGlvbiwgMXp3bmowMDAgV2VzdCBNYXVkZSBBdmVudWUsIFN1bm55dmFsZSwgQ0EgOTQwODUuDQpMaW5rZWRJbiBhbmQgdGhlIExpbmtlZEluIGxvZ28gYXJlIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiBMaW5rZWRJbi4=" - } - }, - { - "partId": "1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html;charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - }, - { - "name": "Content-ID", - "value": "html-body" - } - ], - "body": { - "size": 22763, - "data": "PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPiA8aGVhZD4gPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI-IDxtZXRhIG5hbWU9IkhhbmRoZWxkRnJpZW5kbHkiIGNvbnRlbnQ9InRydWUiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTAuNjY2NjY3OyB1c2VyLXNjYWxhYmxlPTAiPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4gPHRpdGxlPjwvdGl0bGU-IDxzdHlsZT4NCiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MTJweCkgeyAubWVyY2Fkby1jb250YWluZXIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9IH0NCiAgICAgICAgICA8L3N0eWxlPiA8c3R5bGU-DQogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsgLmlubGluZS1idXR0b24sIC5pbmxpbmUtYnV0dG9uIHRhYmxlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9DQogICAgICAgICAgICAuZnVsbC13aWR0aC1idXR0b24sIC5mdWxsLXdpZHRoLWJ1dHRvbiB0YWJsZSB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH0gfQ0KICAgICAgICAgIDwvc3R5bGU-IDxzdHlsZT5ib2R5IHtmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywNCiAgICAgICAgICAgICdGaXJhIFNhbnMnLCBVYnVudHUsIE94eWdlbiwgJ094eWdlbiBTYW5zJywgQ2FudGFyZWxsLCAnRHJvaWQgU2FucycsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsDQogICAgICAgICAgICAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO308L3N0eWxlPiA8IS0tW2lmIG1zb10-PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gPC9zdHlsZT48IVtlbmRpZl0tLT4gPCEtLVtpZiBJRV0-PHN0eWxlIHR5cGU9InRleHQvY3NzIj4gPC9zdHlsZT48IVtlbmRpZl0tLT4gPC9oZWFkPiA8Ym9keSBkaXI9Imx0ciIgY2xhc3M9ImZvbnQtc2FucyBiZy1jb2xvci1iYWNrZ3JvdW5kLWNhbnZhcyB3LWZ1bGwgbS0wIHAtMCBwdC0xIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbWFyZ2luOiAwcHg7IHdpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMmYwOyBwYWRkaW5nOiAwcHg7IHBhZGRpbmctdG9wOiA4cHg7IGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCAnRmlyYSBTYW5zJywgVWJ1bnR1LCBPeHlnZW4sICdPeHlnZW4gU2FucycsIENhbnRhcmVsbCwgJ0Ryb2lkIFNhbnMnLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ0x1Y2lkYSBHcmFuZGUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyI-IDxkaXYgY2xhc3M9ImgtMCBvcGFjaXR5LTAgdGV4dC10cmFuc3BhcmVudCBpbnZpc2libGUgb3ZlcmZsb3ctaGlkZGVuIHctMCBtYXgtaC1bMF0iIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47IGhlaWdodDogMHB4OyBtYXgtaGVpZ2h0OiAwOyB3aWR0aDogMHB4OyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAwOyBtc28taGlkZTogYWxsOyIgZGF0YS1lbWFpbC1wcmVoZWFkZXI9InRydWUiPkhlcmXigJlzIHdoYXTigJlzIGhhcHBlbmVkIHNpbmNlIHlvdSB3ZXJlIGxhc3Qgb24gTGlua2VkSW48L2Rpdj4gPGRpdiBjbGFzcz0iaC0wIG9wYWNpdHktMCB0ZXh0LXRyYW5zcGFyZW50IGludmlzaWJsZSBvdmVyZmxvdy1oaWRkZW4gdy0wIG1heC1oLVswXSIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsgaGVpZ2h0OiAwcHg7IG1heC1oZWlnaHQ6IDA7IHdpZHRoOiAwcHg7IG92ZXJmbG93OiBoaWRkZW47IG9wYWNpdHk6IDA7IG1zby1oaWRlOiBhbGw7Ij4gzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgIM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqAgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoM2PwqDNj8KgzY_CoCA8L2Rpdj4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iNTEyIiBhbGlnbj0iY2VudGVyIiBjbGFzcz0ibWVyY2Fkby1jb250YWluZXIgdy1bNTEycHhdIG1heC13LVs1MTJweF0gbXgtYXV0byBteS0wIHAtMCBiZy1jb2xvci1iYWNrZ3JvdW5kLWNvbnRhaW5lciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgd2lkdGg6IDUxMnB4OyBtYXgtd2lkdGg6IDUxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyBwYWRkaW5nOiAwcHg7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0idGV4dC1jZW50ZXIgcC0zIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmc6IDI0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0ibWluLXctZnVsbCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtaW4td2lkdGg6IDEwMCU7Ij4gPHRib2R5PiA8dHI-IDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJtaWRkbGUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkLz9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkZNTCUyQk1ya0FSZHlQcyUyRmZWTkhtTTZ3JTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTFPUXN1S3hSQjNCSHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVhZGVyLTAtaG9tZV9nbGltbWVyX2R5bmFtaWNfYmFkZ2luZ19oaWdoX2RwaSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVhZGVyLTAtaG9tZV9nbGltbWVyX2R5bmFtaWNfYmFkZ2luZ19oaWdoX2RwaS1udWxsLWo3enU3aX5tM3ZvejJsM35zZC1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN2b3oybDMtc2QmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakE0WVdNMlpEUTBOemt3WVdRNE9UWmhOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU1UWm1NV1JoWkRJM09HWXlaamRpTVRkak16VTRabU5qWVRNMk5qSmhNR1F5TnpBeU5ESXhZMkl3TmpFMlltSmtMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idy1bODRweF0iIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgd2lkdGg6IDg0cHg7Ij4gPGltZyBjbGFzcz0iaC1bMzdweF0gdy1bMTAxcHhdIiBhbHQ9IkxpbmtlZEluIiBzcmM9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2Rtcy9sb2dvL3YyP2JhZGdlVGhlbWU9bWVyY2FkbyZhbXA7bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxJTNCJTJGTUwlMkJNcmtBUmR5UHMlMkZmVk5IbU02dyUzRCUzRCZhbXA7bWlkU2lnPTFPUXN1S3hSQjNCSHcxJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtbnVsbC0wLWNvbW1zJTdFYmFkZ2luZyU3RWR5bmFtaWMlN0VnbGltbWVyJTdFdjItbnVsbC1qN3p1N2klN0VtM3ZvejJsMyU3RXNkLW51bGwtbnVsbCZhbXA7dHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLW51bGwtMC1jb21tcyU3RWJhZGdpbmclN0VkeW5hbWljJTdFZ2xpbW1lciU3RXYyJmFtcDtfc2lnPTBxWDVWZ3BaNTNCSHcxIiBkYXRhLXRlc3QtaGVhZGVyLWR5bmFtaWMtYmFkZ2luZy1pbWctaGlnaC1kcGkgc3R5bGU9Im91dGxpbmU6IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgaGVpZ2h0OiAzN3B4OyB3aWR0aDogMTAxcHg7IiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjM3Ij4gPC9hPiA8L3RkPiA8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJyaWdodCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGRhdGEtdGVzdC1oZWFkZXItcHJvZmlsZSBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPHRib2R5PiA8dHI-IDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly9pbi5saW5rZWRpbi5jb20vY29tbS9pbi9raHVzaGFsLXBzLTdhNjJiNzI4NT9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkZNTCUyQk1ya0FSZHlQcyUyRmZWTkhtTTZ3JTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTFPUXN1S3hSQjNCSHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVhZGVyLTAtcHJvZmlsZV9nbGltbWVyJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1oZWFkZXItMC1wcm9maWxlX2dsaW1tZXItbnVsbC1qN3p1N2l-bTN2b3oybDN-c2QtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zdm96MmwzLXNkJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpBNFlXTTJaRFEwTnprd1lXUTRPVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVNVFptTVdSaFpESTNPR1l5WmpkaU1UZGpNelU0Wm1OallUTTJOakpoTUdReU56QXlOREl4WTJJd05qRTJZbUprTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxzcGFuIGNsYXNzPSJuby11bmRlcmxpbmUgdGV4dC1zeXN0ZW0tZ3JheS05MCIgc3R5bGU9ImNvbG9yOiAjMjgyODI4OyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPktodXNoYWwgUFM8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPC90Ym9keT4gPC90YWJsZT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InB4LTMgcGItMyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IHBhZGRpbmctYm90dG9tOiAyNHB4OyI-IDxkaXY-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJweC0xICIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy1yaWdodDogOHB4OyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGNsYXNzIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIGNsYXNzPSJwYi0yIHRleHQtY2VudGVyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctYm90dG9tOiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iYXV0byIgYWxpZ249ImNlbnRlciIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9ImlubGluZS1ibG9jayB3LTggaC04IiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgaGVpZ2h0OiA2NHB4OyB3aWR0aDogNjRweDsiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvbmV3cy82MjE3MjIwP2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyRk1MJTJCTXJrQVJkeVBzJTJGZlZOSG1NNnclM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MU9Rc3VLeFJCM0JIdzEmYW1wO3Ryaz1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1lbnRpdHlfcGlsZS0wLUVESVRPUklBTF9CTEFaRV9JTkFQUF8wJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1lbnRpdHlfcGlsZS0wLUVESVRPUklBTF9CTEFaRV9JTkFQUF8wLW51bGwtajd6dTdpfm0zdm96MmwzfnNkLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3ZvejJsMy1zZCZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqQTRZV00yWkRRME56a3dZV1E0T1RaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TVRabU1XUmhaREkzT0dZeVpqZGlNVGRqTXpVNFptTmpZVE0yTmpKaE1HUXlOekF5TkRJeFkySXdOakUyWW1Ka0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogIzBhNjZjMjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsiPiA8aW1nIGNsYXNzPSJpbmxpbmUtYmxvY2sgcmVsYXRpdmUgYmctY29sb3ItZW50aXR5LWdob3N0LWJhY2tncm91bmQgdy04IGgtOCAhYmxvY2siIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL2Flcm8tdjEvc2MvaC84N3V1N3g1bXdtYXRzbjd2NmYyOHMyNm81IiBhbHQ9IkdldCBIaXJlZCBMb2dvIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogNjRweDsgd2lkdGg6IDY0cHg7IGJhY2tncm91bmQtY29sb3I6ICNlYWU2ZGY7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwYi0yIHRleHQtY2VudGVyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctYm90dG9tOiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gVXNpbmcgQUkgYXQgd29yaz8gVGFrZSBub3RlIG9mIHRoZXNlIGlzc3Vlcy4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHRleHQtYWxpZ246IGNlbnRlcjsiPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0iZW1haWwtYnV0dG9uICIgZGF0YS10ZXN0LWlkPSJlbWFpbC1idXR0b24iIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiA8dGJvZHk-IDx0cj4gPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibWlkZGxlIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbW0vZmVlZC9uZXdzLzYyMTcyMjA_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxJTNCJTJGTUwlMkJNcmtBUmR5UHMlMkZmVk5IbU02dyUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0xT1FzdUt4UkIzQkh3MSZhbXA7dHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWhlcm9fbm90aWZpY2F0aW9uX2N0YS0wLUVESVRPUklBTF9CTEFaRV9JTkFQUCZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVyb19ub3RpZmljYXRpb25fY3RhLTAtRURJVE9SSUFMX0JMQVpFX0lOQVBQLW51bGwtajd6dTdpfm0zdm96MmwzfnNkLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3ZvejJsMy1zZCZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqQTRZV00yWkRRME56a3dZV1E0T1RaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TVRabU1XUmhaREkzT0dZeVpqZGlNVGRqTXpVNFptTmpZVE0yTmpKaE1HUXlOekF5TkRJeFkySXdOakUyWW1Ka0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGFyaWEtbGFiZWw9IlJlYWQgbW9yZSIgY2xhc3M9ImFsaWduLXRvcCBuby11bmRlcmxpbmUgIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyI-IDx0YWJsZSByb2xlPSJwcmVzZW50YXRpb24iIHZhbGlnbj0idG9wIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9ImF1dG8iIGNsYXNzPSJib3JkZXItc2VwYXJhdGUgIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0iYnRuLW1kIGJ0bi1wcmltYXJ5IGJvcmRlci1jb2xvci1icmFuZCBidXR0b24tbGluayBsZWFkaW5nLXJlZ3VsYXIgIW1pbi1oLVthdXRvXSAhc2hhZG93LW5vbmUgYm9yZGVyLTEgYm9yZGVyLXNvbGlkIHctWzM5MHB4XSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBoZWlnaHQ6IG1pbi1jb250ZW50OyBib3JkZXItcmFkaXVzOiAyNHB4OyBwYWRkaW5nLXRvcDogMTJweDsgcGFkZGluZy1ib3R0b206IDEycHg7IHBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICMwYTY2YzI7IGNvbG9yOiAjZmZmZmZmOyB3aWR0aDogMzkwcHg7IGJvcmRlci13aWR0aDogMXB4OyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICMwYTY2YzI7IGxpbmUtaGVpZ2h0OiAxLjI1OyBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IDAgMCAjMDAwMCwgMCAwICMwMDAwLCAwIDAgIzAwMDAgIWltcG9ydGFudDsiIHdpZHRoPSIzOTAiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9mZWVkL25ld3MvNjIxNzIyMD9saXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkZNTCUyQk1ya0FSZHlQcyUyRmZWTkhtTTZ3JTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTFPUXN1S3hSQjNCSHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVyb19ub3RpZmljYXRpb25fY3RhLTAtRURJVE9SSUFMX0JMQVpFX0lOQVBQJmFtcDt0cmtFbWFpbD1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1oZXJvX25vdGlmaWNhdGlvbl9jdGEtMC1FRElUT1JJQUxfQkxBWkVfSU5BUFAtbnVsbC1qN3p1N2l-bTN2b3oybDN-c2QtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zdm96MmwzLXNkJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpBNFlXTTJaRFEwTnprd1lXUTRPVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVNVFptTVdSaFpESTNPR1l5WmpkaU1UZGpNelU0Wm1OallUTTJOakpoTUdReU56QXlOREl4WTJJd05qRTJZbUprTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9Im5vLXVuZGVybGluZSIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsiPiA8c3BhbiBjbGFzcz0ibm8tdW5kZXJsaW5lIHRleHQtd2hpdGUiIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7Ij4gUmVhZCBtb3JlIDwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2E-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvdGQ-IDwvdHI-IDwvdGJvZHk-IDwvdGFibGU-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0iYmctY29sb3ItYmFja2dyb3VuZC1jYW52YXMgcC0zIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IGJhY2tncm91bmQtY29sb3I6ICNmM2YyZjA7IHBhZGRpbmc6IDI0cHg7Ij4gPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgdmFsaWduPSJ0b3AiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyI-IDx0Ym9keT4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIHBiLTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy1ib3R0b206IDE2cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPiA8aDIgY2xhc3M9InRleHQtbGcgdGV4dC10ZWFsLTgwIiBzdHlsZT0ibWFyZ2luOiAwOyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDIwcHg7IGNvbG9yOiAjMTE0OTUxOyI-IEdldCB0aGUgbmV3IExpbmtlZEluIGRlc2t0b3AgYXBwIDwvaDI-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciBwYi0yIiBkYXRhLXRlc3QtaWQ9ImZvb3Rlci1hcHAtc3RvcmUtaWNvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogMTZweDsgdGV4dC1hbGlnbjogY2VudGVyOyI-IDxhIGhyZWY9Imh0dHBzOi8vYXBwcy5taWNyb3NvZnQuY29tL3N0b3JlL2RldGFpbC85V1pETkNSRko0UTc_bGF1bmNoPXRydWUmYW1wO2NpZD1saW5rZWRpbl9lbWFpbF91cHNlbGwmYW1wO21vZGU9ZnVsbCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgYWx0PSJHZXQgaXQgZnJvbSBNaWNyb3NvZnQiIHNyYz0iaHR0cHM6Ly9zdGF0aWMubGljZG4uY29tL2Flcm8tdjEvc2MvaC9lanBra3B3dnFrczMxYTNjanFva2I3ZmJtIiBjbGFzcz0iaC1bNDBweF0gdy1bMTEycHhdIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiAxMTJweDsiIHdpZHRoPSIxMTIiIGhlaWdodD0iNDAiPiA8L2E-IDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciBwYi0yIiBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmctYm90dG9tOiAxNnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPGgyIGNsYXNzPSJ0ZXh0LW1kIHRleHQtdGVhbC04MCIgc3R5bGU9Im1hcmdpbjogMDsgZm9udC13ZWlnaHQ6IDUwMDsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzExNDk1MTsiPiBBbHNvIGF2YWlsYWJsZSBvbiBtb2JpbGUgPC9oMj4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InRleHQtY2VudGVyIiBkYXRhLXRlc3QtaWQ9ImZvb3Rlci1hcHAtc3RvcmUtaWNvbiIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4gPGEgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL3VzL2FwcC9saW5rZWRpbi9pZDI4ODQyOTA0MD9wdD0xMDc0NiZhbXA7Y3Q9c3RfYXBwc2l0ZV9mbGFnc2hpcCZhbXA7bXQ9OCIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgYWx0PSJEb3dubG9hZCBvbiB0aGUgQXBwIFN0b3JlIiBzcmM9Imh0dHBzOi8vc3RhdGljLmxpY2RuLmNvbS9hZXJvLXYxL3NjL2gvNzZ5emtkMGg1a2l2MjdscmQ0eWFlbnlsayIgY2xhc3M9ImgtWzQwcHhdIHctWzEyMHB4XSBwci0xIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiAxMjBweDsgcGFkZGluZy1yaWdodDogOHB4OyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSI0MCI-IDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5saW5rZWRpbi5hbmRyb2lkJmFtcDtyZWZlcnJlcj1zdF9hcHBzaXRlX2ZsYWdzaGlwIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBzdHlsZT0iY29sb3I6ICMwYTY2YzI7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7Ij4gPGltZyBhbHQ9IkdldCBpdCBvbiBHb29nbGUgUGxheSIgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vYWVyby12MS9zYy9oLzE0MnF1ZHdibHA1OHp3bWM5dmtxZnBsdWciIGNsYXNzPSJoLVs0MHB4XSB3LVsxMzRweF0iIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7IGhlaWdodDogNDBweDsgd2lkdGg6IDEzNHB4OyIgd2lkdGg9IjEzNCIgaGVpZ2h0PSI0MCI-IDwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgY2xhc3M9InB5LTIiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgcGFkZGluZy10b3A6IDE2cHg7IHBhZGRpbmctYm90dG9tOiAxNnB4OyI-PGhyIGNsYXNzPSJib3JkZXItbm9uZSBiZy1bI2UwZGZkZF0gaC1bMXB4XSIgc3R5bGU9ImhlaWdodDogMXB4OyBib3JkZXItc3R5bGU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNlMGRmZGQ7Ij48L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8dGFibGUgcm9sZT0icHJlc2VudGF0aW9uIiB2YWxpZ249InRvcCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBjbGFzcz0idGV4dC14cyIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBmb250LXNpemU6IDEycHg7Ij4gPHRib2R5PiA8dHI-IDx0ZCBjbGFzcz0icGItMSBtLTAiIGRhdGEtdGVzdC1pZD0iZW1haWwtZm9vdGVyX19pbnRlbmRlZCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiBUaGlzIGVtYWlsIHdhcyBpbnRlbmRlZCBmb3IgS2h1c2hhbCBQUyAoLS0pIDwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwYi0xIG0tMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaGVscC9saW5rZWRpbi9hbnN3ZXIvNDc4OD9sYW5nPWVuJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkZNTCUyQk1ya0FSZHlQcyUyRmZWTkhtTTZ3JTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTFPUXN1S3hSQjNCSHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtU2VjdXJpdHlIZWxwLTAtZm9vdGVyZ2xpbW1lciZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtU2VjdXJpdHlIZWxwLTAtZm9vdGVyZ2xpbW1lci1udWxsLWo3enU3aX5tM3ZvejJsM35zZC1udWxsLW51bGwmYW1wO2VpZD1qN3p1N2ktbTN2b3oybDMtc2QmYW1wO290cFRva2VuPU1UTXdOREU0WlRJeE1ESTJZMlpqTTJJeU1qZ3dabVZpTkRFeFpHVTFZakE0WVdNMlpEUTBOemt3WVdRNE9UWmhOMkpqWmpBMk5qWTBZelZpTldSbU5HWm1aREZrTTJVNU1UWm1NV1JoWkRJM09HWXlaamRpTVRkak16VTRabU5qWVRNMk5qSmhNR1F5TnpBeU5ESXhZMkl3TmpFMlltSmtMREVzTVElM0QlM0QiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGV4dC1pbmhlcml0IHVuZGVybGluZSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IGNvbG9yOiBpbmhlcml0OyB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lOyI-TGVhcm4gd2h5IHdlIGluY2x1ZGVkIHRoaXMuPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMSBtLTAiIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctYm90dG9tOiA4cHg7Ij5Zb3UgYXJlIHJlY2VpdmluZyBMaW5rZWRJbiBub3RpZmljYXRpb24gZW1haWxzLjwvdGQ-IDwvdHI-IDx0cj4gPHRkIGNsYXNzPSJwYi0xIG0tMCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBtYXJnaW46IDBweDsgcGFkZGluZy1ib3R0b206IDhweDsiPiA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tbS9wc2V0dGluZ3MvZW1haWwtdW5zdWJzY3JpYmU_bGlwaT11cm4lM0FsaSUzQXBhZ2UlM0FlbWFpbF9lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxJTNCJTJGTUwlMkJNcmtBUmR5UHMlMkZmVk5IbU02dyUzRCUzRCZhbXA7bWlkVG9rZW49QVFGUGEyM056bzE4RlEmYW1wO21pZFNpZz0xT1FzdUt4UkIzQkh3MSZhbXA7dHJrPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLXVuc3Vic2NyaWJlLTAtZm9vdGVyR2xpbW1lciZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtdW5zdWJzY3JpYmUtMC1mb290ZXJHbGltbWVyLW51bGwtajd6dTdpfm0zdm96MmwzfnNkLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3ZvejJsMy1zZCZhbXA7bG9pZD1BUUc3RHBNY0JtSkJlZ0FBQVpOZWtsZmR5NVJpbG1YUVMwTFpMeVFGY2RoTVNROHpkd1dSN29DWlFFOGM2ZDY0TG5kcWRRVGV2TG90RERQcmpZRE1FS3k2TDJGcEozcXEwdVNnLW5ZIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRleHQtaW5oZXJpdCB1bmRlcmxpbmUiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTsiPlVuc3Vic2NyaWJlPC9hPiDCoMKgwrfCoMKgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9oZWxwL2xpbmtlZGluL2Fuc3dlci82Nz9sYW5nPWVuJmFtcDtsaXBpPXVybiUzQWxpJTNBcGFnZSUzQWVtYWlsX2VtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDElM0IlMkZNTCUyQk1ya0FSZHlQcyUyRmZWTkhtTTZ3JTNEJTNEJmFtcDttaWRUb2tlbj1BUUZQYTIzTnpvMThGUSZhbXA7bWlkU2lnPTFPUXN1S3hSQjNCSHcxJmFtcDt0cms9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtaGVscC0wLWZvb3RlcmdsaW1tZXImYW1wO3Rya0VtYWlsPWVtbC1lbWFpbF9ub3RpZmljYXRpb25fZGlnZXN0XzAxLWhlbHAtMC1mb290ZXJnbGltbWVyLW51bGwtajd6dTdpfm0zdm96MmwzfnNkLW51bGwtbnVsbCZhbXA7ZWlkPWo3enU3aS1tM3ZvejJsMy1zZCZhbXA7b3RwVG9rZW49TVRNd05ERTRaVEl4TURJMlkyWmpNMkl5TWpnd1ptVmlOREV4WkdVMVlqQTRZV00yWkRRME56a3dZV1E0T1RaaE4ySmpaakEyTmpZMFl6VmlOV1JtTkdabVpERmtNMlU1TVRabU1XUmhaREkzT0dZeVpqZGlNVGRqTXpVNFptTmpZVE0yTmpKaE1HUXlOekF5TkRJeFkySXdOakUyWW1Ka0xERXNNUSUzRCUzRCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJ0ZXh0LWluaGVyaXQgdW5kZXJsaW5lIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7Ij5IZWxwPC9hPiA8L3RkPiA8L3RyPiA8dHI-IDx0ZCBjbGFzcz0icGItMSIgc3R5bGU9Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxlLXJzcGFjZTogMHB0OyBwYWRkaW5nLWJvdHRvbTogOHB4OyI-IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21tL2ZlZWQvP2xpcGk9dXJuJTNBbGklM0FwYWdlJTNBZW1haWxfZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMSUzQiUyRk1MJTJCTXJrQVJkeVBzJTJGZlZOSG1NNnclM0QlM0QmYW1wO21pZFRva2VuPUFRRlBhMjNOem8xOEZRJmFtcDttaWRTaWc9MU9Rc3VLeFJCM0JIdzEmYW1wO3Ryaz1lbWwtZW1haWxfbm90aWZpY2F0aW9uX2RpZ2VzdF8wMS1mb290ZXItMC1sb2dvR2xpbW1lciZhbXA7dHJrRW1haWw9ZW1sLWVtYWlsX25vdGlmaWNhdGlvbl9kaWdlc3RfMDEtZm9vdGVyLTAtbG9nb0dsaW1tZXItbnVsbC1qN3p1N2l-bTN2b3oybDN-c2QtbnVsbC1udWxsJmFtcDtlaWQ9ajd6dTdpLW0zdm96MmwzLXNkJmFtcDtvdHBUb2tlbj1NVE13TkRFNFpUSXhNREkyWTJaak0ySXlNamd3Wm1WaU5ERXhaR1UxWWpBNFlXTTJaRFEwTnprd1lXUTRPVFpoTjJKalpqQTJOalkwWXpWaU5XUm1OR1ptWkRGa00yVTVNVFptTVdSaFpESTNPR1l5WmpkaU1UZGpNelU0Wm1OallUTTJOakpoTUdReU56QXlOREl4WTJJd05qRTJZbUprTERFc01RJTNEJTNEIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjMGE2NmMyOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyI-IDxpbWcgc3JjPSJodHRwczovL3N0YXRpYy5saWNkbi5jb20vYWVyby12MS9zYy9oLzllaGU2bjM5ZmEwN2RjNWVkenYwcmxhNGUiIGFsdD0iTGlua2VkSW4iIGNsYXNzPSJibG9jayBoLVsxNHB4XSB3LVs1NnB4XSBpbWFnZS1yZW5kZXJpbmctY3Jpc3AiIHN0eWxlPSJvdXRsaW5lOiBub25lOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsgaW1hZ2UtcmVuZGVyaW5nOiAtby1jcmlzcC1lZGdlczsgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0OyBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxNHB4OyB3aWR0aDogNTZweDsiIHdpZHRoPSI1NiIgaGVpZ2h0PSIxNCI-IDwvYT4gPC90ZD4gPC90cj4gPHRyPiA8dGQgZGF0YS10ZXN0LWNvcHlyaWdodC10ZXh0IHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPiDCqSAyMDI0IExpbmtlZEluIENvcnBvcmF0aW9uLCAxJnp3bmo7MDAwIFdlc3QgTWF1ZGUgQXZlbnVlLCBTdW5ueXZhbGUsIENBIDk0MDg1LiA8c3BhbiBkYXRhLXRlc3QtdHJhZGVtYXJrcy10ZXh0PiBMaW5rZWRJbiBhbmQgdGhlIExpbmtlZEluIGxvZ28gYXJlIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiBMaW5rZWRJbi4gPC9zcGFuPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L3RkPiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8aW1nIGFsdCByb2xlPSJwcmVzZW50YXRpb24iIHNyYz0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2VtaW1wL2lwX1lXcGtObVJVWkhCTVZ6QjZaRzA1TmsxdGQzcE1XRTVyT2xwWE1XaGhWM2htWW0wNU1HRlhXbkJaTWtZd1lWYzVkVmd5VW5CYU1sWjZaRVk0ZDAxUlBUMDYuZ2lmIiBzdHlsZT0ib3V0bGluZTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPiA8L2JvZHk-IDwvaHRtbD4=" - } - } - ] - }, - "sizeEstimate": 35040, - "historyId": "526827", - "internalDate": "1732458470000" -} \ No newline at end of file diff --git a/utils_v2/goog/models/__init__.py b/utils_v2/goog/models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/goog/models/data/__init__.py b/utils_v2/goog/models/data/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/goog/models/data/api_call.py b/utils_v2/goog/models/data/api_call.py deleted file mode 100644 index 4064079..0000000 --- a/utils_v2/goog/models/data/api_call.py +++ /dev/null @@ -1,132 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Wednesday, 30th Oct., 2024. - - OBJECTIVE: - - To provide a data model for describing the API response from Google's APIs. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For making data behaviour_models: -from pydantic import BaseModel, Field, field_validator, model_validator -from typing import Optional, Literal, Union, Dict, List, Any - -# My utils: -from utils_v2.string import json -from utils_v2.string import regex - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class GoogleApiResponse(BaseModel): - - serviceName: str = Field(frozen = True, default = None) - action: str = Field(frozen = True, default = None) - - url: str = Field(frozen = True) - method: str = Field(frozen = True) - response: Any = None - httpCode: int = None - - success: bool = False - message: str = None - data: Any = None - - exception: Any = None - - # ┏┓ ┏• - # ┃ ┏┓┏┓╋┓┏┓ - # ┗┛┗┛┛┗┛┗┗┫ - # ┛ - - class Config: - extra = "forbid" - - # ┏┓ ┏┓ - # ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏ - # ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛ - - def to_markdown(self): - if self.exception: message = "❌ *GOOGLE API EXCEPTION:* ❌\n\n" - else: message = "*GOOGLE API RESPONSE:*\n\n" - message += f"*SERVICE:*\n`{self.serviceName}`\n\n" - message += f"*ACTION:*\n`{self.action}`\n\n" - message += f"*URL:*\n`{self.url}`\n\n" - message += f"*METHOD:*\n`{self.method}`\n\n" - message += f"*RESPONSE:*\n`{self.response}`\n\n" - message += f"*MESSAGE:*\n`{self.message}`\n\n" - message += f"*EXCEPTION:*\n`{self.exception.__class__.__name__}: {str(self.exception)}`\n\n" - return message - - async def get_json(self): - try: return self.response.json() - except: return {} - - async def get_content(self): - try: return self.response.content - except: return b"" - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/goog/models/data/auth_tokens.py b/utils_v2/goog/models/data/auth_tokens.py deleted file mode 100644 index 1873934..0000000 --- a/utils_v2/goog/models/data/auth_tokens.py +++ /dev/null @@ -1,239 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Wednesday, 30th Oct., 2024. - - OBJECTIVE: - - To provide a data model for describing the tokens to be used for Google's APIs. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For making data behaviour_models: -from pydantic import BaseModel, Field, field_validator, model_validator, AwareDatetime -from typing import Optional, Literal, Union, Dict, List, Any - -# Related to Google: -from google.auth.transport.requests import Request -from google.oauth2.credentials import Credentials - -# My utils: -from utils_v2.string import json -from utils_v2.string import regex -from utils_v2.date_time import date_time - -# To work with date and time: -import datetime -import dateparser - -# To make API calls: -import httpx - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class GoogleAuthTokens(BaseModel): - - accessToken: str = Field(description = "the main 'bearer' token") - refreshToken: str = Field(description = "token to be used to refresh the access token") - expiresAt: AwareDatetime = Field(description = "the time (utc) at which the token will expire") - scopes: List[str] = Field(description = "the list of permissions", default = []) - email: str | None = Field(description = "the email id of the user", default = None) - displayName: str | None = Field(description = "the display name of the user", default = None) - displayPictureUrl: str | None = Field(description = "the url to the display picture of the user", default = None) - - # ┏┓ ┏• - # ┃ ┏┓┏┓╋┓┏┓ - # ┗┛┗┛┛┗┛┗┗┫ - # ┛ - - class Config: - extra = "allow" - - # ┓┏ ┓• ┓ • - # ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓ - # ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗ - - @field_validator("expiresAt", mode = "before") - def parse_dates(cls, value): - if not isinstance(value, datetime.datetime): - parsed = date_time.parse_date_time(value, date_formats = ["%Y%m%d", "%Y-%m-%d"]) - value = parsed if isinstance(parsed, datetime.datetime) else dateparser.parse(value) - if isinstance(value, datetime.datetime): value = date_time.to_timezone(value, date_time.TIMEZONE_UTC) - return value - - # ┏┓ • - # ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏ - # ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛ - # ┛ - - @property - def expired(self): - return True if date_time.get_current_utc_date_time() >= self.expiresAt else False - - @property - def ttl(self): - return (self.expiresAt - date_time.get_current_utc_date_time()).total_seconds() - - # ┏┓ ┏┓ - # ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏ - # ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛ - - def refresh( - self, - client_id: str, - client_secret: str, - force_refresh: bool = False - ) -> bool: - - """ - Synchronously (blocking) refreshes the existing access tokens in place. - :param client_id: The id of the client (OAuth JSON) for which these tokens were granted. - :param client_secret: The secret of the client (OAuth JSON) for which these tokens were granted. - :param force_refresh: Whether you want to refresh the token even if it hasn't expired. - :return: True if refreshed, else False. - """ - - # Start by assuming failure: - success = False - - try: - - # Go ahead only if either the token has expired, - # or the user has asked to forcefully refresh the tokens: - if self.expired or force_refresh: - - # Create the credentials: - credentials = Credentials.from_authorized_user_info( - info = { - "client_id": client_id, - "client_secret": client_secret, - "refresh_token": self.refreshToken, - "expires_at": self.expiresAt - } - ) - - # Request a refresh: - credentials.refresh(Request()) - - # Note down the new credentials: - if credentials.token != self.accessToken: - success = True - self.accessToken = credentials.token - self.refreshToken = credentials.refresh_token - self.expiresAt = date_time.as_if_timezone(credentials.expiry, timezone = date_time.TIMEZONE_UTC) - - # In case something goes wrong: - except Exception as exception: - success = False - - # Done here: - return success - - async def arefresh( - self, - http_client: httpx.AsyncClient, - client_id: str, - client_secret: str, - force_refresh: bool = False - ) -> bool: - - """ - Asynchronously refreshes the existing access tokens in place. - :param http_client: The HTTP client to use to make the refresh request. - :param client_id: The id of the client (OAuth JSON) for which these tokens were granted. - :param client_secret: The secret of the client (OAuth JSON) for which these tokens were granted. - :param force_refresh: Whether you want to refresh the token even if it hasn't expired. - :return: True if refreshed, else False. - """ - - # Currently we don't really know how to refresh tokens through low-level API calls, - # so we will pass on the intent to the regular, synchronous function. - return self.refresh( - client_id = client_id, - client_secret = client_secret, - force_refresh = force_refresh - ) - - def has_scopes(self, scopes: List[str]) -> bool: - - """ - Checks if all the specified scopes were granted. - :param scopes: The list of scopes to check. These are the permissions you need. - :return: True if all specified scoped are present, else False. - """ - - # Start by assuming success: - has_scopes = True - - # Now loop through the needed scopes and check: - for scope in scopes: - if scope not in self.scopes: - has_scopes = False - break - - # Done here: - return has_scopes - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/image/__init__.py b/utils_v2/image/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/image/scanner/__init__.py b/utils_v2/image/scanner/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/image/scanner/scanner.py b/utils_v2/image/scanner/scanner.py deleted file mode 100644 index 28fe69b..0000000 --- a/utils_v2/image/scanner/scanner.py +++ /dev/null @@ -1,410 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 19th Sept., 2024 - - OBJECTIVE: - - To provide a way to easily scan documents like printouts and visiting cards. - - REFERENCES: - - 01. https://medium.com/@victorolufemi/build-a-document-scanner-with-opencv-ff9f645a4085 - 02. https://github.com/JaidedAI/EasyOCR - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys - -from diffusers.utils.import_utils import candidates - -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# To work with image processing: -import cv2 -import imutils -import numpy as np - -# To run OCR: -import easyocr - -# To download images from the web: -import requests - -# My utils: -from utils_v2.string import json -from utils_v2.ai.object_detection.yolo import YoloDetect - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class DocumentScanner: - - def __init__( - self, - layout_detection_yolo = None, - whitelisted_yolo_classes = None, - ocr_languages = None - ): - - self.__yolo = YoloDetect( - model_file = layout_detection_yolo, - debug = False - ) - self.__whitelisted_yolo_classes = whitelisted_yolo_classes or [] - self.__ocr_engine = easyocr.Reader(ocr_languages or ["en"]) - pass - - @staticmethod - def open_image(image): - - """ - Opens an image from various sources. - :param image: The image either as a path to a file on the local disk, or a URL, or an io.BytesIO buffer. - :return: The image as a CV2 object. - """ - - # When the image is provided as a string, - # it could be either as a URL or a path to a local file: - if isinstance(image, str): - if image.startswith("https://") or image.startswith("http://"): - image = io.BytesIO(requests.get(image).content) - else: image = cv2.imread(image) - - # If the image is provided as a io.BytesIO buffer: - if isinstance(image, io.BytesIO): - image.seek(0) - image = np.asarray(bytearray(image.read()), dtype = np.uint8) - image = cv2.imdecode(image, cv2.IMREAD_COLOR) - - # Done here: - return image - - @staticmethod - def polygon_area(points): - - """ - Computes the area occupied by a shape described by the array of points. - Example input: [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] - :return: The area of the shape. - """ - - n = len(points) - area = 0.0 - for i in range(n): - j = (i + 1) % n # next vertex - area += points[i][0] * points[j][1] - area -= points[j][0] * points[i][1] - return abs(area) / 2.0 - - @staticmethod - def show(image, title = "Preview", wait = True): - - """ - Just a quick wrapper to show the image in a window. - :param image: The image that you want to show. - :param title: The title of the window. - :param wait: Set this to True when you want to show the window(s). This is useful when you want to show many - windows at once. Suppose you want to show a lot of windows, you set this to False for all calls except the - very last one. - :return: None. - """ - - cv2.imshow(title, image) - if wait: - cv2.waitKey() - cv2.destroyAllWindows() - - @staticmethod - def enhance(image): - - """ - Applies a form of contrast boost to make the edges more easily visible. - :param image: The OpenCV image that needs to be enhanced. - :return: The enhanced CV2 image. - """ - - return cv2.detailEnhance( - src = image, - sigma_s = 20, - sigma_r = 0.15 - ) - - @staticmethod - def get_edges(image): - - """ - Gets the edges in an image. - :param image: A CV2 image. - :return: The image with the edges detected. - """ - - # Denoise the image: - processed_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - processed_image = cv2.GaussianBlur( - processed_image, - ksize = (5, 5), - sigmaX = 0 - ) - - # Detect edges in the image: - processed_image = cv2.Canny( - processed_image, - threshold1 = 50, - threshold2 = 200 - ) - - # Close small gaps in the edges: - kernel = np.ones((5, 5), np.uint8) - processed_image = cv2.dilate(processed_image, kernel, iterations = 1) - # processed_image = cv2.morphologyEx(processed_image, cv2.MORPH_CLOSE, kernel) - # processed_image = cv2.erode(processed_image, kernel, iterations = 1) - - # Done here: - return processed_image - - def scan(self, image, min_area = 0.125): - - """ - Looks for a rectangle in an image and flattens it out. No colour filters are applied here. - :param image: The image either as a path to a file on the local disk, or a URL, or an io.BytesIO buffer. - :param min_area: The minimum area occupied by the document in the image. - :return: The flattened image if any, else None. - """ - - # Open the image and read the data: - image = self.open_image(image) - if image is None: return None - height, width = image.shape[:2] - image_area = height * width - - # Enhance the image to have better visibility of edges: - # processed_image = self.enhance(image.copy()) - - # Detect edges in the image: - processed_image = self.get_edges(image.copy()) - - # Find the contours in the edges, - # and sort them in ascending order: - contours = cv2.findContours(processed_image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) - contours = imutils.grab_contours(contours) - contours = sorted(contours, key = cv2.contourArea, reverse = True) - - # We try to get clean and passable contours. - # For our purposes, 'clean' is when it can be approximated to exactly 4 sides, - # and 'passable' is when the approximation comes close to it: - clean_rects = [] - passable_rects = [] - for contour in contours: - perimeter = cv2.arcLength(contour, closed = True) - approximation = cv2.approxPolyDP(contour, 0.025 * perimeter, closed = True) - if len(approximation) == 4: clean_rects.append(approximation) - elif len(approximation) <= 32: - candidate_contour = cv2.minAreaRect(approximation) - candidate_contour = cv2.boxPoints(candidate_contour) - candidate_contour = np.intp(candidate_contour) - passable_rects.append(candidate_contour) - clean_rects = sorted(clean_rects, key = cv2.contourArea, reverse = True) - passable_rects = sorted(passable_rects, key = cv2.contourArea, reverse = True) - - # Now we decide between the best candidate: - document_outline = None - if len(clean_rects) > 0: - candidate_rect = np.array([p[0] for p in clean_rects[0]]) - rectangle_area = cv2.contourArea(candidate_rect) - if rectangle_area / image_area >= min_area: document_outline = candidate_rect - if document_outline is None and len(passable_rects) > 0: - candidate_rect = cv2.minAreaRect(passable_rects[0]) - candidate_rect = cv2.boxPoints(candidate_rect) - candidate_rect = np.intp(candidate_rect) - rectangle_area = cv2.contourArea(candidate_rect) - if rectangle_area / image_area >= min_area: document_outline = candidate_rect - - # If there is no rectangular contour, - # we exit with failure: - if document_outline is None: return None - - # Since we did get the best candidate for the document, - # we figure out which point n the contour is which corner of the document: - document_rectangle = np.zeros((4, 2), dtype = "float32") - sum_points = document_outline.sum(axis = 1) - document_rectangle[0] = document_outline[np.argmin(sum_points)] - document_rectangle[2] = document_outline[np.argmax(sum_points)] - diff_points = np.diff(document_outline, axis = 1) - document_rectangle[1] = document_outline[np.argmin(diff_points)] - document_rectangle[3] = document_outline[np.argmax(diff_points)] - (top_left, top_right, bottom_right, bottom_left) = document_rectangle - - # let's compute the dimensions of the document in the image: - left_height = np.sqrt(((top_left[0] - bottom_left[0]) ** 2) + ((top_left[1] - bottom_left[1]) ** 2)) - right_height = np.sqrt(((top_right[0] - bottom_right[0]) ** 2) + ((top_right[1] - bottom_right[1]) ** 2)) - top_width = np.sqrt(((top_right[0] - top_left[0]) ** 2) + ((top_right[1] - top_left[1]) ** 2)) - bottom_width = np.sqrt(((bottom_right[0] - bottom_left[0]) ** 2) + ((bottom_right[1] - bottom_left[1]) ** 2)) - max_height = max(int(left_height), int(right_height)) - max_width = max(int(top_width), int(bottom_width)) - - # We compute the destination of the transform: - destination = np.array( - object = [ - [0, 0], - [max_width - 1, 0], - [max_width - 1, max_height - 1], - [0, max_height - 1] - ], - dtype = "float32" - ) - - # We apply the transform that flattens out the document: - matrix = cv2.getPerspectiveTransform(document_rectangle, destination) - flattened_image = cv2.warpPerspective(image, matrix, dsize = (max_width, max_height)) - - # Done here: - return flattened_image - - def extract_text( - self, - image, - min_confidence = 0.5, - margin = 0.05 - ): - - """ - To run OCR on the input image. - :param image: The image either as a path to a file on the local disk, or a URL, or an io.BytesIO buffer. - :param min_confidence: The minimum amount of confidence for detected text to be considered. - :param margin: The extra pixels to include when cropping into a section for OCR. - :return: The extracted text. - """ - - # Make a variable that will hold the final result: - extracted_text = {} - - # Open the image and read the data: - image = self.open_image(image) - height, width = image.shape[:2] - - # Run OCR on the entire canvas: - ocr_result = [r[1] for r in self.__ocr_engine.readtext(image) if r[-1] >= min_confidence] - extracted_text["fullDoc"] = " ".join(ocr_result) - - # Get the doc layout in the image: - document_sections = self.__yolo.predict(image) - document_sections = document_sections["boxes"] - - # For each section, we run the OCR process individually: - section_results = [] - for section in document_sections: - if section["class"] in self.__whitelisted_yolo_classes: - section_width = section["x2"] - section["x1"] - section_height = section["y2"] - section["y1"] - x1 = max(int(section["x1"] - (margin * section_width)), 0) - y1 = max(int(section["y1"] - (margin * section_height)), 0) - x2 = min(int(section["x2"] + (margin * section_width)), width) - y2 = min(int(section["y2"] + (margin * section_height)), height) - sub_image = image[y1:y2, x1:x2] - ocr_result = [r[1] for r in self.__ocr_engine.readtext(sub_image) if r[-1] >= min_confidence] - section_results.append({ - "text": " ".join(ocr_result), - "class": section["class"], - "className": section["className"], - "x1": x1, - "y1": y1, - "x2": x2, - "y2": y2 - }) - extracted_text["bySection"] = section_results - - # Done here: - return extracted_text - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import time - - my_scanner = DocumentScanner( - layout_detection_yolo = r"/home/developer/PycharmProjects/utils/data/ai/behaviour_models/hugging_face/object_detection/YOLOv10-Document-Layout-Analysis/yolov10x_best.pt", - whitelisted_yolo_classes = [0, 1, 3, 4, 5, 7, 9, 10], - # whitelisted_yolo_classes = [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], - ocr_languages = ["en"] - ) - - image = my_scanner.open_image(r"/home/developer/Downloads/talkaholics_card.jpg") - document_image = my_scanner.scan(image) - if document_image is not None: - cv2.imwrite(r"/home/developer/Downloads/flattened_image.jpg", document_image) - start_time = time.time() - document_text = my_scanner.extract_text( - document_image, - min_confidence = 0.5 - ) - print("OCR RESULT:") - print(document_text) - - print(f"FINISHED IN {time.time() - start_time} SECONDS!") - - else: print("No image") diff --git a/utils_v2/image/scanner/scanner_v2.py b/utils_v2/image/scanner/scanner_v2.py deleted file mode 100644 index fc63627..0000000 --- a/utils_v2/image/scanner/scanner_v2.py +++ /dev/null @@ -1,379 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 24th Sept., 2024 - - OBJECTIVE: - - To provide a way to easily scan documents like printouts and visiting cards. - - REFERENCES: - - 01. https://medium.com/@victorolufemi/build-a-document-scanner-with-opencv-ff9f645a4085 - 02. https://github.com/JaidedAI/ - 03. https://github.com/criistian14/flutter_document_scanner/blob/master/flutter_document_scanner_android/android/src/main/kotlin/com/christian/flutterDocumentScanner/OpenCVPlugin.kt - 04. https://www.geeksforgeeks.org/python-bilateral-filtering/ - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# To work with image processing: -import cv2 -import imutils -import numpy as np - -# To run OCR: -import easyocr - -# To download images from the web: -import requests - -# My utils: -from utils_v2.string import json -from utils_v2.ai.object_detection.yolo import YoloDetect - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class DocumentScanner: - - def __init__( - self, - layout_detection_yolo = None, - whitelisted_yolo_classes = None, - ocr_languages = None - ): - - self.__yolo = YoloDetect( - model_file = layout_detection_yolo, - debug = False - ) - self.__whitelisted_yolo_classes = whitelisted_yolo_classes or [] - self.__ocr_engine = easyocr.Reader(ocr_languages or ["en"]) - pass - - @staticmethod - def open_image(image): - - """ - Opens an image from various sources. - :param image: The image either as a path to a file on the local disk, or a URL, or an io.BytesIO buffer. - :return: The image as a CV2 object. - """ - - # When the image is provided as a string, - # it could be either as a URL or a path to a local file: - if isinstance(image, str): - if image.startswith("https://") or image.startswith("http://"): - image = io.BytesIO(requests.get(image).content) - else: image = cv2.imread(image) - - # If the image is provided as a io.BytesIO buffer: - if isinstance(image, io.BytesIO): - image.seek(0) - image = np.asarray(bytearray(image.read()), dtype = np.uint8) - image = cv2.imdecode(image, cv2.IMREAD_COLOR) - - # Done here: - return image - - @staticmethod - def show(image, title = "Preview", wait = True): - - """ - Just a quick wrapper to show the image in a window. - :param image: The image that you want to show. - :param title: The title of the window. - :param wait: Set this to True when you want to show the window(s). This is useful when you want to show many - windows at once. Suppose you want to show a lot of windows, you set this to False for all calls except the - very last one. - :return: None. - """ - - cv2.imshow(title, image) - if wait: - cv2.waitKey() - cv2.destroyAllWindows() - - @staticmethod - def get_edges(image): - - """ - Apply all the preprocessing filters on the image before sending it off for contour-finding. - :param image: The image to pre-process. - :return: The pre-processed image. - """ - - # Denoise the image: - processed_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - processed_image = cv2.bilateralFilter( - processed_image, - d = 9, - sigmaColor = 75, - sigmaSpace = 75 - ) - - # Detect edges in the image: - processed_image = cv2.Canny( - processed_image, - threshold1 = 75, - threshold2 = 200 - ) - - # Close small gaps in the edges: - kernel = np.ones((5, 5), np.uint8) - processed_image = cv2.dilate(processed_image, kernel, iterations = 1) - # processed_image = cv2.morphologyEx(processed_image, cv2.MORPH_CLOSE, kernel) - # processed_image = cv2.erode(processed_image, kernel, iterations = 1) - - # Done here: - return processed_image - - def scan(self, image, min_area = 0.125): - - """ - Looks for a rectangle in an image and flattens it out. No colour filters are applied here. - :param image: The image either as a path to a file on the local disk, or a URL, or an io.BytesIO buffer. - :param min_area: The minimum area occupied by the document in the image. - :return: The flattened image if any, else None. - """ - - # Open the image and read the data: - image = self.open_image(image) - if image is None: return None - height, width = image.shape[:2] - image_area = height * width - - # image = self.enhance(image) - processed_image = self.get_edges(image) - # self.show(processed_image) - - # Find the contours in the edges, - # and sort them in ascending order: - contours = cv2.findContours(processed_image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) - contours = imutils.grab_contours(contours) - contours = sorted(contours, key = cv2.contourArea, reverse = True) - - # We try to get clean and passable contours. - # For our purposes, 'clean' is when it can be approximated to exactly 4 sides, - # and 'passable' is when the approximation comes close to it: - clean_rects = [] - passable_rects = [] - for contour in contours: - perimeter = cv2.arcLength(contour, closed = True) - approximation = cv2.approxPolyDP(contour, 0.025 * perimeter, closed = True) - if len(approximation) == 4: clean_rects.append(approximation) - elif len(approximation) <= 32: - candidate_contour = cv2.minAreaRect(approximation) - candidate_contour = cv2.boxPoints(candidate_contour) - candidate_contour = np.intp(candidate_contour) - passable_rects.append(candidate_contour) - clean_rects = sorted(clean_rects, key = cv2.contourArea, reverse = True) - passable_rects = sorted(passable_rects, key = cv2.contourArea, reverse = True) - - # Now we decide between the best candidate: - document_outline = None - if len(clean_rects) > 0: - candidate_rect = np.array([p[0] for p in clean_rects[0]]) - rectangle_area = cv2.contourArea(candidate_rect) - if rectangle_area / image_area >= min_area: document_outline = candidate_rect - if document_outline is None and len(passable_rects) > 0: - candidate_rect = cv2.minAreaRect(passable_rects[0]) - candidate_rect = cv2.boxPoints(candidate_rect) - candidate_rect = np.intp(candidate_rect) - rectangle_area = cv2.contourArea(candidate_rect) - if rectangle_area / image_area >= min_area: document_outline = candidate_rect - - # If there is no rectangular contour, - # we exit with failure: - if document_outline is None: return None - - # Since we did get the best candidate for the document, - # we figure out which point n the contour is which corner of the document: - document_rectangle = np.zeros((4, 2), dtype = "float32") - sum_points = document_outline.sum(axis = 1) - document_rectangle[0] = document_outline[np.argmin(sum_points)] - document_rectangle[2] = document_outline[np.argmax(sum_points)] - diff_points = np.diff(document_outline, axis = 1) - document_rectangle[1] = document_outline[np.argmin(diff_points)] - document_rectangle[3] = document_outline[np.argmax(diff_points)] - (top_left, top_right, bottom_right, bottom_left) = document_rectangle - - # let's compute the dimensions of the document in the image: - left_height = np.sqrt(((top_left[0] - bottom_left[0]) ** 2) + ((top_left[1] - bottom_left[1]) ** 2)) - right_height = np.sqrt(((top_right[0] - bottom_right[0]) ** 2) + ((top_right[1] - bottom_right[1]) ** 2)) - top_width = np.sqrt(((top_right[0] - top_left[0]) ** 2) + ((top_right[1] - top_left[1]) ** 2)) - bottom_width = np.sqrt(((bottom_right[0] - bottom_left[0]) ** 2) + ((bottom_right[1] - bottom_left[1]) ** 2)) - max_height = max(int(left_height), int(right_height)) - max_width = max(int(top_width), int(bottom_width)) - - # We compute the destination of the transform: - destination = np.array( - object = [ - [0, 0], - [max_width - 1, 0], - [max_width - 1, max_height - 1], - [0, max_height - 1] - ], - dtype = "float32" - ) - - # We apply the transform that flattens out the document: - matrix = cv2.getPerspectiveTransform(document_rectangle, destination) - flattened_image = cv2.warpPerspective(image, matrix, dsize = (max_width, max_height)) - - # Done here: - return flattened_image - - def extract_text( - self, - image, - min_confidence = 0.5, - margin = 0.05 - ): - - """ - To run OCR on the input image. - :param image: The image either as a path to a file on the local disk, or a URL, or an io.BytesIO buffer. - :param min_confidence: The minimum amount of confidence for detected text to be considered. - :param margin: The extra pixels to include when cropping into a section for OCR. - :return: The extracted text. - """ - - # Make a variable that will hold the final result: - extracted_text = {} - - # Open the image and read the data: - image = self.open_image(image) - height, width = image.shape[:2] - - # Run OCR on the entire canvas: - ocr_result = [r[1] for r in self.__ocr_engine.readtext(image) if r[-1] >= min_confidence] - extracted_text["fullDoc"] = " ".join(ocr_result) - - # Get the doc layout in the image: - document_sections = self.__yolo.predict(image) - document_sections = document_sections["boxes"] - - # For each section, we run the OCR process individually: - section_results = [] - for section in document_sections: - if section["class"] in self.__whitelisted_yolo_classes: - section_width = section["x2"] - section["x1"] - section_height = section["y2"] - section["y1"] - x1 = max(int(section["x1"] - (margin * section_width)), 0) - y1 = max(int(section["y1"] - (margin * section_height)), 0) - x2 = min(int(section["x2"] + (margin * section_width)), width) - y2 = min(int(section["y2"] + (margin * section_height)), height) - sub_image = image[y1:y2, x1:x2] - ocr_result = [r[1] for r in self.__ocr_engine.readtext(sub_image) if r[-1] >= min_confidence] - section_results.append({ - "text": " ".join(ocr_result), - "class": section["class"], - "className": section["className"], - "x1": x1, - "y1": y1, - "x2": x2, - "y2": y2 - }) - extracted_text["bySection"] = section_results - - # Done here: - return extracted_text - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import time - - my_scanner = DocumentScanner( - layout_detection_yolo = r"/home/developer/PycharmProjects/utils/data/ai/behaviour_models/hugging_face/object_detection/YOLOv10-Document-Layout-Analysis/yolov10x_best.pt", - whitelisted_yolo_classes = [0, 1, 3, 4, 5, 7, 9, 10], - # whitelisted_yolo_classes = [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], - ocr_languages = ["en"] - ) - - image = my_scanner.open_image(r"/home/developer/Downloads/sushmita_card.jpg") - # image = my_scanner.open_image(r"/home/developer/Downloads/niranjan_card.jpg") - # image = my_scanner.open_image(r"/home/developer/Downloads/niranjan_card_2.jpg") - # image = my_scanner.open_image(r"/home/developer/Downloads/card_square.jpg") - document_image = my_scanner.scan(image) - if document_image is not None: - cv2.imwrite(r"/home/developer/Downloads/flattened_image.jpg", document_image) - start_time = time.time() - document_text = my_scanner.extract_text( - document_image, - min_confidence = 0.5 - ) - print("OCR RESULT:") - print(document_text) - - print(f"FINISHED IN {time.time() - start_time} SECONDS!") - - else: print("No image") diff --git a/utils_v2/logging/__init__.py b/utils_v2/logging/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/logging/__pycache__/__init__.cpython-310.pyc b/utils_v2/logging/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 58aab529554b819fb09219a66bbd0d4eb4a7beda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmd1j<>g`k0#Dw6bP)X*L?8o3AjbiSi&=m~3PUi1CZpd>|~rxeLiK> z870i&6Y7M?ICCN##2h*$%FgI`8e-;*rm@e1BzAlphS`={wOr_M5@ZhiNiZ5wMq}=b zSQ33ST)ThxA%Y5V(mCjybh`VU!NR6m+gr|r^E7+bZ2A+-$0^_Plc)(9VYIpXr1kXe zuD`dr`xZaieA;S_Huosr+ibO{|L}2Z_sQe!o!eaXe(WCg+OHO4cbje7{ugQlbsM@U zzQh?lP6!P}?jWEcX_&%j$5+DYrE<486y{NoaZxx5IAu5-{;E6o-)jwDMp$eHkQdOi zG8`&JPYSG$PW`+Nkt(3Afn2(k)!Q%B)QmeYW45wo#qZAf zisI{YzN+}foYy5EpvIc0zNWEE-cd51<=UDg8IN&9g`Q->@Y88m7->L+nMy3AEIFq> z7Y0#!t!aBB}^0|>`&m8V_(C7S~>enYV%yqG`W9aJ)c#@cW|{)_BnuwtS{x}YsNYx Tpj@)FC9SU2>ej=&ZvOW_+c>fx diff --git a/utils_v2/logging/context.py b/utils_v2/logging/context.py deleted file mode 100644 index d7ead43..0000000 --- a/utils_v2/logging/context.py +++ /dev/null @@ -1,468 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 2nd Aug., 2024 - - OBJECTIVE: - - To provide an easy way to log all system activities by way of managing the context of what is going on. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - - NOTES: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To manage context: -import contextvars -from contextlib import contextmanager, asynccontextmanager - -# To make decorators: -from functools import wraps - -# For system-level activities: -import os - -# My utils: -from utils_v2.string import json -from utils_v2.date_time import date_time -from utils_v2.security import sanitizers -from utils_v2.api.codes import StatusCodes, HttpCodes -from utils_v2.api.log import APILogModel -from utils_v2.api.response import ResponseModel - -# The needed data models: -from utils_v2.logging.model import GeneralLogModel - -# To work with date and time: -import time - -# For random strings: -import random - -# For debugging: -import traceback -import string - -# To work with datatypes: -from types import NoneType -import pandas as pd - -# To work with Pydantic objects: -from pydantic import BaseModel - -# For asynchronous activities: -import asyncio - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Chars to choose from for random strings: -ALPHANUMERIC_CHARS = string.ascii_letters + string.digits - -# To capture system information: -PROCESS_ID = os.getppid() -PARENT_PROCESS_ID = os.getppid() - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** EXCEPTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def describe_exception(exc): - - """ - Describes the exception in detail. It extracts the type of exception, a brief message, and even the entire - traceback. Useful for debugging in details without the terminal. You could either log the resultant dict or send it - to the dev team over some service like WhatsApp/Telegram. - :param exc: The exception that occurred. - :return: The dict that explains the exception. - """ - - exc_desc = { - "type": type(exc).__name__, - "msg": str(exc), - "tb": [str(exc_tb) for exc_tb in traceback.format_exception(exc, value = exc, tb = exc.__traceback__)] - } - - return exc_desc - - -# ***************************************************************************************************************** -# ***** **** -# *** Classes *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncMongoLogger: - - def __init__(self, db_conn, collection = "logs"): - - """ - This class uses an instance of 'AsyncMongo' and makes it usable as a logger. - :param db_conn: The instance of 'AsyncMongo' to use. - :param collection: The collection to write the log into. - """ - - self.__db_conn = db_conn - self.__collection = collection - - async def log(self, log_json): - - """ - Log something to the database using the connection provided when the object was made. - :param log_json: The dict to log. - :return: True if logged successfully, else False. - """ - - asyncio.create_task(self.__db_conn.insert_one( - collection = self.__collection, - document = log_json, - raise_exception = False - )) - - -# --------------------------------------------------------------------------------------------------------------------- - - -class AsyncLoggerContext: - - # Create the context-aware variable(s): - logger = contextvars.ContextVar("logger", default = None) - log_chain = contextvars.ContextVar("log_chain", default = None) - - @classmethod - @asynccontextmanager - async def logging_context(cls, logger, log_chain = None): - - """ - This function makes the context manager that makes the value of the log chain available to everything that is - called within the scope of the context. - :param logger: The object which is to be used to write the log. It should have a 'log' method which should take - in a dict as its input. - :param log_chain: The value of the log chain to be made available within the scope. - :return: None. - """ - - # Set the context: - token_logger = cls.logger.set(logger) - token_log_chain = cls.log_chain.set(log_chain) - - # Make the objects available within the context: - try: yield - - # Release the objects when the context is over: - finally: - cls.logger.reset(token_logger) - cls.log_chain.reset(token_log_chain) - - @staticmethod - def generate_log_id(count = 8): - return "".join(random.choice(ALPHANUMERIC_CHARS) for _ in range(min(8, count))) - - @classmethod - def get_logger(cls): - return cls.logger.get() - - @classmethod - def get_log_chain(cls): - return cls.log_chain.get() - - @staticmethod - def summarize( - value, - str_limit = 100, - expand: bool | int = False, - sensitive_keys: list[str] = None - ): - - """ - To summarize an input value to capture the essence without hoarding to much data. - :param value: Anything that you want to summarize. - :param str_limit: The max. no. of chars of a string to retain. - :param expand: Set to True for full expansion, False for no expansion, and an integer for a specific level of - expansion. Applicable on iterables and dicts. The smaller this number, the more concise the summary will be, - and vice versa. - :param sensitive_keys: The list of keys (of a dict) to obscure when summarizing. - :return: The summarized version of the input. - """ - - # If the input is a Pydantic class: - if isinstance(value, BaseModel): value = value.model_dump() - - # Check the sensitive keys: - if sensitive_keys is None: sensitive_keys = [] - - # Handle datatypes that you don't want to modify: - if isinstance(value, (int, float, bool, NoneType)): pass - - # When the value is a list or similar iterable: - elif isinstance(value, (list, tuple, set)): - if expand: - if not isinstance(expand, bool): expand -= 1 - value = [AsyncLoggerContext.summarize( - v, - expand = expand, - sensitive_keys = sensitive_keys - ) for v in value] - else: value = f"array of {len(value)} item(s)" - - # If the value is a dict: - elif isinstance(value, dict): - if expand: - if not isinstance(expand, bool): expand -= 1 - value = { - k: AsyncLoggerContext.summarize( - v, - expand = expand, - sensitive_keys = sensitive_keys - ) if k not in sensitive_keys else "********" - for k, v in value.items() - } - else: value = f"object of {len(value.keys())} field(s) [{', '.join(value.keys())}]" - - # When a dataframe is passed: - elif isinstance(value, pd.DataFrame): - cols = value.columns.to_list() - value = f"table with {len(cols)} col(s) [{', '.join(cols)}] and {len(value)} row(s)" - str_limit = 999 - - # If the input is some form of non-standard object: - else: value = str(value) - - # Handle strings: - if isinstance(value, str): - if len(value) > str_limit: value = value[:str_limit] + "..." - - # Done here: - return value - - @classmethod - def log_it( - cls, - api_version: str = None, - project: str = None, - log_type: str = None, - operation: str = None, - log_input: bool | int = True, - log_output: bool | int = True, - sensitive_keys: list = None - ): - - """ - A decorator factor that can be used to log the results of functions automatically. - :param api_version: A string that indicates the version code of the function being decorated. - :param project: A hint about which project is being worked on. - :param log_type: A hint about which module is being worked on. - :param operation: A hint about which action in a particular module is being worked on. - :param log_input: Set to True to capture everything that went into the function, False to capture the least - info, and set it to an integer to capture a certain depth of the input (applicable on iterables and dicts. - :param log_output: The same as 'log_input', but applicable to the response from the function. - :param sensitive_keys: Keys of a dict whose values must be obscured even if that depth is being captured. - :return: A decorator with the configuration. - """ - - def decorator(func): - - @wraps(func) - async def wrapper(*args, **kwargs): - - # Make variables and extract available info.: - exception = None - response = None - request_ts = date_time.get_current_utc_date_time() - start_ts = time.perf_counter() - cpu_start_ts = time.process_time() - - # Execute the function that is being wrapped: - try: response = await func(*args, **kwargs) - except Exception as exc: exception = exc - - # Do the next steps only if within the logging context: - if cls.get_logger() is not None: - - # Create the log: - if not args: args = None - if not kwargs: kwargs = None - func_log = GeneralLogModel( - pid = PROCESS_ID, - ppid = PARENT_PROCESS_ID, - project = project, - log = log_type or func.__name__, - operation = operation or func.__name__, - apiVer = api_version, - logId = cls.generate_log_id(), - logChain = cls.get_log_chain(), - ts = request_ts, - tat = time.perf_counter() - start_ts, - cpuTime = time.process_time() - cpu_start_ts, - func = func.__name__, - args = cls.summarize(args, expand = log_input, sensitive_keys = sensitive_keys), - kwargs = cls.summarize(kwargs, expand = log_input, sensitive_keys = sensitive_keys), - exception = None if exception is None else describe_exception(exception), - response = cls.summarize(response, expand = log_output, sensitive_keys = sensitive_keys), - ).model_dump() - - # Write the log: - await cls.get_logger().log(func_log) - - # Done here: - if exception is not None: raise exception - return response - - return wrapper - - return decorator - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - from utils_v2.database.async_mongo_v2 import AsyncMongo - - @AsyncLoggerContext.log_it( - api_version = "0.0.1", - project = "testProj", - log_type = "work", - operation = "someWork", - log_input = True, - log_output = True, - sensitive_keys = None - ) - async def some_work(*args, **kwargs): - print("SOME WORK:", AsyncLoggerContext.get_log_chain()) - await asyncio.sleep(max(2.0 * random.random(), 1.0)) - total = sum(args) - return total - - @AsyncLoggerContext.log_it( - api_version = "0.0.1", - project = "testProj", - log_type = "work", - operation = "moreWork", - log_input = True, - log_output = True, - sensitive_keys = ["password", "sessionToken"] - ) - async def more_work(*args, **kwargs): - print("MORE WORK:", AsyncLoggerContext.get_log_chain()) - await asyncio.sleep(max(2.0 * random.random(), 1.0)) - return {"success": True, "sessionToken": "1234567890"} - - @AsyncLoggerContext.log_it( - api_version = "0.0.1", - project = "testProj", - log_type = "work", - operation = "moreWork", - log_input = True, - log_output = True, - sensitive_keys = None - ) - async def last_work(*args, **kwargs): - print("LAST WORK:", AsyncLoggerContext.get_log_chain()) - await asyncio.sleep(max(2.0 * random.random(), 1.0)) - - async def main(chain = None): - - # Connect to MongoDB: - mongo = AsyncMongo( - connection_string = r"mongodb://del.ditscentre.in:27017,wtt.ditscentre.in:27017,mum.arh.001.ditscentre.in:27017/admin?tls=true&tlsCAFile=%2Fetc%2Fssl%2Fcerts%2Fmongo_data_ca.pem&tlsCertificateKeyFile=%2Fetc%2Fssl%2Fcerts%2Fmongo_data_cert.pem&replicaSet=dits_mongod_rep&readPreference=primary&authMechanism=MONGODB-X509&authSource=%24external", - database_name = "converse", - max_connections = 10, - debug = True - ) - - # Convert the connection to a logger instance that can be injected - # into the context as a dependency: - mongo_logger = AsyncMongoLogger( - db_conn = mongo, - collection = "logs" - ) - - # Initialize the context: - async with AsyncLoggerContext.logging_context( - logger = mongo_logger, - log_chain = chain - ): - - # Run some functions within the context: - await some_work(1, 2, 3, 4, 5) - await more_work(username = "john.doe@domain.com", password = "mySecretPass") - - # Run something outside the context: - await last_work() - - # async def multi_main(): - # tasks = [ - # main(chain = "kPRwXdItb1"), - # main(chain = "456") - # ] - # await asyncio.gather(*tasks) - - asyncio.run(main(chain = "00wGHRFYPY123")) diff --git a/utils_v2/logging/model.py b/utils_v2/logging/model.py deleted file mode 100644 index 355d07e..0000000 --- a/utils_v2/logging/model.py +++ /dev/null @@ -1,131 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 11th Oct., 2024 - - OBJECTIVE: - - To have a structure for the logs maintained for regular function calls. - This is different from the logs maintained for API calls. - - REFERENCES: - - 01. https://chatgpt.com/share/6708b6c9-6ba4-800f-9ea9-00ec35067512 - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# System-level activities: -import distro -import socket -import platform - -# For data-modelling: -from pydantic import BaseModel, Field -from typing import Any, Optional, List, Literal - -# To work with date and time: -import datetime - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Info for logging that will stay constant during runtime: -SERVER_HOSTNAME = str(socket.gethostname()) -PLATFORM_INFO = platform.uname() -HOST_OS = str(distro.name(True)) -HOST_CPU = f"{PLATFORM_INFO.processor} ({PLATFORM_INFO.machine})" - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class GeneralLogModel(BaseModel): - - # To identify the machine the code is running on. - # DO NOT MODIFY THESE: - hostname: str = SERVER_HOSTNAME - os: str = HOST_OS - cpu: str = HOST_CPU - # Can modify these: - pid: Optional[Any] = None - ppid: Optional[Any] = None - - # To identify the project and actions: - project: Optional[str] = None - log: str - operation: Optional[str] = None - apiVer: Optional[str] = None - logId: Optional[str] = None - logChain: Optional[str] = None - - # Timing metrics: - ts: datetime.datetime - tat: float - cpuTime: float - - # To understand the inputs: - func: str - args: Optional[Any] = None - kwargs: Optional[Any] = None - - # To understand the outputs: - exception: Optional[Any] = None - response: Optional[Any] = None - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/mail/__init__.py b/utils_v2/mail/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/mail/async_smpt.py b/utils_v2/mail/async_smpt.py deleted file mode 100644 index 0e8ed06..0000000 --- a/utils_v2/mail/async_smpt.py +++ /dev/null @@ -1,443 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 16th Jul, 2024 - - OBJECTIVE: - - To be able to send out mails from code. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For working with mails: -import aiosmtplib -from email.mime.multipart import MIMEMultipart -from email.mime.image import MIMEImage -from email.mime.text import MIMEText -from email.mime.base import MIMEBase -from email import encoders - -# For random strings: -import string -import random - -# For system-level activities: -import os - -# For working with files in RAM: -import io - -# For debugging: -from icecream import IceCreamDebugger - -# To work with datatypes: -from typing import List - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class SMTPMessage: - - def __init__( - self, - to_email: str, - subject: str, - cc_emails: List[str] = None, - bcc_emails: List[str] = None - ): - - """ - Create an instance of the message that you would like to send. - :param to_email: The EMail ID of th recipient. - :param subject: The subject of the mail. - :param cc_emails: A list of recipients to add to the CC section. - :param bcc_emails: A list of recipients to add to the BCC section. - """ - - self.message = MIMEMultipart() - self.message["To"] = to_email - self.message["Subject"] = subject - if cc_emails: self.message["CC"] = ",".join(cc_emails) - if bcc_emails: self.message["BCC"] = ",".join(bcc_emails) - - def add_text(self, text): - - """ - Add plain-text to the mail body. - :param text: The text to add to the mail body. - :return: None. - """ - - self.message.attach(MIMEText(text, "plain")) - - def add_html(self, html_text): - - """ - Add HTML text to the mail body. - :param html_text: The HTML text to add to the mail body. - :return: None. - """ - - self.message.attach(MIMEText(html_text, "html")) - - def add_inline_image(self, image_file, content_id = None): - - """ - Add an inline image to the body of the mail. - NOTE: This is NOT the same as sending an image as an attachment. - :param image_file: The image data to attach to the mail body. - :param content_id: Inline images are inserted via HTML bocks. This field identifies the image resource. If not - specified, I will generate a random string. You may write a custom value here if you know what you are - doing. For most use cases, please ignore this field. - :return: None. - """ - - # Read the image as bytes: - image_bytes = None - if type(image_file) is str: - with open(image_file, "rb") as opened_image_file: - image_bytes = opened_image_file.read() - if type(image_file) is io.BytesIO: - image_file.seek(0) - image_bytes = image_file.getvalue() - - # Declare the part to be attached to the multipart message: - if image_bytes is not None: - - # Create the HTML block if the image pointer is blank: - if content_id is None: - content_id = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)) - self.add_html(f""" - - -

    - - - """) - - # Then add the image: - image_part = MIMEImage(image_bytes) - image_part.add_header("Content-ID", f"<{content_id}>") - self.message.attach(image_part) - - def add_attachment(self, attachment_file, file_name = None): - - # Declare the part to be attached to the multipart message: - part = MIMEBase("application", "octet-stream") - - # If the attachment is a file stored in the local disk: - if isinstance(attachment_file, str): - file_name = file_name or os.path.split(attachment_file)[-1] - with open(attachment_file, "rb") as attachment: - part.set_payload(attachment.read()) - - # If the file is held in RAM: - elif isinstance(attachment_file, io.BytesIO): - attachment_file.seek(0) - part.set_payload(attachment_file.read()) - - # Encode and attach the file: - encoders.encode_base64(part) - part.add_header( - "Content-Disposition", - f"attachment; filename= {file_name}", - ) - self.message.attach(part) - - def get_message(self): - return self.message - - -# --------------------------------------------------------------------------------------------------------------------- - - -class AsyncSMTPClient: - - # Constants: - SMTP_TLS_PORT = 587 - SMTP_SSL_PORT = 465 - - # variables: - __smtp = None - - def __init__( - self, - email, - password, - server, - port = 587, - rate_limiters = None, - wait_for_turn = True, - debug = True, - debug_prefix = "Mail (C) | " - ): - - """ - Set up the mail client. - :param email: The Email ID to use when sending out mails. - :param password: The password of the EMail ID that is being used. - :param server: The EMail server. - :param port: The port number to connect to the host. - :param rate_limiters: The rate limiters to use. Must have "get_turn" and "has_turn" methods. "get_turn" method - must wait for the turn, and "has_turn" method must only check if a turn is available. - :param wait_for_turn: To wait for turn if the rate limit has been exceeded, or to return with failure. - :param debug: Whether, or not, you want to print debugging messages. - :param debug_prefix: The prefix to identify the debugging messages. - """ - - # Initialize the debugger: - self.__printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self.__printer.disable() - - # Note down the credentials and other details: - self.__email = email - self.__password = password - self.__server = server - self.__port = port - self.__rate_limiters = rate_limiters if type(rate_limiters) is list else ([rate_limiters] if rate_limiters is not None else []) - self.__wait_for_turn = wait_for_turn - - def enable_debug(self): - self.__printer.enable() - - def disable_debug(self): - self.__printer.disable() - - async def login(self): - - """ - To connect to the mail server and authenticate the user. - :return: True if authenticated, else False. - """ - - # Initialize the SMTP connection, - # and return with success if all goes well: - try: - self.__smtp = aiosmtplib.SMTP( - hostname = self.__server, - port = self.__port, - use_tls = False, - start_tls = False - ) - await self.__smtp.connect() - await self.__smtp.starttls() - await self.__smtp.login(self.__email, self.__password) - return True - - # Return with failure if something goes wrong: - except Exception as exception: - self.__printer(exception) - try: await self.__smtp.quit() - except Exception as exception: self.__printer(exception) - self.__smtp = None - return False - - async def ensure_connection(self): - - """ - Can be run before the sending operation to confirm that we are yet connected to the server. - If not connected, this code will reattempt to connect and log-in. - :return: True if connected, else False. - """ - - # If the login had failed initially, the object will be set to null. - # In such a case, we make an attempt to login: - if self.__smtp is None: - return await self.login() - - # If the login was successful, we check if the connection is active. - # If not, we try to re-login: - if self.__smtp.is_connected: - return True - else: - try: - await self.__smtp.connect() - await self.__smtp.starttls() - await self.__smtp.login(self.__email, self.__password) - return True - except Exception as exception: - self.__printer(exception) - try: await self.__smtp.quit() - except Exception as exception: self.__printer(exception) - self.__smtp = None - return False - - async def logout(self): - - """ - Closes the connection to the SMTP client. - :return: True by default. - """ - - if self.__smtp is not None: - try: await self.__smtp.quit() - except Exception as exception: self.__printer(exception) - self.__smtp = None - return True - - async def send(self, mail: SMTPMessage): - - """ - Send out the mail. - :param mail: The instance of 'MailMessage' with all the content populated. - :return: A dict with 'success' and 'message'. - """ - - # Return with failure if we aren't connected, - # and our attempt to (re)connect fails: - if not await self.ensure_connection(): - return { - "success": False, - "message": "login failed" - } - - # Comply with the rate-limit: - for rate_limiter in self.__rate_limiters: - if not self.__wait_for_turn: - if not await rate_limiter.has_turn(): return False - got_turn = await rate_limiter.get_turn() - if not got_turn: - return { - "success": False, - "message": "rate-limit wait timeout" - } - - # Try to send the message: - try: - mail.message["From"] = self.__email - response = await self.__smtp.send_message(mail.message) - return { - "success": True, - "message": f"mail accepted - {response[-1]}" - } - - # If something goes wrong: - except Exception as exception: - self.__printer(exception) - return { - "success": False, - "message": str(exception) - } - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - from utils_v2.string import json - - async def test(): - - mail_client = AsyncSMTPClient( - email = "sender@gmail.com", - password = "zcaf nmqy ncfz fave", - server = "smtp.gmail.com", - rate_limiters = None - ) - - my_mail = SMTPMessage( - to_email = "orangebhopli@gmail.coms", - subject = "Bhopli is the best!", - cc_emails = None, - bcc_emails = None - ) - my_mail.add_html( - """ - - - - - Sample HTML String - - - -

    Hello, Bhopli!

    -

    Bhopli is the best, most well-behaved cat in the known universe.

    - - - """ - ) - my_mail.add_text("This is how you should pet her 👇") - my_mail.add_inline_image(r"/path/to/image/cat_petting.png") - my_mail.add_attachment(r"/path/to/file/sample_label.pdf") - - await mail_client.login() - result = await mail_client.send(my_mail) - print("MAIL RESULT:", json.to_string(result)) - await mail_client.logout() - - asyncio.run(test()) diff --git a/utils_v2/mail/mail_parser.py b/utils_v2/mail/mail_parser.py deleted file mode 100644 index 8bda8a3..0000000 --- a/utils_v2/mail/mail_parser.py +++ /dev/null @@ -1,184 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 26th Nov., 2024 - - OBJECTIVE: - - To parse raw mail bodies and give a structure that is suitable for storing in No-SQL databases like MongoDB. The - raw mail's text is expected to be compliant with standard defined in RFC 5322, RFC 2045, and maybe a few more. - - REFERENCES: - - 1. GitHub: https://github.com/SpamScope/mail-parser - 2. RFC 5322: https://datatracker.ietf.org/doc/html/rfc5322 - 3. RFC 2045: https://datatracker.ietf.org/doc/html/rfc2045 - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.string import json -from utils_v2.string import regex -from utils_v2.date_time import date_time - -# To work with mails: -import mailparser - -# To parse the HTML content in the mail: -from bs4 import BeautifulSoup - -# To work with datatypes: -from typing import Any, Dict - -# To work with base-64 encoding: -import base64 - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def parse(raw_mail: str | bytes) -> Dict[str, Any]: - - """ - To parse the raw mail text to a usable JSON that can even be stored on a No-SQL database like MongoDB. - DOCUMENTATION: - 1. GitHub: https://github.com/SpamScope/mail-parser - 2. RFC 5322: https://datatracker.ietf.org/doc/html/rfc5322 - 3. RFC 2045: https://datatracker.ietf.org/doc/html/rfc2045 - :param raw_mail: The raw mail body that adheres to RFC 5322 and RFC 2045 (among others). - :return: The parsed JSON format (dict) of the mail. - """ - - # Parse the raw format: - if isinstance(raw_mail, str): parsed_mail = mailparser.parse_from_string(raw_mail) - else: parsed_mail = mailparser.parse_from_bytes(raw_mail) - - # Format the attachments: - message_attachments = [ - { - "filename": attachment["filename"], - "type": attachment["mail_content_type"], - "cid": regex.find_first(text = attachment["content-id"], pattern = r"(?<=<).*(?=>)"), - "rawCid": attachment["content-id"], - "contentDisposition": (cd := attachment["content-disposition"]), - "isInline": True if cd.lower().find("inline") >= 0 else False, - "charset": attachment["charset"], - "contentTransferEncoding": attachment["content_transfer_encoding"], - "payload": attachment["payload"] - } for attachment in parsed_mail.attachments - ] - - # Figure out which entity (text and HTML) came in which sequence. - # The library doesn't give us any sequence info so we do some custom string processing here to figure out the order - # in which to render the contents of the page. - parts = [ - { - "no": None, - "offset": max( - parsed_mail.message_as_string.find(t), - parsed_mail.message_as_string.find(base64.b64encode(t.encode()).decode()) - ), - "type": "text/plain", - "data": t - } for t in parsed_mail.text_plain - ] - parts = parts + [ - { - "partNo": None, - "offset": max( - parsed_mail.message_as_string.find(h), - parsed_mail.message_as_string.find(base64.b64encode(h.encode()).decode()) - ), - "type": "text/html", - "data": h - } for h in parsed_mail.text_html - ] - parts = sorted(parts, key = lambda x: x["offset"]) - for i, p in enumerate(parts): p["no"] = i - - # Get the unformatted text from everything in the mail: - unformatted_text = [] - for p in parts: - if p["type"] == "text/html": - html_parser = BeautifulSoup(p["data"], "html.parser") - unformatted_text.append(html_parser.get_text()) - else: unformatted_text.append(p["data"]) - - # Put everything together: - return { - "ts": date_time.to_timezone(parsed_mail.date, timezone = date_time.TIMEZONE_UTC), - "readTs": date_time.get_current_utc_date_time(as_string = False), - "headers": parsed_mail.headers, - "from": [{"name": _[0] or _[1], "email": _[1]} for _ in parsed_mail.headers["From"]], - "to": [{"name": _[0] or _[1], "email": _[1]} for _ in parsed_mail.headers["To"]], - "cc": [{"name": _[0] or _[1], "email": _[1]} for _ in parsed_mail.headers.get("Cc", [])], - "bcc": [{"name": _[0] or _[1], "email": _[1]} for _ in parsed_mail.headers.get("Bcc", [])], - "subject": parsed_mail.headers["Subject"], - "text": parsed_mail.text_plain, - "html": parsed_mail.text_html, - "parts": parts, - "unformattedText": "\n".join(unformatted_text), - "attachments": message_attachments, - "isInbox": None - } - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/network/__init__.py b/utils_v2/network/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/network/ip.py b/utils_v2/network/ip.py deleted file mode 100644 index 134078f..0000000 --- a/utils_v2/network/ip.py +++ /dev/null @@ -1,173 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 12th Jul., 2024 - - OBJECTIVE: - - To provide an easy way to get geolocation information of an IP address. - - REFERENCES: - - 1) https://medium.com/@tubelwj/how-to-retrieve-ip-geolocation-information-in-python-929e15041e3e - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For working with IP Addresses: -import ipaddress - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def ipv4_to_int(ip_string): - - """ - Converts an IP (v4) string to an integer value. - :param ip_string: The IP address (v4) that you want to convert to integer format. - :return: An integer representation of the IP (v4) address. - """ - - ip_numerical = int(ipaddress.IPv4Address(ip_string)) - return ip_numerical - - -# --------------------------------------------------------------------------------------------------------------------- - - -def int_to_ipv4(ip_numerical): - - """ - Interprets the IP (v4) value from the given integer value. - :param ip_numerical: The integer value that represents an IP (v4) address. - :return: - """ - - ip_string = str(ipaddress.IPv4Address(ip_numerical)) - return ip_string - - -# --------------------------------------------------------------------------------------------------------------------- - - -def ipv4_to_bin(ip_string): - - """ - Converts an input IP (v4) address to the binary string that represents the 32 bits. - :param ip_string: The IP (v4) string in a format like "192.168.0.1" - :return: The binary representation (as a string) of the input IP address. - """ - - ip_binary = bin(int(ipaddress.IPv4Address(ip_string)))[2:].zfill(32) - return ip_binary - - -# --------------------------------------------------------------------------------------------------------------------- - - -def bin_to_ipv4(ip_binary): - - """ - Interprets the IP (v4) value from the given binary string. - :param ip_binary: The string of 1s and 0s that represents the IP (v4) address. - :return: The IP (v4) address as a string. - """ - - ip_string = str(ipaddress.IPv4Address(int(ip_binary, 2))) - return ip_string - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_ipv4_range(ip_string, as_string = True): - - """ - Given a network description in the format "88.95.100.128/25", this function tells you the first and last IP - addresses of that network. Useful for determining if an IP address lies in a network. - :param ip_string: The input network description in the format "88.95.100.128/25" - :param as_string: To select between integer and string formats for the IP range output. - :return: The first and last IP addresses of the input network, and the count. - """ - - # Extract the components of the string: - ip_components = ip_string.split("/") - ip_addr = ipv4_to_int(ip_components[0]) - ip_bits = int(ip_components[1]) - - # Convert the mask number to binary representation: - ip_mask = (1 << ip_bits) - 1 - ip_mask = ip_mask << (32 - ip_bits) - inv_ip_mask = (~ip_mask) & 0xFFFF - - # Figure out the start and end IP addresses: - start_ip = ip_addr & ip_mask - end_ip = ip_addr | inv_ip_mask - count = end_ip - start_ip + 1 - - # If the IPs are needed as strings, we perform the conversion: - if as_string: - start_ip = int_to_ipv4(start_ip) - end_ip = int_to_ipv4(end_ip) - - # Done here: - return start_ip, end_ip, count - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - print(ipv4_to_int("255.255.255.255")) - print(ipv4_to_int("x.x.x.x")) diff --git a/utils_v2/network/ping.py b/utils_v2/network/ping.py deleted file mode 100644 index 5ea23b2..0000000 --- a/utils_v2/network/ping.py +++ /dev/null @@ -1,201 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Friday, 28th Jun, 2024 - - OBJECTIVE: - - To provide a way to ping a server and get the traceroute dump. - - REFERENCES: - - 1) https://www.geeksforgeeks.org/traceroute-implementation-on-python/ - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# Utils: -from utils_v2.string import json -from utils_v2.string import regex -from utils_v2.date_time import date_time - -# For networking: -import socket -from scapy.all import * - -# For running the script from the terminal: -import argparse - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def get_name_and_addr(destination): - - # If the user provided the IP address: - if ( - regex.match(destination, regex.REGEX_IPV4) or - regex.match(destination, regex.REGEX_IPV6) - ): - try: destination_name = socket.gethostbyaddr(destination)[0] - except Exception as exception: destination_name = "*" - destination_ip = destination - - # If the provided destination was the domain name: - else: - destination_name = destination - try: destination_ip = socket.gethostbyname(destination) - except Exception as exception: destination_ip = "*" - - # Done here: - return destination_name, destination_ip - - -# --------------------------------------------------------------------------------------------------------------------- - - -def tracert( - destination, - max_hops = 30, - timeout = 2.0, - port = 33434 -): - - # Initialize the variables: - destination_name, destination_ip = get_name_and_addr(destination) - full_trace = [] - ttl = 1 - - # Keep noting hops till the limit is reached: - while ttl <= max_hops: - - # Create a JSON for this stage: - this_hop = { - "destAddr": destination_ip, - "destName": destination_name, - "hopNo": ttl - 1, - "isDest": False, - "hopAddr": None, - "hopName": None, - "ts": None - } - - # Create the IP and UDP headers and combine them: - ip_packet = IP(dst = destination, ttl = ttl) - udp_packet = UDP(dport = port) - trace_packet = ip_packet / udp_packet - - # Send the packet and receive a reply and note down the timestamp: - reply = sr1(trace_packet, timeout = timeout, verbose = 0) - this_hop["ts"] = date_time.get_current_utc_date_time(as_string = True) - - # No response: - if reply is None: this_hop["hopAddr"] = this_hop["hopName"] = "*" - - # If some response was received, we note the values and break out if this was the destination hop: - else: - this_hop["hopName"], this_hop["hopAddr"] = get_name_and_addr(f"{reply.src}") - if reply.type == 3: - this_hop["isDest"] = True - full_trace.append(this_hop) - break - - # Carry on to the next hop: - full_trace.append(this_hop) - ttl += 1 - - # Done here: - return full_trace - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - parser = argparse.ArgumentParser(description = "Traceroute Implementation in Python!") - - parser.add_argument( - "dest", - help = "Destination (Name or IP address)." - ) - parser.add_argument( - "-m", - "--max-hops", - type = int, - default = 30, - help = - "Maximum number of hops (default: 30)." - ) - parser.add_argument( - "-t", - "--timeout", - type = float, - default = 2.0, - help = "Timeout for each packet in seconds (default: 2.0)." - ) - parser.add_argument( - "-p", - "--port", - type = int, - default = 33434, - help = "The port to probe at the destination (default: 33434)." - ) - - args = parser.parse_args() - - trace = tracert( - destination = args.dest, - max_hops = args.max_hops, - timeout = args.timeout, - port = args.port - ) - print("TRACE:", json.to_string(trace)) diff --git a/utils_v2/nse/__init__.py b/utils_v2/nse/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/nse/base.py b/utils_v2/nse/base.py deleted file mode 100644 index 057dfae..0000000 --- a/utils_v2/nse/base.py +++ /dev/null @@ -1,281 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 28th Nov., 2024 - - OBJECTIVE: - - To provide a base class for common behaviour of NSE's APIs. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.date_time import date_time -from utils_v2.nse.models.data.api_call import NSEApiResponse - -# To make API calls: -import httpx - -# To work with date and time: -import datetime - -# For working with datatypes: -from typing import Literal, List - -# For debugging: -from icecream import IceCreamDebugger -import inspect - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class AsyncNSEBase: - - def __init__( - self, - base_url: str, - data_url: str, - http_client: httpx.AsyncClient, - cookies_refresh_interval: int | float = 300, - debug = True, - debug_prefix = "NSE | ", - debug_only_errors = True - ): - - """ - To be used as a base class for all sorts of NSE scraping. - :param base_url: The base URL (that you open in your browser) for your targeted module. - :param data_url: The internal URL (that NSE's script calls by itself) for your targeted module. - :param http_client: An HTTP client to use to make API calls. - :param cookies_refresh_interval: The no. of seconds after which the cookies should get refreshed. - :param debug: Whether, or not, you want to show debugging messages. - :param debug_prefix: The prefix string to use to recognize the module that is printing the debugging text. - :param debug_only_errors: Whether you want to show all debugging messages, or just error messages. - """ - - # Prepare the debugging utility: - self._debug_prefix = debug_prefix - self._printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self._printer.disable() - self._debug_only_errors = debug_only_errors - - # Accept the input configuration: - self._base_url = base_url - self._data_url = data_url - self._http_client = http_client - - # Make some provisions for later: - self._cookies = None - self._cookies_refresh_interval = cookies_refresh_interval - self._last_cookies_refresh = datetime.datetime.fromtimestamp(0, tz = date_time.TIMEZONE_UTC) - - def enable_debug(self): - self._printer.enable() - - def disable_debug(self): - self._printer.disable() - - def debug_only_errors(self): - self._debug_only_errors = True - - def debug_everything(self): - self._debug_only_errors = False - - # ┏┓ ┓ • ┳┳┓ ┓ • - # ┃ ┏┓┏┓┃┏┓┏┓┏ ┃┃┃┏┓┃┏┓┏┓┏┓ - # ┗┛┗┛┗┛┛┗┗┗ ┛ ┛ ┗┗┻┛┗┗┛┗┗┫ - # ┛ - - @property - def seconds_since_cookies_refreshed(self): - return (date_time.get_current_utc_date_time() - self._last_cookies_refresh).total_seconds() - - async def refresh_cookies(self) -> bool: - - """ - To get cookies for the given base URL. NSE has some sort of strict cookies and origin policy that is beyond my - current understanding. But I have noticed that if you furnish the right base URL and then use that, NSE will - respond just fine. - USAGE: Call this right after you initialize your class and then call it every so often after that. - :return: The cookies in the 'data' field of the - """ - - # Start by assuming failure: - success = False - - # Make the API call: - api_response = await self.get( - url = self._base_url, - headers = { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "en-US,en;q=0.9", - "Connection": "keep-alive", - "Upgrade-Insecure-Requests": "1", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" - }, - refresh_cookies = False - ) - - # If the API call succeeds: - if api_response.httpCode in [200]: - self._last_cookies_refresh = date_time.get_current_utc_date_time(as_string = False) - self._cookies = api_response.response.cookies - - # If it failed, alert on the terminal: - else: self._printer("Cookies Refresh FAILED!") - - # Done here: - return success - - # ┏┓┏┓┳ ┏┓ ┓┓• - # ┣┫┃┃┃ ┃ ┏┓┃┃┓┏┓┏┓ - # ┛┗┣┛┻ ┗┛┗┻┗┗┗┛┗┗┫ - # ┛ - - async def get( - self, - url: str = None, - headers: dict = None, - params: dict = None, - cookies: httpx.Cookies | dict = None, - refresh_cookies: bool = True - ) -> NSEApiResponse: - - """ - To call an API using the GET method. - :param url: A custom URL to hit. If not specified, the data URL will be hit. - :param headers: Custom headers to use. If not specified, default values will be used. - :param params: The params to send in the query string itself. - :param cookies: Custom cookies to send, else the ones fetched from the base URL will be used. - :param refresh_cookies: Set this to False is you would like to block the auto refreshing of cookies. Remember - that the refreshing is controlled through the interval specified in the constructor. - :return: A structured response that includes the raw response, the exception (if any), and so on. - """ - - # Select and refresh the cookies as needed: - if cookies is None and refresh_cookies: - if self.seconds_since_cookies_refreshed > self._cookies_refresh_interval: await self.refresh_cookies() - use_cookies = self._cookies - else: use_cookies = cookies - - # Prepare the structure of the response: - api_response = NSEApiResponse( - action = inspect.stack()[1].function, - url = url or self._data_url, - method = "GET" - ) - - try: - - # Make the API call: - response = await self._http_client.get( - url = url or self._data_url, - headers = headers or { - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "en-US,en;q=0.9", - "Connection": "keep-alive", - "Host": "www.nseindia.com", - "Referer": self._base_url, - "Sec-Fetch-Dest": "empty", - "Sec-Fetch-Mode": "cors", - "Sec-Fetch-Site": "same-origin", - "Sec-GPC": "1", - "Upgrade-Insecure-Requests": "1", - "TE": "trailers", - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0" - }, - params = params, - cookies = use_cookies - ) - - # Note down the results: - api_response.response = response - api_response.httpCode = response.status_code - api_response.message = response.reason_phrase - - # If something goes wrong: - except Exception as exception: - api_response.exception = exception - api_response.message = str(exception) - self._printer(exception, api_response.url, api_response.method, headers, params) - - # Done here: - return api_response - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/nse/calendar/__init__.py b/utils_v2/nse/calendar/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/nse/calendar/corporate_events.py b/utils_v2/nse/calendar/corporate_events.py deleted file mode 100644 index 7801712..0000000 --- a/utils_v2/nse/calendar/corporate_events.py +++ /dev/null @@ -1,232 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 28th Nov., 2024 - - OBJECTIVE: - - To provide a way to retrieve dates of important events like financial-results, stock-splits, fund-raising, etc. - from NSE's portal. - - NOTE: This method involves web scraping. It is good for proof-of-concept development, but it is recommended that - more professional data-sources be used when the product starts becoming mature. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.string import json -from utils_v2.date_time import date_time - -# NSE-related utils: -from utils_v2.nse.base import AsyncNSEBase -from utils_v2.nse.models.data.api_call import NSEApiResponse - -# To make REST-ful API calls: -import httpx - -# To work with date and time: -import datetime - -# To work with datatypes: -from typing import Any, List - -# For asynchronous activities: -import asyncio - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class NSECorporateEventCalendar(AsyncNSEBase): - - def __init__( - self, - http_client: httpx.AsyncClient, - debug = True, - debug_prefix = "NSE (CECal) | ", - debug_only_errors = True - ): - - # Pass on the initialization to the parent: - super().__init__( - base_url = r"https://www.nseindia.com/companies-listing/corporate-filings-event-calendar", - data_url = r"https://www.nseindia.com/api/event-calendar", - http_client = http_client, - debug = debug, - debug_prefix = debug_prefix, - debug_only_errors = debug_only_errors - ) - - async def get_data( - self, - return_raw: bool = False, - ) -> NSEApiResponse: - - """ - To get the data of the corporate event calendar. - :param return_raw: Whether you want the raw JSON from NSE or you want it formatted. - :return: The raw or formatted event calendar data in the 'data' field of the response model. - """ - - # Make the API call: - api_response = await self.get() - - # If the API call was successful: - if api_response.httpCode in [200]: - api_response.success = True - if return_raw: api_response.data = await api_response.get_json() - else: - try: api_response.data = self.format_data( - raw_json = await api_response.get_json(), - timestamp = date_time.get_current_utc_date_time(as_string = True), - raise_exception = True - ) - except Exception as exception: - api_response.exception = exception - api_response.success = False - - # Done here: - return api_response - - @staticmethod - def format_data( - raw_json: List[dict], - timestamp: datetime.datetime = None, - raise_exception: bool = False - ) -> List[dict] | None: - - """ - We format the data here to be able to retrieve it properly later. - :param raw_json: The raw data as scraped from NSE. - :param timestamp: The timestamp at which the data was scraped. This shall be useful for data retrieval from the - database, later. - :param raise_exception: If set to True, any exception will be propagated. If set to False, any exception will be - suppressed internally. - :return: The formatted data if successful, else None. - """ - - # Can't do anything if the chain itself is null: - if raw_json is None: return raw_json - - # Start by assuming failure: - formatted_data = None - - # Ensure that we've got a proper timestamp: - if timestamp is None: timestamp = date_time.get_current_utc_date_time(as_string=False) - - try: - - # Format the data: - formatted_data = [ - { - "ts": timestamp, - "symbol": event["symbol"], - "company": event["company"], - "eventDate": date_time.to_timezone( - date_time.parse_date_time( - event["date"], - timezone = date_time.TIMEZONE_IST - ), - timezone = date_time.TIMEZONE_UTC - ), - "eventType": event["purpose"], - "brief": event["bm_desc"] - } for event in raw_json - ] - - # If something goes wrong: - except Exception as exception: - formatted_data = None - if raise_exception: raise - - # Done here: - return formatted_data - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - async def main(): - - # Create an HTTP client: - test_client = httpx.AsyncClient( - limits = httpx.Limits( - max_connections = 100, # ............ Maximum number of connections allowed in the pool. - max_keepalive_connections = 50, # ... Maximum number of connections that can be kept alive. - ), - timeout = httpx.Timeout( - connect = 2.5, # ... Shorter connection timeout. - read = 2.5, # ...... Like what EasyEcom gives. - write = 10.0, # .... Time to wait for sending data. - pool = 120.0 # ..... Time to wait for a free connection from the pool. - ) - ) - - # Create an instance of the scraper, and refresh its cookies: - my_nse = NSECorporateEventCalendar(http_client = test_client) - - # Get and show the data: - api_response = await my_nse.get_data(return_raw = False) - print("SUMMARY:", api_response.to_markdown(), "\n---\n\n") - if api_response.success: print("CORPORATE EVENT CALENDAR:", json.to_string(api_response.data, default = str)) - - asyncio.run(main()) diff --git a/utils_v2/nse/calendar/examples/20241128_formatted_nse_corporate_event_calendar.json b/utils_v2/nse/calendar/examples/20241128_formatted_nse_corporate_event_calendar.json deleted file mode 100644 index 55df7c6..0000000 --- a/utils_v2/nse/calendar/examples/20241128_formatted_nse_corporate_event_calendar.json +++ /dev/null @@ -1,178 +0,0 @@ -[ - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "AAREYDRUGS", - "company": "Aarey Drugs & Pharmaceuticals Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Fund Raising/Other business matters", - "brief": "To consider Fund Raising and other business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "ASTERDM", - "company": "Aster DM Healthcare Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider other business matters pertaining to Preferential Issue." - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "EROSMEDIA", - "company": "Eros International Media Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Financial Results/Other business matters", - "brief": "To consider and approve the financial results for the quarter and year ended March 31, 2024 and other business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "MUFIN", - "company": "Mufin Green Finance Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Fund Raising", - "brief": "To consider Fund Raising by Issue of Secured Unlisted Non Convertible Debenture." - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "ONMOBILE", - "company": "OnMobile Global Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Fund Raising", - "brief": "To consider Fund Raising" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "PRIVISCL", - "company": "Privi Speciality Chemicals Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider and Approve \"Privi Employee Stock Option Scheme - 2024\"" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "SOUTHBANK", - "company": "The South Indian Bank Limited", - "eventDate": "2024-11-28 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider, decide on exercise of call option of Bank s Non-convertible, fully paid-up, unsecured, perpetual, Basel III Compliant, Tier I Bonds, listed in BSE" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "BCG", - "company": "Brightcom Group Limited", - "eventDate": "2024-11-29 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider other business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "BCG", - "company": "Brightcom Group Limited", - "eventDate": "2024-11-29 18:07:00+00:00", - "eventType": "Financial Results", - "brief": "To consider and approve the financial results for the period ended Jun 30, 2024" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "SIKKO", - "company": "Sikko Industries Limited", - "eventDate": "2024-11-29 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider discuss and decide terms and conditions such as determination of the rights issue price, rights entitlement ratio, record date and other matters incidental orconnected therewith." - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "AGIIL", - "company": "Agi Infra Limited", - "eventDate": "2024-12-01 18:07:00+00:00", - "eventType": "Stock Split", - "brief": "To consider stock split of equity shares of the Company" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "MANAKCOAT", - "company": "Manaksia Coated Metals & Industries Limited", - "eventDate": "2024-12-01 18:07:00+00:00", - "eventType": "Fund Raising", - "brief": "To consider Fund Raising" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "NTL", - "company": "Neueon Towers Limited", - "eventDate": "2024-12-01 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider the enclosed business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "PAR", - "company": "Par Drugs and Chemicals Limited", - "eventDate": "2024-12-01 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider other business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "FIBERWEB", - "company": "Fiberweb (India) Limited", - "eventDate": "2024-12-02 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider and discuss about the expansion plans" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "IITL", - "company": "Industrial Investment Trust Limited", - "eventDate": "2024-12-02 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider other business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "SWIGGY", - "company": "Swiggy Limited", - "eventDate": "2024-12-02 18:07:00+00:00", - "eventType": "Financial Results", - "brief": "To consider and approve the financial results for the quarter and half year ended September 30, 2024" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "GBGLOBAL", - "company": "GB Global Limited", - "eventDate": "2024-12-03 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider other business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "MOTOGENFIN", - "company": "The Motor & General Finance Limited", - "eventDate": "2024-12-03 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "Intimation Regarding Independent Directors Meeting will be held on 04.12.2024." - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "DIL", - "company": "Debock Industries Limited", - "eventDate": "2024-12-04 18:07:00+00:00", - "eventType": "Financial Results", - "brief": "DIL : 05-Dec-2024 : The Company has informed the Exchange that a Board meeting to be held on November 27, 2024 has been re-scheduled. Further, the Company has informed the Exchange that the meeting of the Board of Directors of the Company will be held on December 05, 2024, To consider and approve the financial results for the period ended September 30, 2024" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "NTL", - "company": "Neueon Towers Limited", - "eventDate": "2024-12-08 18:07:00+00:00", - "eventType": "Other business matters", - "brief": "To consider enclosed business matters" - }, - { - "ts": "2024-11-28 15:11:22.793824+05:30", - "symbol": "EXIDEIND", - "company": "Exide Industries Limited", - "eventDate": "2025-01-27 18:07:00+00:00", - "eventType": "Financial Results", - "brief": "To consider and approve the financial results for the period ended December 31, 2024" - } -] \ No newline at end of file diff --git a/utils_v2/nse/calendar/examples/20241128_raw_nse_corporate_event_calendar.json b/utils_v2/nse/calendar/examples/20241128_raw_nse_corporate_event_calendar.json deleted file mode 100644 index 8a35cc6..0000000 --- a/utils_v2/nse/calendar/examples/20241128_raw_nse_corporate_event_calendar.json +++ /dev/null @@ -1,156 +0,0 @@ -[ - { - "symbol": "AAREYDRUGS", - "company": "Aarey Drugs & Pharmaceuticals Limited", - "purpose": "Fund Raising/Other business matters", - "bm_desc": "To consider Fund Raising and other business matters", - "date": "29-Nov-2024" - }, - { - "symbol": "ASTERDM", - "company": "Aster DM Healthcare Limited", - "purpose": "Other business matters", - "bm_desc": "To consider other business matters pertaining to Preferential Issue.", - "date": "29-Nov-2024" - }, - { - "symbol": "EROSMEDIA", - "company": "Eros International Media Limited", - "purpose": "Financial Results/Other business matters", - "bm_desc": "To consider and approve the financial results for the quarter and year ended March 31, 2024 and other business matters", - "date": "29-Nov-2024" - }, - { - "symbol": "MUFIN", - "company": "Mufin Green Finance Limited", - "purpose": "Fund Raising", - "bm_desc": "To consider Fund Raising by Issue of Secured Unlisted Non Convertible Debenture.", - "date": "29-Nov-2024" - }, - { - "symbol": "ONMOBILE", - "company": "OnMobile Global Limited", - "purpose": "Fund Raising", - "bm_desc": "To consider Fund Raising", - "date": "29-Nov-2024" - }, - { - "symbol": "PRIVISCL", - "company": "Privi Speciality Chemicals Limited", - "purpose": "Other business matters", - "bm_desc": "To consider and Approve \"Privi Employee Stock Option Scheme - 2024\"", - "date": "29-Nov-2024" - }, - { - "symbol": "SOUTHBANK", - "company": "The South Indian Bank Limited", - "purpose": "Other business matters", - "bm_desc": "To consider, decide on exercise of call option of Bank s Non-convertible, fully paid-up, unsecured, perpetual, Basel III Compliant, Tier I Bonds, listed in BSE", - "date": "29-Nov-2024" - }, - { - "symbol": "BCG", - "company": "Brightcom Group Limited", - "purpose": "Other business matters", - "bm_desc": "To consider other business matters", - "date": "30-Nov-2024" - }, - { - "symbol": "BCG", - "company": "Brightcom Group Limited", - "purpose": "Financial Results", - "bm_desc": "To consider and approve the financial results for the period ended Jun 30, 2024", - "date": "30-Nov-2024" - }, - { - "symbol": "SIKKO", - "company": "Sikko Industries Limited", - "purpose": "Other business matters", - "bm_desc": "To consider discuss and decide terms and conditions such as determination of the rights issue price, rights entitlement ratio, record date and other matters incidental orconnected therewith.", - "date": "30-Nov-2024" - }, - { - "symbol": "AGIIL", - "company": "Agi Infra Limited", - "purpose": "Stock Split", - "bm_desc": "To consider stock split of equity shares of the Company", - "date": "02-Dec-2024" - }, - { - "symbol": "MANAKCOAT", - "company": "Manaksia Coated Metals & Industries Limited", - "purpose": "Fund Raising", - "bm_desc": "To consider Fund Raising", - "date": "02-Dec-2024" - }, - { - "symbol": "NTL", - "company": "Neueon Towers Limited", - "purpose": "Other business matters", - "bm_desc": "To consider the enclosed business matters", - "date": "02-Dec-2024" - }, - { - "symbol": "PAR", - "company": "Par Drugs and Chemicals Limited", - "purpose": "Other business matters", - "bm_desc": "To consider other business matters", - "date": "02-Dec-2024" - }, - { - "symbol": "FIBERWEB", - "company": "Fiberweb (India) Limited", - "purpose": "Other business matters", - "bm_desc": "To consider and discuss about the expansion plans", - "date": "03-Dec-2024" - }, - { - "symbol": "IITL", - "company": "Industrial Investment Trust Limited", - "purpose": "Other business matters", - "bm_desc": "To consider other business matters", - "date": "03-Dec-2024" - }, - { - "symbol": "SWIGGY", - "company": "Swiggy Limited", - "purpose": "Financial Results", - "bm_desc": "To consider and approve the financial results for the quarter and half year ended September 30, 2024", - "date": "03-Dec-2024" - }, - { - "symbol": "GBGLOBAL", - "company": "GB Global Limited", - "purpose": "Other business matters", - "bm_desc": "To consider other business matters", - "date": "04-Dec-2024" - }, - { - "symbol": "MOTOGENFIN", - "company": "The Motor & General Finance Limited", - "purpose": "Other business matters", - "bm_desc": "Intimation Regarding Independent Directors Meeting will be held on 04.12.2024.", - "date": "04-Dec-2024" - }, - { - "symbol": "DIL", - "company": "Debock Industries Limited", - "purpose": "Financial Results", - "bm_desc": "DIL : 05-Dec-2024 : The Company has informed the Exchange that a Board meeting to be held on November 27, 2024 has been re-scheduled. Further, the Company has informed the Exchange that the meeting of the Board of Directors of the Company will be held on December 05, 2024, To consider and approve the financial results for the period ended September 30, 2024", - "date": "05-Dec-2024" - }, - { - "symbol": "NTL", - "company": "Neueon Towers Limited", - "purpose": "Other business matters", - "bm_desc": "To consider enclosed business matters", - "date": "09-Dec-2024" - }, - { - "symbol": "EXIDEIND", - "company": "Exide Industries Limited", - "purpose": "Financial Results", - "bm_desc": "To consider and approve the financial results for the period ended December 31, 2024", - "date": "28-Jan-2025" - } -] \ No newline at end of file diff --git a/utils_v2/nse/indices/__init__.py b/utils_v2/nse/indices/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/nse/indices/examples/20241128_formatted_nse_index_master.json b/utils_v2/nse/indices/examples/20241128_formatted_nse_index_master.json deleted file mode 100644 index 174d8d9..0000000 --- a/utils_v2/nse/indices/examples/20241128_formatted_nse_index_master.json +++ /dev/null @@ -1,1693 +0,0 @@ -[ - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY 50", - "indexSymbol": "NIFTY 50", - "open": 24274.15, - "high": 24345.75, - "low": 23873.35, - "close": 23914.15, - "prevClose": 24274.9, - "pctChange": -1.49, - "yearHigh": 26277.35, - "yearLow": 20183.7, - "advances": "4", - "declines": "46", - "unchanged": "0", - "pctChange30d": -0.26, - "pctChange365d": 22.05 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY NEXT 50", - "indexSymbol": "NIFTY NEXT 50", - "open": 70442.9, - "high": 70872.4, - "low": 70050.75, - "close": 70254.25, - "prevClose": 70185.4, - "pctChange": 0.1, - "yearHigh": 77918, - "yearLow": 48197.45, - "advances": "25", - "declines": "25", - "unchanged": "0", - "pctChange30d": 0.22, - "pctChange365d": 48.82 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY 100", - "indexSymbol": "NIFTY 100", - "open": 25135.9, - "high": 25230.1, - "low": 24791.6, - "close": 24836.25, - "prevClose": 25115.15, - "pctChange": -1.11, - "yearHigh": 27335.65, - "yearLow": 20263.1, - "advances": "29", - "declines": "71", - "unchanged": "0", - "pctChange30d": -0.24, - "pctChange365d": 25.96 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY 200", - "indexSymbol": "NIFTY 200", - "open": 13664.95, - "high": 13720.8, - "low": 13499.3, - "close": 13524.75, - "prevClose": 13649.85, - "pctChange": -0.92, - "yearHigh": 14833.75, - "yearLow": 10924, - "advances": "87", - "declines": "112", - "unchanged": "1", - "pctChange30d": -0.04, - "pctChange365d": 27.06 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY 500", - "indexSymbol": "NIFTY 500", - "open": 22722.3, - "high": 22821.75, - "low": 22472.25, - "close": 22514.35, - "prevClose": 22691.7, - "pctChange": -0.78, - "yearHigh": 24573.4, - "yearLow": 18053.15, - "advances": "226", - "declines": "269", - "unchanged": "5", - "pctChange30d": 0.18, - "pctChange365d": 27.9 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY MIDCAP 50", - "indexSymbol": "NIFTY MIDCAP 50", - "open": 15761.4, - "high": 15815.6, - "low": 15628.85, - "close": 15661.85, - "prevClose": 15730.4, - "pctChange": -0.44, - "yearHigh": 17066.75, - "yearLow": 12265.45, - "advances": "24", - "declines": "26", - "unchanged": "0", - "pctChange30d": 1.19, - "pctChange365d": 30.74 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY MIDCAP 100", - "indexSymbol": "NIFTY MIDCAP 100", - "open": 56414.1, - "high": 56768.95, - "low": 56169.65, - "close": 56300.75, - "prevClose": 56272.35, - "pctChange": 0.05, - "yearHigh": 60925.95, - "yearLow": 43118.25, - "advances": "58", - "declines": "41", - "unchanged": "1", - "pctChange30d": 0.96, - "pctChange365d": 33.1 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY SMALLCAP 100", - "indexSymbol": "NIFTY SMLCAP 100", - "open": 18579.35, - "high": 18712.35, - "low": 18468.1, - "close": 18511.55, - "prevClose": 18502.85, - "pctChange": 0.05, - "yearHigh": 19640.6, - "yearLow": 14085.35, - "advances": "48", - "declines": "52", - "unchanged": "0", - "pctChange30d": 2.44, - "pctChange365d": 33.41 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "INDIA VIX", - "indexSymbol": "INDIA VIX", - "open": 14.625, - "high": 15.5625, - "low": 14.27, - "close": 15.205, - "prevClose": 14.625, - "pctChange": 3.96, - "yearHigh": 31.71, - "yearLow": 9.47, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 2.34, - "pctChange365d": 20.12 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY MIDCAP 150", - "indexSymbol": "NIFTY MIDCAP 150", - "open": 20885.65, - "high": 21001.3, - "low": 20794.2, - "close": 20839.9, - "prevClose": 20838.2, - "pctChange": 0.01, - "yearHigh": 22515.4, - "yearLow": 16034.75, - "advances": "79", - "declines": "70", - "unchanged": "1", - "pctChange30d": 0.69, - "pctChange365d": 32.44 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY SMALLCAP 50", - "indexSymbol": "NIFTY SMLCAP 50", - "open": 8948.85, - "high": 8996.75, - "low": 8881.8, - "close": 8900.15, - "prevClose": 8911.45, - "pctChange": -0.13, - "yearHigh": 9446.5, - "yearLow": 6515.65, - "advances": "20", - "declines": "30", - "unchanged": "0", - "pctChange30d": 2.14, - "pctChange365d": 38.81 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY SMALLCAP 250", - "indexSymbol": "NIFTY SMLCAP 250", - "open": 17612.1, - "high": 17737.8, - "low": 17532.35, - "close": 17577.85, - "prevClose": 17552.65, - "pctChange": 0.14, - "yearHigh": 18688.3, - "yearLow": 13176.2, - "advances": "118", - "declines": "128", - "unchanged": "4", - "pctChange30d": 2.34, - "pctChange365d": 34.88 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY MIDSMALLCAP 400", - "indexSymbol": "NIFTY MIDSML 400", - "open": 19766.8, - "high": 19885.35, - "low": 19683.2, - "close": 19725.25, - "prevClose": 19713.95, - "pctChange": 0.06, - "yearHigh": 21177.6, - "yearLow": 15054.75, - "advances": "197", - "declines": "198", - "unchanged": "5", - "pctChange30d": 1.28, - "pctChange365d": 33.32 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY500 MULTICAP 50:25:25", - "indexSymbol": "NIFTY500 MULTICAP", - "open": 15917.3, - "high": 15996.65, - "low": 15775.65, - "close": 15805.8, - "prevClose": 15888.25, - "pctChange": -0.52, - "yearHigh": 17112.15, - "yearLow": 5531.55, - "advances": "226", - "declines": "269", - "unchanged": "5", - "pctChange30d": 0.63, - "pctChange365d": 29.87 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY LARGEMIDCAP 250", - "indexSymbol": "NIFTY LARGEMID250", - "open": 15817.8, - "high": 15889.75, - "low": 15675.65, - "close": 15706.75, - "prevClose": 15793.25, - "pctChange": -0.55, - "yearHigh": 17095.2, - "yearLow": 5635.2, - "advances": "108", - "declines": "141", - "unchanged": "1", - "pctChange30d": 0.23, - "pctChange365d": 29.24 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY MIDCAP SELECT", - "indexSymbol": "NIFTY MID SELECT", - "open": 12642, - "high": 12688.55, - "low": 12529.2, - "close": 12553.75, - "prevClose": 12619.25, - "pctChange": -0.52, - "yearHigh": 13407.55, - "yearLow": 5520.25, - "advances": "10", - "declines": "15", - "unchanged": "0", - "pctChange30d": 1.77, - "pctChange365d": 32.15 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY TOTAL MARKET", - "indexSymbol": "NIFTY TOTAL MKT", - "open": 12817.65, - "high": 12876.35, - "low": 12682.3, - "close": 12706.15, - "prevClose": 12799.2, - "pctChange": -0.73, - "yearHigh": 13842.6, - "yearLow": 6252.1, - "advances": "382", - "declines": "363", - "unchanged": "6", - "pctChange30d": 0.33, - "pctChange365d": 28.31 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "BROAD MARKET INDICES", - "indexName": "NIFTY MICROCAP 250", - "indexSymbol": "NIFTY MICROCAP250", - "open": 24836.4, - "high": 25079.9, - "low": 24745.65, - "close": 24906.3, - "prevClose": 24741.75, - "pctChange": 0.67, - "yearHigh": 26066.45, - "yearLow": 5802.95, - "advances": "156", - "declines": "94", - "unchanged": "1", - "pctChange30d": 4.1, - "pctChange365d": 40.06 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY BANK", - "indexSymbol": "NIFTY BANK", - "open": 52389.95, - "high": 52760.2, - "low": 51782.9, - "close": 51906.85, - "prevClose": 52301.8, - "pctChange": -0.76, - "yearHigh": 54467.35, - "yearLow": 44429, - "advances": "5", - "declines": "7", - "unchanged": "0", - "pctChange30d": 2.03, - "pctChange365d": 19.19 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY AUTO", - "indexSymbol": "NIFTY AUTO", - "open": 23509.25, - "high": 23549.7, - "low": 23091.8, - "close": 23134.7, - "prevClose": 23517.35, - "pctChange": -1.63, - "yearHigh": 27696.1, - "yearLow": 17294.35, - "advances": "2", - "declines": "13", - "unchanged": "0", - "pctChange30d": -1.87, - "pctChange365d": 36.71 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY FINANCIAL SERVICES", - "indexSymbol": "NIFTY FIN SERVICE", - "open": 24211.9, - "high": 24378.05, - "low": 23854.7, - "close": 23919.6, - "prevClose": 24171.55, - "pctChange": -1.04, - "yearHigh": 25201.95, - "yearLow": 19822.05, - "advances": "9", - "declines": "11", - "unchanged": "0", - "pctChange30d": 1.3, - "pctChange365d": 22.68 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY FINANCIAL SERVICES 25/50", - "indexSymbol": "NIFTY FINSRV25 50", - "open": 25999.75, - "high": 26163.05, - "low": 25596.7, - "close": 25691.45, - "prevClose": 25958.1, - "pctChange": -1.03, - "yearHigh": 0, - "yearLow": 0, - "advances": "9", - "declines": "11", - "unchanged": "0", - "pctChange30d": -0.01, - "pctChange365d": 24.54 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY FMCG", - "indexSymbol": "NIFTY FMCG", - "open": 58068.5, - "high": 58788.85, - "low": 57444.8, - "close": 57706.05, - "prevClose": 58028.6, - "pctChange": -0.56, - "yearHigh": 66438.7, - "yearLow": 52398.75, - "advances": "3", - "declines": "12", - "unchanged": "0", - "pctChange30d": -2.07, - "pctChange365d": 10.55 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY IT", - "indexSymbol": "NIFTY IT", - "open": 43948, - "high": 44013.1, - "low": 42864.8, - "close": 42968.75, - "prevClose": 44018.7, - "pctChange": -2.39, - "yearHigh": 44330.6, - "yearLow": 31320.15, - "advances": "0", - "declines": "10", - "unchanged": "0", - "pctChange30d": 4.3, - "pctChange365d": 37.05 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY MEDIA", - "indexSymbol": "NIFTY MEDIA", - "open": 1966.35, - "high": 1993.1, - "low": 1958.3, - "close": 1968.35, - "prevClose": 1962.1, - "pctChange": 0.32, - "yearHigh": 2508.6, - "yearLow": 1717.4, - "advances": "5", - "declines": "5", - "unchanged": "0", - "pctChange30d": 1.58, - "pctChange365d": -14.28 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY METAL", - "indexSymbol": "NIFTY METAL", - "open": 9020.45, - "high": 9074.85, - "low": 8947, - "close": 8964.85, - "prevClose": 8987.35, - "pctChange": -0.25, - "yearHigh": 10322.05, - "yearLow": 7025.4, - "advances": "8", - "declines": "7", - "unchanged": "0", - "pctChange30d": -3.14, - "pctChange365d": 28.36 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY PHARMA", - "indexSymbol": "NIFTY PHARMA", - "open": 21855.8, - "high": 21884.5, - "low": 21649.5, - "close": 21728.6, - "prevClose": 21828.6, - "pctChange": -0.46, - "yearHigh": 23907.9, - "yearLow": 15868.15, - "advances": "8", - "declines": "12", - "unchanged": "0", - "pctChange30d": -4.5, - "pctChange365d": 37.28 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY PSU BANK", - "indexSymbol": "NIFTY PSU BANK", - "open": 6804.55, - "high": 6883.85, - "low": 6771.95, - "close": 6846.85, - "prevClose": 6783.95, - "pctChange": 0.93, - "yearHigh": 8053.3, - "yearLow": 5066.55, - "advances": "11", - "declines": "1", - "unchanged": "0", - "pctChange30d": 4.03, - "pctChange365d": 34.49 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY PRIVATE BANK", - "indexSymbol": "NIFTY PVT BANK", - "open": 25541.95, - "high": 25689.1, - "low": 25189.55, - "close": 25234.85, - "prevClose": 25517.95, - "pctChange": -1.11, - "yearHigh": 27280.6, - "yearLow": 22390.1, - "advances": "4", - "declines": "6", - "unchanged": "0", - "pctChange30d": 1.12, - "pctChange365d": 11.72 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY REALTY", - "indexSymbol": "NIFTY REALTY", - "open": 1028.4, - "high": 1041.2, - "low": 1022.1, - "close": 1025.35, - "prevClose": 1024.9, - "pctChange": 0.04, - "yearHigh": 1157.35, - "yearLow": 717.3, - "advances": "4", - "declines": "6", - "unchanged": "0", - "pctChange30d": 3.76, - "pctChange365d": 44.97 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY HEALTHCARE INDEX", - "indexSymbol": "NIFTY HEALTHCARE", - "open": 13974.9, - "high": 13991.65, - "low": 13809.55, - "close": 13844.65, - "prevClose": 13950.85, - "pctChange": -0.76, - "yearHigh": 15049.4, - "yearLow": 6482.8, - "advances": "7", - "declines": "13", - "unchanged": "0", - "pctChange30d": -3.76, - "pctChange365d": 39 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY CONSUMER DURABLES", - "indexSymbol": "NIFTY CONSR DURBL", - "open": 40298.1, - "high": 40457.1, - "low": 39683.6, - "close": 39785.9, - "prevClose": 40243.9, - "pctChange": -1.14, - "yearHigh": 44426.55, - "yearLow": 14089.55, - "advances": "6", - "declines": "9", - "unchanged": "0", - "pctChange30d": 1.19, - "pctChange365d": 38.51 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY OIL & GAS", - "indexSymbol": "NIFTY OIL AND GAS", - "open": 10998.2, - "high": 11144.9, - "low": 10935, - "close": 10966.95, - "prevClose": 10984.85, - "pctChange": -0.16, - "yearHigh": 13607.2, - "yearLow": 4632.7, - "advances": "9", - "declines": "5", - "unchanged": "1", - "pctChange30d": -3.4, - "pctChange365d": 31.6 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "SECTORAL INDICES", - "indexName": "NIFTY MIDSMALL HEALTHCARE", - "indexSymbol": "NIFTY MIDSML HLTH", - "open": 41674.4, - "high": 41702.5, - "low": 41277.35, - "close": 41316.4, - "prevClose": 41553.55, - "pctChange": -0.57, - "yearHigh": 43902.7, - "yearLow": 20019.15, - "advances": "11", - "declines": "19", - "unchanged": "0", - "pctChange30d": -0.78, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY DIVIDEND OPPORTUNITIES 50", - "indexSymbol": "NIFTY DIV OPPS 50", - "open": 6518.15, - "high": 6542, - "low": 6429.45, - "close": 6449.1, - "prevClose": 6516.5, - "pctChange": -1.03, - "yearHigh": 7012.65, - "yearLow": 4926.9, - "advances": "22", - "declines": "27", - "unchanged": "1", - "pctChange30d": 0.63, - "pctChange365d": 34.87 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY GROWTH SECTORS 15", - "indexSymbol": "NIFTY GROWSECT 15", - "open": 11993, - "high": 12025.05, - "low": 11758.7, - "close": 11789.25, - "prevClose": 12013.9, - "pctChange": -1.87, - "yearHigh": 13065.05, - "yearLow": 10168.35, - "advances": "1", - "declines": "14", - "unchanged": "0", - "pctChange30d": 0.34, - "pctChange365d": 19.6 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY100 QUALITY 30", - "indexSymbol": "NIFTY100 QUALTY30", - "open": 5782.75, - "high": 5790.4, - "low": 5684.15, - "close": 5696.6, - "prevClose": 5774.95, - "pctChange": -1.36, - "yearHigh": 0, - "yearLow": 0, - "advances": "0", - "declines": "30", - "unchanged": "0", - "pctChange30d": -0.35, - "pctChange365d": 25.33 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 VALUE 20", - "indexSymbol": "NIFTY50 VALUE 20", - "open": 13843.55, - "high": 13875.65, - "low": 13599.3, - "close": 13633.35, - "prevClose": 13854.1, - "pctChange": -1.59, - "yearHigh": 14731.65, - "yearLow": 10765.3, - "advances": "1", - "declines": "19", - "unchanged": "0", - "pctChange30d": 0.46, - "pctChange365d": 30.43 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 TR 2X LEVERAGE", - "indexSymbol": "NIFTY50 TR 2X LEV", - "open": 20018.05, - "high": 20136.1, - "low": 19358.6, - "close": 19424.2, - "prevClose": 20023.05, - "pctChange": -2.99, - "yearHigh": 23715.35, - "yearLow": 14723.6, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": -0.95, - "pctChange365d": 40.01 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 PR 2X LEVERAGE", - "indexSymbol": "NIFTY50 PR 2X LEV", - "open": 13713.05, - "high": 13793.9, - "low": 13261.3, - "close": 13306.2, - "prevClose": 13716.45, - "pctChange": -2.99, - "yearHigh": 16297.55, - "yearLow": 10326.2, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": -1.22, - "pctChange365d": 36.76 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 TR 1X INVERSE", - "indexSymbol": "NIFTY50 TR 1X INV", - "open": 170.05, - "high": 172.85, - "low": 169.55, - "close": 172.6, - "prevClose": 170, - "pctChange": 1.53, - "yearHigh": 197.5, - "yearLow": 156.1, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.47, - "pctChange365d": -15.17 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 PR 1X INVERSE", - "indexSymbol": "NIFTY50 PR 1X INV", - "open": 205.25, - "high": 208.65, - "low": 204.65, - "close": 208.3, - "prevClose": 205.2, - "pctChange": 1.51, - "yearHigh": 235.6, - "yearLow": 188.15, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.61, - "pctChange365d": -14.16 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 DIVIDEND POINTS", - "indexSymbol": "NIFTY50 DIV POINT", - "open": 233.03, - "high": 233.03, - "low": 233.03, - "close": 233.03, - "prevClose": 233.03, - "pctChange": 0, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 16.89, - "pctChange365d": 28.09 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY ALPHA 50", - "indexSymbol": "NIFTY ALPHA 50", - "open": 55911.8, - "high": 56618.75, - "low": 55768.8, - "close": 56086.8, - "prevClose": 55640.2, - "pctChange": 0.8, - "yearHigh": 0, - "yearLow": 0, - "advances": "29", - "declines": "20", - "unchanged": "1", - "pctChange30d": 0.84, - "pctChange365d": 45.14 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY50 EQUAL WEIGHT", - "indexSymbol": "NIFTY50 EQL WGT", - "open": 30138, - "high": 30198.4, - "low": 29606.8, - "close": 29663.15, - "prevClose": 30113.7, - "pctChange": -1.5, - "yearHigh": 0, - "yearLow": 0, - "advances": "4", - "declines": "46", - "unchanged": "0", - "pctChange30d": -2.03, - "pctChange365d": 23.36 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY100 EQUAL WEIGHT", - "indexSymbol": "NIFTY100 EQL WGT", - "open": 32035.05, - "high": 32236.4, - "low": 31757.95, - "close": 31824.35, - "prevClose": 31943.3, - "pctChange": -0.37, - "yearHigh": 0, - "yearLow": 0, - "advances": "29", - "declines": "71", - "unchanged": "0", - "pctChange30d": -1.38, - "pctChange365d": 32.45 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY100 LOW VOLATILITY 30", - "indexSymbol": "NIFTY100 LOWVOL30", - "open": 19430.15, - "high": 19463.35, - "low": 19084, - "close": 19139.8, - "prevClose": 19415.35, - "pctChange": -1.42, - "yearHigh": 0, - "yearLow": 0, - "advances": "1", - "declines": "29", - "unchanged": "0", - "pctChange30d": -2.53, - "pctChange365d": 24.05 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY200 QUALITY 30", - "indexSymbol": "NIFTY200 QUALTY30", - "open": 21503.8, - "high": 21539, - "low": 21140.25, - "close": 21188.05, - "prevClose": 21478.7, - "pctChange": -1.35, - "yearHigh": 0, - "yearLow": 0, - "advances": "1", - "declines": "29", - "unchanged": "0", - "pctChange30d": -0.44, - "pctChange365d": 26.63 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY ALPHA LOW-VOLATILITY 30", - "indexSymbol": "NIFTY ALPHALOWVOL", - "open": 27770.5, - "high": 27840.3, - "low": 27404.2, - "close": 27473.75, - "prevClose": 27745.8, - "pctChange": -0.98, - "yearHigh": 0, - "yearLow": 0, - "advances": "3", - "declines": "27", - "unchanged": "0", - "pctChange30d": -2.84, - "pctChange365d": 31.82 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY200 MOMENTUM 30", - "indexSymbol": "NIFTY200MOMENTM30", - "open": 34261.9, - "high": 34466.95, - "low": 33853.5, - "close": 33940.45, - "prevClose": 34208.2, - "pctChange": -0.78, - "yearHigh": 0, - "yearLow": 0, - "advances": "11", - "declines": "19", - "unchanged": "0", - "pctChange30d": -0.89, - "pctChange365d": 39.17 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY MIDCAP150 QUALITY 50", - "indexSymbol": "NIFTY M150 QLTY50", - "open": 24407.95, - "high": 24462.7, - "low": 24244.4, - "close": 24296.75, - "prevClose": 24369.65, - "pctChange": -0.3, - "yearHigh": 0, - "yearLow": 0, - "advances": "16", - "declines": "34", - "unchanged": "0", - "pctChange30d": -0.48, - "pctChange365d": 26.87 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY200 ALPHA 30", - "indexSymbol": "NIFTY200 ALPHA 30", - "open": 26295.35, - "high": 26434.75, - "low": 26036.6, - "close": 26105.4, - "prevClose": 26248.15, - "pctChange": -0.54, - "yearHigh": 0, - "yearLow": 0, - "advances": "9", - "declines": "21", - "unchanged": "0", - "pctChange30d": -0.73, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY MIDCAP150 MOMENTUM 50", - "indexSymbol": "NIFTYM150MOMNTM50", - "open": 63653.9, - "high": 64182.25, - "low": 63417.5, - "close": 63698.05, - "prevClose": 63499.2, - "pctChange": 0.31, - "yearHigh": 0, - "yearLow": 0, - "advances": "28", - "declines": "21", - "unchanged": "1", - "pctChange30d": 2.08, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY500 MOMENTUM 50", - "indexSymbol": "NIFTY500MOMENTM50", - "open": 59134.5, - "high": 59808.9, - "low": 58878.55, - "close": 59029.25, - "prevClose": 58942.3, - "pctChange": 0.15, - "yearHigh": 0, - "yearLow": 0, - "advances": "31", - "declines": "18", - "unchanged": "1", - "pctChange30d": 0.72, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY MIDSMALLCAP400 MOMENTUM QUALITY 100", - "indexSymbol": "NIFTYMS400 MQ 100", - "open": 51622.4, - "high": 51941.15, - "low": 51396.25, - "close": 51538.05, - "prevClose": 51465.55, - "pctChange": 0.14, - "yearHigh": 0, - "yearLow": 0, - "advances": "47", - "declines": "52", - "unchanged": "1", - "pctChange30d": 1.66, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY SMALLCAP250 MOMENTUM QUALITY 100", - "indexSymbol": "NIFTYSML250MQ 100", - "open": 50740, - "high": 51176.7, - "low": 50509.05, - "close": 50668.3, - "prevClose": 50502.95, - "pctChange": 0.33, - "yearHigh": 0, - "yearLow": 0, - "advances": "48", - "declines": "51", - "unchanged": "1", - "pctChange30d": 2.26, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "STRATEGY INDICES", - "indexName": "NIFTY TOP 10 EQUAL WEIGHT", - "indexSymbol": "NIFTY TOP 10 EW", - "open": 9529.2, - "high": 9564.3, - "low": 9374.9, - "close": 9398.3, - "prevClose": 9539.85, - "pctChange": -1.48, - "yearHigh": 0, - "yearLow": 0, - "advances": "0", - "declines": "10", - "unchanged": "0", - "pctChange30d": 1.51, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY COMMODITIES", - "indexSymbol": "NIFTY COMMODITIES", - "open": 8474.75, - "high": 8529.35, - "low": 8387.5, - "close": 8406.85, - "prevClose": 8443.3, - "pctChange": -0.43, - "yearHigh": 9896.35, - "yearLow": 6890.65, - "advances": "10", - "declines": "20", - "unchanged": "0", - "pctChange30d": -4.46, - "pctChange365d": 24.25 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INDIA CONSUMPTION", - "indexSymbol": "NIFTY CONSUMPTION", - "open": 11475.7, - "high": 11528, - "low": 11327.85, - "close": 11349.6, - "prevClose": 11468.2, - "pctChange": -1.03, - "yearHigh": 13057.6, - "yearLow": 9005.15, - "advances": "5", - "declines": "25", - "unchanged": "0", - "pctChange30d": -1.09, - "pctChange365d": 29.73 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY CPSE", - "indexSymbol": "NIFTY CPSE", - "open": 6594.85, - "high": 6617.15, - "low": 6503.95, - "close": 6525.55, - "prevClose": 6578.35, - "pctChange": -0.8, - "yearHigh": 7661.9, - "yearLow": 4268.6, - "advances": "4", - "declines": "6", - "unchanged": "1", - "pctChange30d": 1.86, - "pctChange365d": 56.65 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY ENERGY", - "indexSymbol": "NIFTY ENERGY", - "open": 37338.2, - "high": 37628.25, - "low": 36903.5, - "close": 36979.2, - "prevClose": 37256, - "pctChange": -0.74, - "yearHigh": 45022.15, - "yearLow": 29421.45, - "advances": "2", - "declines": "8", - "unchanged": "0", - "pctChange30d": -4.77, - "pctChange365d": 27.36 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INFRASTRUCTURE", - "indexSymbol": "NIFTY INFRA", - "open": 8698.6, - "high": 8732.4, - "low": 8584.9, - "close": 8602.5, - "prevClose": 8700.8, - "pctChange": -1.13, - "yearHigh": 9704.2, - "yearLow": 6612.55, - "advances": "7", - "declines": "23", - "unchanged": "0", - "pctChange30d": -0.52, - "pctChange365d": 33.71 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY100 LIQUID 15", - "indexSymbol": "NIFTY100 LIQ 15", - "open": 6351.9, - "high": 6389.75, - "low": 6277.3, - "close": 6287.15, - "prevClose": 6353.6, - "pctChange": -1.05, - "yearHigh": 7205.25, - "yearLow": 5450.75, - "advances": "3", - "declines": "12", - "unchanged": "0", - "pctChange30d": -2.65, - "pctChange365d": 18.21 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY MIDCAP LIQUID 15", - "indexSymbol": "NIFTY MID LIQ 15", - "open": 14090.8, - "high": 14179.35, - "low": 13992.95, - "close": 14021.8, - "prevClose": 14085.1, - "pctChange": -0.45, - "yearHigh": 14643.5, - "yearLow": 10240.15, - "advances": "7", - "declines": "8", - "unchanged": "0", - "pctChange30d": 2.9, - "pctChange365d": 40.74 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY MNC", - "indexSymbol": "NIFTY MNC", - "open": 28928.8, - "high": 29001.85, - "low": 28587.95, - "close": 28650.65, - "prevClose": 28843.6, - "pctChange": -0.67, - "yearHigh": 32841.15, - "yearLow": 22726.1, - "advances": "6", - "declines": "24", - "unchanged": "0", - "pctChange30d": -1.36, - "pctChange365d": 28.54 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY PSE", - "indexSymbol": "NIFTY PSE", - "open": 10175.45, - "high": 10240.7, - "low": 10069.9, - "close": 10101.35, - "prevClose": 10153, - "pctChange": -0.51, - "yearHigh": 11814.6, - "yearLow": 6835.8, - "advances": "10", - "declines": "9", - "unchanged": "1", - "pctChange30d": 1.08, - "pctChange365d": 52.63 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY SERVICES SECTOR", - "indexSymbol": "NIFTY SERV SECTOR", - "open": 32237.25, - "high": 32351.45, - "low": 31684.65, - "close": 31752, - "prevClose": 32224.9, - "pctChange": -1.47, - "yearHigh": 33791.15, - "yearLow": 25641.85, - "advances": "6", - "declines": "24", - "unchanged": "0", - "pctChange30d": 0.95, - "pctChange365d": 27.77 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY100 ESG SECTOR LEADERS", - "indexSymbol": "NIFTY100ESGSECLDR", - "open": 4035.55, - "high": 4047.85, - "low": 3975, - "close": 3980.85, - "prevClose": 4033.95, - "pctChange": -1.32, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": -0.58, - "pctChange365d": 24.7 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INDIA DIGITAL", - "indexSymbol": "NIFTY IND DIGITAL", - "open": 9608, - "high": 9611.85, - "low": 9467.4, - "close": 9510.3, - "prevClose": 9608.8, - "pctChange": -1.03, - "yearHigh": 9794.65, - "yearLow": 4755.25, - "advances": "7", - "declines": "23", - "unchanged": "0", - "pctChange30d": 4.65, - "pctChange365d": 42.91 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY100 ESG", - "indexSymbol": "NIFTY100 ESG", - "open": 4811.65, - "high": 4825.55, - "low": 4740.4, - "close": 4749.95, - "prevClose": 4807.05, - "pctChange": -1.19, - "yearHigh": 0, - "yearLow": 0, - "advances": "27", - "declines": "66", - "unchanged": "0", - "pctChange30d": -0.74, - "pctChange365d": 25.63 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INDIA MANUFACTURING", - "indexSymbol": "NIFTY INDIA MFG", - "open": 14065.7, - "high": 14109.45, - "low": 13920.75, - "close": 13946.1, - "prevClose": 14043.55, - "pctChange": -0.69, - "yearHigh": 0, - "yearLow": 0, - "advances": "24", - "declines": "53", - "unchanged": "0", - "pctChange30d": -1.71, - "pctChange365d": 38.57 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INDIA CORPORATE GROUP INDEX - TATA GROUP 25% CAP", - "indexSymbol": "NIFTY TATA 25 CAP", - "open": 16714.6, - "high": 16763.7, - "low": 16466.9, - "close": 16495.5, - "prevClose": 16740.65, - "pctChange": -1.46, - "yearHigh": 18764.95, - "yearLow": 9887.45, - "advances": "1", - "declines": "9", - "unchanged": "0", - "pctChange30d": -0.98, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY500 MULTICAP INDIA MANUFACTURING 50:30:20", - "indexSymbol": "NIFTY MULTI MFG", - "open": 14802.9, - "high": 14841.55, - "low": 14638.4, - "close": 14663.55, - "prevClose": 14792.9, - "pctChange": -0.87, - "yearHigh": 16253.65, - "yearLow": 8394.35, - "advances": "25", - "declines": "50", - "unchanged": "0", - "pctChange30d": -0.83, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY500 MULTICAP INFRASTRUCTURE 50:30:20", - "indexSymbol": "NIFTY MULTI INFRA", - "open": 13742, - "high": 13815, - "low": 13626.7, - "close": 13652.7, - "prevClose": 13728.7, - "pctChange": -0.55, - "yearHigh": 15154.1, - "yearLow": 8010.1, - "advances": "33", - "declines": "42", - "unchanged": "0", - "pctChange30d": -0.09, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INDIA DEFENCE", - "indexSymbol": "NIFTY IND DEFENCE", - "open": 6642.1, - "high": 6744.8, - "low": 6623.6, - "close": 6702.1, - "prevClose": 6594.2, - "pctChange": 1.64, - "yearHigh": 8302.05, - "yearLow": 3374.95, - "advances": "12", - "declines": "4", - "unchanged": "0", - "pctChange30d": 8.31, - "pctChange365d": 83.26 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY INDIA TOURISM", - "indexSymbol": "NIFTY IND TOURISM", - "open": 8610.45, - "high": 8663.1, - "low": 8569.65, - "close": 8593.8, - "prevClose": 8593.6, - "pctChange": 0, - "yearHigh": 9211.9, - "yearLow": 6058.05, - "advances": "8", - "declines": "6", - "unchanged": "1", - "pctChange30d": 7.67, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "THEMATIC INDICES", - "indexName": "NIFTY CAPITAL MARKETS", - "indexSymbol": "NIFTY CAPITAL MKT", - "open": 3752.55, - "high": 3783.6, - "low": 3720.45, - "close": 3737.85, - "prevClose": 3729.75, - "pctChange": 0.22, - "yearHigh": 3875.55, - "yearLow": 2009.6, - "advances": "6", - "declines": "9", - "unchanged": "0", - "pctChange30d": 3.94, - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY 8-13 YR G-SEC", - "indexSymbol": "NIFTY GS 8 13YR", - "open": 2740.47, - "high": 2743.35, - "low": 2740.46, - "close": 2741.64, - "prevClose": 2739.95, - "pctChange": 0.06, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.62, - "pctChange365d": 9.99 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY 10 YR BENCHMARK G-SEC", - "indexSymbol": "NIFTY GS 10YR", - "open": 2422.44, - "high": 2424.98, - "low": 2422.44, - "close": 2423.54, - "prevClose": 2421.99, - "pctChange": 0.05, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.55, - "pctChange365d": 9.77 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY 10 YR BENCHMARK G-SEC (CLEAN PRICE)", - "indexSymbol": "NIFTY GS 10YR CLN", - "open": 886.66, - "high": 887.6, - "low": 886.66, - "close": 887.07, - "prevClose": 886.66, - "pctChange": 0.03, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0, - "pctChange365d": 2.49 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY 4-8 YR G-SEC INDEX", - "indexSymbol": "NIFTY GS 4 8YR", - "open": 2960.75, - "high": 2962.59, - "low": 2960.74, - "close": 2961.95, - "prevClose": 2960.19, - "pctChange": 0.05, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.55, - "pctChange365d": 9.19 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY 11-15 YR G-SEC INDEX", - "indexSymbol": "NIFTY GS 11 15YR", - "open": 3035.95, - "high": 3038.54, - "low": 3035.94, - "close": 3036.57, - "prevClose": 3035.37, - "pctChange": 0.03, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.48, - "pctChange365d": 11.42 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY 15 YR AND ABOVE G-SEC INDEX", - "indexSymbol": "NIFTY GS 15YRPLUS", - "open": 3354.36, - "high": 3355.83, - "low": 3350.82, - "close": 3350.86, - "prevClose": 3353.71, - "pctChange": -0.08, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.1, - "pctChange365d": 13.2 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY COMPOSITE G-SEC INDEX", - "indexSymbol": "NIFTY GS COMPSITE", - "open": 2836.29, - "high": 2838.89, - "low": 2836.27, - "close": 2837.15, - "prevClose": 2835.74, - "pctChange": 0.05, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": 0.53, - "pctChange365d": 10.38 - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY BHARAT BOND INDEX - APRIL 2025", - "indexSymbol": "BHARATBOND-APR25", - "open": 1281.22, - "high": 1281.25, - "low": 1281.18, - "close": 1281.18, - "prevClose": 1281, - "pctChange": 0.01, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": "-", - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY BHARAT BOND INDEX - APRIL 2030", - "indexSymbol": "BHARATBOND-APR30", - "open": 1441.47, - "high": 1441.47, - "low": 1441.02, - "close": 1441.02, - "prevClose": 1441.18, - "pctChange": -0.01, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": "-", - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY BHARAT BOND INDEX - APRIL 2031", - "indexSymbol": "BHARATBOND-APR31", - "open": 1313.77, - "high": 1313.78, - "low": 1313.77, - "close": 1313.77, - "prevClose": 1313.52, - "pctChange": 0.01, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": "-", - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY BHARAT BOND INDEX - APRIL 2032", - "indexSymbol": "BHARATBOND-APR32", - "open": 1199.34, - "high": 1199.34, - "low": 1199.34, - "close": 1199.34, - "prevClose": 1199.11, - "pctChange": 0.01, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": "-", - "pctChange365d": "-" - }, - { - "ts": "2024-11-28T12:02:45.511001+00:00", - "indexType": "FIXED INCOME INDICES", - "indexName": "NIFTY BHARAT BOND INDEX - APRIL 2033", - "indexSymbol": "BHARATBOND-APR33", - "open": 1168.6, - "high": 1168.6, - "low": 1168.59, - "close": 1168.59, - "prevClose": 1168.37, - "pctChange": 0.01, - "yearHigh": 0, - "yearLow": 0, - "advances": null, - "declines": null, - "unchanged": null, - "pctChange30d": "-", - "pctChange365d": "-" - } -] \ No newline at end of file diff --git a/utils_v2/nse/indices/examples/20241128_raw_nse_index_master.json b/utils_v2/nse/indices/examples/20241128_raw_nse_index_master.json deleted file mode 100644 index ada02a6..0000000 --- a/utils_v2/nse/indices/examples/20241128_raw_nse_index_master.json +++ /dev/null @@ -1,2785 +0,0 @@ -{ - "data": [ - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY 50", - "indexSymbol": "NIFTY 50", - "last": 23914.15, - "variation": -360.75, - "percentChange": -1.49, - "open": 24274.15, - "high": 24345.75, - "low": 23873.35, - "previousClose": 24274.9, - "yearHigh": 26277.35, - "yearLow": 20183.7, - "indicativeClose": 0, - "pe": "22.01", - "pb": "3.56", - "dy": "1.28", - "declines": "46", - "advances": "4", - "unchanged": "0", - "perChange365d": 22.05, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.26, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-50.svg", - "previousDay": 24194.5, - "oneWeekAgo": 23349.9, - "oneMonthAgo": 24339.15, - "oneYearAgo": 19889.7 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY NEXT 50", - "indexSymbol": "NIFTY NEXT 50", - "last": 70254.25, - "variation": 68.85, - "percentChange": 0.1, - "open": 70442.9, - "high": 70872.4, - "low": 70050.75, - "previousClose": 70185.4, - "yearHigh": 77918, - "yearLow": 48197.45, - "indicativeClose": 0, - "pe": "22.43", - "pb": "3.77", - "dy": "1.4", - "declines": "25", - "advances": "25", - "unchanged": "0", - "perChange365d": 48.82, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-NEXT-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.22, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-NEXT-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-NEXT-50.svg", - "previousDay": 69522.25, - "oneWeekAgo": 66765.45, - "oneMonthAgo": 70030.55, - "oneYearAgo": 47161.95 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY 100", - "indexSymbol": "NIFTY 100", - "last": 24836.25, - "variation": -278.9, - "percentChange": -1.11, - "open": 25135.9, - "high": 25230.1, - "low": 24791.6, - "previousClose": 25115.15, - "yearHigh": 27335.65, - "yearLow": 20263.1, - "indicativeClose": 0, - "pe": "22.56", - "pb": "3.61", - "dy": "1.25", - "declines": "71", - "advances": "29", - "unchanged": "0", - "perChange365d": 25.96, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-100.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.24, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-100.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-100.svg", - "previousDay": 24983.1, - "oneWeekAgo": 24135.1, - "oneMonthAgo": 25175.2, - "oneYearAgo": 19938.4 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY 200", - "indexSymbol": "NIFTY 200", - "last": 13524.75, - "variation": -125.1, - "percentChange": -0.92, - "open": 13664.95, - "high": 13720.8, - "low": 13499.3, - "previousClose": 13649.85, - "yearHigh": 14833.75, - "yearLow": 10924, - "indicativeClose": 0, - "pe": "24.43", - "pb": "3.8", - "dy": "1.18", - "declines": "112", - "advances": "87", - "unchanged": "1", - "perChange365d": 27.06, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-200.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.04, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-200.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-200.svg", - "previousDay": 13575.55, - "oneWeekAgo": 13129.7, - "oneMonthAgo": 13655.35, - "oneYearAgo": 10742.95 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY 500", - "indexSymbol": "NIFTY 500", - "last": 22514.35, - "variation": -177.35, - "percentChange": -0.78, - "open": 22722.3, - "high": 22821.75, - "low": 22472.25, - "previousClose": 22691.7, - "yearHigh": 24573.4, - "yearLow": 18053.15, - "indicativeClose": 0, - "pe": "25.57", - "pb": "3.89", - "dy": "1.13", - "declines": "269", - "advances": "226", - "unchanged": "5", - "perChange365d": 27.9, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-500.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.18, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-500.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-500.svg", - "previousDay": 22562.45, - "oneWeekAgo": 21820.85, - "oneMonthAgo": 22649.95, - "oneYearAgo": 17741.8 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY MIDCAP 50", - "indexSymbol": "NIFTY MIDCAP 50", - "last": 15661.85, - "variation": -68.55, - "percentChange": -0.44, - "open": 15761.4, - "high": 15815.6, - "low": 15628.85, - "previousClose": 15730.4, - "yearHigh": 17066.75, - "yearLow": 12265.45, - "indicativeClose": 0, - "pe": "47.39", - "pb": "5.54", - "dy": "0.79", - "declines": "26", - "advances": "24", - "unchanged": "0", - "perChange365d": 30.74, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MIDCAP-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.19, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MIDCAP-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MIDCAP-50.svg", - "previousDay": 15635.35, - "oneWeekAgo": 15167.55, - "oneMonthAgo": 15544.65, - "oneYearAgo": 12031.6 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY MIDCAP 100", - "indexSymbol": "NIFTY MIDCAP 100", - "last": 56300.75, - "variation": 28.4, - "percentChange": 0.05, - "open": 56414.1, - "high": 56768.95, - "low": 56169.65, - "previousClose": 56272.35, - "yearHigh": 60925.95, - "yearLow": 43118.25, - "indicativeClose": 0, - "pe": "41.24", - "pb": "5.08", - "dy": "0.81", - "declines": "41", - "advances": "58", - "unchanged": "1", - "perChange365d": 33.1, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MIDCAP-100.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.96, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MIDCAP-100.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MIDCAP-100.svg", - "previousDay": 55914.4, - "oneWeekAgo": 54385.35, - "oneMonthAgo": 55736.6, - "oneYearAgo": 42278 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY SMALLCAP 100", - "indexSymbol": "NIFTY SMLCAP 100", - "last": 18511.55, - "variation": 8.7, - "percentChange": 0.05, - "open": 18579.35, - "high": 18712.35, - "low": 18468.1, - "previousClose": 18502.85, - "yearHigh": 19640.6, - "yearLow": 14085.35, - "indicativeClose": 0, - "pe": "34.2", - "pb": "4.08", - "dy": "0.97", - "declines": "52", - "advances": "48", - "unchanged": "0", - "perChange365d": 33.41, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-SMLCAP-100.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.44, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-SMLCAP-100.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-SMLCAP-100.svg", - "previousDay": 18265.3, - "oneWeekAgo": 17596.6, - "oneMonthAgo": 18062.3, - "oneYearAgo": 13868.9 - }, - { - "key": "BROAD MARKET INDICES", - "index": "INDIA VIX", - "indexSymbol": "INDIA VIX", - "last": 15.205, - "variation": 0.58, - "percentChange": 3.96, - "open": 14.625, - "high": 15.5625, - "low": 14.27, - "previousClose": 14.625, - "yearHigh": 31.71, - "yearLow": 9.47, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 20.12, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/INDIA-VIX.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.34, - "chart30dPath": "https://nsearchives.nseindia.com/30d/INDIA-VIX.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/INDIA-VIX.svg", - "previousDay": 15.305, - "oneWeekAgo": 15.99, - "oneMonthAgo": 14.29, - "oneYearAgo": 12.175 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY MIDCAP 150", - "indexSymbol": "NIFTY MIDCAP 150", - "last": 20839.9, - "variation": 1.7, - "percentChange": 0.01, - "open": 20885.65, - "high": 21001.3, - "low": 20794.2, - "previousClose": 20838.2, - "yearHigh": 22515.4, - "yearLow": 16034.75, - "indicativeClose": 0, - "pe": "41.85", - "pb": "5.37", - "dy": "0.78", - "declines": "70", - "advances": "79", - "unchanged": "1", - "perChange365d": 32.44, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MIDCAP-150.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.69, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MIDCAP-150.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MIDCAP-150.svg", - "previousDay": 20735.1, - "oneWeekAgo": 20180.9, - "oneMonthAgo": 20695.55, - "oneYearAgo": 15734.35 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY SMALLCAP 50", - "indexSymbol": "NIFTY SMLCAP 50", - "last": 8900.15, - "variation": -11.3, - "percentChange": -0.13, - "open": 8948.85, - "high": 8996.75, - "low": 8881.8, - "previousClose": 8911.45, - "yearHigh": 9446.5, - "yearLow": 6515.65, - "indicativeClose": 0, - "pe": "30.7", - "pb": "3.72", - "dy": "0.8", - "declines": "30", - "advances": "20", - "unchanged": "0", - "perChange365d": 38.81, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-SMLCAP-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.14, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-SMLCAP-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-SMLCAP-50.svg", - "previousDay": 8807.55, - "oneWeekAgo": 8513.5, - "oneMonthAgo": 8724.6, - "oneYearAgo": 6420.1 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY SMALLCAP 250", - "indexSymbol": "NIFTY SMLCAP 250", - "last": 17577.85, - "variation": 25.2, - "percentChange": 0.14, - "open": 17612.1, - "high": 17737.8, - "low": 17532.35, - "previousClose": 17552.65, - "yearHigh": 18688.3, - "yearLow": 13176.2, - "indicativeClose": 0, - "pe": "33.8", - "pb": "4.09", - "dy": "0.87", - "declines": "128", - "advances": "118", - "unchanged": "4", - "perChange365d": 34.88, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-SMLCAP-250.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.34, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-SMLCAP-250.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-SMLCAP-250.svg", - "previousDay": 17375.55, - "oneWeekAgo": 16747.85, - "oneMonthAgo": 17151.6, - "oneYearAgo": 13013.9 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY MIDSMALLCAP 400", - "indexSymbol": "NIFTY MIDSML 400", - "last": 19725.25, - "variation": 11.3, - "percentChange": 0.06, - "open": 19766.8, - "high": 19885.35, - "low": 19683.2, - "previousClose": 19713.95, - "yearHigh": 21177.6, - "yearLow": 15054.75, - "indicativeClose": 0, - "pe": "38.51", - "pb": "4.82", - "dy": "0.81", - "declines": "198", - "advances": "197", - "unchanged": "5", - "perChange365d": 33.32, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MIDSML-400.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.28, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MIDSML-400.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MIDSML-400.svg", - "previousDay": 19579.65, - "oneWeekAgo": 18989.75, - "oneMonthAgo": 19464.5, - "oneYearAgo": 14787.2 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY500 MULTICAP 50:25:25", - "indexSymbol": "NIFTY500 MULTICAP", - "last": 15805.8, - "variation": -82.45, - "percentChange": -0.52, - "open": 15917.3, - "high": 15996.65, - "low": 15775.65, - "previousClose": 15888.25, - "yearHigh": 17112.15, - "yearLow": 5531.55, - "indicativeClose": 0, - "pe": "28.15", - "pb": "4.06", - "dy": "1.04", - "declines": "269", - "advances": "226", - "unchanged": "5", - "perChange365d": 29.87, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY500-MULTICAP.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.63, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY500-MULTICAP.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY500-MULTICAP.svg", - "previousDay": 15786.65, - "oneWeekAgo": 15270.4, - "oneMonthAgo": 15789.4, - "oneYearAgo": 12233.8 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY LARGEMIDCAP 250", - "indexSymbol": "NIFTY LARGEMID250", - "last": 15706.75, - "variation": -86.5, - "percentChange": -0.55, - "open": 15817.8, - "high": 15889.75, - "low": 15675.65, - "previousClose": 15793.25, - "yearHigh": 17095.2, - "yearLow": 5635.2, - "indicativeClose": 0, - "pe": "29.42", - "pb": "4.33", - "dy": "1.02", - "declines": "141", - "advances": "108", - "unchanged": "1", - "perChange365d": 29.24, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-LARGEMID250.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.23, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-LARGEMID250.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-LARGEMID250.svg", - "previousDay": 15712.65, - "oneWeekAgo": 15236.4, - "oneMonthAgo": 15757.7, - "oneYearAgo": 12220.35 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY MIDCAP SELECT", - "indexSymbol": "NIFTY MID SELECT", - "last": 12553.75, - "variation": -65.5, - "percentChange": -0.52, - "open": 12642, - "high": 12688.55, - "low": 12529.2, - "previousClose": 12619.25, - "yearHigh": 13407.55, - "yearLow": 5520.25, - "indicativeClose": 0, - "pe": "50.12", - "pb": "6.63", - "dy": "0.82", - "declines": "15", - "advances": "10", - "unchanged": "0", - "perChange365d": 32.15, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MID-SELECT.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.77, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MID-SELECT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MID-SELECT.svg", - "previousDay": 12569.65, - "oneWeekAgo": 12164.65, - "oneMonthAgo": 12400.2, - "oneYearAgo": 9549 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY TOTAL MARKET", - "indexSymbol": "NIFTY TOTAL MKT", - "last": 12706.15, - "variation": -93.05, - "percentChange": -0.73, - "open": 12817.65, - "high": 12876.35, - "low": 12682.3, - "previousClose": 12799.2, - "yearHigh": 13842.6, - "yearLow": 6252.1, - "indicativeClose": 0, - "pe": "25.71", - "pb": "3.87", - "dy": "1.11", - "declines": "363", - "advances": "382", - "unchanged": "6", - "perChange365d": 28.31, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-TOTAL-MKT.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.33, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-TOTAL-MKT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-TOTAL-MKT.svg", - "previousDay": 12721, - "oneWeekAgo": 12302.6, - "oneMonthAgo": 12757.45, - "oneYearAgo": 9975.4 - }, - { - "key": "BROAD MARKET INDICES", - "index": "NIFTY MICROCAP 250", - "indexSymbol": "NIFTY MICROCAP250", - "last": 24906.3, - "variation": 164.55, - "percentChange": 0.67, - "open": 24836.4, - "high": 25079.9, - "low": 24745.65, - "previousClose": 24741.75, - "yearHigh": 26066.45, - "yearLow": 5802.95, - "indicativeClose": 0, - "pe": "29.97", - "pb": "3.56", - "dy": "0.51", - "declines": "94", - "advances": "156", - "unchanged": "1", - "perChange365d": 40.06, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MICROCAP250.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 4.1, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MICROCAP250.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MICROCAP250.svg", - "previousDay": 24332.7, - "oneWeekAgo": 23517.1, - "oneMonthAgo": 23767.15, - "oneYearAgo": 17664.7 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY BANK", - "indexSymbol": "NIFTY BANK", - "last": 51906.85, - "variation": -394.95, - "percentChange": -0.76, - "open": 52389.95, - "high": 52760.2, - "low": 51782.9, - "previousClose": 52301.8, - "yearHigh": 54467.35, - "yearLow": 44429, - "indicativeClose": 0, - "pe": "14.14", - "pb": "2.33", - "dy": "0.96", - "declines": "7", - "advances": "5", - "unchanged": "0", - "perChange365d": 19.19, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-BANK.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.03, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-BANK.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-BANK.svg", - "previousDay": 52191.5, - "oneWeekAgo": 50372.9, - "oneMonthAgo": 51259.3, - "oneYearAgo": 43880.95 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY AUTO", - "indexSymbol": "NIFTY AUTO", - "last": 23134.7, - "variation": -382.65, - "percentChange": -1.63, - "open": 23509.25, - "high": 23549.7, - "low": 23091.8, - "previousClose": 23517.35, - "yearHigh": 27696.1, - "yearLow": 17294.35, - "indicativeClose": 0, - "pe": "22.5", - "pb": "4.74", - "dy": "0.97", - "declines": "13", - "advances": "2", - "unchanged": "0", - "perChange365d": 36.71, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-AUTO.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -1.87, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-AUTO.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-AUTO.svg", - "previousDay": 23413, - "oneWeekAgo": 23145.9, - "oneMonthAgo": 23964.45, - "oneYearAgo": 17202.75 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY FINANCIAL SERVICES", - "indexSymbol": "NIFTY FIN SERVICE", - "last": 23919.6, - "variation": -251.95, - "percentChange": -1.04, - "open": 24211.9, - "high": 24378.05, - "low": 23854.7, - "previousClose": 24171.55, - "yearHigh": 25201.95, - "yearLow": 19822.05, - "indicativeClose": 0, - "pe": "16.58", - "pb": "2.88", - "dy": "0.9", - "declines": "11", - "advances": "9", - "unchanged": "0", - "perChange365d": 22.68, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-FIN-SERVICE.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.3, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-FIN-SERVICE.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-FIN-SERVICE.svg", - "previousDay": 24046.8, - "oneWeekAgo": 23273.45, - "oneMonthAgo": 23861.85, - "oneYearAgo": 19702.65 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY FINANCIAL SERVICES 25/50", - "indexSymbol": "NIFTY FINSRV25 50", - "last": 25691.45, - "variation": -266.65, - "percentChange": -1.03, - "open": 25999.75, - "high": 26163.05, - "low": 25596.7, - "previousClose": 25958.1, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "16.6", - "pb": "2.97", - "dy": "0.93", - "declines": "11", - "advances": "9", - "unchanged": "0", - "perChange365d": 24.54, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-FINSRV25-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.01, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-FINSRV25-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-FINSRV25-50.svg", - "previousDay": 25848.5, - "oneWeekAgo": 25020.15, - "oneMonthAgo": 25961.25, - "oneYearAgo": 20842.7 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY FMCG", - "indexSymbol": "NIFTY FMCG", - "last": 57706.05, - "variation": -322.55, - "percentChange": -0.56, - "open": 58068.5, - "high": 58788.85, - "low": 57444.8, - "previousClose": 58028.6, - "yearHigh": 66438.7, - "yearLow": 52398.75, - "indicativeClose": 0, - "pe": "45.95", - "pb": "11.24", - "dy": "1.84", - "declines": "12", - "advances": "3", - "unchanged": "0", - "perChange365d": 10.55, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-FMCG.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -2.07, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-FMCG.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-FMCG.svg", - "previousDay": 57838.25, - "oneWeekAgo": 55693.7, - "oneMonthAgo": 59252.65, - "oneYearAgo": 52489.5 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY IT", - "indexSymbol": "NIFTY IT", - "last": 42968.75, - "variation": -1049.95, - "percentChange": -2.39, - "open": 43948, - "high": 44013.1, - "low": 42864.8, - "previousClose": 44018.7, - "yearHigh": 44330.6, - "yearLow": 31320.15, - "indicativeClose": 0, - "pe": "34.01", - "pb": "8.84", - "dy": "1.89", - "declines": "10", - "advances": "0", - "unchanged": "0", - "perChange365d": 37.05, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-IT.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 4.3, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-IT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-IT.svg", - "previousDay": 44085.95, - "oneWeekAgo": 41952.8, - "oneMonthAgo": 42205.4, - "oneYearAgo": 32118.45 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY MEDIA", - "indexSymbol": "NIFTY MEDIA", - "last": 1968.35, - "variation": 6.25, - "percentChange": 0.32, - "open": 1966.35, - "high": 1993.1, - "low": 1958.3, - "previousClose": 1962.1, - "yearHigh": 2508.6, - "yearLow": 1717.4, - "indicativeClose": 0, - "pe": null, - "pb": "2.23", - "dy": "0.59", - "declines": "5", - "advances": "5", - "unchanged": "0", - "perChange365d": -14.28, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MEDIA.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.58, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MEDIA.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MEDIA.svg", - "previousDay": 1943.1, - "oneWeekAgo": 1898.75, - "oneMonthAgo": 1931.5, - "oneYearAgo": 2288.85 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY METAL", - "indexSymbol": "NIFTY METAL", - "last": 8964.85, - "variation": -22.5, - "percentChange": -0.25, - "open": 9020.45, - "high": 9074.85, - "low": 8947, - "previousClose": 8987.35, - "yearHigh": 10322.05, - "yearLow": 7025.4, - "indicativeClose": 0, - "pe": "21.34", - "pb": "2.54", - "dy": "2.34", - "declines": "7", - "advances": "8", - "unchanged": "0", - "perChange365d": 28.36, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-METAL.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -3.14, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-METAL.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-METAL.svg", - "previousDay": 8916.7, - "oneWeekAgo": 8717.4, - "oneMonthAgo": 9278.4, - "oneYearAgo": 7001.65 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY PHARMA", - "indexSymbol": "NIFTY PHARMA", - "last": 21728.6, - "variation": -100, - "percentChange": -0.46, - "open": 21855.8, - "high": 21884.5, - "low": 21649.5, - "previousClose": 21828.6, - "yearHigh": 23907.9, - "yearLow": 15868.15, - "indicativeClose": 0, - "pe": "34.32", - "pb": "5.29", - "dy": "0.62", - "declines": "12", - "advances": "8", - "unchanged": "0", - "perChange365d": 37.28, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-PHARMA.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -4.5, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-PHARMA.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-PHARMA.svg", - "previousDay": 21961.75, - "oneWeekAgo": 21740.1, - "oneMonthAgo": 22857.25, - "oneYearAgo": 15900.3 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY PSU BANK", - "indexSymbol": "NIFTY PSU BANK", - "last": 6846.85, - "variation": 62.9, - "percentChange": 0.93, - "open": 6804.55, - "high": 6883.85, - "low": 6771.95, - "previousClose": 6783.95, - "yearHigh": 8053.3, - "yearLow": 5066.55, - "indicativeClose": 0, - "pe": "7.75", - "pb": "1.33", - "dy": "2.17", - "declines": "1", - "advances": "11", - "unchanged": "0", - "perChange365d": 34.49, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-PSU-BANK.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 4.03, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-PSU-BANK.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-PSU-BANK.svg", - "previousDay": 6789.95, - "oneWeekAgo": 6318.9, - "oneMonthAgo": 6521.3, - "oneYearAgo": 5044.35 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY PRIVATE BANK", - "indexSymbol": "NIFTY PVT BANK", - "last": 25234.85, - "variation": -283.1, - "percentChange": -1.11, - "open": 25541.95, - "high": 25689.1, - "low": 25189.55, - "previousClose": 25517.95, - "yearHigh": 27280.6, - "yearLow": 22390.1, - "indicativeClose": 0, - "pe": "15.11", - "pb": "2.34", - "dy": "0.59", - "declines": "6", - "advances": "4", - "unchanged": "0", - "perChange365d": 11.72, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-PVT-BANK.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.12, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-PVT-BANK.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-PVT-BANK.svg", - "previousDay": 25461.15, - "oneWeekAgo": 24824.7, - "oneMonthAgo": 25235.35, - "oneYearAgo": 22840.45 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY REALTY", - "indexSymbol": "NIFTY REALTY", - "last": 1025.35, - "variation": 0.45, - "percentChange": 0.04, - "open": 1028.4, - "high": 1041.2, - "low": 1022.1, - "previousClose": 1024.9, - "yearHigh": 1157.35, - "yearLow": 717.3, - "indicativeClose": 0, - "pe": "52.14", - "pb": "5.75", - "dy": "0.37", - "declines": "6", - "advances": "4", - "unchanged": "0", - "perChange365d": 44.97, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-REALTY.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 3.76, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-REALTY.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-REALTY.svg", - "previousDay": 1029.15, - "oneWeekAgo": 975.3, - "oneMonthAgo": 987.75, - "oneYearAgo": 706.95 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY HEALTHCARE INDEX", - "indexSymbol": "NIFTY HEALTHCARE", - "last": 13844.65, - "variation": -106.2, - "percentChange": -0.76, - "open": 13974.9, - "high": 13991.65, - "low": 13809.55, - "previousClose": 13950.85, - "yearHigh": 15049.4, - "yearLow": 6482.8, - "indicativeClose": 0, - "pe": "39.27", - "pb": "5.87", - "dy": "0.54", - "declines": "13", - "advances": "7", - "unchanged": "0", - "perChange365d": 39, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-HEALTHCARE.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -3.76, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-HEALTHCARE.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-HEALTHCARE.svg", - "previousDay": 14015.15, - "oneWeekAgo": 13816.05, - "oneMonthAgo": 14495.75, - "oneYearAgo": 10036.8 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY CONSUMER DURABLES", - "indexSymbol": "NIFTY CONSR DURBL", - "last": 39785.9, - "variation": -458, - "percentChange": -1.14, - "open": 40298.1, - "high": 40457.1, - "low": 39683.6, - "previousClose": 40243.9, - "yearHigh": 44426.55, - "yearLow": 14089.55, - "indicativeClose": 0, - "pe": "82.82", - "pb": "12.41", - "dy": "0.37", - "declines": "9", - "advances": "6", - "unchanged": "0", - "perChange365d": 38.51, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-CONSR-DURBL.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.19, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-CONSR-DURBL.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-CONSR-DURBL.svg", - "previousDay": 40239.5, - "oneWeekAgo": 39011.45, - "oneMonthAgo": 39769.9, - "oneYearAgo": 29054.75 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY OIL & GAS", - "indexSymbol": "NIFTY OIL AND GAS", - "last": 10966.95, - "variation": -17.9, - "percentChange": -0.16, - "open": 10998.2, - "high": 11144.9, - "low": 10935, - "previousClose": 10984.85, - "yearHigh": 13607.2, - "yearLow": 4632.7, - "indicativeClose": 0, - "pe": "13.07", - "pb": "1.65", - "dy": "2.91", - "declines": "5", - "advances": "9", - "unchanged": "1", - "perChange365d": 31.6, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-OIL-AND-GAS.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -3.4, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-OIL-AND-GAS.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-OIL-AND-GAS.svg", - "previousDay": 10923.95, - "oneWeekAgo": 10446.45, - "oneMonthAgo": 11371.8, - "oneYearAgo": 8347.25 - }, - { - "key": "SECTORAL INDICES", - "index": "NIFTY MIDSMALL HEALTHCARE", - "indexSymbol": "NIFTY MIDSML HLTH", - "last": 41316.4, - "variation": -237.15, - "percentChange": -0.57, - "open": 41674.4, - "high": 41702.5, - "low": 41277.35, - "previousClose": 41553.55, - "yearHigh": 43902.7, - "yearLow": 20019.15, - "indicativeClose": 0, - "pe": "48.63", - "pb": "6.03", - "dy": "0.86", - "declines": "19", - "advances": "11", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.78, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MIDSML-HLTH.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MIDSML-HLTH.svg", - "previousDay": 41703.6, - "oneWeekAgo": 41072.05, - "oneMonthAgo": 41879 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY DIVIDEND OPPORTUNITIES 50", - "indexSymbol": "NIFTY DIV OPPS 50", - "last": 6449.1, - "variation": -67.4, - "percentChange": -1.03, - "open": 6518.15, - "high": 6542, - "low": 6429.45, - "previousClose": 6516.5, - "yearHigh": 7012.65, - "yearLow": 4926.9, - "indicativeClose": 0, - "pe": "17.85", - "pb": "3.39", - "dy": "2.65", - "declines": "27", - "advances": "22", - "unchanged": "1", - "perChange365d": 34.87, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-DIV-OPPS-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.63, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-DIV-OPPS-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-DIV-OPPS-50.svg", - "previousDay": 6498.8, - "oneWeekAgo": 6222.95, - "oneMonthAgo": 6475.75, - "oneYearAgo": 4831.65 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY GROWTH SECTORS 15", - "indexSymbol": "NIFTY GROWSECT 15", - "last": 11789.25, - "variation": -224.65, - "percentChange": -1.87, - "open": 11993, - "high": 12025.05, - "low": 11758.7, - "previousClose": 12013.9, - "yearHigh": 13065.05, - "yearLow": 10168.35, - "indicativeClose": 0, - "pe": "28.62", - "pb": "7.26", - "dy": "1.77", - "declines": "14", - "advances": "1", - "unchanged": "0", - "perChange365d": 19.6, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GROWSECT-15.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.34, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GROWSECT-15.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GROWSECT-15.svg", - "previousDay": 12021.6, - "oneWeekAgo": 11587.55, - "oneMonthAgo": 11972.7, - "oneYearAgo": 10044.85 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY100 QUALITY 30", - "indexSymbol": "NIFTY100 QUALTY30", - "last": 5696.6, - "variation": -78.35, - "percentChange": -1.36, - "open": 5782.75, - "high": 5790.4, - "low": 5684.15, - "previousClose": 5774.95, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "32.4", - "pb": "8.23", - "dy": "1.73", - "declines": "30", - "advances": "0", - "unchanged": "0", - "perChange365d": 25.33, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY100-QUALTY30.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.35, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY100-QUALTY30.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY100-QUALTY30.svg", - "previousDay": 5740.4, - "oneWeekAgo": 5525, - "oneMonthAgo": 5795.15, - "oneYearAgo": 4607.75 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 VALUE 20", - "indexSymbol": "NIFTY50 VALUE 20", - "last": 13633.35, - "variation": -220.75, - "percentChange": -1.59, - "open": 13843.55, - "high": 13875.65, - "low": 13599.3, - "previousClose": 13854.1, - "yearHigh": 14731.65, - "yearLow": 10765.3, - "indicativeClose": 0, - "pe": "19.46", - "pb": "3.56", - "dy": "2.11", - "declines": "19", - "advances": "1", - "unchanged": "0", - "perChange365d": 30.43, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-VALUE-20.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.46, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-VALUE-20.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-VALUE-20.svg", - "previousDay": 13863.9, - "oneWeekAgo": 13300.4, - "oneMonthAgo": 13791, - "oneYearAgo": 10621.85 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 TR 2X LEVERAGE", - "indexSymbol": "NIFTY50 TR 2X LEV", - "last": 19424.2, - "variation": -598.85, - "percentChange": -2.99, - "open": 20018.05, - "high": 20136.1, - "low": 19358.6, - "previousClose": 20023.05, - "yearHigh": 23715.35, - "yearLow": 14723.6, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 40.01, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-TR-2X-LEV.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.95, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-TR-2X-LEV.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-TR-2X-LEV.svg", - "previousDay": 19894.5, - "oneWeekAgo": 18559.9, - "oneMonthAgo": 20214.75, - "oneYearAgo": 14300.95 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 PR 2X LEVERAGE", - "indexSymbol": "NIFTY50 PR 2X LEV", - "last": 13306.2, - "variation": -410.25, - "percentChange": -2.99, - "open": 13713.05, - "high": 13793.9, - "low": 13261.3, - "previousClose": 13716.45, - "yearHigh": 16297.55, - "yearLow": 10326.2, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 36.76, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-PR-2X-LEV.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -1.22, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-PR-2X-LEV.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-PR-2X-LEV.svg", - "previousDay": 13628.4, - "oneWeekAgo": 12714.15, - "oneMonthAgo": 13886.15, - "oneYearAgo": 10029.8 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 TR 1X INVERSE", - "indexSymbol": "NIFTY50 TR 1X INV", - "last": 172.6, - "variation": 2.6, - "percentChange": 1.53, - "open": 170.05, - "high": 172.85, - "low": 169.55, - "previousClose": 170, - "yearHigh": 197.5, - "yearLow": 156.1, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": -15.17, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-TR-1X-INV.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.47, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-TR-1X-INV.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-TR-1X-INV.svg", - "previousDay": 170.55, - "oneWeekAgo": 176.7, - "oneMonthAgo": 169.2, - "oneYearAgo": 200.4 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 PR 1X INVERSE", - "indexSymbol": "NIFTY50 PR 1X INV", - "last": 208.3, - "variation": 3.1, - "percentChange": 1.51, - "open": 205.25, - "high": 208.65, - "low": 204.65, - "previousClose": 205.2, - "yearHigh": 235.6, - "yearLow": 188.15, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": -14.16, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-PR-1X-INV.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.61, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-PR-1X-INV.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-PR-1X-INV.svg", - "previousDay": 205.85, - "oneWeekAgo": 213.25, - "oneMonthAgo": 203.95, - "oneYearAgo": 239.05 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 DIVIDEND POINTS", - "indexSymbol": "NIFTY50 DIV POINT", - "last": 233.03, - "variation": 0, - "percentChange": 0, - "open": 233.03, - "high": 233.03, - "low": 233.03, - "previousClose": 233.03, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 28.09, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-DIV-POINT.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 16.89, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-DIV-POINT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-DIV-POINT.svg", - "previousDay": 233.03, - "oneWeekAgo": 233.03, - "oneMonthAgo": 199.35, - "oneYearAgo": 181.93 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY ALPHA 50", - "indexSymbol": "NIFTY ALPHA 50", - "last": 56086.8, - "variation": 446.6, - "percentChange": 0.8, - "open": 55911.8, - "high": 56618.75, - "low": 55768.8, - "previousClose": 55640.2, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "37.78", - "pb": "6.12", - "dy": "0.71", - "declines": "20", - "advances": "29", - "unchanged": "1", - "perChange365d": 45.14, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-ALPHA-50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.84, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-ALPHA-50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-ALPHA-50.svg", - "previousDay": 54834.95, - "oneWeekAgo": 53141.35, - "oneMonthAgo": 55175.95, - "oneYearAgo": 38335.65 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY50 EQUAL WEIGHT", - "indexSymbol": "NIFTY50 EQL WGT", - "last": 29663.15, - "variation": -450.55, - "percentChange": -1.5, - "open": 30138, - "high": 30198.4, - "low": 29606.8, - "previousClose": 30113.7, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "22.69", - "pb": "3.66", - "dy": "1.4", - "declines": "46", - "advances": "4", - "unchanged": "0", - "perChange365d": 23.36, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY50-EQL-WGT.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -2.03, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY50-EQL-WGT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY50-EQL-WGT.svg", - "previousDay": 29989.95, - "oneWeekAgo": 29085.4, - "oneMonthAgo": 30737.7, - "oneYearAgo": 24412.2 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY100 EQUAL WEIGHT", - "indexSymbol": "NIFTY100 EQL WGT", - "last": 31824.35, - "variation": -118.95, - "percentChange": -0.37, - "open": 32035.05, - "high": 32236.4, - "low": 31757.95, - "previousClose": 31943.3, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "22.99", - "pb": "3.65", - "dy": "1.26", - "declines": "71", - "advances": "29", - "unchanged": "0", - "perChange365d": 32.45, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY100-EQL-WGT.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -1.38, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY100-EQL-WGT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY100-EQL-WGT.svg", - "previousDay": 31638.8, - "oneWeekAgo": 30708.85, - "oneMonthAgo": 32389.4, - "oneYearAgo": 24118.1 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY100 LOW VOLATILITY 30", - "indexSymbol": "NIFTY100 LOWVOL30", - "last": 19139.8, - "variation": -275.55, - "percentChange": -1.42, - "open": 19430.15, - "high": 19463.35, - "low": 19084, - "previousClose": 19415.35, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "31.97", - "pb": "5.91", - "dy": "1.1", - "declines": "29", - "advances": "1", - "unchanged": "0", - "perChange365d": 24.05, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY100-LOWVOL30.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -2.53, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY100-LOWVOL30.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY100-LOWVOL30.svg", - "previousDay": 19429, - "oneWeekAgo": 18838.55, - "oneMonthAgo": 19920.05, - "oneYearAgo": 15651.3 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY200 QUALITY 30", - "indexSymbol": "NIFTY200 QUALTY30", - "last": 21188.05, - "variation": -290.65, - "percentChange": -1.35, - "open": 21503.8, - "high": 21539, - "low": 21140.25, - "previousClose": 21478.7, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "34.19", - "pb": "9.9", - "dy": "1.83", - "declines": "29", - "advances": "1", - "unchanged": "0", - "perChange365d": 26.63, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY200-QUALTY30.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.44, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY200-QUALTY30.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY200-QUALTY30.svg", - "previousDay": 21385, - "oneWeekAgo": 20570, - "oneMonthAgo": 21573.7, - "oneYearAgo": 16961.9 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY ALPHA LOW-VOLATILITY 30", - "indexSymbol": "NIFTY ALPHALOWVOL", - "last": 27473.75, - "variation": -272.05, - "percentChange": -0.98, - "open": 27770.5, - "high": 27840.3, - "low": 27404.2, - "previousClose": 27745.8, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "26.58", - "pb": "4.32", - "dy": "0.99", - "declines": "27", - "advances": "3", - "unchanged": "0", - "perChange365d": 31.82, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-ALPHALOWVOL.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -2.84, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-ALPHALOWVOL.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-ALPHALOWVOL.svg", - "previousDay": 27702.6, - "oneWeekAgo": 26892.6, - "oneMonthAgo": 28557.55, - "oneYearAgo": 21047.75 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY200 MOMENTUM 30", - "indexSymbol": "NIFTY200MOMENTM30", - "last": 33940.45, - "variation": -267.75, - "percentChange": -0.78, - "open": 34261.9, - "high": 34466.95, - "low": 33853.5, - "previousClose": 34208.2, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "20.56", - "pb": "4.42", - "dy": "1.51", - "declines": "19", - "advances": "11", - "unchanged": "0", - "perChange365d": 39.17, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY200MOMENTM30.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.89, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY200MOMENTM30.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY200MOMENTM30.svg", - "previousDay": 33748.45, - "oneWeekAgo": 32603.7, - "oneMonthAgo": 34513.9, - "oneYearAgo": 24579.4 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY MIDCAP150 QUALITY 50", - "indexSymbol": "NIFTY M150 QLTY50", - "last": 24296.75, - "variation": -72.9, - "percentChange": -0.3, - "open": 24407.95, - "high": 24462.7, - "low": 24244.4, - "previousClose": 24369.65, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "38.4", - "pb": "9", - "dy": "1.2", - "declines": "34", - "advances": "16", - "unchanged": "0", - "perChange365d": 26.87, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-M150-QLTY50.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.48, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-M150-QLTY50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-M150-QLTY50.svg", - "previousDay": 24336.6, - "oneWeekAgo": 23680.8, - "oneMonthAgo": 24486.75, - "oneYearAgo": 19209 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY200 ALPHA 30", - "indexSymbol": "NIFTY200 ALPHA 30", - "last": 26105.4, - "variation": -142.75, - "percentChange": -0.54, - "open": 26295.35, - "high": 26434.75, - "low": 26036.6, - "previousClose": 26248.15, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "25.11", - "pb": "5.2", - "dy": "1.29", - "declines": "21", - "advances": "9", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.73, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY200-ALPHA-30.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY200-ALPHA-30.svg", - "previousDay": 26025.05, - "oneWeekAgo": 25092.5, - "oneMonthAgo": 26441.55 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY MIDCAP150 MOMENTUM 50", - "indexSymbol": "NIFTYM150MOMNTM50", - "last": 63698.05, - "variation": 198.85, - "percentChange": 0.31, - "open": 63653.9, - "high": 64182.25, - "low": 63417.5, - "previousClose": 63499.2, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "34.41", - "pb": "5.13", - "dy": "0.86", - "declines": "21", - "advances": "28", - "unchanged": "1", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.08, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTYM150MOMNTM50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTYM150MOMNTM50.svg", - "previousDay": 63102.85, - "oneWeekAgo": 61445.4, - "oneMonthAgo": 62208 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY500 MOMENTUM 50", - "indexSymbol": "NIFTY500MOMENTM50", - "last": 59029.25, - "variation": 86.95, - "percentChange": 0.15, - "open": 59134.5, - "high": 59808.9, - "low": 58878.55, - "previousClose": 58942.3, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "27.59", - "pb": "5.05", - "dy": "0.78", - "declines": "18", - "advances": "31", - "unchanged": "1", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.72, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY500MOMENTM50.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY500MOMENTM50.svg", - "previousDay": 57812.1, - "oneWeekAgo": 55972.25, - "oneMonthAgo": 58521.67 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY MIDSMALLCAP400 MOMENTUM QUALITY 100", - "indexSymbol": "NIFTYMS400 MQ 100", - "last": 51538.05, - "variation": 72.5, - "percentChange": 0.14, - "open": 51622.4, - "high": 51941.15, - "low": 51396.25, - "previousClose": 51465.55, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "declines": "52", - "advances": "47", - "unchanged": "1", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.66, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTYMS400-MQ-100.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTYMS400-MQ-100.svg", - "previousDay": 50971.65, - "oneWeekAgo": 49119.6, - "oneMonthAgo": 50624.18 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY SMALLCAP250 MOMENTUM QUALITY 100", - "indexSymbol": "NIFTYSML250MQ 100", - "last": 50668.3, - "variation": 165.35, - "percentChange": 0.33, - "open": 50740, - "high": 51176.7, - "low": 50509.05, - "previousClose": 50502.95, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "27.4", - "pb": "4.48", - "dy": "0.97", - "declines": "51", - "advances": "48", - "unchanged": "1", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.26, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTYSML250MQ-100.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTYSML250MQ-100.svg", - "previousDay": 49619.15, - "oneWeekAgo": 47622.15, - "oneMonthAgo": 49384.72 - }, - { - "key": "STRATEGY INDICES", - "index": "NIFTY TOP 10 EQUAL WEIGHT", - "indexSymbol": "NIFTY TOP 10 EW", - "last": 9398.3, - "variation": -141.55, - "percentChange": -1.48, - "open": 9529.2, - "high": 9564.3, - "low": 9374.9, - "previousClose": 9539.85, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "22.53", - "pb": "3.89", - "dy": "1.12", - "declines": "10", - "advances": "0", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.51, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-TOP-10-EW.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-TOP-10-EW.svg", - "previousDay": 9531.5, - "oneWeekAgo": 9148.9, - "oneMonthAgo": 9397.71 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY COMMODITIES", - "indexSymbol": "NIFTY COMMODITIES", - "last": 8406.85, - "variation": -36.45, - "percentChange": -0.43, - "open": 8474.75, - "high": 8529.35, - "low": 8387.5, - "previousClose": 8443.3, - "yearHigh": 9896.35, - "yearLow": 6890.65, - "indicativeClose": 0, - "pe": "18.74", - "pb": "2.2", - "dy": "2.23", - "declines": "20", - "advances": "10", - "unchanged": "0", - "perChange365d": 24.25, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-COMMODITIES.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -4.46, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-COMMODITIES.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-COMMODITIES.svg", - "previousDay": 8333.25, - "oneWeekAgo": 8192.55, - "oneMonthAgo": 8837.65, - "oneYearAgo": 6795.65 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INDIA CONSUMPTION", - "indexSymbol": "NIFTY CONSUMPTION", - "last": 11349.6, - "variation": -118.6, - "percentChange": -1.03, - "open": 11475.7, - "high": 11528, - "low": 11327.85, - "previousClose": 11468.2, - "yearHigh": 13057.6, - "yearLow": 9005.15, - "indicativeClose": 0, - "pe": "46.23", - "pb": "8.9", - "dy": "0.96", - "declines": "25", - "advances": "5", - "unchanged": "0", - "perChange365d": 29.73, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-CONSUMPTION.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -1.09, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-CONSUMPTION.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-CONSUMPTION.svg", - "previousDay": 11390.75, - "oneWeekAgo": 11076.7, - "oneMonthAgo": 11594.4, - "oneYearAgo": 8839.85 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY CPSE", - "indexSymbol": "NIFTY CPSE", - "last": 6525.55, - "variation": -52.8, - "percentChange": -0.8, - "open": 6594.85, - "high": 6617.15, - "low": 6503.95, - "previousClose": 6578.35, - "yearHigh": 7661.9, - "yearLow": 4268.6, - "indicativeClose": 0, - "pe": "13.54", - "pb": "2.35", - "dy": "3.16", - "declines": "6", - "advances": "4", - "unchanged": "1", - "perChange365d": 56.65, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-CPSE.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.86, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-CPSE.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-CPSE.svg", - "previousDay": 6490.4, - "oneWeekAgo": 6238.2, - "oneMonthAgo": 6458.3, - "oneYearAgo": 4199.5 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY ENERGY", - "indexSymbol": "NIFTY ENERGY", - "last": 36979.2, - "variation": -276.8, - "percentChange": -0.74, - "open": 37338.2, - "high": 37628.25, - "low": 36903.5, - "previousClose": 37256, - "yearHigh": 45022.15, - "yearLow": 29421.45, - "indicativeClose": 0, - "pe": "14.95", - "pb": "2.05", - "dy": "2.42", - "declines": "8", - "advances": "2", - "unchanged": "0", - "perChange365d": 27.36, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-ENERGY.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -4.77, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-ENERGY.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-ENERGY.svg", - "previousDay": 36722.2, - "oneWeekAgo": 35789.3, - "oneMonthAgo": 39123.5, - "oneYearAgo": 29252.95 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INFRASTRUCTURE", - "indexSymbol": "NIFTY INFRA", - "last": 8602.5, - "variation": -98.3, - "percentChange": -1.13, - "open": 8698.6, - "high": 8732.4, - "low": 8584.9, - "previousClose": 8700.8, - "yearHigh": 9704.2, - "yearLow": 6612.55, - "indicativeClose": 0, - "pe": "24.56", - "pb": "3.01", - "dy": "1.2", - "declines": "23", - "advances": "7", - "unchanged": "0", - "perChange365d": 33.71, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-INFRA.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.52, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-INFRA.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-INFRA.svg", - "previousDay": 8663.25, - "oneWeekAgo": 8306.3, - "oneMonthAgo": 8746.35, - "oneYearAgo": 6507.3 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY100 LIQUID 15", - "indexSymbol": "NIFTY100 LIQ 15", - "last": 6287.15, - "variation": -66.45, - "percentChange": -1.05, - "open": 6351.9, - "high": 6389.75, - "low": 6277.3, - "previousClose": 6353.6, - "yearHigh": 7205.25, - "yearLow": 5450.75, - "indicativeClose": 0, - "pe": "18.04", - "pb": "2.87", - "dy": "1.18", - "declines": "12", - "advances": "3", - "unchanged": "0", - "perChange365d": 18.21, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY100-LIQ-15.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -2.65, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY100-LIQ-15.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY100-LIQ-15.svg", - "previousDay": 6324.6, - "oneWeekAgo": 6094.15, - "oneMonthAgo": 6526.4, - "oneYearAgo": 5374.7 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY MIDCAP LIQUID 15", - "indexSymbol": "NIFTY MID LIQ 15", - "last": 14021.8, - "variation": -63.3, - "percentChange": -0.45, - "open": 14090.8, - "high": 14179.35, - "low": 13992.95, - "previousClose": 14085.1, - "yearHigh": 14643.5, - "yearLow": 10240.15, - "indicativeClose": 0, - "pe": "35.62", - "pb": "4.4", - "dy": "0.73", - "declines": "8", - "advances": "7", - "unchanged": "0", - "perChange365d": 40.74, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MID-LIQ-15.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 2.9, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MID-LIQ-15.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MID-LIQ-15.svg", - "previousDay": 14095.55, - "oneWeekAgo": 13679.65, - "oneMonthAgo": 13688.55, - "oneYearAgo": 10008 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY MNC", - "indexSymbol": "NIFTY MNC", - "last": 28650.65, - "variation": -192.95, - "percentChange": -0.67, - "open": 28928.8, - "high": 29001.85, - "low": 28587.95, - "previousClose": 28843.6, - "yearHigh": 32841.15, - "yearLow": 22726.1, - "indicativeClose": 0, - "pe": "38.27", - "pb": "9.14", - "dy": "1.91", - "declines": "24", - "advances": "6", - "unchanged": "0", - "perChange365d": 28.54, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-MNC.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -1.36, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MNC.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MNC.svg", - "previousDay": 28607, - "oneWeekAgo": 27606, - "oneMonthAgo": 29240.9, - "oneYearAgo": 22439.45 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY PSE", - "indexSymbol": "NIFTY PSE", - "last": 10101.35, - "variation": -51.65, - "percentChange": -0.51, - "open": 10175.45, - "high": 10240.7, - "low": 10069.9, - "previousClose": 10153, - "yearHigh": 11814.6, - "yearLow": 6835.8, - "indicativeClose": 0, - "pe": "13.08", - "pb": "2.19", - "dy": "3.13", - "declines": "9", - "advances": "10", - "unchanged": "1", - "perChange365d": 52.63, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-PSE.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 1.08, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-PSE.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-PSE.svg", - "previousDay": 10025.45, - "oneWeekAgo": 9592, - "oneMonthAgo": 10044.65, - "oneYearAgo": 6652 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY SERVICES SECTOR", - "indexSymbol": "NIFTY SERV SECTOR", - "last": 31752, - "variation": -472.9, - "percentChange": -1.47, - "open": 32237.25, - "high": 32351.45, - "low": 31684.65, - "previousClose": 32224.9, - "yearHigh": 33791.15, - "yearLow": 25641.85, - "indicativeClose": 0, - "pe": "21.74", - "pb": "3.68", - "dy": "1.17", - "declines": "24", - "advances": "6", - "unchanged": "0", - "perChange365d": 27.77, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-SERV-SECTOR.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.95, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-SERV-SECTOR.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-SERV-SECTOR.svg", - "previousDay": 32065.25, - "oneWeekAgo": 30967.85, - "oneMonthAgo": 31921.6, - "oneYearAgo": 25221.5 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY100 ESG SECTOR LEADERS", - "indexSymbol": "NIFTY100ESGSECLDR", - "last": 3980.85, - "variation": -53.1, - "percentChange": -1.32, - "open": 4035.55, - "high": 4047.85, - "low": 3975, - "previousClose": 4033.95, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "25.71", - "pb": "3.98", - "dy": "1.04", - "perChange365d": 24.7, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY100ESGSECLDR.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.58, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY100ESGSECLDR.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY100ESGSECLDR.svg", - "previousDay": 4010.4, - "oneWeekAgo": 3875.35, - "oneMonthAgo": 4057.4, - "oneYearAgo": 3235.05 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INDIA DIGITAL", - "indexSymbol": "NIFTY IND DIGITAL", - "last": 9510.3, - "variation": -98.5, - "percentChange": -1.03, - "open": 9608, - "high": 9611.85, - "low": 9467.4, - "previousClose": 9608.8, - "yearHigh": 9794.65, - "yearLow": 4755.25, - "indicativeClose": 0, - "pe": "332.51", - "pb": "17.76", - "dy": "1.02", - "declines": "23", - "advances": "7", - "unchanged": "0", - "perChange365d": 42.91, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-IND-DIGITAL.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 4.65, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-IND-DIGITAL.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-IND-DIGITAL.svg", - "previousDay": 9538.6, - "oneWeekAgo": 9073.2, - "oneMonthAgo": 9181.85, - "oneYearAgo": 6723.75 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY100 ESG", - "indexSymbol": "NIFTY100 ESG", - "last": 4749.95, - "variation": -57.1, - "percentChange": -1.19, - "open": 4811.65, - "high": 4825.55, - "low": 4740.4, - "previousClose": 4807.05, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "23.74", - "pb": "4.16", - "dy": "1.23", - "declines": "66", - "advances": "27", - "unchanged": "0", - "perChange365d": 25.63, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY100-ESG.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.74, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY100-ESG.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY100-ESG.svg", - "previousDay": 4779.95, - "oneWeekAgo": 4623.2, - "oneMonthAgo": 4842.9, - "oneYearAgo": 3826.35 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INDIA MANUFACTURING", - "indexSymbol": "NIFTY INDIA MFG", - "last": 13946.1, - "variation": -97.45, - "percentChange": -0.69, - "open": 14065.7, - "high": 14109.45, - "low": 13920.75, - "previousClose": 14043.55, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "29.77", - "pb": "4.44", - "dy": "1.15", - "declines": "53", - "advances": "24", - "unchanged": "0", - "perChange365d": 38.57, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-INDIA-MFG.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": -1.71, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-INDIA-MFG.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-INDIA-MFG.svg", - "previousDay": 13973.1, - "oneWeekAgo": 13634.15, - "oneMonthAgo": 14287.2, - "oneYearAgo": 10134.65 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INDIA CORPORATE GROUP INDEX - TATA GROUP 25% CAP", - "indexSymbol": "NIFTY TATA 25 CAP", - "last": 16495.5, - "variation": -245.15, - "percentChange": -1.46, - "open": 16714.6, - "high": 16763.7, - "low": 16466.9, - "previousClose": 16740.65, - "yearHigh": 18764.95, - "yearLow": 9887.45, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "declines": "9", - "advances": "1", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.98, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-TATA-25-CAP.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-TATA-25-CAP.svg", - "previousDay": 16720.5, - "oneWeekAgo": 16108.5, - "oneMonthAgo": 16906.2 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY500 MULTICAP INDIA MANUFACTURING 50:30:20", - "indexSymbol": "NIFTY MULTI MFG", - "last": 14663.55, - "variation": -129.35, - "percentChange": -0.87, - "open": 14802.9, - "high": 14841.55, - "low": 14638.4, - "previousClose": 14792.9, - "yearHigh": 16253.65, - "yearLow": 8394.35, - "indicativeClose": 0, - "pe": "31.23", - "pb": "3.92", - "dy": "0.88", - "declines": "50", - "advances": "25", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.83, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MULTI-MFG.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MULTI-MFG.svg", - "previousDay": 14745.6, - "oneWeekAgo": 14330.7, - "oneMonthAgo": 14916.55 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY500 MULTICAP INFRASTRUCTURE 50:30:20", - "indexSymbol": "NIFTY MULTI INFRA", - "last": 13652.7, - "variation": -76, - "percentChange": -0.55, - "open": 13742, - "high": 13815, - "low": 13626.7, - "previousClose": 13728.7, - "yearHigh": 15154.1, - "yearLow": 8010.1, - "indicativeClose": 0, - "pe": "30.69", - "pb": "3.88", - "dy": "1.17", - "declines": "42", - "advances": "33", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": -0.09, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-MULTI-INFRA.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-MULTI-INFRA.svg", - "previousDay": 13636.2, - "oneWeekAgo": 13165, - "oneMonthAgo": 13740.45 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INDIA DEFENCE", - "indexSymbol": "NIFTY IND DEFENCE", - "last": 6702.1, - "variation": 107.9, - "percentChange": 1.64, - "open": 6642.1, - "high": 6744.8, - "low": 6623.6, - "previousClose": 6594.2, - "yearHigh": 8302.05, - "yearLow": 3374.95, - "indicativeClose": 0, - "pe": "51.73", - "pb": "12.51", - "dy": "0.5", - "declines": "4", - "advances": "12", - "unchanged": "0", - "perChange365d": 83.26, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-IND-DEFENCE.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 8.31, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-IND-DEFENCE.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-IND-DEFENCE.svg", - "previousDay": 6384.9, - "oneWeekAgo": 5992.35, - "oneMonthAgo": 6088.47, - "oneYearAgo": 3598.31 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY INDIA TOURISM", - "indexSymbol": "NIFTY IND TOURISM", - "last": 8593.8, - "variation": 0.2, - "percentChange": 0, - "open": 8610.45, - "high": 8663.1, - "low": 8569.65, - "previousClose": 8593.6, - "yearHigh": 9211.9, - "yearLow": 6058.05, - "indicativeClose": 0, - "pe": "68.43", - "pb": "17.95", - "dy": "0.2", - "declines": "6", - "advances": "8", - "unchanged": "1", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 7.67, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-IND-TOURISM.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-IND-TOURISM.svg", - "previousDay": 8542.35, - "oneWeekAgo": 8261.9, - "oneMonthAgo": 7981.77 - }, - { - "key": "THEMATIC INDICES", - "index": "NIFTY CAPITAL MARKETS", - "indexSymbol": "NIFTY CAPITAL MKT", - "last": 3737.85, - "variation": 8.1, - "percentChange": 0.22, - "open": 3752.55, - "high": 3783.6, - "low": 3720.45, - "previousClose": 3729.75, - "yearHigh": 3875.55, - "yearLow": 2009.6, - "indicativeClose": 0, - "pe": "43.32", - "pb": "13.63", - "dy": "0.93", - "declines": "9", - "advances": "6", - "unchanged": "0", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "28-Oct-2024", - "perChange30d": 3.94, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-CAPITAL-MKT.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-CAPITAL-MKT.svg", - "previousDay": 3690.9, - "oneWeekAgo": 3665.45, - "oneMonthAgo": 3588.44 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY 8-13 YR G-SEC", - "indexSymbol": "NIFTY GS 8 13YR", - "last": 2741.66, - "variation": 1.71, - "percentChange": 0.06, - "open": 2740.47, - "high": 2743.35, - "low": 2740.46, - "previousClose": 2739.95, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 9.99, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-8-13YR.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.62, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-8-13YR.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-8-13YR.svg", - "previousDay": 2736.48, - "oneWeekAgo": 2729.34, - "oneMonthAgo": 2722.44, - "oneYearAgo": 2490.47 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY 10 YR BENCHMARK G-SEC", - "indexSymbol": "NIFTY GS 10YR", - "last": 2423.3, - "variation": 1.31, - "percentChange": 0.05, - "open": 2422.44, - "high": 2424.98, - "low": 2422.44, - "previousClose": 2421.99, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 9.77, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-10YR.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.55, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-10YR.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-10YR.svg", - "previousDay": 2418.67, - "oneWeekAgo": 2413.04, - "oneMonthAgo": 2408.14, - "oneYearAgo": 2205.8 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY 10 YR BENCHMARK G-SEC (CLEAN PRICE)", - "indexSymbol": "NIFTY GS 10YR CLN", - "last": 886.98, - "variation": 0.31, - "percentChange": 0.03, - "open": 886.66, - "high": 887.6, - "low": 886.66, - "previousClose": 886.67, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 2.49, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-10YR-CLN.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-10YR-CLN.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-10YR-CLN.svg", - "previousDay": 885.6, - "oneWeekAgo": 885.87, - "oneMonthAgo": 886.4, - "oneYearAgo": 864.9 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY 4-8 YR G-SEC INDEX", - "indexSymbol": "NIFTY GS 4 8YR", - "last": 2961.95, - "variation": 1.76, - "percentChange": 0.05, - "open": 2960.75, - "high": 2962.59, - "low": 2960.74, - "previousClose": 2960.19, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 9.19, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-4-8YR.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.55, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-4-8YR.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-4-8YR.svg", - "previousDay": 2958.65, - "oneWeekAgo": 2950.25, - "oneMonthAgo": 2943.73, - "oneYearAgo": 2710.72 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY 11-15 YR G-SEC INDEX", - "indexSymbol": "NIFTY GS 11 15YR", - "last": 3036.57, - "variation": 1.19, - "percentChange": 0.03, - "open": 3035.95, - "high": 3038.54, - "low": 3035.94, - "previousClose": 3035.38, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 11.42, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-11-15YR.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.48, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-11-15YR.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-11-15YR.svg", - "previousDay": 3031.03, - "oneWeekAgo": 3022.51, - "oneMonthAgo": 3020.34, - "oneYearAgo": 2723.62 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY 15 YR AND ABOVE G-SEC INDEX", - "indexSymbol": "NIFTY GS 15YRPLUS", - "last": 3350.86, - "variation": -2.86, - "percentChange": -0.08, - "open": 3354.36, - "high": 3355.83, - "low": 3350.82, - "previousClose": 3353.72, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 13.2, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-15YRPLUS.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.1, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-15YRPLUS.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-15YRPLUS.svg", - "previousDay": 3347.55, - "oneWeekAgo": 3338.22, - "oneMonthAgo": 3348.25, - "oneYearAgo": 2960.72 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY COMPOSITE G-SEC INDEX", - "indexSymbol": "NIFTY GS COMPSITE", - "last": 2837.16, - "variation": 1.41, - "percentChange": 0.05, - "open": 2836.29, - "high": 2838.89, - "low": 2836.27, - "previousClose": 2835.75, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": 10.38, - "date365dAgo": "28-Nov-2023", - "chart365dPath": "https://nsearchives.nseindia.com/365d/NIFTY-GS-COMPSITE.svg", - "date30dAgo": "28-Oct-2024", - "perChange30d": 0.53, - "chart30dPath": "https://nsearchives.nseindia.com/30d/NIFTY-GS-COMPSITE.svg", - "chartTodayPath": "https://nsearchives.nseindia.com/today/NIFTY-GS-COMPSITE.svg", - "previousDay": 2832.36, - "oneWeekAgo": 2824.87, - "oneMonthAgo": 2820.41, - "oneYearAgo": 2568.74 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY BHARAT BOND INDEX - APRIL 2025", - "indexSymbol": "BHARATBOND-APR25", - "last": 1281.18, - "variation": 0.23, - "percentChange": 0.01, - "open": 1281.22, - "high": 1281.25, - "low": 1281.18, - "previousClose": 1280.95, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "-", - "perChange30d": "-", - "chart30dPath": "-", - "chartTodayPath": "https://nsearchives.nseindia.com/today/BHARATBOND-APR25.svg", - "previousDay": 1280.69, - "oneWeekAgo": 1277.4 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY BHARAT BOND INDEX - APRIL 2030", - "indexSymbol": "BHARATBOND-APR30", - "last": 1441.02, - "variation": -0.4, - "percentChange": -0.01, - "open": 1441.47, - "high": 1441.47, - "low": 1441.02, - "previousClose": 1441.42, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "-", - "perChange30d": "-", - "chart30dPath": "-", - "chartTodayPath": "https://nsearchives.nseindia.com/today/BHARATBOND-APR30.svg", - "previousDay": 1440.6, - "oneWeekAgo": 1438.4 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY BHARAT BOND INDEX - APRIL 2031", - "indexSymbol": "BHARATBOND-APR31", - "last": 1313.77, - "variation": -0.4, - "percentChange": 0.01, - "open": 1313.77, - "high": 1313.78, - "low": 1313.77, - "previousClose": 1314.17, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "-", - "perChange30d": "-", - "chart30dPath": "-", - "chartTodayPath": "https://nsearchives.nseindia.com/today/BHARATBOND-APR31.svg", - "previousDay": 1314.02, - "oneWeekAgo": 1312.12 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY BHARAT BOND INDEX - APRIL 2032", - "indexSymbol": "BHARATBOND-APR32", - "last": 1199.34, - "variation": -1.52, - "percentChange": 0.01, - "open": 1199.34, - "high": 1199.34, - "low": 1199.34, - "previousClose": 1200.86, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "-", - "perChange30d": "-", - "chart30dPath": "-", - "chartTodayPath": "https://nsearchives.nseindia.com/today/BHARATBOND-APR32.svg", - "previousDay": 1200.99, - "oneWeekAgo": 1200.19 - }, - { - "key": "FIXED INCOME INDICES", - "index": "NIFTY BHARAT BOND INDEX - APRIL 2033", - "indexSymbol": "BHARATBOND-APR33", - "last": 1168.59, - "variation": -0.81, - "percentChange": 0.01, - "open": 1168.6, - "high": 1168.6, - "low": 1168.59, - "previousClose": 1169.4, - "yearHigh": 0, - "yearLow": 0, - "indicativeClose": 0, - "pe": "", - "pb": "", - "dy": "", - "perChange365d": "-", - "date365dAgo": "-", - "chart365dPath": "-", - "date30dAgo": "-", - "perChange30d": "-", - "chart30dPath": "-", - "chartTodayPath": "https://nsearchives.nseindia.com/today/BHARATBOND-APR33.svg", - "previousDay": 1170.47, - "oneWeekAgo": 1168.07 - } - ], - "timestamp": "28-Nov-2024 15:30", - "advances": 2382, - "declines": 3056, - "unchanged": 40, - "dates": { - "previousDay": "26-Nov-2024", - "oneWeekAgo": "21-Nov-2024", - "oneMonthAgo": "28-Oct-2024", - "oneYearAgo": "28-Nov-2023" - }, - "date30dAgo": "28-Oct-2024", - "date365dAgo": "28-Nov-2023" -} \ No newline at end of file diff --git a/utils_v2/nse/indices/master.py b/utils_v2/nse/indices/master.py deleted file mode 100644 index d8c4fab..0000000 --- a/utils_v2/nse/indices/master.py +++ /dev/null @@ -1,238 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 28th Nov., 2024 - - OBJECTIVE: - - The "Index Master" contains information about just the indices, and not the component symbols of those indices. - This script provides a way to get the data that is available on the screen on the following URL: - https://www.nseindia.com/market-data/live-market-indices - - NOTE: This method involves web scraping. It is good for proof-of-concept development, but it is recommended that - more professional data-sources be used when the product starts becoming mature. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.string import json -from utils_v2.date_time import date_time - -# NSE-related utils: -from utils_v2.nse.base import AsyncNSEBase -from utils_v2.nse.models.data.api_call import NSEApiResponse - -# To make REST-ful API calls: -import httpx - -# To work with date and time: -import datetime - -# To work with datatypes: -from typing import Any, List - -# For asynchronous activities: -import asyncio - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class NSEIndexMaster(AsyncNSEBase): - - def __init__( - self, - http_client: httpx.AsyncClient, - debug = True, - debug_prefix = "NSE (IdxMstr) | ", - debug_only_errors = True - ): - - # Pass on the initialization to the parent: - super().__init__( - base_url = r"https://www.nseindia.com/market-data/live-market-indices", - data_url = r"https://www.nseindia.com/api/allIndices", - http_client = http_client, - debug = debug, - debug_prefix = debug_prefix, - debug_only_errors = debug_only_errors - ) - - async def get_data( - self, - return_raw: bool = False, - ) -> NSEApiResponse: - - """ - To get the data of the corporate event calendar. - :param return_raw: Whether you want the raw JSON from NSE or you want it formatted. - :return: The raw or formatted event calendar data in the 'data' field of the response model. - """ - - # Make the API call: - api_response = await self.get() - - # If the API call was successful: - if api_response.httpCode in [200]: - api_response.success = True - if return_raw: api_response.data = await api_response.get_json() - else: - try: api_response.data = self.format_data( - raw_json = await api_response.get_json(), - timestamp = date_time.get_current_utc_date_time(as_string = True), - raise_exception = True - ) - except Exception as exception: - api_response.exception = exception - api_response.success = False - - # Done here: - return api_response - - @staticmethod - def format_data( - raw_json: dict, - timestamp: datetime.datetime = None, - raise_exception: bool = False - ) -> List[dict] | None: - - """ - We format the data here to be able to retrieve it properly later. - :param raw_json: The raw data as scraped from NSE. - :param timestamp: The timestamp at which the data was scraped. This shall be useful for data retrieval from the - database, later. - :param raise_exception: If set to True, any exception will be propagated. If set to False, any exception will be - suppressed internally. - :return: The formatted data if successful, else None. - """ - - # Can't do anything if the chain itself is null: - if raw_json is None: return raw_json - - # Start by assuming failure: - formatted_data = None - - # Ensure that we've got a proper timestamp: - if timestamp is None: timestamp = date_time.get_current_utc_date_time(as_string=False) - - try: - - # Format the data: - formatted_data = [ - { - "ts": timestamp, - "indexType": idx["key"], - "indexName": idx["index"], - "indexSymbol": idx["indexSymbol"], - "open": idx["open"], - "high": idx["high"], - "low": idx["low"], - "close": idx["last"], - "prevClose": idx["previousClose"], - "pctChange": idx["percentChange"], - "yearHigh": idx["yearHigh"], - "yearLow": idx["yearLow"], - "advances": idx.get("advances"), - "declines": idx.get("declines"), - "unchanged": idx.get("unchanged"), - "pctChange30d": idx["perChange30d"], - "pctChange365d": idx["perChange365d"] - } for idx in raw_json["data"] - ] - - # If something goes wrong: - except Exception as exception: - formatted_data = None - if raise_exception: raise - - # Done here: - return formatted_data - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - async def main(): - - # Create an HTTP client: - test_client = httpx.AsyncClient( - limits = httpx.Limits( - max_connections = 100, # ............ Maximum number of connections allowed in the pool. - max_keepalive_connections = 50, # ... Maximum number of connections that can be kept alive. - ), - timeout = httpx.Timeout( - connect = 2.5, # ... Shorter connection timeout. - read = 2.5, # ...... Like what EasyEcom gives. - write = 10.0, # .... Time to wait for sending data. - pool = 120.0 # ..... Time to wait for a free connection from the pool. - ) - ) - - # Create an instance of the scraper, and refresh its cookies: - my_nse = NSEIndexMaster(http_client = test_client) - - # Get and show the data: - api_response = await my_nse.get_data(return_raw = False) - print("SUMMARY:", api_response.to_markdown(), "\n---\n\n") - if api_response.success: print("INDEX MASTER:", json.to_string(api_response.data, default = str)) - - asyncio.run(main()) diff --git a/utils_v2/nse/models/__init__.py b/utils_v2/nse/models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/nse/models/data/__init__.py b/utils_v2/nse/models/data/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/nse/models/data/api_call.py b/utils_v2/nse/models/data/api_call.py deleted file mode 100644 index cf2fee4..0000000 --- a/utils_v2/nse/models/data/api_call.py +++ /dev/null @@ -1,130 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Wednesday, 30th Oct., 2024. - - OBJECTIVE: - - To provide a data model for describing the API response from Google's APIs. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For making data behaviour_models: -from pydantic import BaseModel, Field, field_validator, model_validator -from typing import Optional, Literal, Union, Dict, List, Any - -# My utils: -from utils_v2.string import json -from utils_v2.string import regex - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class NSEApiResponse(BaseModel): - - action: str = Field(frozen = True, default = None) - - url: str = Field(frozen = True) - method: str = Field(frozen = True) - response: Any = None - httpCode: int = None - - success: bool = False - message: str = None - data: Any = None - - exception: Any = None - - # ┏┓ ┏• - # ┃ ┏┓┏┓╋┓┏┓ - # ┗┛┗┛┛┗┛┗┗┫ - # ┛ - - class Config: - extra = "forbid" - - # ┏┓ ┏┓ - # ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏ - # ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛ - - def to_markdown(self): - if self.exception: message = "❌ *NSE API EXCEPTION:* ❌\n\n" - else: message = "*NSE API RESPONSE:*\n\n" - message += f"*ACTION:*\n`{self.action}`\n\n" - message += f"*URL:*\n`{self.url}`\n\n" - message += f"*METHOD:*\n`{self.method}`\n\n" - message += f"*RESPONSE:*\n`{self.response}`\n\n" - message += f"*MESSAGE:*\n`{self.message}`\n\n" - message += f"*EXCEPTION:*\n`{self.exception.__class__.__name__}: {str(self.exception)}`\n\n" - return message - - async def get_json(self): - try: return self.response.json() - except: return {} - - async def get_content(self): - try: return self.response.content - except: return b"" - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/nse/options/__init__.py b/utils_v2/nse/options/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/nse/options/examples/20241122_raw_nse_nifty_option_chain.json b/utils_v2/nse/options/examples/20241122_raw_nse_nifty_option_chain.json deleted file mode 100644 index 79194de..0000000 --- a/utils_v2/nse/options/examples/20241122_raw_nse_nifty_option_chain.json +++ /dev/null @@ -1,40750 +0,0 @@ -{ - "records": { - "expiryDates": [ - "28-Nov-2024", - "05-Dec-2024", - "12-Dec-2024", - "19-Dec-2024", - "26-Dec-2024", - "02-Jan-2025", - "30-Jan-2025", - "27-Mar-2025", - "26-Jun-2025", - "25-Sep-2025", - "24-Dec-2025", - "25-Jun-2026", - "31-Dec-2026", - "24-Jun-2027", - "30-Dec-2027", - "29-Jun-2028", - "28-Dec-2028", - "28-Jun-2029" - ], - "data": [ - { - "strikePrice": 12000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 12000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE12000.00", - "openInterest": 20, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 12000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 12000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE12000.00", - "openInterest": 32, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 13000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 13000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE13000.00", - "openInterest": 9, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 13000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 13000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE13000.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 21.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 13000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 13000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE13000.00", - "openInterest": 6, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 21.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 14000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 14000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE14000.00", - "openInterest": 13994, - "changeinOpenInterest": -129, - "pchangeinOpenInterest": -0.913403667775968, - "totalTradedVolume": 420, - "impliedVolatility": 63.28, - "lastPrice": 2.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 62150, - "totalSellQuantity": 22800, - "bidQty": 1125, - "bidprice": 2.5, - "askQty": 600, - "askPrice": 3.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 14000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE14000.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 9805.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2800, - "bidQty": 900, - "bidprice": 9016.3, - "askQty": 25, - "askPrice": 10222.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 14000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 14000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE14000.00", - "openInterest": 83, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 200, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 20.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 14000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 14000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE14000.00", - "openInterest": 37, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 200, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 20.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 14000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 14000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE14000.00", - "openInterest": 47, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.3, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 500, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 20.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 15000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 15000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE15000.00", - "openInterest": 3367, - "changeinOpenInterest": 22, - "pchangeinOpenInterest": 0.657698056801196, - "totalTradedVolume": 823, - "impliedVolatility": 56.61, - "lastPrice": 2.9, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 64550, - "totalSellQuantity": 13625, - "bidQty": 1800, - "bidprice": 2.8, - "askQty": 525, - "askPrice": 3.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 15000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE15000.00", - "openInterest": 602, - "changeinOpenInterest": -7, - "pchangeinOpenInterest": -1.14942528735632, - "totalTradedVolume": 10, - "impliedVolatility": 0, - "lastPrice": 8891.7, - "change": 441.700000000001, - "pChange": 5.22721893491125, - "totalBuyQuantity": 2800, - "totalSellQuantity": 1125, - "bidQty": 25, - "bidprice": 8933.05, - "askQty": 125, - "askPrice": 9241.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 15000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 15000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE15000.00", - "openInterest": 69, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 200, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 20.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 15000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 15000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE15000.00", - "openInterest": 47, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 20.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 15000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 15000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE15000.00", - "openInterest": 34, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 21.9, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 200, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 20.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 15000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 15000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE15000.00", - "openInterest": 86, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 21.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 700, - "totalSellQuantity": 0, - "bidQty": 450, - "bidprice": 21.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 15000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 15000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE15000.00", - "openInterest": 14, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 37.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 200, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 23.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 16000, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 16000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE16000.00", - "openInterest": 13252, - "changeinOpenInterest": -1998, - "pchangeinOpenInterest": -13.1016393442623, - "totalTradedVolume": 2388, - "impliedVolatility": 0, - "lastPrice": 7934, - "change": 518.2, - "pChange": 6.98778284203997, - "totalBuyQuantity": 6300, - "totalSellQuantity": 3425, - "bidQty": 250, - "bidprice": 7939.45, - "askQty": 25, - "askPrice": 7976.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 16000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE16000.00", - "openInterest": 6418, - "changeinOpenInterest": -970, - "pchangeinOpenInterest": -13.1293990254467, - "totalTradedVolume": 3435, - "impliedVolatility": 51.08, - "lastPrice": 3.95, - "change": 0.15, - "pChange": 3.94736842105264, - "totalBuyQuantity": 71825, - "totalSellQuantity": 19450, - "bidQty": 150, - "bidprice": 3.75, - "askQty": 200, - "askPrice": 4.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 16000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 16000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE16000.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 275, - "totalSellQuantity": 0, - "bidQty": 275, - "bidprice": 20.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 16000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 16000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE16000.00", - "openInterest": 86, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.25, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 275, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 20.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 16000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 16000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE16000.00", - "openInterest": 20, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 32.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 200, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 21.9, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 16000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 16000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE16000.00", - "openInterest": 96, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 58.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1000, - "totalSellQuantity": 0, - "bidQty": 450, - "bidprice": 24.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 16500, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 16500, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE16500.00", - "openInterest": 104, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 22.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 21, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 17000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 17000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE17000.00", - "openInterest": 7046, - "changeinOpenInterest": 24, - "pchangeinOpenInterest": 0.341782967815437, - "totalTradedVolume": 1311, - "impliedVolatility": 45.55, - "lastPrice": 5.25, - "change": -0.9, - "pChange": -14.6341463414634, - "totalBuyQuantity": 38450, - "totalSellQuantity": 15375, - "bidQty": 125, - "bidprice": 5.05, - "askQty": 175, - "askPrice": 5.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 17000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE17000.00", - "openInterest": 996, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.100300902708124, - "totalTradedVolume": 9, - "impliedVolatility": 0, - "lastPrice": 6993.2, - "change": 548.2, - "pChange": 8.50581846392552, - "totalBuyQuantity": 3750, - "totalSellQuantity": 1775, - "bidQty": 50, - "bidprice": 6940.3, - "askQty": 25, - "askPrice": 7010.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 17000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 17000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE17000.00", - "openInterest": 117, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 20.85, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1375, - "totalSellQuantity": 25, - "bidQty": 450, - "bidprice": 22.15, - "askQty": 25, - "askPrice": 30, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 17000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE17000.00", - "openInterest": 25, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 8340, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 17000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 17000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE17000.00", - "openInterest": 120, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 66.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1250, - "totalSellQuantity": 50, - "bidQty": 700, - "bidprice": 31.15, - "askQty": 50, - "askPrice": 169.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 17000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 17000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE17000.00", - "openInterest": 568, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 90, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 35.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 18000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE18000.00", - "openInterest": 17142, - "changeinOpenInterest": -1000, - "pchangeinOpenInterest": -5.51207143644582, - "totalTradedVolume": 4259, - "impliedVolatility": 39.39, - "lastPrice": 6, - "change": -1.9, - "pChange": -24.0506329113924, - "totalBuyQuantity": 63800, - "totalSellQuantity": 21775, - "bidQty": 725, - "bidprice": 6, - "askQty": 25, - "askPrice": 6.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 18000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE18000.00", - "openInterest": 2273, - "changeinOpenInterest": -82, - "pchangeinOpenInterest": -3.48195329087049, - "totalTradedVolume": 103, - "impliedVolatility": 0, - "lastPrice": 5942.55, - "change": 494.95, - "pChange": 9.085652397386, - "totalBuyQuantity": 4100, - "totalSellQuantity": 4950, - "bidQty": 25, - "bidprice": 5956.7, - "askQty": 125, - "askPrice": 6177.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 18000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE18000.00", - "openInterest": 106, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 25.9, - "lastPrice": 20.05, - "change": -8.4, - "pChange": -29.5254833040422, - "totalBuyQuantity": 14050, - "totalSellQuantity": 0, - "bidQty": 575, - "bidprice": 20.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 18000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE18000.00", - "openInterest": 12, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 110.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 500, - "totalSellQuantity": 0, - "bidQty": 200, - "bidprice": 21.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 18000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE18000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 18000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE18000.00", - "openInterest": 119, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 123.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 225, - "totalSellQuantity": 25, - "bidQty": 200, - "bidprice": 27.85, - "askQty": 25, - "askPrice": 70, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 18000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE18000.00", - "openInterest": 266, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0.377358490566038, - "totalTradedVolume": 4, - "impliedVolatility": 0, - "lastPrice": 6600, - "change": 331.4, - "pChange": 5.286666879367, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 18000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE18000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 32.55, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 18000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE18000.00", - "openInterest": 211, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 135.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1050, - "totalSellQuantity": 0, - "bidQty": 500, - "bidprice": 46.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 18000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE18000.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 264.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 46.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 18000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE18000.00", - "openInterest": 404, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 169, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 500, - "totalSellQuantity": 0, - "bidQty": 500, - "bidprice": 51.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 18000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE18000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 18000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE18000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 18000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE18000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 18500, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 18500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE18500.00", - "openInterest": 42, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 5199, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4500, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 19000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE19000.00", - "openInterest": 24778, - "changeinOpenInterest": -211, - "pchangeinOpenInterest": -0.844371523470327, - "totalTradedVolume": 6231, - "impliedVolatility": 33.74, - "lastPrice": 7.5, - "change": -2.15, - "pChange": -22.279792746114, - "totalBuyQuantity": 46850, - "totalSellQuantity": 19050, - "bidQty": 725, - "bidprice": 7.5, - "askQty": 275, - "askPrice": 8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 19000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE19000.00", - "openInterest": 3548, - "changeinOpenInterest": -67, - "pchangeinOpenInterest": -1.85338865836791, - "totalTradedVolume": 187, - "impliedVolatility": 0, - "lastPrice": 4942.2, - "change": 478.4, - "pChange": 10.7173260450737, - "totalBuyQuantity": 4050, - "totalSellQuantity": 3900, - "bidQty": 25, - "bidprice": 4971.65, - "askQty": 100, - "askPrice": 5091.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 19000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE19000.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 26.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 11725, - "totalSellQuantity": 375, - "bidQty": 3600, - "bidprice": 20.8, - "askQty": 100, - "askPrice": 29.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 19000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE19000.00", - "openInterest": 24017, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 68.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1525, - "totalSellQuantity": 150, - "bidQty": 975, - "bidprice": 26, - "askQty": 25, - "askPrice": 75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 19000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE19000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 29.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 19000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE19000.00", - "openInterest": 407, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 80, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 850, - "totalSellQuantity": 275, - "bidQty": 550, - "bidprice": 43.95, - "askQty": 250, - "askPrice": 152.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 19000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE19000.00", - "openInterest": 129, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 5315.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4585.4, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 19000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE19000.00", - "openInterest": 7, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 160.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 550, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 51.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 19000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE19000.00", - "openInterest": 97, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 234.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1450, - "totalSellQuantity": 0, - "bidQty": 700, - "bidprice": 78.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 19000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE19000.00", - "openInterest": 21, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 201.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 450, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 74.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 19000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE19000.00", - "openInterest": 31, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 204.7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 82.95, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 19000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE19000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 87.8, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 19000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE19000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 90.2, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 19000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE19000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 90.55, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 19500, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 19500, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE19500.00", - "openInterest": 67, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 6000, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 125, - "totalSellQuantity": 0, - "bidQty": 75, - "bidprice": 4250, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 20000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE20000.00", - "openInterest": 11927, - "changeinOpenInterest": 124, - "pchangeinOpenInterest": 1.05058036092519, - "totalTradedVolume": 792, - "impliedVolatility": 0, - "lastPrice": 3985.95, - "change": 511.95, - "pChange": 14.7366148531952, - "totalBuyQuantity": 4350, - "totalSellQuantity": 3825, - "bidQty": 25, - "bidprice": 3996.55, - "askQty": 25, - "askPrice": 4026.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 20000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE20000.00", - "openInterest": 76692, - "changeinOpenInterest": 1170, - "pchangeinOpenInterest": 1.54921744657186, - "totalTradedVolume": 23492, - "impliedVolatility": 28.44, - "lastPrice": 10.25, - "change": -3.8, - "pChange": -27.0462633451957, - "totalBuyQuantity": 164925, - "totalSellQuantity": 20950, - "bidQty": 875, - "bidprice": 10.25, - "askQty": 250, - "askPrice": 10.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 20000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE20000.00", - "openInterest": 3159, - "changeinOpenInterest": 47, - "pchangeinOpenInterest": 1.51028277634961, - "totalTradedVolume": 160, - "impliedVolatility": 0, - "lastPrice": 4261.1, - "change": 446.900000000001, - "pChange": 11.7167426983378, - "totalBuyQuantity": 175, - "totalSellQuantity": 800, - "bidQty": 50, - "bidprice": 4255.4, - "askQty": 50, - "askPrice": 4316.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 20000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE20000.00", - "openInterest": 10630, - "changeinOpenInterest": 358, - "pchangeinOpenInterest": 3.48520249221184, - "totalTradedVolume": 1508, - "impliedVolatility": 21.21, - "lastPrice": 47.1, - "change": -8.45, - "pChange": -15.2115211521152, - "totalBuyQuantity": 30625, - "totalSellQuantity": 9475, - "bidQty": 25, - "bidprice": 47.15, - "askQty": 150, - "askPrice": 48.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 20000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE20000.00", - "openInterest": 18294, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 99, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1075, - "totalSellQuantity": 25, - "bidQty": 500, - "bidprice": 44.4, - "askQty": 25, - "askPrice": 99, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 20000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE20000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 50, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 20000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE20000.00", - "openInterest": 183, - "changeinOpenInterest": -5, - "pchangeinOpenInterest": -2.65957446808511, - "totalTradedVolume": 14, - "impliedVolatility": 0, - "lastPrice": 5057.25, - "change": 399.55, - "pChange": 8.57826824398309, - "totalBuyQuantity": 300, - "totalSellQuantity": 50, - "bidQty": 25, - "bidprice": 5035.25, - "askQty": 25, - "askPrice": 5152.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 20000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE20000.00", - "openInterest": 1489, - "changeinOpenInterest": -7, - "pchangeinOpenInterest": -0.467914438502674, - "totalTradedVolume": 184, - "impliedVolatility": 20.27, - "lastPrice": 175, - "change": -28.8, - "pChange": -14.1315014720314, - "totalBuyQuantity": 6125, - "totalSellQuantity": 3575, - "bidQty": 75, - "bidprice": 166, - "askQty": 200, - "askPrice": 175, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 20000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE20000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 550, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 96.7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 20000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE20000.00", - "openInterest": 172, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.578034682080925, - "totalTradedVolume": 1, - "impliedVolatility": 19.74, - "lastPrice": 225, - "change": 42, - "pChange": 22.9508196721311, - "totalBuyQuantity": 850, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 230.25, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 20000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE20000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 136.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 20000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE20000.00", - "openInterest": 106, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 311.25, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 144.8, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 20000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE20000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 400, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 147.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 20000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE20000.00", - "openInterest": 62, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 405, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 575, - "totalSellQuantity": 525, - "bidQty": 550, - "bidprice": 145.35, - "askQty": 25, - "askPrice": 750, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 20000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 20000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE20000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 325, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 144.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 21000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21000.00", - "openInterest": 24062, - "changeinOpenInterest": 70, - "pchangeinOpenInterest": 0.291763921307102, - "totalTradedVolume": 831, - "impliedVolatility": 0, - "lastPrice": 3015.05, - "change": 509.4, - "pChange": 20.3300540777842, - "totalBuyQuantity": 6850, - "totalSellQuantity": 6550, - "bidQty": 25, - "bidprice": 3005.95, - "askQty": 25, - "askPrice": 3066.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21000.00", - "openInterest": 100131, - "changeinOpenInterest": -1955, - "pchangeinOpenInterest": -1.91505201496777, - "totalTradedVolume": 53009, - "impliedVolatility": 23.96, - "lastPrice": 18, - "change": -9.55, - "pChange": -34.6642468239565, - "totalBuyQuantity": 55750, - "totalSellQuantity": 32775, - "bidQty": 25, - "bidprice": 17.65, - "askQty": 1500, - "askPrice": 18.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 21000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE21000.00", - "openInterest": 610, - "changeinOpenInterest": 46, - "pchangeinOpenInterest": 8.15602836879433, - "totalTradedVolume": 77, - "impliedVolatility": 0, - "lastPrice": 3360, - "change": 458.75, - "pChange": 15.8121499353727, - "totalBuyQuantity": 700, - "totalSellQuantity": 975, - "bidQty": 25, - "bidprice": 3331.1, - "askQty": 25, - "askPrice": 3384.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE21000.00", - "openInterest": 13678, - "changeinOpenInterest": 140, - "pchangeinOpenInterest": 1.03412616339193, - "totalTradedVolume": 4670, - "impliedVolatility": 18.65, - "lastPrice": 70.15, - "change": -22.75, - "pChange": -24.4886975242196, - "totalBuyQuantity": 24225, - "totalSellQuantity": 12625, - "bidQty": 50, - "bidprice": 71.1, - "askQty": 25, - "askPrice": 72.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 21000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE21000.00", - "openInterest": 1123, - "changeinOpenInterest": 54, - "pchangeinOpenInterest": 5.05144995322732, - "totalTradedVolume": 200, - "impliedVolatility": 18.54, - "lastPrice": 134, - "change": -25.6, - "pChange": -16.0401002506266, - "totalBuyQuantity": 2050, - "totalSellQuantity": 3525, - "bidQty": 25, - "bidprice": 134, - "askQty": 675, - "askPrice": 134.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 21000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE21000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 112.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 21000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE21000.00", - "openInterest": 1223, - "changeinOpenInterest": 3, - "pchangeinOpenInterest": 0.245901639344262, - "totalTradedVolume": 170, - "impliedVolatility": 19.47, - "lastPrice": 254, - "change": -38.9, - "pChange": -13.2809832707409, - "totalBuyQuantity": 3975, - "totalSellQuantity": 1400, - "bidQty": 25, - "bidprice": 250, - "askQty": 325, - "askPrice": 254, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE21000.00", - "openInterest": 15, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 4148, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4001, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 21000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE21000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 550, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 191.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 21000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE21000.00", - "openInterest": 28, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 333.65, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 800, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 222.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 21000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE21000.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 500, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 233.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 21000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE21000.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 582.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 237.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 21000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE21000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 234.85, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 21000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE21000.00", - "openInterest": 49, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 490, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 25, - "bidQty": 250, - "bidprice": 228.8, - "askQty": 25, - "askPrice": 990, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 21000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE21000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 220.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21600.00", - "openInterest": 170799, - "changeinOpenInterest": 170799, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1251412, - "impliedVolatility": 32.5, - "lastPrice": 2.05, - "change": -12.35, - "pChange": -85.7638888888889, - "totalBuyQuantity": 1114350, - "totalSellQuantity": 99125, - "bidQty": 475, - "bidprice": 2.05, - "askQty": 1050, - "askPrice": 2.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2164.8, - "askQty": 1000, - "askPrice": 2433.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 21600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21600.00", - "openInterest": 1518, - "changeinOpenInterest": 1518, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8968, - "impliedVolatility": 25.96, - "lastPrice": 6.35, - "change": 2.5, - "pChange": 64.9350649350649, - "totalBuyQuantity": 24975, - "totalSellQuantity": 5300, - "bidQty": 1350, - "bidprice": 4.85, - "askQty": 1350, - "askPrice": 6.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2074.85, - "askQty": 1000, - "askPrice": 2602.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 11025, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 6.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21600, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5675, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 21600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1943.9, - "askQty": 1000, - "askPrice": 2637.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21600.00", - "openInterest": 1725, - "changeinOpenInterest": 1725, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 7762, - "impliedVolatility": 21.28, - "lastPrice": 26.45, - "change": 23.65, - "pChange": 844.642857142857, - "totalBuyQuantity": 14625, - "totalSellQuantity": 1975, - "bidQty": 125, - "bidprice": 23.8, - "askQty": 1800, - "askPrice": 27.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21600, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6900, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21600, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 21600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 925, - "totalSellQuantity": 50, - "bidQty": 900, - "bidprice": 41.5, - "askQty": 50, - "askPrice": 65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 2091.8, - "askQty": 1775, - "askPrice": 2878.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2117.25, - "askQty": 1000, - "askPrice": 2382.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21650.00", - "openInterest": 27527, - "changeinOpenInterest": 27527, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 352050, - "impliedVolatility": 32.29, - "lastPrice": 2.3, - "change": -13.25, - "pChange": -85.2090032154341, - "totalBuyQuantity": 127825, - "totalSellQuantity": 31150, - "bidQty": 600, - "bidprice": 2.2, - "askQty": 1500, - "askPrice": 2.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 21650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21650.00", - "openInterest": 158, - "changeinOpenInterest": 158, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 461, - "impliedVolatility": 25.52, - "lastPrice": 6.45, - "change": 2.05, - "pChange": 46.5909090909091, - "totalBuyQuantity": 17775, - "totalSellQuantity": 4000, - "bidQty": 50, - "bidprice": 5.35, - "askQty": 200, - "askPrice": 6.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2250, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2040.5, - "askQty": 1000, - "askPrice": 2549.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 14075, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 8.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21650, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4650, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 21650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1000, - "totalSellQuantity": 2775, - "bidQty": 1000, - "bidprice": 1936.2, - "askQty": 1000, - "askPrice": 2613, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21650.00", - "openInterest": 117, - "changeinOpenInterest": 117, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 990, - "impliedVolatility": 21.28, - "lastPrice": 28.9, - "change": 25.8, - "pChange": 832.258064516129, - "totalBuyQuantity": 13175, - "totalSellQuantity": 0, - "bidQty": 1500, - "bidprice": 23, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21650, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6225, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 12, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 2045.65, - "askQty": 1775, - "askPrice": 2823.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21650.00", - "openInterest": 346, - "changeinOpenInterest": 346, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 365, - "impliedVolatility": 18.32, - "lastPrice": 54.75, - "change": 12.9, - "pChange": 30.8243727598566, - "totalBuyQuantity": 900, - "totalSellQuantity": 2225, - "bidQty": 900, - "bidprice": 39.5, - "askQty": 50, - "askPrice": 68.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21700.00", - "openInterest": 318402, - "changeinOpenInterest": 56264, - "pchangeinOpenInterest": 21.4635039559316, - "totalTradedVolume": 969104, - "impliedVolatility": 32.11, - "lastPrice": 2.6, - "change": -1.65, - "pChange": -38.8235294117647, - "totalBuyQuantity": 1143850, - "totalSellQuantity": 111500, - "bidQty": 2100, - "bidprice": 2.5, - "askQty": 1200, - "askPrice": 2.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21700.00", - "openInterest": 9, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 0, - "lastPrice": 2235, - "change": 545, - "pChange": 32.2485207100592, - "totalBuyQuantity": 5550, - "totalSellQuantity": 5550, - "bidQty": 225, - "bidprice": 2142.9, - "askQty": 75, - "askPrice": 2241.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 21700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21700.00", - "openInterest": 2902, - "changeinOpenInterest": 1434, - "pchangeinOpenInterest": 97.6839237057221, - "totalTradedVolume": 11868, - "impliedVolatility": 25.38, - "lastPrice": 7.1, - "change": -3.6, - "pChange": -33.6448598130841, - "totalBuyQuantity": 37925, - "totalSellQuantity": 6250, - "bidQty": 250, - "bidprice": 7.15, - "askQty": 1350, - "askPrice": 7.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21700.00", - "openInterest": 14, - "changeinOpenInterest": 8, - "pchangeinOpenInterest": 133.333333333333, - "totalTradedVolume": 8, - "impliedVolatility": 0, - "lastPrice": 2035, - "change": 335, - "pChange": 19.7058823529412, - "totalBuyQuantity": 3300, - "totalSellQuantity": 3175, - "bidQty": 150, - "bidprice": 2218.75, - "askQty": 150, - "askPrice": 2393.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21700.00", - "openInterest": 212, - "changeinOpenInterest": 111, - "pchangeinOpenInterest": 109.90099009901, - "totalTradedVolume": 301, - "impliedVolatility": 22.86, - "lastPrice": 13, - "change": -9.75, - "pChange": -42.8571428571429, - "totalBuyQuantity": 27350, - "totalSellQuantity": 825, - "bidQty": 100, - "bidprice": 12, - "askQty": 125, - "askPrice": 16.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21700, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21700.00", - "openInterest": 15, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 34.75, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8875, - "totalSellQuantity": 25, - "bidQty": 750, - "bidprice": 10.4, - "askQty": 25, - "askPrice": 27.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 21700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 425, - "bidprice": 1991.45, - "askQty": 1775, - "askPrice": 2547.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 10800, - "totalSellQuantity": 0, - "bidQty": 400, - "bidprice": 26.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21700, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4500, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 17, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1974.25, - "askQty": 1775, - "askPrice": 2779.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2300, - "totalSellQuantity": 300, - "bidQty": 200, - "bidprice": 44.6, - "askQty": 300, - "askPrice": 95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2041.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 1919.5, - "askQty": 1000, - "askPrice": 2250.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21750.00", - "openInterest": 52721, - "changeinOpenInterest": 16931, - "pchangeinOpenInterest": 47.3065101983794, - "totalTradedVolume": 185028, - "impliedVolatility": 31.66, - "lastPrice": 2.75, - "change": -1.8, - "pChange": -39.5604395604396, - "totalBuyQuantity": 132800, - "totalSellQuantity": 19900, - "bidQty": 50, - "bidprice": 2.65, - "askQty": 275, - "askPrice": 2.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 21750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1944.45, - "askQty": 1000, - "askPrice": 2448.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21750.00", - "openInterest": 135, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -1.45985401459854, - "totalTradedVolume": 1349, - "impliedVolatility": 25.08, - "lastPrice": 7.5, - "change": -7.5, - "pChange": -50, - "totalBuyQuantity": 30525, - "totalSellQuantity": 2075, - "bidQty": 275, - "bidprice": 5.7, - "askQty": 275, - "askPrice": 7.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 16900, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 11.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21750, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21750.00", - "openInterest": 16, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 33.3333333333333, - "totalTradedVolume": 5, - "impliedVolatility": 21.34, - "lastPrice": 20.95, - "change": -11.3, - "pChange": -35.0387596899225, - "totalBuyQuantity": 9125, - "totalSellQuantity": 25, - "bidQty": 25, - "bidprice": 20, - "askQty": 25, - "askPrice": 29.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 21750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1425, - "totalSellQuantity": 3675, - "bidQty": 425, - "bidprice": 1955.9, - "askQty": 900, - "askPrice": 2494.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21750.00", - "openInterest": 428, - "changeinOpenInterest": -300, - "pchangeinOpenInterest": -41.2087912087912, - "totalTradedVolume": 3005, - "impliedVolatility": 20.9, - "lastPrice": 31.45, - "change": -21.65, - "pChange": -40.7721280602637, - "totalBuyQuantity": 11600, - "totalSellQuantity": 2700, - "bidQty": 25, - "bidprice": 30, - "askQty": 1000, - "askPrice": 46.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21750, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 16, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1925.25, - "askQty": 1775, - "askPrice": 2723.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 225, - "totalSellQuantity": 325, - "bidQty": 225, - "bidprice": 46.5, - "askQty": 325, - "askPrice": 71.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21800.00", - "openInterest": 146752, - "changeinOpenInterest": 30088, - "pchangeinOpenInterest": 25.7903037783721, - "totalTradedVolume": 456356, - "impliedVolatility": 31.13, - "lastPrice": 2.85, - "change": -1.75, - "pChange": -38.0434782608696, - "totalBuyQuantity": 224200, - "totalSellQuantity": 35350, - "bidQty": 750, - "bidprice": 2.75, - "askQty": 5075, - "askPrice": 3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21800.00", - "openInterest": 17, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 0, - "lastPrice": 2070, - "change": 500, - "pChange": 31.8471337579618, - "totalBuyQuantity": 5525, - "totalSellQuantity": 5300, - "bidQty": 225, - "bidprice": 2057.3, - "askQty": 150, - "askPrice": 2115.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 21800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1899.05, - "askQty": 1000, - "askPrice": 2383.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21800.00", - "openInterest": 2387, - "changeinOpenInterest": 851, - "pchangeinOpenInterest": 55.4036458333333, - "totalTradedVolume": 10637, - "impliedVolatility": 25, - "lastPrice": 8.4, - "change": -5.1, - "pChange": -37.7777777777778, - "totalBuyQuantity": 41075, - "totalSellQuantity": 3700, - "bidQty": 25, - "bidprice": 7.4, - "askQty": 1350, - "askPrice": 8.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 19050, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 11.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21800, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8050, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 13.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 21800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21800.00", - "openInterest": 6182, - "changeinOpenInterest": 1026, - "pchangeinOpenInterest": 19.8991466252909, - "totalTradedVolume": 17250, - "impliedVolatility": 20.6, - "lastPrice": 32, - "change": -23.5, - "pChange": -42.3423423423423, - "totalBuyQuantity": 8150, - "totalSellQuantity": 4150, - "bidQty": 250, - "bidprice": 33, - "askQty": 75, - "askPrice": 40.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21800.00", - "openInterest": 43, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1735, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2975, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1911.7, - "askQty": 900, - "askPrice": 2408, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21800, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6300, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 16, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2325, - "totalSellQuantity": 2200, - "bidQty": 550, - "bidprice": 1951.45, - "askQty": 1775, - "askPrice": 2925.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21800.00", - "openInterest": 1766, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.0565930956423316, - "totalTradedVolume": 1366, - "impliedVolatility": 18.14, - "lastPrice": 64, - "change": -32.65, - "pChange": -33.781686497672, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3775, - "bidQty": 25, - "bidprice": 63.05, - "askQty": 150, - "askPrice": 64.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21850.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1510.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 1823.7, - "askQty": 625, - "askPrice": 2113.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21850.00", - "openInterest": 29719, - "changeinOpenInterest": 6317, - "pchangeinOpenInterest": 26.9934193658662, - "totalTradedVolume": 115146, - "impliedVolatility": 30.53, - "lastPrice": 2.9, - "change": -1.9, - "pChange": -39.5833333333333, - "totalBuyQuantity": 129275, - "totalSellQuantity": 13625, - "bidQty": 600, - "bidprice": 2.7, - "askQty": 625, - "askPrice": 3.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 21850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21850.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 17, - "change": 0.399999999999999, - "pChange": 2.40963855421686, - "totalBuyQuantity": 22925, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 7.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 525, - "totalSellQuantity": 2775, - "bidQty": 525, - "bidprice": 1780.2, - "askQty": 1000, - "askPrice": 2349.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 16200, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 10.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21850, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8700, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 11, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 21850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21850.00", - "openInterest": 190, - "changeinOpenInterest": -136, - "pchangeinOpenInterest": -41.7177914110429, - "totalTradedVolume": 211, - "impliedVolatility": 20.67, - "lastPrice": 35.45, - "change": -24.6, - "pChange": -40.9658617818485, - "totalBuyQuantity": 7775, - "totalSellQuantity": 3825, - "bidQty": 900, - "bidprice": 27.05, - "askQty": 150, - "askPrice": 46, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21850.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1822.9, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1895.95, - "askQty": 900, - "askPrice": 2384.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21850, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6150, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 16, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1873.7, - "askQty": 1775, - "askPrice": 2624.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21850.00", - "openInterest": 81, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 87.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5025, - "totalSellQuantity": 900, - "bidQty": 25, - "bidprice": 60, - "askQty": 900, - "askPrice": 90.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21900.00", - "openInterest": 6, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 200, - "totalTradedVolume": 5, - "impliedVolatility": 0, - "lastPrice": 1972.15, - "change": 512.15, - "pChange": 35.0787671232877, - "totalBuyQuantity": 5450, - "totalSellQuantity": 5275, - "bidQty": 100, - "bidprice": 1987.55, - "askQty": 900, - "askPrice": 2055.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21900.00", - "openInterest": 64241, - "changeinOpenInterest": 19322, - "pchangeinOpenInterest": 43.0152051470425, - "totalTradedVolume": 284141, - "impliedVolatility": 30.11, - "lastPrice": 3.1, - "change": -2.3, - "pChange": -42.5925925925926, - "totalBuyQuantity": 115200, - "totalSellQuantity": 17000, - "bidQty": 125, - "bidprice": 3.1, - "askQty": 625, - "askPrice": 3.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 21900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 525, - "totalSellQuantity": 2775, - "bidQty": 525, - "bidprice": 1748.55, - "askQty": 1000, - "askPrice": 2293.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21900.00", - "openInterest": 509, - "changeinOpenInterest": 409, - "pchangeinOpenInterest": 409, - "totalTradedVolume": 4187, - "impliedVolatility": 24.2, - "lastPrice": 8.9, - "change": -5.25, - "pChange": -37.1024734982332, - "totalBuyQuantity": 41275, - "totalSellQuantity": 5200, - "bidQty": 225, - "bidprice": 8.75, - "askQty": 525, - "askPrice": 10.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 15175, - "totalSellQuantity": 0, - "bidQty": 700, - "bidprice": 12.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21900, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8725, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 12, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 21900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21900.00", - "openInterest": 17, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1654, - "change": -0.25, - "pChange": -0.0151125887864591, - "totalBuyQuantity": 3200, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1815.15, - "askQty": 1775, - "askPrice": 2355.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21900.00", - "openInterest": 4772, - "changeinOpenInterest": 2397, - "pchangeinOpenInterest": 100.926315789474, - "totalTradedVolume": 8329, - "impliedVolatility": 20.48, - "lastPrice": 37, - "change": -25.35, - "pChange": -40.6575781876504, - "totalBuyQuantity": 14925, - "totalSellQuantity": 1075, - "bidQty": 50, - "bidprice": 29.05, - "askQty": 50, - "askPrice": 42, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21900, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8400, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 16, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2650, - "totalSellQuantity": 2350, - "bidQty": 875, - "bidprice": 1901.15, - "askQty": 1775, - "askPrice": 2653.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21900.00", - "openInterest": 1131, - "changeinOpenInterest": 87, - "pchangeinOpenInterest": 8.33333333333333, - "totalTradedVolume": 267, - "impliedVolatility": 17.86, - "lastPrice": 68.4, - "change": -34.75, - "pChange": -33.6888027144935, - "totalBuyQuantity": 3825, - "totalSellQuantity": 2675, - "bidQty": 50, - "bidprice": 62.1, - "askQty": 50, - "askPrice": 89.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21950.00", - "openInterest": 13536, - "changeinOpenInterest": 705, - "pchangeinOpenInterest": 5.49450549450549, - "totalTradedVolume": 90336, - "impliedVolatility": 29.62, - "lastPrice": 3.25, - "change": -2.5, - "pChange": -43.4782608695652, - "totalBuyQuantity": 105275, - "totalSellQuantity": 17425, - "bidQty": 750, - "bidprice": 2.8, - "askQty": 625, - "askPrice": 3.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21950.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1534.8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 625, - "bidprice": 1879.35, - "askQty": 1000, - "askPrice": 2008.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 21950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE21950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1718.6, - "askQty": 1000, - "askPrice": 2281.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE21950.00", - "openInterest": 224, - "changeinOpenInterest": 30, - "pchangeinOpenInterest": 15.4639175257732, - "totalTradedVolume": 926, - "impliedVolatility": 24.11, - "lastPrice": 9.95, - "change": -7.25, - "pChange": -42.1511627906977, - "totalBuyQuantity": 49225, - "totalSellQuantity": 3050, - "bidQty": 1000, - "bidprice": 8.5, - "askQty": 275, - "askPrice": 11.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 21950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE21950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13550, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 13.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 21950, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE21950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8700, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 10.4, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 21950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE21950.00", - "openInterest": 305, - "changeinOpenInterest": 104, - "pchangeinOpenInterest": 51.7412935323383, - "totalTradedVolume": 425, - "impliedVolatility": 20.31, - "lastPrice": 38.8, - "change": -26.55, - "pChange": -40.6273909716909, - "totalBuyQuantity": 8600, - "totalSellQuantity": 3050, - "bidQty": 75, - "bidprice": 30, - "askQty": 275, - "askPrice": 46.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE21950.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1729.3, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1769.95, - "askQty": 900, - "askPrice": 2438.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 21950, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE21950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9150, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 10.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 21950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE21950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1784.05, - "askQty": 1775, - "askPrice": 2522.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE21950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1425, - "totalSellQuantity": 200, - "bidQty": 25, - "bidprice": 65.45, - "askQty": 100, - "askPrice": 114.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22000.00", - "openInterest": 1560, - "changeinOpenInterest": -130, - "pchangeinOpenInterest": -7.69230769230769, - "totalTradedVolume": 1067, - "impliedVolatility": 0, - "lastPrice": 1895.65, - "change": 544.55, - "pChange": 40.304196580564, - "totalBuyQuantity": 7450, - "totalSellQuantity": 7000, - "bidQty": 75, - "bidprice": 1899.65, - "askQty": 250, - "askPrice": 1911.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22000.00", - "openInterest": 229969, - "changeinOpenInterest": 64138, - "pchangeinOpenInterest": 38.6767250996496, - "totalTradedVolume": 1098157, - "impliedVolatility": 29.28, - "lastPrice": 3.55, - "change": -3.05, - "pChange": -46.2121212121212, - "totalBuyQuantity": 1458850, - "totalSellQuantity": 117150, - "bidQty": 225, - "bidprice": 3.5, - "askQty": 325, - "askPrice": 3.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22000.00", - "openInterest": 17787, - "changeinOpenInterest": 8738, - "pchangeinOpenInterest": 96.5631561498508, - "totalTradedVolume": 57165, - "impliedVolatility": 23.72, - "lastPrice": 10.3, - "change": -9.3, - "pChange": -47.4489795918367, - "totalBuyQuantity": 126150, - "totalSellQuantity": 27625, - "bidQty": 1050, - "bidprice": 10.3, - "askQty": 75, - "askPrice": 10.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22000.00", - "openInterest": 21, - "changeinOpenInterest": 6, - "pchangeinOpenInterest": 40, - "totalTradedVolume": 30, - "impliedVolatility": 0, - "lastPrice": 1978, - "change": 567.95, - "pChange": 40.2787135207971, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3600, - "bidQty": 200, - "bidprice": 1783.95, - "askQty": 25, - "askPrice": 1979.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22000, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22000.00", - "openInterest": 1370, - "changeinOpenInterest": 643, - "pchangeinOpenInterest": 88.4456671251719, - "totalTradedVolume": 3039, - "impliedVolatility": 21.33, - "lastPrice": 17.35, - "change": -17.5, - "pChange": -50.2152080344333, - "totalBuyQuantity": 30250, - "totalSellQuantity": 1950, - "bidQty": 250, - "bidprice": 17.35, - "askQty": 50, - "askPrice": 22.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22000, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8700, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 15.7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22000.00", - "openInterest": 22609, - "changeinOpenInterest": 1199, - "pchangeinOpenInterest": 5.60018682858477, - "totalTradedVolume": 3062, - "impliedVolatility": 0, - "lastPrice": 2050.65, - "change": 500.7, - "pChange": 32.304267879609, - "totalBuyQuantity": 6525, - "totalSellQuantity": 7925, - "bidQty": 250, - "bidprice": 2053.45, - "askQty": 125, - "askPrice": 2075.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22000.00", - "openInterest": 147496, - "changeinOpenInterest": 7497, - "pchangeinOpenInterest": 5.35503825027322, - "totalTradedVolume": 116297, - "impliedVolatility": 20.05, - "lastPrice": 39.95, - "change": -29.6, - "pChange": -42.5593098490295, - "totalBuyQuantity": 59950, - "totalSellQuantity": 47300, - "bidQty": 50, - "bidprice": 39.95, - "askQty": 50, - "askPrice": 41.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22000, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 16050, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 17, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22000.00", - "openInterest": 124, - "changeinOpenInterest": 47, - "pchangeinOpenInterest": 61.038961038961, - "totalTradedVolume": 80, - "impliedVolatility": 0, - "lastPrice": 2200, - "change": 459.8, - "pChange": 26.4222503160556, - "totalBuyQuantity": 3825, - "totalSellQuantity": 3625, - "bidQty": 650, - "bidprice": 2217.1, - "askQty": 25, - "askPrice": 2250, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22000.00", - "openInterest": 13819, - "changeinOpenInterest": 4458, - "pchangeinOpenInterest": 47.6231171883346, - "totalTradedVolume": 14779, - "impliedVolatility": 17.75, - "lastPrice": 76.05, - "change": -41.45, - "pChange": -35.2765957446809, - "totalBuyQuantity": 18350, - "totalSellQuantity": 5350, - "bidQty": 200, - "bidprice": 76, - "askQty": 325, - "askPrice": 77, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 22000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE22000.00", - "openInterest": 7057, - "changeinOpenInterest": 253, - "pchangeinOpenInterest": 3.71840094062316, - "totalTradedVolume": 2129, - "impliedVolatility": 0, - "lastPrice": 2456.3, - "change": 414.05, - "pChange": 20.2742073693231, - "totalBuyQuantity": 13150, - "totalSellQuantity": 1575, - "bidQty": 675, - "bidprice": 2446.25, - "askQty": 25, - "askPrice": 2492.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE22000.00", - "openInterest": 31818, - "changeinOpenInterest": -1297, - "pchangeinOpenInterest": -3.91665408425185, - "totalTradedVolume": 11366, - "impliedVolatility": 17.23, - "lastPrice": 137, - "change": -50.1, - "pChange": -26.7771245323356, - "totalBuyQuantity": 26950, - "totalSellQuantity": 10000, - "bidQty": 25, - "bidprice": 135.2, - "askQty": 300, - "askPrice": 141.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 22000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE22000.00", - "openInterest": 5827, - "changeinOpenInterest": 174, - "pchangeinOpenInterest": 3.0780116752167, - "totalTradedVolume": 868, - "impliedVolatility": 17.46, - "lastPrice": 222, - "change": -55.15, - "pChange": -19.8989716759877, - "totalBuyQuantity": 3650, - "totalSellQuantity": 2200, - "bidQty": 25, - "bidprice": 217.2, - "askQty": 25, - "askPrice": 226.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 22000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE22000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 125.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 22000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE22000.00", - "openInterest": 9789, - "changeinOpenInterest": 374, - "pchangeinOpenInterest": 3.97238449283059, - "totalTradedVolume": 986, - "impliedVolatility": 18.83, - "lastPrice": 370, - "change": -75.4, - "pChange": -16.9286035024697, - "totalBuyQuantity": 4100, - "totalSellQuantity": 3625, - "bidQty": 900, - "bidprice": 366.25, - "askQty": 950, - "askPrice": 370, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE22000.00", - "openInterest": 139, - "changeinOpenInterest": 24, - "pchangeinOpenInterest": 20.8695652173913, - "totalTradedVolume": 27, - "impliedVolatility": 0, - "lastPrice": 3553.6, - "change": 378.6, - "pChange": 11.9244094488189, - "totalBuyQuantity": 75, - "totalSellQuantity": 775, - "bidQty": 50, - "bidprice": 3534.85, - "askQty": 25, - "askPrice": 3550, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 22000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE22000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 550, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 346.95, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 22000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE22000.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 374.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 800, - "totalSellQuantity": 75, - "bidQty": 250, - "bidprice": 373.7, - "askQty": 75, - "askPrice": 595, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 22000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE22000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 275, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 376.2, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 22000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE22000.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 329, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 369.4, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 22000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE22000.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 520.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 356.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 22000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE22000.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 446.15, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 340.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 22000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE22000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 322.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22050.00", - "openInterest": 8676, - "changeinOpenInterest": -823, - "pchangeinOpenInterest": -8.66406990209496, - "totalTradedVolume": 166227, - "impliedVolatility": 28.54, - "lastPrice": 3.5, - "change": -3.6, - "pChange": -50.7042253521127, - "totalBuyQuantity": 104050, - "totalSellQuantity": 11450, - "bidQty": 225, - "bidprice": 3.45, - "askQty": 1250, - "askPrice": 3.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22050.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1483.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 1797.55, - "askQty": 625, - "askPrice": 1906.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 2775, - "bidprice": 1653.95, - "askQty": 1000, - "askPrice": 2164.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22050.00", - "openInterest": 291, - "changeinOpenInterest": 88, - "pchangeinOpenInterest": 43.3497536945813, - "totalTradedVolume": 1169, - "impliedVolatility": 23.18, - "lastPrice": 10.25, - "change": -11.1, - "pChange": -51.9906323185012, - "totalBuyQuantity": 48475, - "totalSellQuantity": 3175, - "bidQty": 400, - "bidprice": 9.55, - "askQty": 400, - "askPrice": 12.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22050, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22050.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 21.44, - "lastPrice": 20, - "change": 10, - "pChange": 100, - "totalBuyQuantity": 14325, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 16, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22050, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9700, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 11.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8100, - "totalSellQuantity": 200, - "bidQty": 600, - "bidprice": 37.1, - "askQty": 200, - "askPrice": 61, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22050.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1636.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 2775, - "bidQty": 425, - "bidprice": 1731.35, - "askQty": 1000, - "askPrice": 2094.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22050, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5100, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 17.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2650, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1700.75, - "askQty": 1775, - "askPrice": 2419.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1600, - "totalSellQuantity": 200, - "bidQty": 300, - "bidprice": 51.15, - "askQty": 100, - "askPrice": 137.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22100.00", - "openInterest": 83, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 2.46913580246914, - "totalTradedVolume": 5, - "impliedVolatility": 0, - "lastPrice": 1809.7, - "change": 535, - "pChange": 41.9706597630815, - "totalBuyQuantity": 5700, - "totalSellQuantity": 5950, - "bidQty": 225, - "bidprice": 1749.5, - "askQty": 50, - "askPrice": 1823.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22100.00", - "openInterest": 40647, - "changeinOpenInterest": 20424, - "pchangeinOpenInterest": 100.993917816348, - "totalTradedVolume": 390397, - "impliedVolatility": 27.9, - "lastPrice": 3.55, - "change": -4.4, - "pChange": -55.3459119496855, - "totalBuyQuantity": 172575, - "totalSellQuantity": 12225, - "bidQty": 200, - "bidprice": 3.55, - "askQty": 625, - "askPrice": 3.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22100.00", - "openInterest": 587, - "changeinOpenInterest": 413, - "pchangeinOpenInterest": 237.35632183908, - "totalTradedVolume": 3524, - "impliedVolatility": 22.96, - "lastPrice": 11.1, - "change": -10.45, - "pChange": -48.491879350348, - "totalBuyQuantity": 46025, - "totalSellQuantity": 1875, - "bidQty": 600, - "bidprice": 10.65, - "askQty": 525, - "askPrice": 14.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 2775, - "bidprice": 1622.6, - "askQty": 1000, - "askPrice": 2071.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22100, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13675, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 16.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22100, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9475, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 20.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8675, - "totalSellQuantity": 200, - "bidQty": 600, - "bidprice": 38, - "askQty": 200, - "askPrice": 60, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22100.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1575.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 0, - "bidQty": 425, - "bidprice": 1676.4, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22100, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5100, - "totalSellQuantity": 150, - "bidQty": 150, - "bidprice": 45.85, - "askQty": 150, - "askPrice": 145, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22100.00", - "openInterest": 548, - "changeinOpenInterest": 31, - "pchangeinOpenInterest": 5.99613152804642, - "totalTradedVolume": 75, - "impliedVolatility": 17.41, - "lastPrice": 80.35, - "change": -48.4, - "pChange": -37.5922330097087, - "totalBuyQuantity": 7800, - "totalSellQuantity": 100, - "bidQty": 100, - "bidprice": 63.6, - "askQty": 100, - "askPrice": 98.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1573.6, - "askQty": 1775, - "askPrice": 2393.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22150.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1196.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4950, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 1702.75, - "askQty": 625, - "askPrice": 1805.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22150.00", - "openInterest": 12825, - "changeinOpenInterest": 3634, - "pchangeinOpenInterest": 39.5386791426395, - "totalTradedVolume": 107828, - "impliedVolatility": 27.67, - "lastPrice": 4, - "change": -4.65, - "pChange": -53.757225433526, - "totalBuyQuantity": 104825, - "totalSellQuantity": 7525, - "bidQty": 125, - "bidprice": 3.85, - "askQty": 1125, - "askPrice": 4.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22150.00", - "openInterest": 581, - "changeinOpenInterest": 93, - "pchangeinOpenInterest": 19.0573770491803, - "totalTradedVolume": 2939, - "impliedVolatility": 22.85, - "lastPrice": 12.35, - "change": -11.4, - "pChange": -48, - "totalBuyQuantity": 31150, - "totalSellQuantity": 3575, - "bidQty": 525, - "bidprice": 10.6, - "askQty": 525, - "askPrice": 24.05, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 2775, - "bidprice": 1591.3, - "askQty": 1775, - "askPrice": 2073.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13200, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 16.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22150, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8700, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 13, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22150.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1544.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3250, - "totalSellQuantity": 3100, - "bidQty": 475, - "bidprice": 1632.6, - "askQty": 325, - "askPrice": 2071.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22150.00", - "openInterest": 146, - "changeinOpenInterest": -80, - "pchangeinOpenInterest": -35.3982300884956, - "totalTradedVolume": 587, - "impliedVolatility": 18.93, - "lastPrice": 40.35, - "change": -39.25, - "pChange": -49.3090452261307, - "totalBuyQuantity": 6150, - "totalSellQuantity": 1275, - "bidQty": 25, - "bidprice": 40, - "askQty": 900, - "askPrice": 58.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22150, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5475, - "totalSellQuantity": 0, - "bidQty": 225, - "bidprice": 26.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22150.00", - "openInterest": 538, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -0.738007380073801, - "totalTradedVolume": 157, - "impliedVolatility": 16.77, - "lastPrice": 74.65, - "change": -59.35, - "pChange": -44.2910447761194, - "totalBuyQuantity": 950, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 50.15, - "askQty": 425, - "askPrice": 112.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1654.4, - "askQty": 1775, - "askPrice": 2402.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22200.00", - "openInterest": 111586, - "changeinOpenInterest": 52617, - "pchangeinOpenInterest": 89.2282385660262, - "totalTradedVolume": 710783, - "impliedVolatility": 26.92, - "lastPrice": 3.95, - "change": -5.6, - "pChange": -58.6387434554974, - "totalBuyQuantity": 114975, - "totalSellQuantity": 28875, - "bidQty": 50, - "bidprice": 3.95, - "askQty": 1125, - "askPrice": 4.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22200.00", - "openInterest": 42, - "changeinOpenInterest": 3, - "pchangeinOpenInterest": 7.69230769230769, - "totalTradedVolume": 4, - "impliedVolatility": 0, - "lastPrice": 1530, - "change": 368.9, - "pChange": 31.7715959004392, - "totalBuyQuantity": 5600, - "totalSellQuantity": 5950, - "bidQty": 75, - "bidprice": 1698.3, - "askQty": 100, - "askPrice": 1719.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 625, - "totalSellQuantity": 2775, - "bidQty": 625, - "bidprice": 1560.2, - "askQty": 1775, - "askPrice": 2015.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22200.00", - "openInterest": 2713, - "changeinOpenInterest": 219, - "pchangeinOpenInterest": 8.78107457898958, - "totalTradedVolume": 19485, - "impliedVolatility": 22.57, - "lastPrice": 13.2, - "change": -12.9, - "pChange": -49.4252873563218, - "totalBuyQuantity": 51425, - "totalSellQuantity": 4325, - "bidQty": 300, - "bidprice": 12.8, - "askQty": 650, - "askPrice": 16.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 12325, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 17, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22200, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7300, - "totalSellQuantity": 150, - "bidQty": 100, - "bidprice": 17.25, - "askQty": 150, - "askPrice": 83.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22200.00", - "openInterest": 6706, - "changeinOpenInterest": 531, - "pchangeinOpenInterest": 8.59919028340081, - "totalTradedVolume": 20049, - "impliedVolatility": 19.35, - "lastPrice": 48.35, - "change": -35.85, - "pChange": -42.5771971496437, - "totalBuyQuantity": 6325, - "totalSellQuantity": 3500, - "bidQty": 50, - "bidprice": 44.6, - "askQty": 100, - "askPrice": 55.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22200.00", - "openInterest": 8, - "changeinOpenInterest": 3, - "pchangeinOpenInterest": 60, - "totalTradedVolume": 3, - "impliedVolatility": 0, - "lastPrice": 1570, - "change": 70.3499999999999, - "pChange": 4.69109458873737, - "totalBuyQuantity": 3750, - "totalSellQuantity": 4725, - "bidQty": 75, - "bidprice": 1820.75, - "askQty": 75, - "askPrice": 1949.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22200, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22200.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 21.39, - "lastPrice": 93.9, - "change": 4.45, - "pChange": 4.97484628283958, - "totalBuyQuantity": 6900, - "totalSellQuantity": 375, - "bidQty": 150, - "bidprice": 26.1, - "askQty": 75, - "askPrice": 128.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 2675, - "bidQty": 1775, - "bidprice": 1486.15, - "askQty": 1775, - "askPrice": 2454.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22200.00", - "openInterest": 1249, - "changeinOpenInterest": 71, - "pchangeinOpenInterest": 6.02716468590832, - "totalTradedVolume": 589, - "impliedVolatility": 17.33, - "lastPrice": 89.85, - "change": -47.4, - "pChange": -34.5355191256831, - "totalBuyQuantity": 2225, - "totalSellQuantity": 425, - "bidQty": 25, - "bidprice": 75, - "askQty": 25, - "askPrice": 110.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22250.00", - "openInterest": 23354, - "changeinOpenInterest": 7360, - "pchangeinOpenInterest": 46.0172564711767, - "totalTradedVolume": 165455, - "impliedVolatility": 26.72, - "lastPrice": 4.5, - "change": -6.25, - "pChange": -58.1395348837209, - "totalBuyQuantity": 169450, - "totalSellQuantity": 24125, - "bidQty": 250, - "bidprice": 4.45, - "askQty": 525, - "askPrice": 4.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22250.00", - "openInterest": 10, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1290.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 1502.3, - "askQty": 1000, - "askPrice": 1716.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 600, - "totalSellQuantity": 2775, - "bidQty": 600, - "bidprice": 1528.95, - "askQty": 1000, - "askPrice": 1949.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22250.00", - "openInterest": 865, - "changeinOpenInterest": 185, - "pchangeinOpenInterest": 27.2058823529412, - "totalTradedVolume": 2604, - "impliedVolatility": 22.34, - "lastPrice": 14.25, - "change": -12.15, - "pChange": -46.0227272727273, - "totalBuyQuantity": 32300, - "totalSellQuantity": 3750, - "bidQty": 525, - "bidprice": 12.05, - "askQty": 525, - "askPrice": 21.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 22250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 14150, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 18.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22250, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8750, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 27.7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22250.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1454.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3300, - "totalSellQuantity": 2775, - "bidQty": 525, - "bidprice": 1540.5, - "askQty": 1000, - "askPrice": 1934.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22250.00", - "openInterest": 317, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 86.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 950, - "totalSellQuantity": 1850, - "bidQty": 50, - "bidprice": 42.5, - "askQty": 900, - "askPrice": 58.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22250, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3900, - "totalSellQuantity": 0, - "bidQty": 150, - "bidprice": 25.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22250.00", - "openInterest": 66, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 125.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1175, - "totalSellQuantity": 1800, - "bidQty": 25, - "bidprice": 88, - "askQty": 1800, - "askPrice": 136.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22250.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1685, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1550.9, - "askQty": 1775, - "askPrice": 2216.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22300.00", - "openInterest": 142, - "changeinOpenInterest": 10, - "pchangeinOpenInterest": 7.57575757575758, - "totalTradedVolume": 45, - "impliedVolatility": 0, - "lastPrice": 1600, - "change": 538.15, - "pChange": 50.6804162546499, - "totalBuyQuantity": 5825, - "totalSellQuantity": 6050, - "bidQty": 275, - "bidprice": 1600.05, - "askQty": 900, - "askPrice": 1656.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22300.00", - "openInterest": 82519, - "changeinOpenInterest": 19315, - "pchangeinOpenInterest": 30.5597746978039, - "totalTradedVolume": 616706, - "impliedVolatility": 26.29, - "lastPrice": 4.85, - "change": -7.4, - "pChange": -60.4081632653061, - "totalBuyQuantity": 105100, - "totalSellQuantity": 25525, - "bidQty": 100, - "bidprice": 4.55, - "askQty": 1100, - "askPrice": 4.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22300.00", - "openInterest": 4, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 4, - "impliedVolatility": 0, - "lastPrice": 1435, - "change": -869.55, - "pChange": -37.7318782408713, - "totalBuyQuantity": 2875, - "totalSellQuantity": 2925, - "bidQty": 100, - "bidprice": 1635.9, - "askQty": 150, - "askPrice": 1809, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22300.00", - "openInterest": 4054, - "changeinOpenInterest": 1138, - "pchangeinOpenInterest": 39.0260631001372, - "totalTradedVolume": 25803, - "impliedVolatility": 22.34, - "lastPrice": 16.3, - "change": -15.2, - "pChange": -48.2539682539682, - "totalBuyQuantity": 45450, - "totalSellQuantity": 1525, - "bidQty": 1350, - "bidprice": 13.25, - "askQty": 1350, - "askPrice": 17.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22300.00", - "openInterest": 283, - "changeinOpenInterest": 259, - "pchangeinOpenInterest": 1079.16666666667, - "totalTradedVolume": 552, - "impliedVolatility": 20.36, - "lastPrice": 27.05, - "change": -26.5, - "pChange": -49.4864612511671, - "totalBuyQuantity": 14775, - "totalSellQuantity": 125, - "bidQty": 50, - "bidprice": 25, - "askQty": 25, - "askPrice": 31.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22300, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 11250, - "totalSellQuantity": 100, - "bidQty": 600, - "bidprice": 18.5, - "askQty": 100, - "askPrice": 97.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22300.00", - "openInterest": 9371, - "changeinOpenInterest": -185, - "pchangeinOpenInterest": -1.93595646714106, - "totalTradedVolume": 14959, - "impliedVolatility": 18.89, - "lastPrice": 52, - "change": -41.15, - "pChange": -44.1760601180891, - "totalBuyQuantity": 5000, - "totalSellQuantity": 3850, - "bidQty": 2525, - "bidprice": 50, - "askQty": 425, - "askPrice": 52, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22300.00", - "openInterest": 142, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1292.7, - "change": 1.54999999999995, - "pChange": 0.12004801920768, - "totalBuyQuantity": 4575, - "totalSellQuantity": 4575, - "bidQty": 900, - "bidprice": 1693.85, - "askQty": 900, - "askPrice": 1847.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22300, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3750, - "totalSellQuantity": 0, - "bidQty": 150, - "bidprice": 25.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22300.00", - "openInterest": 3096, - "changeinOpenInterest": 298, - "pchangeinOpenInterest": 10.650464617584, - "totalTradedVolume": 1234, - "impliedVolatility": 16.93, - "lastPrice": 93.95, - "change": -54.4, - "pChange": -36.670037074486, - "totalBuyQuantity": 925, - "totalSellQuantity": 3925, - "bidQty": 625, - "bidprice": 85.1, - "askQty": 1800, - "askPrice": 108.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2650, - "totalSellQuantity": 2675, - "bidQty": 1775, - "bidprice": 1389.3, - "askQty": 1775, - "askPrice": 2352.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22350.00", - "openInterest": 9141, - "changeinOpenInterest": -1037, - "pchangeinOpenInterest": -10.1886421693849, - "totalTradedVolume": 191795, - "impliedVolatility": 26.31, - "lastPrice": 5.85, - "change": -7.9, - "pChange": -57.4545454545455, - "totalBuyQuantity": 86650, - "totalSellQuantity": 18975, - "bidQty": 1175, - "bidprice": 5, - "askQty": 1125, - "askPrice": 5.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22350.00", - "openInterest": 6, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 0, - "lastPrice": 1444.15, - "change": 424.65, - "pChange": 41.6527709661599, - "totalBuyQuantity": 5050, - "totalSellQuantity": 5025, - "bidQty": 100, - "bidprice": 1537.8, - "askQty": 100, - "askPrice": 1571.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 2775, - "bidQty": 0, - "bidprice": 0, - "askQty": 1000, - "askPrice": 1841.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22350.00", - "openInterest": 3150, - "changeinOpenInterest": 2784, - "pchangeinOpenInterest": 760.655737704918, - "totalTradedVolume": 9295, - "impliedVolatility": 22.38, - "lastPrice": 18.75, - "change": -15.9, - "pChange": -45.8874458874459, - "totalBuyQuantity": 25775, - "totalSellQuantity": 1850, - "bidQty": 775, - "bidprice": 14.1, - "askQty": 775, - "askPrice": 29.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22350.00", - "openInterest": 40, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 49.15, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 15950, - "totalSellQuantity": 25, - "bidQty": 600, - "bidprice": 26.15, - "askQty": 25, - "askPrice": 49.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22350, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5725, - "totalSellQuantity": 100, - "bidQty": 25, - "bidprice": 30.55, - "askQty": 100, - "askPrice": 114.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22350.00", - "openInterest": 352, - "changeinOpenInterest": 106, - "pchangeinOpenInterest": 43.0894308943089, - "totalTradedVolume": 673, - "impliedVolatility": 18.75, - "lastPrice": 55.05, - "change": -43.4, - "pChange": -44.0832910106653, - "totalBuyQuantity": 4350, - "totalSellQuantity": 1950, - "bidQty": 25, - "bidprice": 50, - "askQty": 150, - "askPrice": 70.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22350.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1364.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 3675, - "bidQty": 425, - "bidprice": 1447.4, - "askQty": 900, - "askPrice": 1886.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22350, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3075, - "totalSellQuantity": 0, - "bidQty": 225, - "bidprice": 30.6, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1414.1, - "askQty": 1775, - "askPrice": 2137, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22350.00", - "openInterest": 40, - "changeinOpenInterest": -30, - "pchangeinOpenInterest": -42.8571428571429, - "totalTradedVolume": 34, - "impliedVolatility": 16.87, - "lastPrice": 99, - "change": -36.7, - "pChange": -27.0449521002211, - "totalBuyQuantity": 4400, - "totalSellQuantity": 375, - "bidQty": 900, - "bidprice": 83.15, - "askQty": 250, - "askPrice": 165, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22400.00", - "openInterest": 82588, - "changeinOpenInterest": 31251, - "pchangeinOpenInterest": 60.8742232697664, - "totalTradedVolume": 699939, - "impliedVolatility": 25.2, - "lastPrice": 5.3, - "change": -10.3, - "pChange": -66.025641025641, - "totalBuyQuantity": 83525, - "totalSellQuantity": 36175, - "bidQty": 250, - "bidprice": 5.3, - "askQty": 1150, - "askPrice": 6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22400.00", - "openInterest": 210, - "changeinOpenInterest": 33, - "pchangeinOpenInterest": 18.6440677966102, - "totalTradedVolume": 222, - "impliedVolatility": 0, - "lastPrice": 1476.45, - "change": 513.8, - "pChange": 53.3735002337298, - "totalBuyQuantity": 5850, - "totalSellQuantity": 5225, - "bidQty": 150, - "bidprice": 1501.1, - "askQty": 50, - "askPrice": 1514.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22400.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1167.65, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1091.3, - "askQty": 1000, - "askPrice": 1749.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22400.00", - "openInterest": 3876, - "changeinOpenInterest": 1484, - "pchangeinOpenInterest": 62.0401337792642, - "totalTradedVolume": 27517, - "impliedVolatility": 21.83, - "lastPrice": 18.85, - "change": -18.8, - "pChange": -49.933598937583, - "totalBuyQuantity": 37150, - "totalSellQuantity": 3825, - "bidQty": 1350, - "bidprice": 15.7, - "askQty": 1800, - "askPrice": 22.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9875, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 27.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22400.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2076.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22400, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22400.00", - "openInterest": 54, - "changeinOpenInterest": 41, - "pchangeinOpenInterest": 315.384615384615, - "totalTradedVolume": 89, - "impliedVolatility": 19.33, - "lastPrice": 46.5, - "change": -26.8, - "pChange": -36.5620736698499, - "totalBuyQuantity": 10125, - "totalSellQuantity": 1125, - "bidQty": 50, - "bidprice": 43.1, - "askQty": 125, - "askPrice": 47.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22400.00", - "openInterest": 22, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1205.8, - "change": 1.89999999999986, - "pChange": 0.157820416978143, - "totalBuyQuantity": 4100, - "totalSellQuantity": 3675, - "bidQty": 425, - "bidprice": 1414.5, - "askQty": 1000, - "askPrice": 1795.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22400.00", - "openInterest": 10676, - "changeinOpenInterest": 1755, - "pchangeinOpenInterest": 19.6726824347046, - "totalTradedVolume": 22451, - "impliedVolatility": 18.81, - "lastPrice": 60.6, - "change": -44.2, - "pChange": -42.175572519084, - "totalBuyQuantity": 100, - "totalSellQuantity": 4075, - "bidQty": 25, - "bidprice": 55, - "askQty": 250, - "askPrice": 65.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22400, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2550, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 28.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22400.00", - "openInterest": 2060, - "changeinOpenInterest": 68, - "pchangeinOpenInterest": 3.4136546184739, - "totalTradedVolume": 767, - "impliedVolatility": 16.85, - "lastPrice": 104.95, - "change": -58.95, - "pChange": -35.967053081147, - "totalBuyQuantity": 400, - "totalSellQuantity": 125, - "bidQty": 100, - "bidprice": 100, - "askQty": 75, - "askPrice": 137.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 2675, - "bidQty": 1775, - "bidprice": 1369.15, - "askQty": 1775, - "askPrice": 2250.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22450.00", - "openInterest": 30606, - "changeinOpenInterest": 22246, - "pchangeinOpenInterest": 266.1004784689, - "totalTradedVolume": 303692, - "impliedVolatility": 24.72, - "lastPrice": 5.65, - "change": -11.85, - "pChange": -67.7142857142857, - "totalBuyQuantity": 92150, - "totalSellQuantity": 32950, - "bidQty": 50, - "bidprice": 5.65, - "askQty": 1000, - "askPrice": 6.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22450.00", - "openInterest": 655, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -0.30441400304414, - "totalTradedVolume": 90, - "impliedVolatility": 0, - "lastPrice": 1463.3, - "change": 543.9, - "pChange": 59.1581466173591, - "totalBuyQuantity": 5375, - "totalSellQuantity": 5325, - "bidQty": 25, - "bidprice": 1439.85, - "askQty": 75, - "askPrice": 1474.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22450.00", - "openInterest": 922, - "changeinOpenInterest": 497, - "pchangeinOpenInterest": 116.941176470588, - "totalTradedVolume": 2619, - "impliedVolatility": 21.67, - "lastPrice": 20.7, - "change": -20.85, - "pChange": -50.1805054151625, - "totalBuyQuantity": 36925, - "totalSellQuantity": 975, - "bidQty": 400, - "bidprice": 16.05, - "askQty": 400, - "askPrice": 27.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22450.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1120.7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1000, - "bidQty": 1000, - "bidprice": 1057.15, - "askQty": 1000, - "askPrice": 1676, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 12550, - "totalSellQuantity": 0, - "bidQty": 100, - "bidprice": 30.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22450, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9000, - "totalSellQuantity": 100, - "bidQty": 750, - "bidprice": 29, - "askQty": 100, - "askPrice": 99.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22450.00", - "openInterest": 334, - "changeinOpenInterest": 104, - "pchangeinOpenInterest": 45.2173913043478, - "totalTradedVolume": 574, - "impliedVolatility": 18.36, - "lastPrice": 60.3, - "change": -50.8, - "pChange": -45.7245724572457, - "totalBuyQuantity": 1875, - "totalSellQuantity": 2450, - "bidQty": 1775, - "bidprice": 41.65, - "askQty": 625, - "askPrice": 74.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22450.00", - "openInterest": 13, - "changeinOpenInterest": 9, - "pchangeinOpenInterest": 225, - "totalTradedVolume": 9, - "impliedVolatility": 0, - "lastPrice": 1607.7, - "change": 330.2, - "pChange": 25.8473581213307, - "totalBuyQuantity": 3750, - "totalSellQuantity": 3700, - "bidQty": 75, - "bidprice": 1575.35, - "askQty": 25, - "askPrice": 1708.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22450, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1950, - "totalSellQuantity": 0, - "bidQty": 450, - "bidprice": 28, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22450.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1701, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1324, - "askQty": 1775, - "askPrice": 2022.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22450.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 152.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2700, - "totalSellQuantity": 2725, - "bidQty": 800, - "bidprice": 50.2, - "askQty": 900, - "askPrice": 163.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22500.00", - "openInterest": 266048, - "changeinOpenInterest": 63660, - "pchangeinOpenInterest": 31.4544340573552, - "totalTradedVolume": 1400953, - "impliedVolatility": 24.82, - "lastPrice": 7, - "change": -13.35, - "pChange": -65.6019656019656, - "totalBuyQuantity": 908200, - "totalSellQuantity": 137075, - "bidQty": 8900, - "bidprice": 7, - "askQty": 50, - "askPrice": 7.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22500.00", - "openInterest": 17574, - "changeinOpenInterest": -2465, - "pchangeinOpenInterest": -12.301013024602, - "totalTradedVolume": 6780, - "impliedVolatility": 0, - "lastPrice": 1405, - "change": 541.8, - "pChange": 62.7664504170528, - "totalBuyQuantity": 10075, - "totalSellQuantity": 7175, - "bidQty": 50, - "bidprice": 1403.8, - "askQty": 75, - "askPrice": 1415.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22500.00", - "openInterest": 112, - "changeinOpenInterest": 35, - "pchangeinOpenInterest": 45.4545454545455, - "totalTradedVolume": 198, - "impliedVolatility": 0, - "lastPrice": 1416.75, - "change": 462.75, - "pChange": 48.5062893081761, - "totalBuyQuantity": 4300, - "totalSellQuantity": 1975, - "bidQty": 125, - "bidprice": 1320.95, - "askQty": 125, - "askPrice": 1608.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22500.00", - "openInterest": 9554, - "changeinOpenInterest": 1402, - "pchangeinOpenInterest": 17.198233562316, - "totalTradedVolume": 72997, - "impliedVolatility": 21.48, - "lastPrice": 22.6, - "change": -24, - "pChange": -51.5021459227468, - "totalBuyQuantity": 43475, - "totalSellQuantity": 7975, - "bidQty": 1800, - "bidprice": 20.05, - "askQty": 50, - "askPrice": 22.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 22500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22500.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22500.00", - "openInterest": 2208, - "changeinOpenInterest": 423, - "pchangeinOpenInterest": 23.6974789915966, - "totalTradedVolume": 11748, - "impliedVolatility": 19.36, - "lastPrice": 33.65, - "change": -37.25, - "pChange": -52.5387870239774, - "totalBuyQuantity": 13450, - "totalSellQuantity": 2575, - "bidQty": 250, - "bidprice": 32.1, - "askQty": 1375, - "askPrice": 34, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 22500, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE22500.00", - "openInterest": 0, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -100, - "totalTradedVolume": 2, - "impliedVolatility": 16.2, - "lastPrice": 1600, - "change": 500, - "pChange": 45.4545454545455, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22500, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22500.00", - "openInterest": 35, - "changeinOpenInterest": 35, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 55, - "impliedVolatility": 18.77, - "lastPrice": 50, - "change": -31, - "pChange": -38.2716049382716, - "totalBuyQuantity": 7100, - "totalSellQuantity": 1975, - "bidQty": 900, - "bidprice": 26.05, - "askQty": 25, - "askPrice": 67.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22500.00", - "openInterest": 59886, - "changeinOpenInterest": 1738, - "pchangeinOpenInterest": 2.98892481254729, - "totalTradedVolume": 112885, - "impliedVolatility": 18.21, - "lastPrice": 63.7, - "change": -56.05, - "pChange": -46.8058455114823, - "totalBuyQuantity": 17200, - "totalSellQuantity": 18825, - "bidQty": 1800, - "bidprice": 62, - "askQty": 25, - "askPrice": 66, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22500.00", - "openInterest": 4340, - "changeinOpenInterest": 196, - "pchangeinOpenInterest": 4.72972972972973, - "totalTradedVolume": 2252, - "impliedVolatility": 0, - "lastPrice": 1587.65, - "change": 475.95, - "pChange": 42.8128092111181, - "totalBuyQuantity": 5500, - "totalSellQuantity": 8950, - "bidQty": 25, - "bidprice": 1577.4, - "askQty": 250, - "askPrice": 1604.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22500, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22500.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2550, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 31, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22500.00", - "openInterest": 18168, - "changeinOpenInterest": 2896, - "pchangeinOpenInterest": 18.9628077527501, - "totalTradedVolume": 12945, - "impliedVolatility": 16.73, - "lastPrice": 116, - "change": -69.3, - "pChange": -37.3988127361036, - "totalBuyQuantity": 14375, - "totalSellQuantity": 3875, - "bidQty": 425, - "bidprice": 116, - "askQty": 125, - "askPrice": 120.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22500.00", - "openInterest": 595, - "changeinOpenInterest": 45, - "pchangeinOpenInterest": 8.18181818181818, - "totalTradedVolume": 385, - "impliedVolatility": 0, - "lastPrice": 1760.1, - "change": 411.2, - "pChange": 30.4840981540514, - "totalBuyQuantity": 4250, - "totalSellQuantity": 4300, - "bidQty": 200, - "bidprice": 1771.9, - "askQty": 225, - "askPrice": 1813.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22550.00", - "openInterest": 2978, - "changeinOpenInterest": 48, - "pchangeinOpenInterest": 1.6382252559727, - "totalTradedVolume": 171, - "impliedVolatility": 0, - "lastPrice": 1353.95, - "change": 525.55, - "pChange": 63.4415741187832, - "totalBuyQuantity": 7750, - "totalSellQuantity": 7150, - "bidQty": 150, - "bidprice": 1354.55, - "askQty": 150, - "askPrice": 1368.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22550.00", - "openInterest": 21505, - "changeinOpenInterest": 12363, - "pchangeinOpenInterest": 135.232990592868, - "totalTradedVolume": 289413, - "impliedVolatility": 24.29, - "lastPrice": 7.4, - "change": -15.75, - "pChange": -68.0345572354212, - "totalBuyQuantity": 78925, - "totalSellQuantity": 27200, - "bidQty": 25, - "bidprice": 7.65, - "askQty": 1000, - "askPrice": 8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22550.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1028.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1000, - "bidprice": 987.25, - "askQty": 1000, - "askPrice": 1590.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22550.00", - "openInterest": 1321, - "changeinOpenInterest": 1320, - "pchangeinOpenInterest": 132000, - "totalTradedVolume": 3164, - "impliedVolatility": 21.03, - "lastPrice": 23.35, - "change": 2.35, - "pChange": 11.1904761904762, - "totalBuyQuantity": 12300, - "totalSellQuantity": 3400, - "bidQty": 525, - "bidprice": 22.05, - "askQty": 525, - "askPrice": 30.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22550.00", - "openInterest": 3, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 50, - "totalTradedVolume": 5, - "impliedVolatility": 20.76, - "lastPrice": 49.55, - "change": -11.6, - "pChange": -18.9697465249387, - "totalBuyQuantity": 11850, - "totalSellQuantity": 275, - "bidQty": 900, - "bidprice": 28.15, - "askQty": 275, - "askPrice": 119.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22550, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7350, - "totalSellQuantity": 0, - "bidQty": 150, - "bidprice": 33.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22550.00", - "openInterest": 449, - "changeinOpenInterest": 136, - "pchangeinOpenInterest": 43.4504792332268, - "totalTradedVolume": 1044, - "impliedVolatility": 18.25, - "lastPrice": 69.75, - "change": -58.3, - "pChange": -45.529090199141, - "totalBuyQuantity": 1775, - "totalSellQuantity": 3650, - "bidQty": 1775, - "bidprice": 44.1, - "askQty": 900, - "askPrice": 82.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22550.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1191.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3325, - "totalSellQuantity": 3675, - "bidQty": 550, - "bidprice": 1261.2, - "askQty": 900, - "askPrice": 1776.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22550, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 21.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22550.00", - "openInterest": 45, - "changeinOpenInterest": 42, - "pchangeinOpenInterest": 1400, - "totalTradedVolume": 57, - "impliedVolatility": 16.63, - "lastPrice": 121, - "change": -63.3, - "pChange": -34.3461747151384, - "totalBuyQuantity": 3525, - "totalSellQuantity": 925, - "bidQty": 900, - "bidprice": 112.95, - "askQty": 900, - "askPrice": 154.05, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1235.05, - "askQty": 1775, - "askPrice": 1941.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22600.00", - "openInterest": 81478, - "changeinOpenInterest": 44424, - "pchangeinOpenInterest": 119.889890430183, - "totalTradedVolume": 821226, - "impliedVolatility": 24.07, - "lastPrice": 8.45, - "change": -18.15, - "pChange": -68.2330827067669, - "totalBuyQuantity": 81225, - "totalSellQuantity": 36500, - "bidQty": 1500, - "bidprice": 8.35, - "askQty": 550, - "askPrice": 8.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22600.00", - "openInterest": 669, - "changeinOpenInterest": -196, - "pchangeinOpenInterest": -22.6589595375723, - "totalTradedVolume": 1243, - "impliedVolatility": 0, - "lastPrice": 1303.5, - "change": 531.95, - "pChange": 68.9456289287797, - "totalBuyQuantity": 12050, - "totalSellQuantity": 8750, - "bidQty": 150, - "bidprice": 1306.05, - "askQty": 25, - "askPrice": 1316.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22600.00", - "openInterest": 6214, - "changeinOpenInterest": 3374, - "pchangeinOpenInterest": 118.802816901408, - "totalTradedVolume": 39956, - "impliedVolatility": 20.66, - "lastPrice": 24.55, - "change": -31.3, - "pChange": -56.0429722470904, - "totalBuyQuantity": 17600, - "totalSellQuantity": 3800, - "bidQty": 25, - "bidprice": 23, - "askQty": 25, - "askPrice": 27.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22600.00", - "openInterest": 11, - "changeinOpenInterest": 9, - "pchangeinOpenInterest": 450, - "totalTradedVolume": 43, - "impliedVolatility": 0, - "lastPrice": 1160, - "change": 176.75, - "pChange": 17.9760996694635, - "totalBuyQuantity": 2825, - "totalSellQuantity": 2825, - "bidQty": 50, - "bidprice": 1349.3, - "askQty": 50, - "askPrice": 1395.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 22600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22600.00", - "openInterest": 196, - "changeinOpenInterest": 72, - "pchangeinOpenInterest": 58.0645161290323, - "totalTradedVolume": 763, - "impliedVolatility": 19.1, - "lastPrice": 39.7, - "change": -43.55, - "pChange": -52.3123123123123, - "totalBuyQuantity": 9475, - "totalSellQuantity": 275, - "bidQty": 25, - "bidprice": 32.4, - "askQty": 25, - "askPrice": 87.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22600, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 10650, - "totalSellQuantity": 2075, - "bidQty": 900, - "bidprice": 28.15, - "askQty": 275, - "askPrice": 173.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22600.00", - "openInterest": 218, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0.925925925925926, - "totalTradedVolume": 150, - "impliedVolatility": 0, - "lastPrice": 1492.1, - "change": 456.45, - "pChange": 44.0737700960749, - "totalBuyQuantity": 5025, - "totalSellQuantity": 4150, - "bidQty": 900, - "bidprice": 1228.25, - "askQty": 100, - "askPrice": 1537.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22600.00", - "openInterest": 9486, - "changeinOpenInterest": 2419, - "pchangeinOpenInterest": 34.2295174755908, - "totalTradedVolume": 22649, - "impliedVolatility": 17.9, - "lastPrice": 70.95, - "change": -61.55, - "pChange": -46.4528301886792, - "totalBuyQuantity": 5125, - "totalSellQuantity": 6000, - "bidQty": 25, - "bidprice": 52.1, - "askQty": 25, - "askPrice": 71.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22600, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2250, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 32.95, - "askQty": 900, - "askPrice": 112.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 2175, - "bidQty": 900, - "bidprice": 1189.35, - "askQty": 1775, - "askPrice": 2053, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22600.00", - "openInterest": 891, - "changeinOpenInterest": -124, - "pchangeinOpenInterest": -12.2167487684729, - "totalTradedVolume": 480, - "impliedVolatility": 16.48, - "lastPrice": 125.1, - "change": -75.8, - "pChange": -37.7302140368343, - "totalBuyQuantity": 1650, - "totalSellQuantity": 1950, - "bidQty": 450, - "bidprice": 116.2, - "askQty": 25, - "askPrice": 139.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22650.00", - "openInterest": 470, - "changeinOpenInterest": 21, - "pchangeinOpenInterest": 4.67706013363029, - "totalTradedVolume": 177, - "impliedVolatility": 0, - "lastPrice": 1232.55, - "change": 500.95, - "pChange": 68.4732094040459, - "totalBuyQuantity": 8200, - "totalSellQuantity": 6175, - "bidQty": 50, - "bidprice": 1256.5, - "askQty": 50, - "askPrice": 1267.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22650.00", - "openInterest": 41599, - "changeinOpenInterest": 30918, - "pchangeinOpenInterest": 289.467278344724, - "totalTradedVolume": 439130, - "impliedVolatility": 23.79, - "lastPrice": 9.5, - "change": -20.9, - "pChange": -68.75, - "totalBuyQuantity": 77250, - "totalSellQuantity": 38300, - "bidQty": 1875, - "bidprice": 9.5, - "askQty": 1000, - "askPrice": 9.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22650.00", - "openInterest": 958, - "changeinOpenInterest": 220, - "pchangeinOpenInterest": 29.810298102981, - "totalTradedVolume": 4762, - "impliedVolatility": 20.57, - "lastPrice": 27.45, - "change": -34.45, - "pChange": -55.654281098546, - "totalBuyQuantity": 10850, - "totalSellQuantity": 3600, - "bidQty": 650, - "bidprice": 21.8, - "askQty": 650, - "askPrice": 35.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22650.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 938.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 892.3, - "askQty": 1000, - "askPrice": 1480.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 22650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22650.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 44.25, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9025, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 33.3, - "askQty": 900, - "askPrice": 74.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22650, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5450, - "totalSellQuantity": 0, - "bidQty": 750, - "bidprice": 32.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22650.00", - "openInterest": 2070, - "changeinOpenInterest": 691, - "pchangeinOpenInterest": 50.1087744742567, - "totalTradedVolume": 2797, - "impliedVolatility": 17.83, - "lastPrice": 76.05, - "change": -65.15, - "pChange": -46.1402266288952, - "totalBuyQuantity": 2675, - "totalSellQuantity": 700, - "bidQty": 900, - "bidprice": 52.2, - "askQty": 375, - "askPrice": 89.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22650.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1107.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1550, - "totalSellQuantity": 3675, - "bidQty": 550, - "bidprice": 1159.2, - "askQty": 1000, - "askPrice": 1555, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22650, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 375, - "totalSellQuantity": 0, - "bidQty": 375, - "bidprice": 25.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22650.00", - "openInterest": 4, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 33.3333333333333, - "totalTradedVolume": 1, - "impliedVolatility": 18.73, - "lastPrice": 190, - "change": 5.94999999999999, - "pChange": 3.23281716924748, - "totalBuyQuantity": 900, - "totalSellQuantity": 700, - "bidQty": 900, - "bidprice": 104.6, - "askQty": 650, - "askPrice": 199.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22650.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1336.7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2650, - "totalSellQuantity": 1775, - "bidQty": 875, - "bidprice": 1143.2, - "askQty": 1775, - "askPrice": 1828.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22700.00", - "openInterest": 314, - "changeinOpenInterest": -33, - "pchangeinOpenInterest": -9.51008645533141, - "totalTradedVolume": 739, - "impliedVolatility": 0, - "lastPrice": 1198.65, - "change": 518.9, - "pChange": 76.3368885619713, - "totalBuyQuantity": 8800, - "totalSellQuantity": 7875, - "bidQty": 175, - "bidprice": 1209, - "askQty": 1800, - "askPrice": 1222.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22700.00", - "openInterest": 92963, - "changeinOpenInterest": 32670, - "pchangeinOpenInterest": 54.1853946560961, - "totalTradedVolume": 982139, - "impliedVolatility": 23.63, - "lastPrice": 11, - "change": -24.1, - "pChange": -68.6609686609687, - "totalBuyQuantity": 91725, - "totalSellQuantity": 48125, - "bidQty": 50, - "bidprice": 10.5, - "askQty": 1000, - "askPrice": 10.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22700.00", - "openInterest": 4381, - "changeinOpenInterest": 1252, - "pchangeinOpenInterest": 40.0127836369447, - "totalTradedVolume": 43540, - "impliedVolatility": 20.5, - "lastPrice": 30.75, - "change": -37.3, - "pChange": -54.8126377663483, - "totalBuyQuantity": 15625, - "totalSellQuantity": 15800, - "bidQty": 25, - "bidprice": 28.7, - "askQty": 1800, - "askPrice": 31.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22700.00", - "openInterest": 16, - "changeinOpenInterest": 15, - "pchangeinOpenInterest": 1500, - "totalTradedVolume": 71, - "impliedVolatility": 0, - "lastPrice": 1244, - "change": 350.2, - "pChange": 39.1810248377713, - "totalBuyQuantity": 3000, - "totalSellQuantity": 3000, - "bidQty": 25, - "bidprice": 1121.15, - "askQty": 25, - "askPrice": 1400.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22700.00", - "openInterest": 1468, - "changeinOpenInterest": 1156, - "pchangeinOpenInterest": 370.512820512821, - "totalTradedVolume": 3981, - "impliedVolatility": 18.44, - "lastPrice": 43.05, - "change": -57.3, - "pChange": -57.1001494768311, - "totalBuyQuantity": 10150, - "totalSellQuantity": 1250, - "bidQty": 100, - "bidprice": 40.6, - "askQty": 75, - "askPrice": 59.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22700, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7700, - "totalSellQuantity": 1575, - "bidQty": 900, - "bidprice": 22.45, - "askQty": 375, - "askPrice": 88.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22700.00", - "openInterest": 161, - "changeinOpenInterest": 18, - "pchangeinOpenInterest": 12.5874125874126, - "totalTradedVolume": 105, - "impliedVolatility": 0, - "lastPrice": 1401.9, - "change": 453.15, - "pChange": 47.7628458498024, - "totalBuyQuantity": 4800, - "totalSellQuantity": 4900, - "bidQty": 75, - "bidprice": 1359.5, - "askQty": 75, - "askPrice": 1444.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22700.00", - "openInterest": 13455, - "changeinOpenInterest": 1955, - "pchangeinOpenInterest": 17, - "totalTradedVolume": 21263, - "impliedVolatility": 17.83, - "lastPrice": 82.7, - "change": -68.25, - "pChange": -45.213646902948, - "totalBuyQuantity": 2250, - "totalSellQuantity": 1675, - "bidQty": 50, - "bidprice": 75, - "askQty": 25, - "askPrice": 86.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22700, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 375, - "totalSellQuantity": 750, - "bidQty": 375, - "bidprice": 81.2, - "askQty": 375, - "askPrice": 115.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 2175, - "bidQty": 900, - "bidprice": 1099.65, - "askQty": 1775, - "askPrice": 1955.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22700.00", - "openInterest": 1834, - "changeinOpenInterest": 191, - "pchangeinOpenInterest": 11.6250760803408, - "totalTradedVolume": 1484, - "impliedVolatility": 16.19, - "lastPrice": 134.2, - "change": -85.8, - "pChange": -39, - "totalBuyQuantity": 725, - "totalSellQuantity": 1450, - "bidQty": 300, - "bidprice": 119.45, - "askQty": 25, - "askPrice": 154.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22750.00", - "openInterest": 38866, - "changeinOpenInterest": 24284, - "pchangeinOpenInterest": 166.534083116171, - "totalTradedVolume": 433621, - "impliedVolatility": 23.47, - "lastPrice": 12.7, - "change": -27.6, - "pChange": -68.4863523573201, - "totalBuyQuantity": 81075, - "totalSellQuantity": 26675, - "bidQty": 125, - "bidprice": 12.15, - "askQty": 1000, - "askPrice": 12.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22750.00", - "openInterest": 658, - "changeinOpenInterest": -24, - "pchangeinOpenInterest": -3.51906158357771, - "totalTradedVolume": 328, - "impliedVolatility": 0, - "lastPrice": 1144.8, - "change": 516.75, - "pChange": 82.2784810126582, - "totalBuyQuantity": 10400, - "totalSellQuantity": 7150, - "bidQty": 1800, - "bidprice": 1159.2, - "askQty": 1800, - "askPrice": 1172.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22750.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 852.65, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1000, - "bidprice": 822.3, - "askQty": 1000, - "askPrice": 1447.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22750.00", - "openInterest": 592, - "changeinOpenInterest": -110, - "pchangeinOpenInterest": -15.6695156695157, - "totalTradedVolume": 10580, - "impliedVolatility": 20.16, - "lastPrice": 32.65, - "change": -41.35, - "pChange": -55.8783783783784, - "totalBuyQuantity": 11600, - "totalSellQuantity": 4650, - "bidQty": 1350, - "bidprice": 30.05, - "askQty": 1350, - "askPrice": 39.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6600, - "totalSellQuantity": 800, - "bidQty": 600, - "bidprice": 42.2, - "askQty": 800, - "askPrice": 82.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22750, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 10.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22750.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1023.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3325, - "totalSellQuantity": 3675, - "bidQty": 550, - "bidprice": 1080.95, - "askQty": 900, - "askPrice": 1572.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22750.00", - "openInterest": 797, - "changeinOpenInterest": 183, - "pchangeinOpenInterest": 29.8045602605863, - "totalTradedVolume": 2042, - "impliedVolatility": 17.49, - "lastPrice": 84.35, - "change": -74.45, - "pChange": -46.8828715365239, - "totalBuyQuantity": 2225, - "totalSellQuantity": 2775, - "bidQty": 25, - "bidprice": 80, - "askQty": 100, - "askPrice": 84.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22750, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 40.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22750.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1255.8, - "change": 1.20000000000005, - "pChange": 0.0956480153036861, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1206.05, - "askQty": 1775, - "askPrice": 1818.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22750.00", - "openInterest": 5, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 25, - "totalTradedVolume": 1, - "impliedVolatility": 18.73, - "lastPrice": 210, - "change": 8.90000000000001, - "pChange": 4.42565887618101, - "totalBuyQuantity": 1500, - "totalSellQuantity": 2025, - "bidQty": 1450, - "bidprice": 34.9, - "askQty": 1300, - "askPrice": 210.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22800.00", - "openInterest": 1789, - "changeinOpenInterest": 244, - "pchangeinOpenInterest": 15.7928802588997, - "totalTradedVolume": 3072, - "impliedVolatility": 0, - "lastPrice": 1105, - "change": 508.8, - "pChange": 85.340489768534, - "totalBuyQuantity": 13125, - "totalSellQuantity": 9500, - "bidQty": 1800, - "bidprice": 1111.2, - "askQty": 1800, - "askPrice": 1121.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22800.00", - "openInterest": 85464, - "changeinOpenInterest": 3052, - "pchangeinOpenInterest": 3.70334417317866, - "totalTradedVolume": 977648, - "impliedVolatility": 22.92, - "lastPrice": 13.5, - "change": -32.8, - "pChange": -70.8423326133909, - "totalBuyQuantity": 92700, - "totalSellQuantity": 53425, - "bidQty": 850, - "bidprice": 13.5, - "askQty": 675, - "askPrice": 13.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22800.00", - "openInterest": 7302, - "changeinOpenInterest": 2165, - "pchangeinOpenInterest": 42.1452209460775, - "totalTradedVolume": 48960, - "impliedVolatility": 19.96, - "lastPrice": 35.6, - "change": -45.85, - "pChange": -56.292203806016, - "totalBuyQuantity": 19100, - "totalSellQuantity": 9900, - "bidQty": 1800, - "bidprice": 31.75, - "askQty": 50, - "askPrice": 35.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22800.00", - "openInterest": 110, - "changeinOpenInterest": 45, - "pchangeinOpenInterest": 69.2307692307692, - "totalTradedVolume": 327, - "impliedVolatility": 0, - "lastPrice": 1165.65, - "change": 492.75, - "pChange": 73.2278198840838, - "totalBuyQuantity": 4625, - "totalSellQuantity": 2000, - "bidQty": 50, - "bidprice": 1161, - "askQty": 25, - "askPrice": 1309.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 22800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22800.00", - "openInterest": 902, - "changeinOpenInterest": -41, - "pchangeinOpenInterest": -4.34782608695652, - "totalTradedVolume": 1973, - "impliedVolatility": 18.34, - "lastPrice": 52.5, - "change": -63.55, - "pChange": -54.7608789314951, - "totalBuyQuantity": 4975, - "totalSellQuantity": 2300, - "bidQty": 25, - "bidprice": 50.5, - "askQty": 25, - "askPrice": 61.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22800, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4075, - "totalSellQuantity": 1650, - "bidQty": 900, - "bidprice": 21.3, - "askQty": 825, - "askPrice": 95.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22800, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE22800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22800.00", - "openInterest": 23220, - "changeinOpenInterest": 7374, - "pchangeinOpenInterest": 46.5354032563423, - "totalTradedVolume": 33180, - "impliedVolatility": 18, - "lastPrice": 99.95, - "change": -70.05, - "pChange": -41.2058823529412, - "totalBuyQuantity": 5575, - "totalSellQuantity": 2725, - "bidQty": 25, - "bidprice": 85, - "askQty": 25, - "askPrice": 89.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22800.00", - "openInterest": 181, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 218, - "impliedVolatility": 0, - "lastPrice": 1298.75, - "change": 433.5, - "pChange": 50.1011268419532, - "totalBuyQuantity": 5125, - "totalSellQuantity": 3675, - "bidQty": 300, - "bidprice": 1213.8, - "askQty": 100, - "askPrice": 1338.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22800, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 825, - "bidQty": 0, - "bidprice": 0, - "askQty": 825, - "askPrice": 127.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 2375, - "bidQty": 900, - "bidprice": 1200.3, - "askQty": 1775, - "askPrice": 1859.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22800.00", - "openInterest": 1338, - "changeinOpenInterest": 175, - "pchangeinOpenInterest": 15.0472914875322, - "totalTradedVolume": 713, - "impliedVolatility": 16.07, - "lastPrice": 148, - "change": -96.2, - "pChange": -39.3939393939394, - "totalBuyQuantity": 1375, - "totalSellQuantity": 1225, - "bidQty": 300, - "bidprice": 127.15, - "askQty": 825, - "askPrice": 171.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22850.00", - "openInterest": 1094, - "changeinOpenInterest": -58, - "pchangeinOpenInterest": -5.03472222222222, - "totalTradedVolume": 749, - "impliedVolatility": 0, - "lastPrice": 1045, - "change": 500.55, - "pChange": 91.9368169712554, - "totalBuyQuantity": 11950, - "totalSellQuantity": 6450, - "bidQty": 175, - "bidprice": 1063.35, - "askQty": 175, - "askPrice": 1075.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22850.00", - "openInterest": 19392, - "changeinOpenInterest": 7144, - "pchangeinOpenInterest": 58.3278902677988, - "totalTradedVolume": 363965, - "impliedVolatility": 22.62, - "lastPrice": 15.15, - "change": -38.05, - "pChange": -71.5225563909774, - "totalBuyQuantity": 73900, - "totalSellQuantity": 31475, - "bidQty": 50, - "bidprice": 14.3, - "askQty": 200, - "askPrice": 15.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22850.00", - "openInterest": 2251, - "changeinOpenInterest": 1722, - "pchangeinOpenInterest": 325.519848771267, - "totalTradedVolume": 11002, - "impliedVolatility": 19.21, - "lastPrice": 34.9, - "change": -55.85, - "pChange": -61.5426997245179, - "totalBuyQuantity": 8925, - "totalSellQuantity": 5100, - "bidQty": 1350, - "bidprice": 34.05, - "askQty": 1350, - "askPrice": 46.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22850.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 758.25, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4575, - "totalSellQuantity": 1725, - "bidQty": 1775, - "bidprice": 932.3, - "askQty": 25, - "askPrice": 1326.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6000, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 42.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 22850, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE22850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22850, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 325, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 21.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22850.00", - "openInterest": 910, - "changeinOpenInterest": 204, - "pchangeinOpenInterest": 28.8951841359773, - "totalTradedVolume": 2020, - "impliedVolatility": 17.22, - "lastPrice": 94.75, - "change": -85.55, - "pChange": -47.4486966167499, - "totalBuyQuantity": 3750, - "totalSellQuantity": 1200, - "bidQty": 900, - "bidprice": 63.8, - "askQty": 500, - "askPrice": 95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22850.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 943.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3325, - "totalSellQuantity": 3275, - "bidQty": 1775, - "bidprice": 941.6, - "askQty": 500, - "askPrice": 1485.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22850, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 40.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 22850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22850.00", - "openInterest": 5, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 25, - "totalTradedVolume": 2, - "impliedVolatility": 16.33, - "lastPrice": 164, - "change": -91.2, - "pChange": -35.7366771159875, - "totalBuyQuantity": 3600, - "totalSellQuantity": 1850, - "bidQty": 900, - "bidprice": 13, - "askQty": 675, - "askPrice": 189.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22850.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1164.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2650, - "totalSellQuantity": 1775, - "bidQty": 875, - "bidprice": 963, - "askQty": 1775, - "askPrice": 1709.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22900.00", - "openInterest": 100159, - "changeinOpenInterest": 36565, - "pchangeinOpenInterest": 57.4975626631443, - "totalTradedVolume": 961386, - "impliedVolatility": 22.12, - "lastPrice": 16.3, - "change": -45.15, - "pChange": -73.4743694060212, - "totalBuyQuantity": 85775, - "totalSellQuantity": 59025, - "bidQty": 3800, - "bidprice": 16.1, - "askQty": 1725, - "askPrice": 16.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22900.00", - "openInterest": 848, - "changeinOpenInterest": -122, - "pchangeinOpenInterest": -12.5773195876289, - "totalTradedVolume": 2947, - "impliedVolatility": 0, - "lastPrice": 1010, - "change": 500.9, - "pChange": 98.3893144765272, - "totalBuyQuantity": 17425, - "totalSellQuantity": 10075, - "bidQty": 600, - "bidprice": 1014, - "askQty": 1800, - "askPrice": 1027.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 22900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22900.00", - "openInterest": 4859, - "changeinOpenInterest": 1090, - "pchangeinOpenInterest": 28.9201379676307, - "totalTradedVolume": 48994, - "impliedVolatility": 19, - "lastPrice": 38.15, - "change": -61.1, - "pChange": -61.5617128463476, - "totalBuyQuantity": 10825, - "totalSellQuantity": 10125, - "bidQty": 1800, - "bidprice": 38.2, - "askQty": 25, - "askPrice": 41.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22900.00", - "openInterest": 119, - "changeinOpenInterest": 17, - "pchangeinOpenInterest": 16.6666666666667, - "totalTradedVolume": 164, - "impliedVolatility": 0, - "lastPrice": 1065.95, - "change": 471.25, - "pChange": 79.2416344375315, - "totalBuyQuantity": 5375, - "totalSellQuantity": 3250, - "bidQty": 125, - "bidprice": 941.5, - "askQty": 125, - "askPrice": 1120.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 22900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22900.00", - "openInterest": 237, - "changeinOpenInterest": 199, - "pchangeinOpenInterest": 523.684210526316, - "totalTradedVolume": 559, - "impliedVolatility": 17.78, - "lastPrice": 58.35, - "change": -77.65, - "pChange": -57.0955882352941, - "totalBuyQuantity": 2225, - "totalSellQuantity": 425, - "bidQty": 25, - "bidprice": 54.85, - "askQty": 25, - "askPrice": 67.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 22900, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE22900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22900, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4625, - "totalSellQuantity": 700, - "bidQty": 900, - "bidprice": 26.5, - "askQty": 350, - "askPrice": 109.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 22900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22900.00", - "openInterest": 17320, - "changeinOpenInterest": 1822, - "pchangeinOpenInterest": 11.7563556587947, - "totalTradedVolume": 17517, - "impliedVolatility": 16.96, - "lastPrice": 98.25, - "change": -93.3, - "pChange": -48.7079091620987, - "totalBuyQuantity": 3450, - "totalSellQuantity": 650, - "bidQty": 25, - "bidprice": 97.35, - "askQty": 25, - "askPrice": 109.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22900.00", - "openInterest": 332, - "changeinOpenInterest": -27, - "pchangeinOpenInterest": -7.52089136490251, - "totalTradedVolume": 97, - "impliedVolatility": 7.74, - "lastPrice": 1222.15, - "change": 431.75, - "pChange": 54.6242408906883, - "totalBuyQuantity": 4900, - "totalSellQuantity": 5075, - "bidQty": 75, - "bidprice": 1171.85, - "askQty": 150, - "askPrice": 1275.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22900, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6450, - "totalSellQuantity": 300, - "bidQty": 900, - "bidprice": 51.3, - "askQty": 300, - "askPrice": 141.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22900.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1143.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 2350, - "bidQty": 900, - "bidprice": 1091.65, - "askQty": 1775, - "askPrice": 1766.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22900.00", - "openInterest": 809, - "changeinOpenInterest": 19, - "pchangeinOpenInterest": 2.40506329113924, - "totalTradedVolume": 408, - "impliedVolatility": 16.08, - "lastPrice": 166.85, - "change": -103.95, - "pChange": -38.3862629246677, - "totalBuyQuantity": 1100, - "totalSellQuantity": 1425, - "bidQty": 200, - "bidprice": 150, - "askQty": 25, - "askPrice": 182.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22950.00", - "openInterest": 37047, - "changeinOpenInterest": 23043, - "pchangeinOpenInterest": 164.545844044559, - "totalTradedVolume": 470638, - "impliedVolatility": 21.94, - "lastPrice": 18.8, - "change": -50.65, - "pChange": -72.9301655867531, - "totalBuyQuantity": 75525, - "totalSellQuantity": 39125, - "bidQty": 700, - "bidprice": 18, - "askQty": 1000, - "askPrice": 18.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22950.00", - "openInterest": 709, - "changeinOpenInterest": -93, - "pchangeinOpenInterest": -11.5960099750623, - "totalTradedVolume": 1268, - "impliedVolatility": 0, - "lastPrice": 963.35, - "change": 497.25, - "pChange": 106.683115211328, - "totalBuyQuantity": 176625, - "totalSellQuantity": 8900, - "bidQty": 175, - "bidprice": 966.85, - "askQty": 1800, - "askPrice": 977.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 22950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE22950.00", - "openInterest": 11, - "changeinOpenInterest": 6, - "pchangeinOpenInterest": 120, - "totalTradedVolume": 37, - "impliedVolatility": 0, - "lastPrice": 712.5, - "change": 156.65, - "pChange": 28.1820635063416, - "totalBuyQuantity": 4950, - "totalSellQuantity": 1100, - "bidQty": 50, - "bidprice": 899.75, - "askQty": 125, - "askPrice": 1221.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE22950.00", - "openInterest": 1308, - "changeinOpenInterest": 436, - "pchangeinOpenInterest": 50, - "totalTradedVolume": 11830, - "impliedVolatility": 19.19, - "lastPrice": 44.95, - "change": -64.7, - "pChange": -59.0059279525764, - "totalBuyQuantity": 7125, - "totalSellQuantity": 3800, - "bidQty": 250, - "bidprice": 36.1, - "askQty": 500, - "askPrice": 54.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 22950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE22950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE22950.00", - "openInterest": 39, - "changeinOpenInterest": 36, - "pchangeinOpenInterest": 1200, - "totalTradedVolume": 56, - "impliedVolatility": 19.51, - "lastPrice": 86.45, - "change": -64.95, - "pChange": -42.8996036988111, - "totalBuyQuantity": 1825, - "totalSellQuantity": 925, - "bidQty": 25, - "bidprice": 37.4, - "askQty": 900, - "askPrice": 120.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 22950, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE22950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 325, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 25.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22950, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE22950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 22950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE22950.00", - "openInterest": 510, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 0, - "lastPrice": 1026.4, - "change": 269.75, - "pChange": 35.6505649904183, - "totalBuyQuantity": 1925, - "totalSellQuantity": 3675, - "bidQty": 25, - "bidprice": 996.5, - "askQty": 1000, - "askPrice": 1281.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE22950.00", - "openInterest": 796, - "changeinOpenInterest": -209, - "pchangeinOpenInterest": -20.7960199004975, - "totalTradedVolume": 1285, - "impliedVolatility": 16.89, - "lastPrice": 105.35, - "change": -98.35, - "pChange": -48.2817869415808, - "totalBuyQuantity": 3800, - "totalSellQuantity": 3250, - "bidQty": 25, - "bidprice": 102, - "askQty": 900, - "askPrice": 120.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 22950, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE22950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 22950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE22950.00", - "openInterest": 9, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1098.35, - "change": -2.15000000000009, - "pChange": -0.19536574284417, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1083.45, - "askQty": 1775, - "askPrice": 1551.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE22950.00", - "openInterest": 10, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 25, - "totalTradedVolume": 2, - "impliedVolatility": 16.31, - "lastPrice": 183.1, - "change": -60.6, - "pChange": -24.8666393106278, - "totalBuyQuantity": 2800, - "totalSellQuantity": 1925, - "bidQty": 900, - "bidprice": 137.05, - "askQty": 525, - "askPrice": 193.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23000.00", - "openInterest": 39085, - "changeinOpenInterest": -4108, - "pchangeinOpenInterest": -9.51080036116963, - "totalTradedVolume": 75959, - "impliedVolatility": 0, - "lastPrice": 918.25, - "change": 493.05, - "pChange": 115.957196613358, - "totalBuyQuantity": 183900, - "totalSellQuantity": 13325, - "bidQty": 1800, - "bidprice": 919.35, - "askQty": 1800, - "askPrice": 928.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23000.00", - "openInterest": 283955, - "changeinOpenInterest": 63506, - "pchangeinOpenInterest": 28.8075700048537, - "totalTradedVolume": 2107105, - "impliedVolatility": 21.65, - "lastPrice": 21.2, - "change": -58.75, - "pChange": -73.4834271419637, - "totalBuyQuantity": 82450, - "totalSellQuantity": 522000, - "bidQty": 50, - "bidprice": 20.75, - "askQty": 425, - "askPrice": 21.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23000.00", - "openInterest": 16576, - "changeinOpenInterest": 6949, - "pchangeinOpenInterest": 72.1824036563831, - "totalTradedVolume": 110523, - "impliedVolatility": 18.86, - "lastPrice": 48, - "change": -73.5, - "pChange": -60.4938271604938, - "totalBuyQuantity": 14975, - "totalSellQuantity": 27675, - "bidQty": 1300, - "bidprice": 48, - "askQty": 50, - "askPrice": 48.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23000.00", - "openInterest": 1419, - "changeinOpenInterest": -240, - "pchangeinOpenInterest": -14.4665461121157, - "totalTradedVolume": 3365, - "impliedVolatility": 0, - "lastPrice": 984.35, - "change": 464.9, - "pChange": 89.4985080373472, - "totalBuyQuantity": 10225, - "totalSellQuantity": 4525, - "bidQty": 50, - "bidprice": 987.2, - "askQty": 50, - "askPrice": 1006, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23000, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23000.00", - "openInterest": 3517, - "changeinOpenInterest": 2374, - "pchangeinOpenInterest": 207.699037620297, - "totalTradedVolume": 15861, - "impliedVolatility": 17.6, - "lastPrice": 69.85, - "change": -90.1, - "pChange": -56.3301031572366, - "totalBuyQuantity": 5225, - "totalSellQuantity": 5450, - "bidQty": 25, - "bidprice": 68.1, - "askQty": 500, - "askPrice": 71.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23000, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23000.00", - "openInterest": 93, - "changeinOpenInterest": 54, - "pchangeinOpenInterest": 138.461538461538, - "totalTradedVolume": 190, - "impliedVolatility": 0, - "lastPrice": 1013.8, - "change": 423.8, - "pChange": 71.8305084745763, - "totalBuyQuantity": 2225, - "totalSellQuantity": 550, - "bidQty": 125, - "bidprice": 1026.1, - "askQty": 400, - "askPrice": 1086.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23000, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23000.00", - "openInterest": 484, - "changeinOpenInterest": 325, - "pchangeinOpenInterest": 204.40251572327, - "totalTradedVolume": 844, - "impliedVolatility": 17.39, - "lastPrice": 96.55, - "change": -98.15, - "pChange": -50.4108885464818, - "totalBuyQuantity": 2600, - "totalSellQuantity": 3250, - "bidQty": 25, - "bidprice": 87.05, - "askQty": 25, - "askPrice": 103.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23000.00", - "openInterest": 175166, - "changeinOpenInterest": 16020, - "pchangeinOpenInterest": 10.0662284945899, - "totalTradedVolume": 164641, - "impliedVolatility": 16.9, - "lastPrice": 114.15, - "change": -105.65, - "pChange": -48.066424021838, - "totalBuyQuantity": 36700, - "totalSellQuantity": 62850, - "bidQty": 25, - "bidprice": 114.05, - "askQty": 250, - "askPrice": 115, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23000.00", - "openInterest": 34279, - "changeinOpenInterest": 2849, - "pchangeinOpenInterest": 9.06458797327394, - "totalTradedVolume": 19713, - "impliedVolatility": 9.92, - "lastPrice": 1137.5, - "change": 419, - "pChange": 58.3159359777314, - "totalBuyQuantity": 9850, - "totalSellQuantity": 6325, - "bidQty": 25, - "bidprice": 1137, - "askQty": 50, - "askPrice": 1150, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23000, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 450, - "totalSellQuantity": 900, - "bidQty": 225, - "bidprice": 124.8, - "askQty": 900, - "askPrice": 150.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23000.00", - "openInterest": 36805, - "changeinOpenInterest": 1147, - "pchangeinOpenInterest": 3.21666947108643, - "totalTradedVolume": 19652, - "impliedVolatility": 15.9, - "lastPrice": 181.9, - "change": -112.6, - "pChange": -38.2342954159593, - "totalBuyQuantity": 7725, - "totalSellQuantity": 7475, - "bidQty": 25, - "bidprice": 178.8, - "askQty": 50, - "askPrice": 184.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23000.00", - "openInterest": 3129, - "changeinOpenInterest": -108, - "pchangeinOpenInterest": -3.33642261353105, - "totalTradedVolume": 2470, - "impliedVolatility": 8.33, - "lastPrice": 1358, - "change": 408, - "pChange": 42.9473684210526, - "totalBuyQuantity": 3950, - "totalSellQuantity": 4925, - "bidQty": 600, - "bidprice": 1346.5, - "askQty": 50, - "askPrice": 1380, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 23000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE23000.00", - "openInterest": 6762, - "changeinOpenInterest": -108, - "pchangeinOpenInterest": -1.57205240174672, - "totalTradedVolume": 1293, - "impliedVolatility": 0, - "lastPrice": 1644, - "change": 369.65, - "pChange": 29.0069447169145, - "totalBuyQuantity": 3750, - "totalSellQuantity": 1000, - "bidQty": 425, - "bidprice": 1626.75, - "askQty": 25, - "askPrice": 1661, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE23000.00", - "openInterest": 46184, - "changeinOpenInterest": -1403, - "pchangeinOpenInterest": -2.94828419526341, - "totalTradedVolume": 12500, - "impliedVolatility": 16.15, - "lastPrice": 275.05, - "change": -104.05, - "pChange": -27.4465840147718, - "totalBuyQuantity": 8725, - "totalSellQuantity": 16325, - "bidQty": 1050, - "bidprice": 275, - "askQty": 300, - "askPrice": 279, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "26-Jun-2025", - "CE": { - "strikePrice": 23000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE23000.00", - "openInterest": 1166, - "changeinOpenInterest": 217, - "pchangeinOpenInterest": 22.8661749209694, - "totalTradedVolume": 423, - "impliedVolatility": 0, - "lastPrice": 2000.25, - "change": 334.25, - "pChange": 20.063025210084, - "totalBuyQuantity": 3650, - "totalSellQuantity": 450, - "bidQty": 50, - "bidprice": 2002.55, - "askQty": 25, - "askPrice": 2025, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE23000.00", - "openInterest": 7968, - "changeinOpenInterest": 344, - "pchangeinOpenInterest": 4.51206715634837, - "totalTradedVolume": 1569, - "impliedVolatility": 16.8, - "lastPrice": 380.55, - "change": -100.2, - "pChange": -20.8424336973479, - "totalBuyQuantity": 4275, - "totalSellQuantity": 7950, - "bidQty": 25, - "bidprice": 381, - "askQty": 50, - "askPrice": 391.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 23000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 230.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 23000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE23000.00", - "openInterest": 1551, - "changeinOpenInterest": 309, - "pchangeinOpenInterest": 24.8792270531401, - "totalTradedVolume": 487, - "impliedVolatility": 0, - "lastPrice": 2833.05, - "change": 353.75, - "pChange": 14.2681402008631, - "totalBuyQuantity": 6200, - "totalSellQuantity": 725, - "bidQty": 25, - "bidprice": 2831.55, - "askQty": 25, - "askPrice": 2871, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE23000.00", - "openInterest": 8864, - "changeinOpenInterest": 243, - "pchangeinOpenInterest": 2.81869852685303, - "totalTradedVolume": 1199, - "impliedVolatility": 18.91, - "lastPrice": 575, - "change": -97.4500000000001, - "pChange": -14.4917837757454, - "totalBuyQuantity": 9350, - "totalSellQuantity": 8700, - "bidQty": 250, - "bidprice": 575, - "askQty": 250, - "askPrice": 580, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 23000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE23000.00", - "openInterest": 14, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 710, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 600, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 581.7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 23000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE23000.00", - "openInterest": 497, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 706.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2600, - "totalSellQuantity": 650, - "bidQty": 250, - "bidprice": 590.95, - "askQty": 100, - "askPrice": 850, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE23000.00", - "openInterest": 20, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2020, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 75, - "totalSellQuantity": 50, - "bidQty": 25, - "bidprice": 2917.45, - "askQty": 50, - "askPrice": 4500, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 23000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 574.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 23000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 548.7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 23000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 518.85, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 23000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE23000.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 700, - "change": 56.65, - "pChange": 8.80547136084557, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 487.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 23000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE23000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 375, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 456, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23050.00", - "openInterest": 1436, - "changeinOpenInterest": -52, - "pchangeinOpenInterest": -3.49462365591398, - "totalTradedVolume": 5866, - "impliedVolatility": 0, - "lastPrice": 857.9, - "change": 467.7, - "pChange": 119.861609431061, - "totalBuyQuantity": 104400, - "totalSellQuantity": 7400, - "bidQty": 175, - "bidprice": 872.35, - "askQty": 100, - "askPrice": 882.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23050.00", - "openInterest": 35884, - "changeinOpenInterest": 23339, - "pchangeinOpenInterest": 186.042247907533, - "totalTradedVolume": 532282, - "impliedVolatility": 21.16, - "lastPrice": 23, - "change": -67.9, - "pChange": -74.6974697469747, - "totalBuyQuantity": 15225, - "totalSellQuantity": 96275, - "bidQty": 2250, - "bidprice": 23, - "askQty": 1000, - "askPrice": 23.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23050.00", - "openInterest": 387, - "changeinOpenInterest": -145, - "pchangeinOpenInterest": -27.2556390977444, - "totalTradedVolume": 293, - "impliedVolatility": 0, - "lastPrice": 935.15, - "change": 457.4, - "pChange": 95.7404500261643, - "totalBuyQuantity": 6700, - "totalSellQuantity": 3100, - "bidQty": 100, - "bidprice": 805.9, - "askQty": 250, - "askPrice": 976.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23050.00", - "openInterest": 1004, - "changeinOpenInterest": 211, - "pchangeinOpenInterest": 26.6078184110971, - "totalTradedVolume": 18014, - "impliedVolatility": 18.39, - "lastPrice": 50, - "change": -83.65, - "pChange": -62.5888514777404, - "totalBuyQuantity": 4025, - "totalSellQuantity": 4275, - "bidQty": 1625, - "bidprice": 50, - "askQty": 500, - "askPrice": 56.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23050, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23050.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 700, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 0, - "bidQty": 1800, - "bidprice": 150.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23050, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23050.00", - "openInterest": 41, - "changeinOpenInterest": 28, - "pchangeinOpenInterest": 215.384615384615, - "totalTradedVolume": 71, - "impliedVolatility": 17.98, - "lastPrice": 82.45, - "change": -87.55, - "pChange": -51.5, - "totalBuyQuantity": 800, - "totalSellQuantity": 225, - "bidQty": 800, - "bidprice": 65.85, - "askQty": 175, - "askPrice": 99.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23050, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23050, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 3, - "impliedVolatility": 17.98, - "lastPrice": 115.3, - "change": -84.1, - "pChange": -42.1765295887663, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23050.00", - "openInterest": 479, - "changeinOpenInterest": -3, - "pchangeinOpenInterest": -0.622406639004149, - "totalTradedVolume": 14, - "impliedVolatility": 0, - "lastPrice": 960.2, - "change": 275.5, - "pChange": 40.2365999707901, - "totalBuyQuantity": 2000, - "totalSellQuantity": 1925, - "bidQty": 75, - "bidprice": 1075.3, - "askQty": 25, - "askPrice": 1178.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23050.00", - "openInterest": 1034, - "changeinOpenInterest": -29, - "pchangeinOpenInterest": -2.72812793979304, - "totalTradedVolume": 1280, - "impliedVolatility": 16.84, - "lastPrice": 122.4, - "change": -111.4, - "pChange": -47.6475620188195, - "totalBuyQuantity": 3900, - "totalSellQuantity": 1825, - "bidQty": 250, - "bidprice": 114.2, - "askQty": 900, - "askPrice": 132.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23050, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 600, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 50.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23050.00", - "openInterest": 50, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 8.69565217391304, - "totalTradedVolume": 12, - "impliedVolatility": 15.8, - "lastPrice": 189.7, - "change": -78.8, - "pChange": -29.3482309124767, - "totalBuyQuantity": 350, - "totalSellQuantity": 1800, - "bidQty": 350, - "bidprice": 168.15, - "askQty": 900, - "askPrice": 222.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23050.00", - "openInterest": 10, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1018.35, - "change": 1.55000000000007, - "pChange": 0.152439024390251, - "totalBuyQuantity": 925, - "totalSellQuantity": 2700, - "bidQty": 25, - "bidprice": 1222.85, - "askQty": 25, - "askPrice": 1404.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23100.00", - "openInterest": 99867, - "changeinOpenInterest": 35212, - "pchangeinOpenInterest": 54.4613718969917, - "totalTradedVolume": 1149061, - "impliedVolatility": 20.98, - "lastPrice": 26.5, - "change": -77.15, - "pChange": -74.433188615533, - "totalBuyQuantity": 23550, - "totalSellQuantity": 126450, - "bidQty": 1200, - "bidprice": 26, - "askQty": 1000, - "askPrice": 27.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23100.00", - "openInterest": 6532, - "changeinOpenInterest": -2768, - "pchangeinOpenInterest": -29.7634408602151, - "totalTradedVolume": 31498, - "impliedVolatility": 0, - "lastPrice": 827.55, - "change": 476, - "pChange": 135.400369790926, - "totalBuyQuantity": 36575, - "totalSellQuantity": 9200, - "bidQty": 175, - "bidprice": 825.8, - "askQty": 1800, - "askPrice": 835.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23100.00", - "openInterest": 553, - "changeinOpenInterest": -178, - "pchangeinOpenInterest": -24.3502051983584, - "totalTradedVolume": 832, - "impliedVolatility": 0, - "lastPrice": 885.9, - "change": 443.9, - "pChange": 100.429864253394, - "totalBuyQuantity": 9175, - "totalSellQuantity": 1375, - "bidQty": 50, - "bidprice": 884.65, - "askQty": 50, - "askPrice": 1029.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23100.00", - "openInterest": 5176, - "changeinOpenInterest": 2181, - "pchangeinOpenInterest": 72.8213689482471, - "totalTradedVolume": 48276, - "impliedVolatility": 18.55, - "lastPrice": 58.25, - "change": -87.85, - "pChange": -60.1300479123888, - "totalBuyQuantity": 7125, - "totalSellQuantity": 10400, - "bidQty": 100, - "bidprice": 55, - "askQty": 500, - "askPrice": 60.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23100, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23100.00", - "openInterest": 9, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -10, - "totalTradedVolume": 1, - "impliedVolatility": 0, - "lastPrice": 801, - "change": 281, - "pChange": 54.0384615384615, - "totalBuyQuantity": 2775, - "totalSellQuantity": 475, - "bidQty": 975, - "bidprice": 150.15, - "askQty": 475, - "askPrice": 1113.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23100, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23100.00", - "openInterest": 364, - "changeinOpenInterest": 194, - "pchangeinOpenInterest": 114.117647058824, - "totalTradedVolume": 1532, - "impliedVolatility": 17.07, - "lastPrice": 78.5, - "change": -107.75, - "pChange": -57.8523489932886, - "totalBuyQuantity": 2300, - "totalSellQuantity": 1225, - "bidQty": 50, - "bidprice": 77.05, - "askQty": 25, - "askPrice": 88.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23100, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23100, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23100.00", - "openInterest": 10, - "changeinOpenInterest": 8, - "pchangeinOpenInterest": 400, - "totalTradedVolume": 30, - "impliedVolatility": 17.27, - "lastPrice": 112.65, - "change": -72.35, - "pChange": -39.1081081081081, - "totalBuyQuantity": 4025, - "totalSellQuantity": 1275, - "bidQty": 25, - "bidprice": 53.25, - "askQty": 25, - "askPrice": 121.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23100.00", - "openInterest": 6627, - "changeinOpenInterest": 686, - "pchangeinOpenInterest": 11.5468776300286, - "totalTradedVolume": 15874, - "impliedVolatility": 16.34, - "lastPrice": 122.55, - "change": -124.85, - "pChange": -50.4648342764753, - "totalBuyQuantity": 1475, - "totalSellQuantity": 2950, - "bidQty": 50, - "bidprice": 120, - "askQty": 50, - "askPrice": 128, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23100.00", - "openInterest": 673, - "changeinOpenInterest": -100, - "pchangeinOpenInterest": -12.9366106080207, - "totalTradedVolume": 585, - "impliedVolatility": 10.67, - "lastPrice": 1053.25, - "change": 406.45, - "pChange": 62.8401360544218, - "totalBuyQuantity": 2875, - "totalSellQuantity": 4300, - "bidQty": 25, - "bidprice": 1056.85, - "askQty": 250, - "askPrice": 1080.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23100, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23100.00", - "openInterest": 6, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 50, - "totalTradedVolume": 5, - "impliedVolatility": 8.86, - "lastPrice": 1274, - "change": 384, - "pChange": 43.1460674157303, - "totalBuyQuantity": 2650, - "totalSellQuantity": 3150, - "bidQty": 25, - "bidprice": 1191.25, - "askQty": 25, - "askPrice": 1317.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23100.00", - "openInterest": 497, - "changeinOpenInterest": 151, - "pchangeinOpenInterest": 43.6416184971098, - "totalTradedVolume": 508, - "impliedVolatility": 15.76, - "lastPrice": 199.4, - "change": -117.9, - "pChange": -37.1572644185314, - "totalBuyQuantity": 2625, - "totalSellQuantity": 3125, - "bidQty": 200, - "bidprice": 178.5, - "askQty": 350, - "askPrice": 218.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23150.00", - "openInterest": 23616, - "changeinOpenInterest": 6563, - "pchangeinOpenInterest": 38.4858969096347, - "totalTradedVolume": 613793, - "impliedVolatility": 20.63, - "lastPrice": 29.6, - "change": -87.35, - "pChange": -74.690038477982, - "totalBuyQuantity": 16850, - "totalSellQuantity": 74100, - "bidQty": 1425, - "bidprice": 29.6, - "askQty": 1000, - "askPrice": 30.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23150.00", - "openInterest": 3157, - "changeinOpenInterest": -306, - "pchangeinOpenInterest": -8.83626913081144, - "totalTradedVolume": 16325, - "impliedVolatility": 0, - "lastPrice": 779.45, - "change": 465.1, - "pChange": 147.956099888659, - "totalBuyQuantity": 32850, - "totalSellQuantity": 9200, - "bidQty": 600, - "bidprice": 779, - "askQty": 1800, - "askPrice": 788.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23150.00", - "openInterest": 2506, - "changeinOpenInterest": 1464, - "pchangeinOpenInterest": 140.499040307102, - "totalTradedVolume": 17486, - "impliedVolatility": 18.27, - "lastPrice": 62.85, - "change": -97.4, - "pChange": -60.7800312012481, - "totalBuyQuantity": 850, - "totalSellQuantity": 3275, - "bidQty": 25, - "bidprice": 61, - "askQty": 25, - "askPrice": 64.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23150.00", - "openInterest": 407, - "changeinOpenInterest": -3, - "pchangeinOpenInterest": -0.731707317073171, - "totalTradedVolume": 275, - "impliedVolatility": 8.2, - "lastPrice": 840.85, - "change": 435, - "pChange": 107.182456572625, - "totalBuyQuantity": 10825, - "totalSellQuantity": 3325, - "bidQty": 100, - "bidprice": 716.9, - "askQty": 50, - "askPrice": 884.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23150.00", - "openInterest": 118, - "changeinOpenInterest": 112, - "pchangeinOpenInterest": 1866.66666666667, - "totalTradedVolume": 209, - "impliedVolatility": 17.34, - "lastPrice": 90.8, - "change": -104.2, - "pChange": -53.4358974358974, - "totalBuyQuantity": 2300, - "totalSellQuantity": 1025, - "bidQty": 1800, - "bidprice": 35.9, - "askQty": 25, - "askPrice": 119.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23150.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 471.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3600, - "totalSellQuantity": 950, - "bidQty": 1800, - "bidprice": 110.1, - "askQty": 25, - "askPrice": 1061.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23150, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23150, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23150.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 3, - "impliedVolatility": 20.74, - "lastPrice": 188.35, - "change": -41.85, - "pChange": -18.1798436142485, - "totalBuyQuantity": 2100, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 67.05, - "askQty": 900, - "askPrice": 146, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23150.00", - "openInterest": 616, - "changeinOpenInterest": 142, - "pchangeinOpenInterest": 29.957805907173, - "totalTradedVolume": 361, - "impliedVolatility": 11, - "lastPrice": 1012.85, - "change": 400.5, - "pChange": 65.4037723524128, - "totalBuyQuantity": 2425, - "totalSellQuantity": 2975, - "bidQty": 25, - "bidprice": 982.55, - "askQty": 75, - "askPrice": 1046.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23150.00", - "openInterest": 1147, - "changeinOpenInterest": 63, - "pchangeinOpenInterest": 5.81180811808118, - "totalTradedVolume": 1537, - "impliedVolatility": 16.57, - "lastPrice": 137.3, - "change": -124.3, - "pChange": -47.5152905198777, - "totalBuyQuantity": 4575, - "totalSellQuantity": 3450, - "bidQty": 900, - "bidprice": 116.3, - "askQty": 900, - "askPrice": 144.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23150, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23150.00", - "openInterest": 12, - "changeinOpenInterest": 6, - "pchangeinOpenInterest": 100, - "totalTradedVolume": 18, - "impliedVolatility": 16.18, - "lastPrice": 224.05, - "change": -70.3, - "pChange": -23.8831323254629, - "totalBuyQuantity": 2700, - "totalSellQuantity": 4800, - "bidQty": 900, - "bidprice": 172.85, - "askQty": 900, - "askPrice": 228, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23150.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 841.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 2975, - "bidQty": 900, - "bidprice": 798.05, - "askQty": 1775, - "askPrice": 1447.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23200.00", - "openInterest": 14620, - "changeinOpenInterest": -6747, - "pchangeinOpenInterest": -31.5767304722235, - "totalTradedVolume": 141244, - "impliedVolatility": 0, - "lastPrice": 733.4, - "change": 452.6, - "pChange": 161.182336182336, - "totalBuyQuantity": 41800, - "totalSellQuantity": 11500, - "bidQty": 50, - "bidprice": 733.1, - "askQty": 600, - "askPrice": 742.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23200.00", - "openInterest": 136799, - "changeinOpenInterest": 37683, - "pchangeinOpenInterest": 38.0190887445014, - "totalTradedVolume": 1653128, - "impliedVolatility": 20.44, - "lastPrice": 34, - "change": -99, - "pChange": -74.4360902255639, - "totalBuyQuantity": 27100, - "totalSellQuantity": 190275, - "bidQty": 25, - "bidprice": 33.15, - "askQty": 250, - "askPrice": 34, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23200.00", - "openInterest": 8554, - "changeinOpenInterest": 302, - "pchangeinOpenInterest": 3.6597188560349, - "totalTradedVolume": 70930, - "impliedVolatility": 17.78, - "lastPrice": 65.55, - "change": -109.15, - "pChange": -62.4785346307956, - "totalBuyQuantity": 4000, - "totalSellQuantity": 14975, - "bidQty": 75, - "bidprice": 65.55, - "askQty": 50, - "askPrice": 68.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23200.00", - "openInterest": 1155, - "changeinOpenInterest": -1150, - "pchangeinOpenInterest": -49.8915401301518, - "totalTradedVolume": 6903, - "impliedVolatility": 12.52, - "lastPrice": 809.15, - "change": 436.7, - "pChange": 117.250637669486, - "totalBuyQuantity": 15175, - "totalSellQuantity": 4650, - "bidQty": 75, - "bidprice": 801.2, - "askQty": 50, - "askPrice": 827.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23200.00", - "openInterest": 1971, - "changeinOpenInterest": 1458, - "pchangeinOpenInterest": 284.21052631579, - "totalTradedVolume": 5562, - "impliedVolatility": 17.1, - "lastPrice": 96.6, - "change": -121.35, - "pChange": -55.6779077770131, - "totalBuyQuantity": 2150, - "totalSellQuantity": 2825, - "bidQty": 150, - "bidprice": 89.4, - "askQty": 25, - "askPrice": 105.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23200.00", - "openInterest": 228, - "changeinOpenInterest": 161, - "pchangeinOpenInterest": 240.298507462687, - "totalTradedVolume": 453, - "impliedVolatility": 11.42, - "lastPrice": 860.95, - "change": 414.35, - "pChange": 92.7787729511868, - "totalBuyQuantity": 4575, - "totalSellQuantity": 875, - "bidQty": 75, - "bidprice": 90.2, - "askQty": 25, - "askPrice": 920.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23200, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23200.00", - "openInterest": 157, - "changeinOpenInterest": 136, - "pchangeinOpenInterest": 647.619047619048, - "totalTradedVolume": 195, - "impliedVolatility": 16.3, - "lastPrice": 115.55, - "change": -129.65, - "pChange": -52.8752039151713, - "totalBuyQuantity": 3200, - "totalSellQuantity": 3050, - "bidQty": 200, - "bidprice": 109.45, - "askQty": 350, - "askPrice": 132.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23200, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23200.00", - "openInterest": 13397, - "changeinOpenInterest": 1273, - "pchangeinOpenInterest": 10.4998350379413, - "totalTradedVolume": 29467, - "impliedVolatility": 16.52, - "lastPrice": 146.95, - "change": -131.55, - "pChange": -47.2351885098743, - "totalBuyQuantity": 7850, - "totalSellQuantity": 14125, - "bidQty": 25, - "bidprice": 135, - "askQty": 1775, - "askPrice": 146.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23200.00", - "openInterest": 2875, - "changeinOpenInterest": -1179, - "pchangeinOpenInterest": -29.0823877651702, - "totalTradedVolume": 3544, - "impliedVolatility": 11.32, - "lastPrice": 973.75, - "change": 397.65, - "pChange": 69.024474917549, - "totalBuyQuantity": 4050, - "totalSellQuantity": 6025, - "bidQty": 50, - "bidprice": 963.55, - "askQty": 175, - "askPrice": 998.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23200, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 146.85, - "askQty": 900, - "askPrice": 187.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23200.00", - "openInterest": 820, - "changeinOpenInterest": 187, - "pchangeinOpenInterest": 29.5418641390205, - "totalTradedVolume": 817, - "impliedVolatility": 15.47, - "lastPrice": 214, - "change": -134.25, - "pChange": -38.5498923187365, - "totalBuyQuantity": 2475, - "totalSellQuantity": 4350, - "bidQty": 50, - "bidprice": 210, - "askQty": 25, - "askPrice": 225.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23200.00", - "openInterest": 36, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 5.88235294117647, - "totalTradedVolume": 31, - "impliedVolatility": 9.31, - "lastPrice": 1193.75, - "change": 376.55, - "pChange": 46.078071463534, - "totalBuyQuantity": 2825, - "totalSellQuantity": 5875, - "bidQty": 25, - "bidprice": 1163.4, - "askQty": 25, - "askPrice": 1236.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23250.00", - "openInterest": 6124, - "changeinOpenInterest": -1808, - "pchangeinOpenInterest": -22.7937468482098, - "totalTradedVolume": 56069, - "impliedVolatility": 0, - "lastPrice": 685.7, - "change": 437.35, - "pChange": 176.1022750151, - "totalBuyQuantity": 22600, - "totalSellQuantity": 9475, - "bidQty": 600, - "bidprice": 687.8, - "askQty": 1800, - "askPrice": 696.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23250.00", - "openInterest": 38966, - "changeinOpenInterest": 18394, - "pchangeinOpenInterest": 89.4127940890531, - "totalTradedVolume": 761718, - "impliedVolatility": 20.25, - "lastPrice": 39, - "change": -111.35, - "pChange": -74.0605254406385, - "totalBuyQuantity": 9025, - "totalSellQuantity": 86125, - "bidQty": 25, - "bidprice": 38, - "askQty": 1250, - "askPrice": 39, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23250.00", - "openInterest": 432, - "changeinOpenInterest": -47, - "pchangeinOpenInterest": -9.81210855949896, - "totalTradedVolume": 977, - "impliedVolatility": 12.05, - "lastPrice": 760.3, - "change": 418.9, - "pChange": 122.70064440539, - "totalBuyQuantity": 13150, - "totalSellQuantity": 3025, - "bidQty": 100, - "bidprice": 692.05, - "askQty": 75, - "askPrice": 792.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23250.00", - "openInterest": 3092, - "changeinOpenInterest": 2305, - "pchangeinOpenInterest": 292.884371029225, - "totalTradedVolume": 20478, - "impliedVolatility": 18.01, - "lastPrice": 76.75, - "change": -114.1, - "pChange": -59.7851716007336, - "totalBuyQuantity": 2575, - "totalSellQuantity": 10825, - "bidQty": 500, - "bidprice": 57.2, - "askQty": 500, - "askPrice": 78.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23250.00", - "openInterest": 68, - "changeinOpenInterest": 60, - "pchangeinOpenInterest": 750, - "totalTradedVolume": 88, - "impliedVolatility": 0, - "lastPrice": 567.95, - "change": 147.9, - "pChange": 35.2100940364242, - "totalBuyQuantity": 6300, - "totalSellQuantity": 925, - "bidQty": 900, - "bidprice": 80.15, - "askQty": 25, - "askPrice": 933.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23250.00", - "openInterest": 188, - "changeinOpenInterest": 122, - "pchangeinOpenInterest": 184.848484848485, - "totalTradedVolume": 844, - "impliedVolatility": 16.95, - "lastPrice": 104.25, - "change": -129.15, - "pChange": -55.3341902313625, - "totalBuyQuantity": 900, - "totalSellQuantity": 750, - "bidQty": 900, - "bidprice": 76.05, - "askQty": 425, - "askPrice": 125.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23250, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3125, - "totalSellQuantity": 1650, - "bidQty": 900, - "bidprice": 62.85, - "askQty": 900, - "askPrice": 152, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23250, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23250.00", - "openInterest": 1535, - "changeinOpenInterest": 110, - "pchangeinOpenInterest": 7.71929824561404, - "totalTradedVolume": 1705, - "impliedVolatility": 16.32, - "lastPrice": 154.15, - "change": -143.35, - "pChange": -48.1848739495798, - "totalBuyQuantity": 4925, - "totalSellQuantity": 2775, - "bidQty": 500, - "bidprice": 135.15, - "askQty": 900, - "askPrice": 167.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23250.00", - "openInterest": 407, - "changeinOpenInterest": 26, - "pchangeinOpenInterest": 6.8241469816273, - "totalTradedVolume": 265, - "impliedVolatility": 11.21, - "lastPrice": 929.35, - "change": 386.95, - "pChange": 71.3403392330384, - "totalBuyQuantity": 4575, - "totalSellQuantity": 4725, - "bidQty": 75, - "bidprice": 896.25, - "askQty": 75, - "askPrice": 985.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23250, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23250.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 21.09, - "lastPrice": 301.25, - "change": -71.6, - "pChange": -19.2034330159582, - "totalBuyQuantity": 1800, - "totalSellQuantity": 900, - "bidQty": 1800, - "bidprice": 143.55, - "askQty": 900, - "askPrice": 205.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23250.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 875.75, - "change": -8.95000000000005, - "pChange": -1.01164236464339, - "totalBuyQuantity": 875, - "totalSellQuantity": 2350, - "bidQty": 850, - "bidprice": 920.2, - "askQty": 200, - "askPrice": 1357.2, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23250.00", - "openInterest": 430, - "changeinOpenInterest": 378, - "pchangeinOpenInterest": 726.923076923077, - "totalTradedVolume": 596, - "impliedVolatility": 15.51, - "lastPrice": 227.4, - "change": -149.85, - "pChange": -39.7216699801193, - "totalBuyQuantity": 2350, - "totalSellQuantity": 4800, - "bidQty": 25, - "bidprice": 205, - "askQty": 1800, - "askPrice": 244.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23300.00", - "openInterest": 44881, - "changeinOpenInterest": -60593, - "pchangeinOpenInterest": -57.4482810929708, - "totalTradedVolume": 606621, - "impliedVolatility": 0, - "lastPrice": 644.25, - "change": 428.3, - "pChange": 198.332947441537, - "totalBuyQuantity": 65075, - "totalSellQuantity": 52225, - "bidQty": 25, - "bidprice": 643.8, - "askQty": 25, - "askPrice": 650.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23300.00", - "openInterest": 157849, - "changeinOpenInterest": 6783, - "pchangeinOpenInterest": 4.49009042405306, - "totalTradedVolume": 2216083, - "impliedVolatility": 19.88, - "lastPrice": 43.4, - "change": -127.5, - "pChange": -74.6050321825629, - "totalBuyQuantity": 45725, - "totalSellQuantity": 367525, - "bidQty": 50, - "bidprice": 42.75, - "askQty": 1000, - "askPrice": 43.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23300.00", - "openInterest": 12717, - "changeinOpenInterest": 5765, - "pchangeinOpenInterest": 82.9257767548907, - "totalTradedVolume": 82965, - "impliedVolatility": 17.46, - "lastPrice": 79.55, - "change": -132.2, - "pChange": -62.4321133412042, - "totalBuyQuantity": 7050, - "totalSellQuantity": 36100, - "bidQty": 100, - "bidprice": 76.05, - "askQty": 25, - "askPrice": 80.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23300.00", - "openInterest": 2973, - "changeinOpenInterest": -960, - "pchangeinOpenInterest": -24.4088482074752, - "totalTradedVolume": 21770, - "impliedVolatility": 13.07, - "lastPrice": 723.5, - "change": 418.45, - "pChange": 137.174233732175, - "totalBuyQuantity": 19675, - "totalSellQuantity": 5350, - "bidQty": 50, - "bidprice": 710.5, - "askQty": 25, - "askPrice": 739.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23300.00", - "openInterest": 181, - "changeinOpenInterest": -82, - "pchangeinOpenInterest": -31.1787072243346, - "totalTradedVolume": 1054, - "impliedVolatility": 12.41, - "lastPrice": 783.9, - "change": 392.6, - "pChange": 100.332225913621, - "totalBuyQuantity": 4950, - "totalSellQuantity": 525, - "bidQty": 25, - "bidprice": 401.15, - "askQty": 100, - "askPrice": 813.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23300.00", - "openInterest": 997, - "changeinOpenInterest": 560, - "pchangeinOpenInterest": 128.146453089245, - "totalTradedVolume": 4396, - "impliedVolatility": 16.48, - "lastPrice": 107.45, - "change": -148.7, - "pChange": -58.0519227015421, - "totalBuyQuantity": 1425, - "totalSellQuantity": 2175, - "bidQty": 100, - "bidprice": 107.45, - "askQty": 25, - "askPrice": 116.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23300, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23300.00", - "openInterest": 85, - "changeinOpenInterest": 75, - "pchangeinOpenInterest": 750, - "totalTradedVolume": 166, - "impliedVolatility": 16.56, - "lastPrice": 142.4, - "change": -144.9, - "pChange": -50.4350852767142, - "totalBuyQuantity": 3100, - "totalSellQuantity": 1950, - "bidQty": 200, - "bidprice": 130.1, - "askQty": 700, - "askPrice": 152.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23300, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 0, - "bidQty": 1800, - "bidprice": 100.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23300.00", - "openInterest": 2444, - "changeinOpenInterest": -1104, - "pchangeinOpenInterest": -31.1161217587373, - "totalTradedVolume": 5916, - "impliedVolatility": 11.59, - "lastPrice": 893.7, - "change": 378.85, - "pChange": 73.5845391861707, - "totalBuyQuantity": 5250, - "totalSellQuantity": 6900, - "bidQty": 100, - "bidprice": 871.25, - "askQty": 225, - "askPrice": 915.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23300.00", - "openInterest": 13235, - "changeinOpenInterest": 1472, - "pchangeinOpenInterest": 12.513814503103, - "totalTradedVolume": 28583, - "impliedVolatility": 15.79, - "lastPrice": 154.45, - "change": -157.7, - "pChange": -50.5205830530194, - "totalBuyQuantity": 7250, - "totalSellQuantity": 8575, - "bidQty": 1775, - "bidprice": 154.55, - "askQty": 25, - "askPrice": 163, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23300, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23300, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23300.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 19.64, - "lastPrice": 277.1, - "change": -116.9, - "pChange": -29.6700507614213, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1050, - "bidQty": 900, - "bidprice": 170.1, - "askQty": 300, - "askPrice": 201.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23300.00", - "openInterest": 745, - "changeinOpenInterest": -40, - "pchangeinOpenInterest": -5.09554140127389, - "totalTradedVolume": 864, - "impliedVolatility": 9.7, - "lastPrice": 1117.1, - "change": 358.3, - "pChange": 47.2192936215076, - "totalBuyQuantity": 2325, - "totalSellQuantity": 3800, - "bidQty": 100, - "bidprice": 1082.4, - "askQty": 25, - "askPrice": 1153.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23300.00", - "openInterest": 1616, - "changeinOpenInterest": 511, - "pchangeinOpenInterest": 46.2443438914027, - "totalTradedVolume": 2074, - "impliedVolatility": 15.3, - "lastPrice": 233.2, - "change": -153.95, - "pChange": -39.7649489861811, - "totalBuyQuantity": 3600, - "totalSellQuantity": 6825, - "bidQty": 25, - "bidprice": 218.35, - "askQty": 300, - "askPrice": 242, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23350.00", - "openInterest": 61717, - "changeinOpenInterest": 4977, - "pchangeinOpenInterest": 8.77158970743743, - "totalTradedVolume": 999230, - "impliedVolatility": 19.66, - "lastPrice": 49.5, - "change": -143.25, - "pChange": -74.3190661478599, - "totalBuyQuantity": 15775, - "totalSellQuantity": 156225, - "bidQty": 100, - "bidprice": 48, - "askQty": 1575, - "askPrice": 49.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23350.00", - "openInterest": 34510, - "changeinOpenInterest": -22464, - "pchangeinOpenInterest": -39.428511250746, - "totalTradedVolume": 353535, - "impliedVolatility": 11.66, - "lastPrice": 602.25, - "change": 413.95, - "pChange": 219.835369091875, - "totalBuyQuantity": 28450, - "totalSellQuantity": 9750, - "bidQty": 175, - "bidprice": 598.9, - "askQty": 1800, - "askPrice": 607.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23350.00", - "openInterest": 2762, - "changeinOpenInterest": 1245, - "pchangeinOpenInterest": 82.0698747528016, - "totalTradedVolume": 20069, - "impliedVolatility": 17.18, - "lastPrice": 86, - "change": -145.45, - "pChange": -62.8429466407431, - "totalBuyQuantity": 4575, - "totalSellQuantity": 6100, - "bidQty": 25, - "bidprice": 86, - "askQty": 500, - "askPrice": 93.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23350.00", - "openInterest": 895, - "changeinOpenInterest": -1080, - "pchangeinOpenInterest": -54.6835443037975, - "totalTradedVolume": 6370, - "impliedVolatility": 13.5, - "lastPrice": 684.35, - "change": 405.1, - "pChange": 145.067144136079, - "totalBuyQuantity": 17050, - "totalSellQuantity": 4350, - "bidQty": 100, - "bidprice": 668.75, - "askQty": 150, - "askPrice": 695.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23350.00", - "openInterest": 80, - "changeinOpenInterest": -65, - "pchangeinOpenInterest": -44.8275862068966, - "totalTradedVolume": 443, - "impliedVolatility": 12.08, - "lastPrice": 737.45, - "change": 382.5, - "pChange": 107.761656571348, - "totalBuyQuantity": 8675, - "totalSellQuantity": 0, - "bidQty": 500, - "bidprice": 529.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23350.00", - "openInterest": 140, - "changeinOpenInterest": 69, - "pchangeinOpenInterest": 97.1830985915493, - "totalTradedVolume": 571, - "impliedVolatility": 16.79, - "lastPrice": 123.6, - "change": -152, - "pChange": -55.1523947750363, - "totalBuyQuantity": 1225, - "totalSellQuantity": 1875, - "bidQty": 25, - "bidprice": 110.75, - "askQty": 300, - "askPrice": 140.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23350, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23350.00", - "openInterest": 11, - "changeinOpenInterest": 11, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 14, - "impliedVolatility": 20.63, - "lastPrice": 240.55, - "change": -61.1, - "pChange": -20.2552627216973, - "totalBuyQuantity": 2950, - "totalSellQuantity": 3000, - "bidQty": 900, - "bidprice": 85.55, - "askQty": 900, - "askPrice": 211.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23350, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23350.00", - "openInterest": 2, - "changeinOpenInterest": -8, - "pchangeinOpenInterest": -80, - "totalTradedVolume": 15, - "impliedVolatility": 0, - "lastPrice": 610, - "change": 165.75, - "pChange": 37.3100731570062, - "totalBuyQuantity": 2700, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 120.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23350.00", - "openInterest": 1162, - "changeinOpenInterest": -127, - "pchangeinOpenInterest": -9.85259891388673, - "totalTradedVolume": 2871, - "impliedVolatility": 16.65, - "lastPrice": 186.5, - "change": -143.3, - "pChange": -43.4505761067314, - "totalBuyQuantity": 5350, - "totalSellQuantity": 7325, - "bidQty": 900, - "bidprice": 159.1, - "askQty": 1800, - "askPrice": 186.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23350.00", - "openInterest": 584, - "changeinOpenInterest": -76, - "pchangeinOpenInterest": -11.5151515151515, - "totalTradedVolume": 993, - "impliedVolatility": 11.13, - "lastPrice": 844.3, - "change": 357.85, - "pChange": 73.5635728235173, - "totalBuyQuantity": 3125, - "totalSellQuantity": 4925, - "bidQty": 75, - "bidprice": 828.95, - "askQty": 100, - "askPrice": 909.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23350, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23350.00", - "openInterest": 4, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 5, - "impliedVolatility": 17, - "lastPrice": 221.7, - "change": -194.2, - "pChange": -46.6939168069247, - "totalBuyQuantity": 1800, - "totalSellQuantity": 975, - "bidQty": 900, - "bidprice": 175.65, - "askQty": 75, - "askPrice": 221.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23350, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23350.00", - "openInterest": 91, - "changeinOpenInterest": 30, - "pchangeinOpenInterest": 49.1803278688525, - "totalTradedVolume": 120, - "impliedVolatility": 9.01, - "lastPrice": 1059.25, - "change": 338.15, - "pChange": 46.8936347247261, - "totalBuyQuantity": 950, - "totalSellQuantity": 3575, - "bidQty": 25, - "bidprice": 1066.15, - "askQty": 900, - "askPrice": 1187, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23350.00", - "openInterest": 151, - "changeinOpenInterest": 119, - "pchangeinOpenInterest": 371.875, - "totalTradedVolume": 256, - "impliedVolatility": 15.36, - "lastPrice": 248.5, - "change": -152.6, - "pChange": -38.0453752181501, - "totalBuyQuantity": 3650, - "totalSellQuantity": 3925, - "bidQty": 25, - "bidprice": 241, - "askQty": 25, - "askPrice": 274.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23400.00", - "openInterest": 174634, - "changeinOpenInterest": 50682, - "pchangeinOpenInterest": 40.8884084161611, - "totalTradedVolume": 2832696, - "impliedVolatility": 19.28, - "lastPrice": 55.1, - "change": -160.35, - "pChange": -74.4256207936876, - "totalBuyQuantity": 45550, - "totalSellQuantity": 417650, - "bidQty": 25, - "bidprice": 55.15, - "askQty": 1000, - "askPrice": 55.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23400.00", - "openInterest": 67013, - "changeinOpenInterest": -44812, - "pchangeinOpenInterest": -40.0733288620613, - "totalTradedVolume": 1487702, - "impliedVolatility": 11.75, - "lastPrice": 555.35, - "change": 393.25, - "pChange": 242.597162245527, - "totalBuyQuantity": 47300, - "totalSellQuantity": 11700, - "bidQty": 25, - "bidprice": 555.35, - "askQty": 1800, - "askPrice": 562.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23400.00", - "openInterest": 5219, - "changeinOpenInterest": -261, - "pchangeinOpenInterest": -4.76277372262774, - "totalTradedVolume": 51600, - "impliedVolatility": 12.95, - "lastPrice": 636.4, - "change": 387.8, - "pChange": 155.993563958166, - "totalBuyQuantity": 19325, - "totalSellQuantity": 5525, - "bidQty": 25, - "bidprice": 638.2, - "askQty": 225, - "askPrice": 653, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23400.00", - "openInterest": 15834, - "changeinOpenInterest": 9989, - "pchangeinOpenInterest": 170.898203592814, - "totalTradedVolume": 121953, - "impliedVolatility": 17.12, - "lastPrice": 95.95, - "change": -157.6, - "pChange": -62.1573654111615, - "totalBuyQuantity": 6200, - "totalSellQuantity": 40925, - "bidQty": 25, - "bidprice": 94.5, - "askQty": 125, - "askPrice": 95.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23400.00", - "openInterest": 250, - "changeinOpenInterest": 91, - "pchangeinOpenInterest": 57.2327044025157, - "totalTradedVolume": 1599, - "impliedVolatility": 12.66, - "lastPrice": 704.2, - "change": 373.7, - "pChange": 113.071104387292, - "totalBuyQuantity": 10150, - "totalSellQuantity": 1000, - "bidQty": 25, - "bidprice": 668.85, - "askQty": 75, - "askPrice": 726.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23400.00", - "openInterest": 1131, - "changeinOpenInterest": 790, - "pchangeinOpenInterest": 231.671554252199, - "totalTradedVolume": 5287, - "impliedVolatility": 16.39, - "lastPrice": 128.9, - "change": -167.25, - "pChange": -56.4747594124599, - "totalBuyQuantity": 1950, - "totalSellQuantity": 2850, - "bidQty": 150, - "bidprice": 123.25, - "askQty": 50, - "askPrice": 130, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23400, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23400.00", - "openInterest": 64, - "changeinOpenInterest": 37, - "pchangeinOpenInterest": 137.037037037037, - "totalTradedVolume": 91, - "impliedVolatility": 16.37, - "lastPrice": 163.55, - "change": -165.7, - "pChange": -50.3264996203493, - "totalBuyQuantity": 2950, - "totalSellQuantity": 2600, - "bidQty": 25, - "bidprice": 151.2, - "askQty": 900, - "askPrice": 178, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23400, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23400.00", - "openInterest": 10, - "changeinOpenInterest": -11, - "pchangeinOpenInterest": -52.3809523809524, - "totalTradedVolume": 61, - "impliedVolatility": 13.25, - "lastPrice": 781.8, - "change": 383.8, - "pChange": 96.4321608040201, - "totalBuyQuantity": 5600, - "totalSellQuantity": 525, - "bidQty": 25, - "bidprice": 737.3, - "askQty": 275, - "askPrice": 836.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23400.00", - "openInterest": 3052, - "changeinOpenInterest": -1584, - "pchangeinOpenInterest": -34.167385677308, - "totalTradedVolume": 12385, - "impliedVolatility": 11.71, - "lastPrice": 815, - "change": 360.95, - "pChange": 79.4956502587821, - "totalBuyQuantity": 5375, - "totalSellQuantity": 5650, - "bidQty": 25, - "bidprice": 806.3, - "askQty": 25, - "askPrice": 826, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23400.00", - "openInterest": 13258, - "changeinOpenInterest": 1361, - "pchangeinOpenInterest": 11.4398587879297, - "totalTradedVolume": 42195, - "impliedVolatility": 15.76, - "lastPrice": 179, - "change": -169.25, - "pChange": -48.6001435750179, - "totalBuyQuantity": 5200, - "totalSellQuantity": 13900, - "bidQty": 25, - "bidprice": 176.4, - "askQty": 50, - "askPrice": 179, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23400, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 788.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23400, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 900, - "bidQty": 300, - "bidprice": 183.15, - "askQty": 900, - "askPrice": 232.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23400.00", - "openInterest": 1458, - "changeinOpenInterest": 991, - "pchangeinOpenInterest": 212.20556745182, - "totalTradedVolume": 2005, - "impliedVolatility": 15.65, - "lastPrice": 271.75, - "change": -149.75, - "pChange": -35.5278766310795, - "totalBuyQuantity": 2500, - "totalSellQuantity": 1825, - "bidQty": 125, - "bidprice": 250.8, - "askQty": 25, - "askPrice": 264.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23400.00", - "openInterest": 476, - "changeinOpenInterest": 114, - "pchangeinOpenInterest": 31.4917127071823, - "totalTradedVolume": 444, - "impliedVolatility": 9.92, - "lastPrice": 1040.5, - "change": 356.3, - "pChange": 52.0754165448699, - "totalBuyQuantity": 3100, - "totalSellQuantity": 4075, - "bidQty": 300, - "bidprice": 1000, - "askQty": 900, - "askPrice": 1086.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23450.00", - "openInterest": 30613, - "changeinOpenInterest": 9311, - "pchangeinOpenInterest": 43.7095108440522, - "totalTradedVolume": 948477, - "impliedVolatility": 12.78, - "lastPrice": 514.2, - "change": 374.6, - "pChange": 268.338108882522, - "totalBuyQuantity": 27550, - "totalSellQuantity": 7650, - "bidQty": 600, - "bidprice": 512.55, - "askQty": 25, - "askPrice": 518.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23450.00", - "openInterest": 57613, - "changeinOpenInterest": 43571, - "pchangeinOpenInterest": 310.290556900726, - "totalTradedVolume": 1371396, - "impliedVolatility": 19.15, - "lastPrice": 63.5, - "change": -177.8, - "pChange": -73.6842105263158, - "totalBuyQuantity": 18425, - "totalSellQuantity": 171775, - "bidQty": 1900, - "bidprice": 62, - "askQty": 25, - "askPrice": 63.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23450.00", - "openInterest": 4744, - "changeinOpenInterest": 4028, - "pchangeinOpenInterest": 562.569832402235, - "totalTradedVolume": 32937, - "impliedVolatility": 17.29, - "lastPrice": 110, - "change": -164.5, - "pChange": -59.9271402550091, - "totalBuyQuantity": 4475, - "totalSellQuantity": 10675, - "bidQty": 100, - "bidprice": 105.1, - "askQty": 25, - "askPrice": 111, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23450.00", - "openInterest": 685, - "changeinOpenInterest": -206, - "pchangeinOpenInterest": -23.1200897867565, - "totalTradedVolume": 12957, - "impliedVolatility": 12.18, - "lastPrice": 586.35, - "change": 361.4, - "pChange": 160.657923983107, - "totalBuyQuantity": 11050, - "totalSellQuantity": 4350, - "bidQty": 725, - "bidprice": 593.05, - "askQty": 150, - "askPrice": 615.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23450.00", - "openInterest": 86, - "changeinOpenInterest": -42, - "pchangeinOpenInterest": -32.8125, - "totalTradedVolume": 681, - "impliedVolatility": 12.27, - "lastPrice": 658.25, - "change": 354.4, - "pChange": 116.636498272174, - "totalBuyQuantity": 8775, - "totalSellQuantity": 1775, - "bidQty": 650, - "bidprice": 630.25, - "askQty": 25, - "askPrice": 1199.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23450.00", - "openInterest": 187, - "changeinOpenInterest": 113, - "pchangeinOpenInterest": 152.702702702703, - "totalTradedVolume": 708, - "impliedVolatility": 16.02, - "lastPrice": 135, - "change": -186.55, - "pChange": -58.0158606748562, - "totalBuyQuantity": 1225, - "totalSellQuantity": 2575, - "bidQty": 25, - "bidprice": 130, - "askQty": 900, - "askPrice": 152.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23450, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23450.00", - "openInterest": 2, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 18.32, - "lastPrice": 219.55, - "change": -41.45, - "pChange": -15.8812260536398, - "totalBuyQuantity": 2125, - "totalSellQuantity": 2800, - "bidQty": 100, - "bidprice": 138.8, - "askQty": 1800, - "askPrice": 208.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23450, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23450.00", - "openInterest": 1, - "changeinOpenInterest": -3, - "pchangeinOpenInterest": -75, - "totalTradedVolume": 13, - "impliedVolatility": 0, - "lastPrice": 630, - "change": 244.5, - "pChange": 63.4241245136187, - "totalBuyQuantity": 4075, - "totalSellQuantity": 0, - "bidQty": 475, - "bidprice": 65.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23450.00", - "openInterest": 786, - "changeinOpenInterest": 141, - "pchangeinOpenInterest": 21.8604651162791, - "totalTradedVolume": 1857, - "impliedVolatility": 11.53, - "lastPrice": 771.95, - "change": 346.15, - "pChange": 81.2940347581024, - "totalBuyQuantity": 3900, - "totalSellQuantity": 5425, - "bidQty": 25, - "bidprice": 754.55, - "askQty": 100, - "askPrice": 809.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23450.00", - "openInterest": 989, - "changeinOpenInterest": 295, - "pchangeinOpenInterest": 42.507204610951, - "totalTradedVolume": 2970, - "impliedVolatility": 15.64, - "lastPrice": 189.9, - "change": -180.8, - "pChange": -48.7725923927704, - "totalBuyQuantity": 4175, - "totalSellQuantity": 6150, - "bidQty": 500, - "bidprice": 181.55, - "askQty": 25, - "askPrice": 200, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23450, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23450.00", - "openInterest": 2, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 18.82, - "lastPrice": 300.9, - "change": -161.15, - "pChange": -34.877177794611, - "totalBuyQuantity": 1950, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 101.15, - "askQty": 900, - "askPrice": 240.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23450, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23450.00", - "openInterest": 32, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 14.2857142857143, - "totalTradedVolume": 31, - "impliedVolatility": 0, - "lastPrice": 825.75, - "change": 170.45, - "pChange": 26.0109873340455, - "totalBuyQuantity": 100, - "totalSellQuantity": 2825, - "bidQty": 25, - "bidprice": 965.1, - "askQty": 150, - "askPrice": 1051.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23450.00", - "openInterest": 133, - "changeinOpenInterest": 101, - "pchangeinOpenInterest": 315.625, - "totalTradedVolume": 166, - "impliedVolatility": 15.34, - "lastPrice": 275.4, - "change": -144.6, - "pChange": -34.4285714285714, - "totalBuyQuantity": 1200, - "totalSellQuantity": 3075, - "bidQty": 900, - "bidprice": 241.95, - "askQty": 900, - "askPrice": 280.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23500.00", - "openInterest": 307822, - "changeinOpenInterest": 154879, - "pchangeinOpenInterest": 101.265831061245, - "totalTradedVolume": 4386764, - "impliedVolatility": 18.78, - "lastPrice": 70.75, - "change": -198.6, - "pChange": -73.7330610729534, - "totalBuyQuantity": 498925, - "totalSellQuantity": 717500, - "bidQty": 775, - "bidprice": 69.2, - "askQty": 275, - "askPrice": 70.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23500.00", - "openInterest": 121711, - "changeinOpenInterest": -50772, - "pchangeinOpenInterest": -29.4359444119131, - "totalTradedVolume": 3718750, - "impliedVolatility": 13.06, - "lastPrice": 471.8, - "change": 355, - "pChange": 303.938356164384, - "totalBuyQuantity": 139625, - "totalSellQuantity": 24725, - "bidQty": 1800, - "bidprice": 471.6, - "askQty": 600, - "askPrice": 477.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23500.00", - "openInterest": 16013, - "changeinOpenInterest": 3301, - "pchangeinOpenInterest": 25.9675896790434, - "totalTradedVolume": 129327, - "impliedVolatility": 12.69, - "lastPrice": 551.3, - "change": 354.25, - "pChange": 179.77670641969, - "totalBuyQuantity": 20950, - "totalSellQuantity": 4950, - "bidQty": 700, - "bidprice": 557.15, - "askQty": 250, - "askPrice": 570, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23500.00", - "openInterest": 30467, - "changeinOpenInterest": 20327, - "pchangeinOpenInterest": 200.463510848126, - "totalTradedVolume": 181989, - "impliedVolatility": 16.54, - "lastPrice": 112.05, - "change": -190.05, - "pChange": -62.909632571996, - "totalBuyQuantity": 10800, - "totalSellQuantity": 85900, - "bidQty": 325, - "bidprice": 112.05, - "askQty": 250, - "askPrice": 114, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23500.00", - "openInterest": 1251, - "changeinOpenInterest": 472, - "pchangeinOpenInterest": 60.5905006418485, - "totalTradedVolume": 7130, - "impliedVolatility": 12.49, - "lastPrice": 622.5, - "change": 343.15, - "pChange": 122.838732772508, - "totalBuyQuantity": 9150, - "totalSellQuantity": 725, - "bidQty": 200, - "bidprice": 617.7, - "askQty": 150, - "askPrice": 647.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23500.00", - "openInterest": 2654, - "changeinOpenInterest": 1829, - "pchangeinOpenInterest": 221.69696969697, - "totalTradedVolume": 12259, - "impliedVolatility": 16.05, - "lastPrice": 149.05, - "change": -192, - "pChange": -56.2967306846503, - "totalBuyQuantity": 2400, - "totalSellQuantity": 6200, - "bidQty": 150, - "bidprice": 143.6, - "askQty": 25, - "askPrice": 154.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23500, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23500.00", - "openInterest": 272, - "changeinOpenInterest": 134, - "pchangeinOpenInterest": 97.1014492753623, - "totalTradedVolume": 677, - "impliedVolatility": 15.66, - "lastPrice": 176.15, - "change": -195.25, - "pChange": -52.571351642434, - "totalBuyQuantity": 3850, - "totalSellQuantity": 4450, - "bidQty": 250, - "bidprice": 171.35, - "askQty": 25, - "askPrice": 180, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23500, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23500.00", - "openInterest": 155, - "changeinOpenInterest": 30, - "pchangeinOpenInterest": 24, - "totalTradedVolume": 414, - "impliedVolatility": 11.47, - "lastPrice": 670.95, - "change": 325.5, - "pChange": 94.2249240121581, - "totalBuyQuantity": 5800, - "totalSellQuantity": 250, - "bidQty": 300, - "bidprice": 671.7, - "askQty": 125, - "askPrice": 718.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23500.00", - "openInterest": 93129, - "changeinOpenInterest": 19824, - "pchangeinOpenInterest": 27.0431757724575, - "totalTradedVolume": 160333, - "impliedVolatility": 15.47, - "lastPrice": 200, - "change": -195, - "pChange": -49.3670886075949, - "totalBuyQuantity": 15800, - "totalSellQuantity": 61050, - "bidQty": 4825, - "bidprice": 200, - "askQty": 50, - "askPrice": 205, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23500.00", - "openInterest": 35071, - "changeinOpenInterest": 1437, - "pchangeinOpenInterest": 4.27246238924897, - "totalTradedVolume": 77999, - "impliedVolatility": 11.88, - "lastPrice": 741, - "change": 343.6, - "pChange": 86.4620030196276, - "totalBuyQuantity": 12800, - "totalSellQuantity": 11375, - "bidQty": 25, - "bidprice": 737.05, - "askQty": 25, - "askPrice": 744.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23500, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23500.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2400, - "totalSellQuantity": 1050, - "bidQty": 900, - "bidprice": 218.9, - "askQty": 300, - "askPrice": 239.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23500, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23500.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 600, - "totalSellQuantity": 225, - "bidQty": 300, - "bidprice": 773.1, - "askQty": 225, - "askPrice": 826.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23500.00", - "openInterest": 4973, - "changeinOpenInterest": 25, - "pchangeinOpenInterest": 0.505254648342765, - "totalTradedVolume": 4056, - "impliedVolatility": 9.96, - "lastPrice": 962.65, - "change": 333.1, - "pChange": 52.9108093082361, - "totalBuyQuantity": 3025, - "totalSellQuantity": 4675, - "bidQty": 200, - "bidprice": 960, - "askQty": 25, - "askPrice": 984.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23500.00", - "openInterest": 21368, - "changeinOpenInterest": 2645, - "pchangeinOpenInterest": 14.1270095604337, - "totalTradedVolume": 14540, - "impliedVolatility": 15.13, - "lastPrice": 282.95, - "change": -177.25, - "pChange": -38.515862668405, - "totalBuyQuantity": 7400, - "totalSellQuantity": 8150, - "bidQty": 600, - "bidprice": 275.75, - "askQty": 25, - "askPrice": 284.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23550.00", - "openInterest": 29696, - "changeinOpenInterest": 5923, - "pchangeinOpenInterest": 24.9148193328566, - "totalTradedVolume": 1632316, - "impliedVolatility": 13.52, - "lastPrice": 432.65, - "change": 334.95, - "pChange": 342.835209825998, - "totalBuyQuantity": 28350, - "totalSellQuantity": 11375, - "bidQty": 200, - "bidprice": 432.65, - "askQty": 600, - "askPrice": 438.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23550.00", - "openInterest": 61518, - "changeinOpenInterest": 49050, - "pchangeinOpenInterest": 393.407122232916, - "totalTradedVolume": 1450609, - "impliedVolatility": 18.42, - "lastPrice": 79, - "change": -218.35, - "pChange": -73.431982512191, - "totalBuyQuantity": 18800, - "totalSellQuantity": 223500, - "bidQty": 1000, - "bidprice": 77.7, - "askQty": 1025, - "askPrice": 80.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23550.00", - "openInterest": 1225, - "changeinOpenInterest": 168, - "pchangeinOpenInterest": 15.8940397350993, - "totalTradedVolume": 23933, - "impliedVolatility": 13.27, - "lastPrice": 519.7, - "change": 342.4, - "pChange": 193.119007332205, - "totalBuyQuantity": 13300, - "totalSellQuantity": 4925, - "bidQty": 100, - "bidprice": 511.2, - "askQty": 600, - "askPrice": 535.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23550.00", - "openInterest": 2497, - "changeinOpenInterest": 2060, - "pchangeinOpenInterest": 471.395881006865, - "totalTradedVolume": 29601, - "impliedVolatility": 16.4, - "lastPrice": 123.4, - "change": -202.35, - "pChange": -62.1181887950883, - "totalBuyQuantity": 4050, - "totalSellQuantity": 10000, - "bidQty": 25, - "bidprice": 123.35, - "askQty": 25, - "askPrice": 129, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23550.00", - "openInterest": 216, - "changeinOpenInterest": 179, - "pchangeinOpenInterest": 483.783783783784, - "totalTradedVolume": 1046, - "impliedVolatility": 12.44, - "lastPrice": 583.5, - "change": 332.65, - "pChange": 132.609128961531, - "totalBuyQuantity": 13075, - "totalSellQuantity": 950, - "bidQty": 500, - "bidprice": 569.2, - "askQty": 25, - "askPrice": 623.2, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23550.00", - "openInterest": 237, - "changeinOpenInterest": 185, - "pchangeinOpenInterest": 355.769230769231, - "totalTradedVolume": 905, - "impliedVolatility": 15.86, - "lastPrice": 159.8, - "change": -196.35, - "pChange": -55.1312649164678, - "totalBuyQuantity": 1725, - "totalSellQuantity": 1775, - "bidQty": 500, - "bidprice": 137.3, - "askQty": 525, - "askPrice": 179.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23550, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23550.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 545.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6100, - "totalSellQuantity": 600, - "bidQty": 400, - "bidprice": 327.05, - "askQty": 500, - "askPrice": 722.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23550, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23550.00", - "openInterest": 116, - "changeinOpenInterest": 100, - "pchangeinOpenInterest": 625, - "totalTradedVolume": 152, - "impliedVolatility": 16.32, - "lastPrice": 205.75, - "change": -194.25, - "pChange": -48.5625, - "totalBuyQuantity": 1025, - "totalSellQuantity": 2200, - "bidQty": 25, - "bidprice": 180.05, - "askQty": 300, - "askPrice": 227.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23550.00", - "openInterest": 1487, - "changeinOpenInterest": 410, - "pchangeinOpenInterest": 38.0687093779016, - "totalTradedVolume": 3395, - "impliedVolatility": 11.5, - "lastPrice": 695.15, - "change": 322.25, - "pChange": 86.4172700455886, - "totalBuyQuantity": 5025, - "totalSellQuantity": 3400, - "bidQty": 25, - "bidprice": 680.4, - "askQty": 25, - "askPrice": 733.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23550.00", - "openInterest": 1464, - "changeinOpenInterest": -346, - "pchangeinOpenInterest": -19.1160220994475, - "totalTradedVolume": 4847, - "impliedVolatility": 15.41, - "lastPrice": 213.5, - "change": -201.45, - "pChange": -48.5480178334739, - "totalBuyQuantity": 4350, - "totalSellQuantity": 9450, - "bidQty": 525, - "bidprice": 206.6, - "askQty": 1775, - "askPrice": 215.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23550, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23550.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 23.77, - "lastPrice": 480, - "change": -31.2, - "pChange": -6.10328638497652, - "totalBuyQuantity": 2175, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 124.5, - "askQty": 900, - "askPrice": 270.05, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23550, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23550.00", - "openInterest": 82, - "changeinOpenInterest": 43, - "pchangeinOpenInterest": 110.25641025641, - "totalTradedVolume": 122, - "impliedVolatility": 15.47, - "lastPrice": 310.2, - "change": -169.45, - "pChange": -35.3278432190139, - "totalBuyQuantity": 2300, - "totalSellQuantity": 4550, - "bidQty": 200, - "bidprice": 271.3, - "askQty": 25, - "askPrice": 318.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23550.00", - "openInterest": 175, - "changeinOpenInterest": 9, - "pchangeinOpenInterest": 5.42168674698795, - "totalTradedVolume": 129, - "impliedVolatility": 9.25, - "lastPrice": 903.15, - "change": 313.15, - "pChange": 53.0762711864407, - "totalBuyQuantity": 1700, - "totalSellQuantity": 2825, - "bidQty": 25, - "bidprice": 873.05, - "askQty": 25, - "askPrice": 980.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23600.00", - "openInterest": 71678, - "changeinOpenInterest": -32631, - "pchangeinOpenInterest": -31.2830148884564, - "totalTradedVolume": 3036181, - "impliedVolatility": 14.17, - "lastPrice": 397.6, - "change": 317.5, - "pChange": 396.379525593009, - "totalBuyQuantity": 67475, - "totalSellQuantity": 15850, - "bidQty": 600, - "bidprice": 392, - "askQty": 75, - "askPrice": 398.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23600.00", - "openInterest": 158077, - "changeinOpenInterest": 97365, - "pchangeinOpenInterest": 160.371919884043, - "totalTradedVolume": 2356407, - "impliedVolatility": 18.31, - "lastPrice": 90.8, - "change": -240.35, - "pChange": -72.580401630681, - "totalBuyQuantity": 47750, - "totalSellQuantity": 339150, - "bidQty": 150, - "bidprice": 89.55, - "askQty": 950, - "askPrice": 90.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23600.00", - "openInterest": 15636, - "changeinOpenInterest": 10944, - "pchangeinOpenInterest": 233.248081841432, - "totalTradedVolume": 107699, - "impliedVolatility": 16.28, - "lastPrice": 135.9, - "change": -221, - "pChange": -61.9221070327823, - "totalBuyQuantity": 5625, - "totalSellQuantity": 33625, - "bidQty": 150, - "bidprice": 133.05, - "askQty": 50, - "askPrice": 135.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23600.00", - "openInterest": 11887, - "changeinOpenInterest": 3821, - "pchangeinOpenInterest": 47.3716836102157, - "totalTradedVolume": 95033, - "impliedVolatility": 13.79, - "lastPrice": 489.6, - "change": 336.15, - "pChange": 219.061583577713, - "totalBuyQuantity": 22025, - "totalSellQuantity": 7850, - "bidQty": 1300, - "bidprice": 477.5, - "askQty": 100, - "askPrice": 492.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23600.00", - "openInterest": 1343, - "changeinOpenInterest": 1160, - "pchangeinOpenInterest": 633.879781420765, - "totalTradedVolume": 5912, - "impliedVolatility": 15.86, - "lastPrice": 174.95, - "change": -216.8, - "pChange": -55.3414167198469, - "totalBuyQuantity": 1475, - "totalSellQuantity": 4425, - "bidQty": 100, - "bidprice": 166.6, - "askQty": 25, - "askPrice": 175, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23600.00", - "openInterest": 659, - "changeinOpenInterest": 463, - "pchangeinOpenInterest": 236.224489795918, - "totalTradedVolume": 3340, - "impliedVolatility": 12.53, - "lastPrice": 548.2, - "change": 323.85, - "pChange": 144.350345442389, - "totalBuyQuantity": 12525, - "totalSellQuantity": 1100, - "bidQty": 25, - "bidprice": 545, - "askQty": 25, - "askPrice": 565, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23600, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23600.00", - "openInterest": 7, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 295, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8425, - "totalSellQuantity": 1900, - "bidQty": 200, - "bidprice": 596.95, - "askQty": 900, - "askPrice": 653.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23600, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2150, - "totalSellQuantity": 3375, - "bidQty": 200, - "bidprice": 192.05, - "askQty": 25, - "askPrice": 223.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23600.00", - "openInterest": 4030, - "changeinOpenInterest": -321, - "pchangeinOpenInterest": -7.37761434153068, - "totalTradedVolume": 20068, - "impliedVolatility": 11.81, - "lastPrice": 665.75, - "change": 319.6, - "pChange": 92.3299147768309, - "totalBuyQuantity": 13875, - "totalSellQuantity": 5325, - "bidQty": 1675, - "bidprice": 653.95, - "askQty": 100, - "askPrice": 675.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23600.00", - "openInterest": 12264, - "changeinOpenInterest": 2980, - "pchangeinOpenInterest": 32.0982335200345, - "totalTradedVolume": 39486, - "impliedVolatility": 15.33, - "lastPrice": 227.25, - "change": -212.9, - "pChange": -48.3698739066227, - "totalBuyQuantity": 7725, - "totalSellQuantity": 10925, - "bidQty": 25, - "bidprice": 222, - "askQty": 125, - "askPrice": 227.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23600, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 0, - "lastPrice": 570.85, - "change": 86.6, - "pChange": 17.8833247289623, - "totalBuyQuantity": 1575, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 216, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23600, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1200, - "totalSellQuantity": 825, - "bidQty": 600, - "bidprice": 234.65, - "askQty": 825, - "askPrice": 275.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23600.00", - "openInterest": 470, - "changeinOpenInterest": -171, - "pchangeinOpenInterest": -26.6770670826833, - "totalTradedVolume": 754, - "impliedVolatility": 10.76, - "lastPrice": 911.75, - "change": 338.8, - "pChange": 59.132559560171, - "totalBuyQuantity": 2550, - "totalSellQuantity": 3275, - "bidQty": 300, - "bidprice": 843.9, - "askQty": 25, - "askPrice": 922, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23600.00", - "openInterest": 6277, - "changeinOpenInterest": 77, - "pchangeinOpenInterest": 1.24193548387097, - "totalTradedVolume": 2359, - "impliedVolatility": 14.84, - "lastPrice": 303.2, - "change": -198.95, - "pChange": -39.6196355670616, - "totalBuyQuantity": 2500, - "totalSellQuantity": 2150, - "bidQty": 100, - "bidprice": 302, - "askQty": 25, - "askPrice": 312, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23650.00", - "openInterest": 43355, - "changeinOpenInterest": 35670, - "pchangeinOpenInterest": 464.150943396226, - "totalTradedVolume": 912111, - "impliedVolatility": 17.92, - "lastPrice": 101, - "change": -264.8, - "pChange": -72.3892837616184, - "totalBuyQuantity": 21150, - "totalSellQuantity": 130275, - "bidQty": 1000, - "bidprice": 101.2, - "askQty": 1000, - "askPrice": 102.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23650.00", - "openInterest": 18407, - "changeinOpenInterest": -6105, - "pchangeinOpenInterest": -24.9061684073107, - "totalTradedVolume": 1360939, - "impliedVolatility": 13.78, - "lastPrice": 355.55, - "change": 289.9, - "pChange": 441.584158415842, - "totalBuyQuantity": 25450, - "totalSellQuantity": 6400, - "bidQty": 250, - "bidprice": 352.25, - "askQty": 25, - "askPrice": 358, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23650.00", - "openInterest": 2381, - "changeinOpenInterest": 2017, - "pchangeinOpenInterest": 554.120879120879, - "totalTradedVolume": 23675, - "impliedVolatility": 16.18, - "lastPrice": 150, - "change": -235.8, - "pChange": -61.1197511664075, - "totalBuyQuantity": 3225, - "totalSellQuantity": 11275, - "bidQty": 250, - "bidprice": 142.1, - "askQty": 25, - "askPrice": 157.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23650.00", - "openInterest": 1476, - "changeinOpenInterest": 378, - "pchangeinOpenInterest": 34.4262295081967, - "totalTradedVolume": 22255, - "impliedVolatility": 13.76, - "lastPrice": 453.35, - "change": 318.45, - "pChange": 236.063750926612, - "totalBuyQuantity": 14675, - "totalSellQuantity": 4775, - "bidQty": 50, - "bidprice": 434.7, - "askQty": 25, - "askPrice": 467.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23650.00", - "openInterest": 265, - "changeinOpenInterest": 247, - "pchangeinOpenInterest": 1372.22222222222, - "totalTradedVolume": 893, - "impliedVolatility": 16.14, - "lastPrice": 196.9, - "change": -212.6, - "pChange": -51.9169719169719, - "totalBuyQuantity": 825, - "totalSellQuantity": 4875, - "bidQty": 300, - "bidprice": 162.45, - "askQty": 1800, - "askPrice": 196.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23650.00", - "openInterest": 51, - "changeinOpenInterest": -26, - "pchangeinOpenInterest": -33.7662337662338, - "totalTradedVolume": 731, - "impliedVolatility": 12.34, - "lastPrice": 508.9, - "change": 296.05, - "pChange": 139.088560018793, - "totalBuyQuantity": 11000, - "totalSellQuantity": 675, - "bidQty": 50, - "bidprice": 26.7, - "askQty": 50, - "askPrice": 554.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23650, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23650.00", - "openInterest": 25, - "changeinOpenInterest": 24, - "pchangeinOpenInterest": 2400, - "totalTradedVolume": 43, - "impliedVolatility": 15.87, - "lastPrice": 227.95, - "change": -169.7, - "pChange": -42.6757198541431, - "totalBuyQuantity": 3125, - "totalSellQuantity": 3075, - "bidQty": 250, - "bidprice": 183.35, - "askQty": 125, - "askPrice": 267.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23650, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23650.00", - "openInterest": 2, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 100, - "totalTradedVolume": 1, - "impliedVolatility": 0, - "lastPrice": 240.9, - "change": -232.95, - "pChange": -49.1611269389047, - "totalBuyQuantity": 11725, - "totalSellQuantity": 1000, - "bidQty": 900, - "bidprice": 253.85, - "askQty": 900, - "askPrice": 653.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23650.00", - "openInterest": 1505, - "changeinOpenInterest": 217, - "pchangeinOpenInterest": 16.8478260869565, - "totalTradedVolume": 3552, - "impliedVolatility": 15.16, - "lastPrice": 239.2, - "change": -225, - "pChange": -48.4704868591125, - "totalBuyQuantity": 4550, - "totalSellQuantity": 4475, - "bidQty": 500, - "bidprice": 210.4, - "askQty": 600, - "askPrice": 263.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23650.00", - "openInterest": 903, - "changeinOpenInterest": -279, - "pchangeinOpenInterest": -23.6040609137056, - "totalTradedVolume": 2881, - "impliedVolatility": 11.49, - "lastPrice": 622.5, - "change": 299.95, - "pChange": 92.9933343667648, - "totalBuyQuantity": 7375, - "totalSellQuantity": 5875, - "bidQty": 250, - "bidprice": 598.05, - "askQty": 150, - "askPrice": 675.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23650, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 300, - "bidQty": 900, - "bidprice": 555.6, - "askQty": 300, - "askPrice": 747.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23650, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 230.55, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23650.00", - "openInterest": 63, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -12.5, - "totalTradedVolume": 113, - "impliedVolatility": 10.29, - "lastPrice": 860.1, - "change": 308.8, - "pChange": 56.0130600399057, - "totalBuyQuantity": 1825, - "totalSellQuantity": 2700, - "bidQty": 25, - "bidprice": 769.15, - "askQty": 25, - "askPrice": 945.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23650.00", - "openInterest": 89, - "changeinOpenInterest": 41, - "pchangeinOpenInterest": 85.4166666666667, - "totalTradedVolume": 48, - "impliedVolatility": 14.85, - "lastPrice": 319.75, - "change": -193.8, - "pChange": -37.7373186642002, - "totalBuyQuantity": 2825, - "totalSellQuantity": 2125, - "bidQty": 1625, - "bidprice": 275.4, - "askQty": 25, - "askPrice": 352.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23700.00", - "openInterest": 71414, - "changeinOpenInterest": -46099, - "pchangeinOpenInterest": -39.228851276029, - "totalTradedVolume": 3142425, - "impliedVolatility": 14.08, - "lastPrice": 321.75, - "change": 268.95, - "pChange": 509.375, - "totalBuyQuantity": 89500, - "totalSellQuantity": 25100, - "bidQty": 600, - "bidprice": 317.25, - "askQty": 100, - "askPrice": 322.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23700.00", - "openInterest": 136308, - "changeinOpenInterest": 86174, - "pchangeinOpenInterest": 171.887341923645, - "totalTradedVolume": 1848835, - "impliedVolatility": 17.74, - "lastPrice": 114.65, - "change": -288.9, - "pChange": -71.58964192789, - "totalBuyQuantity": 945200, - "totalSellQuantity": 352475, - "bidQty": 50, - "bidprice": 114.65, - "askQty": 600, - "askPrice": 116, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23700.00", - "openInterest": 15387, - "changeinOpenInterest": 11129, - "pchangeinOpenInterest": 261.366838891498, - "totalTradedVolume": 78353, - "impliedVolatility": 15.93, - "lastPrice": 162.65, - "change": -254.8, - "pChange": -61.0372499700563, - "totalBuyQuantity": 5725, - "totalSellQuantity": 33800, - "bidQty": 75, - "bidprice": 160.05, - "askQty": 50, - "askPrice": 162.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23700.00", - "openInterest": 10771, - "changeinOpenInterest": 1802, - "pchangeinOpenInterest": 20.091426022968, - "totalTradedVolume": 104792, - "impliedVolatility": 13.8, - "lastPrice": 419.5, - "change": 303.65, - "pChange": 262.106171773846, - "totalBuyQuantity": 16300, - "totalSellQuantity": 5100, - "bidQty": 400, - "bidprice": 410, - "askQty": 50, - "askPrice": 419.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23700.00", - "openInterest": 654, - "changeinOpenInterest": 107, - "pchangeinOpenInterest": 19.5612431444241, - "totalTradedVolume": 4944, - "impliedVolatility": 12.38, - "lastPrice": 475.05, - "change": 296.3, - "pChange": 165.762237762238, - "totalBuyQuantity": 10725, - "totalSellQuantity": 825, - "bidQty": 25, - "bidprice": 473.55, - "askQty": 400, - "askPrice": 502.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23700.00", - "openInterest": 1005, - "changeinOpenInterest": 761, - "pchangeinOpenInterest": 311.885245901639, - "totalTradedVolume": 4514, - "impliedVolatility": 15.44, - "lastPrice": 200, - "change": -242.25, - "pChange": -54.7767100056529, - "totalBuyQuantity": 1875, - "totalSellQuantity": 2375, - "bidQty": 50, - "bidprice": 197, - "askQty": 425, - "askPrice": 204.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23700, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23700.00", - "openInterest": 102, - "changeinOpenInterest": 86, - "pchangeinOpenInterest": 537.5, - "totalTradedVolume": 127, - "impliedVolatility": 15.71, - "lastPrice": 241.65, - "change": -226.35, - "pChange": -48.3653846153846, - "totalBuyQuantity": 1175, - "totalSellQuantity": 2800, - "bidQty": 25, - "bidprice": 218.85, - "askQty": 75, - "askPrice": 249.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23700, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23700.00", - "openInterest": 15, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 15.3846153846154, - "totalTradedVolume": 71, - "impliedVolatility": 11.93, - "lastPrice": 535, - "change": 291, - "pChange": 119.262295081967, - "totalBuyQuantity": 10175, - "totalSellQuantity": 2100, - "bidQty": 200, - "bidprice": 528.95, - "askQty": 200, - "askPrice": 561.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23700.00", - "openInterest": 15013, - "changeinOpenInterest": 3330, - "pchangeinOpenInterest": 28.502953008645, - "totalTradedVolume": 38108, - "impliedVolatility": 15.05, - "lastPrice": 253.7, - "change": -238.45, - "pChange": -48.4506756070304, - "totalBuyQuantity": 5625, - "totalSellQuantity": 20150, - "bidQty": 25, - "bidprice": 252.2, - "askQty": 25, - "askPrice": 254.05, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23700.00", - "openInterest": 10373, - "changeinOpenInterest": 717, - "pchangeinOpenInterest": 7.42543496271748, - "totalTradedVolume": 27798, - "impliedVolatility": 11.96, - "lastPrice": 599.75, - "change": 302.35, - "pChange": 101.664425016812, - "totalBuyQuantity": 13850, - "totalSellQuantity": 7775, - "bidQty": 25, - "bidprice": 587.2, - "askQty": 75, - "askPrice": 608.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23700, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23700.00", - "openInterest": 10, - "changeinOpenInterest": 10, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 10, - "impliedVolatility": 15.77, - "lastPrice": 298.3, - "change": -292.45, - "pChange": -49.5048666948794, - "totalBuyQuantity": 600, - "totalSellQuantity": 375, - "bidQty": 300, - "bidprice": 263.15, - "askQty": 300, - "askPrice": 298.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23700, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23700.00", - "openInterest": 3151, - "changeinOpenInterest": 1750, - "pchangeinOpenInterest": 124.910778015703, - "totalTradedVolume": 3735, - "impliedVolatility": 14.79, - "lastPrice": 334.3, - "change": -210.4, - "pChange": -38.6267670277217, - "totalBuyQuantity": 1700, - "totalSellQuantity": 1250, - "bidQty": 150, - "bidprice": 319.2, - "askQty": 50, - "askPrice": 342.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23700.00", - "openInterest": 501, - "changeinOpenInterest": -150, - "pchangeinOpenInterest": -23.0414746543779, - "totalTradedVolume": 628, - "impliedVolatility": 10.29, - "lastPrice": 824, - "change": 296.55, - "pChange": 56.2233387050905, - "totalBuyQuantity": 1850, - "totalSellQuantity": 3250, - "bidQty": 700, - "bidprice": 792, - "askQty": 50, - "askPrice": 849.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23750.00", - "openInterest": 36581, - "changeinOpenInterest": 5728, - "pchangeinOpenInterest": 18.5654555472726, - "totalTradedVolume": 1352202, - "impliedVolatility": 13.74, - "lastPrice": 283.5, - "change": 240.75, - "pChange": 563.157894736842, - "totalBuyQuantity": 43550, - "totalSellQuantity": 8425, - "bidQty": 25, - "bidprice": 283.55, - "askQty": 1050, - "askPrice": 286.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23750.00", - "openInterest": 31588, - "changeinOpenInterest": 23888, - "pchangeinOpenInterest": 310.233766233766, - "totalTradedVolume": 575241, - "impliedVolatility": 17.77, - "lastPrice": 132.3, - "change": -314.45, - "pChange": -70.3861219921656, - "totalBuyQuantity": 652825, - "totalSellQuantity": 80400, - "bidQty": 200, - "bidprice": 130.05, - "askQty": 1000, - "askPrice": 131.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23750.00", - "openInterest": 1746, - "changeinOpenInterest": 473, - "pchangeinOpenInterest": 37.1563236449332, - "totalTradedVolume": 24182, - "impliedVolatility": 13.91, - "lastPrice": 388.35, - "change": 286.45, - "pChange": 281.108930323847, - "totalBuyQuantity": 18775, - "totalSellQuantity": 5575, - "bidQty": 100, - "bidprice": 362.05, - "askQty": 975, - "askPrice": 385.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23750.00", - "openInterest": 2378, - "changeinOpenInterest": 1875, - "pchangeinOpenInterest": 372.763419483101, - "totalTradedVolume": 18303, - "impliedVolatility": 15.89, - "lastPrice": 179.9, - "change": -271.45, - "pChange": -60.1417968317271, - "totalBuyQuantity": 2950, - "totalSellQuantity": 5425, - "bidQty": 125, - "bidprice": 170, - "askQty": 500, - "askPrice": 180, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23750.00", - "openInterest": 180, - "changeinOpenInterest": 78, - "pchangeinOpenInterest": 76.4705882352941, - "totalTradedVolume": 513, - "impliedVolatility": 15.99, - "lastPrice": 229.6, - "change": -258.1, - "pChange": -52.9218782038138, - "totalBuyQuantity": 1750, - "totalSellQuantity": 1525, - "bidQty": 25, - "bidprice": 207, - "askQty": 50, - "askPrice": 233.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23750.00", - "openInterest": 146, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -5.80645161290323, - "totalTradedVolume": 814, - "impliedVolatility": 11.73, - "lastPrice": 428.7, - "change": 257.9, - "pChange": 150.995316159251, - "totalBuyQuantity": 11650, - "totalSellQuantity": 875, - "bidQty": 75, - "bidprice": 426.35, - "askQty": 425, - "askPrice": 473.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23750, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9550, - "totalSellQuantity": 1000, - "bidQty": 100, - "bidprice": 340.9, - "askQty": 100, - "askPrice": 602.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2000, - "totalSellQuantity": 2100, - "bidQty": 1000, - "bidprice": 202.7, - "askQty": 900, - "askPrice": 280.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 23750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23750.00", - "openInterest": 842, - "changeinOpenInterest": -197, - "pchangeinOpenInterest": -18.9605389797883, - "totalTradedVolume": 3058, - "impliedVolatility": 11.34, - "lastPrice": 550.2, - "change": 273.15, - "pChange": 98.5923118570655, - "totalBuyQuantity": 10350, - "totalSellQuantity": 5200, - "bidQty": 200, - "bidprice": 555, - "askQty": 100, - "askPrice": 596.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23750.00", - "openInterest": 2864, - "changeinOpenInterest": 896, - "pchangeinOpenInterest": 45.5284552845529, - "totalTradedVolume": 7147, - "impliedVolatility": 14.96, - "lastPrice": 269.25, - "change": -245.65, - "pChange": -47.7082928724024, - "totalBuyQuantity": 3650, - "totalSellQuantity": 3925, - "bidQty": 300, - "bidprice": 243.05, - "askQty": 900, - "askPrice": 286.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23750, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 540, - "askQty": 1800, - "askPrice": 727.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 1800, - "bidQty": 0, - "bidprice": 0, - "askQty": 900, - "askPrice": 329.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23750.00", - "openInterest": 122, - "changeinOpenInterest": -40, - "pchangeinOpenInterest": -24.6913580246914, - "totalTradedVolume": 90, - "impliedVolatility": 10.89, - "lastPrice": 810.05, - "change": 310, - "pChange": 61.993800619938, - "totalBuyQuantity": 1975, - "totalSellQuantity": 4500, - "bidQty": 50, - "bidprice": 451.65, - "askQty": 900, - "askPrice": 896.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23750.00", - "openInterest": 183, - "changeinOpenInterest": 39, - "pchangeinOpenInterest": 27.0833333333333, - "totalTradedVolume": 95, - "impliedVolatility": 15.81, - "lastPrice": 390.1, - "change": -176.7, - "pChange": -31.1750176429075, - "totalBuyQuantity": 3625, - "totalSellQuantity": 2800, - "bidQty": 300, - "bidprice": 263.4, - "askQty": 25, - "askPrice": 375.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23800.00", - "openInterest": 126524, - "changeinOpenInterest": -15202, - "pchangeinOpenInterest": -10.7263310895672, - "totalTradedVolume": 3052931, - "impliedVolatility": 13.68, - "lastPrice": 250, - "change": 216.3, - "pChange": 641.839762611276, - "totalBuyQuantity": 310525, - "totalSellQuantity": 104725, - "bidQty": 675, - "bidprice": 249, - "askQty": 25, - "askPrice": 253, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23800.00", - "openInterest": 108627, - "changeinOpenInterest": 58584, - "pchangeinOpenInterest": 117.067322102991, - "totalTradedVolume": 1231331, - "impliedVolatility": 17.43, - "lastPrice": 147.25, - "change": -338.2, - "pChange": -69.6673189823875, - "totalBuyQuantity": 938000, - "totalSellQuantity": 182950, - "bidQty": 1000, - "bidprice": 145.6, - "askQty": 25, - "askPrice": 147, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23800.00", - "openInterest": 20332, - "changeinOpenInterest": 4302, - "pchangeinOpenInterest": 26.8371802869619, - "totalTradedVolume": 128903, - "impliedVolatility": 13.7, - "lastPrice": 353.4, - "change": 267.1, - "pChange": 309.501738122827, - "totalBuyQuantity": 25375, - "totalSellQuantity": 8050, - "bidQty": 1075, - "bidprice": 345, - "askQty": 25, - "askPrice": 353.2, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23800.00", - "openInterest": 20452, - "changeinOpenInterest": 10880, - "pchangeinOpenInterest": 113.664855829503, - "totalTradedVolume": 59474, - "impliedVolatility": 15.54, - "lastPrice": 193.15, - "change": -293.25, - "pChange": -60.2898848684211, - "totalBuyQuantity": 4575, - "totalSellQuantity": 9800, - "bidQty": 200, - "bidprice": 193.1, - "askQty": 25, - "askPrice": 204.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23800.00", - "openInterest": 972, - "changeinOpenInterest": 184, - "pchangeinOpenInterest": 23.3502538071066, - "totalTradedVolume": 6687, - "impliedVolatility": 12.46, - "lastPrice": 411.5, - "change": 263.25, - "pChange": 177.571669477234, - "totalBuyQuantity": 12425, - "totalSellQuantity": 1600, - "bidQty": 50, - "bidprice": 411.8, - "askQty": 25, - "askPrice": 424.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23800.00", - "openInterest": 1743, - "changeinOpenInterest": 1401, - "pchangeinOpenInterest": 409.649122807018, - "totalTradedVolume": 6260, - "impliedVolatility": 15.28, - "lastPrice": 233.85, - "change": -281.75, - "pChange": -54.6450737005431, - "totalBuyQuantity": 725, - "totalSellQuantity": 1900, - "bidQty": 25, - "bidprice": 230.9, - "askQty": 75, - "askPrice": 243.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23800, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23800.00", - "openInterest": 30, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -11.7647058823529, - "totalTradedVolume": 308, - "impliedVolatility": 11.39, - "lastPrice": 456.3, - "change": 243, - "pChange": 113.924050632911, - "totalBuyQuantity": 11575, - "totalSellQuantity": 1875, - "bidQty": 200, - "bidprice": 467.2, - "askQty": 300, - "askPrice": 492.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23800.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 15.74, - "lastPrice": 280.05, - "change": -232.35, - "pChange": -45.3454332552693, - "totalBuyQuantity": 600, - "totalSellQuantity": 2300, - "bidQty": 100, - "bidprice": 242, - "askQty": 300, - "askPrice": 281.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23800.00", - "openInterest": 21906, - "changeinOpenInterest": 6504, - "pchangeinOpenInterest": 42.2282820412933, - "totalTradedVolume": 34914, - "impliedVolatility": 15.17, - "lastPrice": 294, - "change": -250.6, - "pChange": -46.0154241645244, - "totalBuyQuantity": 8225, - "totalSellQuantity": 22025, - "bidQty": 25, - "bidprice": 284, - "askQty": 925, - "askPrice": 293.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23800.00", - "openInterest": 10892, - "changeinOpenInterest": -1774, - "pchangeinOpenInterest": -14.0060003158061, - "totalTradedVolume": 39684, - "impliedVolatility": 12.29, - "lastPrice": 543.05, - "change": 289.5, - "pChange": 114.178662985604, - "totalBuyQuantity": 17475, - "totalSellQuantity": 9800, - "bidQty": 25, - "bidprice": 524.05, - "askQty": 1800, - "askPrice": 542.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23800, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 525, - "totalSellQuantity": 600, - "bidQty": 525, - "bidprice": 560.8, - "askQty": 600, - "askPrice": 621.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 450, - "totalSellQuantity": 1800, - "bidQty": 225, - "bidprice": 302.4, - "askQty": 1800, - "askPrice": 334.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23800.00", - "openInterest": 857, - "changeinOpenInterest": -250, - "pchangeinOpenInterest": -22.583559168925, - "totalTradedVolume": 873, - "impliedVolatility": 10.44, - "lastPrice": 760, - "change": 288, - "pChange": 61.0169491525424, - "totalBuyQuantity": 1125, - "totalSellQuantity": 5500, - "bidQty": 25, - "bidprice": 661.05, - "askQty": 100, - "askPrice": 788.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23800.00", - "openInterest": 6827, - "changeinOpenInterest": 6116, - "pchangeinOpenInterest": 860.196905766526, - "totalTradedVolume": 9235, - "impliedVolatility": 14.72, - "lastPrice": 366.6, - "change": -226.25, - "pChange": -38.1631103989205, - "totalBuyQuantity": 2400, - "totalSellQuantity": 2250, - "bidQty": 25, - "bidprice": 350, - "askQty": 50, - "askPrice": 380.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23850.00", - "openInterest": 31771, - "changeinOpenInterest": 29079, - "pchangeinOpenInterest": 1080.20059435364, - "totalTradedVolume": 560728, - "impliedVolatility": 17.2, - "lastPrice": 165.2, - "change": -366.45, - "pChange": -68.9269256089533, - "totalBuyQuantity": 471250, - "totalSellQuantity": 76850, - "bidQty": 125, - "bidprice": 164, - "askQty": 1000, - "askPrice": 166.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23850.00", - "openInterest": 43517, - "changeinOpenInterest": 20915, - "pchangeinOpenInterest": 92.5360587558623, - "totalTradedVolume": 1436088, - "impliedVolatility": 13.83, - "lastPrice": 221.3, - "change": 194.3, - "pChange": 719.62962962963, - "totalBuyQuantity": 66125, - "totalSellQuantity": 19575, - "bidQty": 75, - "bidprice": 218.45, - "askQty": 600, - "askPrice": 222, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 23850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23850.00", - "openInterest": 2032, - "changeinOpenInterest": 1621, - "pchangeinOpenInterest": 394.403892944039, - "totalTradedVolume": 11967, - "impliedVolatility": 15.44, - "lastPrice": 211.8, - "change": -315.5, - "pChange": -59.8331120804096, - "totalBuyQuantity": 2950, - "totalSellQuantity": 7050, - "bidQty": 200, - "bidprice": 211.95, - "askQty": 1800, - "askPrice": 220.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23850.00", - "openInterest": 2940, - "changeinOpenInterest": 1449, - "pchangeinOpenInterest": 97.1830985915493, - "totalTradedVolume": 26634, - "impliedVolatility": 13.57, - "lastPrice": 321.15, - "change": 247.5, - "pChange": 336.048879837067, - "totalBuyQuantity": 11000, - "totalSellQuantity": 2875, - "bidQty": 50, - "bidprice": 302.1, - "askQty": 325, - "askPrice": 321.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23850.00", - "openInterest": 248, - "changeinOpenInterest": 199, - "pchangeinOpenInterest": 406.122448979592, - "totalTradedVolume": 594, - "impliedVolatility": 12.21, - "lastPrice": 375.6, - "change": 236.5, - "pChange": 170.021567217829, - "totalBuyQuantity": 12400, - "totalSellQuantity": 1175, - "bidQty": 275, - "bidprice": 370.05, - "askQty": 150, - "askPrice": 414.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23850.00", - "openInterest": 349, - "changeinOpenInterest": 345, - "pchangeinOpenInterest": 8625, - "totalTradedVolume": 794, - "impliedVolatility": 15.59, - "lastPrice": 260.95, - "change": -294.05, - "pChange": -52.981981981982, - "totalBuyQuantity": 1900, - "totalSellQuantity": 4525, - "bidQty": 25, - "bidprice": 249.1, - "askQty": 1800, - "askPrice": 260.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23850, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23850.00", - "openInterest": 1, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -80, - "totalTradedVolume": 9, - "impliedVolatility": 9.73, - "lastPrice": 384.75, - "change": 192.35, - "pChange": 99.9740124740125, - "totalBuyQuantity": 14150, - "totalSellQuantity": 1775, - "bidQty": 275, - "bidprice": 406.35, - "askQty": 25, - "askPrice": 475.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23850, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1000, - "totalSellQuantity": 1150, - "bidQty": 100, - "bidprice": 245.1, - "askQty": 100, - "askPrice": 319.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23850.00", - "openInterest": 1283, - "changeinOpenInterest": 615, - "pchangeinOpenInterest": 92.0658682634731, - "totalTradedVolume": 4049, - "impliedVolatility": 14.74, - "lastPrice": 301.75, - "change": -273.3, - "pChange": -47.5263020606904, - "totalBuyQuantity": 5225, - "totalSellQuantity": 5425, - "bidQty": 25, - "bidprice": 300, - "askQty": 900, - "askPrice": 328.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23850.00", - "openInterest": 1190, - "changeinOpenInterest": 247, - "pchangeinOpenInterest": 26.1930010604454, - "totalTradedVolume": 3384, - "impliedVolatility": 11.47, - "lastPrice": 489.55, - "change": 255.25, - "pChange": 108.941527955612, - "totalBuyQuantity": 11350, - "totalSellQuantity": 5000, - "bidQty": 100, - "bidprice": 479.8, - "askQty": 100, - "askPrice": 543.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23850, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 750, - "totalSellQuantity": 1425, - "bidQty": 750, - "bidprice": 508, - "askQty": 525, - "askPrice": 621.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23850, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 900, - "bidQty": 0, - "bidprice": 0, - "askQty": 900, - "askPrice": 369.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 23850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23850.00", - "openInterest": 107, - "changeinOpenInterest": 37, - "pchangeinOpenInterest": 52.8571428571429, - "totalTradedVolume": 144, - "impliedVolatility": 14.92, - "lastPrice": 392.85, - "change": -172.7, - "pChange": -30.5366457430819, - "totalBuyQuantity": 1150, - "totalSellQuantity": 975, - "bidQty": 600, - "bidprice": 354.1, - "askQty": 25, - "askPrice": 414.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23850.00", - "openInterest": 524, - "changeinOpenInterest": 374, - "pchangeinOpenInterest": 249.333333333333, - "totalTradedVolume": 501, - "impliedVolatility": 10.44, - "lastPrice": 726.4, - "change": 267.85, - "pChange": 58.4123868716607, - "totalBuyQuantity": 1150, - "totalSellQuantity": 4550, - "bidQty": 250, - "bidprice": 620, - "askQty": 25, - "askPrice": 784.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23900.00", - "openInterest": 116796, - "changeinOpenInterest": 96046, - "pchangeinOpenInterest": 462.872289156627, - "totalTradedVolume": 943596, - "impliedVolatility": 17.23, - "lastPrice": 188, - "change": -388.45, - "pChange": -67.38659033741, - "totalBuyQuantity": 587475, - "totalSellQuantity": 115450, - "bidQty": 150, - "bidprice": 185.55, - "askQty": 25, - "askPrice": 187.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23900.00", - "openInterest": 170415, - "changeinOpenInterest": 88904, - "pchangeinOpenInterest": 109.069941480291, - "totalTradedVolume": 2844722, - "impliedVolatility": 13.56, - "lastPrice": 190, - "change": 168.75, - "pChange": 794.117647058824, - "totalBuyQuantity": 438475, - "totalSellQuantity": 74400, - "bidQty": 125, - "bidprice": 189.45, - "askQty": 600, - "askPrice": 192.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23900.00", - "openInterest": 11630, - "changeinOpenInterest": 3742, - "pchangeinOpenInterest": 47.4391480730223, - "totalTradedVolume": 94756, - "impliedVolatility": 12.86, - "lastPrice": 280, - "change": 217.4, - "pChange": 347.284345047923, - "totalBuyQuantity": 20225, - "totalSellQuantity": 4950, - "bidQty": 150, - "bidprice": 274.25, - "askQty": 50, - "askPrice": 285.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23900.00", - "openInterest": 9055, - "changeinOpenInterest": 6554, - "pchangeinOpenInterest": 262.055177928828, - "totalTradedVolume": 31743, - "impliedVolatility": 15.31, - "lastPrice": 231.45, - "change": -330.05, - "pChange": -58.780053428317, - "totalBuyQuantity": 6175, - "totalSellQuantity": 16650, - "bidQty": 200, - "bidprice": 231.6, - "askQty": 1800, - "askPrice": 239.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 23900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23900.00", - "openInterest": 681, - "changeinOpenInterest": 624, - "pchangeinOpenInterest": 1094.73684210526, - "totalTradedVolume": 2168, - "impliedVolatility": 15.1, - "lastPrice": 271.6, - "change": -278.15, - "pChange": -50.5957253296953, - "totalBuyQuantity": 425, - "totalSellQuantity": 1800, - "bidQty": 25, - "bidprice": 269.05, - "askQty": 25, - "askPrice": 278, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23900.00", - "openInterest": 814, - "changeinOpenInterest": 242, - "pchangeinOpenInterest": 42.3076923076923, - "totalTradedVolume": 5953, - "impliedVolatility": 12.95, - "lastPrice": 362.45, - "change": 242.95, - "pChange": 203.305439330544, - "totalBuyQuantity": 12950, - "totalSellQuantity": 4950, - "bidQty": 775, - "bidprice": 345.35, - "askQty": 3600, - "askPrice": 361.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 23900, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23900.00", - "openInterest": 66, - "changeinOpenInterest": 63, - "pchangeinOpenInterest": 2100, - "totalTradedVolume": 83, - "impliedVolatility": 11.92, - "lastPrice": 408.4, - "change": 224.1, - "pChange": 121.595225176343, - "totalBuyQuantity": 11650, - "totalSellQuantity": 2150, - "bidQty": 25, - "bidprice": 401.9, - "askQty": 200, - "askPrice": 416.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23900, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23900.00", - "openInterest": 19, - "changeinOpenInterest": 15, - "pchangeinOpenInterest": 375, - "totalTradedVolume": 28, - "impliedVolatility": 14.89, - "lastPrice": 300, - "change": -273, - "pChange": -47.6439790575916, - "totalBuyQuantity": 800, - "totalSellQuantity": 675, - "bidQty": 100, - "bidprice": 267.95, - "askQty": 25, - "askPrice": 319.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23900.00", - "openInterest": 9472, - "changeinOpenInterest": 2716, - "pchangeinOpenInterest": 40.2013025458851, - "totalTradedVolume": 15081, - "impliedVolatility": 14.66, - "lastPrice": 320, - "change": -287.35, - "pChange": -47.312093521034, - "totalBuyQuantity": 9500, - "totalSellQuantity": 10500, - "bidQty": 250, - "bidprice": 317, - "askQty": 25, - "askPrice": 329.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23900.00", - "openInterest": 9566, - "changeinOpenInterest": -12363, - "pchangeinOpenInterest": -56.3773997902321, - "totalTradedVolume": 41229, - "impliedVolatility": 11.47, - "lastPrice": 459.2, - "change": 240.05, - "pChange": 109.53684690851, - "totalBuyQuantity": 18900, - "totalSellQuantity": 6475, - "bidQty": 700, - "bidprice": 459.2, - "askQty": 75, - "askPrice": 465.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 23900, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE23900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 300, - "bidQty": 0, - "bidprice": 0, - "askQty": 300, - "askPrice": 372.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23900, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 825, - "totalSellQuantity": 375, - "bidQty": 825, - "bidprice": 488.55, - "askQty": 375, - "askPrice": 559.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23900.00", - "openInterest": 822, - "changeinOpenInterest": 330, - "pchangeinOpenInterest": 67.0731707317073, - "totalTradedVolume": 1040, - "impliedVolatility": 10.4, - "lastPrice": 692.6, - "change": 281.75, - "pChange": 68.577339661677, - "totalBuyQuantity": 2125, - "totalSellQuantity": 3800, - "bidQty": 25, - "bidprice": 676.05, - "askQty": 25, - "askPrice": 725.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23900.00", - "openInterest": 6358, - "changeinOpenInterest": 3500, - "pchangeinOpenInterest": 122.463261021694, - "totalTradedVolume": 4307, - "impliedVolatility": 14.5, - "lastPrice": 395.4, - "change": -248.3, - "pChange": -38.5738698151313, - "totalBuyQuantity": 850, - "totalSellQuantity": 1475, - "bidQty": 150, - "bidprice": 380.75, - "askQty": 250, - "askPrice": 407.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23950.00", - "openInterest": 37012, - "changeinOpenInterest": 17673, - "pchangeinOpenInterest": 91.3852836237655, - "totalTradedVolume": 1282888, - "impliedVolatility": 13.63, - "lastPrice": 165, - "change": 147.75, - "pChange": 856.521739130435, - "totalBuyQuantity": 103775, - "totalSellQuantity": 43925, - "bidQty": 1000, - "bidprice": 163, - "askQty": 1000, - "askPrice": 164.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23950.00", - "openInterest": 15114, - "changeinOpenInterest": 12674, - "pchangeinOpenInterest": 519.426229508197, - "totalTradedVolume": 201951, - "impliedVolatility": 16.94, - "lastPrice": 208.9, - "change": -412.55, - "pChange": -66.3850671815915, - "totalBuyQuantity": 21650, - "totalSellQuantity": 23575, - "bidQty": 25, - "bidprice": 208.4, - "askQty": 600, - "askPrice": 211.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 23950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE23950.00", - "openInterest": 3103, - "changeinOpenInterest": 1031, - "pchangeinOpenInterest": 49.7586872586873, - "totalTradedVolume": 33567, - "impliedVolatility": 13.07, - "lastPrice": 256.9, - "change": 203.95, - "pChange": 385.174693106704, - "totalBuyQuantity": 220375, - "totalSellQuantity": 4400, - "bidQty": 1800, - "bidprice": 244.95, - "askQty": 200, - "askPrice": 261.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE23950.00", - "openInterest": 1180, - "changeinOpenInterest": 937, - "pchangeinOpenInterest": 385.59670781893, - "totalTradedVolume": 4370, - "impliedVolatility": 15.29, - "lastPrice": 254.35, - "change": -346.8, - "pChange": -57.6894285951925, - "totalBuyQuantity": 3800, - "totalSellQuantity": 2800, - "bidQty": 200, - "bidprice": 252.9, - "askQty": 75, - "askPrice": 255, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 23950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE23950.00", - "openInterest": 276, - "changeinOpenInterest": 181, - "pchangeinOpenInterest": 190.526315789474, - "totalTradedVolume": 1197, - "impliedVolatility": 12.46, - "lastPrice": 324, - "change": 218.85, - "pChange": 208.131241084165, - "totalBuyQuantity": 12100, - "totalSellQuantity": 1025, - "bidQty": 400, - "bidprice": 211.4, - "askQty": 400, - "askPrice": 374.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE23950.00", - "openInterest": 65, - "changeinOpenInterest": 52, - "pchangeinOpenInterest": 400, - "totalTradedVolume": 108, - "impliedVolatility": 15.45, - "lastPrice": 302.1, - "change": -12.35, - "pChange": -3.9274924471299, - "totalBuyQuantity": 1450, - "totalSellQuantity": 1275, - "bidQty": 50, - "bidprice": 190.35, - "askQty": 25, - "askPrice": 342.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 23950, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE23950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1925, - "totalSellQuantity": 1100, - "bidQty": 900, - "bidprice": 81.95, - "askQty": 100, - "askPrice": 399.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23950, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE23950.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 230.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13675, - "totalSellQuantity": 2525, - "bidQty": 900, - "bidprice": 172.15, - "askQty": 900, - "askPrice": 450.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 23950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE23950.00", - "openInterest": 830, - "changeinOpenInterest": 133, - "pchangeinOpenInterest": 19.0817790530847, - "totalTradedVolume": 2818, - "impliedVolatility": 14.64, - "lastPrice": 340.75, - "change": -301.85, - "pChange": -46.9732337379396, - "totalBuyQuantity": 4050, - "totalSellQuantity": 1100, - "bidQty": 1775, - "bidprice": 265.75, - "askQty": 900, - "askPrice": 389.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE23950.00", - "openInterest": 999, - "changeinOpenInterest": -283, - "pchangeinOpenInterest": -22.0748829953198, - "totalTradedVolume": 3376, - "impliedVolatility": 11.45, - "lastPrice": 429.4, - "change": 230.25, - "pChange": 115.616369570675, - "totalBuyQuantity": 16375, - "totalSellQuantity": 4200, - "bidQty": 500, - "bidprice": 420.55, - "askQty": 500, - "askPrice": 468.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 23950, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE23950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 393.9, - "askQty": 1800, - "askPrice": 551.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 23950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE23950.00", - "openInterest": 131, - "changeinOpenInterest": 108, - "pchangeinOpenInterest": 469.565217391304, - "totalTradedVolume": 148, - "impliedVolatility": 10.02, - "lastPrice": 646.35, - "change": 66.3000000000001, - "pChange": 11.4300491336954, - "totalBuyQuantity": 1800, - "totalSellQuantity": 3625, - "bidQty": 900, - "bidprice": 565.9, - "askQty": 1800, - "askPrice": 719.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE23950.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 580.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 950, - "totalSellQuantity": 300, - "bidQty": 50, - "bidprice": 376.55, - "askQty": 50, - "askPrice": 522.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24000.00", - "openInterest": 119938, - "changeinOpenInterest": 37810, - "pchangeinOpenInterest": 46.0378920709137, - "totalTradedVolume": 625011, - "impliedVolatility": 16.76, - "lastPrice": 233, - "change": -428.6, - "pChange": -64.782345828295, - "totalBuyQuantity": 131225, - "totalSellQuantity": 97900, - "bidQty": 150, - "bidprice": 233.05, - "askQty": 150, - "askPrice": 236.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24000.00", - "openInterest": 219128, - "changeinOpenInterest": -32645, - "pchangeinOpenInterest": -12.966044810206, - "totalTradedVolume": 4489548, - "impliedVolatility": 13.52, - "lastPrice": 140.25, - "change": 126.15, - "pChange": 894.68085106383, - "totalBuyQuantity": 928375, - "totalSellQuantity": 225675, - "bidQty": 25, - "bidprice": 140.2, - "askQty": 600, - "askPrice": 141.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24000.00", - "openInterest": 10617, - "changeinOpenInterest": 8711, - "pchangeinOpenInterest": 457.030430220357, - "totalTradedVolume": 41456, - "impliedVolatility": 15.15, - "lastPrice": 276.4, - "change": -370.05, - "pChange": -57.2434062959239, - "totalBuyQuantity": 8050, - "totalSellQuantity": 13725, - "bidQty": 200, - "bidprice": 276.3, - "askQty": 50, - "askPrice": 276.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24000.00", - "openInterest": 20757, - "changeinOpenInterest": 5089, - "pchangeinOpenInterest": 32.4802144498341, - "totalTradedVolume": 201367, - "impliedVolatility": 12.87, - "lastPrice": 228, - "change": 182.5, - "pChange": 401.098901098901, - "totalBuyQuantity": 46200, - "totalSellQuantity": 14150, - "bidQty": 25, - "bidprice": 228, - "askQty": 25, - "askPrice": 229.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24000, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24000.00", - "openInterest": 3764, - "changeinOpenInterest": 3436, - "pchangeinOpenInterest": 1047.56097560976, - "totalTradedVolume": 8078, - "impliedVolatility": 14.74, - "lastPrice": 310, - "change": -334.8, - "pChange": -51.9230769230769, - "totalBuyQuantity": 1525, - "totalSellQuantity": 4225, - "bidQty": 25, - "bidprice": 305, - "askQty": 25, - "askPrice": 315.05, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24000.00", - "openInterest": 4434, - "changeinOpenInterest": 2388, - "pchangeinOpenInterest": 116.715542521994, - "totalTradedVolume": 18459, - "impliedVolatility": 12.65, - "lastPrice": 301.75, - "change": 210.65, - "pChange": 231.229418221734, - "totalBuyQuantity": 13975, - "totalSellQuantity": 2550, - "bidQty": 200, - "bidprice": 293.05, - "askQty": 125, - "askPrice": 301.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24000, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24000.00", - "openInterest": 249, - "changeinOpenInterest": 62, - "pchangeinOpenInterest": 33.1550802139037, - "totalTradedVolume": 708, - "impliedVolatility": 11.76, - "lastPrice": 348.45, - "change": 202.95, - "pChange": 139.484536082474, - "totalBuyQuantity": 14800, - "totalSellQuantity": 4775, - "bidQty": 200, - "bidprice": 349.6, - "askQty": 300, - "askPrice": 357.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE24000.00", - "openInterest": 20, - "changeinOpenInterest": 20, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 31, - "impliedVolatility": 14.88, - "lastPrice": 344.8, - "change": -283.7, - "pChange": -45.1392203659507, - "totalBuyQuantity": 1250, - "totalSellQuantity": 1325, - "bidQty": 900, - "bidprice": 319.1, - "askQty": 100, - "askPrice": 359.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24000.00", - "openInterest": 136805, - "changeinOpenInterest": 30408, - "pchangeinOpenInterest": 28.5797531885298, - "totalTradedVolume": 128630, - "impliedVolatility": 14.56, - "lastPrice": 361, - "change": -313.15, - "pChange": -46.4510865534377, - "totalBuyQuantity": 15650, - "totalSellQuantity": 47150, - "bidQty": 325, - "bidprice": 361, - "askQty": 100, - "askPrice": 366.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24000.00", - "openInterest": 96974, - "changeinOpenInterest": 9725, - "pchangeinOpenInterest": 11.1462595559835, - "totalTradedVolume": 210161, - "impliedVolatility": 11.68, - "lastPrice": 408, - "change": 225.05, - "pChange": 123.011751844766, - "totalBuyQuantity": 56275, - "totalSellQuantity": 15125, - "bidQty": 25, - "bidprice": 405.1, - "askQty": 750, - "askPrice": 408, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24000, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 825, - "totalSellQuantity": 1800, - "bidQty": 825, - "bidprice": 441.45, - "askQty": 900, - "askPrice": 488.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 750, - "bidQty": 0, - "bidprice": 0, - "askQty": 375, - "askPrice": 409.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24000.00", - "openInterest": 27895, - "changeinOpenInterest": 8044, - "pchangeinOpenInterest": 40.5218880660924, - "totalTradedVolume": 20616, - "impliedVolatility": 14.4, - "lastPrice": 431.05, - "change": -267.55, - "pChange": -38.2980246206699, - "totalBuyQuantity": 9725, - "totalSellQuantity": 5250, - "bidQty": 100, - "bidprice": 430, - "askQty": 150, - "askPrice": 447.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24000.00", - "openInterest": 21699, - "changeinOpenInterest": 7636, - "pchangeinOpenInterest": 54.2985138306194, - "totalTradedVolume": 21027, - "impliedVolatility": 10.48, - "lastPrice": 633.05, - "change": 251.45, - "pChange": 65.893605870021, - "totalBuyQuantity": 14425, - "totalSellQuantity": 4150, - "bidQty": 25, - "bidprice": 633.05, - "askQty": 300, - "askPrice": 652.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 24000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE24000.00", - "openInterest": 40004, - "changeinOpenInterest": 1193, - "pchangeinOpenInterest": 3.07387080982196, - "totalTradedVolume": 12852, - "impliedVolatility": 15.41, - "lastPrice": 537, - "change": -195.55, - "pChange": -26.6944235888335, - "totalBuyQuantity": 5450, - "totalSellQuantity": 8125, - "bidQty": 25, - "bidprice": 530.25, - "askQty": 25, - "askPrice": 537, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE24000.00", - "openInterest": 20112, - "changeinOpenInterest": 258, - "pchangeinOpenInterest": 1.29948624962224, - "totalTradedVolume": 11078, - "impliedVolatility": 9.33, - "lastPrice": 948, - "change": 274.45, - "pChange": 40.7467893994507, - "totalBuyQuantity": 10450, - "totalSellQuantity": 1675, - "bidQty": 50, - "bidprice": 937.4, - "askQty": 250, - "askPrice": 948, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "26-Jun-2025", - "CE": { - "strikePrice": 24000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE24000.00", - "openInterest": 2444, - "changeinOpenInterest": 83, - "pchangeinOpenInterest": 3.5154595510377, - "totalTradedVolume": 1074, - "impliedVolatility": 6.31, - "lastPrice": 1358, - "change": 286.6, - "pChange": 26.7500466679111, - "totalBuyQuantity": 8500, - "totalSellQuantity": 325, - "bidQty": 25, - "bidprice": 1338.4, - "askQty": 25, - "askPrice": 1358, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE24000.00", - "openInterest": 7062, - "changeinOpenInterest": 401, - "pchangeinOpenInterest": 6.0201170995346, - "totalTradedVolume": 1602, - "impliedVolatility": 16.62, - "lastPrice": 652, - "change": -172.9, - "pChange": -20.9601163777428, - "totalBuyQuantity": 2200, - "totalSellQuantity": 6725, - "bidQty": 25, - "bidprice": 645, - "askQty": 25, - "askPrice": 652, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 24000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 100, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 425.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 24000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE24000.00", - "openInterest": 1904, - "changeinOpenInterest": 21, - "pchangeinOpenInterest": 1.11524163568773, - "totalTradedVolume": 267, - "impliedVolatility": 0, - "lastPrice": 2175, - "change": 280.45, - "pChange": 14.8029875168246, - "totalBuyQuantity": 1950, - "totalSellQuantity": 825, - "bidQty": 300, - "bidprice": 2170.3, - "askQty": 25, - "askPrice": 2236, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE24000.00", - "openInterest": 14001, - "changeinOpenInterest": 178, - "pchangeinOpenInterest": 1.2877088909788, - "totalTradedVolume": 1648, - "impliedVolatility": 18.89, - "lastPrice": 838, - "change": -131.4, - "pChange": -13.554776150196, - "totalBuyQuantity": 5200, - "totalSellQuantity": 8100, - "bidQty": 325, - "bidprice": 815, - "askQty": 250, - "askPrice": 835, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 24000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 1750, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5700, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 2.55, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "31-Dec-2026", - "CE": { - "strikePrice": 24000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 2050, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE24000.00", - "openInterest": 176, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 976, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3425, - "totalSellQuantity": 200, - "bidQty": 250, - "bidprice": 870.55, - "askQty": 100, - "askPrice": 1278.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 24000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 837.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 24000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE24000.00", - "openInterest": 6, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 764.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 782.55, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 24000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE24000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 728.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 24000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE24000.00", - "openInterest": 20, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 593.7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 500, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 740.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 24000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE24000.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 694.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 275, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 624.7, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24050.00", - "openInterest": 32013, - "changeinOpenInterest": 13066, - "pchangeinOpenInterest": 68.960785348604, - "totalTradedVolume": 1087937, - "impliedVolatility": 13.3, - "lastPrice": 116.5, - "change": 105.35, - "pChange": 944.843049327354, - "totalBuyQuantity": 347900, - "totalSellQuantity": 28775, - "bidQty": 1000, - "bidprice": 116.55, - "askQty": 350, - "askPrice": 119.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24050.00", - "openInterest": 7475, - "changeinOpenInterest": 6243, - "pchangeinOpenInterest": 506.737012987013, - "totalTradedVolume": 40872, - "impliedVolatility": 17.15, - "lastPrice": 265.8, - "change": -444.7, - "pChange": -62.5897255453906, - "totalBuyQuantity": 10275, - "totalSellQuantity": 14925, - "bidQty": 275, - "bidprice": 257.85, - "askQty": 350, - "askPrice": 266.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24050.00", - "openInterest": 642, - "changeinOpenInterest": 370, - "pchangeinOpenInterest": 136.029411764706, - "totalTradedVolume": 1794, - "impliedVolatility": 15.29, - "lastPrice": 305.1, - "change": -324.85, - "pChange": -51.5675847289468, - "totalBuyQuantity": 3325, - "totalSellQuantity": 3150, - "bidQty": 2275, - "bidprice": 280.05, - "askQty": 125, - "askPrice": 321, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24050.00", - "openInterest": 2372, - "changeinOpenInterest": 1180, - "pchangeinOpenInterest": 98.993288590604, - "totalTradedVolume": 19971, - "impliedVolatility": 13.02, - "lastPrice": 207.1, - "change": 168.35, - "pChange": 434.451612903226, - "totalBuyQuantity": 140825, - "totalSellQuantity": 3100, - "bidQty": 25, - "bidprice": 199, - "askQty": 75, - "askPrice": 207, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24050, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24050.00", - "openInterest": 260, - "changeinOpenInterest": 255, - "pchangeinOpenInterest": 5100, - "totalTradedVolume": 405, - "impliedVolatility": 11.94, - "lastPrice": 260.9, - "change": 47.6, - "pChange": 22.3159868729489, - "totalBuyQuantity": 9150, - "totalSellQuantity": 300, - "bidQty": 50, - "bidprice": 242, - "askQty": 300, - "askPrice": 286.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24050, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 246.95, - "askQty": 900, - "askPrice": 372.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24050, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24050.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 245.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13525, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 21.85, - "askQty": 900, - "askPrice": 367.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24050.00", - "openInterest": 942, - "changeinOpenInterest": 104, - "pchangeinOpenInterest": 12.4105011933174, - "totalTradedVolume": 2956, - "impliedVolatility": 11.45, - "lastPrice": 374.3, - "change": 206.4, - "pChange": 122.930315664086, - "totalBuyQuantity": 20100, - "totalSellQuantity": 5600, - "bidQty": 100, - "bidprice": 370, - "askQty": 250, - "askPrice": 406.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24050.00", - "openInterest": 555, - "changeinOpenInterest": 192, - "pchangeinOpenInterest": 52.8925619834711, - "totalTradedVolume": 1231, - "impliedVolatility": 14.58, - "lastPrice": 384.7, - "change": -323.3, - "pChange": -45.6638418079096, - "totalBuyQuantity": 3750, - "totalSellQuantity": 1100, - "bidQty": 100, - "bidprice": 355.35, - "askQty": 25, - "askPrice": 422.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24050, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 331.5, - "askQty": 1800, - "askPrice": 485.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24050.00", - "openInterest": 8, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -11.1111111111111, - "totalTradedVolume": 5, - "impliedVolatility": 9.84, - "lastPrice": 577.5, - "change": 20.85, - "pChange": 3.74562112638103, - "totalBuyQuantity": 3025, - "totalSellQuantity": 4500, - "bidQty": 25, - "bidprice": 577.5, - "askQty": 25, - "askPrice": 654.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24050.00", - "openInterest": 53, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 720, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24100.00", - "openInterest": 26671, - "changeinOpenInterest": 7724, - "pchangeinOpenInterest": 40.766348234549, - "totalTradedVolume": 79368, - "impliedVolatility": 16.76, - "lastPrice": 291.2, - "change": -468.55, - "pChange": -61.6716025008226, - "totalBuyQuantity": 11950, - "totalSellQuantity": 20625, - "bidQty": 225, - "bidprice": 289.05, - "askQty": 1000, - "askPrice": 294.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24100.00", - "openInterest": 100863, - "changeinOpenInterest": 3044, - "pchangeinOpenInterest": 3.11186988212924, - "totalTradedVolume": 2204389, - "impliedVolatility": 13.27, - "lastPrice": 97.55, - "change": 88.5, - "pChange": 977.900552486188, - "totalBuyQuantity": 351950, - "totalSellQuantity": 65450, - "bidQty": 1075, - "bidprice": 97.3, - "askQty": 1000, - "askPrice": 99, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24100.00", - "openInterest": 7297, - "changeinOpenInterest": 2144, - "pchangeinOpenInterest": 41.6068309722492, - "totalTradedVolume": 79284, - "impliedVolatility": 12.66, - "lastPrice": 178.9, - "change": 146.95, - "pChange": 459.937402190923, - "totalBuyQuantity": 183450, - "totalSellQuantity": 10100, - "bidQty": 225, - "bidprice": 174.45, - "askQty": 200, - "askPrice": 179.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24100.00", - "openInterest": 877, - "changeinOpenInterest": 562, - "pchangeinOpenInterest": 178.412698412698, - "totalTradedVolume": 2808, - "impliedVolatility": 15.14, - "lastPrice": 330, - "change": -398.2, - "pChange": -54.6827794561934, - "totalBuyQuantity": 1250, - "totalSellQuantity": 4775, - "bidQty": 50, - "bidprice": 320, - "askQty": 100, - "askPrice": 330, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24100, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24100.00", - "openInterest": 185, - "changeinOpenInterest": 180, - "pchangeinOpenInterest": 3600, - "totalTradedVolume": 393, - "impliedVolatility": 14.96, - "lastPrice": 365.8, - "change": -340.3, - "pChange": -48.1943067554171, - "totalBuyQuantity": 1550, - "totalSellQuantity": 50, - "bidQty": 25, - "bidprice": 336.1, - "askQty": 25, - "askPrice": 373.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24100, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24100.00", - "openInterest": 741, - "changeinOpenInterest": 401, - "pchangeinOpenInterest": 117.941176470588, - "totalTradedVolume": 3684, - "impliedVolatility": 12.04, - "lastPrice": 239.8, - "change": 166.4, - "pChange": 226.702997275204, - "totalBuyQuantity": 8725, - "totalSellQuantity": 1550, - "bidQty": 200, - "bidprice": 239, - "askQty": 25, - "askPrice": 258.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24100, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24100.00", - "openInterest": 8, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 14.2857142857143, - "totalTradedVolume": 2, - "impliedVolatility": 11.77, - "lastPrice": 297.8, - "change": 97.8, - "pChange": 48.9, - "totalBuyQuantity": 12875, - "totalSellQuantity": 900, - "bidQty": 200, - "bidprice": 293.55, - "askQty": 900, - "askPrice": 344.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24100.00", - "openInterest": 6677, - "changeinOpenInterest": 411, - "pchangeinOpenInterest": 6.55920842642834, - "totalTradedVolume": 23720, - "impliedVolatility": 12.55, - "lastPrice": 380.6, - "change": 227.65, - "pChange": 148.839490029421, - "totalBuyQuantity": 26350, - "totalSellQuantity": 7375, - "bidQty": 25, - "bidprice": 329.3, - "askQty": 1800, - "askPrice": 361.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24100.00", - "openInterest": 3384, - "changeinOpenInterest": 1426, - "pchangeinOpenInterest": 72.829417773238, - "totalTradedVolume": 5643, - "impliedVolatility": 14.62, - "lastPrice": 410, - "change": -330.05, - "pChange": -44.5983379501385, - "totalBuyQuantity": 4150, - "totalSellQuantity": 4875, - "bidQty": 25, - "bidprice": 395, - "askQty": 25, - "askPrice": 426.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24100, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 338.05, - "askQty": 900, - "askPrice": 433.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24100.00", - "openInterest": 757, - "changeinOpenInterest": 162, - "pchangeinOpenInterest": 27.2268907563025, - "totalTradedVolume": 1029, - "impliedVolatility": 10.5, - "lastPrice": 574.35, - "change": 234.85, - "pChange": 69.1752577319588, - "totalBuyQuantity": 3925, - "totalSellQuantity": 3950, - "bidQty": 900, - "bidprice": 539.2, - "askQty": 25, - "askPrice": 592.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24100.00", - "openInterest": 238, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.418410041841004, - "totalTradedVolume": 46, - "impliedVolatility": 14.74, - "lastPrice": 487.35, - "change": -258.5, - "pChange": -34.65844338674, - "totalBuyQuantity": 3575, - "totalSellQuantity": 1700, - "bidQty": 1775, - "bidprice": 379.9, - "askQty": 800, - "askPrice": 532.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24150.00", - "openInterest": 3780, - "changeinOpenInterest": 2066, - "pchangeinOpenInterest": 120.536756126021, - "totalTradedVolume": 16792, - "impliedVolatility": 16.82, - "lastPrice": 323.8, - "change": -482.75, - "pChange": -59.8536978488624, - "totalBuyQuantity": 4550, - "totalSellQuantity": 10650, - "bidQty": 225, - "bidprice": 321.5, - "askQty": 300, - "askPrice": 329.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24150.00", - "openInterest": 35622, - "changeinOpenInterest": 15452, - "pchangeinOpenInterest": 76.6088249876054, - "totalTradedVolume": 1080400, - "impliedVolatility": 13.35, - "lastPrice": 82, - "change": 74.55, - "pChange": 1000.6711409396, - "totalBuyQuantity": 110975, - "totalSellQuantity": 40300, - "bidQty": 1000, - "bidprice": 80.4, - "askQty": 1000, - "askPrice": 81.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24150.00", - "openInterest": 596, - "changeinOpenInterest": 336, - "pchangeinOpenInterest": 129.230769230769, - "totalTradedVolume": 840, - "impliedVolatility": 15.74, - "lastPrice": 369.6, - "change": -418.65, - "pChange": -53.1113225499524, - "totalBuyQuantity": 2625, - "totalSellQuantity": 3725, - "bidQty": 150, - "bidprice": 250.5, - "askQty": 175, - "askPrice": 481.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24150.00", - "openInterest": 2498, - "changeinOpenInterest": 1684, - "pchangeinOpenInterest": 206.879606879607, - "totalTradedVolume": 27091, - "impliedVolatility": 12.88, - "lastPrice": 162.5, - "change": 135.8, - "pChange": 508.614232209738, - "totalBuyQuantity": 37650, - "totalSellQuantity": 4850, - "bidQty": 500, - "bidprice": 150.55, - "askQty": 1800, - "askPrice": 162.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24150.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 299, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 850, - "totalSellQuantity": 900, - "bidQty": 250, - "bidprice": 292, - "askQty": 900, - "askPrice": 533.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24150.00", - "openInterest": 198, - "changeinOpenInterest": 159, - "pchangeinOpenInterest": 407.692307692308, - "totalTradedVolume": 1215, - "impliedVolatility": 12.16, - "lastPrice": 220.3, - "change": 152.2, - "pChange": 223.494860499266, - "totalBuyQuantity": 8725, - "totalSellQuantity": 1825, - "bidQty": 25, - "bidprice": 210, - "askQty": 900, - "askPrice": 259, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "19-Dec-2024", - "PE": { - "strikePrice": 24150, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024PE24150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 600, - "totalSellQuantity": 0, - "bidQty": 600, - "bidprice": 304.85, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24150, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13625, - "totalSellQuantity": 300, - "bidQty": 900, - "bidprice": 47.3, - "askQty": 300, - "askPrice": 349.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24150.00", - "openInterest": 1093, - "changeinOpenInterest": 328, - "pchangeinOpenInterest": 42.8758169934641, - "totalTradedVolume": 3033, - "impliedVolatility": 11.33, - "lastPrice": 320.65, - "change": 181.1, - "pChange": 129.774274453601, - "totalBuyQuantity": 14525, - "totalSellQuantity": 2700, - "bidQty": 250, - "bidprice": 254.45, - "askQty": 25, - "askPrice": 378.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24150.00", - "openInterest": 548, - "changeinOpenInterest": 34, - "pchangeinOpenInterest": 6.6147859922179, - "totalTradedVolume": 964, - "impliedVolatility": 14.55, - "lastPrice": 433.15, - "change": -336.65, - "pChange": -43.7321382177189, - "totalBuyQuantity": 1100, - "totalSellQuantity": 1450, - "bidQty": 500, - "bidprice": 374.7, - "askQty": 25, - "askPrice": 494.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24150, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1800, - "bidQty": 1800, - "bidprice": 291.9, - "askQty": 1800, - "askPrice": 448.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24150.00", - "openInterest": 564, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 326.65, - "change": 2.5, - "pChange": 0.771247879068333, - "totalBuyQuantity": 3100, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 401.7, - "askQty": 300, - "askPrice": 619.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24150.00", - "openInterest": 11, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 804, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 925, - "bidQty": 0, - "bidprice": 0, - "askQty": 25, - "askPrice": 522.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24200.00", - "openInterest": 45900, - "changeinOpenInterest": -927, - "pchangeinOpenInterest": -1.97962713818951, - "totalTradedVolume": 55405, - "impliedVolatility": 17.06, - "lastPrice": 360, - "change": -496.1, - "pChange": -57.948837752599, - "totalBuyQuantity": 10225, - "totalSellQuantity": 18800, - "bidQty": 1250, - "bidprice": 355.5, - "askQty": 600, - "askPrice": 364.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24200.00", - "openInterest": 149328, - "changeinOpenInterest": 18104, - "pchangeinOpenInterest": 13.7962567822959, - "totalTradedVolume": 2549995, - "impliedVolatility": 13.31, - "lastPrice": 67.25, - "change": 60.85, - "pChange": 950.78125, - "totalBuyQuantity": 578425, - "totalSellQuantity": 101800, - "bidQty": 600, - "bidprice": 66, - "askQty": 25, - "askPrice": 67.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24200.00", - "openInterest": 9532, - "changeinOpenInterest": 2008, - "pchangeinOpenInterest": 26.6879319510898, - "totalTradedVolume": 123616, - "impliedVolatility": 12.35, - "lastPrice": 135, - "change": 112.1, - "pChange": 489.519650655022, - "totalBuyQuantity": 226675, - "totalSellQuantity": 18725, - "bidQty": 250, - "bidprice": 132.85, - "askQty": 1800, - "askPrice": 142.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24200.00", - "openInterest": 1281, - "changeinOpenInterest": 839, - "pchangeinOpenInterest": 189.819004524887, - "totalTradedVolume": 4450, - "impliedVolatility": 14.89, - "lastPrice": 385, - "change": -436.6, - "pChange": -53.1402142161636, - "totalBuyQuantity": 2350, - "totalSellQuantity": 5525, - "bidQty": 1000, - "bidprice": 369.95, - "askQty": 125, - "askPrice": 392.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24200.00", - "openInterest": 1620, - "changeinOpenInterest": 951, - "pchangeinOpenInterest": 142.152466367713, - "totalTradedVolume": 5120, - "impliedVolatility": 12.17, - "lastPrice": 199.9, - "change": 144.6, - "pChange": 261.482820976492, - "totalBuyQuantity": 16075, - "totalSellQuantity": 1000, - "bidQty": 200, - "bidprice": 193.4, - "askQty": 25, - "askPrice": 204, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24200.00", - "openInterest": 133, - "changeinOpenInterest": 52, - "pchangeinOpenInterest": 64.1975308641975, - "totalTradedVolume": 309, - "impliedVolatility": 15.04, - "lastPrice": 423.15, - "change": -386.85, - "pChange": -47.7592592592593, - "totalBuyQuantity": 525, - "totalSellQuantity": 900, - "bidQty": 25, - "bidprice": 411, - "askQty": 75, - "askPrice": 430.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24200, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24200.00", - "openInterest": 21, - "changeinOpenInterest": 16, - "pchangeinOpenInterest": 320, - "totalTradedVolume": 31, - "impliedVolatility": 12.07, - "lastPrice": 260, - "change": 170, - "pChange": 188.888888888889, - "totalBuyQuantity": 9700, - "totalSellQuantity": 725, - "bidQty": 200, - "bidprice": 245.95, - "askQty": 200, - "askPrice": 286.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24200.00", - "openInterest": 8086, - "changeinOpenInterest": 2552, - "pchangeinOpenInterest": 46.1149259125407, - "totalTradedVolume": 12279, - "impliedVolatility": 14.42, - "lastPrice": 455.3, - "change": -363.9, - "pChange": -44.42138671875, - "totalBuyQuantity": 3725, - "totalSellQuantity": 10975, - "bidQty": 250, - "bidprice": 444.55, - "askQty": 25, - "askPrice": 463, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24200.00", - "openInterest": 11905, - "changeinOpenInterest": -884, - "pchangeinOpenInterest": -6.91219016342169, - "totalTradedVolume": 37123, - "impliedVolatility": 11.45, - "lastPrice": 300.8, - "change": 174.5, - "pChange": 138.163103721298, - "totalBuyQuantity": 21100, - "totalSellQuantity": 8475, - "bidQty": 25, - "bidprice": 300.2, - "askQty": 25, - "askPrice": 306, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "02-Jan-2025", - "PE": { - "strikePrice": 24200, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025PE24200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24200, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1350, - "totalSellQuantity": 0, - "bidQty": 450, - "bidprice": 251.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24200.00", - "openInterest": 3642, - "changeinOpenInterest": 592, - "pchangeinOpenInterest": 19.4098360655738, - "totalTradedVolume": 856, - "impliedVolatility": 14.69, - "lastPrice": 530, - "change": -284.5, - "pChange": -34.9294045426642, - "totalBuyQuantity": 1875, - "totalSellQuantity": 350, - "bidQty": 25, - "bidprice": 483.1, - "askQty": 25, - "askPrice": 561.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24200.00", - "openInterest": 1221, - "changeinOpenInterest": 260, - "pchangeinOpenInterest": 27.0551508844953, - "totalTradedVolume": 1515, - "impliedVolatility": 10.57, - "lastPrice": 521.75, - "change": 225.05, - "pChange": 75.8510279743849, - "totalBuyQuantity": 3025, - "totalSellQuantity": 950, - "bidQty": 25, - "bidprice": 510.3, - "askQty": 25, - "askPrice": 558.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24250.00", - "openInterest": 35523, - "changeinOpenInterest": 14802, - "pchangeinOpenInterest": 71.4347763138845, - "totalTradedVolume": 1121664, - "impliedVolatility": 13.09, - "lastPrice": 52.95, - "change": 47.55, - "pChange": 880.555555555556, - "totalBuyQuantity": 125400, - "totalSellQuantity": 22025, - "bidQty": 1600, - "bidprice": 52.95, - "askQty": 1000, - "askPrice": 53.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24250.00", - "openInterest": 2177, - "changeinOpenInterest": 48, - "pchangeinOpenInterest": 2.25457961484265, - "totalTradedVolume": 3440, - "impliedVolatility": 17.93, - "lastPrice": 404.4, - "change": -513.15, - "pChange": -55.9261075690698, - "totalBuyQuantity": 8800, - "totalSellQuantity": 10000, - "bidQty": 600, - "bidprice": 396, - "askQty": 600, - "askPrice": 401.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24250.00", - "openInterest": 2457, - "changeinOpenInterest": 1989, - "pchangeinOpenInterest": 425, - "totalTradedVolume": 23910, - "impliedVolatility": 12.46, - "lastPrice": 120, - "change": 100.85, - "pChange": 526.631853785901, - "totalBuyQuantity": 43550, - "totalSellQuantity": 3025, - "bidQty": 1700, - "bidprice": 117.9, - "askQty": 125, - "askPrice": 120, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24250.00", - "openInterest": 253, - "changeinOpenInterest": 168, - "pchangeinOpenInterest": 197.647058823529, - "totalTradedVolume": 541, - "impliedVolatility": 15.83, - "lastPrice": 432.75, - "change": -443.25, - "pChange": -50.5993150684932, - "totalBuyQuantity": 3100, - "totalSellQuantity": 2725, - "bidQty": 300, - "bidprice": 316.05, - "askQty": 200, - "askPrice": 431.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 368.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 700, - "totalSellQuantity": 900, - "bidQty": 700, - "bidprice": 333.05, - "askQty": 900, - "askPrice": 484.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 468.15, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 10100, - "totalSellQuantity": 800, - "bidQty": 300, - "bidprice": 63.85, - "askQty": 800, - "askPrice": 210.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24250, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 10025, - "totalSellQuantity": 275, - "bidQty": 900, - "bidprice": 104.95, - "askQty": 275, - "askPrice": 276.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24250.00", - "openInterest": 403, - "changeinOpenInterest": -144, - "pchangeinOpenInterest": -26.3254113345521, - "totalTradedVolume": 314, - "impliedVolatility": 15.12, - "lastPrice": 502.6, - "change": -342.6, - "pChange": -40.5347846663512, - "totalBuyQuantity": 1600, - "totalSellQuantity": 2900, - "bidQty": 75, - "bidprice": 441.95, - "askQty": 100, - "askPrice": 514.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24250.00", - "openInterest": 1762, - "changeinOpenInterest": 440, - "pchangeinOpenInterest": 33.2829046898638, - "totalTradedVolume": 2424, - "impliedVolatility": 11.41, - "lastPrice": 277.25, - "change": 162.15, - "pChange": 140.877497827976, - "totalBuyQuantity": 16925, - "totalSellQuantity": 2675, - "bidQty": 300, - "bidprice": 250.3, - "askQty": 25, - "askPrice": 299, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24250, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1800, - "totalSellQuantity": 1575, - "bidQty": 900, - "bidprice": 284.7, - "askQty": 900, - "askPrice": 382.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24250.00", - "openInterest": 492, - "changeinOpenInterest": 202, - "pchangeinOpenInterest": 69.6551724137931, - "totalTradedVolume": 417, - "impliedVolatility": 10.54, - "lastPrice": 493.8, - "change": 211, - "pChange": 74.6110325318246, - "totalBuyQuantity": 3625, - "totalSellQuantity": 1075, - "bidQty": 900, - "bidprice": 452.8, - "askQty": 25, - "askPrice": 543.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24250.00", - "openInterest": 9, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 531.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 900, - "bidQty": 0, - "bidprice": 0, - "askQty": 900, - "askPrice": 646.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24300.00", - "openInterest": 51022, - "changeinOpenInterest": -615, - "pchangeinOpenInterest": -1.19100644886419, - "totalTradedVolume": 16781, - "impliedVolatility": 17.34, - "lastPrice": 434.75, - "change": -515.5, - "pChange": -54.2488818731913, - "totalBuyQuantity": 10000, - "totalSellQuantity": 14525, - "bidQty": 600, - "bidprice": 435.2, - "askQty": 600, - "askPrice": 441.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24300.00", - "openInterest": 152231, - "changeinOpenInterest": 36492, - "pchangeinOpenInterest": 31.5295622046156, - "totalTradedVolume": 1833866, - "impliedVolatility": 13.13, - "lastPrice": 43, - "change": 38.25, - "pChange": 805.263157894737, - "totalBuyQuantity": 488025, - "totalSellQuantity": 83250, - "bidQty": 1750, - "bidprice": 42.5, - "askQty": 3275, - "askPrice": 43, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24300.00", - "openInterest": 10693, - "changeinOpenInterest": 4785, - "pchangeinOpenInterest": 80.9918754231551, - "totalTradedVolume": 97252, - "impliedVolatility": 12.22, - "lastPrice": 101.05, - "change": 84.25, - "pChange": 501.488095238095, - "totalBuyQuantity": 254350, - "totalSellQuantity": 2625, - "bidQty": 450, - "bidprice": 101, - "askQty": 25, - "askPrice": 105, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24300.00", - "openInterest": 379, - "changeinOpenInterest": 260, - "pchangeinOpenInterest": 218.487394957983, - "totalTradedVolume": 2212, - "impliedVolatility": 15.25, - "lastPrice": 456.1, - "change": -453.9, - "pChange": -49.8791208791209, - "totalBuyQuantity": 2675, - "totalSellQuantity": 5950, - "bidQty": 200, - "bidprice": 436.95, - "askQty": 300, - "askPrice": 480.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24300.00", - "openInterest": 17, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 41.6666666666667, - "totalTradedVolume": 32, - "impliedVolatility": 15.38, - "lastPrice": 490.6, - "change": -112.85, - "pChange": -18.7008037119894, - "totalBuyQuantity": 900, - "totalSellQuantity": 675, - "bidQty": 200, - "bidprice": 390.6, - "askQty": 200, - "askPrice": 517.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24300.00", - "openInterest": 1478, - "changeinOpenInterest": 622, - "pchangeinOpenInterest": 72.6635514018692, - "totalTradedVolume": 7950, - "impliedVolatility": 11.49, - "lastPrice": 148.55, - "change": 105.1, - "pChange": 241.887226697353, - "totalBuyQuantity": 21600, - "totalSellQuantity": 1725, - "bidQty": 1800, - "bidprice": 157.6, - "askQty": 250, - "askPrice": 168, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24300, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24300.00", - "openInterest": 14, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 7.69230769230769, - "totalTradedVolume": 79, - "impliedVolatility": 11.6, - "lastPrice": 207.35, - "change": 136.55, - "pChange": 192.867231638418, - "totalBuyQuantity": 9800, - "totalSellQuantity": 1600, - "bidQty": 200, - "bidprice": 208.15, - "askQty": 25, - "askPrice": 241.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24300.00", - "openInterest": 11682, - "changeinOpenInterest": 355, - "pchangeinOpenInterest": 3.13410435243224, - "totalTradedVolume": 33368, - "impliedVolatility": 11.47, - "lastPrice": 257.9, - "change": 153.85, - "pChange": 147.861604997597, - "totalBuyQuantity": 24500, - "totalSellQuantity": 6875, - "bidQty": 25, - "bidprice": 245.35, - "askQty": 25, - "askPrice": 261.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24300.00", - "openInterest": 3156, - "changeinOpenInterest": 726, - "pchangeinOpenInterest": 29.8765432098765, - "totalTradedVolume": 2063, - "impliedVolatility": 14.81, - "lastPrice": 521.55, - "change": -371.6, - "pChange": -41.6055533784919, - "totalBuyQuantity": 1975, - "totalSellQuantity": 6075, - "bidQty": 25, - "bidprice": 500, - "askQty": 25, - "askPrice": 524.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24300, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2250, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 125.15, - "askQty": 900, - "askPrice": 347.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24300.00", - "openInterest": 974, - "changeinOpenInterest": 169, - "pchangeinOpenInterest": 20.9937888198758, - "totalTradedVolume": 764, - "impliedVolatility": 10.69, - "lastPrice": 474.7, - "change": 210.5, - "pChange": 79.6744890234671, - "totalBuyQuantity": 3925, - "totalSellQuantity": 1350, - "bidQty": 1200, - "bidprice": 360.15, - "askQty": 25, - "askPrice": 504.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24300.00", - "openInterest": 337, - "changeinOpenInterest": 187, - "pchangeinOpenInterest": 124.666666666667, - "totalTradedVolume": 602, - "impliedVolatility": 14.73, - "lastPrice": 579.45, - "change": -286.5, - "pChange": -33.085051099948, - "totalBuyQuantity": 1150, - "totalSellQuantity": 2025, - "bidQty": 250, - "bidprice": 501.05, - "askQty": 25, - "askPrice": 603.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24350.00", - "openInterest": 1485, - "changeinOpenInterest": 25, - "pchangeinOpenInterest": 1.71232876712329, - "totalTradedVolume": 739, - "impliedVolatility": 18.62, - "lastPrice": 485, - "change": -531.9, - "pChange": -52.3060281246927, - "totalBuyQuantity": 9475, - "totalSellQuantity": 10575, - "bidQty": 600, - "bidprice": 476.1, - "askQty": 600, - "askPrice": 484.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24350.00", - "openInterest": 24739, - "changeinOpenInterest": 12364, - "pchangeinOpenInterest": 99.9111111111111, - "totalTradedVolume": 885552, - "impliedVolatility": 13.06, - "lastPrice": 33.8, - "change": 29.7, - "pChange": 724.390243902439, - "totalBuyQuantity": 114525, - "totalSellQuantity": 27725, - "bidQty": 50, - "bidprice": 33.8, - "askQty": 1075, - "askPrice": 34.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24350.00", - "openInterest": 74, - "changeinOpenInterest": 29, - "pchangeinOpenInterest": 64.4444444444444, - "totalTradedVolume": 41, - "impliedVolatility": 15.45, - "lastPrice": 493.45, - "change": -388.5, - "pChange": -44.0501162197404, - "totalBuyQuantity": 1175, - "totalSellQuantity": 3950, - "bidQty": 375, - "bidprice": 53.45, - "askQty": 375, - "askPrice": 637.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24350.00", - "openInterest": 2740, - "changeinOpenInterest": 1991, - "pchangeinOpenInterest": 265.821094793057, - "totalTradedVolume": 30202, - "impliedVolatility": 12.15, - "lastPrice": 86.5, - "change": 71.35, - "pChange": 470.957095709571, - "totalBuyQuantity": 35200, - "totalSellQuantity": 2050, - "bidQty": 25, - "bidprice": 86, - "askQty": 150, - "askPrice": 94.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 500, - "totalSellQuantity": 0, - "bidQty": 500, - "bidprice": 424.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24350.00", - "openInterest": 433, - "changeinOpenInterest": 405, - "pchangeinOpenInterest": 1446.42857142857, - "totalTradedVolume": 610, - "impliedVolatility": 11.78, - "lastPrice": 138.2, - "change": 62.6, - "pChange": 82.8042328042328, - "totalBuyQuantity": 15275, - "totalSellQuantity": 425, - "bidQty": 1800, - "bidprice": 138.3, - "askQty": 50, - "askPrice": 155, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24350, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24350.00", - "openInterest": 1, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -50, - "totalTradedVolume": 2, - "impliedVolatility": 10, - "lastPrice": 150, - "change": 73.6, - "pChange": 96.3350785340314, - "totalBuyQuantity": 9950, - "totalSellQuantity": 125, - "bidQty": 900, - "bidprice": 18.05, - "askQty": 125, - "askPrice": 235.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24350.00", - "openInterest": 220, - "changeinOpenInterest": -44, - "pchangeinOpenInterest": -16.6666666666667, - "totalTradedVolume": 245, - "impliedVolatility": 15.12, - "lastPrice": 558.9, - "change": -353.75, - "pChange": -38.7607516572618, - "totalBuyQuantity": 1475, - "totalSellQuantity": 1025, - "bidQty": 25, - "bidprice": 501.35, - "askQty": 25, - "askPrice": 605.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24350.00", - "openInterest": 995, - "changeinOpenInterest": -288, - "pchangeinOpenInterest": -22.4473889321902, - "totalTradedVolume": 2678, - "impliedVolatility": 11.4, - "lastPrice": 236, - "change": 142.2, - "pChange": 151.599147121535, - "totalBuyQuantity": 17475, - "totalSellQuantity": 2825, - "bidQty": 300, - "bidprice": 226.55, - "askQty": 675, - "askPrice": 289.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24350, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2100, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 51.55, - "askQty": 1800, - "askPrice": 351.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24350.00", - "openInterest": 19, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 387.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2400, - "totalSellQuantity": 850, - "bidQty": 600, - "bidprice": 378.7, - "askQty": 850, - "askPrice": 491.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24350.00", - "openInterest": 78, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 755.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 25, - "bidQty": 0, - "bidprice": 0, - "askQty": 25, - "askPrice": 749.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24400.00", - "openInterest": 124294, - "changeinOpenInterest": 32732, - "pchangeinOpenInterest": 35.7484545990695, - "totalTradedVolume": 1841427, - "impliedVolatility": 13.22, - "lastPrice": 27.7, - "change": 24, - "pChange": 648.648648648649, - "totalBuyQuantity": 296750, - "totalSellQuantity": 65300, - "bidQty": 1600, - "bidprice": 27, - "askQty": 175, - "askPrice": 27.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24400.00", - "openInterest": 41192, - "changeinOpenInterest": -1935, - "pchangeinOpenInterest": -4.48674844065203, - "totalTradedVolume": 7915, - "impliedVolatility": 18.76, - "lastPrice": 525, - "change": -524.7, - "pChange": -49.9857102029151, - "totalBuyQuantity": 9350, - "totalSellQuantity": 14275, - "bidQty": 600, - "bidprice": 519.3, - "askQty": 250, - "askPrice": 526.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24400.00", - "openInterest": 6303, - "changeinOpenInterest": 1299, - "pchangeinOpenInterest": 25.9592326139089, - "totalTradedVolume": 74556, - "impliedVolatility": 12.15, - "lastPrice": 74.55, - "change": 61.55, - "pChange": 473.461538461538, - "totalBuyQuantity": 219775, - "totalSellQuantity": 6550, - "bidQty": 500, - "bidprice": 73.15, - "askQty": 25, - "askPrice": 77.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24400.00", - "openInterest": 318, - "changeinOpenInterest": 288, - "pchangeinOpenInterest": 960, - "totalTradedVolume": 1643, - "impliedVolatility": 16.01, - "lastPrice": 537.65, - "change": -459.85, - "pChange": -46.1002506265664, - "totalBuyQuantity": 1550, - "totalSellQuantity": 2625, - "bidQty": 100, - "bidprice": 509.45, - "askQty": 225, - "askPrice": 541.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 448.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24400.00", - "openInterest": 675, - "changeinOpenInterest": 308, - "pchangeinOpenInterest": 83.9237057220709, - "totalTradedVolume": 2404, - "impliedVolatility": 12.2, - "lastPrice": 131.3, - "change": 96.6, - "pChange": 278.386167146974, - "totalBuyQuantity": 31625, - "totalSellQuantity": 950, - "bidQty": 50, - "bidprice": 124.85, - "askQty": 50, - "askPrice": 131.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24400, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24400.00", - "openInterest": 16, - "changeinOpenInterest": -5, - "pchangeinOpenInterest": -23.8095238095238, - "totalTradedVolume": 34, - "impliedVolatility": 12.59, - "lastPrice": 195.55, - "change": 75.05, - "pChange": 62.2821576763486, - "totalBuyQuantity": 11900, - "totalSellQuantity": 5400, - "bidQty": 200, - "bidprice": 171.35, - "askQty": 1800, - "askPrice": 190.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24400.00", - "openInterest": 2990, - "changeinOpenInterest": 478, - "pchangeinOpenInterest": 19.0286624203822, - "totalTradedVolume": 2373, - "impliedVolatility": 14.54, - "lastPrice": 572.15, - "change": -397.65, - "pChange": -41.0032996494123, - "totalBuyQuantity": 2150, - "totalSellQuantity": 4450, - "bidQty": 75, - "bidprice": 558.15, - "askQty": 25, - "askPrice": 601.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24400.00", - "openInterest": 16601, - "changeinOpenInterest": 2074, - "pchangeinOpenInterest": 14.2768637709093, - "totalTradedVolume": 31108, - "impliedVolatility": 11.47, - "lastPrice": 219.1, - "change": 132.25, - "pChange": 152.274035693725, - "totalBuyQuantity": 22200, - "totalSellQuantity": 4975, - "bidQty": 175, - "bidprice": 218.5, - "askQty": 25, - "askPrice": 241.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24400, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24400.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 1800, - "bidQty": 0, - "bidprice": 0, - "askQty": 1800, - "askPrice": 305.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24400.00", - "openInterest": 3243, - "changeinOpenInterest": 1614, - "pchangeinOpenInterest": 99.0791896869245, - "totalTradedVolume": 2035, - "impliedVolatility": 14.55, - "lastPrice": 621.8, - "change": -321.45, - "pChange": -34.0789822422476, - "totalBuyQuantity": 1850, - "totalSellQuantity": 425, - "bidQty": 50, - "bidprice": 566.7, - "askQty": 25, - "askPrice": 643.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24400.00", - "openInterest": 693, - "changeinOpenInterest": 136, - "pchangeinOpenInterest": 24.4165170556553, - "totalTradedVolume": 434, - "impliedVolatility": 10.55, - "lastPrice": 419.95, - "change": 189.05, - "pChange": 81.875270679948, - "totalBuyQuantity": 5325, - "totalSellQuantity": 1275, - "bidQty": 25, - "bidprice": 420, - "askQty": 25, - "askPrice": 435.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24450.00", - "openInterest": 1312, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 0.305810397553517, - "totalTradedVolume": 667, - "impliedVolatility": 19.69, - "lastPrice": 572.85, - "change": -522.3, - "pChange": -47.6920969730174, - "totalBuyQuantity": 9725, - "totalSellQuantity": 10450, - "bidQty": 600, - "bidprice": 562.4, - "askQty": 600, - "askPrice": 572.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24450.00", - "openInterest": 27857, - "changeinOpenInterest": 16069, - "pchangeinOpenInterest": 136.316593145572, - "totalTradedVolume": 842671, - "impliedVolatility": 13.24, - "lastPrice": 21.8, - "change": 18.55, - "pChange": 570.769230769231, - "totalBuyQuantity": 106525, - "totalSellQuantity": 21300, - "bidQty": 1000, - "bidprice": 21.45, - "askQty": 1525, - "askPrice": 22, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24450.00", - "openInterest": 1341, - "changeinOpenInterest": 660, - "pchangeinOpenInterest": 96.9162995594714, - "totalTradedVolume": 21951, - "impliedVolatility": 12.1, - "lastPrice": 63.1, - "change": 51.55, - "pChange": 446.320346320346, - "totalBuyQuantity": 33500, - "totalSellQuantity": 1100, - "bidQty": 50, - "bidprice": 61, - "askQty": 500, - "askPrice": 70.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24450.00", - "openInterest": 54, - "changeinOpenInterest": 14, - "pchangeinOpenInterest": 35, - "totalTradedVolume": 83, - "impliedVolatility": 16.78, - "lastPrice": 585.5, - "change": -324.65, - "pChange": -35.6699445146404, - "totalBuyQuantity": 150, - "totalSellQuantity": 3950, - "bidQty": 50, - "bidprice": 551.4, - "askQty": 150, - "askPrice": 683.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24450.00", - "openInterest": 72, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 7.46268656716418, - "totalTradedVolume": 177, - "impliedVolatility": 11.98, - "lastPrice": 113.15, - "change": 71.6, - "pChange": 172.322503008424, - "totalBuyQuantity": 24475, - "totalSellQuantity": 800, - "bidQty": 500, - "bidprice": 103.55, - "askQty": 300, - "askPrice": 134.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24450, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24450.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 97.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13750, - "totalSellQuantity": 0, - "bidQty": 150, - "bidprice": 65.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24450.00", - "openInterest": 358, - "changeinOpenInterest": 24, - "pchangeinOpenInterest": 7.18562874251497, - "totalTradedVolume": 268, - "impliedVolatility": 14.65, - "lastPrice": 605.6, - "change": -361.65, - "pChange": -37.3895063323856, - "totalBuyQuantity": 1600, - "totalSellQuantity": 1000, - "bidQty": 100, - "bidprice": 577, - "askQty": 1000, - "askPrice": 849.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24450.00", - "openInterest": 1181, - "changeinOpenInterest": 116, - "pchangeinOpenInterest": 10.8920187793427, - "totalTradedVolume": 2605, - "impliedVolatility": 11.8, - "lastPrice": 210.45, - "change": 132, - "pChange": 168.260038240918, - "totalBuyQuantity": 14400, - "totalSellQuantity": 2400, - "bidQty": 900, - "bidprice": 193.15, - "askQty": 900, - "askPrice": 299.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24450, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2025, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 42.85, - "askQty": 1800, - "askPrice": 357.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24450.00", - "openInterest": 16, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 827.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24450.00", - "openInterest": 120, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0.840336134453782, - "totalTradedVolume": 13, - "impliedVolatility": 10.68, - "lastPrice": 402.65, - "change": 170.65, - "pChange": 73.5560344827586, - "totalBuyQuantity": 1825, - "totalSellQuantity": 900, - "bidQty": 900, - "bidprice": 381.25, - "askQty": 900, - "askPrice": 453.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24500.00", - "openInterest": 257968, - "changeinOpenInterest": 16725, - "pchangeinOpenInterest": 6.93284364727681, - "totalTradedVolume": 2447961, - "impliedVolatility": 13.33, - "lastPrice": 17.4, - "change": 14.4, - "pChange": 480, - "totalBuyQuantity": 1373150, - "totalSellQuantity": 224475, - "bidQty": 75, - "bidprice": 17.4, - "askQty": 1025, - "askPrice": 17.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24500.00", - "openInterest": 76632, - "changeinOpenInterest": 1073, - "pchangeinOpenInterest": 1.4200823197766, - "totalTradedVolume": 37975, - "impliedVolatility": 19.31, - "lastPrice": 610.15, - "change": -543.55, - "pChange": -47.1136343936899, - "totalBuyQuantity": 12775, - "totalSellQuantity": 21575, - "bidQty": 1650, - "bidprice": 610, - "askQty": 250, - "askPrice": 616.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24500.00", - "openInterest": 588, - "changeinOpenInterest": 197, - "pchangeinOpenInterest": 50.383631713555, - "totalTradedVolume": 1092, - "impliedVolatility": 15.57, - "lastPrice": 605, - "change": -518.95, - "pChange": -46.1719827394457, - "totalBuyQuantity": 3800, - "totalSellQuantity": 2500, - "bidQty": 75, - "bidprice": 595.6, - "askQty": 50, - "askPrice": 607.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24500.00", - "openInterest": 17560, - "changeinOpenInterest": 5482, - "pchangeinOpenInterest": 45.3883093227356, - "totalTradedVolume": 134467, - "impliedVolatility": 12.29, - "lastPrice": 56, - "change": 45.85, - "pChange": 451.724137931035, - "totalBuyQuantity": 62125, - "totalSellQuantity": 13600, - "bidQty": 100, - "bidprice": 56, - "askQty": 25, - "askPrice": 57.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24500.00", - "openInterest": 1882, - "changeinOpenInterest": 318, - "pchangeinOpenInterest": 20.3324808184143, - "totalTradedVolume": 10594, - "impliedVolatility": 12.24, - "lastPrice": 105, - "change": 77.35, - "pChange": 279.746835443038, - "totalBuyQuantity": 34825, - "totalSellQuantity": 4425, - "bidQty": 50, - "bidprice": 100, - "askQty": 1725, - "askPrice": 105, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24500.00", - "openInterest": 86, - "changeinOpenInterest": 79, - "pchangeinOpenInterest": 1128.57142857143, - "totalTradedVolume": 200, - "impliedVolatility": 16.17, - "lastPrice": 638.85, - "change": -300.15, - "pChange": -31.9648562300319, - "totalBuyQuantity": 100, - "totalSellQuantity": 0, - "bidQty": 100, - "bidprice": 577.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24500, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24500.00", - "openInterest": 144, - "changeinOpenInterest": 89, - "pchangeinOpenInterest": 161.818181818182, - "totalTradedVolume": 669, - "impliedVolatility": 11.91, - "lastPrice": 148, - "change": 96.3, - "pChange": 186.266924564797, - "totalBuyQuantity": 21250, - "totalSellQuantity": 3725, - "bidQty": 200, - "bidprice": 140.3, - "askQty": 900, - "askPrice": 163.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24500.00", - "openInterest": 26721, - "changeinOpenInterest": 1162, - "pchangeinOpenInterest": 4.54634375366798, - "totalTradedVolume": 18086, - "impliedVolatility": 14.56, - "lastPrice": 634.4, - "change": -417.6, - "pChange": -39.6958174904943, - "totalBuyQuantity": 5425, - "totalSellQuantity": 15250, - "bidQty": 25, - "bidprice": 632.85, - "askQty": 200, - "askPrice": 640, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24500.00", - "openInterest": 65023, - "changeinOpenInterest": -6434, - "pchangeinOpenInterest": -9.00401640147221, - "totalTradedVolume": 152588, - "impliedVolatility": 11.74, - "lastPrice": 192, - "change": 120.65, - "pChange": 169.096005606167, - "totalBuyQuantity": 36500, - "totalSellQuantity": 23025, - "bidQty": 25, - "bidprice": 186.8, - "askQty": 875, - "askPrice": 192, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24500, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24500.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1875, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 188.65, - "askQty": 1800, - "askPrice": 247.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24500.00", - "openInterest": 15413, - "changeinOpenInterest": 1266, - "pchangeinOpenInterest": 8.94889375839401, - "totalTradedVolume": 15381, - "impliedVolatility": 10.84, - "lastPrice": 387, - "change": 179.9, - "pChange": 86.8662481892806, - "totalBuyQuantity": 12325, - "totalSellQuantity": 4550, - "bidQty": 100, - "bidprice": 381, - "askQty": 275, - "askPrice": 387, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24500.00", - "openInterest": 8831, - "changeinOpenInterest": 1010, - "pchangeinOpenInterest": 12.9139496228104, - "totalTradedVolume": 2840, - "impliedVolatility": 14.45, - "lastPrice": 670, - "change": -335.15, - "pChange": -33.3432820971994, - "totalBuyQuantity": 2675, - "totalSellQuantity": 4325, - "bidQty": 25, - "bidprice": 660, - "askQty": 50, - "askPrice": 678.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24550.00", - "openInterest": 33938, - "changeinOpenInterest": 18156, - "pchangeinOpenInterest": 115.042453427956, - "totalTradedVolume": 668483, - "impliedVolatility": 13.53, - "lastPrice": 14.25, - "change": 11.35, - "pChange": 391.379310344828, - "totalBuyQuantity": 292025, - "totalSellQuantity": 21750, - "bidQty": 625, - "bidprice": 12.25, - "askQty": 1275, - "askPrice": 13.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24550.00", - "openInterest": 780, - "changeinOpenInterest": -14, - "pchangeinOpenInterest": -1.7632241813602, - "totalTradedVolume": 173, - "impliedVolatility": 21.1, - "lastPrice": 665.8, - "change": -540.75, - "pChange": -44.8178691309933, - "totalBuyQuantity": 6600, - "totalSellQuantity": 6650, - "bidQty": 100, - "bidprice": 650.75, - "askQty": 100, - "askPrice": 666.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24550.00", - "openInterest": 1276, - "changeinOpenInterest": 164, - "pchangeinOpenInterest": 14.7482014388489, - "totalTradedVolume": 15380, - "impliedVolatility": 12.59, - "lastPrice": 50.95, - "change": 41.8, - "pChange": 456.830601092896, - "totalBuyQuantity": 36200, - "totalSellQuantity": 325, - "bidQty": 25, - "bidprice": 46, - "askQty": 250, - "askPrice": 54.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24550.00", - "openInterest": 47, - "changeinOpenInterest": 46, - "pchangeinOpenInterest": 4600, - "totalTradedVolume": 66, - "impliedVolatility": 17.36, - "lastPrice": 668.4, - "change": -352.7, - "pChange": -34.5411810792283, - "totalBuyQuantity": 2975, - "totalSellQuantity": 3225, - "bidQty": 50, - "bidprice": 631.25, - "askQty": 100, - "askPrice": 772.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24550.00", - "openInterest": 185, - "changeinOpenInterest": 117, - "pchangeinOpenInterest": 172.058823529412, - "totalTradedVolume": 558, - "impliedVolatility": 11.96, - "lastPrice": 88.35, - "change": 63.55, - "pChange": 256.25, - "totalBuyQuantity": 24300, - "totalSellQuantity": 900, - "bidQty": 600, - "bidprice": 27.15, - "askQty": 900, - "askPrice": 100.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24550, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 15300, - "totalSellQuantity": 0, - "bidQty": 150, - "bidprice": 25.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24550.00", - "openInterest": 1299, - "changeinOpenInterest": 151, - "pchangeinOpenInterest": 13.1533101045296, - "totalTradedVolume": 2913, - "impliedVolatility": 12.09, - "lastPrice": 185.45, - "change": 120.85, - "pChange": 187.074303405573, - "totalBuyQuantity": 13000, - "totalSellQuantity": 2075, - "bidQty": 250, - "bidprice": 161.45, - "askQty": 900, - "askPrice": 185.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24550.00", - "openInterest": 389, - "changeinOpenInterest": 79, - "pchangeinOpenInterest": 25.4838709677419, - "totalTradedVolume": 221, - "impliedVolatility": 14.2, - "lastPrice": 656.9, - "change": -434.55, - "pChange": -39.8140088872601, - "totalBuyQuantity": 1825, - "totalSellQuantity": 4025, - "bidQty": 25, - "bidprice": 631.25, - "askQty": 25, - "askPrice": 695.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24550, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 300, - "totalSellQuantity": 225, - "bidQty": 300, - "bidprice": 32.1, - "askQty": 225, - "askPrice": 590, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24550.00", - "openInterest": 0, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -100, - "totalTradedVolume": 1, - "impliedVolatility": 16.39, - "lastPrice": 777.45, - "change": 187.45, - "pChange": 31.771186440678, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 500, - "askQty": 1775, - "askPrice": 1384.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24550.00", - "openInterest": 38, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 18, - "impliedVolatility": 10.33, - "lastPrice": 344.8, - "change": 154.7, - "pChange": 81.3782219884272, - "totalBuyQuantity": 9925, - "totalSellQuantity": 375, - "bidQty": 25, - "bidprice": 344.75, - "askQty": 375, - "askPrice": 377.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24600.00", - "openInterest": 125459, - "changeinOpenInterest": 61950, - "pchangeinOpenInterest": 97.5452298099482, - "totalTradedVolume": 1262138, - "impliedVolatility": 13.4, - "lastPrice": 10.45, - "change": 7.85, - "pChange": 301.923076923077, - "totalBuyQuantity": 774875, - "totalSellQuantity": 49500, - "bidQty": 1000, - "bidprice": 10, - "askQty": 1525, - "askPrice": 10.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24600.00", - "openInterest": 12908, - "changeinOpenInterest": -1215, - "pchangeinOpenInterest": -8.60298803370389, - "totalTradedVolume": 2687, - "impliedVolatility": 21.01, - "lastPrice": 706.75, - "change": -539.65, - "pChange": -43.2966944801027, - "totalBuyQuantity": 6875, - "totalSellQuantity": 7875, - "bidQty": 75, - "bidprice": 700.35, - "askQty": 25, - "askPrice": 711.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24600.00", - "openInterest": 98, - "changeinOpenInterest": 91, - "pchangeinOpenInterest": 1300, - "totalTradedVolume": 125, - "impliedVolatility": 17.22, - "lastPrice": 705, - "change": -492.5, - "pChange": -41.1273486430063, - "totalBuyQuantity": 3225, - "totalSellQuantity": 3200, - "bidQty": 50, - "bidprice": 674.8, - "askQty": 100, - "askPrice": 705.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24600.00", - "openInterest": 3971, - "changeinOpenInterest": 1409, - "pchangeinOpenInterest": 54.9960967993755, - "totalTradedVolume": 41396, - "impliedVolatility": 12.46, - "lastPrice": 42, - "change": 33.6, - "pChange": 400, - "totalBuyQuantity": 45125, - "totalSellQuantity": 725, - "bidQty": 300, - "bidprice": 39, - "askQty": 75, - "askPrice": 42, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24600.00", - "openInterest": 802, - "changeinOpenInterest": 264, - "pchangeinOpenInterest": 49.0706319702602, - "totalTradedVolume": 3364, - "impliedVolatility": 12.39, - "lastPrice": 84.9, - "change": 62.7, - "pChange": 282.432432432432, - "totalBuyQuantity": 38700, - "totalSellQuantity": 875, - "bidQty": 250, - "bidprice": 77.85, - "askQty": 125, - "askPrice": 86.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24600, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 21200, - "totalSellQuantity": 1500, - "bidQty": 900, - "bidprice": 61.75, - "askQty": 575, - "askPrice": 147.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24600.00", - "openInterest": 28369, - "changeinOpenInterest": 215, - "pchangeinOpenInterest": 0.763657029196562, - "totalTradedVolume": 34911, - "impliedVolatility": 11.88, - "lastPrice": 165, - "change": 106, - "pChange": 179.661016949153, - "totalBuyQuantity": 31175, - "totalSellQuantity": 3300, - "bidQty": 1800, - "bidprice": 148.75, - "askQty": 25, - "askPrice": 164.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24600.00", - "openInterest": 3948, - "changeinOpenInterest": 955, - "pchangeinOpenInterest": 31.907784831273, - "totalTradedVolume": 2181, - "impliedVolatility": 14.79, - "lastPrice": 706, - "change": -426.9, - "pChange": -37.6820549033454, - "totalBuyQuantity": 4025, - "totalSellQuantity": 5525, - "bidQty": 75, - "bidprice": 683.15, - "askQty": 100, - "askPrice": 721.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24600, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2850, - "totalSellQuantity": 0, - "bidQty": 900, - "bidprice": 31.85, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24600.00", - "openInterest": 231, - "changeinOpenInterest": 27, - "pchangeinOpenInterest": 13.2352941176471, - "totalTradedVolume": 58, - "impliedVolatility": 16.86, - "lastPrice": 824.6, - "change": -260.35, - "pChange": -23.9964975344486, - "totalBuyQuantity": 0, - "totalSellQuantity": 25, - "bidQty": 0, - "bidprice": 0, - "askQty": 25, - "askPrice": 783.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24600.00", - "openInterest": 279, - "changeinOpenInterest": 58, - "pchangeinOpenInterest": 26.2443438914027, - "totalTradedVolume": 509, - "impliedVolatility": 10.66, - "lastPrice": 337.9, - "change": 158.9, - "pChange": 88.7709497206704, - "totalBuyQuantity": 13025, - "totalSellQuantity": 25, - "bidQty": 300, - "bidprice": 123.1, - "askQty": 25, - "askPrice": 450, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24650.00", - "openInterest": 869, - "changeinOpenInterest": -232, - "pchangeinOpenInterest": -21.0717529518619, - "totalTradedVolume": 713, - "impliedVolatility": 25.05, - "lastPrice": 780.25, - "change": -516.9, - "pChange": -39.8488995104653, - "totalBuyQuantity": 6100, - "totalSellQuantity": 6175, - "bidQty": 75, - "bidprice": 739.65, - "askQty": 25, - "askPrice": 761.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24650.00", - "openInterest": 38301, - "changeinOpenInterest": 32423, - "pchangeinOpenInterest": 551.599183395713, - "totalTradedVolume": 574531, - "impliedVolatility": 13.63, - "lastPrice": 8.6, - "change": 6.15, - "pChange": 251.020408163265, - "totalBuyQuantity": 158975, - "totalSellQuantity": 85350, - "bidQty": 200, - "bidprice": 8.2, - "askQty": 1125, - "askPrice": 8.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24650.00", - "openInterest": 1430, - "changeinOpenInterest": 882, - "pchangeinOpenInterest": 160.948905109489, - "totalTradedVolume": 12508, - "impliedVolatility": 12.4, - "lastPrice": 34.85, - "change": 27.2, - "pChange": 355.555555555556, - "totalBuyQuantity": 46575, - "totalSellQuantity": 800, - "bidQty": 850, - "bidprice": 25, - "askQty": 25, - "askPrice": 35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24650.00", - "openInterest": 11, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1118.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 2775, - "bidQty": 0, - "bidprice": 0, - "askQty": 1000, - "askPrice": 866.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24650.00", - "openInterest": 127, - "changeinOpenInterest": 123, - "pchangeinOpenInterest": 3075, - "totalTradedVolume": 167, - "impliedVolatility": 11.95, - "lastPrice": 68.3, - "change": 29, - "pChange": 73.7913486005089, - "totalBuyQuantity": 20825, - "totalSellQuantity": 575, - "bidQty": 900, - "bidprice": 31.7, - "askQty": 575, - "askPrice": 88.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24650, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 16700, - "totalSellQuantity": 50, - "bidQty": 50, - "bidprice": 25.1, - "askQty": 50, - "askPrice": 186.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24650.00", - "openInterest": 1145, - "changeinOpenInterest": 250, - "pchangeinOpenInterest": 27.9329608938547, - "totalTradedVolume": 1711, - "impliedVolatility": 11.62, - "lastPrice": 144.5, - "change": 90.75, - "pChange": 168.837209302326, - "totalBuyQuantity": 21725, - "totalSellQuantity": 2200, - "bidQty": 250, - "bidprice": 129.75, - "askQty": 50, - "askPrice": 165, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24650.00", - "openInterest": 131, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0.769230769230769, - "totalTradedVolume": 1, - "impliedVolatility": 13.65, - "lastPrice": 709.9, - "change": -267.6, - "pChange": -27.3759590792839, - "totalBuyQuantity": 2200, - "totalSellQuantity": 3050, - "bidQty": 900, - "bidprice": 606.6, - "askQty": 25, - "askPrice": 778.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24650, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2850, - "totalSellQuantity": 150, - "bidQty": 300, - "bidprice": 26.1, - "askQty": 150, - "askPrice": 450, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24650.00", - "openInterest": 124, - "changeinOpenInterest": 115, - "pchangeinOpenInterest": 1277.77777777778, - "totalTradedVolume": 132, - "impliedVolatility": 9.29, - "lastPrice": 263.05, - "change": 53.75, - "pChange": 25.6808408982322, - "totalBuyQuantity": 3225, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 276.2, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24700.00", - "openInterest": 80392, - "changeinOpenInterest": 40111, - "pchangeinOpenInterest": 99.577964797299, - "totalTradedVolume": 830831, - "impliedVolatility": 13.81, - "lastPrice": 6.95, - "change": 4.6, - "pChange": 195.744680851064, - "totalBuyQuantity": 616775, - "totalSellQuantity": 35325, - "bidQty": 1650, - "bidprice": 6.6, - "askQty": 925, - "askPrice": 6.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24700.00", - "openInterest": 12277, - "changeinOpenInterest": -457, - "pchangeinOpenInterest": -3.58881733940631, - "totalTradedVolume": 1500, - "impliedVolatility": 21.82, - "lastPrice": 798.1, - "change": -550.1, - "pChange": -40.8025515502151, - "totalBuyQuantity": 7700, - "totalSellQuantity": 9725, - "bidQty": 75, - "bidprice": 796.25, - "askQty": 100, - "askPrice": 806.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24700.00", - "openInterest": 3925, - "changeinOpenInterest": -1972, - "pchangeinOpenInterest": -33.440732575886, - "totalTradedVolume": 50586, - "impliedVolatility": 12.47, - "lastPrice": 29.8, - "change": 23.25, - "pChange": 354.961832061069, - "totalBuyQuantity": 49000, - "totalSellQuantity": 2600, - "bidQty": 550, - "bidprice": 25, - "askQty": 1775, - "askPrice": 29.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24700.00", - "openInterest": 7, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1160, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1575, - "totalSellQuantity": 2775, - "bidQty": 25, - "bidprice": 650, - "askQty": 1000, - "askPrice": 906.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24700.00", - "openInterest": 803, - "changeinOpenInterest": 599, - "pchangeinOpenInterest": 293.627450980392, - "totalTradedVolume": 2761, - "impliedVolatility": 11.97, - "lastPrice": 60, - "change": 40.6, - "pChange": 209.278350515464, - "totalBuyQuantity": 34400, - "totalSellQuantity": 525, - "bidQty": 25, - "bidprice": 58, - "askQty": 25, - "askPrice": 67.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24700, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24700.00", - "openInterest": 88, - "changeinOpenInterest": 83, - "pchangeinOpenInterest": 1660, - "totalTradedVolume": 198, - "impliedVolatility": 11.68, - "lastPrice": 93.5, - "change": 40.7, - "pChange": 77.0833333333333, - "totalBuyQuantity": 19100, - "totalSellQuantity": 2350, - "bidQty": 900, - "bidprice": 66.1, - "askQty": 25, - "askPrice": 115.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24700.00", - "openInterest": 2407, - "changeinOpenInterest": 23, - "pchangeinOpenInterest": 0.964765100671141, - "totalTradedVolume": 286, - "impliedVolatility": 15.58, - "lastPrice": 794.7, - "change": -420.45, - "pChange": -34.6006665843723, - "totalBuyQuantity": 3400, - "totalSellQuantity": 3325, - "bidQty": 100, - "bidprice": 744.5, - "askQty": 25, - "askPrice": 810.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24700.00", - "openInterest": 15537, - "changeinOpenInterest": -1469, - "pchangeinOpenInterest": -8.63812771962837, - "totalTradedVolume": 34209, - "impliedVolatility": 11.8, - "lastPrice": 136, - "change": 88.15, - "pChange": 184.221525600836, - "totalBuyQuantity": 25425, - "totalSellQuantity": 1100, - "bidQty": 25, - "bidprice": 120.15, - "askQty": 75, - "askPrice": 136, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24700, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4650, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 26.7, - "askQty": 900, - "askPrice": 197.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24700.00", - "openInterest": 22, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -4.34782608695652, - "totalTradedVolume": 2, - "impliedVolatility": 14.87, - "lastPrice": 800, - "change": -356.4, - "pChange": -30.8197855413352, - "totalBuyQuantity": 900, - "totalSellQuantity": 925, - "bidQty": 900, - "bidprice": 562.9, - "askQty": 25, - "askPrice": 945.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24700.00", - "openInterest": 494, - "changeinOpenInterest": 102, - "pchangeinOpenInterest": 26.0204081632653, - "totalTradedVolume": 607, - "impliedVolatility": 10.69, - "lastPrice": 300.4, - "change": 145.65, - "pChange": 94.1195476575121, - "totalBuyQuantity": 12225, - "totalSellQuantity": 2200, - "bidQty": 25, - "bidprice": 290, - "askQty": 25, - "askPrice": 323.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24750.00", - "openInterest": 18790, - "changeinOpenInterest": 13094, - "pchangeinOpenInterest": 229.880617977528, - "totalTradedVolume": 295853, - "impliedVolatility": 13.98, - "lastPrice": 5.6, - "change": 3.25, - "pChange": 138.297872340426, - "totalBuyQuantity": 143175, - "totalSellQuantity": 19125, - "bidQty": 4925, - "bidprice": 5, - "askQty": 1450, - "askPrice": 5.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24750.00", - "openInterest": 434, - "changeinOpenInterest": 23, - "pchangeinOpenInterest": 5.59610705596107, - "totalTradedVolume": 92, - "impliedVolatility": 30.46, - "lastPrice": 907.45, - "change": -503.55, - "pChange": -35.6874557051736, - "totalBuyQuantity": 5775, - "totalSellQuantity": 6250, - "bidQty": 150, - "bidprice": 839.85, - "askQty": 150, - "askPrice": 871, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 24750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24750.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1229.3, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 2775, - "bidQty": 0, - "bidprice": 0, - "askQty": 1000, - "askPrice": 1046.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24750.00", - "openInterest": 934, - "changeinOpenInterest": 708, - "pchangeinOpenInterest": 313.274336283186, - "totalTradedVolume": 9382, - "impliedVolatility": 12.42, - "lastPrice": 24.5, - "change": 17.75, - "pChange": 262.962962962963, - "totalBuyQuantity": 50450, - "totalSellQuantity": 675, - "bidQty": 250, - "bidprice": 20, - "askQty": 50, - "askPrice": 25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24750.00", - "openInterest": 146, - "changeinOpenInterest": 96, - "pchangeinOpenInterest": 192, - "totalTradedVolume": 210, - "impliedVolatility": 11.95, - "lastPrice": 52.1, - "change": 33.4, - "pChange": 178.609625668449, - "totalBuyQuantity": 16950, - "totalSellQuantity": 650, - "bidQty": 600, - "bidprice": 31.65, - "askQty": 125, - "askPrice": 60, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24750.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 700, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24750, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24750.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 53.7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 17150, - "totalSellQuantity": 25, - "bidQty": 750, - "bidprice": 19, - "askQty": 25, - "askPrice": 175, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24750.00", - "openInterest": 834, - "changeinOpenInterest": 231, - "pchangeinOpenInterest": 38.3084577114428, - "totalTradedVolume": 2395, - "impliedVolatility": 11.64, - "lastPrice": 120.25, - "change": 76.75, - "pChange": 176.436781609195, - "totalBuyQuantity": 20375, - "totalSellQuantity": 2175, - "bidQty": 250, - "bidprice": 110.65, - "askQty": 250, - "askPrice": 133.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24750.00", - "openInterest": 139, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1249.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 2800, - "bidQty": 25, - "bidprice": 420, - "askQty": 25, - "askPrice": 969.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24750, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24750.00", - "openInterest": 2, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 3, - "impliedVolatility": 8.51, - "lastPrice": 80, - "change": -49.2, - "pChange": -38.0804953560372, - "totalBuyQuantity": 3375, - "totalSellQuantity": 150, - "bidQty": 150, - "bidprice": 95.2, - "askQty": 75, - "askPrice": 150, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 1775, - "bidQty": 0, - "bidprice": 0, - "askQty": 1775, - "askPrice": 1266.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24750.00", - "openInterest": 12, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 20, - "totalTradedVolume": 7, - "impliedVolatility": 10.12, - "lastPrice": 260.2, - "change": 78.9, - "pChange": 43.5190292333149, - "totalBuyQuantity": 1850, - "totalSellQuantity": 1800, - "bidQty": 25, - "bidprice": 178, - "askQty": 1800, - "askPrice": 330.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24800.00", - "openInterest": 26351, - "changeinOpenInterest": -1918, - "pchangeinOpenInterest": -6.78481729102551, - "totalTradedVolume": 2815, - "impliedVolatility": 24.06, - "lastPrice": 900, - "change": -542.05, - "pChange": -37.5888492077251, - "totalBuyQuantity": 8525, - "totalSellQuantity": 7300, - "bidQty": 250, - "bidprice": 893.2, - "askQty": 50, - "askPrice": 905.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24800.00", - "openInterest": 123505, - "changeinOpenInterest": 54075, - "pchangeinOpenInterest": 77.884199913582, - "totalTradedVolume": 915072, - "impliedVolatility": 14.15, - "lastPrice": 4.5, - "change": 2.15, - "pChange": 91.4893617021277, - "totalBuyQuantity": 1518275, - "totalSellQuantity": 58650, - "bidQty": 25, - "bidprice": 4.4, - "askQty": 400, - "askPrice": 4.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24800.00", - "openInterest": 8548, - "changeinOpenInterest": 3588, - "pchangeinOpenInterest": 72.3387096774194, - "totalTradedVolume": 49308, - "impliedVolatility": 12.5, - "lastPrice": 20.85, - "change": 14.95, - "pChange": 253.389830508475, - "totalBuyQuantity": 96325, - "totalSellQuantity": 6400, - "bidQty": 25, - "bidprice": 18, - "askQty": 1800, - "askPrice": 20, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24800.00", - "openInterest": 67, - "changeinOpenInterest": 33, - "pchangeinOpenInterest": 97.0588235294118, - "totalTradedVolume": 46, - "impliedVolatility": 19.19, - "lastPrice": 890.75, - "change": -506.25, - "pChange": -36.2383679312813, - "totalBuyQuantity": 3125, - "totalSellQuantity": 3150, - "bidQty": 100, - "bidprice": 854.7, - "askQty": 50, - "askPrice": 884.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24800.00", - "openInterest": 377, - "changeinOpenInterest": 164, - "pchangeinOpenInterest": 76.9953051643193, - "totalTradedVolume": 1182, - "impliedVolatility": 12.16, - "lastPrice": 47.9, - "change": 33.05, - "pChange": 222.558922558923, - "totalBuyQuantity": 33825, - "totalSellQuantity": 550, - "bidQty": 125, - "bidprice": 44.6, - "askQty": 25, - "askPrice": 49, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24800, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24800.00", - "openInterest": 4, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 12.28, - "lastPrice": 85, - "change": -19.5, - "pChange": -18.6602870813397, - "totalBuyQuantity": 20175, - "totalSellQuantity": 2450, - "bidQty": 50, - "bidprice": 67.15, - "askQty": 75, - "askPrice": 96.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24800.00", - "openInterest": 25040, - "changeinOpenInterest": 2336, - "pchangeinOpenInterest": 10.2889358703312, - "totalTradedVolume": 41101, - "impliedVolatility": 11.51, - "lastPrice": 106.2, - "change": 66.75, - "pChange": 169.201520912548, - "totalBuyQuantity": 33025, - "totalSellQuantity": 3550, - "bidQty": 25, - "bidprice": 106.2, - "askQty": 50, - "askPrice": 110, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24800.00", - "openInterest": 2578, - "changeinOpenInterest": 347, - "pchangeinOpenInterest": 15.5535634244733, - "totalTradedVolume": 769, - "impliedVolatility": 15.57, - "lastPrice": 864.85, - "change": -448.95, - "pChange": -34.1718678642107, - "totalBuyQuantity": 4100, - "totalSellQuantity": 4550, - "bidQty": 75, - "bidprice": 835.1, - "askQty": 25, - "askPrice": 867.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24800, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3450, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 25.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24800.00", - "openInterest": 888, - "changeinOpenInterest": 118, - "pchangeinOpenInterest": 15.3246753246753, - "totalTradedVolume": 550, - "impliedVolatility": 10.74, - "lastPrice": 267.3, - "change": 131.05, - "pChange": 96.1834862385321, - "totalBuyQuantity": 13250, - "totalSellQuantity": 2200, - "bidQty": 50, - "bidprice": 246.55, - "askQty": 25, - "askPrice": 285.2, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24800.00", - "openInterest": 13, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 62.5, - "totalTradedVolume": 5, - "impliedVolatility": 14.41, - "lastPrice": 841, - "change": 93.25, - "pChange": 12.4707455700435, - "totalBuyQuantity": 1000, - "totalSellQuantity": 475, - "bidQty": 550, - "bidprice": 647.75, - "askQty": 25, - "askPrice": 1008.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24850.00", - "openInterest": 457, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -1.931330472103, - "totalTradedVolume": 42, - "impliedVolatility": 25.02, - "lastPrice": 950, - "change": -566.75, - "pChange": -37.3660787868798, - "totalBuyQuantity": 5925, - "totalSellQuantity": 6500, - "bidQty": 75, - "bidprice": 933.85, - "askQty": 75, - "askPrice": 966.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24850.00", - "openInterest": 14907, - "changeinOpenInterest": 8697, - "pchangeinOpenInterest": 140.048309178744, - "totalTradedVolume": 210484, - "impliedVolatility": 14.45, - "lastPrice": 3.85, - "change": 1.55, - "pChange": 67.3913043478261, - "totalBuyQuantity": 108600, - "totalSellQuantity": 14875, - "bidQty": 25, - "bidprice": 3.85, - "askQty": 875, - "askPrice": 4.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24850.00", - "openInterest": 880, - "changeinOpenInterest": 633, - "pchangeinOpenInterest": 256.275303643725, - "totalTradedVolume": 2487, - "impliedVolatility": 12.3, - "lastPrice": 16.1, - "change": 10.35, - "pChange": 180, - "totalBuyQuantity": 55675, - "totalSellQuantity": 375, - "bidQty": 125, - "bidprice": 12, - "askQty": 100, - "askPrice": 19, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24850.00", - "openInterest": 3, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 50, - "totalTradedVolume": 1, - "impliedVolatility": 39.23, - "lastPrice": 1225, - "change": -56.3499999999999, - "pChange": -4.39770554493307, - "totalBuyQuantity": 225, - "totalSellQuantity": 3000, - "bidQty": 100, - "bidprice": 774.6, - "askQty": 75, - "askPrice": 1039.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 24850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE24850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24850.00", - "openInterest": 99, - "changeinOpenInterest": 78, - "pchangeinOpenInterest": 371.428571428571, - "totalTradedVolume": 194, - "impliedVolatility": 11.78, - "lastPrice": 37.25, - "change": 18.85, - "pChange": 102.445652173913, - "totalBuyQuantity": 15900, - "totalSellQuantity": 550, - "bidQty": 600, - "bidprice": 26.25, - "askQty": 550, - "askPrice": 58.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24850, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24850.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 30.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 16875, - "totalSellQuantity": 50, - "bidQty": 25, - "bidprice": 30.55, - "askQty": 50, - "askPrice": 99.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 24850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24850.00", - "openInterest": 578, - "changeinOpenInterest": 304, - "pchangeinOpenInterest": 110.948905109489, - "totalTradedVolume": 1805, - "impliedVolatility": 11.6, - "lastPrice": 98, - "change": 61.35, - "pChange": 167.394270122783, - "totalBuyQuantity": 31375, - "totalSellQuantity": 2575, - "bidQty": 500, - "bidprice": 88.55, - "askQty": 900, - "askPrice": 111.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24850.00", - "openInterest": 170, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 5, - "impliedVolatility": 15.63, - "lastPrice": 902.6, - "change": -347.4, - "pChange": -27.792, - "totalBuyQuantity": 1675, - "totalSellQuantity": 3400, - "bidQty": 900, - "bidprice": 773.25, - "askQty": 25, - "askPrice": 927.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24850, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2850, - "totalSellQuantity": 150, - "bidQty": 750, - "bidprice": 16, - "askQty": 150, - "askPrice": 350, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24850.00", - "openInterest": 10, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 11.1111111111111, - "totalTradedVolume": 5, - "impliedVolatility": 10.04, - "lastPrice": 224, - "change": 63.95, - "pChange": 39.9562636676039, - "totalBuyQuantity": 11725, - "totalSellQuantity": 2700, - "bidQty": 25, - "bidprice": 160, - "askQty": 900, - "askPrice": 301.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 1775, - "bidQty": 0, - "bidprice": 0, - "askQty": 1775, - "askPrice": 1335.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24900.00", - "openInterest": 15715, - "changeinOpenInterest": -463, - "pchangeinOpenInterest": -2.861911237483, - "totalTradedVolume": 1081, - "impliedVolatility": 26.9, - "lastPrice": 1006, - "change": -548, - "pChange": -35.2638352638353, - "totalBuyQuantity": 6475, - "totalSellQuantity": 7475, - "bidQty": 25, - "bidprice": 1000, - "askQty": 75, - "askPrice": 1005.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24900.00", - "openInterest": 44048, - "changeinOpenInterest": 18435, - "pchangeinOpenInterest": 71.9751688595635, - "totalTradedVolume": 381312, - "impliedVolatility": 14.99, - "lastPrice": 3.65, - "change": 1.4, - "pChange": 62.2222222222222, - "totalBuyQuantity": 718000, - "totalSellQuantity": 42125, - "bidQty": 700, - "bidprice": 2.85, - "askQty": 1750, - "askPrice": 3.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24900.00", - "openInterest": 5156, - "changeinOpenInterest": 3868, - "pchangeinOpenInterest": 300.310559006211, - "totalTradedVolume": 29348, - "impliedVolatility": 12.14, - "lastPrice": 12.35, - "change": 7.2, - "pChange": 139.805825242718, - "totalBuyQuantity": 69875, - "totalSellQuantity": 10325, - "bidQty": 1775, - "bidprice": 12.4, - "askQty": 8800, - "askPrice": 15.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24900.00", - "openInterest": 26, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 4, - "totalTradedVolume": 1, - "impliedVolatility": 50.08, - "lastPrice": 1440.05, - "change": -39.95, - "pChange": -2.69932432432433, - "totalBuyQuantity": 400, - "totalSellQuantity": 3350, - "bidQty": 150, - "bidprice": 772.75, - "askQty": 150, - "askPrice": 986.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24900.00", - "openInterest": 138, - "changeinOpenInterest": -55, - "pchangeinOpenInterest": -28.4974093264249, - "totalTradedVolume": 653, - "impliedVolatility": 12.01, - "lastPrice": 34.45, - "change": 21.6, - "pChange": 168.093385214008, - "totalBuyQuantity": 28800, - "totalSellQuantity": 250, - "bidQty": 600, - "bidprice": 22.55, - "askQty": 125, - "askPrice": 41.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24900, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24900.00", - "openInterest": 19, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 58.3333333333333, - "totalTradedVolume": 24, - "impliedVolatility": 10.74, - "lastPrice": 45, - "change": 22, - "pChange": 95.6521739130435, - "totalBuyQuantity": 15450, - "totalSellQuantity": 2050, - "bidQty": 900, - "bidprice": 45.05, - "askQty": 900, - "askPrice": 87.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24900.00", - "openInterest": 835, - "changeinOpenInterest": 244, - "pchangeinOpenInterest": 41.2859560067682, - "totalTradedVolume": 376, - "impliedVolatility": 16.04, - "lastPrice": 949.4, - "change": -450.75, - "pChange": -32.1929793236439, - "totalBuyQuantity": 4225, - "totalSellQuantity": 5775, - "bidQty": 100, - "bidprice": 907.15, - "askQty": 25, - "askPrice": 962.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24900.00", - "openInterest": 9383, - "changeinOpenInterest": 571, - "pchangeinOpenInterest": 6.47980027235588, - "totalTradedVolume": 20573, - "impliedVolatility": 11.65, - "lastPrice": 89.5, - "change": 56.1, - "pChange": 167.964071856287, - "totalBuyQuantity": 39900, - "totalSellQuantity": 2450, - "bidQty": 250, - "bidprice": 85.1, - "askQty": 150, - "askPrice": 98.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24900, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4350, - "totalSellQuantity": 2550, - "bidQty": 900, - "bidprice": 15.05, - "askQty": 900, - "askPrice": 394.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 24900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24900.00", - "openInterest": 17, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1191.55, - "change": 1.95000000000005, - "pChange": 0.163920645595162, - "totalBuyQuantity": 0, - "totalSellQuantity": 1800, - "bidQty": 0, - "bidprice": 0, - "askQty": 25, - "askPrice": 939.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24900.00", - "openInterest": 314, - "changeinOpenInterest": 68, - "pchangeinOpenInterest": 27.6422764227642, - "totalTradedVolume": 474, - "impliedVolatility": 10.78, - "lastPrice": 236.45, - "change": 116.85, - "pChange": 97.7006688963211, - "totalBuyQuantity": 10850, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 236.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24950.00", - "openInterest": 19018, - "changeinOpenInterest": 10026, - "pchangeinOpenInterest": 111.499110320285, - "totalTradedVolume": 151952, - "impliedVolatility": 15.47, - "lastPrice": 3.4, - "change": 1.2, - "pChange": 54.5454545454545, - "totalBuyQuantity": 246975, - "totalSellQuantity": 24075, - "bidQty": 1725, - "bidprice": 2.7, - "askQty": 1250, - "askPrice": 3.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24950.00", - "openInterest": 681, - "changeinOpenInterest": -39, - "pchangeinOpenInterest": -5.41666666666667, - "totalTradedVolume": 196, - "impliedVolatility": 32.8, - "lastPrice": 1091.2, - "change": -509.75, - "pChange": -31.8404697211031, - "totalBuyQuantity": 6375, - "totalSellQuantity": 5875, - "bidQty": 475, - "bidprice": 1032, - "askQty": 25, - "askPrice": 1055.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 24950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE24950.00", - "openInterest": 585, - "changeinOpenInterest": 365, - "pchangeinOpenInterest": 165.909090909091, - "totalTradedVolume": 1972, - "impliedVolatility": 12.6, - "lastPrice": 12.1, - "change": 6.1, - "pChange": 101.666666666667, - "totalBuyQuantity": 45600, - "totalSellQuantity": 225, - "bidQty": 600, - "bidprice": 8.15, - "askQty": 25, - "askPrice": 14.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE24950.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1384, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 2775, - "bidQty": 0, - "bidprice": 0, - "askQty": 1000, - "askPrice": 1252.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 24950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE24950.00", - "openInterest": 39, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 17.2, - "change": -1.4, - "pChange": -7.52688172043012, - "totalBuyQuantity": 20475, - "totalSellQuantity": 250, - "bidQty": 100, - "bidprice": 23.05, - "askQty": 250, - "askPrice": 41.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 24950, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE24950.00", - "openInterest": 18, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 5.88235294117647, - "totalTradedVolume": 2, - "impliedVolatility": 13.19, - "lastPrice": 75, - "change": 35, - "pChange": 87.5, - "totalBuyQuantity": 18975, - "totalSellQuantity": 125, - "bidQty": 600, - "bidprice": 30.5, - "askQty": 75, - "askPrice": 75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 24950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE24950.00", - "openInterest": 228, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 2.24215246636771, - "totalTradedVolume": 7, - "impliedVolatility": 21.37, - "lastPrice": 1119.2, - "change": -194.6, - "pChange": -14.8119957375552, - "totalBuyQuantity": 3775, - "totalSellQuantity": 2800, - "bidQty": 100, - "bidprice": 870.65, - "askQty": 25, - "askPrice": 1145.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE24950.00", - "openInterest": 739, - "changeinOpenInterest": 190, - "pchangeinOpenInterest": 34.608378870674, - "totalTradedVolume": 976, - "impliedVolatility": 11.7, - "lastPrice": 81.85, - "change": 50.85, - "pChange": 164.032258064516, - "totalBuyQuantity": 32700, - "totalSellQuantity": 1400, - "bidQty": 1800, - "bidprice": 75.85, - "askQty": 900, - "askPrice": 110.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 24950, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE24950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2850, - "totalSellQuantity": 600, - "bidQty": 300, - "bidprice": 15.1, - "askQty": 150, - "askPrice": 390, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 24950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE24950.00", - "openInterest": 138, - "changeinOpenInterest": 90, - "pchangeinOpenInterest": 187.5, - "totalTradedVolume": 247, - "impliedVolatility": 10.74, - "lastPrice": 220, - "change": 108.5, - "pChange": 97.3094170403588, - "totalBuyQuantity": 11975, - "totalSellQuantity": 0, - "bidQty": 275, - "bidprice": 169.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE24950.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 15.63, - "lastPrice": 983.15, - "change": 43.15, - "pChange": 4.59042553191489, - "totalBuyQuantity": 1775, - "totalSellQuantity": 0, - "bidQty": 1775, - "bidprice": 639.4, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25000.00", - "openInterest": 294780, - "changeinOpenInterest": 54354, - "pchangeinOpenInterest": 22.6073719148511, - "totalTradedVolume": 1369004, - "impliedVolatility": 15.57, - "lastPrice": 2.7, - "change": 0.5, - "pChange": 22.7272727272727, - "totalBuyQuantity": 1897750, - "totalSellQuantity": 167550, - "bidQty": 4125, - "bidprice": 2.7, - "askQty": 400, - "askPrice": 2.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25000.00", - "openInterest": 77075, - "changeinOpenInterest": -211, - "pchangeinOpenInterest": -0.273011929715602, - "totalTradedVolume": 12103, - "impliedVolatility": 27.84, - "lastPrice": 1100, - "change": -551.6, - "pChange": -33.3979171712279, - "totalBuyQuantity": 8825, - "totalSellQuantity": 9800, - "bidQty": 100, - "bidprice": 1094.45, - "askQty": 100, - "askPrice": 1105.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25000.00", - "openInterest": 545, - "changeinOpenInterest": 431, - "pchangeinOpenInterest": 378.070175438597, - "totalTradedVolume": 554, - "impliedVolatility": 21.3, - "lastPrice": 1082, - "change": -512.1, - "pChange": -32.1247098676369, - "totalBuyQuantity": 2975, - "totalSellQuantity": 3400, - "bidQty": 100, - "bidprice": 1045.25, - "askQty": 300, - "askPrice": 1069.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25000.00", - "openInterest": 15729, - "changeinOpenInterest": 3619, - "pchangeinOpenInterest": 29.8843930635838, - "totalTradedVolume": 56865, - "impliedVolatility": 12.47, - "lastPrice": 9.35, - "change": 4.95, - "pChange": 112.5, - "totalBuyQuantity": 469300, - "totalSellQuantity": 12300, - "bidQty": 125, - "bidprice": 9.3, - "askQty": 1775, - "askPrice": 11.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25000, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25000.00", - "openInterest": 2016, - "changeinOpenInterest": 235, - "pchangeinOpenInterest": 13.1948343627176, - "totalTradedVolume": 9932, - "impliedVolatility": 12.41, - "lastPrice": 29, - "change": 17.45, - "pChange": 151.082251082251, - "totalBuyQuantity": 37275, - "totalSellQuantity": 3150, - "bidQty": 250, - "bidprice": 27.2, - "askQty": 25, - "askPrice": 29.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25000, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25000.00", - "openInterest": 641, - "changeinOpenInterest": 282, - "pchangeinOpenInterest": 78.5515320334262, - "totalTradedVolume": 1285, - "impliedVolatility": 12.14, - "lastPrice": 52, - "change": 31.65, - "pChange": 155.528255528256, - "totalBuyQuantity": 35525, - "totalSellQuantity": 2625, - "bidQty": 250, - "bidprice": 50, - "askQty": 25, - "askPrice": 56, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25000.00", - "openInterest": 67138, - "changeinOpenInterest": 4082, - "pchangeinOpenInterest": 6.47361075869069, - "totalTradedVolume": 18759, - "impliedVolatility": 16.36, - "lastPrice": 1031.95, - "change": -468.65, - "pChange": -31.2308409969346, - "totalBuyQuantity": 7600, - "totalSellQuantity": 11525, - "bidQty": 125, - "bidprice": 1009.1, - "askQty": 950, - "askPrice": 1025.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25000.00", - "openInterest": 132392, - "changeinOpenInterest": 411, - "pchangeinOpenInterest": 0.311408460308681, - "totalTradedVolume": 212485, - "impliedVolatility": 11.77, - "lastPrice": 75, - "change": 46, - "pChange": 158.620689655172, - "totalBuyQuantity": 161650, - "totalSellQuantity": 34325, - "bidQty": 75, - "bidprice": 75, - "askQty": 200, - "askPrice": 77, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 25000, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE25000.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 10.54, - "lastPrice": 79, - "change": -12.55, - "pChange": -13.7083560895685, - "totalBuyQuantity": 8175, - "totalSellQuantity": 2850, - "bidQty": 900, - "bidprice": 22.35, - "askQty": 75, - "askPrice": 128.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25000.00", - "openInterest": 2708, - "changeinOpenInterest": -103, - "pchangeinOpenInterest": -3.66417644966204, - "totalTradedVolume": 1229, - "impliedVolatility": 14.77, - "lastPrice": 982.1, - "change": -417.75, - "pChange": -29.8424831231918, - "totalBuyQuantity": 5550, - "totalSellQuantity": 4450, - "bidQty": 50, - "bidprice": 965.05, - "askQty": 125, - "askPrice": 991.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25000.00", - "openInterest": 20787, - "changeinOpenInterest": 11, - "pchangeinOpenInterest": 0.0529457065845206, - "totalTradedVolume": 28053, - "impliedVolatility": 10.73, - "lastPrice": 205.65, - "change": 101.95, - "pChange": 98.3124397299904, - "totalBuyQuantity": 21800, - "totalSellQuantity": 9775, - "bidQty": 1800, - "bidprice": 205.65, - "askQty": 925, - "askPrice": 214.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 25000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE25000.00", - "openInterest": 26224, - "changeinOpenInterest": 3270, - "pchangeinOpenInterest": 14.2458830704888, - "totalTradedVolume": 13986, - "impliedVolatility": 9.99, - "lastPrice": 444, - "change": 160.85, - "pChange": 56.8073459297193, - "totalBuyQuantity": 32900, - "totalSellQuantity": 5250, - "bidQty": 25, - "bidprice": 430.8, - "askQty": 300, - "askPrice": 444, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE25000.00", - "openInterest": 22579, - "changeinOpenInterest": 394, - "pchangeinOpenInterest": 1.77597475771918, - "totalTradedVolume": 3627, - "impliedVolatility": 15.25, - "lastPrice": 987, - "change": -315.9, - "pChange": -24.2459129633894, - "totalBuyQuantity": 2725, - "totalSellQuantity": 3600, - "bidQty": 25, - "bidprice": 987, - "askQty": 25, - "askPrice": 995, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 25000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE25000.00", - "openInterest": 3667, - "changeinOpenInterest": 215, - "pchangeinOpenInterest": 6.22827346465817, - "totalTradedVolume": 925, - "impliedVolatility": 16.54, - "lastPrice": 1040, - "change": -229.55, - "pChange": -18.0812098775157, - "totalBuyQuantity": 3400, - "totalSellQuantity": 2000, - "bidQty": 275, - "bidprice": 1000, - "askQty": 425, - "askPrice": 1020, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE25000.00", - "openInterest": 4101, - "changeinOpenInterest": 458, - "pchangeinOpenInterest": 12.572055997804, - "totalTradedVolume": 1378, - "impliedVolatility": 8.06, - "lastPrice": 775, - "change": 178.3, - "pChange": 29.8810122339534, - "totalBuyQuantity": 16225, - "totalSellQuantity": 3900, - "bidQty": 750, - "bidprice": 775.5, - "askQty": 100, - "askPrice": 805.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 25000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 650.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 25000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE25000.00", - "openInterest": 3519, - "changeinOpenInterest": 75, - "pchangeinOpenInterest": 2.17770034843206, - "totalTradedVolume": 533, - "impliedVolatility": 5.8, - "lastPrice": 1587.95, - "change": 247.75, - "pChange": 18.4860468586778, - "totalBuyQuantity": 3050, - "totalSellQuantity": 3500, - "bidQty": 25, - "bidprice": 1590.75, - "askQty": 25, - "askPrice": 1615, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE25000.00", - "openInterest": 9045, - "changeinOpenInterest": 205, - "pchangeinOpenInterest": 2.31900452488688, - "totalTradedVolume": 1090, - "impliedVolatility": 18.39, - "lastPrice": 1125, - "change": -185.95, - "pChange": -14.1843701132766, - "totalBuyQuantity": 5600, - "totalSellQuantity": 7450, - "bidQty": 25, - "bidprice": 1125, - "askQty": 50, - "askPrice": 1132, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 25000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 100, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 1500, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5700, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 4.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "31-Dec-2026", - "CE": { - "strikePrice": 25000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 1850, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6975, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 560.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 25000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5650, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1172.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 25000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5650, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1077.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 25000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 989.4, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 25000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE25000.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1311, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 908.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 25000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE25000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 275, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 832.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25050.00", - "openInterest": 9312, - "changeinOpenInterest": 6904, - "pchangeinOpenInterest": 286.71096345515, - "totalTradedVolume": 87341, - "impliedVolatility": 15.79, - "lastPrice": 2.25, - "change": 0.15, - "pChange": 7.14285714285714, - "totalBuyQuantity": 97400, - "totalSellQuantity": 15800, - "bidQty": 625, - "bidprice": 2.15, - "askQty": 1000, - "askPrice": 2.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25050.00", - "openInterest": 363, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -1.08991825613079, - "totalTradedVolume": 31, - "impliedVolatility": 28.32, - "lastPrice": 1147.4, - "change": -547.15, - "pChange": -32.2888082381753, - "totalBuyQuantity": 6250, - "totalSellQuantity": 6150, - "bidQty": 225, - "bidprice": 1138.1, - "askQty": 75, - "askPrice": 1155.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25050.00", - "openInterest": 2, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 100, - "totalTradedVolume": 1, - "impliedVolatility": 41.95, - "lastPrice": 1410.1, - "change": 29.3499999999999, - "pChange": 2.12565634618866, - "totalBuyQuantity": 2850, - "totalSellQuantity": 2825, - "bidQty": 50, - "bidprice": 951.2, - "askQty": 50, - "askPrice": 1239.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25050.00", - "openInterest": 761, - "changeinOpenInterest": 462, - "pchangeinOpenInterest": 154.515050167224, - "totalTradedVolume": 1751, - "impliedVolatility": 13.04, - "lastPrice": 9.65, - "change": 5.1, - "pChange": 112.087912087912, - "totalBuyQuantity": 53100, - "totalSellQuantity": 25, - "bidQty": 900, - "bidprice": 7.1, - "askQty": 25, - "askPrice": 12, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25050, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25050.00", - "openInterest": 93, - "changeinOpenInterest": 51, - "pchangeinOpenInterest": 121.428571428571, - "totalTradedVolume": 318, - "impliedVolatility": 12.25, - "lastPrice": 23.65, - "change": 13.65, - "pChange": 136.5, - "totalBuyQuantity": 31325, - "totalSellQuantity": 475, - "bidQty": 600, - "bidprice": 16.15, - "askQty": 475, - "askPrice": 31.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25050, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 15050, - "totalSellQuantity": 1500, - "bidQty": 750, - "bidprice": 17, - "askQty": 200, - "askPrice": 135, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 25050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25050.00", - "openInterest": 1311, - "changeinOpenInterest": 193, - "pchangeinOpenInterest": 17.262969588551, - "totalTradedVolume": 1194, - "impliedVolatility": 11.98, - "lastPrice": 71.1, - "change": 44.65, - "pChange": 168.809073724008, - "totalBuyQuantity": 39600, - "totalSellQuantity": 7275, - "bidQty": 25, - "bidprice": 57.1, - "askQty": 1800, - "askPrice": 76.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25050.00", - "openInterest": 109, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 4, - "impliedVolatility": 16.19, - "lastPrice": 1066.65, - "change": -526.4, - "pChange": -33.0435328457989, - "totalBuyQuantity": 3900, - "totalSellQuantity": 3800, - "bidQty": 25, - "bidprice": 1022.75, - "askQty": 25, - "askPrice": 1100.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 25050, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE25050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4500, - "totalSellQuantity": 975, - "bidQty": 300, - "bidprice": 15.1, - "askQty": 150, - "askPrice": 340, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2200, - "totalSellQuantity": 0, - "bidQty": 1775, - "bidprice": 731.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25050.00", - "openInterest": 130, - "changeinOpenInterest": 16, - "pchangeinOpenInterest": 14.0350877192982, - "totalTradedVolume": 333, - "impliedVolatility": 10.73, - "lastPrice": 192, - "change": 91, - "pChange": 90.0990099009901, - "totalBuyQuantity": 14025, - "totalSellQuantity": 2700, - "bidQty": 25, - "bidprice": 128.9, - "askQty": 2700, - "askPrice": 213.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25100.00", - "openInterest": 41636, - "changeinOpenInterest": 10248, - "pchangeinOpenInterest": 32.6494201605709, - "totalTradedVolume": 211497, - "impliedVolatility": 16.19, - "lastPrice": 2.05, - "change": -0.1, - "pChange": -4.65116279069768, - "totalBuyQuantity": 698000, - "totalSellQuantity": 19025, - "bidQty": 20125, - "bidprice": 2, - "askQty": 725, - "askPrice": 2.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25100.00", - "openInterest": 6154, - "changeinOpenInterest": -93, - "pchangeinOpenInterest": -1.48871458299984, - "totalTradedVolume": 728, - "impliedVolatility": 33.76, - "lastPrice": 1226.1, - "change": -522.6, - "pChange": -29.8850574712644, - "totalBuyQuantity": 5750, - "totalSellQuantity": 6200, - "bidQty": 100, - "bidprice": 1192.95, - "askQty": 150, - "askPrice": 1205.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25100.00", - "openInterest": 2038, - "changeinOpenInterest": 397, - "pchangeinOpenInterest": 24.1925655088361, - "totalTradedVolume": 7555, - "impliedVolatility": 13.16, - "lastPrice": 8.3, - "change": 4.2, - "pChange": 102.439024390244, - "totalBuyQuantity": 85850, - "totalSellQuantity": 75, - "bidQty": 25, - "bidprice": 8.1, - "askQty": 50, - "askPrice": 11, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25100.00", - "openInterest": 6, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 20, - "totalTradedVolume": 4, - "impliedVolatility": 24.26, - "lastPrice": 1199.35, - "change": -490.65, - "pChange": -29.0325443786982, - "totalBuyQuantity": 3275, - "totalSellQuantity": 3150, - "bidQty": 150, - "bidprice": 1002.15, - "askQty": 200, - "askPrice": 1182.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25100, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25100.00", - "openInterest": 257, - "changeinOpenInterest": 70, - "pchangeinOpenInterest": 37.4331550802139, - "totalTradedVolume": 442, - "impliedVolatility": 12.49, - "lastPrice": 22, - "change": 12, - "pChange": 120, - "totalBuyQuantity": 30150, - "totalSellQuantity": 50, - "bidQty": 600, - "bidprice": 17.15, - "askQty": 25, - "askPrice": 27, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25100, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25100.00", - "openInterest": 7, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 250, - "totalTradedVolume": 43, - "impliedVolatility": 11, - "lastPrice": 28, - "change": -2, - "pChange": -6.66666666666667, - "totalBuyQuantity": 16200, - "totalSellQuantity": 1200, - "bidQty": 500, - "bidprice": 28, - "askQty": 200, - "askPrice": 100, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25100.00", - "openInterest": 653, - "changeinOpenInterest": 212, - "pchangeinOpenInterest": 48.0725623582766, - "totalTradedVolume": 556, - "impliedVolatility": 16.82, - "lastPrice": 1119.35, - "change": -167.6, - "pChange": -13.0230389681029, - "totalBuyQuantity": 4400, - "totalSellQuantity": 3325, - "bidQty": 75, - "bidprice": 1075.25, - "askQty": 25, - "askPrice": 1151.05, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25100.00", - "openInterest": 7317, - "changeinOpenInterest": 1223, - "pchangeinOpenInterest": 20.0689202494257, - "totalTradedVolume": 20835, - "impliedVolatility": 11.74, - "lastPrice": 60.05, - "change": 35.8, - "pChange": 147.628865979381, - "totalBuyQuantity": 38600, - "totalSellQuantity": 425, - "bidQty": 25, - "bidprice": 50.9, - "askQty": 250, - "askPrice": 90.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "02-Jan-2025", - "CE": { - "strikePrice": 25100, - "expiryDate": "02-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY02-01-2025CE25100.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 11.38, - "lastPrice": 80, - "change": 0.700000000000003, - "pChange": 0.882723833543509, - "totalBuyQuantity": 6975, - "totalSellQuantity": 1125, - "bidQty": 900, - "bidprice": 11.05, - "askQty": 75, - "askPrice": 169.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25100.00", - "openInterest": 272, - "changeinOpenInterest": 66, - "pchangeinOpenInterest": 32.0388349514563, - "totalTradedVolume": 410, - "impliedVolatility": 10.75, - "lastPrice": 180, - "change": 92.35, - "pChange": 105.362236166572, - "totalBuyQuantity": 5450, - "totalSellQuantity": 75, - "bidQty": 25, - "bidprice": 102.4, - "askQty": 25, - "askPrice": 207.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25100.00", - "openInterest": 94, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 1.0752688172043, - "totalTradedVolume": 1, - "impliedVolatility": 19.95, - "lastPrice": 1250, - "change": -205.05, - "pChange": -14.0922992337033, - "totalBuyQuantity": 900, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 659.8, - "askQty": 25, - "askPrice": 1455.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25150.00", - "openInterest": 8440, - "changeinOpenInterest": 4800, - "pchangeinOpenInterest": 131.868131868132, - "totalTradedVolume": 59457, - "impliedVolatility": 16.67, - "lastPrice": 1.95, - "change": -0.0999999999999999, - "pChange": -4.8780487804878, - "totalBuyQuantity": 115250, - "totalSellQuantity": 11625, - "bidQty": 25, - "bidprice": 1.8, - "askQty": 225, - "askPrice": 1.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25150.00", - "openInterest": 275, - "changeinOpenInterest": -23, - "pchangeinOpenInterest": -7.71812080536913, - "totalTradedVolume": 42, - "impliedVolatility": 42, - "lastPrice": 1331.35, - "change": -472, - "pChange": -26.1735104111792, - "totalBuyQuantity": 5925, - "totalSellQuantity": 5225, - "bidQty": 100, - "bidprice": 1231.6, - "askQty": 100, - "askPrice": 1254.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25150.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1583.3, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 2775, - "bidprice": 1029.15, - "askQty": 1000, - "askPrice": 1459.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25150.00", - "openInterest": 348, - "changeinOpenInterest": 171, - "pchangeinOpenInterest": 96.6101694915254, - "totalTradedVolume": 584, - "impliedVolatility": 13.02, - "lastPrice": 6.35, - "change": 2.7, - "pChange": 73.972602739726, - "totalBuyQuantity": 62275, - "totalSellQuantity": 4300, - "bidQty": 900, - "bidprice": 5.15, - "askQty": 3550, - "askPrice": 8.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25150, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25150.00", - "openInterest": 10, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 11.1111111111111, - "totalTradedVolume": 2, - "impliedVolatility": 10.99, - "lastPrice": 10, - "change": 0.5, - "pChange": 5.26315789473684, - "totalBuyQuantity": 32575, - "totalSellQuantity": 1125, - "bidQty": 600, - "bidprice": 13.1, - "askQty": 50, - "askPrice": 29.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25150, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25150.00", - "openInterest": 4, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -20, - "totalTradedVolume": 1, - "impliedVolatility": 12.74, - "lastPrice": 42.9, - "change": 24.9, - "pChange": 138.333333333333, - "totalBuyQuantity": 13400, - "totalSellQuantity": 525, - "bidQty": 100, - "bidprice": 13.55, - "askQty": 25, - "askPrice": 40, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25150.00", - "openInterest": 182, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -1.08695652173913, - "totalTradedVolume": 2, - "impliedVolatility": 30.54, - "lastPrice": 1500, - "change": -23.3, - "pChange": -1.52957395128996, - "totalBuyQuantity": 3725, - "totalSellQuantity": 2775, - "bidQty": 50, - "bidprice": 1100, - "askQty": 1000, - "askPrice": 1421.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25150.00", - "openInterest": 643, - "changeinOpenInterest": -205, - "pchangeinOpenInterest": -24.1745283018868, - "totalTradedVolume": 411, - "impliedVolatility": 11.91, - "lastPrice": 56.45, - "change": 33.45, - "pChange": 145.434782608696, - "totalBuyQuantity": 34150, - "totalSellQuantity": 875, - "bidQty": 125, - "bidprice": 56.45, - "askQty": 25, - "askPrice": 70, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 703.8, - "askQty": 1775, - "askPrice": 1566.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25150.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 77.8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6125, - "totalSellQuantity": 225, - "bidQty": 550, - "bidprice": 127.85, - "askQty": 150, - "askPrice": 207.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25200.00", - "openInterest": 27691, - "changeinOpenInterest": -159, - "pchangeinOpenInterest": -0.570915619389587, - "totalTradedVolume": 3158, - "impliedVolatility": 34.26, - "lastPrice": 1316.7, - "change": -544.25, - "pChange": -29.245815309385, - "totalBuyQuantity": 6100, - "totalSellQuantity": 7150, - "bidQty": 150, - "bidprice": 1293.3, - "askQty": 375, - "askPrice": 1305.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25200.00", - "openInterest": 41646, - "changeinOpenInterest": 8058, - "pchangeinOpenInterest": 23.9907109682029, - "totalTradedVolume": 167350, - "impliedVolatility": 16.89, - "lastPrice": 1.65, - "change": -0.35, - "pChange": -17.5, - "totalBuyQuantity": 382925, - "totalSellQuantity": 21500, - "bidQty": 650, - "bidprice": 1.65, - "askQty": 800, - "askPrice": 2.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25200.00", - "openInterest": 38, - "changeinOpenInterest": 26, - "pchangeinOpenInterest": 216.666666666667, - "totalTradedVolume": 37, - "impliedVolatility": 18.12, - "lastPrice": 1231.5, - "change": 343.5, - "pChange": 38.6824324324324, - "totalBuyQuantity": 2925, - "totalSellQuantity": 3100, - "bidQty": 50, - "bidprice": 1239.05, - "askQty": 300, - "askPrice": 1381.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25200.00", - "openInterest": 2910, - "changeinOpenInterest": 1618, - "pchangeinOpenInterest": 125.232198142415, - "totalTradedVolume": 7292, - "impliedVolatility": 13.03, - "lastPrice": 5.15, - "change": 1.55, - "pChange": 43.0555555555556, - "totalBuyQuantity": 81775, - "totalSellQuantity": 825, - "bidQty": 1025, - "bidprice": 5, - "askQty": 25, - "askPrice": 7.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25200, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25200.00", - "openInterest": 399, - "changeinOpenInterest": 234, - "pchangeinOpenInterest": 141.818181818182, - "totalTradedVolume": 591, - "impliedVolatility": 12.47, - "lastPrice": 16, - "change": 6.65, - "pChange": 71.1229946524064, - "totalBuyQuantity": 57675, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 16, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25200, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 12250, - "totalSellQuantity": 1300, - "bidQty": 200, - "bidprice": 19, - "askQty": 250, - "askPrice": 70, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25200.00", - "openInterest": 639, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -0.31201248049922, - "totalTradedVolume": 306, - "impliedVolatility": 17.55, - "lastPrice": 1213.8, - "change": -473.15, - "pChange": -28.0476599780669, - "totalBuyQuantity": 5075, - "totalSellQuantity": 5300, - "bidQty": 125, - "bidprice": 1177.65, - "askQty": 125, - "askPrice": 1215.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25200.00", - "openInterest": 21117, - "changeinOpenInterest": 9639, - "pchangeinOpenInterest": 83.9780449555672, - "totalTradedVolume": 35093, - "impliedVolatility": 12.14, - "lastPrice": 54, - "change": 32.35, - "pChange": 149.422632794457, - "totalBuyQuantity": 48950, - "totalSellQuantity": 6900, - "bidQty": 150, - "bidprice": 51, - "askQty": 50, - "askPrice": 53.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25200.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1438.25, - "change": 14.8499999999999, - "pChange": 1.04327666151468, - "totalBuyQuantity": 1050, - "totalSellQuantity": 2850, - "bidQty": 150, - "bidprice": 919.45, - "askQty": 175, - "askPrice": 1445.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25200.00", - "openInterest": 383, - "changeinOpenInterest": 6, - "pchangeinOpenInterest": 1.59151193633952, - "totalTradedVolume": 647, - "impliedVolatility": 10.74, - "lastPrice": 156, - "change": 83, - "pChange": 113.698630136986, - "totalBuyQuantity": 9650, - "totalSellQuantity": 175, - "bidQty": 25, - "bidprice": 151, - "askQty": 25, - "askPrice": 168, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25250.00", - "openInterest": 13196, - "changeinOpenInterest": 8049, - "pchangeinOpenInterest": 156.382358655528, - "totalTradedVolume": 53727, - "impliedVolatility": 17.53, - "lastPrice": 1.7, - "change": -0.25, - "pChange": -12.8205128205128, - "totalBuyQuantity": 116375, - "totalSellQuantity": 15325, - "bidQty": 4000, - "bidprice": 1.7, - "askQty": 1250, - "askPrice": 1.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25250.00", - "openInterest": 342, - "changeinOpenInterest": -14, - "pchangeinOpenInterest": -3.93258426966292, - "totalTradedVolume": 61, - "impliedVolatility": 40.49, - "lastPrice": 1403.3, - "change": -494.05, - "pChange": -26.0389490605318, - "totalBuyQuantity": 5750, - "totalSellQuantity": 5725, - "bidQty": 100, - "bidprice": 1331.2, - "askQty": 350, - "askPrice": 1376.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1102.2, - "askQty": 1775, - "askPrice": 1507.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 59950, - "totalSellQuantity": 1400, - "bidQty": 800, - "bidprice": 4.2, - "askQty": 200, - "askPrice": 8.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25250, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25250.00", - "openInterest": 52, - "changeinOpenInterest": -69, - "pchangeinOpenInterest": -57.0247933884298, - "totalTradedVolume": 124, - "impliedVolatility": 13.85, - "lastPrice": 22.4, - "change": 13.95, - "pChange": 165.08875739645, - "totalBuyQuantity": 35075, - "totalSellQuantity": 200, - "bidQty": 600, - "bidprice": 12, - "askQty": 200, - "askPrice": 22.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25250, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13900, - "totalSellQuantity": 1500, - "bidQty": 750, - "bidprice": 13, - "askQty": 500, - "askPrice": 86, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25250.00", - "openInterest": 325, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 11, - "impliedVolatility": 28.62, - "lastPrice": 1518.55, - "change": -48.45, - "pChange": -3.09189534141672, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1000, - "bidQty": 1775, - "bidprice": 1128.25, - "askQty": 1000, - "askPrice": 1560.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25250.00", - "openInterest": 472, - "changeinOpenInterest": -98, - "pchangeinOpenInterest": -17.1929824561404, - "totalTradedVolume": 1159, - "impliedVolatility": 12.07, - "lastPrice": 47.45, - "change": 28.05, - "pChange": 144.587628865979, - "totalBuyQuantity": 33075, - "totalSellQuantity": 1000, - "bidQty": 25, - "bidprice": 39.7, - "askQty": 950, - "askPrice": 54.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25250.00", - "openInterest": 179, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 63.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7600, - "totalSellQuantity": 525, - "bidQty": 100, - "bidprice": 101.65, - "askQty": 525, - "askPrice": 171.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25250.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1264.3, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 795, - "askQty": 1775, - "askPrice": 1650.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25300.00", - "openInterest": 34900, - "changeinOpenInterest": 10778, - "pchangeinOpenInterest": 44.6812038802753, - "totalTradedVolume": 144377, - "impliedVolatility": 18.03, - "lastPrice": 1.65, - "change": -0.25, - "pChange": -13.1578947368421, - "totalBuyQuantity": 388500, - "totalSellQuantity": 33575, - "bidQty": 1725, - "bidprice": 1.5, - "askQty": 1775, - "askPrice": 1.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25300.00", - "openInterest": 3036, - "changeinOpenInterest": -284, - "pchangeinOpenInterest": -8.55421686746988, - "totalTradedVolume": 590, - "impliedVolatility": 36.64, - "lastPrice": 1420, - "change": -525.35, - "pChange": -27.0054231886293, - "totalBuyQuantity": 4150, - "totalSellQuantity": 6125, - "bidQty": 50, - "bidprice": 1391.3, - "askQty": 75, - "askPrice": 1404.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25300.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1136.45, - "askQty": 1775, - "askPrice": 1566, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25300, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25300.00", - "openInterest": 1806, - "changeinOpenInterest": 1247, - "pchangeinOpenInterest": 223.076923076923, - "totalTradedVolume": 5027, - "impliedVolatility": 14.03, - "lastPrice": 5.45, - "change": 1.75, - "pChange": 47.2972972972973, - "totalBuyQuantity": 80025, - "totalSellQuantity": 2250, - "bidQty": 250, - "bidprice": 4.95, - "askQty": 600, - "askPrice": 14.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25300, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25300.00", - "openInterest": 1115, - "changeinOpenInterest": 888, - "pchangeinOpenInterest": 391.189427312775, - "totalTradedVolume": 1831, - "impliedVolatility": 12.85, - "lastPrice": 13.5, - "change": 5.7, - "pChange": 73.0769230769231, - "totalBuyQuantity": 52350, - "totalSellQuantity": 2300, - "bidQty": 900, - "bidprice": 10.1, - "askQty": 1225, - "askPrice": 14, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "19-Dec-2024", - "CE": { - "strikePrice": 25300, - "expiryDate": "19-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY19-12-2024CE25300.00", - "openInterest": 145, - "changeinOpenInterest": 114, - "pchangeinOpenInterest": 367.741935483871, - "totalTradedVolume": 769, - "impliedVolatility": 12.69, - "lastPrice": 29.3, - "change": 13.6, - "pChange": 86.6242038216561, - "totalBuyQuantity": 24500, - "totalSellQuantity": 2450, - "bidQty": 25, - "bidprice": 23.15, - "askQty": 725, - "askPrice": 39, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 25300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25300.00", - "openInterest": 4756, - "changeinOpenInterest": 1156, - "pchangeinOpenInterest": 32.1111111111111, - "totalTradedVolume": 12956, - "impliedVolatility": 12.3, - "lastPrice": 45.5, - "change": 27, - "pChange": 145.945945945946, - "totalBuyQuantity": 43550, - "totalSellQuantity": 825, - "bidQty": 1300, - "bidprice": 41.2, - "askQty": 75, - "askPrice": 47, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25300.00", - "openInterest": 223, - "changeinOpenInterest": 16, - "pchangeinOpenInterest": 7.72946859903382, - "totalTradedVolume": 22, - "impliedVolatility": 18.81, - "lastPrice": 1320, - "change": -94, - "pChange": -6.64780763790665, - "totalBuyQuantity": 4750, - "totalSellQuantity": 4950, - "bidQty": 100, - "bidprice": 1251, - "askQty": 25, - "askPrice": 1318.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25300.00", - "openInterest": 483, - "changeinOpenInterest": 9, - "pchangeinOpenInterest": 1.89873417721519, - "totalTradedVolume": 1090, - "impliedVolatility": 10.76, - "lastPrice": 135.6, - "change": 65.8, - "pChange": 94.269340974212, - "totalBuyQuantity": 7350, - "totalSellQuantity": 125, - "bidQty": 25, - "bidprice": 135.7, - "askQty": 25, - "askPrice": 144.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25300, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25300.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1027.4, - "change": -0.949999999999818, - "pChange": -0.0923809986871997, - "totalBuyQuantity": 900, - "totalSellQuantity": 2100, - "bidQty": 900, - "bidprice": 957.35, - "askQty": 1775, - "askPrice": 1683.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25350.00", - "openInterest": 294, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -2.97029702970297, - "totalTradedVolume": 72, - "impliedVolatility": 38.75, - "lastPrice": 1477.55, - "change": -519.45, - "pChange": -26.0115172759139, - "totalBuyQuantity": 5775, - "totalSellQuantity": 5750, - "bidQty": 75, - "bidprice": 1431.25, - "askQty": 75, - "askPrice": 1484.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25350.00", - "openInterest": 3552, - "changeinOpenInterest": 1718, - "pchangeinOpenInterest": 93.6750272628135, - "totalTradedVolume": 31923, - "impliedVolatility": 18.38, - "lastPrice": 1.5, - "change": -0.35, - "pChange": -18.9189189189189, - "totalBuyQuantity": 115825, - "totalSellQuantity": 15100, - "bidQty": 250, - "bidprice": 1.45, - "askQty": 500, - "askPrice": 1.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25350, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25350.00", - "openInterest": 477, - "changeinOpenInterest": 412, - "pchangeinOpenInterest": 633.846153846154, - "totalTradedVolume": 826, - "impliedVolatility": 14.25, - "lastPrice": 4.95, - "change": -0.5, - "pChange": -9.1743119266055, - "totalBuyQuantity": 47775, - "totalSellQuantity": 3475, - "bidQty": 25, - "bidprice": 4, - "askQty": 500, - "askPrice": 6.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25350, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1000, - "totalSellQuantity": 2775, - "bidQty": 1000, - "bidprice": 1149.35, - "askQty": 1000, - "askPrice": 1730.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25350, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25350, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 7.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 35000, - "totalSellQuantity": 3400, - "bidQty": 750, - "bidprice": 8.5, - "askQty": 900, - "askPrice": 15.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25350, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25350.00", - "openInterest": 110, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1812.35, - "change": 33.5999999999999, - "pChange": 1.88896697118763, - "totalBuyQuantity": 3475, - "totalSellQuantity": 3700, - "bidQty": 1775, - "bidprice": 1165.25, - "askQty": 25, - "askPrice": 1355.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25350.00", - "openInterest": 1027, - "changeinOpenInterest": 92, - "pchangeinOpenInterest": 9.83957219251337, - "totalTradedVolume": 993, - "impliedVolatility": 12.06, - "lastPrice": 37.75, - "change": 21.05, - "pChange": 126.047904191617, - "totalBuyQuantity": 35425, - "totalSellQuantity": 675, - "bidQty": 25, - "bidprice": 36, - "askQty": 25, - "askPrice": 44.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25350, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25350.00", - "openInterest": 36, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 65.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7625, - "totalSellQuantity": 250, - "bidQty": 25, - "bidprice": 74.5, - "askQty": 125, - "askPrice": 152.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25350, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 881.5, - "askQty": 1775, - "askPrice": 1737.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25400.00", - "openInterest": 3089, - "changeinOpenInterest": -120, - "pchangeinOpenInterest": -3.73948270489249, - "totalTradedVolume": 344, - "impliedVolatility": 36.11, - "lastPrice": 1506, - "change": -530.95, - "pChange": -26.0659319079997, - "totalBuyQuantity": 6225, - "totalSellQuantity": 6525, - "bidQty": 75, - "bidprice": 1474.45, - "askQty": 25, - "askPrice": 1505.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25400.00", - "openInterest": 16361, - "changeinOpenInterest": 8545, - "pchangeinOpenInterest": 109.327021494371, - "totalTradedVolume": 70710, - "impliedVolatility": 18.7, - "lastPrice": 1.35, - "change": -0.5, - "pChange": -27.027027027027, - "totalBuyQuantity": 484000, - "totalSellQuantity": 27200, - "bidQty": 1250, - "bidprice": 1.3, - "askQty": 6100, - "askPrice": 1.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25400, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25400.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 40.02, - "lastPrice": 1644, - "change": 616.15, - "pChange": 59.9455173420246, - "totalBuyQuantity": 2825, - "totalSellQuantity": 2975, - "bidQty": 50, - "bidprice": 1425.95, - "askQty": 50, - "askPrice": 1473.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25400, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25400.00", - "openInterest": 530, - "changeinOpenInterest": 309, - "pchangeinOpenInterest": 139.819004524887, - "totalTradedVolume": 1673, - "impliedVolatility": 15.32, - "lastPrice": 6.5, - "change": 3, - "pChange": 85.7142857142857, - "totalBuyQuantity": 78200, - "totalSellQuantity": 10275, - "bidQty": 1350, - "bidprice": 3.65, - "askQty": 3600, - "askPrice": 6.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25400, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25400, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25400.00", - "openInterest": 772, - "changeinOpenInterest": -200, - "pchangeinOpenInterest": -20.5761316872428, - "totalTradedVolume": 1971, - "impliedVolatility": 12.77, - "lastPrice": 9.4, - "change": 1.25, - "pChange": 15.3374233128834, - "totalBuyQuantity": 61100, - "totalSellQuantity": 500, - "bidQty": 600, - "bidprice": 8.15, - "askQty": 500, - "askPrice": 18, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25400, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25400.00", - "openInterest": 338, - "changeinOpenInterest": 12, - "pchangeinOpenInterest": 3.68098159509202, - "totalTradedVolume": 38, - "impliedVolatility": 17.86, - "lastPrice": 1381.85, - "change": -495.15, - "pChange": -26.3798614810869, - "totalBuyQuantity": 4650, - "totalSellQuantity": 4100, - "bidQty": 75, - "bidprice": 1349.15, - "askQty": 25, - "askPrice": 1408.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25400.00", - "openInterest": 3869, - "changeinOpenInterest": -3997, - "pchangeinOpenInterest": -50.8136282735825, - "totalTradedVolume": 20283, - "impliedVolatility": 12.43, - "lastPrice": 37.95, - "change": 22.45, - "pChange": 144.838709677419, - "totalBuyQuantity": 45475, - "totalSellQuantity": 1100, - "bidQty": 50, - "bidprice": 30.45, - "askQty": 100, - "askPrice": 38.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25400, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25400.00", - "openInterest": 20, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 978.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 923.75, - "askQty": 1775, - "askPrice": 1772.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25400, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25400.00", - "openInterest": 123, - "changeinOpenInterest": -15, - "pchangeinOpenInterest": -10.8695652173913, - "totalTradedVolume": 66, - "impliedVolatility": 10.85, - "lastPrice": 119.15, - "change": 59.2, - "pChange": 98.7489574645538, - "totalBuyQuantity": 8225, - "totalSellQuantity": 50, - "bidQty": 25, - "bidprice": 67.5, - "askQty": 25, - "askPrice": 139.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25450, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25450.00", - "openInterest": 2513, - "changeinOpenInterest": 1667, - "pchangeinOpenInterest": 197.044917257683, - "totalTradedVolume": 10410, - "impliedVolatility": 19.49, - "lastPrice": 1.5, - "change": -0.4, - "pChange": -21.0526315789474, - "totalBuyQuantity": 101275, - "totalSellQuantity": 14025, - "bidQty": 3600, - "bidprice": 1.15, - "askQty": 500, - "askPrice": 1.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25450.00", - "openInterest": 188, - "changeinOpenInterest": -22, - "pchangeinOpenInterest": -10.4761904761905, - "totalTradedVolume": 44, - "impliedVolatility": 40.43, - "lastPrice": 1576.4, - "change": -506, - "pChange": -24.2988859008836, - "totalBuyQuantity": 5950, - "totalSellQuantity": 6175, - "bidQty": 300, - "bidprice": 1530.55, - "askQty": 300, - "askPrice": 1603.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25450, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1351.65, - "askQty": 1000, - "askPrice": 1747.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25450, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25450.00", - "openInterest": 681, - "changeinOpenInterest": 452, - "pchangeinOpenInterest": 197.379912663755, - "totalTradedVolume": 1030, - "impliedVolatility": 14.34, - "lastPrice": 3.45, - "change": -0.0499999999999998, - "pChange": -1.42857142857142, - "totalBuyQuantity": 53500, - "totalSellQuantity": 10175, - "bidQty": 1500, - "bidprice": 2.85, - "askQty": 1800, - "askPrice": 8.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25450, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25450, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25450.00", - "openInterest": 13, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -23.5294117647059, - "totalTradedVolume": 45, - "impliedVolatility": 13.26, - "lastPrice": 9.9, - "change": 3.65, - "pChange": 58.4, - "totalBuyQuantity": 29300, - "totalSellQuantity": 3300, - "bidQty": 550, - "bidprice": 7.7, - "askQty": 850, - "askPrice": 12.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25450, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 25450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25450.00", - "openInterest": 383, - "changeinOpenInterest": -123, - "pchangeinOpenInterest": -24.3083003952569, - "totalTradedVolume": 668, - "impliedVolatility": 12.26, - "lastPrice": 32.1, - "change": 16.55, - "pChange": 106.430868167203, - "totalBuyQuantity": 29950, - "totalSellQuantity": 775, - "bidQty": 100, - "bidprice": 27, - "askQty": 25, - "askPrice": 40, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25450.00", - "openInterest": 568, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 35.6, - "lastPrice": 1842.45, - "change": 763.9, - "pChange": 70.8265727133652, - "totalBuyQuantity": 1625, - "totalSellQuantity": 2775, - "bidQty": 625, - "bidprice": 1250.2, - "askQty": 1000, - "askPrice": 1690.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25450, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25450.00", - "openInterest": 12, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1126.6, - "change": -2.30000000000018, - "pChange": -0.203738152183558, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1042.4, - "askQty": 1775, - "askPrice": 1821.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25450, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25450.00", - "openInterest": 32, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 10.42, - "lastPrice": 99, - "change": -180.6, - "pChange": -64.5922746781116, - "totalBuyQuantity": 9650, - "totalSellQuantity": 100, - "bidQty": 25, - "bidprice": 103.95, - "askQty": 50, - "askPrice": 139.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25500.00", - "openInterest": 23702, - "changeinOpenInterest": -1589, - "pchangeinOpenInterest": -6.28286742319402, - "totalTradedVolume": 2508, - "impliedVolatility": 36.74, - "lastPrice": 1600, - "change": -539.05, - "pChange": -25.2004394474183, - "totalBuyQuantity": 8275, - "totalSellQuantity": 8000, - "bidQty": 100, - "bidprice": 1589.8, - "askQty": 25, - "askPrice": 1601.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25500.00", - "openInterest": 176394, - "changeinOpenInterest": -33137, - "pchangeinOpenInterest": -15.8148436269573, - "totalTradedVolume": 779496, - "impliedVolatility": 19.53, - "lastPrice": 1.2, - "change": -0.75, - "pChange": -38.4615384615385, - "totalBuyQuantity": 2020400, - "totalSellQuantity": 234775, - "bidQty": 185550, - "bidprice": 1.2, - "askQty": 32675, - "askPrice": 1.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25500, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25500.00", - "openInterest": 35, - "changeinOpenInterest": 29, - "pchangeinOpenInterest": 483.333333333333, - "totalTradedVolume": 29, - "impliedVolatility": 20.39, - "lastPrice": 1525, - "change": -545, - "pChange": -26.3285024154589, - "totalBuyQuantity": 4150, - "totalSellQuantity": 4075, - "bidQty": 500, - "bidprice": 1399.8, - "askQty": 100, - "askPrice": 1566.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25500, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25500.00", - "openInterest": 3525, - "changeinOpenInterest": 908, - "pchangeinOpenInterest": 34.696217042415, - "totalTradedVolume": 11354, - "impliedVolatility": 15.03, - "lastPrice": 3.95, - "change": 0.45, - "pChange": 12.8571428571429, - "totalBuyQuantity": 118575, - "totalSellQuantity": 18450, - "bidQty": 250, - "bidprice": 3.3, - "askQty": 1450, - "askPrice": 4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25500, - "expiryDate": "12-Dec-2024", - "PE": { - "strikePrice": 25500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024PE25500.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 40.31, - "lastPrice": 1829.15, - "change": 582.15, - "pChange": 46.6840417000802, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25500, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25500.00", - "openInterest": 885, - "changeinOpenInterest": 261, - "pchangeinOpenInterest": 41.8269230769231, - "totalTradedVolume": 1793, - "impliedVolatility": 13.32, - "lastPrice": 8.65, - "change": 1.6, - "pChange": 22.6950354609929, - "totalBuyQuantity": 59725, - "totalSellQuantity": 10575, - "bidQty": 900, - "bidprice": 6.15, - "askQty": 250, - "askPrice": 9.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25500, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25500.00", - "openInterest": 14611, - "changeinOpenInterest": 1139, - "pchangeinOpenInterest": 8.45457244655582, - "totalTradedVolume": 2661, - "impliedVolatility": 18.01, - "lastPrice": 1468, - "change": -515.8, - "pChange": -26.0006048996875, - "totalBuyQuantity": 4675, - "totalSellQuantity": 6500, - "bidQty": 250, - "bidprice": 1454.2, - "askQty": 25, - "askPrice": 1468, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25500.00", - "openInterest": 44570, - "changeinOpenInterest": 1761, - "pchangeinOpenInterest": 4.11362096755355, - "totalTradedVolume": 60890, - "impliedVolatility": 12.24, - "lastPrice": 28.3, - "change": 14.15, - "pChange": 100, - "totalBuyQuantity": 68975, - "totalSellQuantity": 11900, - "bidQty": 25, - "bidprice": 28.2, - "askQty": 200, - "askPrice": 31.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25500, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25500.00", - "openInterest": 11361, - "changeinOpenInterest": 2047, - "pchangeinOpenInterest": 21.9776680266266, - "totalTradedVolume": 10250, - "impliedVolatility": 10.93, - "lastPrice": 104.65, - "change": 51.85, - "pChange": 98.2007575757576, - "totalBuyQuantity": 16300, - "totalSellQuantity": 3400, - "bidQty": 25, - "bidprice": 102.15, - "askQty": 975, - "askPrice": 105, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25500, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25500.00", - "openInterest": 239, - "changeinOpenInterest": 102, - "pchangeinOpenInterest": 74.4525547445255, - "totalTradedVolume": 219, - "impliedVolatility": 16.02, - "lastPrice": 1377.95, - "change": -427.05, - "pChange": -23.6592797783933, - "totalBuyQuantity": 6525, - "totalSellQuantity": 5775, - "bidQty": 2550, - "bidprice": 1320.35, - "askQty": 25, - "askPrice": 1376, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25550, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25550.00", - "openInterest": 370, - "changeinOpenInterest": -8, - "pchangeinOpenInterest": -2.11640211640212, - "totalTradedVolume": 16, - "impliedVolatility": 26.58, - "lastPrice": 1610.05, - "change": -590.35, - "pChange": -26.8292128703872, - "totalBuyQuantity": 5625, - "totalSellQuantity": 5600, - "bidQty": 100, - "bidprice": 1630.35, - "askQty": 375, - "askPrice": 1655.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25550.00", - "openInterest": 3094, - "changeinOpenInterest": 895, - "pchangeinOpenInterest": 40.7003183265121, - "totalTradedVolume": 13922, - "impliedVolatility": 20.42, - "lastPrice": 1.4, - "change": -0.5, - "pChange": -26.3157894736842, - "totalBuyQuantity": 113475, - "totalSellQuantity": 13550, - "bidQty": 5200, - "bidprice": 1.2, - "askQty": 1675, - "askPrice": 1.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25550, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25550.00", - "openInterest": 274, - "changeinOpenInterest": 22, - "pchangeinOpenInterest": 8.73015873015873, - "totalTradedVolume": 434, - "impliedVolatility": 15.21, - "lastPrice": 3.55, - "change": 0.2, - "pChange": 5.97014925373134, - "totalBuyQuantity": 43875, - "totalSellQuantity": 7800, - "bidQty": 100, - "bidprice": 2.5, - "askQty": 300, - "askPrice": 6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25550, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1433.1, - "askQty": 1775, - "askPrice": 1802, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25550, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25550, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25550.00", - "openInterest": 13, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 44.4444444444444, - "totalTradedVolume": 11, - "impliedVolatility": 13.76, - "lastPrice": 8.95, - "change": 0.549999999999999, - "pChange": 6.54761904761903, - "totalBuyQuantity": 24850, - "totalSellQuantity": 1100, - "bidQty": 800, - "bidprice": 5.6, - "askQty": 75, - "askPrice": 12.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25550, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 25550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25550.00", - "openInterest": 952, - "changeinOpenInterest": 189, - "pchangeinOpenInterest": 24.7706422018349, - "totalTradedVolume": 757, - "impliedVolatility": 12.46, - "lastPrice": 27.3, - "change": 13.35, - "pChange": 95.6989247311828, - "totalBuyQuantity": 34875, - "totalSellQuantity": 2225, - "bidQty": 25, - "bidprice": 23.15, - "askQty": 900, - "askPrice": 33.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25550.00", - "openInterest": 108, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 1.88679245283019, - "totalTradedVolume": 8, - "impliedVolatility": 18.48, - "lastPrice": 1518.6, - "change": -551, - "pChange": -26.6235021260147, - "totalBuyQuantity": 3900, - "totalSellQuantity": 2025, - "bidQty": 225, - "bidprice": 1416.3, - "askQty": 25, - "askPrice": 1597.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25550, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1650, - "totalSellQuantity": 1775, - "bidQty": 750, - "bidprice": 1258.45, - "askQty": 1775, - "askPrice": 1917.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25550, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25550.00", - "openInterest": 202, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 9.04, - "lastPrice": 53, - "change": -1.6, - "pChange": -2.93040293040293, - "totalBuyQuantity": 11000, - "totalSellQuantity": 2700, - "bidQty": 150, - "bidprice": 55.65, - "askQty": 900, - "askPrice": 104.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25600.00", - "openInterest": 13363, - "changeinOpenInterest": 5050, - "pchangeinOpenInterest": 60.7482256706364, - "totalTradedVolume": 53980, - "impliedVolatility": 20.7, - "lastPrice": 1.25, - "change": -0.6, - "pChange": -32.4324324324324, - "totalBuyQuantity": 238375, - "totalSellQuantity": 14150, - "bidQty": 1275, - "bidprice": 1.25, - "askQty": 1450, - "askPrice": 1.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25600.00", - "openInterest": 2799, - "changeinOpenInterest": -217, - "pchangeinOpenInterest": -7.19496021220159, - "totalTradedVolume": 478, - "impliedVolatility": 29.77, - "lastPrice": 1666, - "change": -575.4, - "pChange": -25.6714553404122, - "totalBuyQuantity": 7200, - "totalSellQuantity": 6175, - "bidQty": 400, - "bidprice": 1676.45, - "askQty": 100, - "askPrice": 1701.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25600, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25600.00", - "openInterest": 253, - "changeinOpenInterest": 8, - "pchangeinOpenInterest": 3.26530612244898, - "totalTradedVolume": 957, - "impliedVolatility": 15.61, - "lastPrice": 3.55, - "change": 0.2, - "pChange": 5.97014925373134, - "totalBuyQuantity": 109250, - "totalSellQuantity": 8600, - "bidQty": 3300, - "bidprice": 2.5, - "askQty": 275, - "askPrice": 6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25600, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1448, - "askQty": 1775, - "askPrice": 1857.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25600, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25600, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25600.00", - "openInterest": 23, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 27.7777777777778, - "totalTradedVolume": 19, - "impliedVolatility": 13.87, - "lastPrice": 8, - "change": 1.9, - "pChange": 31.1475409836066, - "totalBuyQuantity": 26775, - "totalSellQuantity": 3475, - "bidQty": 800, - "bidprice": 5, - "askQty": 175, - "askPrice": 11, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25600, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 25600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25600.00", - "openInterest": 8716, - "changeinOpenInterest": 2118, - "pchangeinOpenInterest": 32.1006365565323, - "totalTradedVolume": 9161, - "impliedVolatility": 12.62, - "lastPrice": 25.65, - "change": 12.85, - "pChange": 100.390625, - "totalBuyQuantity": 33325, - "totalSellQuantity": 275, - "bidQty": 75, - "bidprice": 16.15, - "askQty": 50, - "askPrice": 29.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25600.00", - "openInterest": 1236, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0.162074554294976, - "totalTradedVolume": 39, - "impliedVolatility": 19.14, - "lastPrice": 1572.6, - "change": -512.3, - "pChange": -24.5719219147201, - "totalBuyQuantity": 4900, - "totalSellQuantity": 4925, - "bidQty": 900, - "bidprice": 1427.15, - "askQty": 25, - "askPrice": 1591.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25600, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25600.00", - "openInterest": 25, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -13.7931034482759, - "totalTradedVolume": 21, - "impliedVolatility": 21.84, - "lastPrice": 1658.35, - "change": -146.45, - "pChange": -8.1144725177305, - "totalBuyQuantity": 2350, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1202.95, - "askQty": 1775, - "askPrice": 1940.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25600, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25600.00", - "openInterest": 186, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 50.2, - "change": 2.8, - "pChange": 5.9071729957806, - "totalBuyQuantity": 8275, - "totalSellQuantity": 150, - "bidQty": 100, - "bidprice": 60, - "askQty": 150, - "askPrice": 99, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25650.00", - "openInterest": 301, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 46.86, - "lastPrice": 1794.1, - "change": -357.3, - "pChange": -16.6077902760993, - "totalBuyQuantity": 4000, - "totalSellQuantity": 4050, - "bidQty": 75, - "bidprice": 1728.1, - "askQty": 100, - "askPrice": 1759.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25650.00", - "openInterest": 1495, - "changeinOpenInterest": 695, - "pchangeinOpenInterest": 86.875, - "totalTradedVolume": 10660, - "impliedVolatility": 21.13, - "lastPrice": 1.2, - "change": -0.6, - "pChange": -33.3333333333333, - "totalBuyQuantity": 112475, - "totalSellQuantity": 10150, - "bidQty": 325, - "bidprice": 1.15, - "askQty": 750, - "askPrice": 2.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25650, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25650.00", - "openInterest": 52, - "changeinOpenInterest": 21, - "pchangeinOpenInterest": 67.741935483871, - "totalTradedVolume": 106, - "impliedVolatility": 15.83, - "lastPrice": 3.25, - "change": -3.65, - "pChange": -52.8985507246377, - "totalBuyQuantity": 49425, - "totalSellQuantity": 10075, - "bidQty": 800, - "bidprice": 2.3, - "askQty": 600, - "askPrice": 4.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25650, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1494.8, - "askQty": 1775, - "askPrice": 1911.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25650, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25650, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 28175, - "totalSellQuantity": 2500, - "bidQty": 800, - "bidprice": 4, - "askQty": 200, - "askPrice": 11, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25650, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25650.00", - "openInterest": 80, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1813.65, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1509.25, - "askQty": 1000, - "askPrice": 1864.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25650.00", - "openInterest": 719, - "changeinOpenInterest": 166, - "pchangeinOpenInterest": 30.0180831826401, - "totalTradedVolume": 609, - "impliedVolatility": 12.67, - "lastPrice": 23.3, - "change": 10.9, - "pChange": 87.9032258064516, - "totalBuyQuantity": 33775, - "totalSellQuantity": 300, - "bidQty": 600, - "bidprice": 15.65, - "askQty": 275, - "askPrice": 49.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25650, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25650.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 260.65, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 8125, - "totalSellQuantity": 550, - "bidQty": 25, - "bidprice": 58.95, - "askQty": 150, - "askPrice": 98.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25650, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25650.00", - "openInterest": 25, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1330, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1351.3, - "askQty": 1775, - "askPrice": 2012.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25700.00", - "openInterest": 7484, - "changeinOpenInterest": 1091, - "pchangeinOpenInterest": 17.0655404348506, - "totalTradedVolume": 40245, - "impliedVolatility": 21.66, - "lastPrice": 1.2, - "change": -0.65, - "pChange": -35.1351351351351, - "totalBuyQuantity": 227250, - "totalSellQuantity": 11725, - "bidQty": 3200, - "bidprice": 1.2, - "askQty": 250, - "askPrice": 1.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25700.00", - "openInterest": 2864, - "changeinOpenInterest": -66, - "pchangeinOpenInterest": -2.25255972696246, - "totalTradedVolume": 126, - "impliedVolatility": 49.61, - "lastPrice": 1856.3, - "change": -495.5, - "pChange": -21.0689684496981, - "totalBuyQuantity": 5625, - "totalSellQuantity": 3050, - "bidQty": 300, - "bidprice": 1782.2, - "askQty": 75, - "askPrice": 1801.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25700, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 0, - "bidQty": 1775, - "bidprice": 1539.55, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25700, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25700.00", - "openInterest": 109, - "changeinOpenInterest": 10, - "pchangeinOpenInterest": 10.1010101010101, - "totalTradedVolume": 258, - "impliedVolatility": 16.19, - "lastPrice": 3.2, - "change": -0.35, - "pChange": -9.85915492957746, - "totalBuyQuantity": 93100, - "totalSellQuantity": 11750, - "bidQty": 600, - "bidprice": 2.55, - "askQty": 75, - "askPrice": 3.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25700, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25700, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25700.00", - "openInterest": 59, - "changeinOpenInterest": 26, - "pchangeinOpenInterest": 78.7878787878788, - "totalTradedVolume": 34, - "impliedVolatility": 13.64, - "lastPrice": 5.2, - "change": -1, - "pChange": -16.1290322580645, - "totalBuyQuantity": 23725, - "totalSellQuantity": 4900, - "bidQty": 25, - "bidprice": 5.25, - "askQty": 200, - "askPrice": 11, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25700, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25700.00", - "openInterest": 189, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -2.07253886010363, - "totalTradedVolume": 19, - "impliedVolatility": 18.12, - "lastPrice": 1641, - "change": -504, - "pChange": -23.4965034965035, - "totalBuyQuantity": 4775, - "totalSellQuantity": 3900, - "bidQty": 25, - "bidprice": 1631.25, - "askQty": 25, - "askPrice": 1686.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25700.00", - "openInterest": 8021, - "changeinOpenInterest": 1280, - "pchangeinOpenInterest": 18.9882806705237, - "totalTradedVolume": 6473, - "impliedVolatility": 12.92, - "lastPrice": 22.75, - "change": 11.45, - "pChange": 101.327433628319, - "totalBuyQuantity": 39850, - "totalSellQuantity": 2225, - "bidQty": 75, - "bidprice": 19.1, - "askQty": 75, - "askPrice": 23.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25700, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25700.00", - "openInterest": 68, - "changeinOpenInterest": -21, - "pchangeinOpenInterest": -23.5955056179775, - "totalTradedVolume": 98, - "impliedVolatility": 23.01, - "lastPrice": 1772, - "change": -68, - "pChange": -3.69565217391304, - "totalBuyQuantity": 3250, - "totalSellQuantity": 3575, - "bidQty": 1775, - "bidprice": 1375.3, - "askQty": 900, - "askPrice": 1625.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25700, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25700.00", - "openInterest": 434, - "changeinOpenInterest": 30, - "pchangeinOpenInterest": 7.42574257425743, - "totalTradedVolume": 329, - "impliedVolatility": 11.05, - "lastPrice": 79, - "change": 31.1, - "pChange": 64.9269311064718, - "totalBuyQuantity": 10575, - "totalSellQuantity": 2225, - "bidQty": 200, - "bidprice": 60, - "askQty": 25, - "askPrice": 80, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25750.00", - "openInterest": 2079, - "changeinOpenInterest": -237, - "pchangeinOpenInterest": -10.2331606217617, - "totalTradedVolume": 5576, - "impliedVolatility": 21.98, - "lastPrice": 1.1, - "change": -0.7, - "pChange": -38.8888888888889, - "totalBuyQuantity": 105650, - "totalSellQuantity": 13600, - "bidQty": 3600, - "bidprice": 1.05, - "askQty": 700, - "askPrice": 1.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25750.00", - "openInterest": 116, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.854700854700855, - "totalTradedVolume": 10, - "impliedVolatility": 37.46, - "lastPrice": 1834.4, - "change": -548.4, - "pChange": -23.0149404062448, - "totalBuyQuantity": 4475, - "totalSellQuantity": 5225, - "bidQty": 175, - "bidprice": 1828.2, - "askQty": 75, - "askPrice": 1859.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25750, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1000, - "bidQty": 1775, - "bidprice": 1584.6, - "askQty": 1000, - "askPrice": 1963.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25750, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25750.00", - "openInterest": 88, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 8.64197530864198, - "totalTradedVolume": 162, - "impliedVolatility": 16.37, - "lastPrice": 2.9, - "change": 0.1, - "pChange": 3.57142857142857, - "totalBuyQuantity": 44800, - "totalSellQuantity": 11700, - "bidQty": 1800, - "bidprice": 2.3, - "askQty": 25, - "askPrice": 2.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25750, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25750, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25750.00", - "openInterest": 150, - "changeinOpenInterest": 36, - "pchangeinOpenInterest": 31.5789473684211, - "totalTradedVolume": 182, - "impliedVolatility": 14.05, - "lastPrice": 5.4, - "change": 0.25, - "pChange": 4.85436893203884, - "totalBuyQuantity": 25875, - "totalSellQuantity": 3725, - "bidQty": 100, - "bidprice": 4.15, - "askQty": 400, - "askPrice": 7.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25750, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 25750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25750.00", - "openInterest": 488, - "changeinOpenInterest": 94, - "pchangeinOpenInterest": 23.8578680203046, - "totalTradedVolume": 449, - "impliedVolatility": 12.95, - "lastPrice": 20.5, - "change": 8.4, - "pChange": 69.4214876033058, - "totalBuyQuantity": 27925, - "totalSellQuantity": 750, - "bidQty": 600, - "bidprice": 15.65, - "askQty": 750, - "askPrice": 24.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 0, - "bidQty": 1775, - "bidprice": 1593.8, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25750, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25750.00", - "openInterest": 110, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.900900900900901, - "totalTradedVolume": 1, - "impliedVolatility": 10.05, - "lastPrice": 52.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 10800, - "totalSellQuantity": 2700, - "bidQty": 900, - "bidprice": 60.45, - "askQty": 1800, - "askPrice": 100.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25750, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2175, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1376.5, - "askQty": 1775, - "askPrice": 2029.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25800, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25800.00", - "openInterest": 5561, - "changeinOpenInterest": -278, - "pchangeinOpenInterest": -4.76108922760747, - "totalTradedVolume": 374, - "impliedVolatility": 44.7, - "lastPrice": 1915, - "change": -528.2, - "pChange": -21.6191879502292, - "totalBuyQuantity": 6125, - "totalSellQuantity": 6200, - "bidQty": 675, - "bidprice": 1869.35, - "askQty": 100, - "askPrice": 1903.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25800.00", - "openInterest": 9652, - "changeinOpenInterest": -2390, - "pchangeinOpenInterest": -19.8472014615512, - "totalTradedVolume": 69158, - "impliedVolatility": 22.5, - "lastPrice": 1.1, - "change": -0.75, - "pChange": -40.5405405405405, - "totalBuyQuantity": 277800, - "totalSellQuantity": 31400, - "bidQty": 2750, - "bidprice": 1.1, - "askQty": 400, - "askPrice": 1.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25800, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25800.00", - "openInterest": 464, - "changeinOpenInterest": 75, - "pchangeinOpenInterest": 19.280205655527, - "totalTradedVolume": 446, - "impliedVolatility": 16.9, - "lastPrice": 3.1, - "change": -0.3, - "pChange": -8.8235294117647, - "totalBuyQuantity": 88975, - "totalSellQuantity": 18750, - "bidQty": 150, - "bidprice": 2.3, - "askQty": 150, - "askPrice": 3.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25800, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1629.2, - "askQty": 1775, - "askPrice": 2088.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25800, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25800, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 24500, - "totalSellQuantity": 2500, - "bidQty": 1500, - "bidprice": 3.7, - "askQty": 500, - "askPrice": 10, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25800, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25800.00", - "openInterest": 146, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 5.03597122302158, - "totalTradedVolume": 23, - "impliedVolatility": 22.23, - "lastPrice": 1797.1, - "change": -448.6, - "pChange": -19.9759540455092, - "totalBuyQuantity": 4850, - "totalSellQuantity": 3700, - "bidQty": 25, - "bidprice": 1726.25, - "askQty": 25, - "askPrice": 1789.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25800.00", - "openInterest": 6766, - "changeinOpenInterest": -3493, - "pchangeinOpenInterest": -34.0481528414075, - "totalTradedVolume": 13919, - "impliedVolatility": 13.11, - "lastPrice": 19.35, - "change": 8.8, - "pChange": 83.4123222748815, - "totalBuyQuantity": 42975, - "totalSellQuantity": 650, - "bidQty": 25, - "bidprice": 17, - "askQty": 200, - "askPrice": 29.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25800, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25800.00", - "openInterest": 191, - "changeinOpenInterest": 43, - "pchangeinOpenInterest": 29.0540540540541, - "totalTradedVolume": 158, - "impliedVolatility": 11.54, - "lastPrice": 78, - "change": 41.4, - "pChange": 113.114754098361, - "totalBuyQuantity": 10200, - "totalSellQuantity": 0, - "bidQty": 1800, - "bidprice": 61.3, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25800, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25800.00", - "openInterest": 21, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 20, - "impliedVolatility": 24.97, - "lastPrice": 1915, - "change": -189.2, - "pChange": -8.99154072806767, - "totalBuyQuantity": 2350, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1460.4, - "askQty": 1775, - "askPrice": 2095.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25850, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25850.00", - "openInterest": 51, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -1.92307692307692, - "totalTradedVolume": 4, - "impliedVolatility": 74.75, - "lastPrice": 2187.25, - "change": -312.75, - "pChange": -12.51, - "totalBuyQuantity": 5525, - "totalSellQuantity": 5325, - "bidQty": 50, - "bidprice": 1928.85, - "askQty": 50, - "askPrice": 1973.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25850.00", - "openInterest": 1491, - "changeinOpenInterest": 423, - "pchangeinOpenInterest": 39.6067415730337, - "totalTradedVolume": 4925, - "impliedVolatility": 23.23, - "lastPrice": 1.2, - "change": -0.55, - "pChange": -31.4285714285714, - "totalBuyQuantity": 99875, - "totalSellQuantity": 10475, - "bidQty": 2500, - "bidprice": 1, - "askQty": 1350, - "askPrice": 1.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25850, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 25850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25850.00", - "openInterest": 150, - "changeinOpenInterest": -36, - "pchangeinOpenInterest": -19.3548387096774, - "totalTradedVolume": 146, - "impliedVolatility": 17.22, - "lastPrice": 3, - "change": -0.55, - "pChange": -15.4929577464789, - "totalBuyQuantity": 44375, - "totalSellQuantity": 13475, - "bidQty": 1800, - "bidprice": 2.1, - "askQty": 100, - "askPrice": 3.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25850, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1668.4, - "askQty": 1775, - "askPrice": 2182.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25850, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25850, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25850.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 24.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 23850, - "totalSellQuantity": 1900, - "bidQty": 1500, - "bidprice": 3.7, - "askQty": 25, - "askPrice": 10, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25850, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25850.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 809.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 450, - "bidQty": 1775, - "bidprice": 1692.15, - "askQty": 450, - "askPrice": 2087.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25850.00", - "openInterest": 421, - "changeinOpenInterest": 114, - "pchangeinOpenInterest": 37.1335504885994, - "totalTradedVolume": 423, - "impliedVolatility": 13.24, - "lastPrice": 18.15, - "change": 7, - "pChange": 62.7802690582959, - "totalBuyQuantity": 36525, - "totalSellQuantity": 650, - "bidQty": 900, - "bidprice": 15.35, - "askQty": 650, - "askPrice": 34.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25850, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1298.45, - "askQty": 1775, - "askPrice": 2156.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25850, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25850.00", - "openInterest": 65, - "changeinOpenInterest": 40, - "pchangeinOpenInterest": 160, - "totalTradedVolume": 40, - "impliedVolatility": 10.14, - "lastPrice": 45.1, - "change": 1.1, - "pChange": 2.5, - "totalBuyQuantity": 6725, - "totalSellQuantity": 525, - "bidQty": 400, - "bidprice": 45.15, - "askQty": 25, - "askPrice": 95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25900.00", - "openInterest": 2476, - "changeinOpenInterest": -31, - "pchangeinOpenInterest": -1.23653769445552, - "totalTradedVolume": 55, - "impliedVolatility": 49.98, - "lastPrice": 2035.3, - "change": -502.6, - "pChange": -19.8037747744198, - "totalBuyQuantity": 6450, - "totalSellQuantity": 6375, - "bidQty": 150, - "bidprice": 1975.5, - "askQty": 25, - "askPrice": 2012.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25900.00", - "openInterest": 4350, - "changeinOpenInterest": -621, - "pchangeinOpenInterest": -12.4924562462281, - "totalTradedVolume": 23398, - "impliedVolatility": 23.29, - "lastPrice": 1, - "change": -0.7, - "pChange": -41.1764705882353, - "totalBuyQuantity": 149925, - "totalSellQuantity": 10550, - "bidQty": 250, - "bidprice": 1, - "askQty": 1800, - "askPrice": 5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25900, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1704.75, - "askQty": 1775, - "askPrice": 2235.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25900, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25900.00", - "openInterest": 172, - "changeinOpenInterest": 102, - "pchangeinOpenInterest": 145.714285714286, - "totalTradedVolume": 324, - "impliedVolatility": 17.49, - "lastPrice": 2.85, - "change": 0.15, - "pChange": 5.55555555555555, - "totalBuyQuantity": 98675, - "totalSellQuantity": 14625, - "bidQty": 375, - "bidprice": 2.4, - "askQty": 250, - "askPrice": 2.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25900, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25900, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25900.00", - "openInterest": 114, - "changeinOpenInterest": 106, - "pchangeinOpenInterest": 1325, - "totalTradedVolume": 233, - "impliedVolatility": 14.43, - "lastPrice": 4, - "change": -1.3, - "pChange": -24.5283018867925, - "totalBuyQuantity": 31800, - "totalSellQuantity": 7025, - "bidQty": 25, - "bidprice": 4.8, - "askQty": 500, - "askPrice": 8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25900, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25900.00", - "openInterest": 159, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 4.60526315789474, - "totalTradedVolume": 29, - "impliedVolatility": 20.9, - "lastPrice": 1859.1, - "change": -368.9, - "pChange": -16.5574506283663, - "totalBuyQuantity": 4775, - "totalSellQuantity": 4600, - "bidQty": 25, - "bidprice": 1825.15, - "askQty": 25, - "askPrice": 1870.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25900.00", - "openInterest": 1880, - "changeinOpenInterest": 239, - "pchangeinOpenInterest": 14.5642900670323, - "totalTradedVolume": 2655, - "impliedVolatility": 13.64, - "lastPrice": 18.85, - "change": 8.1, - "pChange": 75.3488372093024, - "totalBuyQuantity": 45500, - "totalSellQuantity": 3325, - "bidQty": 4975, - "bidprice": 17, - "askQty": 100, - "askPrice": 19.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25900, - "expiryDate": "30-Jan-2025", - "PE": { - "strikePrice": 25900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2175, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1466.5, - "askQty": 1775, - "askPrice": 2162.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25900, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25900.00", - "openInterest": 275, - "changeinOpenInterest": 6, - "pchangeinOpenInterest": 2.23048327137546, - "totalTradedVolume": 56, - "impliedVolatility": 11.1, - "lastPrice": 58, - "change": 23.15, - "pChange": 66.4275466284075, - "totalBuyQuantity": 10750, - "totalSellQuantity": 625, - "bidQty": 50, - "bidprice": 58, - "askQty": 75, - "askPrice": 62, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25950, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25950.00", - "openInterest": 693, - "changeinOpenInterest": 128, - "pchangeinOpenInterest": 22.6548672566372, - "totalTradedVolume": 3835, - "impliedVolatility": 23.8, - "lastPrice": 1, - "change": -0.75, - "pChange": -42.8571428571429, - "totalBuyQuantity": 88400, - "totalSellQuantity": 12700, - "bidQty": 25, - "bidprice": 1, - "askQty": 750, - "askPrice": 1.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25950.00", - "openInterest": 58, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 3.57142857142857, - "totalTradedVolume": 7, - "impliedVolatility": 44.24, - "lastPrice": 2050, - "change": -515, - "pChange": -20.0779727095517, - "totalBuyQuantity": 5050, - "totalSellQuantity": 5575, - "bidQty": 100, - "bidprice": 2039.6, - "askQty": 50, - "askPrice": 2069.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25950, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 25950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE25950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1784.4, - "askQty": 1775, - "askPrice": 2244.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25950, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE25950.00", - "openInterest": 291, - "changeinOpenInterest": 6, - "pchangeinOpenInterest": 2.10526315789474, - "totalTradedVolume": 91, - "impliedVolatility": 18.62, - "lastPrice": 3.9, - "change": 1.2, - "pChange": 44.4444444444444, - "totalBuyQuantity": 46500, - "totalSellQuantity": 18450, - "bidQty": 300, - "bidprice": 2.1, - "askQty": 600, - "askPrice": 3.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25950, - "expiryDate": "12-Dec-2024", - "CE": { - "strikePrice": 25950, - "expiryDate": "12-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY12-12-2024CE25950.00", - "openInterest": 179, - "changeinOpenInterest": 116, - "pchangeinOpenInterest": 184.126984126984, - "totalTradedVolume": 237, - "impliedVolatility": 15.15, - "lastPrice": 4.85, - "change": 0.5, - "pChange": 11.4942528735632, - "totalBuyQuantity": 30800, - "totalSellQuantity": 7300, - "bidQty": 450, - "bidprice": 4.2, - "askQty": 100, - "askPrice": 5.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25950, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 25950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE25950.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1973.95, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3700, - "totalSellQuantity": 3700, - "bidQty": 25, - "bidprice": 1821, - "askQty": 25, - "askPrice": 1934.35, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE25950.00", - "openInterest": 207, - "changeinOpenInterest": 100, - "pchangeinOpenInterest": 93.4579439252337, - "totalTradedVolume": 200, - "impliedVolatility": 13.54, - "lastPrice": 16.2, - "change": 5, - "pChange": 44.6428571428571, - "totalBuyQuantity": 27075, - "totalSellQuantity": 2000, - "bidQty": 900, - "bidprice": 14.05, - "askQty": 600, - "askPrice": 24.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25950, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 25950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE25950.00", - "openInterest": 239, - "changeinOpenInterest": -70, - "pchangeinOpenInterest": -22.6537216828479, - "totalTradedVolume": 83, - "impliedVolatility": 11.28, - "lastPrice": 56.65, - "change": 24.95, - "pChange": 78.7066246056782, - "totalBuyQuantity": 8575, - "totalSellQuantity": 1875, - "bidQty": 900, - "bidprice": 42.4, - "askQty": 625, - "askPrice": 158.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25950, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE25950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2250, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1496.75, - "askQty": 1775, - "askPrice": 2255.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26000.00", - "openInterest": 40309, - "changeinOpenInterest": -7075, - "pchangeinOpenInterest": -14.9312004052001, - "totalTradedVolume": 9598, - "impliedVolatility": 43.97, - "lastPrice": 2095.15, - "change": -547.35, - "pChange": -20.713339640492, - "totalBuyQuantity": 7350, - "totalSellQuantity": 8800, - "bidQty": 75, - "bidprice": 2087.8, - "askQty": 50, - "askPrice": 2101.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26000.00", - "openInterest": 236483, - "changeinOpenInterest": 52068, - "pchangeinOpenInterest": 28.2341458124339, - "totalTradedVolume": 395698, - "impliedVolatility": 24.43, - "lastPrice": 1.05, - "change": -0.65, - "pChange": -38.2352941176471, - "totalBuyQuantity": 1629875, - "totalSellQuantity": 208850, - "bidQty": 9075, - "bidprice": 1.05, - "askQty": 175, - "askPrice": 1.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 26000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE26000.00", - "openInterest": 4301, - "changeinOpenInterest": 1137, - "pchangeinOpenInterest": 35.9355246523388, - "totalTradedVolume": 4866, - "impliedVolatility": 18.09, - "lastPrice": 2.65, - "change": -0.35, - "pChange": -11.6666666666667, - "totalBuyQuantity": 129925, - "totalSellQuantity": 34850, - "bidQty": 900, - "bidprice": 2.25, - "askQty": 100, - "askPrice": 2.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26000, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE26000.00", - "openInterest": 28, - "changeinOpenInterest": 21, - "pchangeinOpenInterest": 300, - "totalTradedVolume": 26, - "impliedVolatility": 38.11, - "lastPrice": 2119, - "change": -424.6, - "pChange": -16.6928762384023, - "totalBuyQuantity": 4050, - "totalSellQuantity": 4100, - "bidQty": 300, - "bidprice": 1885.5, - "askQty": 300, - "askPrice": 2097.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26000.00", - "openInterest": 110420, - "changeinOpenInterest": 496, - "pchangeinOpenInterest": 0.451220843491867, - "totalTradedVolume": 72335, - "impliedVolatility": 13.87, - "lastPrice": 16.5, - "change": 5.8, - "pChange": 54.2056074766355, - "totalBuyQuantity": 102800, - "totalSellQuantity": 37325, - "bidQty": 500, - "bidprice": 15.4, - "askQty": 1775, - "askPrice": 16.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26000.00", - "openInterest": 38961, - "changeinOpenInterest": 2040, - "pchangeinOpenInterest": 5.52531079873243, - "totalTradedVolume": 8229, - "impliedVolatility": 20.36, - "lastPrice": 1938.15, - "change": -533.95, - "pChange": -21.599045346062, - "totalBuyQuantity": 8000, - "totalSellQuantity": 9250, - "bidQty": 25, - "bidprice": 1937.3, - "askQty": 25, - "askPrice": 1956.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 26000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE26000.00", - "openInterest": 14649, - "changeinOpenInterest": 738, - "pchangeinOpenInterest": 5.30515419452232, - "totalTradedVolume": 15007, - "impliedVolatility": 11.21, - "lastPrice": 51, - "change": 20.95, - "pChange": 69.7171381031614, - "totalBuyQuantity": 30250, - "totalSellQuantity": 9875, - "bidQty": 300, - "bidprice": 49, - "askQty": 300, - "askPrice": 51.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26000, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE26000.00", - "openInterest": 177, - "changeinOpenInterest": 65, - "pchangeinOpenInterest": 58.0357142857143, - "totalTradedVolume": 118, - "impliedVolatility": 18.66, - "lastPrice": 1846.2, - "change": -435.6, - "pChange": -19.0901919537208, - "totalBuyQuantity": 3375, - "totalSellQuantity": 4475, - "bidQty": 400, - "bidprice": 1769.35, - "askQty": 50, - "askPrice": 1814.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 26000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE26000.00", - "openInterest": 22853, - "changeinOpenInterest": -125, - "pchangeinOpenInterest": -0.543998607363565, - "totalTradedVolume": 11493, - "impliedVolatility": 10.22, - "lastPrice": 167, - "change": 61.85, - "pChange": 58.8207322872087, - "totalBuyQuantity": 26825, - "totalSellQuantity": 8025, - "bidQty": 25, - "bidprice": 164.2, - "askQty": 2625, - "askPrice": 167, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE26000.00", - "openInterest": 18207, - "changeinOpenInterest": -118, - "pchangeinOpenInterest": -0.643929058663029, - "totalTradedVolume": 1264, - "impliedVolatility": 16.38, - "lastPrice": 1668.95, - "change": -413.9, - "pChange": -19.8718102599803, - "totalBuyQuantity": 1300, - "totalSellQuantity": 300, - "bidQty": 25, - "bidprice": 1658.4, - "askQty": 25, - "askPrice": 1687.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "26-Jun-2025", - "CE": { - "strikePrice": 26000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE26000.00", - "openInterest": 2298, - "changeinOpenInterest": 402, - "pchangeinOpenInterest": 21.2025316455696, - "totalTradedVolume": 956, - "impliedVolatility": 9.04, - "lastPrice": 414.2, - "change": 111.55, - "pChange": 36.8577564843879, - "totalBuyQuantity": 22000, - "totalSellQuantity": 3225, - "bidQty": 1175, - "bidprice": 414.2, - "askQty": 75, - "askPrice": 428.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE26000.00", - "openInterest": 1644, - "changeinOpenInterest": 55, - "pchangeinOpenInterest": 3.46129641283826, - "totalTradedVolume": 299, - "impliedVolatility": 16.89, - "lastPrice": 1575.8, - "change": -326.3, - "pChange": -17.1547237264077, - "totalBuyQuantity": 1175, - "totalSellQuantity": 2475, - "bidQty": 25, - "bidprice": 1552.4, - "askQty": 75, - "askPrice": 1595, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 26000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 960.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 26000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE26000.00", - "openInterest": 3673, - "changeinOpenInterest": 158, - "pchangeinOpenInterest": 4.4950213371266, - "totalTradedVolume": 424, - "impliedVolatility": 18.18, - "lastPrice": 1505, - "change": -248.6, - "pChange": -14.1765510948905, - "totalBuyQuantity": 2625, - "totalSellQuantity": 1950, - "bidQty": 100, - "bidprice": 1500, - "askQty": 50, - "askPrice": 1510, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE26000.00", - "openInterest": 2847, - "changeinOpenInterest": 343, - "pchangeinOpenInterest": 13.6980830670927, - "totalTradedVolume": 817, - "impliedVolatility": 7.85, - "lastPrice": 1100, - "change": 199.15, - "pChange": 22.1068990397957, - "totalBuyQuantity": 3250, - "totalSellQuantity": 3750, - "bidQty": 75, - "bidprice": 1096.25, - "askQty": 400, - "askPrice": 1100, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 26000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5700, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 3.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE26000.00", - "openInterest": 18, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 3, - "impliedVolatility": 0, - "lastPrice": 1585, - "change": 84, - "pChange": 5.5962691538974, - "totalBuyQuantity": 2975, - "totalSellQuantity": 100, - "bidQty": 25, - "bidprice": 1450, - "askQty": 50, - "askPrice": 1600, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 26000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE26000.00", - "openInterest": 9, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1300, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2350, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1010.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 1650, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 26000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7200, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 2.85, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 26000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.25, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 26000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 26000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE26000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 26000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE26000.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1391.75, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26050.00", - "openInterest": 1341, - "changeinOpenInterest": 244, - "pchangeinOpenInterest": 22.2424794895169, - "totalTradedVolume": 8713, - "impliedVolatility": 24.68, - "lastPrice": 0.95, - "change": -0.8, - "pChange": -45.7142857142857, - "totalBuyQuantity": 89300, - "totalSellQuantity": 21650, - "bidQty": 3575, - "bidprice": 0.95, - "askQty": 1425, - "askPrice": 1.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26050.00", - "openInterest": 149, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2661.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4325, - "totalSellQuantity": 4300, - "bidQty": 25, - "bidprice": 2100.1, - "askQty": 625, - "askPrice": 2217.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26050, - "expiryDate": "05-Dec-2024", - "PE": { - "strikePrice": 26050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE26050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 1834.1, - "askQty": 1775, - "askPrice": 2423.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26050, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE26050.00", - "openInterest": 119, - "changeinOpenInterest": 36, - "pchangeinOpenInterest": 43.3734939759036, - "totalTradedVolume": 65, - "impliedVolatility": 18.14, - "lastPrice": 2.3, - "change": -0.45, - "pChange": -16.3636363636364, - "totalBuyQuantity": 40900, - "totalSellQuantity": 16825, - "bidQty": 1800, - "bidprice": 1.9, - "askQty": 175, - "askPrice": 2.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26050, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26050.00", - "openInterest": 277, - "changeinOpenInterest": 117, - "pchangeinOpenInterest": 73.125, - "totalTradedVolume": 535, - "impliedVolatility": 13.72, - "lastPrice": 13.85, - "change": 3.85, - "pChange": 38.5, - "totalBuyQuantity": 32400, - "totalSellQuantity": 2025, - "bidQty": 750, - "bidprice": 11.8, - "askQty": 900, - "askPrice": 24.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26050.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1057, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1857.5, - "askQty": 900, - "askPrice": 2320.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26050, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 26050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE26050.00", - "openInterest": 287, - "changeinOpenInterest": -5, - "pchangeinOpenInterest": -1.71232876712329, - "totalTradedVolume": 7, - "impliedVolatility": 10.11, - "lastPrice": 30.25, - "change": -0.100000000000001, - "pChange": -0.329489291598028, - "totalBuyQuantity": 12900, - "totalSellQuantity": 2425, - "bidQty": 25, - "bidprice": 33.9, - "askQty": 900, - "askPrice": 61.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26050, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE26050.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1504.3, - "askQty": 1775, - "askPrice": 2416.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26100.00", - "openInterest": 10255, - "changeinOpenInterest": -75, - "pchangeinOpenInterest": -0.726040658276864, - "totalTradedVolume": 12323, - "impliedVolatility": 25.04, - "lastPrice": 0.9, - "change": -0.8, - "pChange": -47.0588235294118, - "totalBuyQuantity": 186575, - "totalSellQuantity": 23050, - "bidQty": 7200, - "bidprice": 0.9, - "askQty": 100, - "askPrice": 1.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26100.00", - "openInterest": 1496, - "changeinOpenInterest": -24, - "pchangeinOpenInterest": -1.57894736842105, - "totalTradedVolume": 30, - "impliedVolatility": 54.27, - "lastPrice": 2240, - "change": -501.4, - "pChange": -18.289924855913, - "totalBuyQuantity": 4700, - "totalSellQuantity": 4350, - "bidQty": 75, - "bidprice": 2142.25, - "askQty": 100, - "askPrice": 2205.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26100, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 26100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE26100.00", - "openInterest": 241, - "changeinOpenInterest": 70, - "pchangeinOpenInterest": 40.9356725146199, - "totalTradedVolume": 419, - "impliedVolatility": 18.41, - "lastPrice": 2.2, - "change": -0.9, - "pChange": -29.0322580645161, - "totalBuyQuantity": 98675, - "totalSellQuantity": 20825, - "bidQty": 25, - "bidprice": 2.15, - "askQty": 1800, - "askPrice": 2.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26100, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE26100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1902.15, - "askQty": 1775, - "askPrice": 2405.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26100, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26100.00", - "openInterest": 238, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -0.833333333333333, - "totalTradedVolume": 25, - "impliedVolatility": 22.91, - "lastPrice": 2065, - "change": -294.35, - "pChange": -12.475893784305, - "totalBuyQuantity": 4775, - "totalSellQuantity": 4200, - "bidQty": 25, - "bidprice": 2015.25, - "askQty": 25, - "askPrice": 2082.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26100.00", - "openInterest": 1146, - "changeinOpenInterest": -141, - "pchangeinOpenInterest": -10.955710955711, - "totalTradedVolume": 990, - "impliedVolatility": 14.06, - "lastPrice": 14.2, - "change": 4.15, - "pChange": 41.2935323383084, - "totalBuyQuantity": 42275, - "totalSellQuantity": 1450, - "bidQty": 250, - "bidprice": 11.7, - "askQty": 100, - "askPrice": 18.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26100, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 26100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE26100.00", - "openInterest": 180, - "changeinOpenInterest": 18, - "pchangeinOpenInterest": 11.1111111111111, - "totalTradedVolume": 88, - "impliedVolatility": 10.91, - "lastPrice": 38.45, - "change": 8.35, - "pChange": 27.7408637873754, - "totalBuyQuantity": 9050, - "totalSellQuantity": 1800, - "bidQty": 125, - "bidprice": 40.4, - "askQty": 800, - "askPrice": 63.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26100, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE26100.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 900, - "totalSellQuantity": 1775, - "bidQty": 900, - "bidprice": 1518.45, - "askQty": 1775, - "askPrice": 2363.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26150.00", - "openInterest": 706, - "changeinOpenInterest": 246, - "pchangeinOpenInterest": 53.4782608695652, - "totalTradedVolume": 2797, - "impliedVolatility": 26.43, - "lastPrice": 1.25, - "change": -0.45, - "pChange": -26.4705882352941, - "totalBuyQuantity": 78575, - "totalSellQuantity": 23250, - "bidQty": 7200, - "bidprice": 0.9, - "askQty": 3175, - "askPrice": 1.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26150.00", - "openInterest": 87, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 8.75, - "totalTradedVolume": 122, - "impliedVolatility": 52.36, - "lastPrice": 2274.35, - "change": -514.65, - "pChange": -18.4528504840445, - "totalBuyQuantity": 4500, - "totalSellQuantity": 4100, - "bidQty": 25, - "bidprice": 2226.55, - "askQty": 50, - "askPrice": 2270.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26150, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 26150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE26150.00", - "openInterest": 286, - "changeinOpenInterest": 62, - "pchangeinOpenInterest": 27.6785714285714, - "totalTradedVolume": 215, - "impliedVolatility": 18.57, - "lastPrice": 2, - "change": -0.85, - "pChange": -29.8245614035088, - "totalBuyQuantity": 45675, - "totalSellQuantity": 17725, - "bidQty": 250, - "bidprice": 2, - "askQty": 1000, - "askPrice": 3.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26150, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE26150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1961.35, - "askQty": 1775, - "askPrice": 2460.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26150, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26150.00", - "openInterest": 7, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1751, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3400, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1856.25, - "askQty": 900, - "askPrice": 2422.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26150.00", - "openInterest": 188, - "changeinOpenInterest": 45, - "pchangeinOpenInterest": 31.4685314685315, - "totalTradedVolume": 147, - "impliedVolatility": 14.12, - "lastPrice": 13, - "change": 2.9, - "pChange": 28.7128712871287, - "totalBuyQuantity": 30225, - "totalSellQuantity": 5275, - "bidQty": 750, - "bidprice": 10.1, - "askQty": 400, - "askPrice": 20.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26150, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 26150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE26150.00", - "openInterest": 63, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 30, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 9350, - "totalSellQuantity": 2900, - "bidQty": 50, - "bidprice": 31.5, - "askQty": 500, - "askPrice": 57, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26150, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE26150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2175, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1618.9, - "askQty": 1775, - "askPrice": 2520.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26200.00", - "openInterest": 2228, - "changeinOpenInterest": -119, - "pchangeinOpenInterest": -5.07030251384747, - "totalTradedVolume": 145, - "impliedVolatility": 52.65, - "lastPrice": 2321.4, - "change": -520.1, - "pChange": -18.3037128277318, - "totalBuyQuantity": 4375, - "totalSellQuantity": 4475, - "bidQty": 100, - "bidprice": 2288.4, - "askQty": 100, - "askPrice": 2301.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26200.00", - "openInterest": 3851, - "changeinOpenInterest": 523, - "pchangeinOpenInterest": 15.7151442307692, - "totalTradedVolume": 11801, - "impliedVolatility": 26.7, - "lastPrice": 1.15, - "change": -0.55, - "pChange": -32.3529411764706, - "totalBuyQuantity": 170175, - "totalSellQuantity": 29225, - "bidQty": 1450, - "bidprice": 0.95, - "askQty": 2050, - "askPrice": 1.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26200, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 26200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE26200.00", - "openInterest": 660, - "changeinOpenInterest": 196, - "pchangeinOpenInterest": 42.2413793103448, - "totalTradedVolume": 649, - "impliedVolatility": 18.93, - "lastPrice": 2, - "change": -0.75, - "pChange": -27.2727272727273, - "totalBuyQuantity": 100525, - "totalSellQuantity": 20775, - "bidQty": 2700, - "bidprice": 1.9, - "askQty": 175, - "askPrice": 2.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26200, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE26200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2003.6, - "askQty": 1775, - "askPrice": 2591.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26200, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26200.00", - "openInterest": 4780, - "changeinOpenInterest": -1081, - "pchangeinOpenInterest": -18.4439515441051, - "totalTradedVolume": 7940, - "impliedVolatility": 14.13, - "lastPrice": 11.65, - "change": 2.5, - "pChange": 27.3224043715847, - "totalBuyQuantity": 38075, - "totalSellQuantity": 3525, - "bidQty": 100, - "bidprice": 9.9, - "askQty": 50, - "askPrice": 14.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26200.00", - "openInterest": 470, - "changeinOpenInterest": 54, - "pchangeinOpenInterest": 12.9807692307692, - "totalTradedVolume": 79, - "impliedVolatility": 25.22, - "lastPrice": 2189.7, - "change": -465.3, - "pChange": -17.5254237288136, - "totalBuyQuantity": 4750, - "totalSellQuantity": 4075, - "bidQty": 100, - "bidprice": 2106.05, - "askQty": 25, - "askPrice": 2176.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26200, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 26200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE26200.00", - "openInterest": 413, - "changeinOpenInterest": 220, - "pchangeinOpenInterest": 113.989637305699, - "totalTradedVolume": 554, - "impliedVolatility": 11.51, - "lastPrice": 40.5, - "change": 12.8, - "pChange": 46.2093862815885, - "totalBuyQuantity": 19400, - "totalSellQuantity": 2600, - "bidQty": 500, - "bidprice": 34, - "askQty": 800, - "askPrice": 54, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26200, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE26200.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 1888.2, - "askQty": 1775, - "askPrice": 2482.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26250, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26250.00", - "openInterest": 63, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 71.92, - "lastPrice": 2493.3, - "change": -254.65, - "pChange": -9.26690805873468, - "totalBuyQuantity": 3100, - "totalSellQuantity": 3150, - "bidQty": 325, - "bidprice": 2222.5, - "askQty": 375, - "askPrice": 2457.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26250.00", - "openInterest": 1921, - "changeinOpenInterest": 607, - "pchangeinOpenInterest": 46.1948249619483, - "totalTradedVolume": 6983, - "impliedVolatility": 26.67, - "lastPrice": 0.95, - "change": -0.7, - "pChange": -42.4242424242424, - "totalBuyQuantity": 75500, - "totalSellQuantity": 23175, - "bidQty": 3325, - "bidprice": 0.95, - "askQty": 900, - "askPrice": 2.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26250, - "expiryDate": "05-Dec-2024", - "CE": { - "strikePrice": 26250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024CE26250.00", - "openInterest": 263, - "changeinOpenInterest": 62, - "pchangeinOpenInterest": 30.8457711442786, - "totalTradedVolume": 433, - "impliedVolatility": 19.4, - "lastPrice": 2.1, - "change": -0.8, - "pChange": -27.5862068965517, - "totalBuyQuantity": 158050, - "totalSellQuantity": 20500, - "bidQty": 975, - "bidprice": 2, - "askQty": 1375, - "askPrice": 2.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26250, - "expiryDate": "05-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY05-12-2024PE26250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2049.65, - "askQty": 1775, - "askPrice": 2578.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26250, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26250.00", - "openInterest": 55, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1514, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 1963.8, - "askQty": 900, - "askPrice": 2524.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26250.00", - "openInterest": 179, - "changeinOpenInterest": 51, - "pchangeinOpenInterest": 39.84375, - "totalTradedVolume": 245, - "impliedVolatility": 14.47, - "lastPrice": 12, - "change": 3, - "pChange": 33.3333333333333, - "totalBuyQuantity": 27025, - "totalSellQuantity": 2900, - "bidQty": 600, - "bidprice": 9.15, - "askQty": 25, - "askPrice": 19, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26250, - "expiryDate": "30-Jan-2025", - "CE": { - "strikePrice": 26250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025CE26250.00", - "openInterest": 820, - "changeinOpenInterest": 30, - "pchangeinOpenInterest": 3.79746835443038, - "totalTradedVolume": 600, - "impliedVolatility": 11.76, - "lastPrice": 40.9, - "change": 10.7, - "pChange": 35.4304635761589, - "totalBuyQuantity": 13200, - "totalSellQuantity": 8100, - "bidQty": 450, - "bidprice": 36.2, - "askQty": 100, - "askPrice": 42, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26250, - "expiryDate": "30-Jan-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-01-2025PE26250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 2675, - "totalSellQuantity": 2675, - "bidQty": 1775, - "bidprice": 1933.8, - "askQty": 900, - "askPrice": 2508.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26300.00", - "openInterest": 4384, - "changeinOpenInterest": 391, - "pchangeinOpenInterest": 9.79213623841723, - "totalTradedVolume": 11886, - "impliedVolatility": 27.16, - "lastPrice": 0.95, - "change": -0.75, - "pChange": -44.1176470588235, - "totalBuyQuantity": 151150, - "totalSellQuantity": 24175, - "bidQty": 400, - "bidprice": 0.95, - "askQty": 25, - "askPrice": 1.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26300.00", - "openInterest": 1171, - "changeinOpenInterest": 34, - "pchangeinOpenInterest": 2.99032541776605, - "totalTradedVolume": 109, - "impliedVolatility": 59.35, - "lastPrice": 2449.65, - "change": -470.35, - "pChange": -16.1078767123288, - "totalBuyQuantity": 5675, - "totalSellQuantity": 5500, - "bidQty": 100, - "bidprice": 2384, - "askQty": 75, - "askPrice": 2405.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26300, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26300.00", - "openInterest": 71, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 24.66, - "lastPrice": 2267.05, - "change": -92.9499999999998, - "pChange": -3.93855932203389, - "totalBuyQuantity": 4675, - "totalSellQuantity": 3750, - "bidQty": 25, - "bidprice": 2205.45, - "askQty": 75, - "askPrice": 2296.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26300.00", - "openInterest": 1490, - "changeinOpenInterest": -55, - "pchangeinOpenInterest": -3.55987055016181, - "totalTradedVolume": 1579, - "impliedVolatility": 14.63, - "lastPrice": 11.45, - "change": 2.5, - "pChange": 27.9329608938548, - "totalBuyQuantity": 39050, - "totalSellQuantity": 2950, - "bidQty": 125, - "bidprice": 11, - "askQty": 75, - "askPrice": 13.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26350.00", - "openInterest": 6, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2970, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 1775, - "bidprice": 2257.6, - "askQty": 1250, - "askPrice": 2547, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26350.00", - "openInterest": 440, - "changeinOpenInterest": 126, - "pchangeinOpenInterest": 40.1273885350319, - "totalTradedVolume": 2237, - "impliedVolatility": 27.65, - "lastPrice": 0.95, - "change": -0.7, - "pChange": -42.4242424242424, - "totalBuyQuantity": 78900, - "totalSellQuantity": 22575, - "bidQty": 6800, - "bidprice": 0.9, - "askQty": 150, - "askPrice": 1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26350, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26350.00", - "openInterest": 112, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -1.75438596491228, - "totalTradedVolume": 5, - "impliedVolatility": 14.99, - "lastPrice": 11.9, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 64675, - "totalSellQuantity": 6950, - "bidQty": 600, - "bidprice": 8.55, - "askQty": 600, - "askPrice": 14, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26350.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 602.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 2049.8, - "askQty": 900, - "askPrice": 2632.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26400, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26400.00", - "openInterest": 3754, - "changeinOpenInterest": -544, - "pchangeinOpenInterest": -12.6570497906003, - "totalTradedVolume": 6403, - "impliedVolatility": 27.99, - "lastPrice": 0.9, - "change": -0.75, - "pChange": -45.4545454545455, - "totalBuyQuantity": 205925, - "totalSellQuantity": 22225, - "bidQty": 6850, - "bidprice": 0.9, - "askQty": 900, - "askPrice": 3.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26400.00", - "openInterest": 1140, - "changeinOpenInterest": -42, - "pchangeinOpenInterest": -3.55329949238579, - "totalTradedVolume": 190, - "impliedVolatility": 60.56, - "lastPrice": 2546.65, - "change": -502.7, - "pChange": -16.4854805122403, - "totalBuyQuantity": 5525, - "totalSellQuantity": 5400, - "bidQty": 175, - "bidprice": 2476.75, - "askQty": 200, - "askPrice": 2510.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26400, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26400.00", - "openInterest": 28, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 3.7037037037037, - "totalTradedVolume": 8, - "impliedVolatility": 26, - "lastPrice": 2375.55, - "change": -496.9, - "pChange": -17.2988215634737, - "totalBuyQuantity": 3900, - "totalSellQuantity": 2850, - "bidQty": 900, - "bidprice": 2121.45, - "askQty": 75, - "askPrice": 2420.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26400.00", - "openInterest": 2838, - "changeinOpenInterest": 34, - "pchangeinOpenInterest": 1.21255349500713, - "totalTradedVolume": 1862, - "impliedVolatility": 14.46, - "lastPrice": 8.5, - "change": 0.55, - "pChange": 6.91823899371069, - "totalBuyQuantity": 40750, - "totalSellQuantity": 2800, - "bidQty": 125, - "bidprice": 8.9, - "askQty": 1000, - "askPrice": 19.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26450, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26450.00", - "openInterest": 470, - "changeinOpenInterest": -262, - "pchangeinOpenInterest": -35.792349726776, - "totalTradedVolume": 4909, - "impliedVolatility": 28.48, - "lastPrice": 0.9, - "change": -0.75, - "pChange": -45.4545454545455, - "totalBuyQuantity": 92875, - "totalSellQuantity": 22450, - "bidQty": 1475, - "bidprice": 0.85, - "askQty": 750, - "askPrice": 1.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26450.00", - "openInterest": 19, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2934.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4050, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 2499.05, - "askQty": 625, - "askPrice": 2600.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26450, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26450.00", - "openInterest": 63, - "changeinOpenInterest": 5, - "pchangeinOpenInterest": 8.62068965517242, - "totalTradedVolume": 8, - "impliedVolatility": 15.45, - "lastPrice": 11.55, - "change": -0.449999999999999, - "pChange": -3.74999999999999, - "totalBuyQuantity": 28825, - "totalSellQuantity": 3475, - "bidQty": 600, - "bidprice": 8.05, - "askQty": 300, - "askPrice": 12.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 1900, - "bidQty": 1775, - "bidprice": 2061.3, - "askQty": 900, - "askPrice": 2741, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26500, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26500.00", - "openInterest": 43281, - "changeinOpenInterest": 10078, - "pchangeinOpenInterest": 30.3526789747914, - "totalTradedVolume": 174699, - "impliedVolatility": 28.79, - "lastPrice": 0.85, - "change": -0.75, - "pChange": -46.875, - "totalBuyQuantity": 1110500, - "totalSellQuantity": 108900, - "bidQty": 58025, - "bidprice": 0.85, - "askQty": 3725, - "askPrice": 0.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26500.00", - "openInterest": 10093, - "changeinOpenInterest": -905, - "pchangeinOpenInterest": -8.22876886706674, - "totalTradedVolume": 1968, - "impliedVolatility": 56.25, - "lastPrice": 2615, - "change": -535.75, - "pChange": -17.0038879631834, - "totalBuyQuantity": 5750, - "totalSellQuantity": 6200, - "bidQty": 25, - "bidprice": 2596, - "askQty": 25, - "askPrice": 2603.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26500, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26500.00", - "openInterest": 24797, - "changeinOpenInterest": -1845, - "pchangeinOpenInterest": -6.9251557690864, - "totalTradedVolume": 19912, - "impliedVolatility": 15.02, - "lastPrice": 8.7, - "change": 1.2, - "pChange": 16, - "totalBuyQuantity": 50875, - "totalSellQuantity": 4725, - "bidQty": 275, - "bidprice": 8.55, - "askQty": 75, - "askPrice": 9.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26500.00", - "openInterest": 3553, - "changeinOpenInterest": -70, - "pchangeinOpenInterest": -1.9321004692244, - "totalTradedVolume": 290, - "impliedVolatility": 24.29, - "lastPrice": 2438.45, - "change": -528.7, - "pChange": -17.8184453094721, - "totalBuyQuantity": 5900, - "totalSellQuantity": 6975, - "bidQty": 25, - "bidprice": 2420, - "askQty": 25, - "askPrice": 2444.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26550, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26550.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3032.85, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 2452.65, - "askQty": 1000, - "askPrice": 2825.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26550.00", - "openInterest": 946, - "changeinOpenInterest": 364, - "pchangeinOpenInterest": 62.5429553264605, - "totalTradedVolume": 2008, - "impliedVolatility": 29.27, - "lastPrice": 0.85, - "change": -0.8, - "pChange": -48.4848484848485, - "totalBuyQuantity": 214825, - "totalSellQuantity": 21725, - "bidQty": 1250, - "bidprice": 0.85, - "askQty": 1325, - "askPrice": 0.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26550, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26550.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1261.6, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2225, - "bidQty": 1775, - "bidprice": 2388.3, - "askQty": 1000, - "askPrice": 2841.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26550.00", - "openInterest": 151, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 6.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 33525, - "totalSellQuantity": 1700, - "bidQty": 800, - "bidprice": 7.7, - "askQty": 600, - "askPrice": 11.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26600.00", - "openInterest": 10417, - "changeinOpenInterest": 754, - "pchangeinOpenInterest": 7.80295974335093, - "totalTradedVolume": 41266, - "impliedVolatility": 29.58, - "lastPrice": 0.8, - "change": -0.7, - "pChange": -46.6666666666667, - "totalBuyQuantity": 393750, - "totalSellQuantity": 41250, - "bidQty": 4075, - "bidprice": 0.8, - "askQty": 8525, - "askPrice": 0.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26600.00", - "openInterest": 136, - "changeinOpenInterest": -12, - "pchangeinOpenInterest": -8.10810810810811, - "totalTradedVolume": 13, - "impliedVolatility": 54.46, - "lastPrice": 2700, - "change": -546.5, - "pChange": -16.8335130140151, - "totalBuyQuantity": 5875, - "totalSellQuantity": 5275, - "bidQty": 25, - "bidprice": 2676.55, - "askQty": 100, - "askPrice": 2718.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26600, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26600.00", - "openInterest": 1503, - "changeinOpenInterest": 147, - "pchangeinOpenInterest": 10.8407079646018, - "totalTradedVolume": 403, - "impliedVolatility": 15.56, - "lastPrice": 8.8, - "change": 0.75, - "pChange": 9.3167701863354, - "totalBuyQuantity": 38725, - "totalSellQuantity": 4150, - "bidQty": 900, - "bidprice": 7.55, - "askQty": 250, - "askPrice": 11, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26600.00", - "openInterest": 198, - "changeinOpenInterest": 79, - "pchangeinOpenInterest": 66.3865546218488, - "totalTradedVolume": 104, - "impliedVolatility": 23.17, - "lastPrice": 2514.5, - "change": -525.5, - "pChange": -17.2861842105263, - "totalBuyQuantity": 3850, - "totalSellQuantity": 3150, - "bidQty": 75, - "bidprice": 2491.7, - "askQty": 25, - "askPrice": 2578.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26650, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26650.00", - "openInterest": 1144, - "changeinOpenInterest": 606, - "pchangeinOpenInterest": 112.639405204461, - "totalTradedVolume": 3442, - "impliedVolatility": 31.02, - "lastPrice": 1.1, - "change": -0.5, - "pChange": -31.25, - "totalBuyQuantity": 107775, - "totalSellQuantity": 24425, - "bidQty": 1800, - "bidprice": 0.8, - "askQty": 1800, - "askPrice": 1.2, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26650.00", - "openInterest": 22, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3130.05, - "change": -1.94999999999982, - "pChange": -0.0622605363984616, - "totalBuyQuantity": 4150, - "totalSellQuantity": 4925, - "bidQty": 25, - "bidprice": 2708.85, - "askQty": 1000, - "askPrice": 3019.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26650, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 1000, - "bidQty": 1775, - "bidprice": 2391.9, - "askQty": 1000, - "askPrice": 2963, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26650.00", - "openInterest": 149, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 24625, - "totalSellQuantity": 1800, - "bidQty": 900, - "bidprice": 6.1, - "askQty": 600, - "askPrice": 12, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26700, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26700.00", - "openInterest": 1626, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.0614628149969269, - "totalTradedVolume": 1, - "impliedVolatility": 88.94, - "lastPrice": 3010, - "change": -135.95, - "pChange": -4.32142913905179, - "totalBuyQuantity": 5725, - "totalSellQuantity": 5375, - "bidQty": 225, - "bidprice": 2776.8, - "askQty": 225, - "askPrice": 2812.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26700.00", - "openInterest": 3033, - "changeinOpenInterest": -272, - "pchangeinOpenInterest": -8.22995461422088, - "totalTradedVolume": 5565, - "impliedVolatility": 31.36, - "lastPrice": 1.05, - "change": -0.55, - "pChange": -34.375, - "totalBuyQuantity": 385200, - "totalSellQuantity": 23900, - "bidQty": 4875, - "bidprice": 0.8, - "askQty": 1000, - "askPrice": 1.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26700, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26700.00", - "openInterest": 993, - "changeinOpenInterest": -45, - "pchangeinOpenInterest": -4.33526011560694, - "totalTradedVolume": 190, - "impliedVolatility": 15.92, - "lastPrice": 8.3, - "change": 1.6, - "pChange": 23.8805970149254, - "totalBuyQuantity": 40525, - "totalSellQuantity": 5050, - "bidQty": 900, - "bidprice": 6.6, - "askQty": 1000, - "askPrice": 18.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26700.00", - "openInterest": 10, - "changeinOpenInterest": 8, - "pchangeinOpenInterest": 400, - "totalTradedVolume": 8, - "impliedVolatility": 21.29, - "lastPrice": 2587.15, - "change": 502.15, - "pChange": 24.083932853717, - "totalBuyQuantity": 3900, - "totalSellQuantity": 3875, - "bidQty": 900, - "bidprice": 2336.7, - "askQty": 875, - "askPrice": 2916.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26750.00", - "openInterest": 862, - "changeinOpenInterest": -266, - "pchangeinOpenInterest": -23.5815602836879, - "totalTradedVolume": 8818, - "impliedVolatility": 31.18, - "lastPrice": 0.85, - "change": -0.7, - "pChange": -45.1612903225807, - "totalBuyQuantity": 134150, - "totalSellQuantity": 31675, - "bidQty": 2675, - "bidprice": 0.85, - "askQty": 1400, - "askPrice": 1.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26750.00", - "openInterest": 19, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 111.66, - "lastPrice": 3253.75, - "change": 26.3000000000002, - "pChange": 0.814884816186159, - "totalBuyQuantity": 3900, - "totalSellQuantity": 3275, - "bidQty": 50, - "bidprice": 2804.6, - "askQty": 275, - "askPrice": 2944.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26750, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26750.00", - "openInterest": 47, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 15.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 27475, - "totalSellQuantity": 1300, - "bidQty": 900, - "bidprice": 6.1, - "askQty": 600, - "askPrice": 11, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 900, - "bidprice": 2325.25, - "askQty": 1000, - "askPrice": 3136.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26800.00", - "openInterest": 10560, - "changeinOpenInterest": -3619, - "pchangeinOpenInterest": -25.5236617532971, - "totalTradedVolume": 8136, - "impliedVolatility": 31.46, - "lastPrice": 0.8, - "change": -0.85, - "pChange": -51.5151515151515, - "totalBuyQuantity": 319675, - "totalSellQuantity": 37925, - "bidQty": 300, - "bidprice": 0.8, - "askQty": 2575, - "askPrice": 1.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26800.00", - "openInterest": 149, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.666666666666667, - "totalTradedVolume": 3, - "impliedVolatility": 56.38, - "lastPrice": 2895.65, - "change": -555.25, - "pChange": -16.0900055058101, - "totalBuyQuantity": 4450, - "totalSellQuantity": 4275, - "bidQty": 450, - "bidprice": 2881, - "askQty": 25, - "askPrice": 2903.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26800, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26800.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3126.85, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3700, - "bidQty": 900, - "bidprice": 2369.5, - "askQty": 25, - "askPrice": 2776.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26800.00", - "openInterest": 871, - "changeinOpenInterest": 25, - "pchangeinOpenInterest": 2.95508274231679, - "totalTradedVolume": 469, - "impliedVolatility": 16.13, - "lastPrice": 7.35, - "change": 1, - "pChange": 15.748031496063, - "totalBuyQuantity": 42475, - "totalSellQuantity": 7050, - "bidQty": 100, - "bidprice": 7, - "askQty": 500, - "askPrice": 12.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26850.00", - "openInterest": 914, - "changeinOpenInterest": 53, - "pchangeinOpenInterest": 6.15563298490128, - "totalTradedVolume": 2063, - "impliedVolatility": 31.93, - "lastPrice": 0.8, - "change": -0.75, - "pChange": -48.3870967741935, - "totalBuyQuantity": 95600, - "totalSellQuantity": 20550, - "bidQty": 5925, - "bidprice": 0.8, - "askQty": 25, - "askPrice": 1.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26850.00", - "openInterest": 33, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 103.33, - "lastPrice": 3257.95, - "change": 79.7999999999997, - "pChange": 2.51089470289318, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4525, - "bidQty": 625, - "bidprice": 2893.45, - "askQty": 125, - "askPrice": 3014.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26850, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 900, - "bidprice": 2411.4, - "askQty": 1000, - "askPrice": 3160.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26850.00", - "openInterest": 111, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 7, - "change": -1, - "pChange": -12.5, - "totalBuyQuantity": 28825, - "totalSellQuantity": 4100, - "bidQty": 900, - "bidprice": 5.1, - "askQty": 600, - "askPrice": 10.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26900, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26900.00", - "openInterest": 2111, - "changeinOpenInterest": -137, - "pchangeinOpenInterest": -6.09430604982206, - "totalTradedVolume": 8030, - "impliedVolatility": 32.39, - "lastPrice": 0.8, - "change": -0.7, - "pChange": -46.6666666666667, - "totalBuyQuantity": 345925, - "totalSellQuantity": 24550, - "bidQty": 250, - "bidprice": 0.8, - "askQty": 300, - "askPrice": 1.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26900.00", - "openInterest": 186, - "changeinOpenInterest": -6, - "pchangeinOpenInterest": -3.125, - "totalTradedVolume": 6, - "impliedVolatility": 58.98, - "lastPrice": 3000, - "change": -550, - "pChange": -15.4929577464789, - "totalBuyQuantity": 4275, - "totalSellQuantity": 4275, - "bidQty": 100, - "bidprice": 2967.65, - "askQty": 900, - "askPrice": 3043.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26900, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 26900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26900.00", - "openInterest": 221, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -0.896860986547085, - "totalTradedVolume": 4, - "impliedVolatility": 16.33, - "lastPrice": 6.5, - "change": 0.55, - "pChange": 9.24369747899159, - "totalBuyQuantity": 40125, - "totalSellQuantity": 8050, - "bidQty": 800, - "bidprice": 6.2, - "askQty": 600, - "askPrice": 10.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26900.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 25.84, - "lastPrice": 2820, - "change": -52, - "pChange": -1.81058495821727, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3700, - "bidQty": 1775, - "bidprice": 2456.9, - "askQty": 25, - "askPrice": 2878.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26950.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3426.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3700, - "totalSellQuantity": 3675, - "bidQty": 25, - "bidprice": 2972.05, - "askQty": 1000, - "askPrice": 3177.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26950.00", - "openInterest": 683, - "changeinOpenInterest": 205, - "pchangeinOpenInterest": 42.8870292887029, - "totalTradedVolume": 4558, - "impliedVolatility": 33.58, - "lastPrice": 1, - "change": -0.55, - "pChange": -35.4838709677419, - "totalBuyQuantity": 90975, - "totalSellQuantity": 20175, - "bidQty": 10800, - "bidprice": 0.7, - "askQty": 200, - "askPrice": 1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26950, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 26950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE26950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1925, - "bidQty": 1000, - "bidprice": 2500.65, - "askQty": 1025, - "askPrice": 3356.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE26950.00", - "openInterest": 57, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 37300, - "totalSellQuantity": 900, - "bidQty": 500, - "bidprice": 5.65, - "askQty": 300, - "askPrice": 10.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27000.00", - "openInterest": 104572, - "changeinOpenInterest": 2538, - "pchangeinOpenInterest": 2.4874061587314, - "totalTradedVolume": 239189, - "impliedVolatility": 33.12, - "lastPrice": 0.75, - "change": -0.7, - "pChange": -48.2758620689655, - "totalBuyQuantity": 1090350, - "totalSellQuantity": 143300, - "bidQty": 272050, - "bidprice": 0.75, - "askQty": 26375, - "askPrice": 0.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27000.00", - "openInterest": 19705, - "changeinOpenInterest": -399, - "pchangeinOpenInterest": -1.98467966573816, - "totalTradedVolume": 1401, - "impliedVolatility": 63.99, - "lastPrice": 3114.75, - "change": -533.25, - "pChange": -14.6175986842105, - "totalBuyQuantity": 4950, - "totalSellQuantity": 7200, - "bidQty": 50, - "bidprice": 3091.5, - "askQty": 275, - "askPrice": 3105.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27000.00", - "openInterest": 60562, - "changeinOpenInterest": -1105, - "pchangeinOpenInterest": -1.79188220604213, - "totalTradedVolume": 14454, - "impliedVolatility": 16.99, - "lastPrice": 7.05, - "change": 0.7, - "pChange": 11.0236220472441, - "totalBuyQuantity": 64025, - "totalSellQuantity": 24275, - "bidQty": 425, - "bidprice": 7.05, - "askQty": 350, - "askPrice": 7.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27000.00", - "openInterest": 22963, - "changeinOpenInterest": -48, - "pchangeinOpenInterest": -0.208595888922689, - "totalTradedVolume": 1022, - "impliedVolatility": 28.21, - "lastPrice": 2940.45, - "change": -517.8, - "pChange": -14.9728909130341, - "totalBuyQuantity": 4700, - "totalSellQuantity": 6600, - "bidQty": 200, - "bidprice": 2906.35, - "askQty": 250, - "askPrice": 2934.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "27-Mar-2025", - "CE": { - "strikePrice": 27000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE27000.00", - "openInterest": 21328, - "changeinOpenInterest": 779, - "pchangeinOpenInterest": 3.79093873181177, - "totalTradedVolume": 5062, - "impliedVolatility": 11.25, - "lastPrice": 70.5, - "change": 18.6, - "pChange": 35.8381502890173, - "totalBuyQuantity": 21375, - "totalSellQuantity": 5500, - "bidQty": 850, - "bidprice": 70, - "askQty": 50, - "askPrice": 71.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE27000.00", - "openInterest": 7489, - "changeinOpenInterest": -73, - "pchangeinOpenInterest": -0.965353081195451, - "totalTradedVolume": 275, - "impliedVolatility": 19.34, - "lastPrice": 2540, - "change": -441.15, - "pChange": -14.7979806450531, - "totalBuyQuantity": 800, - "totalSellQuantity": 1525, - "bidQty": 25, - "bidprice": 2517.2, - "askQty": 25, - "askPrice": 2544, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "26-Jun-2025", - "CE": { - "strikePrice": 27000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE27000.00", - "openInterest": 1582, - "changeinOpenInterest": 134, - "pchangeinOpenInterest": 9.25414364640884, - "totalTradedVolume": 1122, - "impliedVolatility": 9.7, - "lastPrice": 206.8, - "change": 57.7, - "pChange": 38.6988598256204, - "totalBuyQuantity": 15600, - "totalSellQuantity": 3150, - "bidQty": 300, - "bidprice": 196.05, - "askQty": 125, - "askPrice": 206.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE27000.00", - "openInterest": 119, - "changeinOpenInterest": -20, - "pchangeinOpenInterest": -14.3884892086331, - "totalTradedVolume": 61, - "impliedVolatility": 19.07, - "lastPrice": 2342.05, - "change": -337.3, - "pChange": -12.588874167242, - "totalBuyQuantity": 1250, - "totalSellQuantity": 750, - "bidQty": 25, - "bidprice": 2207.2, - "askQty": 50, - "askPrice": 2337.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 27000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1350.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 27000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE27000.00", - "openInterest": 2459, - "changeinOpenInterest": 40, - "pchangeinOpenInterest": 1.65357585779248, - "totalTradedVolume": 152, - "impliedVolatility": 18.62, - "lastPrice": 2020, - "change": -299.65, - "pChange": -12.9178970965447, - "totalBuyQuantity": 2575, - "totalSellQuantity": 1425, - "bidQty": 25, - "bidprice": 1987.2, - "askQty": 25, - "askPrice": 2038.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE27000.00", - "openInterest": 6079, - "changeinOpenInterest": 84, - "pchangeinOpenInterest": 1.40116763969975, - "totalTradedVolume": 721, - "impliedVolatility": 8.66, - "lastPrice": 720, - "change": 134.15, - "pChange": 22.8983528206879, - "totalBuyQuantity": 5900, - "totalSellQuantity": 2600, - "bidQty": 250, - "bidprice": 711, - "askQty": 50, - "askPrice": 725, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 27000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 325, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 2, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 27000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 13150, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1050.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 325, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 2, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 27000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 7200, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 4.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 27000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.85, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 27000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 27000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 27000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE27000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5425, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27050, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27050.00", - "openInterest": 302, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 841.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4200, - "bidQty": 625, - "bidprice": 3088.95, - "askQty": 625, - "askPrice": 3201.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27050.00", - "openInterest": 1938, - "changeinOpenInterest": 674, - "pchangeinOpenInterest": 53.3227848101266, - "totalTradedVolume": 5924, - "impliedVolatility": 34.52, - "lastPrice": 1, - "change": -0.6, - "pChange": -37.5, - "totalBuyQuantity": 68975, - "totalSellQuantity": 28075, - "bidQty": 2700, - "bidprice": 0.75, - "askQty": 750, - "askPrice": 1.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27050, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27050.00", - "openInterest": 1, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 864.7, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1000, - "bidQty": 1775, - "bidprice": 2813.75, - "askQty": 1000, - "askPrice": 3443.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27050, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27050.00", - "openInterest": 92, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 5.25, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 86750, - "totalSellQuantity": 1700, - "bidQty": 750, - "bidprice": 5.5, - "askQty": 300, - "askPrice": 10.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27100.00", - "openInterest": 5893, - "changeinOpenInterest": 3523, - "pchangeinOpenInterest": 148.649789029536, - "totalTradedVolume": 33932, - "impliedVolatility": 34.24, - "lastPrice": 0.8, - "change": -0.75, - "pChange": -48.3870967741935, - "totalBuyQuantity": 470750, - "totalSellQuantity": 55275, - "bidQty": 2025, - "bidprice": 0.75, - "askQty": 8250, - "askPrice": 0.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27100.00", - "openInterest": 79, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 56.07, - "lastPrice": 3180, - "change": -404.6, - "pChange": -11.2871729063215, - "totalBuyQuantity": 5325, - "totalSellQuantity": 5300, - "bidQty": 50, - "bidprice": 3159.4, - "askQty": 50, - "askPrice": 3208.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27100, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27100.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2367.15, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2800, - "bidQty": 1775, - "bidprice": 2900.9, - "askQty": 1000, - "askPrice": 3370.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27100, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27100.00", - "openInterest": 92, - "changeinOpenInterest": 45, - "pchangeinOpenInterest": 95.7446808510638, - "totalTradedVolume": 73, - "impliedVolatility": 17.4, - "lastPrice": 6.85, - "change": 2, - "pChange": 41.2371134020619, - "totalBuyQuantity": 34200, - "totalSellQuantity": 3200, - "bidQty": 225, - "bidprice": 5.5, - "askQty": 600, - "askPrice": 11.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27150.00", - "openInterest": 2656, - "changeinOpenInterest": 442, - "pchangeinOpenInterest": 19.9638663053297, - "totalTradedVolume": 6086, - "impliedVolatility": 34.7, - "lastPrice": 0.8, - "change": -0.75, - "pChange": -48.3870967741935, - "totalBuyQuantity": 80750, - "totalSellQuantity": 24325, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 650, - "askPrice": 0.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27150.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3625.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 900, - "bidprice": 2866.65, - "askQty": 1000, - "askPrice": 3361.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27150, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27150.00", - "openInterest": 99, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 4.21052631578947, - "totalTradedVolume": 8, - "impliedVolatility": 17.35, - "lastPrice": 6.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 23375, - "totalSellQuantity": 3775, - "bidQty": 900, - "bidprice": 4.4, - "askQty": 600, - "askPrice": 11, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27150, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27150.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2909.3, - "askQty": 1000, - "askPrice": 3556.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27200.00", - "openInterest": 112, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -7.43801652892562, - "totalTradedVolume": 23, - "impliedVolatility": 57.45, - "lastPrice": 3280, - "change": -89.9000000000001, - "pChange": -2.66773494762456, - "totalBuyQuantity": 3975, - "totalSellQuantity": 3950, - "bidQty": 75, - "bidprice": 3268.85, - "askQty": 50, - "askPrice": 3319.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27200.00", - "openInterest": 4556, - "changeinOpenInterest": 383, - "pchangeinOpenInterest": 9.17804936496525, - "totalTradedVolume": 8457, - "impliedVolatility": 35.74, - "lastPrice": 0.95, - "change": -0.5, - "pChange": -34.4827586206897, - "totalBuyQuantity": 177000, - "totalSellQuantity": 26800, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 1625, - "askPrice": 0.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27200, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27200.00", - "openInterest": 3, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 200, - "totalTradedVolume": 2, - "impliedVolatility": 44.59, - "lastPrice": 3400, - "change": 700, - "pChange": 25.9259259259259, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 2988.75, - "askQty": 1775, - "askPrice": 3576.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27200, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27200.00", - "openInterest": 226, - "changeinOpenInterest": 26, - "pchangeinOpenInterest": 13, - "totalTradedVolume": 71, - "impliedVolatility": 17.74, - "lastPrice": 6.5, - "change": -1.7, - "pChange": -20.7317073170732, - "totalBuyQuantity": 105400, - "totalSellQuantity": 2975, - "bidQty": 1500, - "bidprice": 4.3, - "askQty": 500, - "askPrice": 10.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27250, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3285.6, - "askQty": 625, - "askPrice": 3401.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27250.00", - "openInterest": 1667, - "changeinOpenInterest": 477, - "pchangeinOpenInterest": 40.0840336134454, - "totalTradedVolume": 3737, - "impliedVolatility": 35.4, - "lastPrice": 0.75, - "change": -0.75, - "pChange": -50, - "totalBuyQuantity": 103825, - "totalSellQuantity": 30725, - "bidQty": 8750, - "bidprice": 0.7, - "askQty": 750, - "askPrice": 1.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27250, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27250.00", - "openInterest": 26, - "changeinOpenInterest": 9, - "pchangeinOpenInterest": 52.9411764705882, - "totalTradedVolume": 9, - "impliedVolatility": 18.78, - "lastPrice": 8.9, - "change": -1.2, - "pChange": -11.8811881188119, - "totalBuyQuantity": 26225, - "totalSellQuantity": 3075, - "bidQty": 100, - "bidprice": 4.1, - "askQty": 600, - "askPrice": 9.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27250, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 3033.6, - "askQty": 1000, - "askPrice": 3677.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27300.00", - "openInterest": 4323, - "changeinOpenInterest": 1394, - "pchangeinOpenInterest": 47.5930351655855, - "totalTradedVolume": 15280, - "impliedVolatility": 35.85, - "lastPrice": 0.75, - "change": -0.8, - "pChange": -51.6129032258065, - "totalBuyQuantity": 243425, - "totalSellQuantity": 45125, - "bidQty": 4225, - "bidprice": 0.75, - "askQty": 50, - "askPrice": 0.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27300.00", - "openInterest": 12, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -7.69230769230769, - "totalTradedVolume": 9, - "impliedVolatility": 69.71, - "lastPrice": 3420, - "change": -221, - "pChange": -6.06976105465531, - "totalBuyQuantity": 5550, - "totalSellQuantity": 5525, - "bidQty": 625, - "bidprice": 3342.8, - "askQty": 350, - "askPrice": 3419.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27300, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27300.00", - "openInterest": 274, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.363636363636364, - "totalTradedVolume": 2, - "impliedVolatility": 18.01, - "lastPrice": 6, - "change": -0.0499999999999998, - "pChange": -0.826446280991733, - "totalBuyQuantity": 35550, - "totalSellQuantity": 7850, - "bidQty": 800, - "bidprice": 5, - "askQty": 500, - "askPrice": 9.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27300, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27300.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 29.57, - "lastPrice": 3230, - "change": 480, - "pChange": 17.4545454545455, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 3063.4, - "askQty": 1000, - "askPrice": 3740.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2925, - "bidQty": 1775, - "bidprice": 3287.75, - "askQty": 250, - "askPrice": 3567, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27350.00", - "openInterest": 2410, - "changeinOpenInterest": 695, - "pchangeinOpenInterest": 40.5247813411079, - "totalTradedVolume": 5677, - "impliedVolatility": 36.07, - "lastPrice": 0.7, - "change": -0.8, - "pChange": -53.3333333333333, - "totalBuyQuantity": 106100, - "totalSellQuantity": 26625, - "bidQty": 7175, - "bidprice": 0.7, - "askQty": 50, - "askPrice": 1.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27350, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27350.00", - "openInterest": 12, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 3, - "impliedVolatility": 19.05, - "lastPrice": 8.25, - "change": 0.75, - "pChange": 10, - "totalBuyQuantity": 32775, - "totalSellQuantity": 7050, - "bidQty": 800, - "bidprice": 4.7, - "askQty": 500, - "askPrice": 9.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27350, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 3121.95, - "askQty": 1000, - "askPrice": 3780.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27400.00", - "openInterest": 27, - "changeinOpenInterest": -7, - "pchangeinOpenInterest": -20.5882352941177, - "totalTradedVolume": 9, - "impliedVolatility": 73.4, - "lastPrice": 3530, - "change": -242, - "pChange": -6.41569459172853, - "totalBuyQuantity": 4300, - "totalSellQuantity": 5125, - "bidQty": 275, - "bidprice": 3449.4, - "askQty": 25, - "askPrice": 3521.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27400.00", - "openInterest": 8737, - "changeinOpenInterest": 2778, - "pchangeinOpenInterest": 46.6185601611009, - "totalTradedVolume": 28785, - "impliedVolatility": 36.75, - "lastPrice": 0.75, - "change": -0.7, - "pChange": -48.2758620689655, - "totalBuyQuantity": 331075, - "totalSellQuantity": 31625, - "bidQty": 1850, - "bidprice": 0.75, - "askQty": 2500, - "askPrice": 0.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27400, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27400.00", - "openInterest": 56, - "changeinOpenInterest": -5, - "pchangeinOpenInterest": -8.19672131147541, - "totalTradedVolume": 10, - "impliedVolatility": 18.34, - "lastPrice": 5.7, - "change": -1.6, - "pChange": -21.9178082191781, - "totalBuyQuantity": 30850, - "totalSellQuantity": 8650, - "bidQty": 475, - "bidprice": 5.6, - "askQty": 600, - "askPrice": 10.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27400, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27400.00", - "openInterest": 7, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 7, - "impliedVolatility": 33.68, - "lastPrice": 3375, - "change": 525, - "pChange": 18.4210526315789, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 3157.25, - "askQty": 900, - "askPrice": 3711.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27450, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27450.00", - "openInterest": 12, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2860, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3476.25, - "askQty": 625, - "askPrice": 3600.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27450.00", - "openInterest": 10825, - "changeinOpenInterest": 752, - "pchangeinOpenInterest": 7.46550183659287, - "totalTradedVolume": 15884, - "impliedVolatility": 37.64, - "lastPrice": 0.85, - "change": -0.7, - "pChange": -45.1612903225807, - "totalBuyQuantity": 144275, - "totalSellQuantity": 84350, - "bidQty": 3875, - "bidprice": 0.8, - "askQty": 225, - "askPrice": 0.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27450, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27450.00", - "openInterest": 30, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 10.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 27325, - "totalSellQuantity": 2900, - "bidQty": 800, - "bidprice": 4.7, - "askQty": 600, - "askPrice": 9.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27450, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27450.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 3271.1, - "askQty": 1775, - "askPrice": 3973.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27500.00", - "openInterest": 4279, - "changeinOpenInterest": -236, - "pchangeinOpenInterest": -5.22702104097453, - "totalTradedVolume": 291, - "impliedVolatility": 72.7, - "lastPrice": 3620.05, - "change": -520.8, - "pChange": -12.5771278843716, - "totalBuyQuantity": 6075, - "totalSellQuantity": 5375, - "bidQty": 50, - "bidprice": 3573.35, - "askQty": 50, - "askPrice": 3603.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27500.00", - "openInterest": 62295, - "changeinOpenInterest": 13031, - "pchangeinOpenInterest": 26.4513640792465, - "totalTradedVolume": 225638, - "impliedVolatility": 37.64, - "lastPrice": 0.75, - "change": -0.65, - "pChange": -46.4285714285714, - "totalBuyQuantity": 1354075, - "totalSellQuantity": 208850, - "bidQty": 109925, - "bidprice": 0.75, - "askQty": 4050, - "askPrice": 0.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27500, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27500.00", - "openInterest": 394, - "changeinOpenInterest": 107, - "pchangeinOpenInterest": 37.2822299651568, - "totalTradedVolume": 139, - "impliedVolatility": 28.56, - "lastPrice": 3403.05, - "change": -569.2, - "pChange": -14.3294102838442, - "totalBuyQuantity": 4050, - "totalSellQuantity": 6100, - "bidQty": 350, - "bidprice": 3386, - "askQty": 75, - "askPrice": 3454.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27500, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27500.00", - "openInterest": 4516, - "changeinOpenInterest": 286, - "pchangeinOpenInterest": 6.7612293144208, - "totalTradedVolume": 2005, - "impliedVolatility": 19.04, - "lastPrice": 6.3, - "change": 0.6, - "pChange": 10.5263157894737, - "totalBuyQuantity": 42750, - "totalSellQuantity": 13275, - "bidQty": 150, - "bidprice": 5.5, - "askQty": 25, - "askPrice": 6.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27550.00", - "openInterest": 16053, - "changeinOpenInterest": 7537, - "pchangeinOpenInterest": 88.5039924847346, - "totalTradedVolume": 48945, - "impliedVolatility": 38.54, - "lastPrice": 0.85, - "change": -0.55, - "pChange": -39.2857142857143, - "totalBuyQuantity": 120975, - "totalSellQuantity": 97250, - "bidQty": 6800, - "bidprice": 0.7, - "askQty": 5500, - "askPrice": 0.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27550.00", - "openInterest": 13, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2990, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 900, - "bidprice": 3376.15, - "askQty": 3025, - "askPrice": 3940.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27550, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27550.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3200, - "totalSellQuantity": 1775, - "bidQty": 1775, - "bidprice": 3172.85, - "askQty": 1775, - "askPrice": 4075.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27550, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27550.00", - "openInterest": 73, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 6.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 28625, - "totalSellQuantity": 1300, - "bidQty": 900, - "bidprice": 3.25, - "askQty": 600, - "askPrice": 9.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27600, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27600.00", - "openInterest": 14, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -6.66666666666667, - "totalTradedVolume": 9, - "impliedVolatility": 69.13, - "lastPrice": 3700, - "change": -371.65, - "pChange": -9.12774919258777, - "totalBuyQuantity": 5475, - "totalSellQuantity": 5475, - "bidQty": 375, - "bidprice": 3644.35, - "askQty": 900, - "askPrice": 3748.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27600.00", - "openInterest": 10775, - "changeinOpenInterest": 3170, - "pchangeinOpenInterest": 41.6831032215648, - "totalTradedVolume": 31877, - "impliedVolatility": 38.53, - "lastPrice": 0.75, - "change": -0.7, - "pChange": -48.2758620689655, - "totalBuyQuantity": 328575, - "totalSellQuantity": 135975, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 3600, - "askPrice": 0.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27600, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27600.00", - "openInterest": 1, - "changeinOpenInterest": 1, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 30.85, - "lastPrice": 3520, - "change": 2139.95, - "pChange": 155.063222347016, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 3360.65, - "askQty": 1775, - "askPrice": 4124.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27600, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27600.00", - "openInterest": 12, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 5.5, - "change": -0.25, - "pChange": -4.34782608695652, - "totalBuyQuantity": 35825, - "totalSellQuantity": 4200, - "bidQty": 800, - "bidprice": 3.7, - "askQty": 300, - "askPrice": 9.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27650.00", - "openInterest": 14, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3705, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 3507.15, - "askQty": 625, - "askPrice": 3820, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27650.00", - "openInterest": 21271, - "changeinOpenInterest": 14007, - "pchangeinOpenInterest": 192.827643171806, - "totalTradedVolume": 72024, - "impliedVolatility": 38.97, - "lastPrice": 0.75, - "change": -0.65, - "pChange": -46.4285714285714, - "totalBuyQuantity": 184200, - "totalSellQuantity": 101425, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 2650, - "askPrice": 0.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27650, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 3409.1, - "askQty": 1775, - "askPrice": 4097.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27650, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27650.00", - "openInterest": 48, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 5.9, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 32525, - "totalSellQuantity": 4075, - "bidQty": 1500, - "bidprice": 3.3, - "askQty": 300, - "askPrice": 9.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27700, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27700.00", - "openInterest": 26, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 125.2, - "lastPrice": 4155.65, - "change": -24.3500000000004, - "pChange": -0.582535885167473, - "totalBuyQuantity": 4400, - "totalSellQuantity": 4250, - "bidQty": 100, - "bidprice": 3781.3, - "askQty": 100, - "askPrice": 3851.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27700.00", - "openInterest": 20535, - "changeinOpenInterest": 6516, - "pchangeinOpenInterest": 46.4797774448962, - "totalTradedVolume": 55861, - "impliedVolatility": 39.42, - "lastPrice": 0.75, - "change": -0.6, - "pChange": -44.4444444444445, - "totalBuyQuantity": 324325, - "totalSellQuantity": 112925, - "bidQty": 6875, - "bidprice": 0.7, - "askQty": 2450, - "askPrice": 0.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27700, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27700.00", - "openInterest": 126, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 7.05, - "change": -0.0499999999999998, - "pChange": -0.704225352112674, - "totalBuyQuantity": 21075, - "totalSellQuantity": 3300, - "bidQty": 900, - "bidprice": 3.8, - "askQty": 600, - "askPrice": 9.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27700, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27700.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1900, - "bidQty": 900, - "bidprice": 3117.95, - "askQty": 900, - "askPrice": 4152, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27750.00", - "openInterest": 66035, - "changeinOpenInterest": 52556, - "pchangeinOpenInterest": 389.910230729283, - "totalTradedVolume": 392941, - "impliedVolatility": 39.85, - "lastPrice": 0.75, - "change": -0.65, - "pChange": -46.4285714285714, - "totalBuyQuantity": 768475, - "totalSellQuantity": 699300, - "bidQty": 236475, - "bidprice": 0.7, - "askQty": 159725, - "askPrice": 0.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27750.00", - "openInterest": 10, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3746.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3795.55, - "askQty": 625, - "askPrice": 3903.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27750, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1900, - "bidQty": 1775, - "bidprice": 3518.4, - "askQty": 900, - "askPrice": 4204, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27750, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27750.00", - "openInterest": 48, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 9.09090909090909, - "totalTradedVolume": 7, - "impliedVolatility": 19.77, - "lastPrice": 5.4, - "change": -2.65, - "pChange": -32.9192546583851, - "totalBuyQuantity": 26975, - "totalSellQuantity": 4100, - "bidQty": 1800, - "bidprice": 4.2, - "askQty": 800, - "askPrice": 12.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27800.00", - "openInterest": 50518, - "changeinOpenInterest": 7235, - "pchangeinOpenInterest": 16.7155696231777, - "totalTradedVolume": 105779, - "impliedVolatility": 40.29, - "lastPrice": 0.75, - "change": -0.5, - "pChange": -40, - "totalBuyQuantity": 429875, - "totalSellQuantity": 52500, - "bidQty": 2525, - "bidprice": 0.75, - "askQty": 375, - "askPrice": 0.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27800.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 4242.1, - "change": 1.45000000000073, - "pChange": 0.0341928713758676, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3845, - "askQty": 625, - "askPrice": 3952.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27800, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 27800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27800.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1000, - "bidQty": 1775, - "bidprice": 3562.8, - "askQty": 1000, - "askPrice": 4259.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27800, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27800.00", - "openInterest": 126, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 6.15, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 75450, - "totalSellQuantity": 2800, - "bidQty": 1800, - "bidprice": 4.3, - "askQty": 500, - "askPrice": 11, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27850.00", - "openInterest": 51594, - "changeinOpenInterest": 12935, - "pchangeinOpenInterest": 33.4592203626581, - "totalTradedVolume": 127715, - "impliedVolatility": 40.48, - "lastPrice": 0.7, - "change": -0.55, - "pChange": -44, - "totalBuyQuantity": 549175, - "totalSellQuantity": 82400, - "bidQty": 36400, - "bidprice": 0.7, - "askQty": 5875, - "askPrice": 0.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 129.33, - "lastPrice": 4317.15, - "change": -93.1000000000004, - "pChange": -2.11099144039454, - "totalBuyQuantity": 5200, - "totalSellQuantity": 4850, - "bidQty": 50, - "bidprice": 3898.25, - "askQty": 550, - "askPrice": 4032.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27850, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27850.00", - "openInterest": 153, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 6.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 31825, - "totalSellQuantity": 2775, - "bidQty": 1800, - "bidprice": 4.3, - "askQty": 500, - "askPrice": 11, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27850, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1000, - "bidQty": 1775, - "bidprice": 3641.05, - "askQty": 1000, - "askPrice": 4310.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27900.00", - "openInterest": 105, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 4361.8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4950, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3931.95, - "askQty": 625, - "askPrice": 4053.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27900.00", - "openInterest": 112821, - "changeinOpenInterest": 18218, - "pchangeinOpenInterest": 19.2573174212234, - "totalTradedVolume": 327682, - "impliedVolatility": 41.17, - "lastPrice": 0.75, - "change": -0.55, - "pChange": -42.3076923076923, - "totalBuyQuantity": 1540200, - "totalSellQuantity": 452925, - "bidQty": 205075, - "bidprice": 0.7, - "askQty": 143900, - "askPrice": 0.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27900, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27900.00", - "openInterest": 175, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 4.16666666666667, - "totalTradedVolume": 118, - "impliedVolatility": 20.23, - "lastPrice": 5, - "change": -1.25, - "pChange": -20, - "totalBuyQuantity": 32375, - "totalSellQuantity": 5175, - "bidQty": 400, - "bidprice": 5, - "askQty": 500, - "askPrice": 9.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27900, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27900.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1900, - "bidQty": 1775, - "bidprice": 3683.7, - "askQty": 900, - "askPrice": 4361.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27950.00", - "openInterest": 5, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -16.6666666666667, - "totalTradedVolume": 1, - "impliedVolatility": 123.19, - "lastPrice": 4350, - "change": -80, - "pChange": -1.8058690744921, - "totalBuyQuantity": 5150, - "totalSellQuantity": 4550, - "bidQty": 225, - "bidprice": 4027.05, - "askQty": 300, - "askPrice": 4110.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27950.00", - "openInterest": 146886, - "changeinOpenInterest": 26503, - "pchangeinOpenInterest": 22.015566982049, - "totalTradedVolume": 725475, - "impliedVolatility": 41.34, - "lastPrice": 0.7, - "change": -0.55, - "pChange": -44, - "totalBuyQuantity": 2808475, - "totalSellQuantity": 414100, - "bidQty": 456200, - "bidprice": 0.7, - "askQty": 11425, - "askPrice": 0.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27950, - "expiryDate": "26-Dec-2024", - "CE": { - "strikePrice": 27950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE27950.00", - "openInterest": 273, - "changeinOpenInterest": -18, - "pchangeinOpenInterest": -6.18556701030928, - "totalTradedVolume": 133, - "impliedVolatility": 20.49, - "lastPrice": 5.1, - "change": -0.550000000000001, - "pChange": -9.7345132743363, - "totalBuyQuantity": 31425, - "totalSellQuantity": 3575, - "bidQty": 700, - "bidprice": 4.25, - "askQty": 500, - "askPrice": 9.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27950, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE27950.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 1900, - "bidQty": 1775, - "bidprice": 3729.05, - "askQty": 900, - "askPrice": 4423.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 28000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE28000.00", - "openInterest": 10925, - "changeinOpenInterest": 519, - "pchangeinOpenInterest": 4.98750720738036, - "totalTradedVolume": 802, - "impliedVolatility": 33.6, - "lastPrice": 3919.65, - "change": -528.1, - "pChange": -11.8734191445113, - "totalBuyQuantity": 6500, - "totalSellQuantity": 4525, - "bidQty": 750, - "bidprice": 3882.05, - "askQty": 50, - "askPrice": 3916, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 28000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE28000.00", - "openInterest": 33394, - "changeinOpenInterest": -262, - "pchangeinOpenInterest": -0.778464463988591, - "totalTradedVolume": 7544, - "impliedVolatility": 20.79, - "lastPrice": 5.25, - "change": 0.0499999999999998, - "pChange": 0.961538461538458, - "totalBuyQuantity": 59775, - "totalSellQuantity": 19050, - "bidQty": 200, - "bidprice": 5.25, - "askQty": 900, - "askPrice": 5.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 28000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE28000.00", - "openInterest": 4787, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 110, - "impliedVolatility": 22.06, - "lastPrice": 3445.3, - "change": -476.4, - "pChange": -12.1477930489329, - "totalBuyQuantity": 1850, - "totalSellQuantity": 2150, - "bidQty": 25, - "bidprice": 3445, - "askQty": 25, - "askPrice": 3480.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 28000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE28000.00", - "openInterest": 17991, - "changeinOpenInterest": -506, - "pchangeinOpenInterest": -2.73557874249878, - "totalTradedVolume": 2108, - "impliedVolatility": 12.8, - "lastPrice": 39, - "change": 6.05, - "pChange": 18.361153262519, - "totalBuyQuantity": 18575, - "totalSellQuantity": 4150, - "bidQty": 150, - "bidprice": 39, - "askQty": 50, - "askPrice": 41.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "26-Jun-2025", - "CE": { - "strikePrice": 28000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE28000.00", - "openInterest": 1303, - "changeinOpenInterest": 72, - "pchangeinOpenInterest": 5.84890333062551, - "totalTradedVolume": 283, - "impliedVolatility": 10.6, - "lastPrice": 112, - "change": 20.3, - "pChange": 22.1374045801527, - "totalBuyQuantity": 11400, - "totalSellQuantity": 2800, - "bidQty": 100, - "bidprice": 112, - "askQty": 100, - "askPrice": 115.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 28000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 2430.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 28000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 28000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 1920.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 28000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE28000.00", - "openInterest": 2101, - "changeinOpenInterest": 183, - "pchangeinOpenInterest": 9.54118873826903, - "totalTradedVolume": 490, - "impliedVolatility": 9.1, - "lastPrice": 446, - "change": 83.85, - "pChange": 23.1533894794975, - "totalBuyQuantity": 8525, - "totalSellQuantity": 2975, - "bidQty": 150, - "bidprice": 442, - "askQty": 200, - "askPrice": 444, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 28000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE28000.00", - "openInterest": 2205, - "changeinOpenInterest": 74, - "pchangeinOpenInterest": 3.47254809948381, - "totalTradedVolume": 153, - "impliedVolatility": 19.64, - "lastPrice": 2660, - "change": -350, - "pChange": -11.6279069767442, - "totalBuyQuantity": 1975, - "totalSellQuantity": 2400, - "bidQty": 25, - "bidprice": 2607.55, - "askQty": 75, - "askPrice": 2641.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 28000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 28000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "31-Dec-2026", - "CE": { - "strikePrice": 28000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 2, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 28000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1275.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 28000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 10800, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 2.25, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 28000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027CE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 28000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 28000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 28000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.25, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 28000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 28000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE28000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5425, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 2.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 29000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE29000.00", - "openInterest": 20714, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 0.0193143408981169, - "totalTradedVolume": 217, - "impliedVolatility": 43.43, - "lastPrice": 4954.85, - "change": -507, - "pChange": -9.28256909288977, - "totalBuyQuantity": 4575, - "totalSellQuantity": 4100, - "bidQty": 25, - "bidprice": 4887.25, - "askQty": 25, - "askPrice": 4954.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 29000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE29000.00", - "openInterest": 26758, - "changeinOpenInterest": -144, - "pchangeinOpenInterest": -0.535276187644041, - "totalTradedVolume": 1993, - "impliedVolatility": 24.29, - "lastPrice": 4.15, - "change": -0.8, - "pChange": -16.1616161616162, - "totalBuyQuantity": 45800, - "totalSellQuantity": 14625, - "bidQty": 2275, - "bidprice": 4.05, - "askQty": 1500, - "askPrice": 4.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 29000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE29000.00", - "openInterest": 766, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0.261780104712042, - "totalTradedVolume": 7, - "impliedVolatility": 29.2, - "lastPrice": 4536, - "change": -333, - "pChange": -6.83918669131239, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4030.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 29000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE29000.00", - "openInterest": 3347, - "changeinOpenInterest": -664, - "pchangeinOpenInterest": -16.5544751932187, - "totalTradedVolume": 2215, - "impliedVolatility": 14.53, - "lastPrice": 26.35, - "change": 2.7, - "pChange": 11.4164904862579, - "totalBuyQuantity": 14800, - "totalSellQuantity": 5200, - "bidQty": 1100, - "bidprice": 21.2, - "askQty": 50, - "askPrice": 28, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 29000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 3395.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 29000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE29000.00", - "openInterest": 1236, - "changeinOpenInterest": -20, - "pchangeinOpenInterest": -1.59235668789809, - "totalTradedVolume": 43, - "impliedVolatility": 11.57, - "lastPrice": 66, - "change": 10.15, - "pChange": 18.1736794986571, - "totalBuyQuantity": 11475, - "totalSellQuantity": 1975, - "bidQty": 25, - "bidprice": 62, - "askQty": 500, - "askPrice": 70, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 29000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 29000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 2805.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 29000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE29000.00", - "openInterest": 665, - "changeinOpenInterest": 44, - "pchangeinOpenInterest": 7.085346215781, - "totalTradedVolume": 119, - "impliedVolatility": 9.33, - "lastPrice": 259, - "change": 50.85, - "pChange": 24.4294979582032, - "totalBuyQuantity": 1275, - "totalSellQuantity": 1350, - "bidQty": 25, - "bidprice": 249.2, - "askQty": 25, - "askPrice": 259, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 29000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE29000.00", - "openInterest": 37, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3800, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 275, - "totalSellQuantity": 600, - "bidQty": 25, - "bidprice": 2519.85, - "askQty": 25, - "askPrice": 4240.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 29000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 29000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "31-Dec-2026", - "CE": { - "strikePrice": 29000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 29000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1600.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "24-Jun-2027", - "CE": { - "strikePrice": 29000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027CE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 29000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "30-Dec-2027", - "CE": { - "strikePrice": 29000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027CE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 29000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 29000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 2.25, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 29000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 29000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 29000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE29000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5425, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.75, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 30000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE30000.00", - "openInterest": 1036, - "changeinOpenInterest": -22, - "pchangeinOpenInterest": -2.07939508506616, - "totalTradedVolume": 45, - "impliedVolatility": 46.47, - "lastPrice": 5916.65, - "change": -485.5, - "pChange": -7.58338995493701, - "totalBuyQuantity": 4325, - "totalSellQuantity": 4425, - "bidQty": 25, - "bidprice": 5874.5, - "askQty": 25, - "askPrice": 5935.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 30000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE30000.00", - "openInterest": 25466, - "changeinOpenInterest": -461, - "pchangeinOpenInterest": -1.77806919427624, - "totalTradedVolume": 3280, - "impliedVolatility": 27.42, - "lastPrice": 3.25, - "change": -1.35, - "pChange": -29.3478260869565, - "totalBuyQuantity": 39000, - "totalSellQuantity": 24875, - "bidQty": 1400, - "bidprice": 3.25, - "askQty": 3600, - "askPrice": 3.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 30000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE30000.00", - "openInterest": 70, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 5150, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 30000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE30000.00", - "openInterest": 6869, - "changeinOpenInterest": -81, - "pchangeinOpenInterest": -1.16546762589928, - "totalTradedVolume": 692, - "impliedVolatility": 15.81, - "lastPrice": 16.45, - "change": -0.650000000000002, - "pChange": -3.80116959064329, - "totalBuyQuantity": 17725, - "totalSellQuantity": 4600, - "bidQty": 600, - "bidprice": 15.85, - "askQty": 275, - "askPrice": 16.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "26-Jun-2025", - "PE": { - "strikePrice": 30000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4315.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 30000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6900, - "totalSellQuantity": 0, - "bidQty": 1800, - "bidprice": 5.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "25-Sep-2025", - "CE": { - "strikePrice": 30000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 30000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 3745.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "24-Dec-2025", - "PE": { - "strikePrice": 30000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE30000.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 4100, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 50, - "bidQty": 25, - "bidprice": 4001.15, - "askQty": 25, - "askPrice": 4999.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 30000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE30000.00", - "openInterest": 542, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 0.37037037037037, - "totalTradedVolume": 92, - "impliedVolatility": 10.24, - "lastPrice": 183, - "change": 23, - "pChange": 14.375, - "totalBuyQuantity": 1475, - "totalSellQuantity": 1900, - "bidQty": 150, - "bidprice": 175.35, - "askQty": 100, - "askPrice": 185, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "25-Jun-2026", - "CE": { - "strikePrice": 30000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 30000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 30000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 1950.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 30000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "24-Jun-2027", - "PE": { - "strikePrice": 30000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 30000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "30-Dec-2027", - "CE": { - "strikePrice": 30000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 30000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "29-Jun-2028", - "CE": { - "strikePrice": 30000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028CE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 30000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "28-Dec-2028", - "PE": { - "strikePrice": 30000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.65, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 30000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 30000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE30000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5425, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 2.35, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "26-Dec-2024", - "PE": { - "strikePrice": 31000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024PE31000.00", - "openInterest": 2326, - "changeinOpenInterest": 1415, - "pchangeinOpenInterest": 155.323819978046, - "totalTradedVolume": 6623, - "impliedVolatility": 52.04, - "lastPrice": 6910.65, - "change": -489.35, - "pChange": -6.61283783783784, - "totalBuyQuantity": 4050, - "totalSellQuantity": 5050, - "bidQty": 25, - "bidprice": 6863.75, - "askQty": 25, - "askPrice": 6909.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "26-Dec-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-12-2024CE31000.00", - "openInterest": 12345, - "changeinOpenInterest": 191, - "pchangeinOpenInterest": 1.57149909494817, - "totalTradedVolume": 7317, - "impliedVolatility": 31.46, - "lastPrice": 3.7, - "change": -0.9, - "pChange": -19.5652173913043, - "totalBuyQuantity": 72575, - "totalSellQuantity": 32950, - "bidQty": 2625, - "bidprice": 3.2, - "askQty": 1650, - "askPrice": 3.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "27-Mar-2025", - "PE": { - "strikePrice": 31000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "27-Mar-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY27-03-2025CE31000.00", - "openInterest": 790, - "changeinOpenInterest": -16, - "pchangeinOpenInterest": -1.98511166253102, - "totalTradedVolume": 88, - "impliedVolatility": 17.07, - "lastPrice": 11.05, - "change": -0.75, - "pChange": -6.35593220338983, - "totalBuyQuantity": 11825, - "totalSellQuantity": 250, - "bidQty": 200, - "bidprice": 11.3, - "askQty": 75, - "askPrice": 14, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "26-Jun-2025", - "CE": { - "strikePrice": 31000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 6900, - "totalSellQuantity": 0, - "bidQty": 1800, - "bidprice": 2.5, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 31000, - "expiryDate": "26-Jun-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY26-06-2025PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 5245.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "25-Sep-2025", - "PE": { - "strikePrice": 31000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4710.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "25-Sep-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-09-2025CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "24-Dec-2025", - "CE": { - "strikePrice": 31000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025CE31000.00", - "openInterest": 178, - "changeinOpenInterest": 19, - "pchangeinOpenInterest": 11.9496855345912, - "totalTradedVolume": 36, - "impliedVolatility": 11, - "lastPrice": 130, - "change": 5, - "pChange": 4, - "totalBuyQuantity": 1075, - "totalSellQuantity": 400, - "bidQty": 25, - "bidprice": 130, - "askQty": 100, - "askPrice": 144, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 31000, - "expiryDate": "24-Dec-2025", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-12-2025PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 25, - "totalSellQuantity": 0, - "bidQty": 25, - "bidprice": 4080.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "25-Jun-2026", - "PE": { - "strikePrice": 31000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "25-Jun-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY25-06-2026CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "31-Dec-2026", - "PE": { - "strikePrice": 31000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 250, - "totalSellQuantity": 0, - "bidQty": 250, - "bidprice": 2325.05, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "31-Dec-2026", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY31-12-2026CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 350, - "totalSellQuantity": 0, - "bidQty": 300, - "bidprice": 1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "24-Jun-2027", - "CE": { - "strikePrice": 31000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 31000, - "expiryDate": "24-Jun-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY24-06-2027PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "30-Dec-2027", - "PE": { - "strikePrice": 31000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "30-Dec-2027", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY30-12-2027CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "29-Jun-2028", - "PE": { - "strikePrice": 31000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 0, - "totalSellQuantity": 0, - "bidQty": 0, - "bidprice": 0, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 31000, - "expiryDate": "29-Jun-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY29-06-2028CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "28-Dec-2028", - "CE": { - "strikePrice": 31000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028CE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 50, - "totalSellQuantity": 0, - "bidQty": 50, - "bidprice": 0.1, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 31000, - "expiryDate": "28-Dec-2028", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-12-2028PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5400, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.15, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 31000, - "expiryDate": "28-Jun-2029", - "PE": { - "strikePrice": 31000, - "expiryDate": "28-Jun-2029", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-06-2029PE31000.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 5425, - "totalSellQuantity": 0, - "bidQty": 5400, - "bidprice": 1.45, - "askQty": 0, - "askPrice": 0, - "underlyingValue": 23907.25 - } - } - ], - "timestamp": "22-Nov-2024 15:30:00", - "underlyingValue": 23907.25, - "strikePrices": [12000, 13000, 14000, 15000, 16000, 16500, 17000, 18000, 18500, 19000, 19500, 20000, 21000, 21600, 21650, 21700, 21750, 21800, 21850, 21900, 21950, 22000, 22050, 22100, 22150, 22200, 22250, 22300, 22350, 22400, 22450, 22500, 22550, 22600, 22650, 22700, 22750, 22800, 22850, 22900, 22950, 23000, 23050, 23100, 23150, 23200, 23250, 23300, 23350, 23400, 23450, 23500, 23550, 23600, 23650, 23700, 23750, 23800, 23850, 23900, 23950, 24000, 24050, 24100, 24150, 24200, 24250, 24300, 24350, 24400, 24450, 24500, 24550, 24600, 24650, 24700, 24750, 24800, 24850, 24900, 24950, 25000, 25050, 25100, 25150, 25200, 25250, 25300, 25350, 25400, 25450, 25500, 25550, 25600, 25650, 25700, 25750, 25800, 25850, 25900, 25950, 26000, 26050, 26100, 26150, 26200, 26250, 26300, 26350, 26400, 26450, 26500, 26550, 26600, 26650, 26700, 26750, 26800, 26850, 26900, 26950, 27000, 27050, 27100, 27150, 27200, 27250, 27300, 27350, 27400, 27450, 27500, 27550, 27600, 27650, 27700, 27750, 27800, 27850, 27900, 27950, 28000, 29000, 30000, 31000] - }, - "filtered": { - "data": [ - { - "strikePrice": 21600, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21600.00", - "openInterest": 170799, - "changeinOpenInterest": 170799, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1251412, - "impliedVolatility": 32.5, - "lastPrice": 2.05, - "change": -12.35, - "pChange": -85.7638888888889, - "totalBuyQuantity": 1114350, - "totalSellQuantity": 99125, - "bidQty": 475, - "bidprice": 2.05, - "askQty": 1050, - "askPrice": 2.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21600.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2164.8, - "askQty": 1000, - "askPrice": 2433.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21650, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21650.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 1775, - "totalSellQuantity": 2775, - "bidQty": 1775, - "bidprice": 2117.25, - "askQty": 1000, - "askPrice": 2382.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21650.00", - "openInterest": 27527, - "changeinOpenInterest": 27527, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 352050, - "impliedVolatility": 32.29, - "lastPrice": 2.3, - "change": -13.25, - "pChange": -85.2090032154341, - "totalBuyQuantity": 127825, - "totalSellQuantity": 31150, - "bidQty": 600, - "bidprice": 2.2, - "askQty": 1500, - "askPrice": 2.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21700, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21700.00", - "openInterest": 318402, - "changeinOpenInterest": 56264, - "pchangeinOpenInterest": 21.4635039559316, - "totalTradedVolume": 969104, - "impliedVolatility": 32.11, - "lastPrice": 2.6, - "change": -1.65, - "pChange": -38.8235294117647, - "totalBuyQuantity": 1143850, - "totalSellQuantity": 111500, - "bidQty": 2100, - "bidprice": 2.5, - "askQty": 1200, - "askPrice": 2.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21700.00", - "openInterest": 9, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 0, - "lastPrice": 2235, - "change": 545, - "pChange": 32.2485207100592, - "totalBuyQuantity": 5550, - "totalSellQuantity": 5550, - "bidQty": 225, - "bidprice": 2142.9, - "askQty": 75, - "askPrice": 2241.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21750.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2041.55, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 1919.5, - "askQty": 1000, - "askPrice": 2250.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21750.00", - "openInterest": 52721, - "changeinOpenInterest": 16931, - "pchangeinOpenInterest": 47.3065101983794, - "totalTradedVolume": 185028, - "impliedVolatility": 31.66, - "lastPrice": 2.75, - "change": -1.8, - "pChange": -39.5604395604396, - "totalBuyQuantity": 132800, - "totalSellQuantity": 19900, - "bidQty": 50, - "bidprice": 2.65, - "askQty": 275, - "askPrice": 2.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21800, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21800.00", - "openInterest": 146752, - "changeinOpenInterest": 30088, - "pchangeinOpenInterest": 25.7903037783721, - "totalTradedVolume": 456356, - "impliedVolatility": 31.13, - "lastPrice": 2.85, - "change": -1.75, - "pChange": -38.0434782608696, - "totalBuyQuantity": 224200, - "totalSellQuantity": 35350, - "bidQty": 750, - "bidprice": 2.75, - "askQty": 5075, - "askPrice": 3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21800.00", - "openInterest": 17, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 6, - "impliedVolatility": 0, - "lastPrice": 2070, - "change": 500, - "pChange": 31.8471337579618, - "totalBuyQuantity": 5525, - "totalSellQuantity": 5300, - "bidQty": 225, - "bidprice": 2057.3, - "askQty": 150, - "askPrice": 2115.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21850.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1510.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 1823.7, - "askQty": 625, - "askPrice": 2113.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21850.00", - "openInterest": 29719, - "changeinOpenInterest": 6317, - "pchangeinOpenInterest": 26.9934193658662, - "totalTradedVolume": 115146, - "impliedVolatility": 30.53, - "lastPrice": 2.9, - "change": -1.9, - "pChange": -39.5833333333333, - "totalBuyQuantity": 129275, - "totalSellQuantity": 13625, - "bidQty": 600, - "bidprice": 2.7, - "askQty": 625, - "askPrice": 3.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21900, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 21900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21900.00", - "openInterest": 6, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 200, - "totalTradedVolume": 5, - "impliedVolatility": 0, - "lastPrice": 1972.15, - "change": 512.15, - "pChange": 35.0787671232877, - "totalBuyQuantity": 5450, - "totalSellQuantity": 5275, - "bidQty": 100, - "bidprice": 1987.55, - "askQty": 900, - "askPrice": 2055.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 21900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21900.00", - "openInterest": 64241, - "changeinOpenInterest": 19322, - "pchangeinOpenInterest": 43.0152051470425, - "totalTradedVolume": 284141, - "impliedVolatility": 30.11, - "lastPrice": 3.1, - "change": -2.3, - "pChange": -42.5925925925926, - "totalBuyQuantity": 115200, - "totalSellQuantity": 17000, - "bidQty": 125, - "bidprice": 3.1, - "askQty": 625, - "askPrice": 3.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 21950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 21950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE21950.00", - "openInterest": 13536, - "changeinOpenInterest": 705, - "pchangeinOpenInterest": 5.49450549450549, - "totalTradedVolume": 90336, - "impliedVolatility": 29.62, - "lastPrice": 3.25, - "change": -2.5, - "pChange": -43.4782608695652, - "totalBuyQuantity": 105275, - "totalSellQuantity": 17425, - "bidQty": 750, - "bidprice": 2.8, - "askQty": 625, - "askPrice": 3.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 21950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE21950.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1534.8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 625, - "bidprice": 1879.35, - "askQty": 1000, - "askPrice": 2008.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22000.00", - "openInterest": 1560, - "changeinOpenInterest": -130, - "pchangeinOpenInterest": -7.69230769230769, - "totalTradedVolume": 1067, - "impliedVolatility": 0, - "lastPrice": 1895.65, - "change": 544.55, - "pChange": 40.304196580564, - "totalBuyQuantity": 7450, - "totalSellQuantity": 7000, - "bidQty": 75, - "bidprice": 1899.65, - "askQty": 250, - "askPrice": 1911.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22000.00", - "openInterest": 229969, - "changeinOpenInterest": 64138, - "pchangeinOpenInterest": 38.6767250996496, - "totalTradedVolume": 1098157, - "impliedVolatility": 29.28, - "lastPrice": 3.55, - "change": -3.05, - "pChange": -46.2121212121212, - "totalBuyQuantity": 1458850, - "totalSellQuantity": 117150, - "bidQty": 225, - "bidprice": 3.5, - "askQty": 325, - "askPrice": 3.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22050, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22050.00", - "openInterest": 8676, - "changeinOpenInterest": -823, - "pchangeinOpenInterest": -8.66406990209496, - "totalTradedVolume": 166227, - "impliedVolatility": 28.54, - "lastPrice": 3.5, - "change": -3.6, - "pChange": -50.7042253521127, - "totalBuyQuantity": 104050, - "totalSellQuantity": 11450, - "bidQty": 225, - "bidprice": 3.45, - "askQty": 1250, - "askPrice": 3.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22050.00", - "openInterest": 5, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1483.1, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 1797.55, - "askQty": 625, - "askPrice": 1906.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22100.00", - "openInterest": 83, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 2.46913580246914, - "totalTradedVolume": 5, - "impliedVolatility": 0, - "lastPrice": 1809.7, - "change": 535, - "pChange": 41.9706597630815, - "totalBuyQuantity": 5700, - "totalSellQuantity": 5950, - "bidQty": 225, - "bidprice": 1749.5, - "askQty": 50, - "askPrice": 1823.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22100.00", - "openInterest": 40647, - "changeinOpenInterest": 20424, - "pchangeinOpenInterest": 100.993917816348, - "totalTradedVolume": 390397, - "impliedVolatility": 27.9, - "lastPrice": 3.55, - "change": -4.4, - "pChange": -55.3459119496855, - "totalBuyQuantity": 172575, - "totalSellQuantity": 12225, - "bidQty": 200, - "bidprice": 3.55, - "askQty": 625, - "askPrice": 3.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22150.00", - "openInterest": 8, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1196.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4950, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 1702.75, - "askQty": 625, - "askPrice": 1805.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22150.00", - "openInterest": 12825, - "changeinOpenInterest": 3634, - "pchangeinOpenInterest": 39.5386791426395, - "totalTradedVolume": 107828, - "impliedVolatility": 27.67, - "lastPrice": 4, - "change": -4.65, - "pChange": -53.757225433526, - "totalBuyQuantity": 104825, - "totalSellQuantity": 7525, - "bidQty": 125, - "bidprice": 3.85, - "askQty": 1125, - "askPrice": 4.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22200.00", - "openInterest": 111586, - "changeinOpenInterest": 52617, - "pchangeinOpenInterest": 89.2282385660262, - "totalTradedVolume": 710783, - "impliedVolatility": 26.92, - "lastPrice": 3.95, - "change": -5.6, - "pChange": -58.6387434554974, - "totalBuyQuantity": 114975, - "totalSellQuantity": 28875, - "bidQty": 50, - "bidprice": 3.95, - "askQty": 1125, - "askPrice": 4.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22200.00", - "openInterest": 42, - "changeinOpenInterest": 3, - "pchangeinOpenInterest": 7.69230769230769, - "totalTradedVolume": 4, - "impliedVolatility": 0, - "lastPrice": 1530, - "change": 368.9, - "pChange": 31.7715959004392, - "totalBuyQuantity": 5600, - "totalSellQuantity": 5950, - "bidQty": 75, - "bidprice": 1698.3, - "askQty": 100, - "askPrice": 1719.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22250, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22250.00", - "openInterest": 23354, - "changeinOpenInterest": 7360, - "pchangeinOpenInterest": 46.0172564711767, - "totalTradedVolume": 165455, - "impliedVolatility": 26.72, - "lastPrice": 4.5, - "change": -6.25, - "pChange": -58.1395348837209, - "totalBuyQuantity": 169450, - "totalSellQuantity": 24125, - "bidQty": 250, - "bidprice": 4.45, - "askQty": 525, - "askPrice": 4.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22250.00", - "openInterest": 10, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 1290.35, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 1502.3, - "askQty": 1000, - "askPrice": 1716.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22300.00", - "openInterest": 142, - "changeinOpenInterest": 10, - "pchangeinOpenInterest": 7.57575757575758, - "totalTradedVolume": 45, - "impliedVolatility": 0, - "lastPrice": 1600, - "change": 538.15, - "pChange": 50.6804162546499, - "totalBuyQuantity": 5825, - "totalSellQuantity": 6050, - "bidQty": 275, - "bidprice": 1600.05, - "askQty": 900, - "askPrice": 1656.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22300.00", - "openInterest": 82519, - "changeinOpenInterest": 19315, - "pchangeinOpenInterest": 30.5597746978039, - "totalTradedVolume": 616706, - "impliedVolatility": 26.29, - "lastPrice": 4.85, - "change": -7.4, - "pChange": -60.4081632653061, - "totalBuyQuantity": 105100, - "totalSellQuantity": 25525, - "bidQty": 100, - "bidprice": 4.55, - "askQty": 1100, - "askPrice": 4.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22350.00", - "openInterest": 9141, - "changeinOpenInterest": -1037, - "pchangeinOpenInterest": -10.1886421693849, - "totalTradedVolume": 191795, - "impliedVolatility": 26.31, - "lastPrice": 5.85, - "change": -7.9, - "pChange": -57.4545454545455, - "totalBuyQuantity": 86650, - "totalSellQuantity": 18975, - "bidQty": 1175, - "bidprice": 5, - "askQty": 1125, - "askPrice": 5.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22350.00", - "openInterest": 6, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 0, - "lastPrice": 1444.15, - "change": 424.65, - "pChange": 41.6527709661599, - "totalBuyQuantity": 5050, - "totalSellQuantity": 5025, - "bidQty": 100, - "bidprice": 1537.8, - "askQty": 100, - "askPrice": 1571.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22400.00", - "openInterest": 82588, - "changeinOpenInterest": 31251, - "pchangeinOpenInterest": 60.8742232697664, - "totalTradedVolume": 699939, - "impliedVolatility": 25.2, - "lastPrice": 5.3, - "change": -10.3, - "pChange": -66.025641025641, - "totalBuyQuantity": 83525, - "totalSellQuantity": 36175, - "bidQty": 250, - "bidprice": 5.3, - "askQty": 1150, - "askPrice": 6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22400.00", - "openInterest": 210, - "changeinOpenInterest": 33, - "pchangeinOpenInterest": 18.6440677966102, - "totalTradedVolume": 222, - "impliedVolatility": 0, - "lastPrice": 1476.45, - "change": 513.8, - "pChange": 53.3735002337298, - "totalBuyQuantity": 5850, - "totalSellQuantity": 5225, - "bidQty": 150, - "bidprice": 1501.1, - "askQty": 50, - "askPrice": 1514.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22450, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22450.00", - "openInterest": 30606, - "changeinOpenInterest": 22246, - "pchangeinOpenInterest": 266.1004784689, - "totalTradedVolume": 303692, - "impliedVolatility": 24.72, - "lastPrice": 5.65, - "change": -11.85, - "pChange": -67.7142857142857, - "totalBuyQuantity": 92150, - "totalSellQuantity": 32950, - "bidQty": 50, - "bidprice": 5.65, - "askQty": 1000, - "askPrice": 6.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22450.00", - "openInterest": 655, - "changeinOpenInterest": -2, - "pchangeinOpenInterest": -0.30441400304414, - "totalTradedVolume": 90, - "impliedVolatility": 0, - "lastPrice": 1463.3, - "change": 543.9, - "pChange": 59.1581466173591, - "totalBuyQuantity": 5375, - "totalSellQuantity": 5325, - "bidQty": 25, - "bidprice": 1439.85, - "askQty": 75, - "askPrice": 1474.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22500.00", - "openInterest": 266048, - "changeinOpenInterest": 63660, - "pchangeinOpenInterest": 31.4544340573552, - "totalTradedVolume": 1400953, - "impliedVolatility": 24.82, - "lastPrice": 7, - "change": -13.35, - "pChange": -65.6019656019656, - "totalBuyQuantity": 908200, - "totalSellQuantity": 137075, - "bidQty": 8900, - "bidprice": 7, - "askQty": 50, - "askPrice": 7.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22500.00", - "openInterest": 17574, - "changeinOpenInterest": -2465, - "pchangeinOpenInterest": -12.301013024602, - "totalTradedVolume": 6780, - "impliedVolatility": 0, - "lastPrice": 1405, - "change": 541.8, - "pChange": 62.7664504170528, - "totalBuyQuantity": 10075, - "totalSellQuantity": 7175, - "bidQty": 50, - "bidprice": 1403.8, - "askQty": 75, - "askPrice": 1415.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22550.00", - "openInterest": 2978, - "changeinOpenInterest": 48, - "pchangeinOpenInterest": 1.6382252559727, - "totalTradedVolume": 171, - "impliedVolatility": 0, - "lastPrice": 1353.95, - "change": 525.55, - "pChange": 63.4415741187832, - "totalBuyQuantity": 7750, - "totalSellQuantity": 7150, - "bidQty": 150, - "bidprice": 1354.55, - "askQty": 150, - "askPrice": 1368.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22550.00", - "openInterest": 21505, - "changeinOpenInterest": 12363, - "pchangeinOpenInterest": 135.232990592868, - "totalTradedVolume": 289413, - "impliedVolatility": 24.29, - "lastPrice": 7.4, - "change": -15.75, - "pChange": -68.0345572354212, - "totalBuyQuantity": 78925, - "totalSellQuantity": 27200, - "bidQty": 25, - "bidprice": 7.65, - "askQty": 1000, - "askPrice": 8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22600, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22600.00", - "openInterest": 81478, - "changeinOpenInterest": 44424, - "pchangeinOpenInterest": 119.889890430183, - "totalTradedVolume": 821226, - "impliedVolatility": 24.07, - "lastPrice": 8.45, - "change": -18.15, - "pChange": -68.2330827067669, - "totalBuyQuantity": 81225, - "totalSellQuantity": 36500, - "bidQty": 1500, - "bidprice": 8.35, - "askQty": 550, - "askPrice": 8.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22600.00", - "openInterest": 669, - "changeinOpenInterest": -196, - "pchangeinOpenInterest": -22.6589595375723, - "totalTradedVolume": 1243, - "impliedVolatility": 0, - "lastPrice": 1303.5, - "change": 531.95, - "pChange": 68.9456289287797, - "totalBuyQuantity": 12050, - "totalSellQuantity": 8750, - "bidQty": 150, - "bidprice": 1306.05, - "askQty": 25, - "askPrice": 1316.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22650, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22650.00", - "openInterest": 470, - "changeinOpenInterest": 21, - "pchangeinOpenInterest": 4.67706013363029, - "totalTradedVolume": 177, - "impliedVolatility": 0, - "lastPrice": 1232.55, - "change": 500.95, - "pChange": 68.4732094040459, - "totalBuyQuantity": 8200, - "totalSellQuantity": 6175, - "bidQty": 50, - "bidprice": 1256.5, - "askQty": 50, - "askPrice": 1267.7, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22650.00", - "openInterest": 41599, - "changeinOpenInterest": 30918, - "pchangeinOpenInterest": 289.467278344724, - "totalTradedVolume": 439130, - "impliedVolatility": 23.79, - "lastPrice": 9.5, - "change": -20.9, - "pChange": -68.75, - "totalBuyQuantity": 77250, - "totalSellQuantity": 38300, - "bidQty": 1875, - "bidprice": 9.5, - "askQty": 1000, - "askPrice": 9.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22700.00", - "openInterest": 314, - "changeinOpenInterest": -33, - "pchangeinOpenInterest": -9.51008645533141, - "totalTradedVolume": 739, - "impliedVolatility": 0, - "lastPrice": 1198.65, - "change": 518.9, - "pChange": 76.3368885619713, - "totalBuyQuantity": 8800, - "totalSellQuantity": 7875, - "bidQty": 175, - "bidprice": 1209, - "askQty": 1800, - "askPrice": 1222.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22700.00", - "openInterest": 92963, - "changeinOpenInterest": 32670, - "pchangeinOpenInterest": 54.1853946560961, - "totalTradedVolume": 982139, - "impliedVolatility": 23.63, - "lastPrice": 11, - "change": -24.1, - "pChange": -68.6609686609687, - "totalBuyQuantity": 91725, - "totalSellQuantity": 48125, - "bidQty": 50, - "bidprice": 10.5, - "askQty": 1000, - "askPrice": 10.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22750, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22750.00", - "openInterest": 38866, - "changeinOpenInterest": 24284, - "pchangeinOpenInterest": 166.534083116171, - "totalTradedVolume": 433621, - "impliedVolatility": 23.47, - "lastPrice": 12.7, - "change": -27.6, - "pChange": -68.4863523573201, - "totalBuyQuantity": 81075, - "totalSellQuantity": 26675, - "bidQty": 125, - "bidprice": 12.15, - "askQty": 1000, - "askPrice": 12.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22750.00", - "openInterest": 658, - "changeinOpenInterest": -24, - "pchangeinOpenInterest": -3.51906158357771, - "totalTradedVolume": 328, - "impliedVolatility": 0, - "lastPrice": 1144.8, - "change": 516.75, - "pChange": 82.2784810126582, - "totalBuyQuantity": 10400, - "totalSellQuantity": 7150, - "bidQty": 1800, - "bidprice": 1159.2, - "askQty": 1800, - "askPrice": 1172.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22800.00", - "openInterest": 1789, - "changeinOpenInterest": 244, - "pchangeinOpenInterest": 15.7928802588997, - "totalTradedVolume": 3072, - "impliedVolatility": 0, - "lastPrice": 1105, - "change": 508.8, - "pChange": 85.340489768534, - "totalBuyQuantity": 13125, - "totalSellQuantity": 9500, - "bidQty": 1800, - "bidprice": 1111.2, - "askQty": 1800, - "askPrice": 1121.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22800.00", - "openInterest": 85464, - "changeinOpenInterest": 3052, - "pchangeinOpenInterest": 3.70334417317866, - "totalTradedVolume": 977648, - "impliedVolatility": 22.92, - "lastPrice": 13.5, - "change": -32.8, - "pChange": -70.8423326133909, - "totalBuyQuantity": 92700, - "totalSellQuantity": 53425, - "bidQty": 850, - "bidprice": 13.5, - "askQty": 675, - "askPrice": 13.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 22850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22850.00", - "openInterest": 1094, - "changeinOpenInterest": -58, - "pchangeinOpenInterest": -5.03472222222222, - "totalTradedVolume": 749, - "impliedVolatility": 0, - "lastPrice": 1045, - "change": 500.55, - "pChange": 91.9368169712554, - "totalBuyQuantity": 11950, - "totalSellQuantity": 6450, - "bidQty": 175, - "bidprice": 1063.35, - "askQty": 175, - "askPrice": 1075.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 22850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22850.00", - "openInterest": 19392, - "changeinOpenInterest": 7144, - "pchangeinOpenInterest": 58.3278902677988, - "totalTradedVolume": 363965, - "impliedVolatility": 22.62, - "lastPrice": 15.15, - "change": -38.05, - "pChange": -71.5225563909774, - "totalBuyQuantity": 73900, - "totalSellQuantity": 31475, - "bidQty": 50, - "bidprice": 14.3, - "askQty": 200, - "askPrice": 15.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22900.00", - "openInterest": 100159, - "changeinOpenInterest": 36565, - "pchangeinOpenInterest": 57.4975626631443, - "totalTradedVolume": 961386, - "impliedVolatility": 22.12, - "lastPrice": 16.3, - "change": -45.15, - "pChange": -73.4743694060212, - "totalBuyQuantity": 85775, - "totalSellQuantity": 59025, - "bidQty": 3800, - "bidprice": 16.1, - "askQty": 1725, - "askPrice": 16.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22900.00", - "openInterest": 848, - "changeinOpenInterest": -122, - "pchangeinOpenInterest": -12.5773195876289, - "totalTradedVolume": 2947, - "impliedVolatility": 0, - "lastPrice": 1010, - "change": 500.9, - "pChange": 98.3893144765272, - "totalBuyQuantity": 17425, - "totalSellQuantity": 10075, - "bidQty": 600, - "bidprice": 1014, - "askQty": 1800, - "askPrice": 1027.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 22950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 22950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE22950.00", - "openInterest": 37047, - "changeinOpenInterest": 23043, - "pchangeinOpenInterest": 164.545844044559, - "totalTradedVolume": 470638, - "impliedVolatility": 21.94, - "lastPrice": 18.8, - "change": -50.65, - "pChange": -72.9301655867531, - "totalBuyQuantity": 75525, - "totalSellQuantity": 39125, - "bidQty": 700, - "bidprice": 18, - "askQty": 1000, - "askPrice": 18.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 22950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE22950.00", - "openInterest": 709, - "changeinOpenInterest": -93, - "pchangeinOpenInterest": -11.5960099750623, - "totalTradedVolume": 1268, - "impliedVolatility": 0, - "lastPrice": 963.35, - "change": 497.25, - "pChange": 106.683115211328, - "totalBuyQuantity": 176625, - "totalSellQuantity": 8900, - "bidQty": 175, - "bidprice": 966.85, - "askQty": 1800, - "askPrice": 977.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23000.00", - "openInterest": 39085, - "changeinOpenInterest": -4108, - "pchangeinOpenInterest": -9.51080036116963, - "totalTradedVolume": 75959, - "impliedVolatility": 0, - "lastPrice": 918.25, - "change": 493.05, - "pChange": 115.957196613358, - "totalBuyQuantity": 183900, - "totalSellQuantity": 13325, - "bidQty": 1800, - "bidprice": 919.35, - "askQty": 1800, - "askPrice": 928.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23000.00", - "openInterest": 283955, - "changeinOpenInterest": 63506, - "pchangeinOpenInterest": 28.8075700048537, - "totalTradedVolume": 2107105, - "impliedVolatility": 21.65, - "lastPrice": 21.2, - "change": -58.75, - "pChange": -73.4834271419637, - "totalBuyQuantity": 82450, - "totalSellQuantity": 522000, - "bidQty": 50, - "bidprice": 20.75, - "askQty": 425, - "askPrice": 21.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23050.00", - "openInterest": 1436, - "changeinOpenInterest": -52, - "pchangeinOpenInterest": -3.49462365591398, - "totalTradedVolume": 5866, - "impliedVolatility": 0, - "lastPrice": 857.9, - "change": 467.7, - "pChange": 119.861609431061, - "totalBuyQuantity": 104400, - "totalSellQuantity": 7400, - "bidQty": 175, - "bidprice": 872.35, - "askQty": 100, - "askPrice": 882.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23050.00", - "openInterest": 35884, - "changeinOpenInterest": 23339, - "pchangeinOpenInterest": 186.042247907533, - "totalTradedVolume": 532282, - "impliedVolatility": 21.16, - "lastPrice": 23, - "change": -67.9, - "pChange": -74.6974697469747, - "totalBuyQuantity": 15225, - "totalSellQuantity": 96275, - "bidQty": 2250, - "bidprice": 23, - "askQty": 1000, - "askPrice": 23.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23100, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23100.00", - "openInterest": 99867, - "changeinOpenInterest": 35212, - "pchangeinOpenInterest": 54.4613718969917, - "totalTradedVolume": 1149061, - "impliedVolatility": 20.98, - "lastPrice": 26.5, - "change": -77.15, - "pChange": -74.433188615533, - "totalBuyQuantity": 23550, - "totalSellQuantity": 126450, - "bidQty": 1200, - "bidprice": 26, - "askQty": 1000, - "askPrice": 27.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23100.00", - "openInterest": 6532, - "changeinOpenInterest": -2768, - "pchangeinOpenInterest": -29.7634408602151, - "totalTradedVolume": 31498, - "impliedVolatility": 0, - "lastPrice": 827.55, - "change": 476, - "pChange": 135.400369790926, - "totalBuyQuantity": 36575, - "totalSellQuantity": 9200, - "bidQty": 175, - "bidprice": 825.8, - "askQty": 1800, - "askPrice": 835.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23150, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23150.00", - "openInterest": 23616, - "changeinOpenInterest": 6563, - "pchangeinOpenInterest": 38.4858969096347, - "totalTradedVolume": 613793, - "impliedVolatility": 20.63, - "lastPrice": 29.6, - "change": -87.35, - "pChange": -74.690038477982, - "totalBuyQuantity": 16850, - "totalSellQuantity": 74100, - "bidQty": 1425, - "bidprice": 29.6, - "askQty": 1000, - "askPrice": 30.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23150.00", - "openInterest": 3157, - "changeinOpenInterest": -306, - "pchangeinOpenInterest": -8.83626913081144, - "totalTradedVolume": 16325, - "impliedVolatility": 0, - "lastPrice": 779.45, - "change": 465.1, - "pChange": 147.956099888659, - "totalBuyQuantity": 32850, - "totalSellQuantity": 9200, - "bidQty": 600, - "bidprice": 779, - "askQty": 1800, - "askPrice": 788.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23200, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23200.00", - "openInterest": 14620, - "changeinOpenInterest": -6747, - "pchangeinOpenInterest": -31.5767304722235, - "totalTradedVolume": 141244, - "impliedVolatility": 0, - "lastPrice": 733.4, - "change": 452.6, - "pChange": 161.182336182336, - "totalBuyQuantity": 41800, - "totalSellQuantity": 11500, - "bidQty": 50, - "bidprice": 733.1, - "askQty": 600, - "askPrice": 742.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23200.00", - "openInterest": 136799, - "changeinOpenInterest": 37683, - "pchangeinOpenInterest": 38.0190887445014, - "totalTradedVolume": 1653128, - "impliedVolatility": 20.44, - "lastPrice": 34, - "change": -99, - "pChange": -74.4360902255639, - "totalBuyQuantity": 27100, - "totalSellQuantity": 190275, - "bidQty": 25, - "bidprice": 33.15, - "askQty": 250, - "askPrice": 34, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23250, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23250.00", - "openInterest": 6124, - "changeinOpenInterest": -1808, - "pchangeinOpenInterest": -22.7937468482098, - "totalTradedVolume": 56069, - "impliedVolatility": 0, - "lastPrice": 685.7, - "change": 437.35, - "pChange": 176.1022750151, - "totalBuyQuantity": 22600, - "totalSellQuantity": 9475, - "bidQty": 600, - "bidprice": 687.8, - "askQty": 1800, - "askPrice": 696.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23250.00", - "openInterest": 38966, - "changeinOpenInterest": 18394, - "pchangeinOpenInterest": 89.4127940890531, - "totalTradedVolume": 761718, - "impliedVolatility": 20.25, - "lastPrice": 39, - "change": -111.35, - "pChange": -74.0605254406385, - "totalBuyQuantity": 9025, - "totalSellQuantity": 86125, - "bidQty": 25, - "bidprice": 38, - "askQty": 1250, - "askPrice": 39, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23300.00", - "openInterest": 44881, - "changeinOpenInterest": -60593, - "pchangeinOpenInterest": -57.4482810929708, - "totalTradedVolume": 606621, - "impliedVolatility": 0, - "lastPrice": 644.25, - "change": 428.3, - "pChange": 198.332947441537, - "totalBuyQuantity": 65075, - "totalSellQuantity": 52225, - "bidQty": 25, - "bidprice": 643.8, - "askQty": 25, - "askPrice": 650.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23300.00", - "openInterest": 157849, - "changeinOpenInterest": 6783, - "pchangeinOpenInterest": 4.49009042405306, - "totalTradedVolume": 2216083, - "impliedVolatility": 19.88, - "lastPrice": 43.4, - "change": -127.5, - "pChange": -74.6050321825629, - "totalBuyQuantity": 45725, - "totalSellQuantity": 367525, - "bidQty": 50, - "bidprice": 42.75, - "askQty": 1000, - "askPrice": 43.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23350.00", - "openInterest": 61717, - "changeinOpenInterest": 4977, - "pchangeinOpenInterest": 8.77158970743743, - "totalTradedVolume": 999230, - "impliedVolatility": 19.66, - "lastPrice": 49.5, - "change": -143.25, - "pChange": -74.3190661478599, - "totalBuyQuantity": 15775, - "totalSellQuantity": 156225, - "bidQty": 100, - "bidprice": 48, - "askQty": 1575, - "askPrice": 49.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23350.00", - "openInterest": 34510, - "changeinOpenInterest": -22464, - "pchangeinOpenInterest": -39.428511250746, - "totalTradedVolume": 353535, - "impliedVolatility": 11.66, - "lastPrice": 602.25, - "change": 413.95, - "pChange": 219.835369091875, - "totalBuyQuantity": 28450, - "totalSellQuantity": 9750, - "bidQty": 175, - "bidprice": 598.9, - "askQty": 1800, - "askPrice": 607.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23400.00", - "openInterest": 174634, - "changeinOpenInterest": 50682, - "pchangeinOpenInterest": 40.8884084161611, - "totalTradedVolume": 2832696, - "impliedVolatility": 19.28, - "lastPrice": 55.1, - "change": -160.35, - "pChange": -74.4256207936876, - "totalBuyQuantity": 45550, - "totalSellQuantity": 417650, - "bidQty": 25, - "bidprice": 55.15, - "askQty": 1000, - "askPrice": 55.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23400.00", - "openInterest": 67013, - "changeinOpenInterest": -44812, - "pchangeinOpenInterest": -40.0733288620613, - "totalTradedVolume": 1487702, - "impliedVolatility": 11.75, - "lastPrice": 555.35, - "change": 393.25, - "pChange": 242.597162245527, - "totalBuyQuantity": 47300, - "totalSellQuantity": 11700, - "bidQty": 25, - "bidprice": 555.35, - "askQty": 1800, - "askPrice": 562.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23450, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23450.00", - "openInterest": 30613, - "changeinOpenInterest": 9311, - "pchangeinOpenInterest": 43.7095108440522, - "totalTradedVolume": 948477, - "impliedVolatility": 12.78, - "lastPrice": 514.2, - "change": 374.6, - "pChange": 268.338108882522, - "totalBuyQuantity": 27550, - "totalSellQuantity": 7650, - "bidQty": 600, - "bidprice": 512.55, - "askQty": 25, - "askPrice": 518.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23450.00", - "openInterest": 57613, - "changeinOpenInterest": 43571, - "pchangeinOpenInterest": 310.290556900726, - "totalTradedVolume": 1371396, - "impliedVolatility": 19.15, - "lastPrice": 63.5, - "change": -177.8, - "pChange": -73.6842105263158, - "totalBuyQuantity": 18425, - "totalSellQuantity": 171775, - "bidQty": 1900, - "bidprice": 62, - "askQty": 25, - "askPrice": 63.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23500.00", - "openInterest": 307822, - "changeinOpenInterest": 154879, - "pchangeinOpenInterest": 101.265831061245, - "totalTradedVolume": 4386764, - "impliedVolatility": 18.78, - "lastPrice": 70.75, - "change": -198.6, - "pChange": -73.7330610729534, - "totalBuyQuantity": 498925, - "totalSellQuantity": 717500, - "bidQty": 775, - "bidprice": 69.2, - "askQty": 275, - "askPrice": 70.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23500.00", - "openInterest": 121711, - "changeinOpenInterest": -50772, - "pchangeinOpenInterest": -29.4359444119131, - "totalTradedVolume": 3718750, - "impliedVolatility": 13.06, - "lastPrice": 471.8, - "change": 355, - "pChange": 303.938356164384, - "totalBuyQuantity": 139625, - "totalSellQuantity": 24725, - "bidQty": 1800, - "bidprice": 471.6, - "askQty": 600, - "askPrice": 477.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23550.00", - "openInterest": 29696, - "changeinOpenInterest": 5923, - "pchangeinOpenInterest": 24.9148193328566, - "totalTradedVolume": 1632316, - "impliedVolatility": 13.52, - "lastPrice": 432.65, - "change": 334.95, - "pChange": 342.835209825998, - "totalBuyQuantity": 28350, - "totalSellQuantity": 11375, - "bidQty": 200, - "bidprice": 432.65, - "askQty": 600, - "askPrice": 438.4, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23550.00", - "openInterest": 61518, - "changeinOpenInterest": 49050, - "pchangeinOpenInterest": 393.407122232916, - "totalTradedVolume": 1450609, - "impliedVolatility": 18.42, - "lastPrice": 79, - "change": -218.35, - "pChange": -73.431982512191, - "totalBuyQuantity": 18800, - "totalSellQuantity": 223500, - "bidQty": 1000, - "bidprice": 77.7, - "askQty": 1025, - "askPrice": 80.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23600.00", - "openInterest": 71678, - "changeinOpenInterest": -32631, - "pchangeinOpenInterest": -31.2830148884564, - "totalTradedVolume": 3036181, - "impliedVolatility": 14.17, - "lastPrice": 397.6, - "change": 317.5, - "pChange": 396.379525593009, - "totalBuyQuantity": 67475, - "totalSellQuantity": 15850, - "bidQty": 600, - "bidprice": 392, - "askQty": 75, - "askPrice": 398.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23600.00", - "openInterest": 158077, - "changeinOpenInterest": 97365, - "pchangeinOpenInterest": 160.371919884043, - "totalTradedVolume": 2356407, - "impliedVolatility": 18.31, - "lastPrice": 90.8, - "change": -240.35, - "pChange": -72.580401630681, - "totalBuyQuantity": 47750, - "totalSellQuantity": 339150, - "bidQty": 150, - "bidprice": 89.55, - "askQty": 950, - "askPrice": 90.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23650.00", - "openInterest": 43355, - "changeinOpenInterest": 35670, - "pchangeinOpenInterest": 464.150943396226, - "totalTradedVolume": 912111, - "impliedVolatility": 17.92, - "lastPrice": 101, - "change": -264.8, - "pChange": -72.3892837616184, - "totalBuyQuantity": 21150, - "totalSellQuantity": 130275, - "bidQty": 1000, - "bidprice": 101.2, - "askQty": 1000, - "askPrice": 102.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23650.00", - "openInterest": 18407, - "changeinOpenInterest": -6105, - "pchangeinOpenInterest": -24.9061684073107, - "totalTradedVolume": 1360939, - "impliedVolatility": 13.78, - "lastPrice": 355.55, - "change": 289.9, - "pChange": 441.584158415842, - "totalBuyQuantity": 25450, - "totalSellQuantity": 6400, - "bidQty": 250, - "bidprice": 352.25, - "askQty": 25, - "askPrice": 358, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23700.00", - "openInterest": 71414, - "changeinOpenInterest": -46099, - "pchangeinOpenInterest": -39.228851276029, - "totalTradedVolume": 3142425, - "impliedVolatility": 14.08, - "lastPrice": 321.75, - "change": 268.95, - "pChange": 509.375, - "totalBuyQuantity": 89500, - "totalSellQuantity": 25100, - "bidQty": 600, - "bidprice": 317.25, - "askQty": 100, - "askPrice": 322.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23700.00", - "openInterest": 136308, - "changeinOpenInterest": 86174, - "pchangeinOpenInterest": 171.887341923645, - "totalTradedVolume": 1848835, - "impliedVolatility": 17.74, - "lastPrice": 114.65, - "change": -288.9, - "pChange": -71.58964192789, - "totalBuyQuantity": 945200, - "totalSellQuantity": 352475, - "bidQty": 50, - "bidprice": 114.65, - "askQty": 600, - "askPrice": 116, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23750.00", - "openInterest": 36581, - "changeinOpenInterest": 5728, - "pchangeinOpenInterest": 18.5654555472726, - "totalTradedVolume": 1352202, - "impliedVolatility": 13.74, - "lastPrice": 283.5, - "change": 240.75, - "pChange": 563.157894736842, - "totalBuyQuantity": 43550, - "totalSellQuantity": 8425, - "bidQty": 25, - "bidprice": 283.55, - "askQty": 1050, - "askPrice": 286.05, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23750.00", - "openInterest": 31588, - "changeinOpenInterest": 23888, - "pchangeinOpenInterest": 310.233766233766, - "totalTradedVolume": 575241, - "impliedVolatility": 17.77, - "lastPrice": 132.3, - "change": -314.45, - "pChange": -70.3861219921656, - "totalBuyQuantity": 652825, - "totalSellQuantity": 80400, - "bidQty": 200, - "bidprice": 130.05, - "askQty": 1000, - "askPrice": 131.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23800.00", - "openInterest": 126524, - "changeinOpenInterest": -15202, - "pchangeinOpenInterest": -10.7263310895672, - "totalTradedVolume": 3052931, - "impliedVolatility": 13.68, - "lastPrice": 250, - "change": 216.3, - "pChange": 641.839762611276, - "totalBuyQuantity": 310525, - "totalSellQuantity": 104725, - "bidQty": 675, - "bidprice": 249, - "askQty": 25, - "askPrice": 253, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23800.00", - "openInterest": 108627, - "changeinOpenInterest": 58584, - "pchangeinOpenInterest": 117.067322102991, - "totalTradedVolume": 1231331, - "impliedVolatility": 17.43, - "lastPrice": 147.25, - "change": -338.2, - "pChange": -69.6673189823875, - "totalBuyQuantity": 938000, - "totalSellQuantity": 182950, - "bidQty": 1000, - "bidprice": 145.6, - "askQty": 25, - "askPrice": 147, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23850, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23850.00", - "openInterest": 31771, - "changeinOpenInterest": 29079, - "pchangeinOpenInterest": 1080.20059435364, - "totalTradedVolume": 560728, - "impliedVolatility": 17.2, - "lastPrice": 165.2, - "change": -366.45, - "pChange": -68.9269256089533, - "totalBuyQuantity": 471250, - "totalSellQuantity": 76850, - "bidQty": 125, - "bidprice": 164, - "askQty": 1000, - "askPrice": 166.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23850.00", - "openInterest": 43517, - "changeinOpenInterest": 20915, - "pchangeinOpenInterest": 92.5360587558623, - "totalTradedVolume": 1436088, - "impliedVolatility": 13.83, - "lastPrice": 221.3, - "change": 194.3, - "pChange": 719.62962962963, - "totalBuyQuantity": 66125, - "totalSellQuantity": 19575, - "bidQty": 75, - "bidprice": 218.45, - "askQty": 600, - "askPrice": 222, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 23900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23900.00", - "openInterest": 116796, - "changeinOpenInterest": 96046, - "pchangeinOpenInterest": 462.872289156627, - "totalTradedVolume": 943596, - "impliedVolatility": 17.23, - "lastPrice": 188, - "change": -388.45, - "pChange": -67.38659033741, - "totalBuyQuantity": 587475, - "totalSellQuantity": 115450, - "bidQty": 150, - "bidprice": 185.55, - "askQty": 25, - "askPrice": 187.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 23900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23900.00", - "openInterest": 170415, - "changeinOpenInterest": 88904, - "pchangeinOpenInterest": 109.069941480291, - "totalTradedVolume": 2844722, - "impliedVolatility": 13.56, - "lastPrice": 190, - "change": 168.75, - "pChange": 794.117647058824, - "totalBuyQuantity": 438475, - "totalSellQuantity": 74400, - "bidQty": 125, - "bidprice": 189.45, - "askQty": 600, - "askPrice": 192.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 23950, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 23950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE23950.00", - "openInterest": 37012, - "changeinOpenInterest": 17673, - "pchangeinOpenInterest": 91.3852836237655, - "totalTradedVolume": 1282888, - "impliedVolatility": 13.63, - "lastPrice": 165, - "change": 147.75, - "pChange": 856.521739130435, - "totalBuyQuantity": 103775, - "totalSellQuantity": 43925, - "bidQty": 1000, - "bidprice": 163, - "askQty": 1000, - "askPrice": 164.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 23950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE23950.00", - "openInterest": 15114, - "changeinOpenInterest": 12674, - "pchangeinOpenInterest": 519.426229508197, - "totalTradedVolume": 201951, - "impliedVolatility": 16.94, - "lastPrice": 208.9, - "change": -412.55, - "pChange": -66.3850671815915, - "totalBuyQuantity": 21650, - "totalSellQuantity": 23575, - "bidQty": 25, - "bidprice": 208.4, - "askQty": 600, - "askPrice": 211.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24000, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24000.00", - "openInterest": 119938, - "changeinOpenInterest": 37810, - "pchangeinOpenInterest": 46.0378920709137, - "totalTradedVolume": 625011, - "impliedVolatility": 16.76, - "lastPrice": 233, - "change": -428.6, - "pChange": -64.782345828295, - "totalBuyQuantity": 131225, - "totalSellQuantity": 97900, - "bidQty": 150, - "bidprice": 233.05, - "askQty": 150, - "askPrice": 236.3, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24000.00", - "openInterest": 219128, - "changeinOpenInterest": -32645, - "pchangeinOpenInterest": -12.966044810206, - "totalTradedVolume": 4489548, - "impliedVolatility": 13.52, - "lastPrice": 140.25, - "change": 126.15, - "pChange": 894.68085106383, - "totalBuyQuantity": 928375, - "totalSellQuantity": 225675, - "bidQty": 25, - "bidprice": 140.2, - "askQty": 600, - "askPrice": 141.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24050.00", - "openInterest": 32013, - "changeinOpenInterest": 13066, - "pchangeinOpenInterest": 68.960785348604, - "totalTradedVolume": 1087937, - "impliedVolatility": 13.3, - "lastPrice": 116.5, - "change": 105.35, - "pChange": 944.843049327354, - "totalBuyQuantity": 347900, - "totalSellQuantity": 28775, - "bidQty": 1000, - "bidprice": 116.55, - "askQty": 350, - "askPrice": 119.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24050.00", - "openInterest": 7475, - "changeinOpenInterest": 6243, - "pchangeinOpenInterest": 506.737012987013, - "totalTradedVolume": 40872, - "impliedVolatility": 17.15, - "lastPrice": 265.8, - "change": -444.7, - "pChange": -62.5897255453906, - "totalBuyQuantity": 10275, - "totalSellQuantity": 14925, - "bidQty": 275, - "bidprice": 257.85, - "askQty": 350, - "askPrice": 266.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24100, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24100.00", - "openInterest": 26671, - "changeinOpenInterest": 7724, - "pchangeinOpenInterest": 40.766348234549, - "totalTradedVolume": 79368, - "impliedVolatility": 16.76, - "lastPrice": 291.2, - "change": -468.55, - "pChange": -61.6716025008226, - "totalBuyQuantity": 11950, - "totalSellQuantity": 20625, - "bidQty": 225, - "bidprice": 289.05, - "askQty": 1000, - "askPrice": 294.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24100.00", - "openInterest": 100863, - "changeinOpenInterest": 3044, - "pchangeinOpenInterest": 3.11186988212924, - "totalTradedVolume": 2204389, - "impliedVolatility": 13.27, - "lastPrice": 97.55, - "change": 88.5, - "pChange": 977.900552486188, - "totalBuyQuantity": 351950, - "totalSellQuantity": 65450, - "bidQty": 1075, - "bidprice": 97.3, - "askQty": 1000, - "askPrice": 99, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24150, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24150.00", - "openInterest": 3780, - "changeinOpenInterest": 2066, - "pchangeinOpenInterest": 120.536756126021, - "totalTradedVolume": 16792, - "impliedVolatility": 16.82, - "lastPrice": 323.8, - "change": -482.75, - "pChange": -59.8536978488624, - "totalBuyQuantity": 4550, - "totalSellQuantity": 10650, - "bidQty": 225, - "bidprice": 321.5, - "askQty": 300, - "askPrice": 329.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24150.00", - "openInterest": 35622, - "changeinOpenInterest": 15452, - "pchangeinOpenInterest": 76.6088249876054, - "totalTradedVolume": 1080400, - "impliedVolatility": 13.35, - "lastPrice": 82, - "change": 74.55, - "pChange": 1000.6711409396, - "totalBuyQuantity": 110975, - "totalSellQuantity": 40300, - "bidQty": 1000, - "bidprice": 80.4, - "askQty": 1000, - "askPrice": 81.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24200.00", - "openInterest": 45900, - "changeinOpenInterest": -927, - "pchangeinOpenInterest": -1.97962713818951, - "totalTradedVolume": 55405, - "impliedVolatility": 17.06, - "lastPrice": 360, - "change": -496.1, - "pChange": -57.948837752599, - "totalBuyQuantity": 10225, - "totalSellQuantity": 18800, - "bidQty": 1250, - "bidprice": 355.5, - "askQty": 600, - "askPrice": 364.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24200.00", - "openInterest": 149328, - "changeinOpenInterest": 18104, - "pchangeinOpenInterest": 13.7962567822959, - "totalTradedVolume": 2549995, - "impliedVolatility": 13.31, - "lastPrice": 67.25, - "change": 60.85, - "pChange": 950.78125, - "totalBuyQuantity": 578425, - "totalSellQuantity": 101800, - "bidQty": 600, - "bidprice": 66, - "askQty": 25, - "askPrice": 67.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24250, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24250.00", - "openInterest": 35523, - "changeinOpenInterest": 14802, - "pchangeinOpenInterest": 71.4347763138845, - "totalTradedVolume": 1121664, - "impliedVolatility": 13.09, - "lastPrice": 52.95, - "change": 47.55, - "pChange": 880.555555555556, - "totalBuyQuantity": 125400, - "totalSellQuantity": 22025, - "bidQty": 1600, - "bidprice": 52.95, - "askQty": 1000, - "askPrice": 53.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24250.00", - "openInterest": 2177, - "changeinOpenInterest": 48, - "pchangeinOpenInterest": 2.25457961484265, - "totalTradedVolume": 3440, - "impliedVolatility": 17.93, - "lastPrice": 404.4, - "change": -513.15, - "pChange": -55.9261075690698, - "totalBuyQuantity": 8800, - "totalSellQuantity": 10000, - "bidQty": 600, - "bidprice": 396, - "askQty": 600, - "askPrice": 401.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24300, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24300.00", - "openInterest": 51022, - "changeinOpenInterest": -615, - "pchangeinOpenInterest": -1.19100644886419, - "totalTradedVolume": 16781, - "impliedVolatility": 17.34, - "lastPrice": 434.75, - "change": -515.5, - "pChange": -54.2488818731913, - "totalBuyQuantity": 10000, - "totalSellQuantity": 14525, - "bidQty": 600, - "bidprice": 435.2, - "askQty": 600, - "askPrice": 441.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24300.00", - "openInterest": 152231, - "changeinOpenInterest": 36492, - "pchangeinOpenInterest": 31.5295622046156, - "totalTradedVolume": 1833866, - "impliedVolatility": 13.13, - "lastPrice": 43, - "change": 38.25, - "pChange": 805.263157894737, - "totalBuyQuantity": 488025, - "totalSellQuantity": 83250, - "bidQty": 1750, - "bidprice": 42.5, - "askQty": 3275, - "askPrice": 43, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24350.00", - "openInterest": 1485, - "changeinOpenInterest": 25, - "pchangeinOpenInterest": 1.71232876712329, - "totalTradedVolume": 739, - "impliedVolatility": 18.62, - "lastPrice": 485, - "change": -531.9, - "pChange": -52.3060281246927, - "totalBuyQuantity": 9475, - "totalSellQuantity": 10575, - "bidQty": 600, - "bidprice": 476.1, - "askQty": 600, - "askPrice": 484.2, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24350.00", - "openInterest": 24739, - "changeinOpenInterest": 12364, - "pchangeinOpenInterest": 99.9111111111111, - "totalTradedVolume": 885552, - "impliedVolatility": 13.06, - "lastPrice": 33.8, - "change": 29.7, - "pChange": 724.390243902439, - "totalBuyQuantity": 114525, - "totalSellQuantity": 27725, - "bidQty": 50, - "bidprice": 33.8, - "askQty": 1075, - "askPrice": 34.45, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24400, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24400.00", - "openInterest": 124294, - "changeinOpenInterest": 32732, - "pchangeinOpenInterest": 35.7484545990695, - "totalTradedVolume": 1841427, - "impliedVolatility": 13.22, - "lastPrice": 27.7, - "change": 24, - "pChange": 648.648648648649, - "totalBuyQuantity": 296750, - "totalSellQuantity": 65300, - "bidQty": 1600, - "bidprice": 27, - "askQty": 175, - "askPrice": 27.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24400.00", - "openInterest": 41192, - "changeinOpenInterest": -1935, - "pchangeinOpenInterest": -4.48674844065203, - "totalTradedVolume": 7915, - "impliedVolatility": 18.76, - "lastPrice": 525, - "change": -524.7, - "pChange": -49.9857102029151, - "totalBuyQuantity": 9350, - "totalSellQuantity": 14275, - "bidQty": 600, - "bidprice": 519.3, - "askQty": 250, - "askPrice": 526.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24450, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24450.00", - "openInterest": 1312, - "changeinOpenInterest": 4, - "pchangeinOpenInterest": 0.305810397553517, - "totalTradedVolume": 667, - "impliedVolatility": 19.69, - "lastPrice": 572.85, - "change": -522.3, - "pChange": -47.6920969730174, - "totalBuyQuantity": 9725, - "totalSellQuantity": 10450, - "bidQty": 600, - "bidprice": 562.4, - "askQty": 600, - "askPrice": 572.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24450.00", - "openInterest": 27857, - "changeinOpenInterest": 16069, - "pchangeinOpenInterest": 136.316593145572, - "totalTradedVolume": 842671, - "impliedVolatility": 13.24, - "lastPrice": 21.8, - "change": 18.55, - "pChange": 570.769230769231, - "totalBuyQuantity": 106525, - "totalSellQuantity": 21300, - "bidQty": 1000, - "bidprice": 21.45, - "askQty": 1525, - "askPrice": 22, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24500, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24500.00", - "openInterest": 257968, - "changeinOpenInterest": 16725, - "pchangeinOpenInterest": 6.93284364727681, - "totalTradedVolume": 2447961, - "impliedVolatility": 13.33, - "lastPrice": 17.4, - "change": 14.4, - "pChange": 480, - "totalBuyQuantity": 1373150, - "totalSellQuantity": 224475, - "bidQty": 75, - "bidprice": 17.4, - "askQty": 1025, - "askPrice": 17.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24500.00", - "openInterest": 76632, - "changeinOpenInterest": 1073, - "pchangeinOpenInterest": 1.4200823197766, - "totalTradedVolume": 37975, - "impliedVolatility": 19.31, - "lastPrice": 610.15, - "change": -543.55, - "pChange": -47.1136343936899, - "totalBuyQuantity": 12775, - "totalSellQuantity": 21575, - "bidQty": 1650, - "bidprice": 610, - "askQty": 250, - "askPrice": 616.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24550.00", - "openInterest": 33938, - "changeinOpenInterest": 18156, - "pchangeinOpenInterest": 115.042453427956, - "totalTradedVolume": 668483, - "impliedVolatility": 13.53, - "lastPrice": 14.25, - "change": 11.35, - "pChange": 391.379310344828, - "totalBuyQuantity": 292025, - "totalSellQuantity": 21750, - "bidQty": 625, - "bidprice": 12.25, - "askQty": 1275, - "askPrice": 13.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24550.00", - "openInterest": 780, - "changeinOpenInterest": -14, - "pchangeinOpenInterest": -1.7632241813602, - "totalTradedVolume": 173, - "impliedVolatility": 21.1, - "lastPrice": 665.8, - "change": -540.75, - "pChange": -44.8178691309933, - "totalBuyQuantity": 6600, - "totalSellQuantity": 6650, - "bidQty": 100, - "bidprice": 650.75, - "askQty": 100, - "askPrice": 666.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24600.00", - "openInterest": 125459, - "changeinOpenInterest": 61950, - "pchangeinOpenInterest": 97.5452298099482, - "totalTradedVolume": 1262138, - "impliedVolatility": 13.4, - "lastPrice": 10.45, - "change": 7.85, - "pChange": 301.923076923077, - "totalBuyQuantity": 774875, - "totalSellQuantity": 49500, - "bidQty": 1000, - "bidprice": 10, - "askQty": 1525, - "askPrice": 10.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24600.00", - "openInterest": 12908, - "changeinOpenInterest": -1215, - "pchangeinOpenInterest": -8.60298803370389, - "totalTradedVolume": 2687, - "impliedVolatility": 21.01, - "lastPrice": 706.75, - "change": -539.65, - "pChange": -43.2966944801027, - "totalBuyQuantity": 6875, - "totalSellQuantity": 7875, - "bidQty": 75, - "bidprice": 700.35, - "askQty": 25, - "askPrice": 711.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24650.00", - "openInterest": 869, - "changeinOpenInterest": -232, - "pchangeinOpenInterest": -21.0717529518619, - "totalTradedVolume": 713, - "impliedVolatility": 25.05, - "lastPrice": 780.25, - "change": -516.9, - "pChange": -39.8488995104653, - "totalBuyQuantity": 6100, - "totalSellQuantity": 6175, - "bidQty": 75, - "bidprice": 739.65, - "askQty": 25, - "askPrice": 761.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24650.00", - "openInterest": 38301, - "changeinOpenInterest": 32423, - "pchangeinOpenInterest": 551.599183395713, - "totalTradedVolume": 574531, - "impliedVolatility": 13.63, - "lastPrice": 8.6, - "change": 6.15, - "pChange": 251.020408163265, - "totalBuyQuantity": 158975, - "totalSellQuantity": 85350, - "bidQty": 200, - "bidprice": 8.2, - "askQty": 1125, - "askPrice": 8.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24700.00", - "openInterest": 80392, - "changeinOpenInterest": 40111, - "pchangeinOpenInterest": 99.577964797299, - "totalTradedVolume": 830831, - "impliedVolatility": 13.81, - "lastPrice": 6.95, - "change": 4.6, - "pChange": 195.744680851064, - "totalBuyQuantity": 616775, - "totalSellQuantity": 35325, - "bidQty": 1650, - "bidprice": 6.6, - "askQty": 925, - "askPrice": 6.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24700.00", - "openInterest": 12277, - "changeinOpenInterest": -457, - "pchangeinOpenInterest": -3.58881733940631, - "totalTradedVolume": 1500, - "impliedVolatility": 21.82, - "lastPrice": 798.1, - "change": -550.1, - "pChange": -40.8025515502151, - "totalBuyQuantity": 7700, - "totalSellQuantity": 9725, - "bidQty": 75, - "bidprice": 796.25, - "askQty": 100, - "askPrice": 806.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24750.00", - "openInterest": 18790, - "changeinOpenInterest": 13094, - "pchangeinOpenInterest": 229.880617977528, - "totalTradedVolume": 295853, - "impliedVolatility": 13.98, - "lastPrice": 5.6, - "change": 3.25, - "pChange": 138.297872340426, - "totalBuyQuantity": 143175, - "totalSellQuantity": 19125, - "bidQty": 4925, - "bidprice": 5, - "askQty": 1450, - "askPrice": 5.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24750.00", - "openInterest": 434, - "changeinOpenInterest": 23, - "pchangeinOpenInterest": 5.59610705596107, - "totalTradedVolume": 92, - "impliedVolatility": 30.46, - "lastPrice": 907.45, - "change": -503.55, - "pChange": -35.6874557051736, - "totalBuyQuantity": 5775, - "totalSellQuantity": 6250, - "bidQty": 150, - "bidprice": 839.85, - "askQty": 150, - "askPrice": 871, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24800, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24800.00", - "openInterest": 26351, - "changeinOpenInterest": -1918, - "pchangeinOpenInterest": -6.78481729102551, - "totalTradedVolume": 2815, - "impliedVolatility": 24.06, - "lastPrice": 900, - "change": -542.05, - "pChange": -37.5888492077251, - "totalBuyQuantity": 8525, - "totalSellQuantity": 7300, - "bidQty": 250, - "bidprice": 893.2, - "askQty": 50, - "askPrice": 905.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24800.00", - "openInterest": 123505, - "changeinOpenInterest": 54075, - "pchangeinOpenInterest": 77.884199913582, - "totalTradedVolume": 915072, - "impliedVolatility": 14.15, - "lastPrice": 4.5, - "change": 2.15, - "pChange": 91.4893617021277, - "totalBuyQuantity": 1518275, - "totalSellQuantity": 58650, - "bidQty": 25, - "bidprice": 4.4, - "askQty": 400, - "askPrice": 4.5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24850, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24850.00", - "openInterest": 457, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -1.931330472103, - "totalTradedVolume": 42, - "impliedVolatility": 25.02, - "lastPrice": 950, - "change": -566.75, - "pChange": -37.3660787868798, - "totalBuyQuantity": 5925, - "totalSellQuantity": 6500, - "bidQty": 75, - "bidprice": 933.85, - "askQty": 75, - "askPrice": 966.5, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24850.00", - "openInterest": 14907, - "changeinOpenInterest": 8697, - "pchangeinOpenInterest": 140.048309178744, - "totalTradedVolume": 210484, - "impliedVolatility": 14.45, - "lastPrice": 3.85, - "change": 1.55, - "pChange": 67.3913043478261, - "totalBuyQuantity": 108600, - "totalSellQuantity": 14875, - "bidQty": 25, - "bidprice": 3.85, - "askQty": 875, - "askPrice": 4.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 24900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24900.00", - "openInterest": 15715, - "changeinOpenInterest": -463, - "pchangeinOpenInterest": -2.861911237483, - "totalTradedVolume": 1081, - "impliedVolatility": 26.9, - "lastPrice": 1006, - "change": -548, - "pChange": -35.2638352638353, - "totalBuyQuantity": 6475, - "totalSellQuantity": 7475, - "bidQty": 25, - "bidprice": 1000, - "askQty": 75, - "askPrice": 1005.7, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 24900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24900.00", - "openInterest": 44048, - "changeinOpenInterest": 18435, - "pchangeinOpenInterest": 71.9751688595635, - "totalTradedVolume": 381312, - "impliedVolatility": 14.99, - "lastPrice": 3.65, - "change": 1.4, - "pChange": 62.2222222222222, - "totalBuyQuantity": 718000, - "totalSellQuantity": 42125, - "bidQty": 700, - "bidprice": 2.85, - "askQty": 1750, - "askPrice": 3.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 24950, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 24950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE24950.00", - "openInterest": 19018, - "changeinOpenInterest": 10026, - "pchangeinOpenInterest": 111.499110320285, - "totalTradedVolume": 151952, - "impliedVolatility": 15.47, - "lastPrice": 3.4, - "change": 1.2, - "pChange": 54.5454545454545, - "totalBuyQuantity": 246975, - "totalSellQuantity": 24075, - "bidQty": 1725, - "bidprice": 2.7, - "askQty": 1250, - "askPrice": 3.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 24950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE24950.00", - "openInterest": 681, - "changeinOpenInterest": -39, - "pchangeinOpenInterest": -5.41666666666667, - "totalTradedVolume": 196, - "impliedVolatility": 32.8, - "lastPrice": 1091.2, - "change": -509.75, - "pChange": -31.8404697211031, - "totalBuyQuantity": 6375, - "totalSellQuantity": 5875, - "bidQty": 475, - "bidprice": 1032, - "askQty": 25, - "askPrice": 1055.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25000.00", - "openInterest": 294780, - "changeinOpenInterest": 54354, - "pchangeinOpenInterest": 22.6073719148511, - "totalTradedVolume": 1369004, - "impliedVolatility": 15.57, - "lastPrice": 2.7, - "change": 0.5, - "pChange": 22.7272727272727, - "totalBuyQuantity": 1897750, - "totalSellQuantity": 167550, - "bidQty": 4125, - "bidprice": 2.7, - "askQty": 400, - "askPrice": 2.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25000.00", - "openInterest": 77075, - "changeinOpenInterest": -211, - "pchangeinOpenInterest": -0.273011929715602, - "totalTradedVolume": 12103, - "impliedVolatility": 27.84, - "lastPrice": 1100, - "change": -551.6, - "pChange": -33.3979171712279, - "totalBuyQuantity": 8825, - "totalSellQuantity": 9800, - "bidQty": 100, - "bidprice": 1094.45, - "askQty": 100, - "askPrice": 1105.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25050.00", - "openInterest": 9312, - "changeinOpenInterest": 6904, - "pchangeinOpenInterest": 286.71096345515, - "totalTradedVolume": 87341, - "impliedVolatility": 15.79, - "lastPrice": 2.25, - "change": 0.15, - "pChange": 7.14285714285714, - "totalBuyQuantity": 97400, - "totalSellQuantity": 15800, - "bidQty": 625, - "bidprice": 2.15, - "askQty": 1000, - "askPrice": 2.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25050.00", - "openInterest": 363, - "changeinOpenInterest": -4, - "pchangeinOpenInterest": -1.08991825613079, - "totalTradedVolume": 31, - "impliedVolatility": 28.32, - "lastPrice": 1147.4, - "change": -547.15, - "pChange": -32.2888082381753, - "totalBuyQuantity": 6250, - "totalSellQuantity": 6150, - "bidQty": 225, - "bidprice": 1138.1, - "askQty": 75, - "askPrice": 1155.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25100.00", - "openInterest": 41636, - "changeinOpenInterest": 10248, - "pchangeinOpenInterest": 32.6494201605709, - "totalTradedVolume": 211497, - "impliedVolatility": 16.19, - "lastPrice": 2.05, - "change": -0.1, - "pChange": -4.65116279069768, - "totalBuyQuantity": 698000, - "totalSellQuantity": 19025, - "bidQty": 20125, - "bidprice": 2, - "askQty": 725, - "askPrice": 2.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25100.00", - "openInterest": 6154, - "changeinOpenInterest": -93, - "pchangeinOpenInterest": -1.48871458299984, - "totalTradedVolume": 728, - "impliedVolatility": 33.76, - "lastPrice": 1226.1, - "change": -522.6, - "pChange": -29.8850574712644, - "totalBuyQuantity": 5750, - "totalSellQuantity": 6200, - "bidQty": 100, - "bidprice": 1192.95, - "askQty": 150, - "askPrice": 1205.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25150.00", - "openInterest": 8440, - "changeinOpenInterest": 4800, - "pchangeinOpenInterest": 131.868131868132, - "totalTradedVolume": 59457, - "impliedVolatility": 16.67, - "lastPrice": 1.95, - "change": -0.0999999999999999, - "pChange": -4.8780487804878, - "totalBuyQuantity": 115250, - "totalSellQuantity": 11625, - "bidQty": 25, - "bidprice": 1.8, - "askQty": 225, - "askPrice": 1.95, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25150.00", - "openInterest": 275, - "changeinOpenInterest": -23, - "pchangeinOpenInterest": -7.71812080536913, - "totalTradedVolume": 42, - "impliedVolatility": 42, - "lastPrice": 1331.35, - "change": -472, - "pChange": -26.1735104111792, - "totalBuyQuantity": 5925, - "totalSellQuantity": 5225, - "bidQty": 100, - "bidprice": 1231.6, - "askQty": 100, - "askPrice": 1254.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25200.00", - "openInterest": 27691, - "changeinOpenInterest": -159, - "pchangeinOpenInterest": -0.570915619389587, - "totalTradedVolume": 3158, - "impliedVolatility": 34.26, - "lastPrice": 1316.7, - "change": -544.25, - "pChange": -29.245815309385, - "totalBuyQuantity": 6100, - "totalSellQuantity": 7150, - "bidQty": 150, - "bidprice": 1293.3, - "askQty": 375, - "askPrice": 1305.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25200.00", - "openInterest": 41646, - "changeinOpenInterest": 8058, - "pchangeinOpenInterest": 23.9907109682029, - "totalTradedVolume": 167350, - "impliedVolatility": 16.89, - "lastPrice": 1.65, - "change": -0.35, - "pChange": -17.5, - "totalBuyQuantity": 382925, - "totalSellQuantity": 21500, - "bidQty": 650, - "bidprice": 1.65, - "askQty": 800, - "askPrice": 2.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25250, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25250.00", - "openInterest": 13196, - "changeinOpenInterest": 8049, - "pchangeinOpenInterest": 156.382358655528, - "totalTradedVolume": 53727, - "impliedVolatility": 17.53, - "lastPrice": 1.7, - "change": -0.25, - "pChange": -12.8205128205128, - "totalBuyQuantity": 116375, - "totalSellQuantity": 15325, - "bidQty": 4000, - "bidprice": 1.7, - "askQty": 1250, - "askPrice": 1.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25250.00", - "openInterest": 342, - "changeinOpenInterest": -14, - "pchangeinOpenInterest": -3.93258426966292, - "totalTradedVolume": 61, - "impliedVolatility": 40.49, - "lastPrice": 1403.3, - "change": -494.05, - "pChange": -26.0389490605318, - "totalBuyQuantity": 5750, - "totalSellQuantity": 5725, - "bidQty": 100, - "bidprice": 1331.2, - "askQty": 350, - "askPrice": 1376.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25300.00", - "openInterest": 34900, - "changeinOpenInterest": 10778, - "pchangeinOpenInterest": 44.6812038802753, - "totalTradedVolume": 144377, - "impliedVolatility": 18.03, - "lastPrice": 1.65, - "change": -0.25, - "pChange": -13.1578947368421, - "totalBuyQuantity": 388500, - "totalSellQuantity": 33575, - "bidQty": 1725, - "bidprice": 1.5, - "askQty": 1775, - "askPrice": 1.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25300.00", - "openInterest": 3036, - "changeinOpenInterest": -284, - "pchangeinOpenInterest": -8.55421686746988, - "totalTradedVolume": 590, - "impliedVolatility": 36.64, - "lastPrice": 1420, - "change": -525.35, - "pChange": -27.0054231886293, - "totalBuyQuantity": 4150, - "totalSellQuantity": 6125, - "bidQty": 50, - "bidprice": 1391.3, - "askQty": 75, - "askPrice": 1404.55, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25350.00", - "openInterest": 294, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -2.97029702970297, - "totalTradedVolume": 72, - "impliedVolatility": 38.75, - "lastPrice": 1477.55, - "change": -519.45, - "pChange": -26.0115172759139, - "totalBuyQuantity": 5775, - "totalSellQuantity": 5750, - "bidQty": 75, - "bidprice": 1431.25, - "askQty": 75, - "askPrice": 1484.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25350.00", - "openInterest": 3552, - "changeinOpenInterest": 1718, - "pchangeinOpenInterest": 93.6750272628135, - "totalTradedVolume": 31923, - "impliedVolatility": 18.38, - "lastPrice": 1.5, - "change": -0.35, - "pChange": -18.9189189189189, - "totalBuyQuantity": 115825, - "totalSellQuantity": 15100, - "bidQty": 250, - "bidprice": 1.45, - "askQty": 500, - "askPrice": 1.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25400.00", - "openInterest": 3089, - "changeinOpenInterest": -120, - "pchangeinOpenInterest": -3.73948270489249, - "totalTradedVolume": 344, - "impliedVolatility": 36.11, - "lastPrice": 1506, - "change": -530.95, - "pChange": -26.0659319079997, - "totalBuyQuantity": 6225, - "totalSellQuantity": 6525, - "bidQty": 75, - "bidprice": 1474.45, - "askQty": 25, - "askPrice": 1505.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25400.00", - "openInterest": 16361, - "changeinOpenInterest": 8545, - "pchangeinOpenInterest": 109.327021494371, - "totalTradedVolume": 70710, - "impliedVolatility": 18.7, - "lastPrice": 1.35, - "change": -0.5, - "pChange": -27.027027027027, - "totalBuyQuantity": 484000, - "totalSellQuantity": 27200, - "bidQty": 1250, - "bidprice": 1.3, - "askQty": 6100, - "askPrice": 1.35, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25450, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25450.00", - "openInterest": 2513, - "changeinOpenInterest": 1667, - "pchangeinOpenInterest": 197.044917257683, - "totalTradedVolume": 10410, - "impliedVolatility": 19.49, - "lastPrice": 1.5, - "change": -0.4, - "pChange": -21.0526315789474, - "totalBuyQuantity": 101275, - "totalSellQuantity": 14025, - "bidQty": 3600, - "bidprice": 1.15, - "askQty": 500, - "askPrice": 1.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25450.00", - "openInterest": 188, - "changeinOpenInterest": -22, - "pchangeinOpenInterest": -10.4761904761905, - "totalTradedVolume": 44, - "impliedVolatility": 40.43, - "lastPrice": 1576.4, - "change": -506, - "pChange": -24.2988859008836, - "totalBuyQuantity": 5950, - "totalSellQuantity": 6175, - "bidQty": 300, - "bidprice": 1530.55, - "askQty": 300, - "askPrice": 1603.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25500.00", - "openInterest": 23702, - "changeinOpenInterest": -1589, - "pchangeinOpenInterest": -6.28286742319402, - "totalTradedVolume": 2508, - "impliedVolatility": 36.74, - "lastPrice": 1600, - "change": -539.05, - "pChange": -25.2004394474183, - "totalBuyQuantity": 8275, - "totalSellQuantity": 8000, - "bidQty": 100, - "bidprice": 1589.8, - "askQty": 25, - "askPrice": 1601.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25500.00", - "openInterest": 176394, - "changeinOpenInterest": -33137, - "pchangeinOpenInterest": -15.8148436269573, - "totalTradedVolume": 779496, - "impliedVolatility": 19.53, - "lastPrice": 1.2, - "change": -0.75, - "pChange": -38.4615384615385, - "totalBuyQuantity": 2020400, - "totalSellQuantity": 234775, - "bidQty": 185550, - "bidprice": 1.2, - "askQty": 32675, - "askPrice": 1.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25550, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25550.00", - "openInterest": 370, - "changeinOpenInterest": -8, - "pchangeinOpenInterest": -2.11640211640212, - "totalTradedVolume": 16, - "impliedVolatility": 26.58, - "lastPrice": 1610.05, - "change": -590.35, - "pChange": -26.8292128703872, - "totalBuyQuantity": 5625, - "totalSellQuantity": 5600, - "bidQty": 100, - "bidprice": 1630.35, - "askQty": 375, - "askPrice": 1655.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25550.00", - "openInterest": 3094, - "changeinOpenInterest": 895, - "pchangeinOpenInterest": 40.7003183265121, - "totalTradedVolume": 13922, - "impliedVolatility": 20.42, - "lastPrice": 1.4, - "change": -0.5, - "pChange": -26.3157894736842, - "totalBuyQuantity": 113475, - "totalSellQuantity": 13550, - "bidQty": 5200, - "bidprice": 1.2, - "askQty": 1675, - "askPrice": 1.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25600.00", - "openInterest": 13363, - "changeinOpenInterest": 5050, - "pchangeinOpenInterest": 60.7482256706364, - "totalTradedVolume": 53980, - "impliedVolatility": 20.7, - "lastPrice": 1.25, - "change": -0.6, - "pChange": -32.4324324324324, - "totalBuyQuantity": 238375, - "totalSellQuantity": 14150, - "bidQty": 1275, - "bidprice": 1.25, - "askQty": 1450, - "askPrice": 1.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25600.00", - "openInterest": 2799, - "changeinOpenInterest": -217, - "pchangeinOpenInterest": -7.19496021220159, - "totalTradedVolume": 478, - "impliedVolatility": 29.77, - "lastPrice": 1666, - "change": -575.4, - "pChange": -25.6714553404122, - "totalBuyQuantity": 7200, - "totalSellQuantity": 6175, - "bidQty": 400, - "bidprice": 1676.45, - "askQty": 100, - "askPrice": 1701.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25650.00", - "openInterest": 301, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 46.86, - "lastPrice": 1794.1, - "change": -357.3, - "pChange": -16.6077902760993, - "totalBuyQuantity": 4000, - "totalSellQuantity": 4050, - "bidQty": 75, - "bidprice": 1728.1, - "askQty": 100, - "askPrice": 1759.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25650.00", - "openInterest": 1495, - "changeinOpenInterest": 695, - "pchangeinOpenInterest": 86.875, - "totalTradedVolume": 10660, - "impliedVolatility": 21.13, - "lastPrice": 1.2, - "change": -0.6, - "pChange": -33.3333333333333, - "totalBuyQuantity": 112475, - "totalSellQuantity": 10150, - "bidQty": 325, - "bidprice": 1.15, - "askQty": 750, - "askPrice": 2.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25700, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25700.00", - "openInterest": 7484, - "changeinOpenInterest": 1091, - "pchangeinOpenInterest": 17.0655404348506, - "totalTradedVolume": 40245, - "impliedVolatility": 21.66, - "lastPrice": 1.2, - "change": -0.65, - "pChange": -35.1351351351351, - "totalBuyQuantity": 227250, - "totalSellQuantity": 11725, - "bidQty": 3200, - "bidprice": 1.2, - "askQty": 250, - "askPrice": 1.45, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25700.00", - "openInterest": 2864, - "changeinOpenInterest": -66, - "pchangeinOpenInterest": -2.25255972696246, - "totalTradedVolume": 126, - "impliedVolatility": 49.61, - "lastPrice": 1856.3, - "change": -495.5, - "pChange": -21.0689684496981, - "totalBuyQuantity": 5625, - "totalSellQuantity": 3050, - "bidQty": 300, - "bidprice": 1782.2, - "askQty": 75, - "askPrice": 1801.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25750.00", - "openInterest": 2079, - "changeinOpenInterest": -237, - "pchangeinOpenInterest": -10.2331606217617, - "totalTradedVolume": 5576, - "impliedVolatility": 21.98, - "lastPrice": 1.1, - "change": -0.7, - "pChange": -38.8888888888889, - "totalBuyQuantity": 105650, - "totalSellQuantity": 13600, - "bidQty": 3600, - "bidprice": 1.05, - "askQty": 700, - "askPrice": 1.5, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25750.00", - "openInterest": 116, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.854700854700855, - "totalTradedVolume": 10, - "impliedVolatility": 37.46, - "lastPrice": 1834.4, - "change": -548.4, - "pChange": -23.0149404062448, - "totalBuyQuantity": 4475, - "totalSellQuantity": 5225, - "bidQty": 175, - "bidprice": 1828.2, - "askQty": 75, - "askPrice": 1859.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25800, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25800.00", - "openInterest": 5561, - "changeinOpenInterest": -278, - "pchangeinOpenInterest": -4.76108922760747, - "totalTradedVolume": 374, - "impliedVolatility": 44.7, - "lastPrice": 1915, - "change": -528.2, - "pChange": -21.6191879502292, - "totalBuyQuantity": 6125, - "totalSellQuantity": 6200, - "bidQty": 675, - "bidprice": 1869.35, - "askQty": 100, - "askPrice": 1903.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25800.00", - "openInterest": 9652, - "changeinOpenInterest": -2390, - "pchangeinOpenInterest": -19.8472014615512, - "totalTradedVolume": 69158, - "impliedVolatility": 22.5, - "lastPrice": 1.1, - "change": -0.75, - "pChange": -40.5405405405405, - "totalBuyQuantity": 277800, - "totalSellQuantity": 31400, - "bidQty": 2750, - "bidprice": 1.1, - "askQty": 400, - "askPrice": 1.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25850, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25850.00", - "openInterest": 51, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -1.92307692307692, - "totalTradedVolume": 4, - "impliedVolatility": 74.75, - "lastPrice": 2187.25, - "change": -312.75, - "pChange": -12.51, - "totalBuyQuantity": 5525, - "totalSellQuantity": 5325, - "bidQty": 50, - "bidprice": 1928.85, - "askQty": 50, - "askPrice": 1973.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25850.00", - "openInterest": 1491, - "changeinOpenInterest": 423, - "pchangeinOpenInterest": 39.6067415730337, - "totalTradedVolume": 4925, - "impliedVolatility": 23.23, - "lastPrice": 1.2, - "change": -0.55, - "pChange": -31.4285714285714, - "totalBuyQuantity": 99875, - "totalSellQuantity": 10475, - "bidQty": 2500, - "bidprice": 1, - "askQty": 1350, - "askPrice": 1.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 25900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25900.00", - "openInterest": 2476, - "changeinOpenInterest": -31, - "pchangeinOpenInterest": -1.23653769445552, - "totalTradedVolume": 55, - "impliedVolatility": 49.98, - "lastPrice": 2035.3, - "change": -502.6, - "pChange": -19.8037747744198, - "totalBuyQuantity": 6450, - "totalSellQuantity": 6375, - "bidQty": 150, - "bidprice": 1975.5, - "askQty": 25, - "askPrice": 2012.75, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 25900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25900.00", - "openInterest": 4350, - "changeinOpenInterest": -621, - "pchangeinOpenInterest": -12.4924562462281, - "totalTradedVolume": 23398, - "impliedVolatility": 23.29, - "lastPrice": 1, - "change": -0.7, - "pChange": -41.1764705882353, - "totalBuyQuantity": 149925, - "totalSellQuantity": 10550, - "bidQty": 250, - "bidprice": 1, - "askQty": 1800, - "askPrice": 5, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 25950, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 25950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE25950.00", - "openInterest": 693, - "changeinOpenInterest": 128, - "pchangeinOpenInterest": 22.6548672566372, - "totalTradedVolume": 3835, - "impliedVolatility": 23.8, - "lastPrice": 1, - "change": -0.75, - "pChange": -42.8571428571429, - "totalBuyQuantity": 88400, - "totalSellQuantity": 12700, - "bidQty": 25, - "bidprice": 1, - "askQty": 750, - "askPrice": 1.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 25950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE25950.00", - "openInterest": 58, - "changeinOpenInterest": 2, - "pchangeinOpenInterest": 3.57142857142857, - "totalTradedVolume": 7, - "impliedVolatility": 44.24, - "lastPrice": 2050, - "change": -515, - "pChange": -20.0779727095517, - "totalBuyQuantity": 5050, - "totalSellQuantity": 5575, - "bidQty": 100, - "bidprice": 2039.6, - "askQty": 50, - "askPrice": 2069.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26000, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26000.00", - "openInterest": 40309, - "changeinOpenInterest": -7075, - "pchangeinOpenInterest": -14.9312004052001, - "totalTradedVolume": 9598, - "impliedVolatility": 43.97, - "lastPrice": 2095.15, - "change": -547.35, - "pChange": -20.713339640492, - "totalBuyQuantity": 7350, - "totalSellQuantity": 8800, - "bidQty": 75, - "bidprice": 2087.8, - "askQty": 50, - "askPrice": 2101.9, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26000.00", - "openInterest": 236483, - "changeinOpenInterest": 52068, - "pchangeinOpenInterest": 28.2341458124339, - "totalTradedVolume": 395698, - "impliedVolatility": 24.43, - "lastPrice": 1.05, - "change": -0.65, - "pChange": -38.2352941176471, - "totalBuyQuantity": 1629875, - "totalSellQuantity": 208850, - "bidQty": 9075, - "bidprice": 1.05, - "askQty": 175, - "askPrice": 1.1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26050, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26050.00", - "openInterest": 1341, - "changeinOpenInterest": 244, - "pchangeinOpenInterest": 22.2424794895169, - "totalTradedVolume": 8713, - "impliedVolatility": 24.68, - "lastPrice": 0.95, - "change": -0.8, - "pChange": -45.7142857142857, - "totalBuyQuantity": 89300, - "totalSellQuantity": 21650, - "bidQty": 3575, - "bidprice": 0.95, - "askQty": 1425, - "askPrice": 1.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26050.00", - "openInterest": 149, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2661.45, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4325, - "totalSellQuantity": 4300, - "bidQty": 25, - "bidprice": 2100.1, - "askQty": 625, - "askPrice": 2217.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26100.00", - "openInterest": 10255, - "changeinOpenInterest": -75, - "pchangeinOpenInterest": -0.726040658276864, - "totalTradedVolume": 12323, - "impliedVolatility": 25.04, - "lastPrice": 0.9, - "change": -0.8, - "pChange": -47.0588235294118, - "totalBuyQuantity": 186575, - "totalSellQuantity": 23050, - "bidQty": 7200, - "bidprice": 0.9, - "askQty": 100, - "askPrice": 1.25, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26100.00", - "openInterest": 1496, - "changeinOpenInterest": -24, - "pchangeinOpenInterest": -1.57894736842105, - "totalTradedVolume": 30, - "impliedVolatility": 54.27, - "lastPrice": 2240, - "change": -501.4, - "pChange": -18.289924855913, - "totalBuyQuantity": 4700, - "totalSellQuantity": 4350, - "bidQty": 75, - "bidprice": 2142.25, - "askQty": 100, - "askPrice": 2205.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26150.00", - "openInterest": 706, - "changeinOpenInterest": 246, - "pchangeinOpenInterest": 53.4782608695652, - "totalTradedVolume": 2797, - "impliedVolatility": 26.43, - "lastPrice": 1.25, - "change": -0.45, - "pChange": -26.4705882352941, - "totalBuyQuantity": 78575, - "totalSellQuantity": 23250, - "bidQty": 7200, - "bidprice": 0.9, - "askQty": 3175, - "askPrice": 1.3, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26150.00", - "openInterest": 87, - "changeinOpenInterest": 7, - "pchangeinOpenInterest": 8.75, - "totalTradedVolume": 122, - "impliedVolatility": 52.36, - "lastPrice": 2274.35, - "change": -514.65, - "pChange": -18.4528504840445, - "totalBuyQuantity": 4500, - "totalSellQuantity": 4100, - "bidQty": 25, - "bidprice": 2226.55, - "askQty": 50, - "askPrice": 2270.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26200.00", - "openInterest": 2228, - "changeinOpenInterest": -119, - "pchangeinOpenInterest": -5.07030251384747, - "totalTradedVolume": 145, - "impliedVolatility": 52.65, - "lastPrice": 2321.4, - "change": -520.1, - "pChange": -18.3037128277318, - "totalBuyQuantity": 4375, - "totalSellQuantity": 4475, - "bidQty": 100, - "bidprice": 2288.4, - "askQty": 100, - "askPrice": 2301.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26200.00", - "openInterest": 3851, - "changeinOpenInterest": 523, - "pchangeinOpenInterest": 15.7151442307692, - "totalTradedVolume": 11801, - "impliedVolatility": 26.7, - "lastPrice": 1.15, - "change": -0.55, - "pChange": -32.3529411764706, - "totalBuyQuantity": 170175, - "totalSellQuantity": 29225, - "bidQty": 1450, - "bidprice": 0.95, - "askQty": 2050, - "askPrice": 1.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26250, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26250.00", - "openInterest": 63, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 2, - "impliedVolatility": 71.92, - "lastPrice": 2493.3, - "change": -254.65, - "pChange": -9.26690805873468, - "totalBuyQuantity": 3100, - "totalSellQuantity": 3150, - "bidQty": 325, - "bidprice": 2222.5, - "askQty": 375, - "askPrice": 2457.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26250.00", - "openInterest": 1921, - "changeinOpenInterest": 607, - "pchangeinOpenInterest": 46.1948249619483, - "totalTradedVolume": 6983, - "impliedVolatility": 26.67, - "lastPrice": 0.95, - "change": -0.7, - "pChange": -42.4242424242424, - "totalBuyQuantity": 75500, - "totalSellQuantity": 23175, - "bidQty": 3325, - "bidprice": 0.95, - "askQty": 900, - "askPrice": 2.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26300.00", - "openInterest": 4384, - "changeinOpenInterest": 391, - "pchangeinOpenInterest": 9.79213623841723, - "totalTradedVolume": 11886, - "impliedVolatility": 27.16, - "lastPrice": 0.95, - "change": -0.75, - "pChange": -44.1176470588235, - "totalBuyQuantity": 151150, - "totalSellQuantity": 24175, - "bidQty": 400, - "bidprice": 0.95, - "askQty": 25, - "askPrice": 1.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26300.00", - "openInterest": 1171, - "changeinOpenInterest": 34, - "pchangeinOpenInterest": 2.99032541776605, - "totalTradedVolume": 109, - "impliedVolatility": 59.35, - "lastPrice": 2449.65, - "change": -470.35, - "pChange": -16.1078767123288, - "totalBuyQuantity": 5675, - "totalSellQuantity": 5500, - "bidQty": 100, - "bidprice": 2384, - "askQty": 75, - "askPrice": 2405.7, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26350.00", - "openInterest": 6, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2970, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 1775, - "bidprice": 2257.6, - "askQty": 1250, - "askPrice": 2547, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26350.00", - "openInterest": 440, - "changeinOpenInterest": 126, - "pchangeinOpenInterest": 40.1273885350319, - "totalTradedVolume": 2237, - "impliedVolatility": 27.65, - "lastPrice": 0.95, - "change": -0.7, - "pChange": -42.4242424242424, - "totalBuyQuantity": 78900, - "totalSellQuantity": 22575, - "bidQty": 6800, - "bidprice": 0.9, - "askQty": 150, - "askPrice": 1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26400, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26400.00", - "openInterest": 3754, - "changeinOpenInterest": -544, - "pchangeinOpenInterest": -12.6570497906003, - "totalTradedVolume": 6403, - "impliedVolatility": 27.99, - "lastPrice": 0.9, - "change": -0.75, - "pChange": -45.4545454545455, - "totalBuyQuantity": 205925, - "totalSellQuantity": 22225, - "bidQty": 6850, - "bidprice": 0.9, - "askQty": 900, - "askPrice": 3.6, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26400.00", - "openInterest": 1140, - "changeinOpenInterest": -42, - "pchangeinOpenInterest": -3.55329949238579, - "totalTradedVolume": 190, - "impliedVolatility": 60.56, - "lastPrice": 2546.65, - "change": -502.7, - "pChange": -16.4854805122403, - "totalBuyQuantity": 5525, - "totalSellQuantity": 5400, - "bidQty": 175, - "bidprice": 2476.75, - "askQty": 200, - "askPrice": 2510.6, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26450, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26450.00", - "openInterest": 470, - "changeinOpenInterest": -262, - "pchangeinOpenInterest": -35.792349726776, - "totalTradedVolume": 4909, - "impliedVolatility": 28.48, - "lastPrice": 0.9, - "change": -0.75, - "pChange": -45.4545454545455, - "totalBuyQuantity": 92875, - "totalSellQuantity": 22450, - "bidQty": 1475, - "bidprice": 0.85, - "askQty": 750, - "askPrice": 1.35, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26450.00", - "openInterest": 19, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2934.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4050, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 2499.05, - "askQty": 625, - "askPrice": 2600.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26500, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26500.00", - "openInterest": 43281, - "changeinOpenInterest": 10078, - "pchangeinOpenInterest": 30.3526789747914, - "totalTradedVolume": 174699, - "impliedVolatility": 28.79, - "lastPrice": 0.85, - "change": -0.75, - "pChange": -46.875, - "totalBuyQuantity": 1110500, - "totalSellQuantity": 108900, - "bidQty": 58025, - "bidprice": 0.85, - "askQty": 3725, - "askPrice": 0.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26500.00", - "openInterest": 10093, - "changeinOpenInterest": -905, - "pchangeinOpenInterest": -8.22876886706674, - "totalTradedVolume": 1968, - "impliedVolatility": 56.25, - "lastPrice": 2615, - "change": -535.75, - "pChange": -17.0038879631834, - "totalBuyQuantity": 5750, - "totalSellQuantity": 6200, - "bidQty": 25, - "bidprice": 2596, - "askQty": 25, - "askPrice": 2603.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26550, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26550.00", - "openInterest": 4, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3032.85, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 1775, - "bidprice": 2452.65, - "askQty": 1000, - "askPrice": 2825.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26550.00", - "openInterest": 946, - "changeinOpenInterest": 364, - "pchangeinOpenInterest": 62.5429553264605, - "totalTradedVolume": 2008, - "impliedVolatility": 29.27, - "lastPrice": 0.85, - "change": -0.8, - "pChange": -48.4848484848485, - "totalBuyQuantity": 214825, - "totalSellQuantity": 21725, - "bidQty": 1250, - "bidprice": 0.85, - "askQty": 1325, - "askPrice": 0.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26600, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26600.00", - "openInterest": 10417, - "changeinOpenInterest": 754, - "pchangeinOpenInterest": 7.80295974335093, - "totalTradedVolume": 41266, - "impliedVolatility": 29.58, - "lastPrice": 0.8, - "change": -0.7, - "pChange": -46.6666666666667, - "totalBuyQuantity": 393750, - "totalSellQuantity": 41250, - "bidQty": 4075, - "bidprice": 0.8, - "askQty": 8525, - "askPrice": 0.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26600.00", - "openInterest": 136, - "changeinOpenInterest": -12, - "pchangeinOpenInterest": -8.10810810810811, - "totalTradedVolume": 13, - "impliedVolatility": 54.46, - "lastPrice": 2700, - "change": -546.5, - "pChange": -16.8335130140151, - "totalBuyQuantity": 5875, - "totalSellQuantity": 5275, - "bidQty": 25, - "bidprice": 2676.55, - "askQty": 100, - "askPrice": 2718.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26650, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26650.00", - "openInterest": 1144, - "changeinOpenInterest": 606, - "pchangeinOpenInterest": 112.639405204461, - "totalTradedVolume": 3442, - "impliedVolatility": 31.02, - "lastPrice": 1.1, - "change": -0.5, - "pChange": -31.25, - "totalBuyQuantity": 107775, - "totalSellQuantity": 24425, - "bidQty": 1800, - "bidprice": 0.8, - "askQty": 1800, - "askPrice": 1.2, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26650.00", - "openInterest": 22, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3130.05, - "change": -1.94999999999982, - "pChange": -0.0622605363984616, - "totalBuyQuantity": 4150, - "totalSellQuantity": 4925, - "bidQty": 25, - "bidprice": 2708.85, - "askQty": 1000, - "askPrice": 3019.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26700, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26700.00", - "openInterest": 1626, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.0614628149969269, - "totalTradedVolume": 1, - "impliedVolatility": 88.94, - "lastPrice": 3010, - "change": -135.95, - "pChange": -4.32142913905179, - "totalBuyQuantity": 5725, - "totalSellQuantity": 5375, - "bidQty": 225, - "bidprice": 2776.8, - "askQty": 225, - "askPrice": 2812.65, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26700.00", - "openInterest": 3033, - "changeinOpenInterest": -272, - "pchangeinOpenInterest": -8.22995461422088, - "totalTradedVolume": 5565, - "impliedVolatility": 31.36, - "lastPrice": 1.05, - "change": -0.55, - "pChange": -34.375, - "totalBuyQuantity": 385200, - "totalSellQuantity": 23900, - "bidQty": 4875, - "bidprice": 0.8, - "askQty": 1000, - "askPrice": 1.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26750.00", - "openInterest": 862, - "changeinOpenInterest": -266, - "pchangeinOpenInterest": -23.5815602836879, - "totalTradedVolume": 8818, - "impliedVolatility": 31.18, - "lastPrice": 0.85, - "change": -0.7, - "pChange": -45.1612903225807, - "totalBuyQuantity": 134150, - "totalSellQuantity": 31675, - "bidQty": 2675, - "bidprice": 0.85, - "askQty": 1400, - "askPrice": 1.65, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26750.00", - "openInterest": 19, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 111.66, - "lastPrice": 3253.75, - "change": 26.3000000000002, - "pChange": 0.814884816186159, - "totalBuyQuantity": 3900, - "totalSellQuantity": 3275, - "bidQty": 50, - "bidprice": 2804.6, - "askQty": 275, - "askPrice": 2944.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26800.00", - "openInterest": 10560, - "changeinOpenInterest": -3619, - "pchangeinOpenInterest": -25.5236617532971, - "totalTradedVolume": 8136, - "impliedVolatility": 31.46, - "lastPrice": 0.8, - "change": -0.85, - "pChange": -51.5151515151515, - "totalBuyQuantity": 319675, - "totalSellQuantity": 37925, - "bidQty": 300, - "bidprice": 0.8, - "askQty": 2575, - "askPrice": 1.55, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26800.00", - "openInterest": 149, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -0.666666666666667, - "totalTradedVolume": 3, - "impliedVolatility": 56.38, - "lastPrice": 2895.65, - "change": -555.25, - "pChange": -16.0900055058101, - "totalBuyQuantity": 4450, - "totalSellQuantity": 4275, - "bidQty": 450, - "bidprice": 2881, - "askQty": 25, - "askPrice": 2903.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26850.00", - "openInterest": 914, - "changeinOpenInterest": 53, - "pchangeinOpenInterest": 6.15563298490128, - "totalTradedVolume": 2063, - "impliedVolatility": 31.93, - "lastPrice": 0.8, - "change": -0.75, - "pChange": -48.3870967741935, - "totalBuyQuantity": 95600, - "totalSellQuantity": 20550, - "bidQty": 5925, - "bidprice": 0.8, - "askQty": 25, - "askPrice": 1.15, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26850.00", - "openInterest": 33, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 103.33, - "lastPrice": 3257.95, - "change": 79.7999999999997, - "pChange": 2.51089470289318, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4525, - "bidQty": 625, - "bidprice": 2893.45, - "askQty": 125, - "askPrice": 3014.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26900, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 26900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26900.00", - "openInterest": 2111, - "changeinOpenInterest": -137, - "pchangeinOpenInterest": -6.09430604982206, - "totalTradedVolume": 8030, - "impliedVolatility": 32.39, - "lastPrice": 0.8, - "change": -0.7, - "pChange": -46.6666666666667, - "totalBuyQuantity": 345925, - "totalSellQuantity": 24550, - "bidQty": 250, - "bidprice": 0.8, - "askQty": 300, - "askPrice": 1.1, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 26900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26900.00", - "openInterest": 186, - "changeinOpenInterest": -6, - "pchangeinOpenInterest": -3.125, - "totalTradedVolume": 6, - "impliedVolatility": 58.98, - "lastPrice": 3000, - "change": -550, - "pChange": -15.4929577464789, - "totalBuyQuantity": 4275, - "totalSellQuantity": 4275, - "bidQty": 100, - "bidprice": 2967.65, - "askQty": 900, - "askPrice": 3043.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 26950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 26950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE26950.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3426.5, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3700, - "totalSellQuantity": 3675, - "bidQty": 25, - "bidprice": 2972.05, - "askQty": 1000, - "askPrice": 3177.1, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 26950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE26950.00", - "openInterest": 683, - "changeinOpenInterest": 205, - "pchangeinOpenInterest": 42.8870292887029, - "totalTradedVolume": 4558, - "impliedVolatility": 33.58, - "lastPrice": 1, - "change": -0.55, - "pChange": -35.4838709677419, - "totalBuyQuantity": 90975, - "totalSellQuantity": 20175, - "bidQty": 10800, - "bidprice": 0.7, - "askQty": 200, - "askPrice": 1, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27000, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27000.00", - "openInterest": 104572, - "changeinOpenInterest": 2538, - "pchangeinOpenInterest": 2.4874061587314, - "totalTradedVolume": 239189, - "impliedVolatility": 33.12, - "lastPrice": 0.75, - "change": -0.7, - "pChange": -48.2758620689655, - "totalBuyQuantity": 1090350, - "totalSellQuantity": 143300, - "bidQty": 272050, - "bidprice": 0.75, - "askQty": 26375, - "askPrice": 0.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27000, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27000.00", - "openInterest": 19705, - "changeinOpenInterest": -399, - "pchangeinOpenInterest": -1.98467966573816, - "totalTradedVolume": 1401, - "impliedVolatility": 63.99, - "lastPrice": 3114.75, - "change": -533.25, - "pChange": -14.6175986842105, - "totalBuyQuantity": 4950, - "totalSellQuantity": 7200, - "bidQty": 50, - "bidprice": 3091.5, - "askQty": 275, - "askPrice": 3105.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27050, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27050.00", - "openInterest": 302, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 841.05, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4200, - "bidQty": 625, - "bidprice": 3088.95, - "askQty": 625, - "askPrice": 3201.25, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27050, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27050.00", - "openInterest": 1938, - "changeinOpenInterest": 674, - "pchangeinOpenInterest": 53.3227848101266, - "totalTradedVolume": 5924, - "impliedVolatility": 34.52, - "lastPrice": 1, - "change": -0.6, - "pChange": -37.5, - "totalBuyQuantity": 68975, - "totalSellQuantity": 28075, - "bidQty": 2700, - "bidprice": 0.75, - "askQty": 750, - "askPrice": 1.15, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27100, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27100.00", - "openInterest": 5893, - "changeinOpenInterest": 3523, - "pchangeinOpenInterest": 148.649789029536, - "totalTradedVolume": 33932, - "impliedVolatility": 34.24, - "lastPrice": 0.8, - "change": -0.75, - "pChange": -48.3870967741935, - "totalBuyQuantity": 470750, - "totalSellQuantity": 55275, - "bidQty": 2025, - "bidprice": 0.75, - "askQty": 8250, - "askPrice": 0.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27100, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27100.00", - "openInterest": 79, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 1, - "impliedVolatility": 56.07, - "lastPrice": 3180, - "change": -404.6, - "pChange": -11.2871729063215, - "totalBuyQuantity": 5325, - "totalSellQuantity": 5300, - "bidQty": 50, - "bidprice": 3159.4, - "askQty": 50, - "askPrice": 3208.4, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27150, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27150.00", - "openInterest": 2656, - "changeinOpenInterest": 442, - "pchangeinOpenInterest": 19.9638663053297, - "totalTradedVolume": 6086, - "impliedVolatility": 34.7, - "lastPrice": 0.8, - "change": -0.75, - "pChange": -48.3870967741935, - "totalBuyQuantity": 80750, - "totalSellQuantity": 24325, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 650, - "askPrice": 0.9, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27150, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27150.00", - "openInterest": 3, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3625.4, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 3675, - "bidQty": 900, - "bidprice": 2866.65, - "askQty": 1000, - "askPrice": 3361.05, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27200, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27200.00", - "openInterest": 112, - "changeinOpenInterest": -9, - "pchangeinOpenInterest": -7.43801652892562, - "totalTradedVolume": 23, - "impliedVolatility": 57.45, - "lastPrice": 3280, - "change": -89.9000000000001, - "pChange": -2.66773494762456, - "totalBuyQuantity": 3975, - "totalSellQuantity": 3950, - "bidQty": 75, - "bidprice": 3268.85, - "askQty": 50, - "askPrice": 3319.6, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27200, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27200.00", - "openInterest": 4556, - "changeinOpenInterest": 383, - "pchangeinOpenInterest": 9.17804936496525, - "totalTradedVolume": 8457, - "impliedVolatility": 35.74, - "lastPrice": 0.95, - "change": -0.5, - "pChange": -34.4827586206897, - "totalBuyQuantity": 177000, - "totalSellQuantity": 26800, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 1625, - "askPrice": 0.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27250, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27250.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3285.6, - "askQty": 625, - "askPrice": 3401.45, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27250, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27250.00", - "openInterest": 1667, - "changeinOpenInterest": 477, - "pchangeinOpenInterest": 40.0840336134454, - "totalTradedVolume": 3737, - "impliedVolatility": 35.4, - "lastPrice": 0.75, - "change": -0.75, - "pChange": -50, - "totalBuyQuantity": 103825, - "totalSellQuantity": 30725, - "bidQty": 8750, - "bidprice": 0.7, - "askQty": 750, - "askPrice": 1.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27300, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27300.00", - "openInterest": 4323, - "changeinOpenInterest": 1394, - "pchangeinOpenInterest": 47.5930351655855, - "totalTradedVolume": 15280, - "impliedVolatility": 35.85, - "lastPrice": 0.75, - "change": -0.8, - "pChange": -51.6129032258065, - "totalBuyQuantity": 243425, - "totalSellQuantity": 45125, - "bidQty": 4225, - "bidprice": 0.75, - "askQty": 50, - "askPrice": 0.8, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27300, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27300.00", - "openInterest": 12, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -7.69230769230769, - "totalTradedVolume": 9, - "impliedVolatility": 69.71, - "lastPrice": 3420, - "change": -221, - "pChange": -6.06976105465531, - "totalBuyQuantity": 5550, - "totalSellQuantity": 5525, - "bidQty": 625, - "bidprice": 3342.8, - "askQty": 350, - "askPrice": 3419.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27350, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27350.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 0, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 3675, - "totalSellQuantity": 2925, - "bidQty": 1775, - "bidprice": 3287.75, - "askQty": 250, - "askPrice": 3567, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27350, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27350.00", - "openInterest": 2410, - "changeinOpenInterest": 695, - "pchangeinOpenInterest": 40.5247813411079, - "totalTradedVolume": 5677, - "impliedVolatility": 36.07, - "lastPrice": 0.7, - "change": -0.8, - "pChange": -53.3333333333333, - "totalBuyQuantity": 106100, - "totalSellQuantity": 26625, - "bidQty": 7175, - "bidprice": 0.7, - "askQty": 50, - "askPrice": 1.2, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27400, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27400.00", - "openInterest": 27, - "changeinOpenInterest": -7, - "pchangeinOpenInterest": -20.5882352941177, - "totalTradedVolume": 9, - "impliedVolatility": 73.4, - "lastPrice": 3530, - "change": -242, - "pChange": -6.41569459172853, - "totalBuyQuantity": 4300, - "totalSellQuantity": 5125, - "bidQty": 275, - "bidprice": 3449.4, - "askQty": 25, - "askPrice": 3521.55, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27400, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27400.00", - "openInterest": 8737, - "changeinOpenInterest": 2778, - "pchangeinOpenInterest": 46.6185601611009, - "totalTradedVolume": 28785, - "impliedVolatility": 36.75, - "lastPrice": 0.75, - "change": -0.7, - "pChange": -48.2758620689655, - "totalBuyQuantity": 331075, - "totalSellQuantity": 31625, - "bidQty": 1850, - "bidprice": 0.75, - "askQty": 2500, - "askPrice": 0.95, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27450, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27450.00", - "openInterest": 12, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2860, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3476.25, - "askQty": 625, - "askPrice": 3600.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27450, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27450.00", - "openInterest": 10825, - "changeinOpenInterest": 752, - "pchangeinOpenInterest": 7.46550183659287, - "totalTradedVolume": 15884, - "impliedVolatility": 37.64, - "lastPrice": 0.85, - "change": -0.7, - "pChange": -45.1612903225807, - "totalBuyQuantity": 144275, - "totalSellQuantity": 84350, - "bidQty": 3875, - "bidprice": 0.8, - "askQty": 225, - "askPrice": 0.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27500, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27500.00", - "openInterest": 4279, - "changeinOpenInterest": -236, - "pchangeinOpenInterest": -5.22702104097453, - "totalTradedVolume": 291, - "impliedVolatility": 72.7, - "lastPrice": 3620.05, - "change": -520.8, - "pChange": -12.5771278843716, - "totalBuyQuantity": 6075, - "totalSellQuantity": 5375, - "bidQty": 50, - "bidprice": 3573.35, - "askQty": 50, - "askPrice": 3603.8, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27500, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27500.00", - "openInterest": 62295, - "changeinOpenInterest": 13031, - "pchangeinOpenInterest": 26.4513640792465, - "totalTradedVolume": 225638, - "impliedVolatility": 37.64, - "lastPrice": 0.75, - "change": -0.65, - "pChange": -46.4285714285714, - "totalBuyQuantity": 1354075, - "totalSellQuantity": 208850, - "bidQty": 109925, - "bidprice": 0.75, - "askQty": 4050, - "askPrice": 0.8, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27550, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27550.00", - "openInterest": 16053, - "changeinOpenInterest": 7537, - "pchangeinOpenInterest": 88.5039924847346, - "totalTradedVolume": 48945, - "impliedVolatility": 38.54, - "lastPrice": 0.85, - "change": -0.55, - "pChange": -39.2857142857143, - "totalBuyQuantity": 120975, - "totalSellQuantity": 97250, - "bidQty": 6800, - "bidprice": 0.7, - "askQty": 5500, - "askPrice": 0.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27550, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27550.00", - "openInterest": 13, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 2990, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 900, - "bidprice": 3376.15, - "askQty": 3025, - "askPrice": 3940.25, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27600, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27600.00", - "openInterest": 14, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -6.66666666666667, - "totalTradedVolume": 9, - "impliedVolatility": 69.13, - "lastPrice": 3700, - "change": -371.65, - "pChange": -9.12774919258777, - "totalBuyQuantity": 5475, - "totalSellQuantity": 5475, - "bidQty": 375, - "bidprice": 3644.35, - "askQty": 900, - "askPrice": 3748.4, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27600, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27600.00", - "openInterest": 10775, - "changeinOpenInterest": 3170, - "pchangeinOpenInterest": 41.6831032215648, - "totalTradedVolume": 31877, - "impliedVolatility": 38.53, - "lastPrice": 0.75, - "change": -0.7, - "pChange": -48.2758620689655, - "totalBuyQuantity": 328575, - "totalSellQuantity": 135975, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 3600, - "askPrice": 0.9, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27650, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27650.00", - "openInterest": 14, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3705, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4300, - "totalSellQuantity": 4300, - "bidQty": 1775, - "bidprice": 3507.15, - "askQty": 625, - "askPrice": 3820, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27650, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27650.00", - "openInterest": 21271, - "changeinOpenInterest": 14007, - "pchangeinOpenInterest": 192.827643171806, - "totalTradedVolume": 72024, - "impliedVolatility": 38.97, - "lastPrice": 0.75, - "change": -0.65, - "pChange": -46.4285714285714, - "totalBuyQuantity": 184200, - "totalSellQuantity": 101425, - "bidQty": 7200, - "bidprice": 0.7, - "askQty": 2650, - "askPrice": 0.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27700, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27700.00", - "openInterest": 26, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 125.2, - "lastPrice": 4155.65, - "change": -24.3500000000004, - "pChange": -0.582535885167473, - "totalBuyQuantity": 4400, - "totalSellQuantity": 4250, - "bidQty": 100, - "bidprice": 3781.3, - "askQty": 100, - "askPrice": 3851.15, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27700, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27700.00", - "openInterest": 20535, - "changeinOpenInterest": 6516, - "pchangeinOpenInterest": 46.4797774448962, - "totalTradedVolume": 55861, - "impliedVolatility": 39.42, - "lastPrice": 0.75, - "change": -0.6, - "pChange": -44.4444444444445, - "totalBuyQuantity": 324325, - "totalSellQuantity": 112925, - "bidQty": 6875, - "bidprice": 0.7, - "askQty": 2450, - "askPrice": 0.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27750, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27750.00", - "openInterest": 66035, - "changeinOpenInterest": 52556, - "pchangeinOpenInterest": 389.910230729283, - "totalTradedVolume": 392941, - "impliedVolatility": 39.85, - "lastPrice": 0.75, - "change": -0.65, - "pChange": -46.4285714285714, - "totalBuyQuantity": 768475, - "totalSellQuantity": 699300, - "bidQty": 236475, - "bidprice": 0.7, - "askQty": 159725, - "askPrice": 0.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27750, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27750.00", - "openInterest": 10, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 3746.2, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3795.55, - "askQty": 625, - "askPrice": 3903.85, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27800, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27800.00", - "openInterest": 50518, - "changeinOpenInterest": 7235, - "pchangeinOpenInterest": 16.7155696231777, - "totalTradedVolume": 105779, - "impliedVolatility": 40.29, - "lastPrice": 0.75, - "change": -0.5, - "pChange": -40, - "totalBuyQuantity": 429875, - "totalSellQuantity": 52500, - "bidQty": 2525, - "bidprice": 0.75, - "askQty": 375, - "askPrice": 0.85, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27800, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27800.00", - "openInterest": 2, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 4242.1, - "change": 1.45000000000073, - "pChange": 0.0341928713758676, - "totalBuyQuantity": 4925, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3845, - "askQty": 625, - "askPrice": 3952.65, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27850, - "expiryDate": "28-Nov-2024", - "CE": { - "strikePrice": 27850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27850.00", - "openInterest": 51594, - "changeinOpenInterest": 12935, - "pchangeinOpenInterest": 33.4592203626581, - "totalTradedVolume": 127715, - "impliedVolatility": 40.48, - "lastPrice": 0.7, - "change": -0.55, - "pChange": -44, - "totalBuyQuantity": 549175, - "totalSellQuantity": 82400, - "bidQty": 36400, - "bidprice": 0.7, - "askQty": 5875, - "askPrice": 0.75, - "underlyingValue": 23907.25 - }, - "PE": { - "strikePrice": 27850, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27850.00", - "openInterest": 0, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 8, - "impliedVolatility": 129.33, - "lastPrice": 4317.15, - "change": -93.1000000000004, - "pChange": -2.11099144039454, - "totalBuyQuantity": 5200, - "totalSellQuantity": 4850, - "bidQty": 50, - "bidprice": 3898.25, - "askQty": 550, - "askPrice": 4032.3, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27900, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27900.00", - "openInterest": 105, - "changeinOpenInterest": 0, - "pchangeinOpenInterest": 0, - "totalTradedVolume": 0, - "impliedVolatility": 0, - "lastPrice": 4361.8, - "change": 0, - "pChange": 0, - "totalBuyQuantity": 4950, - "totalSellQuantity": 4925, - "bidQty": 625, - "bidprice": 3931.95, - "askQty": 625, - "askPrice": 4053.95, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27900, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27900.00", - "openInterest": 112821, - "changeinOpenInterest": 18218, - "pchangeinOpenInterest": 19.2573174212234, - "totalTradedVolume": 327682, - "impliedVolatility": 41.17, - "lastPrice": 0.75, - "change": -0.55, - "pChange": -42.3076923076923, - "totalBuyQuantity": 1540200, - "totalSellQuantity": 452925, - "bidQty": 205075, - "bidprice": 0.7, - "askQty": 143900, - "askPrice": 0.75, - "underlyingValue": 23907.25 - } - }, - { - "strikePrice": 27950, - "expiryDate": "28-Nov-2024", - "PE": { - "strikePrice": 27950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024PE27950.00", - "openInterest": 5, - "changeinOpenInterest": -1, - "pchangeinOpenInterest": -16.6666666666667, - "totalTradedVolume": 1, - "impliedVolatility": 123.19, - "lastPrice": 4350, - "change": -80, - "pChange": -1.8058690744921, - "totalBuyQuantity": 5150, - "totalSellQuantity": 4550, - "bidQty": 225, - "bidprice": 4027.05, - "askQty": 300, - "askPrice": 4110.85, - "underlyingValue": 23907.25 - }, - "CE": { - "strikePrice": 27950, - "expiryDate": "28-Nov-2024", - "underlying": "NIFTY", - "identifier": "OPTIDXNIFTY28-11-2024CE27950.00", - "openInterest": 146886, - "changeinOpenInterest": 26503, - "pchangeinOpenInterest": 22.015566982049, - "totalTradedVolume": 725475, - "impliedVolatility": 41.34, - "lastPrice": 0.7, - "change": -0.55, - "pChange": -44, - "totalBuyQuantity": 2808475, - "totalSellQuantity": 414100, - "bidQty": 456200, - "bidprice": 0.7, - "askQty": 11425, - "askPrice": 0.75, - "underlyingValue": 23907.25 - } - } - ], - "CE": { - "totOI": 4393060, - "totVol": 58687943 - }, - "PE": { - "totOI": 5010524, - "totVol": 44927716 - } - } -} \ No newline at end of file diff --git a/utils_v2/nse/options/examples/20241128_formatted_nse_nifty_option_chain.json b/utils_v2/nse/options/examples/20241128_formatted_nse_nifty_option_chain.json deleted file mode 100644 index 5e7574d..0000000 --- a/utils_v2/nse/options/examples/20241128_formatted_nse_nifty_option_chain.json +++ /dev/null @@ -1,34811 +0,0 @@ -[ - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2900, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 2140.95, - "askQty": 1000, - "askPrice": 2549.45 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21600.00", - "oi": 156422, - "oiChg": -24997, - "oiPctChg": -13.778600918316164, - "totTradedVol": 1024948, - "iv": 57.24, - "ltp": 0.05, - "change": -0.4, - "pChange": -88.8888888888889, - "totBuyQty": 0, - "totSellQty": 2194575, - "bidQty": 0, - "bidPrice": 0, - "askQty": 771900, - "askPrice": 0.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2900, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 2104.95, - "askQty": 1000, - "askPrice": 2608.65 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21650.00", - "oi": 22442, - "oiChg": -12802, - "oiPctChg": -36.323913290205425, - "totTradedVol": 216454, - "iv": 58.9, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 2536575, - "totSellQty": 495875, - "bidQty": 940250, - "bidPrice": 0.1, - "askQty": 173525, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21700.00", - "oi": 8, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 164.94, - "ltp": 2370, - "change": -260, - "pChange": -9.885931558935361, - "totBuyQty": 5925, - "totSellQty": 6225, - "bidQty": 225, - "bidPrice": 2204.55, - "askQty": 225, - "askPrice": 2235.7 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21700.00", - "oi": 143439, - "oiChg": -107328, - "oiPctChg": -42.799889937671225, - "totTradedVol": 753387, - "iv": 54.83, - "ltp": 0.1, - "change": -0.5, - "pChange": -83.33333333333334, - "totBuyQty": 1318375, - "totSellQty": 1531225, - "bidQty": 1318375, - "bidPrice": 0.05, - "askQty": 1018725, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21750.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 2016.05, - "askQty": 1000, - "askPrice": 2394.45 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21750.00", - "oi": 33539, - "oiChg": -12426, - "oiPctChg": -27.033612531273796, - "totTradedVol": 137064, - "iv": 58.19, - "ltp": 0.1, - "change": -0.5, - "pChange": -83.33333333333334, - "totBuyQty": 1833525, - "totSellQty": 509125, - "bidQty": 843025, - "bidPrice": 0.1, - "askQty": 131275, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21800.00", - "oi": 10, - "oiChg": -7, - "oiPctChg": -41.1764705882353, - "totTradedVol": 13, - "iv": 121.15, - "ltp": 2190, - "change": -228.44999999999982, - "pChange": -9.446132853687272, - "totBuyQty": 7200, - "totSellQty": 6100, - "bidQty": 50, - "bidPrice": 2081.2, - "askQty": 50, - "askPrice": 2131 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21800.00", - "oi": 40201, - "oiChg": -68584, - "oiPctChg": -63.04545663464632, - "totTradedVol": 539665, - "iv": 55.14, - "ltp": 0.1, - "change": -0.55, - "pChange": -84.61538461538461, - "totBuyQty": 3296625, - "totSellQty": 739950, - "bidQty": 1207475, - "bidPrice": 0.1, - "askQty": 383700, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21850.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 1917.75, - "askQty": 1000, - "askPrice": 2239.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21850.00", - "oi": 15676, - "oiChg": -6552, - "oiPctChg": -29.476336152600325, - "totTradedVol": 405981, - "iv": 53.89, - "ltp": 0.1, - "change": -0.55, - "pChange": -84.61538461538461, - "totBuyQty": 18150, - "totSellQty": 441150, - "bidQty": 18150, - "bidPrice": 0.05, - "askQty": 243750, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21900.00", - "oi": 5, - "oiChg": 1, - "oiPctChg": 25, - "totTradedVol": 3, - "iv": 172.18, - "ltp": 2220.4, - "change": -129.5999999999999, - "pChange": -5.514893617021273, - "totBuyQty": 6300, - "totSellQty": 6125, - "bidQty": 50, - "bidPrice": 1979.15, - "askQty": 50, - "askPrice": 2037.85 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21900.00", - "oi": 27562, - "oiChg": -27154, - "oiPctChg": -49.627165728488926, - "totTradedVol": 379573, - "iv": 52.65, - "ltp": 0.1, - "change": -0.55, - "pChange": -84.61538461538461, - "totBuyQty": 785650, - "totSellQty": 266100, - "bidQty": 785650, - "bidPrice": 0.05, - "askQty": 34475, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE21950.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 1781.35, - "askQty": 1000, - "askPrice": 2198.4 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE21950.00", - "oi": 9875, - "oiChg": 1189, - "oiPctChg": 13.688694450840433, - "totTradedVol": 229783, - "iv": 51.4, - "ltp": 0.1, - "change": -0.6, - "pChange": -85.71428571428572, - "totBuyQty": 193550, - "totSellQty": 217400, - "bidQty": 193550, - "bidPrice": 0.05, - "askQty": 14200, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22000.00", - "oi": 1042, - "oiChg": -136, - "oiPctChg": -11.544991511035654, - "totTradedVol": 513, - "iv": 94.64, - "ltp": 1920, - "change": -385.1999999999998, - "pChange": -16.71004685059864, - "totBuyQty": 10200, - "totSellQty": 10775, - "bidQty": 50, - "bidPrice": 1916.4, - "askQty": 225, - "askPrice": 1920.95 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22000.00", - "oi": 100779, - "oiChg": -29755, - "oiPctChg": -22.794827401290085, - "totTradedVol": 593302, - "iv": 50.15, - "ltp": 0.1, - "change": -0.55, - "pChange": -84.61538461538461, - "totBuyQty": 226400, - "totSellQty": 932975, - "bidQty": 226400, - "bidPrice": 0.05, - "askQty": 557625, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22050.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5300, - "totSellQty": 5300, - "bidQty": 1000, - "bidPrice": 1691.55, - "askQty": 1000, - "askPrice": 1939.35 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22050.00", - "oi": 13217, - "oiChg": 4474, - "oiPctChg": 51.17236646460025, - "totTradedVol": 104358, - "iv": 46.47, - "ltp": 0.05, - "change": -0.6499999999999999, - "pChange": -92.85714285714285, - "totBuyQty": 161975, - "totSellQty": 461775, - "bidQty": 161975, - "bidPrice": 0.05, - "askQty": 219350, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22100.00", - "oi": 70, - "oiChg": -13, - "oiPctChg": -15.662650602409638, - "totTradedVol": 30, - "iv": 97.6, - "ltp": 1875, - "change": -308.1999999999998, - "pChange": -14.116892634664705, - "totBuyQty": 8350, - "totSellQty": 7750, - "bidQty": 1000, - "bidPrice": 1799.85, - "askQty": 1000, - "askPrice": 1851.95 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22100.00", - "oi": 17946, - "oiChg": -3995, - "oiPctChg": -18.207921243334397, - "totTradedVol": 139080, - "iv": 47.66, - "ltp": 0.1, - "change": -0.6, - "pChange": -85.71428571428572, - "totBuyQty": 208500, - "totSellQty": 255150, - "bidQty": 208500, - "bidPrice": 0.05, - "askQty": 49700, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22150.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4700, - "bidQty": 1000, - "bidPrice": 1664.45, - "askQty": 1000, - "askPrice": 1820.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22150.00", - "oi": 8460, - "oiChg": 670, - "oiPctChg": 8.600770218228497, - "totTradedVol": 41606, - "iv": 46.42, - "ltp": 0.1, - "change": -0.6, - "pChange": -85.71428571428572, - "totBuyQty": 262200, - "totSellQty": 224225, - "bidQty": 60975, - "bidPrice": 0.1, - "askQty": 21025, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22200.00", - "oi": 14, - "oiChg": -25, - "oiPctChg": -64.1025641025641, - "totTradedVol": 34, - "iv": 81.43, - "ltp": 1760.65, - "change": -398.25, - "pChange": -18.446894251702258, - "totBuyQty": 8125, - "totSellQty": 8375, - "bidQty": 300, - "bidPrice": 1710.95, - "askQty": 300, - "askPrice": 1732.9 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22200.00", - "oi": 19942, - "oiChg": -12891, - "oiPctChg": -39.262327536320164, - "totTradedVol": 111328, - "iv": 45.17, - "ltp": 0.05, - "change": -0.7, - "pChange": -93.33333333333333, - "totBuyQty": 303350, - "totSellQty": 211350, - "bidQty": 303350, - "bidPrice": 0.05, - "askQty": 18875, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22250.00", - "oi": 9, - "oiChg": -1, - "oiPctChg": -10, - "totTradedVol": 5, - "iv": 126.85, - "ltp": 1799.55, - "change": 509.20000000000005, - "pChange": 39.46216142906964, - "totBuyQty": 5600, - "totSellQty": 6150, - "bidQty": 125, - "bidPrice": 1610.55, - "askQty": 525, - "askPrice": 1723.65 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22250.00", - "oi": 8457, - "oiChg": -2859, - "oiPctChg": -25.265111346765643, - "totTradedVol": 30539, - "iv": 43.93, - "ltp": 0.1, - "change": -0.6, - "pChange": -85.71428571428572, - "totBuyQty": 178850, - "totSellQty": 244200, - "bidQty": 39825, - "bidPrice": 0.1, - "askQty": 13425, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22300.00", - "oi": 95, - "oiChg": -41, - "oiPctChg": -30.147058823529413, - "totTradedVol": 61, - "iv": 102.33, - "ltp": 1698.65, - "change": -293.54999999999995, - "pChange": -14.734966368838467, - "totBuyQty": 7925, - "totSellQty": 8350, - "bidQty": 75, - "bidPrice": 1613.55, - "askQty": 500, - "askPrice": 1620.35 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22300.00", - "oi": 26884, - "oiChg": -6403, - "oiPctChg": -19.235737675368764, - "totTradedVol": 151771, - "iv": 42.69, - "ltp": 0.05, - "change": -0.7, - "pChange": -93.33333333333333, - "totBuyQty": 499000, - "totSellQty": 478550, - "bidQty": 499000, - "bidPrice": 0.05, - "askQty": 166600, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22350.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 1471.35, - "askQty": 1000, - "askPrice": 1766.65 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22350.00", - "oi": 7029, - "oiChg": -767, - "oiPctChg": -9.838378655720883, - "totTradedVol": 34598, - "iv": 41.45, - "ltp": 0.1, - "change": -0.65, - "pChange": -86.66666666666667, - "totBuyQty": 348775, - "totSellQty": 205200, - "bidQty": 63450, - "bidPrice": 0.1, - "askQty": 28800, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22400.00", - "oi": 145, - "oiChg": -39, - "oiPctChg": -21.195652173913043, - "totTradedVol": 55, - "iv": 47.29, - "ltp": 1546.45, - "change": -358.64999999999986, - "pChange": -18.82578342344233, - "totBuyQty": 8650, - "totSellQty": 8375, - "bidQty": 75, - "bidPrice": 1514.25, - "askQty": 225, - "askPrice": 1531.25 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22400.00", - "oi": 26097, - "oiChg": -11908, - "oiPctChg": -31.332719379029076, - "totTradedVol": 109697, - "iv": 40.2, - "ltp": 0.1, - "change": -0.65, - "pChange": -86.66666666666667, - "totBuyQty": 662300, - "totSellQty": 576050, - "bidQty": 176400, - "bidPrice": 0.1, - "askQty": 82325, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22450.00", - "oi": 276, - "oiChg": -173, - "oiPctChg": -38.530066815144764, - "totTradedVol": 360, - "iv": 95.67, - "ltp": 1550, - "change": -312.9000000000001, - "pChange": -16.79639272102636, - "totBuyQty": 12200, - "totSellQty": 11625, - "bidQty": 75, - "bidPrice": 1461.05, - "askQty": 100, - "askPrice": 1472.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22450.00", - "oi": 11945, - "oiChg": -5046, - "oiPctChg": -29.69807545170973, - "totTradedVol": 62408, - "iv": 40.27, - "ltp": 0.1, - "change": -0.65, - "pChange": -86.66666666666667, - "totBuyQty": 116175, - "totSellQty": 263800, - "bidQty": 116175, - "bidPrice": 0.05, - "askQty": 8600, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22500.00", - "oi": 12023, - "oiChg": -417, - "oiPctChg": -3.352090032154341, - "totTradedVol": 4002, - "iv": 0, - "ltp": 1422.05, - "change": -384.35000000000014, - "pChange": -21.27712577502215, - "totBuyQty": 17200, - "totSellQty": 15725, - "bidQty": 125, - "bidPrice": 1416.75, - "askQty": 75, - "askPrice": 1419.65 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22500.00", - "oi": 177814, - "oiChg": -71813, - "oiPctChg": -28.768122038080815, - "totTradedVol": 732563, - "iv": 37.72, - "ltp": 0.1, - "change": -0.65, - "pChange": -86.66666666666667, - "totBuyQty": 1732075, - "totSellQty": 962350, - "bidQty": 1732075, - "bidPrice": 0.05, - "askQty": 47500, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22550.00", - "oi": 2968, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4700, - "totSellQty": 8275, - "bidQty": 1000, - "bidPrice": 1337.2, - "askQty": 1000, - "askPrice": 1384.45 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22550.00", - "oi": 9961, - "oiChg": -2449, - "oiPctChg": -19.734085414987913, - "totTradedVol": 67309, - "iv": 34.6, - "ltp": 0.05, - "change": -0.7, - "pChange": -93.33333333333333, - "totBuyQty": 111425, - "totSellQty": 179525, - "bidQty": 111425, - "bidPrice": 0.05, - "askQty": 37075, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22600.00", - "oi": 290, - "oiChg": -186, - "oiPctChg": -39.075630252100844, - "totTradedVol": 237, - "iv": 0, - "ltp": 1249.65, - "change": -475.64999999999986, - "pChange": -27.569118414188832, - "totBuyQty": 11525, - "totSellQty": 12775, - "bidQty": 50, - "bidPrice": 1313.7, - "askQty": 75, - "askPrice": 1320.85 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22600.00", - "oi": 25922, - "oiChg": -9552, - "oiPctChg": -26.926763263235046, - "totTradedVol": 128210, - "iv": 33.41, - "ltp": 0.05, - "change": -0.75, - "pChange": -93.75, - "totBuyQty": 1072000, - "totSellQty": 620950, - "bidQty": 1072000, - "bidPrice": 0.05, - "askQty": 163625, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22650.00", - "oi": 468, - "oiChg": 1, - "oiPctChg": 0.21413276231263384, - "totTradedVol": 2, - "iv": 74.44, - "ltp": 1327.15, - "change": -223.44999999999982, - "pChange": -14.410550754546616, - "totBuyQty": 13775, - "totSellQty": 12575, - "bidQty": 75, - "bidPrice": 1263.7, - "askQty": 75, - "askPrice": 1280.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22650.00", - "oi": 9973, - "oiChg": -3900, - "oiPctChg": -28.112160311396238, - "totTradedVol": 90818, - "iv": 32.22, - "ltp": 0.05, - "change": -0.75, - "pChange": -93.75, - "totBuyQty": 271900, - "totSellQty": 257500, - "bidQty": 271900, - "bidPrice": 0.05, - "askQty": 82050, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22700.00", - "oi": 208, - "oiChg": -24, - "oiPctChg": -10.344827586206897, - "totTradedVol": 103, - "iv": 0, - "ltp": 1215.3, - "change": -415.04999999999995, - "pChange": -25.457723801637684, - "totBuyQty": 11750, - "totSellQty": 12125, - "bidQty": 100, - "bidPrice": 1218.15, - "askQty": 75, - "askPrice": 1222.5 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22700.00", - "oi": 29321, - "oiChg": -9578, - "oiPctChg": -24.622740944497288, - "totTradedVol": 210805, - "iv": 32.75, - "ltp": 0.1, - "change": -0.7000000000000001, - "pChange": -87.5, - "totBuyQty": 450475, - "totSellQty": 331875, - "bidQty": 450475, - "bidPrice": 0.05, - "askQty": 47100, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22750.00", - "oi": 621, - "oiChg": -26, - "oiPctChg": -4.01854714064915, - "totTradedVol": 343, - "iv": 59.31, - "ltp": 1173.7, - "change": -377.54999999999995, - "pChange": -24.338436744560834, - "totBuyQty": 14550, - "totSellQty": 15200, - "bidQty": 175, - "bidPrice": 1168.55, - "askQty": 125, - "askPrice": 1172.25 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22750.00", - "oi": 13135, - "oiChg": -2846, - "oiPctChg": -17.808647769225956, - "totTradedVol": 102157, - "iv": 31.51, - "ltp": 0.1, - "change": -0.7000000000000001, - "pChange": -87.5, - "totBuyQty": 195725, - "totSellQty": 244350, - "bidQty": 10425, - "bidPrice": 0.1, - "askQty": 55900, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22800.00", - "oi": 765, - "oiChg": -74, - "oiPctChg": -8.820023837902264, - "totTradedVol": 245, - "iv": 57.79, - "ltp": 1161.55, - "change": -340.70000000000005, - "pChange": -22.679314361790652, - "totBuyQty": 12950, - "totSellQty": 11375, - "bidQty": 200, - "bidPrice": 1117.5, - "askQty": 200, - "askPrice": 1122.4 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22800.00", - "oi": 45852, - "oiChg": -13831, - "oiPctChg": -23.17410317845953, - "totTradedVol": 428685, - "iv": 28.66, - "ltp": 0.05, - "change": -0.7999999999999999, - "pChange": -94.11764705882352, - "totBuyQty": 1363175, - "totSellQty": 893250, - "bidQty": 1363175, - "bidPrice": 0.05, - "askQty": 242200, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22850.00", - "oi": 998, - "oiChg": -3, - "oiPctChg": -0.2997002997002997, - "totTradedVol": 8, - "iv": 90.32, - "ltp": 1189.6, - "change": -271.3000000000002, - "pChange": -18.570744061879672, - "totBuyQty": 13725, - "totSellQty": 12825, - "bidQty": 25, - "bidPrice": 1061.95, - "askQty": 125, - "askPrice": 1070.6 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22850.00", - "oi": 8495, - "oiChg": -4171, - "oiPctChg": -32.930680562134846, - "totTradedVol": 104564, - "iv": 29.02, - "ltp": 0.05, - "change": -0.7999999999999999, - "pChange": -94.11764705882352, - "totBuyQty": 385525, - "totSellQty": 251200, - "bidQty": 385525, - "bidPrice": 0.05, - "askQty": 8300, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22900.00", - "oi": 486, - "oiChg": -126, - "oiPctChg": -20.58823529411765, - "totTradedVol": 212, - "iv": 37.96, - "ltp": 1030.1, - "change": -379.25, - "pChange": -26.90956824067833, - "totBuyQty": 12425, - "totSellQty": 10925, - "bidQty": 25, - "bidPrice": 1014.85, - "askQty": 75, - "askPrice": 1018.65 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22900.00", - "oi": 35359, - "oiChg": -26232, - "oiPctChg": -42.59063824260038, - "totTradedVol": 387479, - "iv": 27.77, - "ltp": 0.1, - "change": -0.8, - "pChange": -88.8888888888889, - "totBuyQty": 1129550, - "totSellQty": 546100, - "bidQty": 1129550, - "bidPrice": 0.05, - "askQty": 119550, - "askPrice": 0.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE22950.00", - "oi": 625, - "oiChg": 7, - "oiPctChg": 1.132686084142395, - "totTradedVol": 105, - "iv": 92.32, - "ltp": 1114.05, - "change": -160.95000000000005, - "pChange": -12.623529411764709, - "totBuyQty": 9675, - "totSellQty": 10950, - "bidQty": 100, - "bidPrice": 963.45, - "askQty": 100, - "askPrice": 967.7 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE22950.00", - "oi": 15512, - "oiChg": -125, - "oiPctChg": -0.7993860714970903, - "totTradedVol": 184008, - "iv": 26.52, - "ltp": 0.1, - "change": -0.8, - "pChange": -88.8888888888889, - "totBuyQty": 368700, - "totSellQty": 309750, - "bidQty": 61825, - "bidPrice": 0.1, - "askQty": 32500, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23000.00", - "oi": 13433, - "oiChg": -3563, - "oiPctChg": -20.963756177924218, - "totTradedVol": 16708, - "iv": 0, - "ltp": 922.1, - "change": -382.4999999999999, - "pChange": -29.319331595891455, - "totBuyQty": 33475, - "totSellQty": 23525, - "bidQty": 175, - "bidPrice": 920.8, - "askQty": 200, - "askPrice": 922.25 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23000.00", - "oi": 260399, - "oiChg": -94728, - "oiPctChg": -26.674400988941983, - "totTradedVol": 1981869, - "iv": 25.27, - "ltp": 0.1, - "change": -0.85, - "pChange": -89.47368421052632, - "totBuyQty": 2460350, - "totSellQty": 1128175, - "bidQty": 91850, - "bidPrice": 0.1, - "askQty": 146600, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23050.00", - "oi": 1288, - "oiChg": -22, - "oiPctChg": -1.6793893129770991, - "totTradedVol": 84, - "iv": 67, - "ltp": 901.95, - "change": -355.70000000000005, - "pChange": -28.282908599371847, - "totBuyQty": 11000, - "totSellQty": 11600, - "bidQty": 25, - "bidPrice": 868.4, - "askQty": 25, - "askPrice": 872.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23050.00", - "oi": 17739, - "oiChg": -238, - "oiPctChg": -1.3239138899705178, - "totTradedVol": 342535, - "iv": 24.02, - "ltp": 0.15, - "change": -0.85, - "pChange": -85, - "totBuyQty": 851350, - "totSellQty": 272375, - "bidQty": 203325, - "bidPrice": 0.1, - "askQty": 49100, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23100.00", - "oi": 3691, - "oiChg": -587, - "oiPctChg": -13.721365123889669, - "totTradedVol": 2311, - "iv": 44.82, - "ltp": 812.8, - "change": -384.20000000000005, - "pChange": -32.096908939014206, - "totBuyQty": 13475, - "totSellQty": 12150, - "bidQty": 175, - "bidPrice": 819.5, - "askQty": 175, - "askPrice": 822 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23100.00", - "oi": 62413, - "oiChg": -22839, - "oiPctChg": -26.789987331675505, - "totTradedVol": 930407, - "iv": 22.77, - "ltp": 0.15, - "change": -0.7999999999999999, - "pChange": -84.21052631578947, - "totBuyQty": 2131775, - "totSellQty": 633675, - "bidQty": 937600, - "bidPrice": 0.1, - "askQty": 358225, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23150.00", - "oi": 2818, - "oiChg": -127, - "oiPctChg": -4.312393887945671, - "totTradedVol": 372, - "iv": 47.42, - "ltp": 819.3, - "change": -326.4000000000001, - "pChange": -28.489133280963607, - "totBuyQty": 11325, - "totSellQty": 11925, - "bidQty": 125, - "bidPrice": 763.8, - "askQty": 150, - "askPrice": 767.7 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23150.00", - "oi": 22620, - "oiChg": -3368, - "oiPctChg": -12.959827612744343, - "totTradedVol": 472472, - "iv": 21.51, - "ltp": 0.15, - "change": -0.9, - "pChange": -85.71428571428571, - "totBuyQty": 1262675, - "totSellQty": 420525, - "bidQty": 240200, - "bidPrice": 0.1, - "askQty": 175425, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23200.00", - "oi": 10670, - "oiChg": -735, - "oiPctChg": -6.444541867601929, - "totTradedVol": 3506, - "iv": 42.41, - "ltp": 721.75, - "change": -381.95000000000005, - "pChange": -34.606324182295914, - "totBuyQty": 18450, - "totSellQty": 17825, - "bidQty": 50, - "bidPrice": 714.95, - "askQty": 50, - "askPrice": 716.95 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23200.00", - "oi": 88936, - "oiChg": -50167, - "oiPctChg": -36.064642746741626, - "totTradedVol": 1257937, - "iv": 20.25, - "ltp": 0.15, - "change": -0.9500000000000001, - "pChange": -86.36363636363636, - "totBuyQty": 2008925, - "totSellQty": 1149300, - "bidQty": 360825, - "bidPrice": 0.1, - "askQty": 552325, - "askPrice": 0.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23250.00", - "oi": 5615, - "oiChg": -173, - "oiPctChg": -2.988942639944713, - "totTradedVol": 1277, - "iv": 29.52, - "ltp": 662.15, - "change": -385.55000000000007, - "pChange": -36.799656390188034, - "totBuyQty": 15575, - "totSellQty": 13150, - "bidQty": 75, - "bidPrice": 667.35, - "askQty": 50, - "askPrice": 669.7 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23250.00", - "oi": 35131, - "oiChg": -1908, - "oiPctChg": -5.151326979670078, - "totTradedVol": 984362, - "iv": 19.7, - "ltp": 0.2, - "change": -1, - "pChange": -83.33333333333334, - "totBuyQty": 2167625, - "totSellQty": 483400, - "bidQty": 64475, - "bidPrice": 0.2, - "askQty": 356975, - "askPrice": 0.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23300.00", - "oi": 31114, - "oiChg": -3036, - "oiPctChg": -8.890190336749633, - "totTradedVol": 10938, - "iv": 0, - "ltp": 613, - "change": -386.9, - "pChange": -38.693869386938694, - "totBuyQty": 24200, - "totSellQty": 29250, - "bidQty": 200, - "bidPrice": 615.4, - "askQty": 175, - "askPrice": 617.45 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23300.00", - "oi": 146336, - "oiChg": 2130, - "oiPctChg": 1.477053659348432, - "totTradedVol": 2155087, - "iv": 18.91, - "ltp": 0.2, - "change": -1.05, - "pChange": -84.00000000000001, - "totBuyQty": 3793975, - "totSellQty": 665100, - "bidQty": 347075, - "bidPrice": 0.15, - "askQty": 220450, - "askPrice": 0.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23350.00", - "oi": 22880, - "oiChg": -3314, - "oiPctChg": -12.651752309689241, - "totTradedVol": 6754, - "iv": 41.1, - "ltp": 568.05, - "change": -385.75, - "pChange": -40.44348920109038, - "totBuyQty": 17475, - "totSellQty": 16600, - "bidQty": 50, - "bidPrice": 569, - "askQty": 75, - "askPrice": 569.75 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23350.00", - "oi": 63523, - "oiChg": -1558, - "oiPctChg": -2.3939398595596257, - "totTradedVol": 1646530, - "iv": 17.08, - "ltp": 0.15, - "change": -1.2000000000000002, - "pChange": -88.8888888888889, - "totBuyQty": 3229500, - "totSellQty": 447600, - "bidQty": 478475, - "bidPrice": 0.15, - "askQty": 56500, - "askPrice": 0.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23400.00", - "oi": 52576, - "oiChg": -1813, - "oiPctChg": -3.333394620235709, - "totTradedVol": 21787, - "iv": 19.23, - "ltp": 521.35, - "change": -383.6, - "pChange": -42.38908226973866, - "totBuyQty": 33975, - "totSellQty": 23500, - "bidQty": 25, - "bidPrice": 517.75, - "askQty": 175, - "askPrice": 519.4 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23400.00", - "oi": 264746, - "oiChg": 19541, - "oiPctChg": 7.969250219204339, - "totTradedVol": 3650882, - "iv": 15.76, - "ltp": 0.2, - "change": -1.25, - "pChange": -86.20689655172414, - "totBuyQty": 5041225, - "totSellQty": 1639675, - "bidQty": 907375, - "bidPrice": 0.15, - "askQty": 543225, - "askPrice": 0.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23450.00", - "oi": 25850, - "oiChg": -541, - "oiPctChg": -2.0499412678564664, - "totTradedVol": 3317, - "iv": 21.46, - "ltp": 460.7, - "change": -393.7, - "pChange": -46.07911985018727, - "totBuyQty": 114250, - "totSellQty": 19650, - "bidQty": 75, - "bidPrice": 464.95, - "askQty": 50, - "askPrice": 466.6 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23450.00", - "oi": 167328, - "oiChg": 94441, - "oiPctChg": 129.5718029278198, - "totTradedVol": 3630028, - "iv": 14.86, - "ltp": 0.2, - "change": -1.35, - "pChange": -87.09677419354838, - "totBuyQty": 4389300, - "totSellQty": 1696775, - "bidQty": 1139900, - "bidPrice": 0.15, - "askQty": 807850, - "askPrice": 0.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23500.00", - "oi": 70779, - "oiChg": -2371, - "oiPctChg": -3.241285030758715, - "totTradedVol": 74791, - "iv": 0, - "ltp": 414.9, - "change": -386.95000000000005, - "pChange": -48.257155328303305, - "totBuyQty": 459600, - "totSellQty": 30600, - "bidQty": 200, - "bidPrice": 417.35, - "askQty": 175, - "askPrice": 418.9 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23500.00", - "oi": 430722, - "oiChg": 50326, - "oiPctChg": 13.229897264955467, - "totTradedVol": 8899835, - "iv": 13.49, - "ltp": 0.25, - "change": -1.45, - "pChange": -85.29411764705883, - "totBuyQty": 9105950, - "totSellQty": 2629650, - "bidQty": 880600, - "bidPrice": 0.2, - "askQty": 818275, - "askPrice": 0.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23550.00", - "oi": 21103, - "oiChg": -1616, - "oiPctChg": -7.112989128042607, - "totTradedVol": 12133, - "iv": 0, - "ltp": 360.4, - "change": -392.25, - "pChange": -52.11585730419186, - "totBuyQty": 147700, - "totSellQty": 20125, - "bidQty": 400, - "bidPrice": 365.2, - "askQty": 50, - "askPrice": 366.55 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23550.00", - "oi": 157746, - "oiChg": 72536, - "oiPctChg": 85.12615890153738, - "totTradedVol": 5023909, - "iv": 12.41, - "ltp": 0.25, - "change": -1.6, - "pChange": -86.48648648648648, - "totBuyQty": 6849050, - "totSellQty": 1474600, - "bidQty": 799275, - "bidPrice": 0.25, - "askQty": 424100, - "askPrice": 0.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23600.00", - "oi": 38481, - "oiChg": -9016, - "oiPctChg": -18.982251510621722, - "totTradedVol": 51435, - "iv": 0, - "ltp": 319.15, - "change": -384.20000000000005, - "pChange": -54.62429800241701, - "totBuyQty": 283775, - "totSellQty": 40175, - "bidQty": 25, - "bidPrice": 316.6, - "askQty": 75, - "askPrice": 317.9 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23600.00", - "oi": 279982, - "oiChg": 54283, - "oiPctChg": 24.051059154005998, - "totTradedVol": 9597777, - "iv": 11.95, - "ltp": 0.5, - "change": -1.45, - "pChange": -74.35897435897436, - "totBuyQty": 11555825, - "totSellQty": 1326225, - "bidQty": 195325, - "bidPrice": 0.45, - "askQty": 163900, - "askPrice": 0.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23650.00", - "oi": 7810, - "oiChg": -641, - "oiPctChg": -7.5849011951248375, - "totTradedVol": 22296, - "iv": 0, - "ltp": 272.25, - "change": -383.45000000000005, - "pChange": -58.479487570535305, - "totBuyQty": 552675, - "totSellQty": 30275, - "bidQty": 175, - "bidPrice": 270.05, - "askQty": 175, - "askPrice": 270.85 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23650.00", - "oi": 177381, - "oiChg": 108093, - "oiPctChg": 156.00536889504676, - "totTradedVol": 8944825, - "iv": 11.01, - "ltp": 0.85, - "change": -1.35, - "pChange": -61.36363636363637, - "totBuyQty": 7847075, - "totSellQty": 1044125, - "bidQty": 193500, - "bidPrice": 0.8, - "askQty": 92875, - "askPrice": 0.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23700.00", - "oi": 31668, - "oiChg": -14171, - "oiPctChg": -30.914723270577454, - "totTradedVol": 162231, - "iv": 0, - "ltp": 223.95, - "change": -382.15000000000003, - "pChange": -63.050651707639005, - "totBuyQty": 2570175, - "totSellQty": 57875, - "bidQty": 200, - "bidPrice": 222.15, - "askQty": 25, - "askPrice": 223.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23700.00", - "oi": 332641, - "oiChg": 129384, - "oiPctChg": 63.6553722627019, - "totTradedVol": 14997091, - "iv": 10.29, - "ltp": 1.6, - "change": -0.9499999999999997, - "pChange": -37.2549019607843, - "totBuyQty": 14486275, - "totSellQty": 1402100, - "bidQty": 41575, - "bidPrice": 1.6, - "askQty": 55525, - "askPrice": 1.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23750.00", - "oi": 22151, - "oiChg": -925, - "oiPctChg": -4.008493673080257, - "totTradedVol": 163772, - "iv": 0, - "ltp": 171.5, - "change": -385, - "pChange": -69.18238993710692, - "totBuyQty": 4307200, - "totSellQty": 45675, - "bidQty": 50, - "bidPrice": 170.75, - "askQty": 675, - "askPrice": 171.4 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23750.00", - "oi": 209475, - "oiChg": 121875, - "oiPctChg": 139.12671232876713, - "totTradedVol": 14174092, - "iv": 9.41, - "ltp": 3, - "change": 0.04999999999999982, - "pChange": 1.6949152542372818, - "totBuyQty": 9233875, - "totSellQty": 685250, - "bidQty": 18925, - "bidPrice": 3, - "askQty": 14050, - "askPrice": 3.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23800.00", - "oi": 61346, - "oiChg": 1605, - "oiPctChg": 2.6865971443397334, - "totTradedVol": 933995, - "iv": 8.33, - "ltp": 126.1, - "change": -378.95000000000005, - "pChange": -75.03217503217505, - "totBuyQty": 8812475, - "totSellQty": 269300, - "bidQty": 625, - "bidPrice": 125.55, - "askQty": 150, - "askPrice": 126.05 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23800.00", - "oi": 433104, - "oiChg": 228246, - "oiPctChg": 111.41668863310196, - "totTradedVol": 22530061, - "iv": 8.55, - "ltp": 6.5, - "change": 3.1, - "pChange": 91.1764705882353, - "totBuyQty": 22563500, - "totSellQty": 1307350, - "bidQty": 6050, - "bidPrice": 6.5, - "askQty": 6450, - "askPrice": 6.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23850.00", - "oi": 46448, - "oiChg": 21738, - "oiPctChg": 87.97248077701336, - "totTradedVol": 913217, - "iv": 7.25, - "ltp": 80.9, - "change": -378.85, - "pChange": -82.40348015225666, - "totBuyQty": 10389775, - "totSellQty": 158450, - "bidQty": 325, - "bidPrice": 80.6, - "askQty": 100, - "askPrice": 80.9 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23850.00", - "oi": 265717, - "oiChg": 193636, - "oiPctChg": 268.6366726321777, - "totTradedVol": 17035264, - "iv": 7.9, - "ltp": 14.75, - "change": 10.75, - "pChange": 268.75, - "totBuyQty": 16928800, - "totSellQty": 584575, - "bidQty": 2300, - "bidPrice": 14.7, - "askQty": 4725, - "askPrice": 14.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23900.00", - "oi": 262426, - "oiChg": 163770, - "oiPctChg": 166.00105416801816, - "totTradedVol": 4160383, - "iv": 7.17, - "ltp": 47.7, - "change": -356.90000000000003, - "pChange": -88.21057834898666, - "totBuyQty": 19205525, - "totSellQty": 950225, - "bidQty": 375, - "bidPrice": 47.65, - "askQty": 450, - "askPrice": 47.85 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23900.00", - "oi": 432617, - "oiChg": 247225, - "oiPctChg": 133.35257184776043, - "totTradedVol": 23200548, - "iv": 7.26, - "ltp": 30.4, - "change": 25.349999999999998, - "pChange": 501.980198019802, - "totBuyQty": 20194850, - "totSellQty": 919875, - "bidQty": 450, - "bidPrice": 30.3, - "askQty": 350, - "askPrice": 30.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE23950.00", - "oi": 220307, - "oiChg": 202913, - "oiPctChg": 1166.5689318155685, - "totTradedVol": 5651769, - "iv": 6.45, - "ltp": 23.8, - "change": -335.8, - "pChange": -93.38153503893214, - "totBuyQty": 22511425, - "totSellQty": 1115225, - "bidQty": 3825, - "bidPrice": 23.8, - "askQty": 5125, - "askPrice": 23.95 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE23950.00", - "oi": 230839, - "oiChg": 150478, - "oiPctChg": 187.25252299000758, - "totTradedVol": 17180265, - "iv": 6.85, - "ltp": 56, - "change": 49.45, - "pChange": 754.9618320610688, - "totBuyQty": 16586975, - "totSellQty": 361950, - "bidQty": 575, - "bidPrice": 56.1, - "askQty": 500, - "askPrice": 56.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24000.00", - "oi": 560326, - "oiChg": 458061, - "oiPctChg": 447.91570918691633, - "totTradedVol": 16243538, - "iv": 6.39, - "ltp": 10.85, - "change": -298.2, - "pChange": -96.48924122310305, - "totBuyQty": 29284875, - "totSellQty": 2274200, - "bidQty": 2575, - "bidPrice": 10.85, - "askQty": 8725, - "askPrice": 10.95 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24000.00", - "oi": 401113, - "oiChg": 19274, - "oiPctChg": 5.047677162364242, - "totTradedVol": 27340941, - "iv": 6.79, - "ltp": 91.85, - "change": 82.85, - "pChange": 920.5555555555555, - "totBuyQty": 29835925, - "totSellQty": 487800, - "bidQty": 125, - "bidPrice": 91.6, - "askQty": 25, - "askPrice": 91.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24050.00", - "oi": 276883, - "oiChg": 266433, - "oiPctChg": 2549.598086124402, - "totTradedVol": 12909659, - "iv": 6.96, - "ltp": 5.05, - "change": -257.2, - "pChange": -98.0743565300286, - "totBuyQty": 24768100, - "totSellQty": 951800, - "bidQty": 11450, - "bidPrice": 5.05, - "askQty": 6525, - "askPrice": 5.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24050.00", - "oi": 135157, - "oiChg": 70405, - "oiPctChg": 108.7302322708179, - "totTradedVol": 13239100, - "iv": 7.84, - "ltp": 134.25, - "change": 121.5, - "pChange": 952.9411764705882, - "totBuyQty": 17714175, - "totSellQty": 118775, - "bidQty": 400, - "bidPrice": 133.75, - "askQty": 25, - "askPrice": 134.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24100.00", - "oi": 447043, - "oiChg": 402868, - "oiPctChg": 911.9818902093945, - "totTradedVol": 20101088, - "iv": 7.96, - "ltp": 2.8, - "change": -214.54999999999998, - "pChange": -98.71175523349436, - "totBuyQty": 29665050, - "totSellQty": 1935050, - "bidQty": 23575, - "bidPrice": 2.8, - "askQty": 43525, - "askPrice": 2.85 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24100.00", - "oi": 157120, - "oiChg": -24500, - "oiPctChg": -13.489703777117057, - "totTradedVol": 14866838, - "iv": 8.36, - "ltp": 182, - "change": 163.8, - "pChange": 900.0000000000002, - "totBuyQty": 23356725, - "totSellQty": 152475, - "bidQty": 75, - "bidPrice": 181.55, - "askQty": 75, - "askPrice": 182 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24150.00", - "oi": 234345, - "oiChg": 209192, - "oiPctChg": 831.6781298453465, - "totTradedVol": 13612392, - "iv": 8.82, - "ltp": 1.5, - "change": -174.15, - "pChange": -99.1460290350128, - "totBuyQty": 28710575, - "totSellQty": 1311000, - "bidQty": 90700, - "bidPrice": 1.5, - "askQty": 80975, - "askPrice": 1.55 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24150.00", - "oi": 60469, - "oiChg": -50631, - "oiPctChg": -45.57245724572457, - "totTradedVol": 6779132, - "iv": 10.3, - "ltp": 229.1, - "change": 203.1, - "pChange": 781.1538461538462, - "totBuyQty": 19665050, - "totSellQty": 49950, - "bidQty": 150, - "bidPrice": 229.2, - "askQty": 175, - "askPrice": 229.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24200.00", - "oi": 374133, - "oiChg": 226230, - "oiPctChg": 152.9583578426401, - "totTradedVol": 20019604, - "iv": 9.79, - "ltp": 1, - "change": -135.7, - "pChange": -99.26847110460864, - "totBuyQty": 36600850, - "totSellQty": 2561450, - "bidQty": 259325, - "bidPrice": 0.95, - "askQty": 209725, - "askPrice": 1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24200.00", - "oi": 108829, - "oiChg": -174124, - "oiPctChg": -61.53813530869084, - "totTradedVol": 9550386, - "iv": 12.32, - "ltp": 284.7, - "change": 247.64999999999998, - "pChange": 668.421052631579, - "totBuyQty": 32205325, - "totSellQty": 80225, - "bidQty": 175, - "bidPrice": 283.9, - "askQty": 200, - "askPrice": 284.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24250.00", - "oi": 254846, - "oiChg": 171316, - "oiPctChg": 205.09517538608884, - "totTradedVol": 15568527, - "iv": 10.89, - "ltp": 0.85, - "change": -101.55000000000001, - "pChange": -99.16992187500001, - "totBuyQty": 34229375, - "totSellQty": 1730875, - "bidQty": 212425, - "bidPrice": 0.8, - "askQty": 218875, - "askPrice": 0.85 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24250.00", - "oi": 95335, - "oiChg": -22569, - "oiPctChg": -19.141844212240468, - "totTradedVol": 6001407, - "iv": 13.97, - "ltp": 331.5, - "change": 278.5, - "pChange": 525.4716981132075, - "totBuyQty": 22903075, - "totSellQty": 32450, - "bidQty": 50, - "bidPrice": 331, - "askQty": 175, - "askPrice": 331.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24300.00", - "oi": 603515, - "oiChg": 303834, - "oiPctChg": 101.38580690801219, - "totTradedVol": 25387916, - "iv": 12.14, - "ltp": 0.7, - "change": -73.05, - "pChange": -99.05084745762711, - "totBuyQty": 47453625, - "totSellQty": 3415075, - "bidQty": 340075, - "bidPrice": 0.65, - "askQty": 311150, - "askPrice": 0.7 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24300.00", - "oi": 205393, - "oiChg": -55565, - "oiPctChg": -21.292698441894863, - "totTradedVol": 8947431, - "iv": 14.98, - "ltp": 380.45, - "change": 306.5, - "pChange": 414.46923597025017, - "totBuyQty": 25336750, - "totSellQty": 59075, - "bidQty": 50, - "bidPrice": 378.9, - "askQty": 175, - "askPrice": 380 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24350.00", - "oi": 281427, - "oiChg": 153283, - "oiPctChg": 119.61777375452616, - "totTradedVol": 16978710, - "iv": 13.28, - "ltp": 0.55, - "change": -49.800000000000004, - "pChange": -98.90764647467726, - "totBuyQty": 28683350, - "totSellQty": 2188200, - "bidQty": 303850, - "bidPrice": 0.55, - "askQty": 349425, - "askPrice": 0.6 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24350.00", - "oi": 68251, - "oiChg": 10972, - "oiPctChg": 19.155362349203024, - "totTradedVol": 2831506, - "iv": 19.02, - "ltp": 427.75, - "change": 326.9, - "pChange": 324.1447694595935, - "totBuyQty": 16984200, - "totSellQty": 35400, - "bidQty": 175, - "bidPrice": 427.95, - "askQty": 175, - "askPrice": 429.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24400.00", - "oi": 348862, - "oiChg": 138019, - "oiPctChg": 65.46055595869913, - "totTradedVol": 18074664, - "iv": 14.5, - "ltp": 0.45, - "change": -32.199999999999996, - "pChange": -98.62174578866768, - "totBuyQty": 36355950, - "totSellQty": 2353025, - "bidQty": 339350, - "bidPrice": 0.45, - "askQty": 336025, - "askPrice": 0.5 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24400.00", - "oi": 57569, - "oiChg": -22568, - "oiPctChg": -28.161772963799493, - "totTradedVol": 1836740, - "iv": 18.16, - "ltp": 480.45, - "change": 347.75, - "pChange": 262.0572720422005, - "totBuyQty": 17372775, - "totSellQty": 34975, - "bidQty": 150, - "bidPrice": 481.75, - "askQty": 200, - "askPrice": 482.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24450.00", - "oi": 152636, - "oiChg": 59201, - "oiPctChg": 63.360625033445714, - "totTradedVol": 10606923, - "iv": 15.89, - "ltp": 0.4, - "change": -19.8, - "pChange": -98.01980198019803, - "totBuyQty": 18405550, - "totSellQty": 1455625, - "bidQty": 388825, - "bidPrice": 0.4, - "askQty": 255550, - "askPrice": 0.45 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24450.00", - "oi": 9895, - "oiChg": 1759, - "oiPctChg": 21.619960668633237, - "totTradedVol": 354696, - "iv": 24.18, - "ltp": 527.6, - "change": 356.65000000000003, - "pChange": 208.6282538754022, - "totBuyQty": 14287925, - "totSellQty": 21600, - "bidQty": 75, - "bidPrice": 527.95, - "askQty": 175, - "askPrice": 529.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24500.00", - "oi": 464306, - "oiChg": 70437, - "oiPctChg": 17.883357156821177, - "totTradedVol": 15330627, - "iv": 16.73, - "ltp": 0.35, - "change": -11.85, - "pChange": -97.1311475409836, - "totBuyQty": 26628500, - "totSellQty": 2845100, - "bidQty": 565325, - "bidPrice": 0.35, - "askQty": 407050, - "askPrice": 0.4 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24500.00", - "oi": 73728, - "oiChg": -8851, - "oiPctChg": -10.71822133956575, - "totTradedVol": 634578, - "iv": 23.04, - "ltp": 589.45, - "change": 376.65000000000003, - "pChange": 176.99718045112783, - "totBuyQty": 14840600, - "totSellQty": 41125, - "bidQty": 150, - "bidPrice": 581.75, - "askQty": 225, - "askPrice": 583.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24550.00", - "oi": 178492, - "oiChg": 56339, - "oiPctChg": 46.12166708963349, - "totTradedVol": 8629534, - "iv": 17.72, - "ltp": 0.4, - "change": -7.1, - "pChange": -94.66666666666667, - "totBuyQty": 12053125, - "totSellQty": 1308225, - "bidQty": 196975, - "bidPrice": 0.35, - "askQty": 309425, - "askPrice": 0.4 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24550.00", - "oi": 4087, - "oiChg": -855, - "oiPctChg": -17.300687980574665, - "totTradedVol": 52859, - "iv": 26.71, - "ltp": 630.9, - "change": 373.84999999999997, - "pChange": 145.43863061661153, - "totBuyQty": 7385050, - "totSellQty": 19325, - "bidQty": 175, - "bidPrice": 630.2, - "askQty": 175, - "askPrice": 631.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24600.00", - "oi": 290275, - "oiChg": 58675, - "oiPctChg": 25.3346286701209, - "totTradedVol": 9474012, - "iv": 19.37, - "ltp": 0.3, - "change": -4.55, - "pChange": -93.81443298969072, - "totBuyQty": 14018375, - "totSellQty": 1567175, - "bidQty": 390100, - "bidPrice": 0.3, - "askQty": 286125, - "askPrice": 0.35 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24600.00", - "oi": 10082, - "oiChg": -3083, - "oiPctChg": -23.418154196733763, - "totTradedVol": 68732, - "iv": 27.53, - "ltp": 689.5, - "change": 385.4, - "pChange": 126.73462676751066, - "totBuyQty": 5821650, - "totSellQty": 24825, - "bidQty": 400, - "bidPrice": 682.75, - "askQty": 400, - "askPrice": 684.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24650.00", - "oi": 140571, - "oiChg": 50741, - "oiPctChg": 56.48558388066348, - "totTradedVol": 5707393, - "iv": 20.67, - "ltp": 0.35, - "change": -2.85, - "pChange": -89.0625, - "totBuyQty": 10147650, - "totSellQty": 919950, - "bidQty": 176225, - "bidPrice": 0.3, - "askQty": 247500, - "askPrice": 0.35 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24650.00", - "oi": 665, - "oiChg": -763, - "oiPctChg": -53.431372549019606, - "totTradedVol": 9972, - "iv": 26.84, - "ltp": 728.4, - "change": 376.65, - "pChange": 107.07889125799572, - "totBuyQty": 3253550, - "totSellQty": 19975, - "bidQty": 175, - "bidPrice": 729.55, - "askQty": 200, - "askPrice": 731.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24700.00", - "oi": 298470, - "oiChg": 74599, - "oiPctChg": 33.3223150832399, - "totTradedVol": 6846611, - "iv": 21.56, - "ltp": 0.3, - "change": -1.7, - "pChange": -85, - "totBuyQty": 12811875, - "totSellQty": 1260800, - "bidQty": 312725, - "bidPrice": 0.25, - "askQty": 249250, - "askPrice": 0.3 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24700.00", - "oi": 9247, - "oiChg": -762, - "oiPctChg": -7.613148166650015, - "totTradedVol": 17203, - "iv": 0, - "ltp": 778, - "change": 375.3, - "pChange": 93.19592748944623, - "totBuyQty": 2293775, - "totSellQty": 16650, - "bidQty": 175, - "bidPrice": 780.15, - "askQty": 175, - "askPrice": 781.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24750.00", - "oi": 172597, - "oiChg": 75789, - "oiPctChg": 78.28795140897446, - "totTradedVol": 4116650, - "iv": 22.82, - "ltp": 0.25, - "change": -1.2, - "pChange": -82.75862068965517, - "totBuyQty": 9840500, - "totSellQty": 1286150, - "bidQty": 162625, - "bidPrice": 0.25, - "askQty": 306800, - "askPrice": 0.3 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24750.00", - "oi": 387, - "oiChg": -13, - "oiPctChg": -3.25, - "totTradedVol": 2702, - "iv": 0, - "ltp": 799.4, - "change": 347.95, - "pChange": 77.07387307564514, - "totBuyQty": 607700, - "totSellQty": 11975, - "bidQty": 50, - "bidPrice": 829.35, - "askQty": 50, - "askPrice": 832.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24800.00", - "oi": 384261, - "oiChg": 156730, - "oiPctChg": 68.88292144806641, - "totTradedVol": 5541678, - "iv": 24.08, - "ltp": 0.2, - "change": -0.9000000000000001, - "pChange": -81.81818181818183, - "totBuyQty": 11163700, - "totSellQty": 1710200, - "bidQty": 496200, - "bidPrice": 0.2, - "askQty": 436925, - "askPrice": 0.25 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24800.00", - "oi": 14411, - "oiChg": -1829, - "oiPctChg": -11.26231527093596, - "totTradedVol": 8949, - "iv": 29.46, - "ltp": 879.85, - "change": 381.5, - "pChange": 76.55262365807162, - "totBuyQty": 544650, - "totSellQty": 22275, - "bidQty": 25, - "bidPrice": 882.1, - "askQty": 25, - "askPrice": 884.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24850.00", - "oi": 134020, - "oiChg": 44036, - "oiPctChg": 48.93758890469417, - "totTradedVol": 1861714, - "iv": 25.32, - "ltp": 0.25, - "change": -0.65, - "pChange": -72.22222222222221, - "totBuyQty": 6746975, - "totSellQty": 948600, - "bidQty": 214600, - "bidPrice": 0.2, - "askQty": 260150, - "askPrice": 0.25 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24850.00", - "oi": 249, - "oiChg": -45, - "oiPctChg": -15.306122448979592, - "totTradedVol": 822, - "iv": 0, - "ltp": 847.25, - "change": 298.25, - "pChange": 54.32604735883424, - "totBuyQty": 424900, - "totSellQty": 11650, - "bidQty": 50, - "bidPrice": 931.9, - "askQty": 50, - "askPrice": 935.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24900.00", - "oi": 209493, - "oiChg": 90660, - "oiPctChg": 76.29193910782358, - "totTradedVol": 2791844, - "iv": 26.01, - "ltp": 0.15, - "change": -0.65, - "pChange": -81.25, - "totBuyQty": 7774025, - "totSellQty": 1431900, - "bidQty": 1191650, - "bidPrice": 0.15, - "askQty": 556500, - "askPrice": 0.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24900.00", - "oi": 5519, - "oiChg": -2620, - "oiPctChg": -32.190686816562234, - "totTradedVol": 4442, - "iv": 37.34, - "ltp": 978.05, - "change": 377.29999999999995, - "pChange": 62.80482729920931, - "totBuyQty": 306700, - "totSellQty": 12850, - "bidQty": 75, - "bidPrice": 982.25, - "askQty": 200, - "askPrice": 985 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE24950.00", - "oi": 116766, - "oiChg": 83747, - "oiPctChg": 253.63275689754383, - "totTradedVol": 1550957, - "iv": 27.21, - "ltp": 0.2, - "change": -0.55, - "pChange": -73.33333333333334, - "totBuyQty": 4163700, - "totSellQty": 1054800, - "bidQty": 450925, - "bidPrice": 0.15, - "askQty": 251450, - "askPrice": 0.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE24950.00", - "oi": 219, - "oiChg": -276, - "oiPctChg": -55.75757575757576, - "totTradedVol": 930, - "iv": 0, - "ltp": 941.1, - "change": 287.15, - "pChange": 43.91008486887376, - "totBuyQty": 12475, - "totSellQty": 10525, - "bidQty": 200, - "bidPrice": 1028.6, - "askQty": 150, - "askPrice": 1031.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25000.00", - "oi": 533036, - "oiChg": 48379, - "oiPctChg": 9.982111059986753, - "totTradedVol": 4770476, - "iv": 27.69, - "ltp": 0.15, - "change": -0.6, - "pChange": -80, - "totBuyQty": 8297550, - "totSellQty": 2072050, - "bidQty": 238300, - "bidPrice": 0.15, - "askQty": 733050, - "askPrice": 0.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25000.00", - "oi": 89720, - "oiChg": 18625, - "oiPctChg": 26.1973415852029, - "totTradedVol": 64802, - "iv": 39.1, - "ltp": 1077.35, - "change": 374.64999999999986, - "pChange": 53.31578198377683, - "totBuyQty": 45950, - "totSellQty": 32700, - "bidQty": 150, - "bidPrice": 1075.7, - "askQty": 125, - "askPrice": 1077 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25050.00", - "oi": 93102, - "oiChg": 64518, - "oiPctChg": 225.7136859781696, - "totTradedVol": 951750, - "iv": 29.61, - "ltp": 0.15, - "change": -0.5499999999999999, - "pChange": -78.57142857142857, - "totBuyQty": 4175450, - "totSellQty": 1306200, - "bidQty": 1289525, - "bidPrice": 0.1, - "askQty": 271100, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25050.00", - "oi": 378, - "oiChg": 11, - "oiPctChg": 2.997275204359673, - "totTradedVol": 134, - "iv": 41.45, - "ltp": 1130.85, - "change": 372.64999999999986, - "pChange": 49.14930097599576, - "totBuyQty": 13150, - "totSellQty": 14300, - "bidQty": 150, - "bidPrice": 1130, - "askQty": 100, - "askPrice": 1133.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25100.00", - "oi": 153511, - "oiChg": -11465, - "oiPctChg": -6.949495684220735, - "totTradedVol": 2089962, - "iv": 30.02, - "ltp": 0.15, - "change": -0.5499999999999999, - "pChange": -78.57142857142857, - "totBuyQty": 4162675, - "totSellQty": 1343325, - "bidQty": 1306175, - "bidPrice": 0.1, - "askQty": 364300, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25100.00", - "oi": 1809, - "oiChg": -709, - "oiPctChg": -28.157267672756156, - "totTradedVol": 1029, - "iv": 0, - "ltp": 1180.65, - "change": 377.35000000000014, - "pChange": 46.974978214863704, - "totBuyQty": 16000, - "totSellQty": 15600, - "bidQty": 100, - "bidPrice": 1179.9, - "askQty": 25, - "askPrice": 1184.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25150.00", - "oi": 45716, - "oiChg": 17645, - "oiPctChg": 62.858466032560294, - "totTradedVol": 476486, - "iv": 31.97, - "ltp": 0.15, - "change": -0.44999999999999996, - "pChange": -75, - "totBuyQty": 2742975, - "totSellQty": 403800, - "bidQty": 88375, - "bidPrice": 0.15, - "askQty": 158825, - "askPrice": 0.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25150.00", - "oi": 179, - "oiChg": -22, - "oiPctChg": -10.945273631840797, - "totTradedVol": 75, - "iv": 0, - "ltp": 1141.3, - "change": 293.3499999999999, - "pChange": 34.595200188690356, - "totBuyQty": 13250, - "totSellQty": 13000, - "bidQty": 50, - "bidPrice": 1229.3, - "askQty": 75, - "askPrice": 1238.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25200.00", - "oi": 182738, - "oiChg": 47110, - "oiPctChg": 34.73471554546259, - "totTradedVol": 1098437, - "iv": 32.33, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 4076700, - "totSellQty": 1047025, - "bidQty": 4076700, - "bidPrice": 0.05, - "askQty": 335925, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25200.00", - "oi": 7592, - "oiChg": -1523, - "oiPctChg": -16.708721886999452, - "totTradedVol": 2208, - "iv": 0, - "ltp": 1282, - "change": 380.35, - "pChange": 42.183774191759554, - "totBuyQty": 17650, - "totSellQty": 16225, - "bidQty": 25, - "bidPrice": 1276.35, - "askQty": 25, - "askPrice": 1280.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25250.00", - "oi": 39998, - "oiChg": 16805, - "oiPctChg": 72.4572069158798, - "totTradedVol": 342569, - "iv": 33.47, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 1484100, - "totSellQty": 440950, - "bidQty": 549100, - "bidPrice": 0.1, - "askQty": 132650, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25250.00", - "oi": 287, - "oiChg": -14, - "oiPctChg": -4.651162790697675, - "totTradedVol": 131, - "iv": 0, - "ltp": 1249.05, - "change": 293.25, - "pChange": 30.68110483364721, - "totBuyQty": 13000, - "totSellQty": 13575, - "bidQty": 100, - "bidPrice": 1320.7, - "askQty": 500, - "askPrice": 1335.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25300.00", - "oi": 66066, - "oiChg": 7529, - "oiPctChg": 12.861950561183525, - "totTradedVol": 573880, - "iv": 34.61, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 2215400, - "totSellQty": 700125, - "bidQty": 493950, - "bidPrice": 0.1, - "askQty": 391175, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25300.00", - "oi": 2651, - "oiChg": -35, - "oiPctChg": -1.3030528667163068, - "totTradedVol": 699, - "iv": 0, - "ltp": 1375, - "change": 374.29999999999995, - "pChange": 37.403817327870485, - "totBuyQty": 13900, - "totSellQty": 16650, - "bidQty": 100, - "bidPrice": 1376.6, - "askQty": 125, - "askPrice": 1381.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25350.00", - "oi": 21672, - "oiChg": 8181, - "oiPctChg": 60.64042695130087, - "totTradedVol": 200311, - "iv": 36.64, - "ltp": 0.1, - "change": -0.45000000000000007, - "pChange": -81.81818181818183, - "totBuyQty": 1519300, - "totSellQty": 314225, - "bidQty": 465300, - "bidPrice": 0.1, - "askQty": 34875, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25350.00", - "oi": 200, - "oiChg": -13, - "oiPctChg": -6.103286384976526, - "totTradedVol": 43, - "iv": 70.21, - "ltp": 1427, - "change": 373.0999999999999, - "pChange": 35.40184078185785, - "totBuyQty": 12850, - "totSellQty": 11425, - "bidQty": 125, - "bidPrice": 1425.1, - "askQty": 75, - "askPrice": 1434.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25400.00", - "oi": 54187, - "oiChg": 21959, - "oiPctChg": 68.13640312771503, - "totTradedVol": 578803, - "iv": 35.67, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 1218000, - "totSellQty": 842600, - "bidQty": 1218000, - "bidPrice": 0.05, - "askQty": 145975, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25400.00", - "oi": 1312, - "oiChg": -607, - "oiPctChg": -31.63105784262637, - "totTradedVol": 816, - "iv": 0, - "ltp": 1436.85, - "change": 331.89999999999986, - "pChange": 30.037558260554764, - "totBuyQty": 11750, - "totSellQty": 12150, - "bidQty": 125, - "bidPrice": 1476.8, - "askQty": 175, - "askPrice": 1479.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25450.00", - "oi": 15699, - "oiChg": 8525, - "oiPctChg": 118.83189294675216, - "totTradedVol": 107285, - "iv": 37.99, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 925700, - "totSellQty": 332475, - "bidQty": 291450, - "bidPrice": 0.1, - "askQty": 29625, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25450.00", - "oi": 166, - "oiChg": -29, - "oiPctChg": -14.871794871794872, - "totTradedVol": 86, - "iv": 0, - "ltp": 1536.65, - "change": 396.25, - "pChange": 34.74658014731673, - "totBuyQty": 10550, - "totSellQty": 7425, - "bidQty": 500, - "bidPrice": 1524.8, - "askQty": 100, - "askPrice": 1535.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25500.00", - "oi": 182535, - "oiChg": -27958, - "oiPctChg": -13.28215190053826, - "totTradedVol": 1276374, - "iv": 39.11, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 5705975, - "totSellQty": 1246375, - "bidQty": 1423375, - "bidPrice": 0.1, - "askQty": 496650, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25500.00", - "oi": 14733, - "oiChg": -905, - "oiPctChg": -5.787185062028392, - "totTradedVol": 7375, - "iv": 60.95, - "ltp": 1576.4, - "change": 374.5, - "pChange": 31.15899825276645, - "totBuyQty": 33475, - "totSellQty": 10475, - "bidQty": 50, - "bidPrice": 1578.25, - "askQty": 25, - "askPrice": 1582.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25550.00", - "oi": 12373, - "oiChg": 3660, - "oiPctChg": 42.006197635716745, - "totTradedVol": 211262, - "iv": 40.22, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 887225, - "totSellQty": 195525, - "bidQty": 327500, - "bidPrice": 0.1, - "askQty": 13425, - "askPrice": 0.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25550.00", - "oi": 318, - "oiChg": -12, - "oiPctChg": -3.6363636363636362, - "totTradedVol": 140, - "iv": 44.82, - "ltp": 1628.6, - "change": 374.29999999999995, - "pChange": 29.84134577054931, - "totBuyQty": 7550, - "totSellQty": 8300, - "bidQty": 75, - "bidPrice": 1628.4, - "askQty": 25, - "askPrice": 1628.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25600.00", - "oi": 34828, - "oiChg": 524, - "oiPctChg": 1.5275186567164178, - "totTradedVol": 471835, - "iv": 40.01, - "ltp": 0.15, - "change": -0.30000000000000004, - "pChange": -66.66666666666667, - "totBuyQty": 2138875, - "totSellQty": 356150, - "bidQty": 1139925, - "bidPrice": 0.1, - "askQty": 94825, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25600.00", - "oi": 631, - "oiChg": -488, - "oiPctChg": -43.61036639857015, - "totTradedVol": 704, - "iv": 0, - "ltp": 1650.25, - "change": 351.5, - "pChange": 27.06448508180943, - "totBuyQty": 11300, - "totSellQty": 10100, - "bidQty": 75, - "bidPrice": 1676.4, - "askQty": 50, - "askPrice": 1683.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25650.00", - "oi": 9198, - "oiChg": 2143, - "oiPctChg": 30.3756201275691, - "totTradedVol": 79386, - "iv": 42.44, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 452575, - "totSellQty": 238300, - "bidQty": 63450, - "bidPrice": 0.1, - "askQty": 25500, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25650.00", - "oi": 281, - "oiChg": -2, - "oiPctChg": -0.7067137809187279, - "totTradedVol": 9, - "iv": 0, - "ltp": 1646.8, - "change": 263.64999999999986, - "pChange": 19.061562375736532, - "totBuyQty": 7625, - "totSellQty": 8450, - "bidQty": 150, - "bidPrice": 1723.55, - "askQty": 1000, - "askPrice": 1757 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25700.00", - "oi": 13531, - "oiChg": -1958, - "oiPctChg": -12.641229259474466, - "totTradedVol": 110220, - "iv": 42.15, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 433350, - "totSellQty": 276500, - "bidQty": 63225, - "bidPrice": 0.1, - "askQty": 78225, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25700.00", - "oi": 1169, - "oiChg": -695, - "oiPctChg": -37.28540772532189, - "totTradedVol": 803, - "iv": 0, - "ltp": 1731.65, - "change": 328.0500000000002, - "pChange": 23.3720433171844, - "totBuyQty": 9575, - "totSellQty": 5325, - "bidQty": 125, - "bidPrice": 1775.6, - "askQty": 75, - "askPrice": 1785 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25750.00", - "oi": 9497, - "oiChg": 4111, - "oiPctChg": 76.32751578165615, - "totTradedVol": 39371, - "iv": 43.22, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 515875, - "totSellQty": 268475, - "bidQty": 64375, - "bidPrice": 0.1, - "askQty": 1800, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25750.00", - "oi": 100, - "oiChg": -3, - "oiPctChg": -2.912621359223301, - "totTradedVol": 14, - "iv": 0, - "ltp": 1715.35, - "change": 315.3499999999999, - "pChange": 22.52499999999999, - "totBuyQty": 4725, - "totSellQty": 5800, - "bidQty": 125, - "bidPrice": 1826.85, - "askQty": 125, - "askPrice": 1845.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25800.00", - "oi": 26408, - "oiChg": -6560, - "oiPctChg": -19.89808298956564, - "totTradedVol": 220061, - "iv": 45.72, - "ltp": 0.1, - "change": -0.30000000000000004, - "pChange": -75.00000000000001, - "totBuyQty": 1271125, - "totSellQty": 238175, - "bidQty": 370575, - "bidPrice": 0.1, - "askQty": 27000, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25800.00", - "oi": 2271, - "oiChg": -1706, - "oiPctChg": -42.89665577068142, - "totTradedVol": 2355, - "iv": 58.14, - "ltp": 1881.75, - "change": 384.45000000000005, - "pChange": 25.6762171909437, - "totBuyQty": 11725, - "totSellQty": 10500, - "bidQty": 100, - "bidPrice": 1876.6, - "askQty": 175, - "askPrice": 1880.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25850.00", - "oi": 5811, - "oiChg": 3056, - "oiPctChg": 110.92558983666062, - "totTradedVol": 55209, - "iv": 46.81, - "ltp": 0.15, - "change": -0.30000000000000004, - "pChange": -66.66666666666667, - "totBuyQty": 381775, - "totSellQty": 243025, - "bidQty": 76875, - "bidPrice": 0.1, - "askQty": 29350, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25850.00", - "oi": 42, - "oiChg": -6, - "oiPctChg": -12.5, - "totTradedVol": 11, - "iv": 0, - "ltp": 1821.25, - "change": 281.0999999999999, - "pChange": 18.251469012758488, - "totBuyQty": 6400, - "totSellQty": 7475, - "bidQty": 125, - "bidPrice": 1925.35, - "askQty": 125, - "askPrice": 1948.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25900.00", - "oi": 10865, - "oiChg": 2925, - "oiPctChg": 36.83879093198993, - "totTradedVol": 72564, - "iv": 47.89, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 647450, - "totSellQty": 334150, - "bidQty": 199125, - "bidPrice": 0.1, - "askQty": 57475, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25900.00", - "oi": 531, - "oiChg": -305, - "oiPctChg": -36.483253588516746, - "totTradedVol": 435, - "iv": 0, - "ltp": 1985, - "change": 391.45000000000005, - "pChange": 24.56465125035299, - "totBuyQty": 10125, - "totSellQty": 7875, - "bidQty": 175, - "bidPrice": 1982.2, - "askQty": 75, - "askPrice": 1988.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE25950.00", - "oi": 3885, - "oiChg": 696, - "oiPctChg": 21.82502351834431, - "totTradedVol": 46764, - "iv": 47.44, - "ltp": 0.2, - "change": -0.2, - "pChange": -50, - "totBuyQty": 204350, - "totSellQty": 201150, - "bidQty": 41700, - "bidPrice": 0.1, - "askQty": 30950, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE25950.00", - "oi": 27, - "oiChg": -19, - "oiPctChg": -41.30434782608695, - "totTradedVol": 24, - "iv": 97.79, - "ltp": 2035, - "change": 279.04999999999995, - "pChange": 15.891682564993307, - "totBuyQty": 5175, - "totSellQty": 5375, - "bidQty": 125, - "bidPrice": 2022.95, - "askQty": 125, - "askPrice": 2040.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26000.00", - "oi": 188383, - "oiChg": -58483, - "oiPctChg": -23.69018009770483, - "totTradedVol": 817870, - "iv": 50.04, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 4004900, - "totSellQty": 1178375, - "bidQty": 1160375, - "bidPrice": 0.1, - "askQty": 638825, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26000.00", - "oi": 21375, - "oiChg": -3348, - "oiPctChg": -13.542045868219876, - "totTradedVol": 12718, - "iv": 73.12, - "ltp": 2084, - "change": 383.5, - "pChange": 22.552190532196413, - "totBuyQty": 17800, - "totSellQty": 16150, - "bidQty": 225, - "bidPrice": 2079.05, - "askQty": 125, - "askPrice": 2085.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26050, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26050.00", - "oi": 4168, - "oiChg": 26, - "oiPctChg": 0.6277160791887977, - "totTradedVol": 76236, - "iv": 49.52, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 629200, - "totSellQty": 227400, - "bidQty": 130075, - "bidPrice": 0.1, - "askQty": 3225, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26050.00", - "oi": 43, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4975, - "totSellQty": 5925, - "bidQty": 625, - "bidPrice": 2076.25, - "askQty": 1000, - "askPrice": 2394.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26100, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26100.00", - "oi": 14473, - "oiChg": -17978, - "oiPctChg": -55.40044990909371, - "totTradedVol": 327188, - "iv": 50.56, - "ltp": 0.15, - "change": -0.4, - "pChange": -72.72727272727273, - "totBuyQty": 1167050, - "totSellQty": 391100, - "bidQty": 212900, - "bidPrice": 0.1, - "askQty": 147825, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26100.00", - "oi": 642, - "oiChg": -384, - "oiPctChg": -37.42690058479532, - "totTradedVol": 450, - "iv": 106.52, - "ltp": 2187.35, - "change": 386, - "pChange": 21.428373164571017, - "totBuyQty": 9275, - "totSellQty": 8150, - "bidQty": 50, - "bidPrice": 2177.05, - "askQty": 50, - "askPrice": 2185.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26150, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26150.00", - "oi": 1983, - "oiChg": 983, - "oiPctChg": 98.3, - "totTradedVol": 17434, - "iv": 51.6, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 222200, - "totSellQty": 149100, - "bidQty": 61675, - "bidPrice": 0.1, - "askQty": 2725, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26150.00", - "oi": 30, - "oiChg": -2, - "oiPctChg": -6.25, - "totTradedVol": 5, - "iv": 0, - "ltp": 1945, - "change": 104.84999999999991, - "pChange": 5.697905062087324, - "totBuyQty": 6125, - "totSellQty": 6425, - "bidQty": 200, - "bidPrice": 2198.9, - "askQty": 200, - "askPrice": 2262.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26200, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26200.00", - "oi": 12525, - "oiChg": -15075, - "oiPctChg": -54.619565217391305, - "totTradedVol": 158925, - "iv": 54.3, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 825950, - "totSellQty": 286000, - "bidQty": 58150, - "bidPrice": 0.1, - "askQty": 20525, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26200.00", - "oi": 641, - "oiChg": -1045, - "oiPctChg": -61.98102016607355, - "totTradedVol": 1163, - "iv": 0, - "ltp": 2200, - "change": 299.4000000000001, - "pChange": 15.752920130485116, - "totBuyQty": 8450, - "totSellQty": 7200, - "bidQty": 100, - "bidPrice": 2281.85, - "askQty": 75, - "askPrice": 2289.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26250, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26250.00", - "oi": 3699, - "oiChg": -445, - "oiPctChg": -10.738416988416988, - "totTradedVol": 37360, - "iv": 55.35, - "ltp": 0.15, - "change": -0.4, - "pChange": -72.72727272727273, - "totBuyQty": 247125, - "totSellQty": 169850, - "bidQty": 65425, - "bidPrice": 0.1, - "askQty": 5775, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26250.00", - "oi": 57, - "oiChg": -6, - "oiPctChg": -9.523809523809524, - "totTradedVol": 7, - "iv": 0, - "ltp": 2225, - "change": 241.29999999999995, - "pChange": 12.164137722437866, - "totBuyQty": 5000, - "totSellQty": 6000, - "bidQty": 50, - "bidPrice": 2321.95, - "askQty": 1000, - "askPrice": 2367.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26300, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26300.00", - "oi": 9756, - "oiChg": -1324, - "oiPctChg": -11.949458483754512, - "totTradedVol": 55230, - "iv": 56.4, - "ltp": 0.1, - "change": -0.5, - "pChange": -83.33333333333334, - "totBuyQty": 356525, - "totSellQty": 233250, - "bidQty": 101200, - "bidPrice": 0.1, - "askQty": 29525, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26300.00", - "oi": 276, - "oiChg": -296, - "oiPctChg": -51.74825174825175, - "totTradedVol": 376, - "iv": 73.9, - "ltp": 2355.55, - "change": 359.9000000000001, - "pChange": 18.034224438152986, - "totBuyQty": 7575, - "totSellQty": 7450, - "bidQty": 75, - "bidPrice": 2377.35, - "askQty": 75, - "askPrice": 2387.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26350, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26350.00", - "oi": 2511, - "oiChg": 1697, - "oiPctChg": 208.47665847665849, - "totTradedVol": 15054, - "iv": 55.7, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 236850, - "totSellQty": 162025, - "bidQty": 45725, - "bidPrice": 0.1, - "askQty": 11500, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26350.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 2270, - "change": 120, - "pChange": 5.5813953488372094, - "totBuyQty": 5000, - "totSellQty": 3675, - "bidQty": 1000, - "bidPrice": 2348.5, - "askQty": 575, - "askPrice": 2605.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26400, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26400.00", - "oi": 4324, - "oiChg": -3638, - "oiPctChg": -45.6920371765888, - "totTradedVol": 74691, - "iv": 56.72, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 692750, - "totSellQty": 227300, - "bidQty": 103875, - "bidPrice": 0.1, - "askQty": 30200, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26400.00", - "oi": 304, - "oiChg": -118, - "oiPctChg": -27.96208530805687, - "totTradedVol": 276, - "iv": 93.57, - "ltp": 2463.75, - "change": 363.75, - "pChange": 17.32142857142857, - "totBuyQty": 7200, - "totSellQty": 7175, - "bidQty": 425, - "bidPrice": 2476.95, - "askQty": 125, - "askPrice": 2487.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26450, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26450.00", - "oi": 3680, - "oiChg": 3061, - "oiPctChg": 494.50726978998387, - "totTradedVol": 12389, - "iv": 59.54, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 227675, - "totSellQty": 191750, - "bidQty": 26150, - "bidPrice": 0.1, - "askQty": 12850, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26450.00", - "oi": 19, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5050, - "totSellQty": 5925, - "bidQty": 1000, - "bidPrice": 2304.1, - "askQty": 1000, - "askPrice": 2591.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26500, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26500.00", - "oi": 33393, - "oiChg": -15490, - "oiPctChg": -31.687907861628787, - "totTradedVol": 225444, - "iv": 60.57, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 1588100, - "totSellQty": 567525, - "bidQty": 506225, - "bidPrice": 0.1, - "askQty": 248875, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26500.00", - "oi": 7439, - "oiChg": -179, - "oiPctChg": -2.3496980834864796, - "totTradedVol": 1706, - "iv": 95.39, - "ltp": 2584.5, - "change": 381.1999999999998, - "pChange": 17.301320746153486, - "totBuyQty": 12500, - "totSellQty": 12175, - "bidQty": 275, - "bidPrice": 2583.2, - "askQty": 75, - "askPrice": 2589.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26550, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26550.00", - "oi": 2700, - "oiChg": 1803, - "oiPctChg": 201.00334448160535, - "totTradedVol": 40418, - "iv": 59.75, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 457250, - "totSellQty": 184550, - "bidQty": 250225, - "bidPrice": 0.1, - "askQty": 41850, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26550.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5925, - "totSellQty": 5925, - "bidQty": 1000, - "bidPrice": 2397.1, - "askQty": 1000, - "askPrice": 2690.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26600.00", - "oi": 17673, - "oiChg": 10269, - "oiPctChg": 138.69529983792543, - "totTradedVol": 320037, - "iv": 60.75, - "ltp": 0.15, - "change": -0.25, - "pChange": -62.5, - "totBuyQty": 1697050, - "totSellQty": 561325, - "bidQty": 21525, - "bidPrice": 0.1, - "askQty": 353150, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26600.00", - "oi": 60, - "oiChg": -106, - "oiPctChg": -63.855421686746986, - "totTradedVol": 151, - "iv": 0, - "ltp": 2613.7, - "change": 328.6999999999998, - "pChange": 14.385120350109402, - "totBuyQty": 7000, - "totSellQty": 7500, - "bidQty": 100, - "bidPrice": 2671.65, - "askQty": 375, - "askPrice": 2689.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26650.00", - "oi": 3536, - "oiChg": 2506, - "oiPctChg": 243.3009708737864, - "totTradedVol": 60632, - "iv": 61.75, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 216825, - "totSellQty": 230925, - "bidQty": 59125, - "bidPrice": 0.1, - "askQty": 99025, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26650.00", - "oi": 20, - "oiChg": -5, - "oiPctChg": -20, - "totTradedVol": 17, - "iv": 0, - "ltp": 2690, - "change": 417.5, - "pChange": 18.371837183718373, - "totBuyQty": 5250, - "totSellQty": 6750, - "bidQty": 125, - "bidPrice": 2713.25, - "askQty": 1000, - "askPrice": 2818.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26700.00", - "oi": 7444, - "oiChg": -2461, - "oiPctChg": -24.846037354871278, - "totTradedVol": 67519, - "iv": 62.75, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 186050, - "totSellQty": 143950, - "bidQty": 38325, - "bidPrice": 0.1, - "askQty": 7175, - "askPrice": 0.2 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26700.00", - "oi": 748, - "oiChg": -11, - "oiPctChg": -1.4492753623188406, - "totTradedVol": 16, - "iv": 159.04, - "ltp": 2847.2, - "change": 360.0499999999997, - "pChange": 14.47640874092836, - "totBuyQty": 6675, - "totSellQty": 7450, - "bidQty": 100, - "bidPrice": 2778.75, - "askQty": 150, - "askPrice": 2788.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26750.00", - "oi": 8740, - "oiChg": 8023, - "oiPctChg": 1118.9679218967922, - "totTradedVol": 147274, - "iv": 63.74, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 1059225, - "totSellQty": 343100, - "bidQty": 415175, - "bidPrice": 0.1, - "askQty": 207475, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26750.00", - "oi": 18, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 17, - "iv": 0, - "ltp": 2727.5, - "change": 288.4499999999998, - "pChange": 11.826325823578845, - "totBuyQty": 3850, - "totSellQty": 4475, - "bidQty": 75, - "bidPrice": 2827.65, - "askQty": 375, - "askPrice": 2983.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26800.00", - "oi": 3123, - "oiChg": -1449, - "oiPctChg": -31.69291338582677, - "totTradedVol": 39149, - "iv": 64.73, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 194875, - "totSellQty": 150325, - "bidQty": 6375, - "bidPrice": 0.1, - "askQty": 25300, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26800.00", - "oi": 82, - "oiChg": -62, - "oiPctChg": -43.05555555555556, - "totTradedVol": 141, - "iv": 0, - "ltp": 2823.95, - "change": 345.9499999999998, - "pChange": 13.96085552865213, - "totBuyQty": 4125, - "totSellQty": 3975, - "bidQty": 25, - "bidPrice": 2874.85, - "askQty": 50, - "askPrice": 2885.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26850.00", - "oi": 1734, - "oiChg": 931, - "oiPctChg": 115.94022415940225, - "totTradedVol": 7356, - "iv": 65.72, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 252825, - "totSellQty": 172125, - "bidQty": 120000, - "bidPrice": 0.1, - "askQty": 26025, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26850.00", - "oi": 33, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 33, - "iv": 0, - "ltp": 2880.1, - "change": 341.2999999999997, - "pChange": 13.443359067275868, - "totBuyQty": 5125, - "totSellQty": 5450, - "bidQty": 1000, - "bidPrice": 2893.55, - "askQty": 1000, - "askPrice": 3039.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26900.00", - "oi": 3206, - "oiChg": -1374, - "oiPctChg": -30, - "totTradedVol": 20122, - "iv": 66.71, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 359575, - "totSellQty": 185150, - "bidQty": 117050, - "bidPrice": 0.1, - "askQty": 46450, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26900.00", - "oi": 168, - "oiChg": -3, - "oiPctChg": -1.7543859649122806, - "totTradedVol": 12, - "iv": 0, - "ltp": 2850, - "change": 225, - "pChange": 8.571428571428571, - "totBuyQty": 3875, - "totSellQty": 4400, - "bidQty": 100, - "bidPrice": 2977.75, - "askQty": 175, - "askPrice": 3110.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE26950.00", - "oi": 4282, - "oiChg": 3755, - "oiPctChg": 712.5237191650854, - "totTradedVol": 16056, - "iv": 67.69, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 136975, - "totSellQty": 152725, - "bidQty": 9700, - "bidPrice": 0.1, - "askQty": 1350, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE26950.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3675, - "totSellQty": 4675, - "bidQty": 1775, - "bidPrice": 2800.05, - "askQty": 1000, - "askPrice": 3078.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27000, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27000.00", - "oi": 95183, - "oiChg": -8917, - "oiPctChg": -8.565802113352545, - "totTradedVol": 156004, - "iv": 70.77, - "ltp": 0.15, - "change": -0.30000000000000004, - "pChange": -66.66666666666667, - "totBuyQty": 1677675, - "totSellQty": 580250, - "bidQty": 336300, - "bidPrice": 0.1, - "askQty": 19975, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27000.00", - "oi": 16133, - "oiChg": -733, - "oiPctChg": -4.346021581880707, - "totTradedVol": 3549, - "iv": 0, - "ltp": 3080, - "change": 378.9499999999998, - "pChange": 14.029729179393192, - "totBuyQty": 12925, - "totSellQty": 12125, - "bidQty": 50, - "bidPrice": 3078.15, - "askQty": 125, - "askPrice": 3086.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27050, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27050.00", - "oi": 2945, - "oiChg": 607, - "oiPctChg": 25.96236099230111, - "totTradedVol": 20025, - "iv": 69.65, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 97600, - "totSellQty": 140075, - "bidQty": 9375, - "bidPrice": 0.1, - "askQty": 16750, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27050.00", - "oi": 302, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5300, - "totSellQty": 3800, - "bidQty": 1000, - "bidPrice": 3063.9, - "askQty": 1000, - "askPrice": 3192.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27100, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27100.00", - "oi": 4951, - "oiChg": 1862, - "oiPctChg": 60.278407251537715, - "totTradedVol": 20320, - "iv": 70.62, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 240550, - "totSellQty": 180250, - "bidQty": 240550, - "bidPrice": 0.05, - "askQty": 43850, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27100.00", - "oi": 77, - "oiChg": -1, - "oiPctChg": -1.2820512820512822, - "totTradedVol": 11, - "iv": 0, - "ltp": 3110, - "change": 320, - "pChange": 11.469534050179211, - "totBuyQty": 3825, - "totSellQty": 4300, - "bidQty": 50, - "bidPrice": 3177.05, - "askQty": 225, - "askPrice": 3196.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27150, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27150.00", - "oi": 1721, - "oiChg": -715, - "oiPctChg": -29.351395730706077, - "totTradedVol": 35358, - "iv": 73.77, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 52925, - "totSellQty": 130800, - "bidQty": 4475, - "bidPrice": 0.1, - "askQty": 4625, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27150.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 2948, - "askQty": 1000, - "askPrice": 3448.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27200, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27200.00", - "oi": 3443, - "oiChg": -147, - "oiPctChg": -4.094707520891365, - "totTradedVol": 11449, - "iv": 74.76, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 293150, - "totSellQty": 157275, - "bidQty": 13700, - "bidPrice": 0.1, - "askQty": 20900, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27200.00", - "oi": 62, - "oiChg": -4, - "oiPctChg": -6.0606060606060606, - "totTradedVol": 24, - "iv": 0, - "ltp": 3280, - "change": 382.6999999999998, - "pChange": 13.208849618610424, - "totBuyQty": 5400, - "totSellQty": 5625, - "bidQty": 100, - "bidPrice": 3280.1, - "askQty": 150, - "askPrice": 3297.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27250, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27250.00", - "oi": 5431, - "oiChg": 3715, - "oiPctChg": 216.49184149184148, - "totTradedVol": 10980, - "iv": 77.44, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 230400, - "totSellQty": 127200, - "bidQty": 55425, - "bidPrice": 0.1, - "askQty": 5450, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5300, - "totSellQty": 3775, - "bidQty": 1000, - "bidPrice": 3061.7, - "askQty": 1000, - "askPrice": 3393.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27300, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27300.00", - "oi": 3554, - "oiChg": -139, - "oiPctChg": -3.7638776062821555, - "totTradedVol": 13928, - "iv": 74.49, - "ltp": 0.1, - "change": -0.30000000000000004, - "pChange": -75.00000000000001, - "totBuyQty": 217600, - "totSellQty": 146325, - "bidQty": 9350, - "bidPrice": 0.1, - "askQty": 2825, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27300.00", - "oi": 9, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 4, - "iv": 0, - "ltp": 3310, - "change": 300.9000000000001, - "pChange": 9.999667674720019, - "totBuyQty": 5350, - "totSellQty": 6175, - "bidQty": 75, - "bidPrice": 3373.05, - "askQty": 1000, - "askPrice": 3398.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27350, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27350.00", - "oi": 4594, - "oiChg": 2640, - "oiPctChg": 135.10747185261002, - "totTradedVol": 15221, - "iv": 75.45, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 94575, - "totSellQty": 120925, - "bidQty": 5400, - "bidPrice": 0.1, - "askQty": 1325, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5925, - "totSellQty": 4150, - "bidQty": 1000, - "bidPrice": 3100.85, - "askQty": 1000, - "askPrice": 3704.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27400, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27400.00", - "oi": 4263, - "oiChg": -3332, - "oiPctChg": -43.87096774193548, - "totTradedVol": 32360, - "iv": 76.41, - "ltp": 0.1, - "change": -0.45000000000000007, - "pChange": -81.81818181818183, - "totBuyQty": 325450, - "totSellQty": 159850, - "bidQty": 325450, - "bidPrice": 0.05, - "askQty": 5775, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27400.00", - "oi": 8, - "oiChg": -17, - "oiPctChg": -68, - "totTradedVol": 20, - "iv": 0, - "ltp": 3420, - "change": 340, - "pChange": 11.03896103896104, - "totBuyQty": 4800, - "totSellQty": 5450, - "bidQty": 50, - "bidPrice": 3467, - "askQty": 75, - "askPrice": 3492.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27450, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27450.00", - "oi": 6584, - "oiChg": -2505, - "oiPctChg": -27.56078776543074, - "totTradedVol": 53926, - "iv": 77.36, - "ltp": 0.1, - "change": -0.45000000000000007, - "pChange": -81.81818181818183, - "totBuyQty": 28150, - "totSellQty": 123800, - "bidQty": 28150, - "bidPrice": 0.05, - "askQty": 16200, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27450.00", - "oi": 12, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5925, - "totSellQty": 5925, - "bidQty": 1000, - "bidPrice": 3186.4, - "askQty": 1000, - "askPrice": 3820.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27500, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27500.00", - "oi": 56724, - "oiChg": -19178, - "oiPctChg": -25.26679138889621, - "totTradedVol": 231995, - "iv": 78.31, - "ltp": 0.1, - "change": -0.45000000000000007, - "pChange": -81.81818181818183, - "totBuyQty": 1094450, - "totSellQty": 329475, - "bidQty": 1094450, - "bidPrice": 0.05, - "askQty": 27800, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27500.00", - "oi": 1005, - "oiChg": -676, - "oiPctChg": -40.214158239143366, - "totTradedVol": 1433, - "iv": 0, - "ltp": 3581.35, - "change": 379.6999999999998, - "pChange": 11.859509940187085, - "totBuyQty": 10000, - "totSellQty": 8350, - "bidQty": 50, - "bidPrice": 3581.55, - "askQty": 125, - "askPrice": 3586.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27550, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27550.00", - "oi": 13462, - "oiChg": -1128, - "oiPctChg": -7.731322823851953, - "totTradedVol": 67172, - "iv": 79.26, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 74500, - "totSellQty": 126300, - "bidQty": 74500, - "bidPrice": 0.05, - "askQty": 775, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27550.00", - "oi": 13, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 3261.6, - "askQty": 1000, - "askPrice": 3936.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27600, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27600.00", - "oi": 11692, - "oiChg": 741, - "oiPctChg": 6.7665053419779015, - "totTradedVol": 68122, - "iv": 76.51, - "ltp": 0.05, - "change": -0.5, - "pChange": -90.9090909090909, - "totBuyQty": 0, - "totSellQty": 243800, - "bidQty": 0, - "bidPrice": 0, - "askQty": 78400, - "askPrice": 0.05 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27600.00", - "oi": 10, - "oiChg": -3, - "oiPctChg": -23.076923076923077, - "totTradedVol": 13, - "iv": 0, - "ltp": 3605, - "change": 255, - "pChange": 7.611940298507462, - "totBuyQty": 5225, - "totSellQty": 5200, - "bidQty": 1075, - "bidPrice": 3613, - "askQty": 1000, - "askPrice": 3703.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27650, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27650.00", - "oi": 33531, - "oiChg": 2295, - "oiPctChg": 7.347291586630811, - "totTradedVol": 82577, - "iv": 81.15, - "ltp": 0.05, - "change": -0.5, - "pChange": -90.9090909090909, - "totBuyQty": 0, - "totSellQty": 172550, - "bidQty": 0, - "bidPrice": 0, - "askQty": 21900, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27650.00", - "oi": 8, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 3365.55, - "askQty": 1000, - "askPrice": 3800.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27700, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27700.00", - "oi": 16279, - "oiChg": -5554, - "oiPctChg": -25.438556313836852, - "totTradedVol": 79245, - "iv": 78.32, - "ltp": 0.1, - "change": -0.35, - "pChange": -77.77777777777777, - "totBuyQty": 352025, - "totSellQty": 171625, - "bidQty": 352025, - "bidPrice": 0.05, - "askQty": 16250, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27700.00", - "oi": 26, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 6, - "iv": 0, - "ltp": 3677.35, - "change": -478.2999999999997, - "pChange": -11.509631465595028, - "totBuyQty": 6775, - "totSellQty": 5300, - "bidQty": 1000, - "bidPrice": 3753.05, - "askQty": 275, - "askPrice": 3790.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27750, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27750.00", - "oi": 63572, - "oiChg": -74493, - "oiPctChg": -53.95502118567342, - "totTradedVol": 419790, - "iv": 79.22, - "ltp": 0.05, - "change": -0.5, - "pChange": -90.9090909090909, - "totBuyQty": 0, - "totSellQty": 514725, - "bidQty": 0, - "bidPrice": 0, - "askQty": 140075, - "askPrice": 0.05 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27750.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4700, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 3643.8, - "askQty": 1000, - "askPrice": 4152.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27800, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27800.00", - "oi": 33147, - "oiChg": -32959, - "oiPctChg": -49.857804132756485, - "totTradedVol": 211107, - "iv": 83.97, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 90400, - "totSellQty": 200875, - "bidQty": 90400, - "bidPrice": 0.05, - "askQty": 19300, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27800.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 3740, - "change": -500.64999999999964, - "pChange": -11.805973140909995, - "totBuyQty": 5800, - "totSellQty": 4800, - "bidQty": 1000, - "bidPrice": 3828, - "askQty": 900, - "askPrice": 4084.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27850, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27850.00", - "oi": 43557, - "oiChg": -27416, - "oiPctChg": -38.62877432262973, - "totTradedVol": 154645, - "iv": 84.91, - "ltp": 0.1, - "change": -0.45000000000000007, - "pChange": -81.81818181818183, - "totBuyQty": 430975, - "totSellQty": 261200, - "bidQty": 430975, - "bidPrice": 0.05, - "askQty": 60850, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4675, - "totSellQty": 4675, - "bidQty": 1000, - "bidPrice": 3616.95, - "askQty": 1000, - "askPrice": 4070.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27900, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27900.00", - "oi": 59361, - "oiChg": -47950, - "oiPctChg": -44.68321048168408, - "totTradedVol": 268743, - "iv": 85.84, - "ltp": 0.15, - "change": -0.35, - "pChange": -70, - "totBuyQty": 478550, - "totSellQty": 230100, - "bidQty": 102900, - "bidPrice": 0.1, - "askQty": 22850, - "askPrice": 0.15 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27900.00", - "oi": 46, - "oiChg": -32, - "oiPctChg": -41.02564102564103, - "totTradedVol": 40, - "iv": 0, - "ltp": 3980, - "change": 400.0500000000002, - "pChange": 11.174737077333488, - "totBuyQty": 4650, - "totSellQty": 4650, - "bidQty": 175, - "bidPrice": 3969.1, - "askQty": 100, - "askPrice": 3995.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27950, - "expiry": "28-Nov-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY28-11-2024CE27950.00", - "oi": 129710, - "oiChg": -61277, - "oiPctChg": -32.08438270667637, - "totTradedVol": 1568717, - "iv": 86.77, - "ltp": 0.1, - "change": -0.4, - "pChange": -80, - "totBuyQty": 1318975, - "totSellQty": 348900, - "bidQty": 1318975, - "bidPrice": 0.05, - "askQty": 81300, - "askPrice": 0.1 - }, - "pe": { - "id": "OPTIDXNIFTY28-11-2024PE27950.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4725, - "totSellQty": 4725, - "bidQty": 1050, - "bidPrice": 3919.7, - "askQty": 1000, - "askPrice": 4084.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3825, - "totSellQty": 2825, - "bidQty": 1000, - "bidPrice": 2384.65, - "askQty": 25, - "askPrice": 2420.45 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21600.00", - "oi": 111870, - "oiChg": 43893, - "oiPctChg": 64.5703693896465, - "totTradedVol": 178028, - "iv": 29.87, - "ltp": 1.8, - "change": -0.30000000000000004, - "pChange": -14.285714285714288, - "totBuyQty": 2571925, - "totSellQty": 590500, - "bidQty": 3075, - "bidPrice": 1.75, - "askQty": 10000, - "askPrice": 1.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2825, - "totSellQty": 3825, - "bidQty": 25, - "bidPrice": 2335.6, - "askQty": 1000, - "askPrice": 2386.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21650.00", - "oi": 13923, - "oiChg": 11396, - "oiPctChg": 450.9695290858726, - "totTradedVol": 29755, - "iv": 29.18, - "ltp": 1.7, - "change": -0.5000000000000002, - "pChange": -22.727272727272734, - "totBuyQty": 626300, - "totSellQty": 101900, - "bidQty": 1975, - "bidPrice": 1.7, - "askQty": 1875, - "askPrice": 1.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21700.00", - "oi": 36, - "oiChg": 12, - "oiPctChg": 50, - "totTradedVol": 24, - "iv": 66.26, - "ltp": 2427, - "change": -173, - "pChange": -6.653846153846153, - "totBuyQty": 3775, - "totSellQty": 4925, - "bidQty": 75, - "bidPrice": 2288, - "askQty": 1000, - "askPrice": 2343.95 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21700.00", - "oi": 23998, - "oiChg": 19875, - "oiPctChg": 482.051903953432, - "totTradedVol": 46518, - "iv": 28.78, - "ltp": 1.8, - "change": -0.4999999999999998, - "pChange": -21.7391304347826, - "totBuyQty": 789300, - "totSellQty": 116000, - "bidQty": 5600, - "bidPrice": 1.8, - "askQty": 5725, - "askPrice": 1.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3825, - "totSellQty": 2825, - "bidQty": 1000, - "bidPrice": 2237.35, - "askQty": 25, - "askPrice": 2272.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21750.00", - "oi": 1805, - "oiChg": 1000, - "oiPctChg": 124.22360248447205, - "totTradedVol": 4221, - "iv": 28, - "ltp": 1.7, - "change": -0.7, - "pChange": -29.166666666666668, - "totBuyQty": 231475, - "totSellQty": 51825, - "bidQty": 4600, - "bidPrice": 1.7, - "askQty": 2225, - "askPrice": 1.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21800.00", - "oi": 9, - "oiChg": 9, - "oiPctChg": 0, - "totTradedVol": 13, - "iv": 51.6, - "ltp": 2250, - "change": -537.5500000000002, - "pChange": -19.28395903212499, - "totBuyQty": 4725, - "totSellQty": 4775, - "bidQty": 1000, - "bidPrice": 2179.4, - "askQty": 1000, - "askPrice": 2226.7 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21800.00", - "oi": 7195, - "oiChg": 3205, - "oiPctChg": 80.32581453634086, - "totTradedVol": 27991, - "iv": 27.69, - "ltp": 1.85, - "change": -0.3999999999999999, - "pChange": -17.77777777777777, - "totBuyQty": 456475, - "totSellQty": 85925, - "bidQty": 1575, - "bidPrice": 1.85, - "askQty": 3625, - "askPrice": 1.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3825, - "totSellQty": 2825, - "bidQty": 1000, - "bidPrice": 2125.8, - "askQty": 25, - "askPrice": 2174.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21850.00", - "oi": 558, - "oiChg": 261, - "oiPctChg": 87.87878787878788, - "totTradedVol": 2416, - "iv": 27.27, - "ltp": 1.85, - "change": -0.5, - "pChange": -21.27659574468085, - "totBuyQty": 167575, - "totSellQty": 16175, - "bidQty": 1225, - "bidPrice": 1.8, - "askQty": 275, - "askPrice": 1.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3450, - "totSellQty": 4450, - "bidQty": 25, - "bidPrice": 2082.75, - "askQty": 1000, - "askPrice": 2131.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21900.00", - "oi": 4671, - "oiChg": 3699, - "oiPctChg": 380.55555555555554, - "totTradedVol": 8774, - "iv": 26.84, - "ltp": 2.05, - "change": -0.3500000000000001, - "pChange": -14.583333333333337, - "totBuyQty": 590125, - "totSellQty": 32825, - "bidQty": 550, - "bidPrice": 2.05, - "askQty": 4000, - "askPrice": 2.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3825, - "totSellQty": 3825, - "bidQty": 1000, - "bidPrice": 2014.05, - "askQty": 1000, - "askPrice": 2076.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE21950.00", - "oi": 482, - "oiChg": 161, - "oiPctChg": 50.15576323987539, - "totTradedVol": 2227, - "iv": 26.24, - "ltp": 2, - "change": -0.4500000000000002, - "pChange": -18.367346938775515, - "totBuyQty": 150950, - "totSellQty": 16950, - "bidQty": 2225, - "bidPrice": 1.95, - "askQty": 1475, - "askPrice": 2.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22000.00", - "oi": 226, - "oiChg": 110, - "oiPctChg": 94.82758620689656, - "totTradedVol": 186, - "iv": 27.12, - "ltp": 1985, - "change": -360.25, - "pChange": -15.360835731798318, - "totBuyQty": 10150, - "totSellQty": 7600, - "bidQty": 50, - "bidPrice": 1998.45, - "askQty": 25, - "askPrice": 2013.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22000.00", - "oi": 82923, - "oiChg": 53560, - "oiPctChg": 182.40642986070907, - "totTradedVol": 193210, - "iv": 25.94, - "ltp": 2.2, - "change": -0.34999999999999964, - "pChange": -13.725490196078418, - "totBuyQty": 1507350, - "totSellQty": 145050, - "bidQty": 4275, - "bidPrice": 2.15, - "askQty": 7125, - "askPrice": 2.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3825, - "totSellQty": 3825, - "bidQty": 1000, - "bidPrice": 1917.35, - "askQty": 1000, - "askPrice": 1977.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22050.00", - "oi": 712, - "oiChg": 150, - "oiPctChg": 26.690391459074732, - "totTradedVol": 3568, - "iv": 25.33, - "ltp": 2.2, - "change": -0.2999999999999998, - "pChange": -11.999999999999993, - "totBuyQty": 127450, - "totSellQty": 14025, - "bidQty": 850, - "bidPrice": 2.15, - "askQty": 650, - "askPrice": 2.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22100.00", - "oi": 24, - "oiChg": 24, - "oiPctChg": 0, - "totTradedVol": 30, - "iv": 43.99, - "ltp": 1940, - "change": -556.3000000000002, - "pChange": -22.284981773024082, - "totBuyQty": 5150, - "totSellQty": 4125, - "bidQty": 1000, - "bidPrice": 1884.1, - "askQty": 650, - "askPrice": 1918.25 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22100.00", - "oi": 6807, - "oiChg": 4543, - "oiPctChg": 200.6625441696113, - "totTradedVol": 23060, - "iv": 24.73, - "ltp": 2.25, - "change": -0.3999999999999999, - "pChange": -15.094339622641506, - "totBuyQty": 309050, - "totSellQty": 39550, - "bidQty": 4925, - "bidPrice": 2.2, - "askQty": 1125, - "askPrice": 2.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4450, - "totSellQty": 4450, - "bidQty": 1000, - "bidPrice": 1834.8, - "askQty": 1000, - "askPrice": 1880.05 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22150.00", - "oi": 883, - "oiChg": 547, - "oiPctChg": 162.79761904761904, - "totTradedVol": 5148, - "iv": 24.32, - "ltp": 2.4, - "change": -0.10000000000000009, - "pChange": -4.0000000000000036, - "totBuyQty": 140000, - "totSellQty": 14625, - "bidQty": 400, - "bidPrice": 2.35, - "askQty": 875, - "askPrice": 2.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22200.00", - "oi": 21, - "oiChg": 21, - "oiPctChg": 0, - "totTradedVol": 26, - "iv": 43.22, - "ltp": 1846, - "change": -554.0999999999999, - "pChange": -23.086538060914126, - "totBuyQty": 4650, - "totSellQty": 4650, - "bidQty": 1000, - "bidPrice": 1775.45, - "askQty": 1000, - "askPrice": 1828.7 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22200.00", - "oi": 8910, - "oiChg": 4831, - "oiPctChg": 118.43589114979162, - "totTradedVol": 44464, - "iv": 23.96, - "ltp": 2.5, - "change": -0.04999999999999982, - "pChange": -1.9607843137254832, - "totBuyQty": 393650, - "totSellQty": 40025, - "bidQty": 32750, - "bidPrice": 2.5, - "askQty": 6225, - "askPrice": 2.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3450, - "totSellQty": 3450, - "bidQty": 25, - "bidPrice": 1738.8, - "askQty": 25, - "askPrice": 1770.55 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22250.00", - "oi": 10450, - "oiChg": 848, - "oiPctChg": 8.831493438866902, - "totTradedVol": 8433, - "iv": 23.35, - "ltp": 2.55, - "change": 0, - "pChange": 0, - "totBuyQty": 134375, - "totSellQty": 19275, - "bidQty": 1100, - "bidPrice": 2.55, - "askQty": 1800, - "askPrice": 2.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22300.00", - "oi": 21, - "oiChg": 16, - "oiPctChg": 320, - "totTradedVol": 20, - "iv": 41.14, - "ltp": 1745, - "change": -305, - "pChange": -14.878048780487804, - "totBuyQty": 4100, - "totSellQty": 4100, - "bidQty": 1000, - "bidPrice": 1683.95, - "askQty": 1000, - "askPrice": 1726.55 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22300.00", - "oi": 7322, - "oiChg": 884, - "oiPctChg": 13.730972351662007, - "totTradedVol": 37120, - "iv": 22.85, - "ltp": 2.65, - "change": 0, - "pChange": 0, - "totBuyQty": 526500, - "totSellQty": 21375, - "bidQty": 2750, - "bidPrice": 2.65, - "askQty": 4850, - "askPrice": 2.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3300, - "totSellQty": 3450, - "bidQty": 1000, - "bidPrice": 1637.35, - "askQty": 25, - "askPrice": 1671.3 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22350.00", - "oi": 3956, - "oiChg": 849, - "oiPctChg": 27.325394271000967, - "totTradedVol": 13641, - "iv": 22.18, - "ltp": 2.7, - "change": 0, - "pChange": 0, - "totBuyQty": 111725, - "totSellQty": 13300, - "bidQty": 1125, - "bidPrice": 2.65, - "askQty": 600, - "askPrice": 2.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22400.00", - "oi": 27, - "oiChg": 20, - "oiPctChg": 285.7142857142857, - "totTradedVol": 27, - "iv": 40.08, - "ltp": 1650, - "change": -310, - "pChange": -15.816326530612246, - "totBuyQty": 5250, - "totSellQty": 5250, - "bidQty": 1525, - "bidPrice": 1582.7, - "askQty": 1000, - "askPrice": 1630.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22400.00", - "oi": 8954, - "oiChg": 2703, - "oiPctChg": 43.24108142697168, - "totTradedVol": 36814, - "iv": 21.77, - "ltp": 2.9, - "change": 0.1499999999999999, - "pChange": 5.4545454545454515, - "totBuyQty": 439750, - "totSellQty": 17525, - "bidQty": 5125, - "bidPrice": 2.85, - "askQty": 700, - "askPrice": 2.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22450.00", - "oi": 7, - "oiChg": 4, - "oiPctChg": 133.33333333333334, - "totTradedVol": 8, - "iv": 49.71, - "ltp": 1675.6, - "change": 554.8999999999999, - "pChange": 49.51369679664494, - "totBuyQty": 4575, - "totSellQty": 3575, - "bidQty": 1000, - "bidPrice": 1531.45, - "askQty": 50, - "askPrice": 1576.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22450.00", - "oi": 1503, - "oiChg": 170, - "oiPctChg": 12.753188297074269, - "totTradedVol": 7115, - "iv": 21.2, - "ltp": 3, - "change": 0.20000000000000018, - "pChange": 7.1428571428571495, - "totBuyQty": 103075, - "totSellQty": 17775, - "bidQty": 1275, - "bidPrice": 3, - "askQty": 2600, - "askPrice": 3.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22500.00", - "oi": 425, - "oiChg": 73, - "oiPctChg": 20.738636363636363, - "totTradedVol": 216, - "iv": 38.94, - "ltp": 1505.5, - "change": -340.6500000000001, - "pChange": -18.45191344148634, - "totBuyQty": 5300, - "totSellQty": 4025, - "bidQty": 25, - "bidPrice": 1503.7, - "askQty": 100, - "askPrice": 1515.6 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22500.00", - "oi": 71041, - "oiChg": 30370, - "oiPctChg": 74.67237097686312, - "totTradedVol": 179456, - "iv": 20.99, - "ltp": 3.35, - "change": 0.3500000000000001, - "pChange": 11.66666666666667, - "totBuyQty": 904500, - "totSellQty": 43025, - "bidQty": 1950, - "bidPrice": 3.3, - "askQty": 3175, - "askPrice": 3.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22550.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6250, - "totSellQty": 5250, - "bidQty": 1000, - "bidPrice": 1436.8, - "askQty": 25, - "askPrice": 1475.85 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22550.00", - "oi": 1242, - "oiChg": 124, - "oiPctChg": 11.091234347048301, - "totTradedVol": 4826, - "iv": 20.36, - "ltp": 3.55, - "change": 0.2999999999999998, - "pChange": 9.230769230769226, - "totBuyQty": 116700, - "totSellQty": 8600, - "bidQty": 850, - "bidPrice": 3.5, - "askQty": 175, - "askPrice": 3.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22600.00", - "oi": 28, - "oiChg": 17, - "oiPctChg": 154.54545454545453, - "totTradedVol": 20, - "iv": 34.32, - "ltp": 1438.65, - "change": -219.75, - "pChange": -13.250723589001446, - "totBuyQty": 6525, - "totSellQty": 7700, - "bidQty": 300, - "bidPrice": 1390.15, - "askQty": 1000, - "askPrice": 1427.65 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22600.00", - "oi": 17234, - "oiChg": 6817, - "oiPctChg": 65.44110588461169, - "totTradedVol": 91485, - "iv": 19.97, - "ltp": 3.8, - "change": 0.5999999999999996, - "pChange": 18.74999999999999, - "totBuyQty": 288650, - "totSellQty": 17675, - "bidQty": 1925, - "bidPrice": 3.75, - "askQty": 3300, - "askPrice": 3.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22650.00", - "oi": 42, - "oiChg": 41, - "oiPctChg": 4100, - "totTradedVol": 129, - "iv": 35.51, - "ltp": 1402, - "change": 463.4, - "pChange": 49.371404219049644, - "totBuyQty": 6900, - "totSellQty": 7550, - "bidQty": 1100, - "bidPrice": 1341, - "askQty": 100, - "askPrice": 1371.35 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22650.00", - "oi": 2811, - "oiChg": 856, - "oiPctChg": 43.785166240409204, - "totTradedVol": 18286, - "iv": 19.59, - "ltp": 4.2, - "change": 0.9000000000000004, - "pChange": 27.272727272727288, - "totBuyQty": 100575, - "totSellQty": 14400, - "bidQty": 3750, - "bidPrice": 4.1, - "askQty": 1475, - "askPrice": 4.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22700.00", - "oi": 34, - "oiChg": 16, - "oiPctChg": 88.88888888888889, - "totTradedVol": 40, - "iv": 0, - "ltp": 1270, - "change": -390.70000000000005, - "pChange": -23.526223881495756, - "totBuyQty": 6450, - "totSellQty": 6700, - "bidQty": 75, - "bidPrice": 1292.65, - "askQty": 75, - "askPrice": 1313.25 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22700.00", - "oi": 36975, - "oiChg": 13729, - "oiPctChg": 59.05962316097393, - "totTradedVol": 127040, - "iv": 19.08, - "ltp": 4.5, - "change": 1.0499999999999998, - "pChange": 30.43478260869564, - "totBuyQty": 140525, - "totSellQty": 28450, - "bidQty": 3625, - "bidPrice": 4.45, - "askQty": 2375, - "askPrice": 4.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22750.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 41.16, - "ltp": 1360, - "change": 507.35, - "pChange": 59.50272679293966, - "totBuyQty": 5825, - "totSellQty": 6825, - "bidQty": 225, - "bidPrice": 1250.25, - "askQty": 1000, - "askPrice": 1281.05 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22750.00", - "oi": 3450, - "oiChg": 688, - "oiPctChg": 24.90948587979725, - "totTradedVol": 23020, - "iv": 18.78, - "ltp": 5.1, - "change": 1.6999999999999997, - "pChange": 49.99999999999999, - "totBuyQty": 92300, - "totSellQty": 13950, - "bidQty": 575, - "bidPrice": 5, - "askQty": 150, - "askPrice": 5.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22800.00", - "oi": 199, - "oiChg": 62, - "oiPctChg": 45.25547445255474, - "totTradedVol": 85, - "iv": 26.14, - "ltp": 1214.35, - "change": -335.6500000000001, - "pChange": -21.654838709677428, - "totBuyQty": 9400, - "totSellQty": 7625, - "bidQty": 50, - "bidPrice": 1203.8, - "askQty": 50, - "askPrice": 1217.55 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22800.00", - "oi": 36185, - "oiChg": 21718, - "oiPctChg": 150.12096495472454, - "totTradedVol": 161262, - "iv": 18.49, - "ltp": 5.75, - "change": 1.75, - "pChange": 43.75, - "totBuyQty": 159625, - "totSellQty": 56150, - "bidQty": 6950, - "bidPrice": 5.7, - "askQty": 1475, - "askPrice": 5.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22850.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 41.2, - "ltp": 1280, - "change": -140, - "pChange": -9.859154929577464, - "totBuyQty": 6725, - "totSellQty": 6725, - "bidQty": 75, - "bidPrice": 1152.35, - "askQty": 75, - "askPrice": 1173.2 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22850.00", - "oi": 4099, - "oiChg": 1522, - "oiPctChg": 59.06092355452076, - "totTradedVol": 25355, - "iv": 18.15, - "ltp": 6.5, - "change": 2.25, - "pChange": 52.94117647058824, - "totBuyQty": 107950, - "totSellQty": 9975, - "bidQty": 150, - "bidPrice": 6.5, - "askQty": 1600, - "askPrice": 6.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22900.00", - "oi": 124, - "oiChg": 3, - "oiPctChg": 2.479338842975207, - "totTradedVol": 23, - "iv": 41.59, - "ltp": 1244.3, - "change": -155.70000000000005, - "pChange": -11.121428571428575, - "totBuyQty": 8425, - "totSellQty": 7125, - "bidQty": 150, - "bidPrice": 1104.9, - "askQty": 75, - "askPrice": 1120 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22900.00", - "oi": 25295, - "oiChg": 14936, - "oiPctChg": 144.18380152524375, - "totTradedVol": 117553, - "iv": 17.76, - "ltp": 7.35, - "change": 2.6999999999999993, - "pChange": 58.06451612903224, - "totBuyQty": 142875, - "totSellQty": 30950, - "bidQty": 3400, - "bidPrice": 7.3, - "askQty": 3300, - "askPrice": 7.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE22950.00", - "oi": 11, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6525, - "totSellQty": 4475, - "bidQty": 1000, - "bidPrice": 1040.9, - "askQty": 25, - "askPrice": 1080.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE22950.00", - "oi": 3811, - "oiChg": 1899, - "oiPctChg": 99.32008368200837, - "totTradedVol": 28763, - "iv": 17.53, - "ltp": 8.55, - "change": 3.750000000000001, - "pChange": 78.12500000000003, - "totBuyQty": 107850, - "totSellQty": 11200, - "bidQty": 625, - "bidPrice": 8.5, - "askQty": 350, - "askPrice": 8.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23000.00", - "oi": 3269, - "oiChg": 1343, - "oiPctChg": 69.73001038421599, - "totTradedVol": 3601, - "iv": 25.57, - "ltp": 1010.3, - "change": -341.4000000000001, - "pChange": -25.257083672412524, - "totBuyQty": 13625, - "totSellQty": 20825, - "bidQty": 250, - "bidPrice": 1010.3, - "askQty": 250, - "askPrice": 1015.65 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23000.00", - "oi": 147631, - "oiChg": 68057, - "oiPctChg": 85.52667956870334, - "totTradedVol": 555784, - "iv": 17.25, - "ltp": 9.9, - "change": 4.3500000000000005, - "pChange": 78.37837837837839, - "totBuyQty": 973125, - "totSellQty": 203175, - "bidQty": 2625, - "bidPrice": 9.8, - "askQty": 3475, - "askPrice": 9.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23050.00", - "oi": 259, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 33, - "iv": 16.61, - "ltp": 943.05, - "change": -369.79999999999995, - "pChange": -28.16772670145104, - "totBuyQty": 7600, - "totSellQty": 8875, - "bidQty": 75, - "bidPrice": 963.15, - "askQty": 225, - "askPrice": 976.6 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23050.00", - "oi": 7925, - "oiChg": 6276, - "oiPctChg": 380.5942995755003, - "totTradedVol": 53873, - "iv": 16.85, - "ltp": 10.9, - "change": 5.1000000000000005, - "pChange": 87.93103448275863, - "totBuyQty": 135750, - "totSellQty": 31400, - "bidQty": 625, - "bidPrice": 10.85, - "askQty": 950, - "askPrice": 10.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23100.00", - "oi": 381, - "oiChg": 34, - "oiPctChg": 9.798270893371757, - "totTradedVol": 177, - "iv": 26.46, - "ltp": 952.1, - "change": -298.80000000000007, - "pChange": -23.886801502917905, - "totBuyQty": 9775, - "totSellQty": 9025, - "bidQty": 75, - "bidPrice": 916.15, - "askQty": 100, - "askPrice": 922.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23100.00", - "oi": 26840, - "oiChg": 13209, - "oiPctChg": 96.90411561881007, - "totTradedVol": 183664, - "iv": 16.55, - "ltp": 12.45, - "change": 6.1, - "pChange": 96.06299212598425, - "totBuyQty": 168275, - "totSellQty": 33150, - "bidQty": 575, - "bidPrice": 12.45, - "askQty": 1100, - "askPrice": 12.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23150.00", - "oi": 379, - "oiChg": -16, - "oiPctChg": -4.050632911392405, - "totTradedVol": 70, - "iv": 24.92, - "ltp": 898.2, - "change": -227.75, - "pChange": -20.22736355966073, - "totBuyQty": 10300, - "totSellQty": 9100, - "bidQty": 50, - "bidPrice": 862, - "askQty": 75, - "askPrice": 875.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23150.00", - "oi": 11244, - "oiChg": 3183, - "oiPctChg": 39.48641607740975, - "totTradedVol": 66380, - "iv": 16.31, - "ltp": 14.6, - "change": 7.6499999999999995, - "pChange": 110.07194244604315, - "totBuyQty": 146300, - "totSellQty": 29575, - "bidQty": 125, - "bidPrice": 14.5, - "askQty": 750, - "askPrice": 14.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23200.00", - "oi": 751, - "oiChg": -255, - "oiPctChg": -25.347912524850894, - "totTradedVol": 473, - "iv": 24.83, - "ltp": 823.15, - "change": -344.19999999999993, - "pChange": -29.485587013320764, - "totBuyQty": 12850, - "totSellQty": 12325, - "bidQty": 50, - "bidPrice": 822.05, - "askQty": 100, - "askPrice": 827.85 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23200.00", - "oi": 47769, - "oiChg": 17887, - "oiPctChg": 59.85877785958102, - "totTradedVol": 251000, - "iv": 15.96, - "ltp": 16.45, - "change": 9.049999999999999, - "pChange": 122.29729729729728, - "totBuyQty": 177000, - "totSellQty": 62975, - "bidQty": 1000, - "bidPrice": 16.35, - "askQty": 1300, - "askPrice": 16.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23250.00", - "oi": 289, - "oiChg": 3, - "oiPctChg": 1.048951048951049, - "totTradedVol": 8, - "iv": 16.37, - "ltp": 755, - "change": -351.8499999999999, - "pChange": -31.788408546776886, - "totBuyQty": 11550, - "totSellQty": 9450, - "bidQty": 50, - "bidPrice": 762.35, - "askQty": 50, - "askPrice": 783.55 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23250.00", - "oi": 11956, - "oiChg": 4462, - "oiPctChg": 59.540966106218306, - "totTradedVol": 120497, - "iv": 15.72, - "ltp": 19.6, - "change": 11.250000000000002, - "pChange": 134.73053892215572, - "totBuyQty": 146500, - "totSellQty": 48175, - "bidQty": 1025, - "bidPrice": 19.3, - "askQty": 1375, - "askPrice": 19.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23300.00", - "oi": 2318, - "oiChg": 9, - "oiPctChg": 0.389779125162408, - "totTradedVol": 651, - "iv": 23.19, - "ltp": 734.4, - "change": -322.85, - "pChange": -30.536769921967373, - "totBuyQty": 13700, - "totSellQty": 12425, - "bidQty": 50, - "bidPrice": 724.9, - "askQty": 75, - "askPrice": 728.45 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23300.00", - "oi": 75549, - "oiChg": 40854, - "oiPctChg": 117.75183744055339, - "totTradedVol": 358281, - "iv": 15.4, - "ltp": 22.5, - "change": 13.5, - "pChange": 150, - "totBuyQty": 193300, - "totSellQty": 50200, - "bidQty": 1400, - "bidPrice": 22.35, - "askQty": 1025, - "askPrice": 22.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23350.00", - "oi": 440, - "oiChg": -19, - "oiPctChg": -4.139433551198257, - "totTradedVol": 135, - "iv": 26.45, - "ltp": 685.25, - "change": -326.75, - "pChange": -32.287549407114625, - "totBuyQty": 12150, - "totSellQty": 9325, - "bidQty": 100, - "bidPrice": 678.95, - "askQty": 25, - "askPrice": 683.1 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23350.00", - "oi": 9444, - "oiChg": 3779, - "oiPctChg": 66.70785525154457, - "totTradedVol": 93726, - "iv": 15.21, - "ltp": 26.9, - "change": 16.7, - "pChange": 163.72549019607843, - "totBuyQty": 105700, - "totSellQty": 33675, - "bidQty": 525, - "bidPrice": 26.35, - "askQty": 475, - "askPrice": 26.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23400.00", - "oi": 5088, - "oiChg": 836, - "oiPctChg": 19.661335841956728, - "totTradedVol": 2802, - "iv": 20.23, - "ltp": 643.85, - "change": -312.65, - "pChange": -32.68687924725562, - "totBuyQty": 14750, - "totSellQty": 12575, - "bidQty": 250, - "bidPrice": 637.65, - "askQty": 250, - "askPrice": 639.8 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23400.00", - "oi": 45911, - "oiChg": 11520, - "oiPctChg": 33.497135878572884, - "totTradedVol": 264456, - "iv": 15, - "ltp": 30.45, - "change": 18.95, - "pChange": 164.7826086956522, - "totBuyQty": 105275, - "totSellQty": 45325, - "bidQty": 350, - "bidPrice": 30.25, - "askQty": 275, - "askPrice": 30.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23450.00", - "oi": 521, - "oiChg": 140, - "oiPctChg": 36.74540682414698, - "totTradedVol": 279, - "iv": 19.36, - "ltp": 594.5, - "change": -315.1, - "pChange": -34.64160070360599, - "totBuyQty": 18375, - "totSellQty": 11950, - "bidQty": 100, - "bidPrice": 590.65, - "askQty": 100, - "askPrice": 597.1 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23450.00", - "oi": 9838, - "oiChg": 3125, - "oiPctChg": 46.551467302249364, - "totTradedVol": 107269, - "iv": 14.78, - "ltp": 35.9, - "change": 22.95, - "pChange": 177.22007722007723, - "totBuyQty": 108250, - "totSellQty": 30400, - "bidQty": 625, - "bidPrice": 35.9, - "askQty": 75, - "askPrice": 36.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23500.00", - "oi": 16340, - "oiChg": 2250, - "oiPctChg": 15.968772178850248, - "totTradedVol": 17140, - "iv": 19.01, - "ltp": 548.2, - "change": -316.19999999999993, - "pChange": -36.58028690421101, - "totBuyQty": 27825, - "totSellQty": 22950, - "bidQty": 50, - "bidPrice": 550.25, - "askQty": 225, - "askPrice": 552.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23500.00", - "oi": 198515, - "oiChg": 39477, - "oiPctChg": 24.8223694965983, - "totTradedVol": 852686, - "iv": 14.54, - "ltp": 41.85, - "change": 27.55, - "pChange": 192.65734265734264, - "totBuyQty": 260575, - "totSellQty": 184975, - "bidQty": 1025, - "bidPrice": 41.95, - "askQty": 850, - "askPrice": 42.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23550.00", - "oi": 593, - "oiChg": 142, - "oiPctChg": 31.485587583148558, - "totTradedVol": 457, - "iv": 19.44, - "ltp": 507.55, - "change": -310.90000000000003, - "pChange": -37.98643777872809, - "totBuyQty": 21700, - "totSellQty": 13625, - "bidQty": 25, - "bidPrice": 502.7, - "askQty": 75, - "askPrice": 505.4 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23550.00", - "oi": 10465, - "oiChg": 4296, - "oiPctChg": 69.6385151564273, - "totTradedVol": 94257, - "iv": 14.33, - "ltp": 49.9, - "change": 33.099999999999994, - "pChange": 197.0238095238095, - "totBuyQty": 132050, - "totSellQty": 35550, - "bidQty": 150, - "bidPrice": 49.9, - "askQty": 200, - "askPrice": 50.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23600.00", - "oi": 10200, - "oiChg": 794, - "oiPctChg": 8.44142036997661, - "totTradedVol": 8754, - "iv": 18.14, - "ltp": 467, - "change": -298.35, - "pChange": -38.98216502253871, - "totBuyQty": 129350, - "totSellQty": 24800, - "bidQty": 400, - "bidPrice": 466.05, - "askQty": 100, - "askPrice": 468 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23600.00", - "oi": 56965, - "oiChg": 18382, - "oiPctChg": 47.64274421377291, - "totTradedVol": 401737, - "iv": 14.12, - "ltp": 57.55, - "change": 38.15, - "pChange": 196.6494845360825, - "totBuyQty": 95200, - "totSellQty": 74400, - "bidQty": 550, - "bidPrice": 57.55, - "askQty": 50, - "askPrice": 57.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23650.00", - "oi": 705, - "oiChg": 147, - "oiPctChg": 26.344086021505376, - "totTradedVol": 702, - "iv": 18.43, - "ltp": 425.15, - "change": -297.85, - "pChange": -41.19640387275243, - "totBuyQty": 119150, - "totSellQty": 14975, - "bidQty": 50, - "bidPrice": 422.5, - "askQty": 25, - "askPrice": 424 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23650.00", - "oi": 10403, - "oiChg": 4307, - "oiPctChg": 70.6528871391076, - "totTradedVol": 123009, - "iv": 13.97, - "ltp": 68.5, - "change": 46.25, - "pChange": 207.86516853932585, - "totBuyQty": 65000, - "totSellQty": 33975, - "bidQty": 50, - "bidPrice": 68.35, - "askQty": 175, - "askPrice": 68.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23700.00", - "oi": 9451, - "oiChg": 996, - "oiPctChg": 11.780011827321111, - "totTradedVol": 10887, - "iv": 17.31, - "ltp": 382.95, - "change": -295.25000000000006, - "pChange": -43.53435564730169, - "totBuyQty": 124425, - "totSellQty": 19975, - "bidQty": 50, - "bidPrice": 386.9, - "askQty": 100, - "askPrice": 388.4 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23700.00", - "oi": 76342, - "oiChg": 37577, - "oiPctChg": 96.93537985296014, - "totTradedVol": 459837, - "iv": 13.83, - "ltp": 79.1, - "change": 52.89999999999999, - "pChange": 201.90839694656484, - "totBuyQty": 80950, - "totSellQty": 87800, - "bidQty": 975, - "bidPrice": 79, - "askQty": 325, - "askPrice": 79.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23750.00", - "oi": 1731, - "oiChg": 1126, - "oiPctChg": 186.11570247933884, - "totTradedVol": 5574, - "iv": 17.03, - "ltp": 349.05, - "change": -278.65000000000003, - "pChange": -44.39222558547077, - "totBuyQty": 126300, - "totSellQty": 16450, - "bidQty": 50, - "bidPrice": 348.6, - "askQty": 175, - "askPrice": 349.95 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23750.00", - "oi": 16780, - "oiChg": 4477, - "oiPctChg": 36.38949849630171, - "totTradedVol": 169284, - "iv": 13.58, - "ltp": 91.95, - "change": 61.550000000000004, - "pChange": 202.46710526315792, - "totBuyQty": 67200, - "totSellQty": 125750, - "bidQty": 150, - "bidPrice": 92, - "askQty": 925, - "askPrice": 92.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23800.00", - "oi": 22579, - "oiChg": 7382, - "oiPctChg": 48.57537671908929, - "totTradedVol": 52558, - "iv": 16.74, - "ltp": 314.65, - "change": -271.55000000000007, - "pChange": -46.32378027976801, - "totBuyQty": 234725, - "totSellQty": 57400, - "bidQty": 400, - "bidPrice": 314.55, - "askQty": 225, - "askPrice": 315.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23800.00", - "oi": 96678, - "oiChg": 37179, - "oiPctChg": 62.486764483436694, - "totTradedVol": 736867, - "iv": 13.4, - "ltp": 106.65, - "change": 71.35000000000001, - "pChange": 202.1246458923513, - "totBuyQty": 136000, - "totSellQty": 129750, - "bidQty": 225, - "bidPrice": 106.8, - "askQty": 300, - "askPrice": 107.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23850.00", - "oi": 4221, - "oiChg": 3106, - "oiPctChg": 278.56502242152465, - "totTradedVol": 18750, - "iv": 16.32, - "ltp": 281.1, - "change": -262.69999999999993, - "pChange": -48.30820154468554, - "totBuyQty": 128950, - "totSellQty": 23650, - "bidQty": 100, - "bidPrice": 280.85, - "askQty": 200, - "askPrice": 281.8 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23850.00", - "oi": 16877, - "oiChg": 4396, - "oiPctChg": 35.22153673583848, - "totTradedVol": 209247, - "iv": 13.32, - "ltp": 123.65, - "change": 82.35000000000001, - "pChange": 199.3946731234867, - "totBuyQty": 73800, - "totSellQty": 52600, - "bidQty": 875, - "bidPrice": 123.75, - "askQty": 725, - "askPrice": 124.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23900.00", - "oi": 24695, - "oiChg": 18714, - "oiPctChg": 312.89082093295434, - "totTradedVol": 140125, - "iv": 16.13, - "ltp": 251, - "change": -248.14999999999998, - "pChange": -49.71451467494741, - "totBuyQty": 276175, - "totSellQty": 79300, - "bidQty": 175, - "bidPrice": 249.85, - "askQty": 600, - "askPrice": 250.85 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23900.00", - "oi": 62818, - "oiChg": 30723, - "oiPctChg": 95.72519083969466, - "totTradedVol": 663941, - "iv": 13.07, - "ltp": 142.35, - "change": 94.85, - "pChange": 199.68421052631578, - "totBuyQty": 106700, - "totSellQty": 119375, - "bidQty": 175, - "bidPrice": 142.05, - "askQty": 500, - "askPrice": 142.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE23950.00", - "oi": 10211, - "oiChg": 8703, - "oiPctChg": 577.1220159151194, - "totTradedVol": 88362, - "iv": 15.99, - "ltp": 220.55, - "change": -235.55, - "pChange": -51.64437623328217, - "totBuyQty": 254925, - "totSellQty": 61625, - "bidQty": 50, - "bidPrice": 219.55, - "askQty": 475, - "askPrice": 220.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE23950.00", - "oi": 17671, - "oiChg": 11310, - "oiPctChg": 177.80223235340355, - "totTradedVol": 260884, - "iv": 12.92, - "ltp": 164.45, - "change": 109.24999999999999, - "pChange": 197.91666666666663, - "totBuyQty": 75175, - "totSellQty": 49625, - "bidQty": 100, - "bidPrice": 164.8, - "askQty": 100, - "askPrice": 165.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24000.00", - "oi": 117474, - "oiChg": 94256, - "oiPctChg": 405.9608924110604, - "totTradedVol": 756193, - "iv": 15.78, - "ltp": 192.4, - "change": -222.35, - "pChange": -53.61060880048222, - "totBuyQty": 678800, - "totSellQty": 366700, - "bidQty": 50, - "bidPrice": 192.15, - "askQty": 275, - "askPrice": 192.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24000.00", - "oi": 116915, - "oiChg": 48206, - "oiPctChg": 70.15965885109665, - "totTradedVol": 1417272, - "iv": 12.68, - "ltp": 188, - "change": 123.65, - "pChange": 192.15229215229218, - "totBuyQty": 233625, - "totSellQty": 153825, - "bidQty": 25, - "bidPrice": 187.9, - "askQty": 25, - "askPrice": 188.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24050.00", - "oi": 26399, - "oiChg": 25258, - "oiPctChg": 2213.672217353199, - "totTradedVol": 204240, - "iv": 15.62, - "ltp": 169.9, - "change": -206.99999999999997, - "pChange": -54.921729901830716, - "totBuyQty": 72575, - "totSellQty": 118625, - "bidQty": 300, - "bidPrice": 169.35, - "askQty": 275, - "askPrice": 169.8 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24050.00", - "oi": 17823, - "oiChg": 11765, - "oiPctChg": 194.206008583691, - "totTradedVol": 292708, - "iv": 12.53, - "ltp": 213.45, - "change": 138.85, - "pChange": 186.12600536193028, - "totBuyQty": 49925, - "totSellQty": 38000, - "bidQty": 50, - "bidPrice": 212.7, - "askQty": 250, - "askPrice": 213.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24100.00", - "oi": 94608, - "oiChg": 87764, - "oiPctChg": 1282.3495032144945, - "totTradedVol": 690806, - "iv": 15.47, - "ltp": 147.35, - "change": -188.75000000000003, - "pChange": -56.15888128533175, - "totBuyQty": 144075, - "totSellQty": 349675, - "bidQty": 100, - "bidPrice": 146.95, - "askQty": 650, - "askPrice": 147.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24100.00", - "oi": 77906, - "oiChg": 47979, - "oiPctChg": 160.3201122731981, - "totTradedVol": 797266, - "iv": 12.31, - "ltp": 238.2, - "change": 151.04999999999998, - "pChange": 173.32185886402752, - "totBuyQty": 66375, - "totSellQty": 80725, - "bidQty": 50, - "bidPrice": 238, - "askQty": 100, - "askPrice": 238.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24150.00", - "oi": 25908, - "oiChg": 23305, - "oiPctChg": 895.3131002689205, - "totTradedVol": 239829, - "iv": 15.29, - "ltp": 126.1, - "change": -174.54999999999998, - "pChange": -58.057541992349904, - "totBuyQty": 69525, - "totSellQty": 125750, - "bidQty": 150, - "bidPrice": 125.9, - "askQty": 500, - "askPrice": 126.3 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24150.00", - "oi": 14553, - "oiChg": 1628, - "oiPctChg": 12.595744680851064, - "totTradedVol": 227531, - "iv": 12.17, - "ltp": 270.35, - "change": 169.55, - "pChange": 168.2043650793651, - "totBuyQty": 35275, - "totSellQty": 25125, - "bidQty": 125, - "bidPrice": 270.8, - "askQty": 300, - "askPrice": 271.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24200.00", - "oi": 160790, - "oiChg": 103260, - "oiPctChg": 179.4889622805493, - "totTradedVol": 903614, - "iv": 15.26, - "ltp": 108.15, - "change": -156.54999999999998, - "pChange": -59.14242538723082, - "totBuyQty": 181575, - "totSellQty": 545275, - "bidQty": 150, - "bidPrice": 108.15, - "askQty": 925, - "askPrice": 108.5 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24200.00", - "oi": 97561, - "oiChg": 18388, - "oiPctChg": 23.22508936127215, - "totTradedVol": 733669, - "iv": 11.78, - "ltp": 303.25, - "change": 187.35, - "pChange": 161.64797238999137, - "totBuyQty": 56750, - "totSellQty": 55475, - "bidQty": 400, - "bidPrice": 302, - "askQty": 200, - "askPrice": 303.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24250.00", - "oi": 31252, - "oiChg": 18803, - "oiPctChg": 151.040244196321, - "totTradedVol": 329804, - "iv": 15.17, - "ltp": 91.6, - "change": -142.4, - "pChange": -60.85470085470086, - "totBuyQty": 77350, - "totSellQty": 157225, - "bidQty": 275, - "bidPrice": 91.55, - "askQty": 975, - "askPrice": 92.1 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24250.00", - "oi": 19363, - "oiChg": 3520, - "oiPctChg": 22.218014264975068, - "totTradedVol": 208838, - "iv": 11.58, - "ltp": 336.55, - "change": 202.4, - "pChange": 150.87588520313082, - "totBuyQty": 28575, - "totSellQty": 32475, - "bidQty": 400, - "bidPrice": 336.1, - "askQty": 75, - "askPrice": 337.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24300.00", - "oi": 209007, - "oiChg": 134660, - "oiPctChg": 181.1236499118996, - "totTradedVol": 1149714, - "iv": 15.06, - "ltp": 77.9, - "change": -125.15, - "pChange": -61.63506525486333, - "totBuyQty": 204575, - "totSellQty": 647475, - "bidQty": 775, - "bidPrice": 77.75, - "askQty": 500, - "askPrice": 78.05 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24300.00", - "oi": 103297, - "oiChg": 32986, - "oiPctChg": 46.91442306324757, - "totTradedVol": 665594, - "iv": 11.22, - "ltp": 372.1, - "change": 219.3, - "pChange": 143.52094240837695, - "totBuyQty": 52325, - "totSellQty": 40075, - "bidQty": 400, - "bidPrice": 371.5, - "askQty": 50, - "askPrice": 372.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24350.00", - "oi": 38980, - "oiChg": 27505, - "oiPctChg": 239.6949891067538, - "totTradedVol": 353979, - "iv": 15.06, - "ltp": 65.95, - "change": -109.2, - "pChange": -62.34656009135027, - "totBuyQty": 82350, - "totSellQty": 203775, - "bidQty": 100, - "bidPrice": 65.9, - "askQty": 225, - "askPrice": 66 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24350.00", - "oi": 6939, - "oiChg": -1592, - "oiPctChg": -18.661352713632635, - "totTradedVol": 120193, - "iv": 10.77, - "ltp": 406.75, - "change": 231.2, - "pChange": 131.7003702648818, - "totBuyQty": 32250, - "totSellQty": 12225, - "bidQty": 25, - "bidPrice": 406.7, - "askQty": 25, - "askPrice": 407.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24400.00", - "oi": 121535, - "oiChg": 79314, - "oiPctChg": 187.85438525852064, - "totTradedVol": 863801, - "iv": 15.01, - "ltp": 55, - "change": -94.35, - "pChange": -63.17375292936056, - "totBuyQty": 130900, - "totSellQty": 338375, - "bidQty": 800, - "bidPrice": 54.8, - "askQty": 950, - "askPrice": 55 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24400.00", - "oi": 21059, - "oiChg": 748, - "oiPctChg": 3.682733494165723, - "totTradedVol": 188193, - "iv": 10.07, - "ltp": 444.65, - "change": 245.99999999999997, - "pChange": 123.83589227284166, - "totBuyQty": 96600, - "totSellQty": 23225, - "bidQty": 25, - "bidPrice": 444.65, - "askQty": 450, - "askPrice": 445.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24450.00", - "oi": 20586, - "oiChg": 13096, - "oiPctChg": 174.8464619492657, - "totTradedVol": 188164, - "iv": 15, - "ltp": 45.9, - "change": -81.55000000000001, - "pChange": -63.985876814437034, - "totBuyQty": 71275, - "totSellQty": 116250, - "bidQty": 525, - "bidPrice": 45.65, - "askQty": 1375, - "askPrice": 45.85 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24450.00", - "oi": 1869, - "oiChg": -513, - "oiPctChg": -21.536523929471034, - "totTradedVol": 19650, - "iv": 6.46, - "ltp": 491, - "change": 266.4, - "pChange": 118.61086375779162, - "totBuyQty": 9900, - "totSellQty": 15825, - "bidQty": 250, - "bidPrice": 488.85, - "askQty": 250, - "askPrice": 490.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24500.00", - "oi": 227672, - "oiChg": 126717, - "oiPctChg": 125.51830023277698, - "totTradedVol": 1398294, - "iv": 15.01, - "ltp": 38, - "change": -67.55, - "pChange": -63.998105163429656, - "totBuyQty": 266425, - "totSellQty": 1077325, - "bidQty": 800, - "bidPrice": 37.9, - "askQty": 175, - "askPrice": 38.05 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24500.00", - "oi": 29702, - "oiChg": 5995, - "oiPctChg": 25.287889652845152, - "totTradedVol": 125135, - "iv": 6.88, - "ltp": 526.8, - "change": 268.24999999999994, - "pChange": 103.75169212918196, - "totBuyQty": 20300, - "totSellQty": 64700, - "bidQty": 25, - "bidPrice": 526, - "askQty": 150, - "askPrice": 527.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24550.00", - "oi": 21956, - "oiChg": 12397, - "oiPctChg": 129.68929804372843, - "totTradedVol": 214666, - "iv": 15.01, - "ltp": 31.3, - "change": -56.10000000000001, - "pChange": -64.18764302059498, - "totBuyQty": 85750, - "totSellQty": 103375, - "bidQty": 700, - "bidPrice": 31.15, - "askQty": 2325, - "askPrice": 31.35 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24550.00", - "oi": 928, - "oiChg": -263, - "oiPctChg": -22.08228379513014, - "totTradedVol": 4227, - "iv": 0, - "ltp": 577.65, - "change": 292.65, - "pChange": 102.68421052631578, - "totBuyQty": 10450, - "totSellQty": 11250, - "bidQty": 250, - "bidPrice": 570.05, - "askQty": 475, - "askPrice": 572.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24600.00", - "oi": 82041, - "oiChg": 38653, - "oiPctChg": 89.08684428874344, - "totTradedVol": 680037, - "iv": 14.97, - "ltp": 25.75, - "change": -45.2, - "pChange": -63.70683579985905, - "totBuyQty": 127525, - "totSellQty": 217275, - "bidQty": 775, - "bidPrice": 25.75, - "askQty": 475, - "askPrice": 25.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24600.00", - "oi": 3490, - "oiChg": 123, - "oiPctChg": 3.653103653103653, - "totTradedVol": 17043, - "iv": 0, - "ltp": 616.5, - "change": 296.6, - "pChange": 92.71647389809317, - "totBuyQty": 13250, - "totSellQty": 14900, - "bidQty": 175, - "bidPrice": 616.3, - "askQty": 275, - "askPrice": 618.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24650.00", - "oi": 24601, - "oiChg": 15010, - "oiPctChg": 156.5008862475237, - "totTradedVol": 218438, - "iv": 15.01, - "ltp": 21.15, - "change": -36.25, - "pChange": -63.153310104529616, - "totBuyQty": 95975, - "totSellQty": 104650, - "bidQty": 475, - "bidPrice": 21.1, - "askQty": 1725, - "askPrice": 21.25 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24650.00", - "oi": 587, - "oiChg": 16, - "oiPctChg": 2.8021015761821366, - "totTradedVol": 1735, - "iv": 0, - "ltp": 661.6, - "change": 307.3, - "pChange": 86.73440587073102, - "totBuyQty": 13925, - "totSellQty": 12975, - "bidQty": 250, - "bidPrice": 663, - "askQty": 75, - "askPrice": 667.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24700.00", - "oi": 75308, - "oiChg": 37776, - "oiPctChg": 100.65011190450815, - "totTradedVol": 594882, - "iv": 15.07, - "ltp": 17.25, - "change": -28.549999999999997, - "pChange": -62.33624454148471, - "totBuyQty": 225175, - "totSellQty": 169200, - "bidQty": 1475, - "bidPrice": 17.1, - "askQty": 1400, - "askPrice": 17.25 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24700.00", - "oi": 1277, - "oiChg": 59, - "oiPctChg": 4.844006568144499, - "totTradedVol": 3885, - "iv": 0, - "ltp": 712.2, - "change": 318.30000000000007, - "pChange": 80.80731150038083, - "totBuyQty": 19500, - "totSellQty": 14950, - "bidQty": 100, - "bidPrice": 709.3, - "askQty": 275, - "askPrice": 711.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24750.00", - "oi": 20480, - "oiChg": 11559, - "oiPctChg": 129.57067593319135, - "totTradedVol": 178761, - "iv": 15.11, - "ltp": 14.25, - "change": -21.950000000000003, - "pChange": -60.6353591160221, - "totBuyQty": 107700, - "totSellQty": 84050, - "bidQty": 750, - "bidPrice": 14.2, - "askQty": 825, - "askPrice": 14.3 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24750.00", - "oi": 428, - "oiChg": 155, - "oiPctChg": 56.776556776556774, - "totTradedVol": 716, - "iv": 0, - "ltp": 745.8, - "change": 310.09999999999997, - "pChange": 71.17282533853569, - "totBuyQty": 10925, - "totSellQty": 8000, - "bidQty": 125, - "bidPrice": 752.3, - "askQty": 200, - "askPrice": 757.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24800.00", - "oi": 184185, - "oiChg": 49591, - "oiPctChg": 36.844881644055455, - "totTradedVol": 715987, - "iv": 15.17, - "ltp": 11.6, - "change": -15.950000000000001, - "pChange": -57.89473684210527, - "totBuyQty": 385050, - "totSellQty": 340700, - "bidQty": 3225, - "bidPrice": 11.55, - "askQty": 1225, - "askPrice": 11.65 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24800.00", - "oi": 2541, - "oiChg": 387, - "oiPctChg": 17.96657381615599, - "totTradedVol": 4231, - "iv": 0, - "ltp": 800, - "change": 326.45, - "pChange": 68.93675430260797, - "totBuyQty": 20250, - "totSellQty": 14550, - "bidQty": 100, - "bidPrice": 798.5, - "askQty": 75, - "askPrice": 803.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24850.00", - "oi": 17913, - "oiChg": 7925, - "oiPctChg": 79.34521425710852, - "totTradedVol": 151634, - "iv": 15.26, - "ltp": 9.85, - "change": -12.200000000000001, - "pChange": -55.32879818594104, - "totBuyQty": 132375, - "totSellQty": 89850, - "bidQty": 1575, - "bidPrice": 9.7, - "askQty": 625, - "askPrice": 9.8 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24850.00", - "oi": 135, - "oiChg": 26, - "oiPctChg": 23.853211009174313, - "totTradedVol": 171, - "iv": 0, - "ltp": 800.85, - "change": 280.95000000000005, - "pChange": 54.0392383150606, - "totBuyQty": 8675, - "totSellQty": 8275, - "bidQty": 25, - "bidPrice": 849.25, - "askQty": 100, - "askPrice": 856 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24900.00", - "oi": 57326, - "oiChg": 28807, - "oiPctChg": 101.00985308040254, - "totTradedVol": 360612, - "iv": 15.43, - "ltp": 8.05, - "change": -9, - "pChange": -52.785923753665685, - "totBuyQty": 277775, - "totSellQty": 162150, - "bidQty": 7025, - "bidPrice": 8, - "askQty": 475, - "askPrice": 8.05 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24900.00", - "oi": 527, - "oiChg": -92, - "oiPctChg": -14.862681744749596, - "totTradedVol": 598, - "iv": 0, - "ltp": 897.4, - "change": 334.1, - "pChange": 59.3112018462631, - "totBuyQty": 10500, - "totSellQty": 10575, - "bidQty": 75, - "bidPrice": 894.35, - "askQty": 100, - "askPrice": 901.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE24950.00", - "oi": 27246, - "oiChg": 16917, - "oiPctChg": 163.78158582631426, - "totTradedVol": 162416, - "iv": 15.59, - "ltp": 6.9, - "change": -7.049999999999999, - "pChange": -50.53763440860215, - "totBuyQty": 184225, - "totSellQty": 53425, - "bidQty": 1525, - "bidPrice": 6.9, - "askQty": 775, - "askPrice": 6.95 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE24950.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 600, - "change": -784, - "pChange": -56.64739884393064, - "totBuyQty": 7925, - "totSellQty": 7000, - "bidQty": 225, - "bidPrice": 929.15, - "askQty": 450, - "askPrice": 955.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25000.00", - "oi": 184929, - "oiChg": 83334, - "oiPctChg": 82.02569024066145, - "totTradedVol": 843593, - "iv": 15.75, - "ltp": 5.75, - "change": -5.25, - "pChange": -47.72727272727273, - "totBuyQty": 655900, - "totSellQty": 537850, - "bidQty": 9075, - "bidPrice": 5.7, - "askQty": 60150, - "askPrice": 5.8 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25000.00", - "oi": 6624, - "oiChg": 1149, - "oiPctChg": 20.986301369863014, - "totTradedVol": 8158, - "iv": 0, - "ltp": 995, - "change": 340.25, - "pChange": 51.9663993890798, - "totBuyQty": 30275, - "totSellQty": 19200, - "bidQty": 100, - "bidPrice": 995.05, - "askQty": 75, - "askPrice": 998.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25050.00", - "oi": 18423, - "oiChg": 8174, - "oiPctChg": 79.75412235340033, - "totTradedVol": 106721, - "iv": 15.86, - "ltp": 4.9, - "change": -3.5, - "pChange": -41.666666666666664, - "totBuyQty": 198725, - "totSellQty": 50075, - "bidQty": 3550, - "bidPrice": 4.8, - "askQty": 2725, - "askPrice": 4.9 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25050.00", - "oi": 43, - "oiChg": 3, - "oiPctChg": 7.5, - "totTradedVol": 4, - "iv": 0, - "ltp": 885, - "change": 182, - "pChange": 25.889046941678522, - "totBuyQty": 6925, - "totSellQty": 5850, - "bidQty": 25, - "bidPrice": 1033.45, - "askQty": 75, - "askPrice": 1048.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25100.00", - "oi": 70835, - "oiChg": 37620, - "oiPctChg": 113.26208038536805, - "totTradedVol": 299731, - "iv": 16.1, - "ltp": 4.25, - "change": -2.55, - "pChange": -37.5, - "totBuyQty": 397025, - "totSellQty": 148850, - "bidQty": 8700, - "bidPrice": 4.25, - "askQty": 3000, - "askPrice": 4.3 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25100.00", - "oi": 272, - "oiChg": 25, - "oiPctChg": 10.121457489878543, - "totTradedVol": 56, - "iv": 0, - "ltp": 1088.15, - "change": 335.05000000000007, - "pChange": 44.48944363298368, - "totBuyQty": 8125, - "totSellQty": 7250, - "bidQty": 150, - "bidPrice": 1087.7, - "askQty": 150, - "askPrice": 1098.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25150.00", - "oi": 12445, - "oiChg": 5682, - "oiPctChg": 84.01596924441816, - "totTradedVol": 67547, - "iv": 16.31, - "ltp": 3.7, - "change": -1.8999999999999995, - "pChange": -33.928571428571416, - "totBuyQty": 150725, - "totSellQty": 38050, - "bidQty": 2000, - "bidPrice": 3.7, - "askQty": 3925, - "askPrice": 3.8 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25150.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5475, - "totSellQty": 6250, - "bidQty": 1000, - "bidPrice": 1119.35, - "askQty": 1000, - "askPrice": 1167.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25200.00", - "oi": 63930, - "oiChg": 31812, - "oiPctChg": 99.04726321688773, - "totTradedVol": 244359, - "iv": 16.57, - "ltp": 3.25, - "change": -1.5499999999999998, - "pChange": -32.291666666666664, - "totBuyQty": 336400, - "totSellQty": 86525, - "bidQty": 1800, - "bidPrice": 3.3, - "askQty": 9125, - "askPrice": 3.35 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25200.00", - "oi": 1075, - "oiChg": 334, - "oiPctChg": 45.07422402159244, - "totTradedVol": 421, - "iv": 0, - "ltp": 1180, - "change": 331.6, - "pChange": 39.08533710513909, - "totBuyQty": 21850, - "totSellQty": 7725, - "bidQty": 50, - "bidPrice": 1182.65, - "askQty": 100, - "askPrice": 1200.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25250.00", - "oi": 15494, - "oiChg": 7391, - "oiPctChg": 91.21313093915833, - "totTradedVol": 57376, - "iv": 16.82, - "ltp": 2.9, - "change": -1.15, - "pChange": -28.39506172839506, - "totBuyQty": 135875, - "totSellQty": 35250, - "bidQty": 2900, - "bidPrice": 2.85, - "askQty": 3075, - "askPrice": 2.95 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25250.00", - "oi": 29, - "oiChg": 8, - "oiPctChg": 38.095238095238095, - "totTradedVol": 16, - "iv": 0, - "ltp": 1175, - "change": 226.45000000000005, - "pChange": 23.873280269885623, - "totBuyQty": 6400, - "totSellQty": 6000, - "bidQty": 150, - "bidPrice": 1239.3, - "askQty": 50, - "askPrice": 1250.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25300.00", - "oi": 43160, - "oiChg": 24936, - "oiPctChg": 136.8305531167691, - "totTradedVol": 167917, - "iv": 17.1, - "ltp": 2.65, - "change": -0.7000000000000002, - "pChange": -20.895522388059707, - "totBuyQty": 590875, - "totSellQty": 79475, - "bidQty": 11000, - "bidPrice": 2.6, - "askQty": 2375, - "askPrice": 2.65 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25300.00", - "oi": 646, - "oiChg": 274, - "oiPctChg": 73.65591397849462, - "totTradedVol": 323, - "iv": 0, - "ltp": 1292.8, - "change": 348.79999999999995, - "pChange": 36.94915254237288, - "totBuyQty": 9950, - "totSellQty": 8825, - "bidQty": 125, - "bidPrice": 1283.8, - "askQty": 250, - "askPrice": 1295.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25350.00", - "oi": 6624, - "oiChg": 2348, - "oiPctChg": 54.911131898971, - "totTradedVol": 31136, - "iv": 17.45, - "ltp": 2.4, - "change": -0.7000000000000002, - "pChange": -22.580645161290327, - "totBuyQty": 134200, - "totSellQty": 26875, - "bidQty": 1100, - "bidPrice": 2.4, - "askQty": 2000, - "askPrice": 2.45 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25350.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6250, - "totSellQty": 6250, - "bidQty": 1000, - "bidPrice": 1316, - "askQty": 1000, - "askPrice": 1367.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25400.00", - "oi": 29787, - "oiChg": 12775, - "oiPctChg": 75.09405125793558, - "totTradedVol": 94687, - "iv": 17.78, - "ltp": 2.25, - "change": -0.5, - "pChange": -18.181818181818183, - "totBuyQty": 585350, - "totSellQty": 67375, - "bidQty": 13725, - "bidPrice": 2.2, - "askQty": 8500, - "askPrice": 2.25 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25400.00", - "oi": 171, - "oiChg": 80, - "oiPctChg": 87.91208791208791, - "totTradedVol": 101, - "iv": 0, - "ltp": 1402.05, - "change": 357.70000000000005, - "pChange": 34.250969502561404, - "totBuyQty": 7900, - "totSellQty": 7550, - "bidQty": 75, - "bidPrice": 1380.35, - "askQty": 100, - "askPrice": 1401.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25450.00", - "oi": 3444, - "oiChg": 1326, - "oiPctChg": 62.60623229461756, - "totTradedVol": 14934, - "iv": 18.19, - "ltp": 2.15, - "change": -0.4500000000000002, - "pChange": -17.307692307692314, - "totBuyQty": 163550, - "totSellQty": 18950, - "bidQty": 2175, - "bidPrice": 2.05, - "askQty": 2000, - "askPrice": 2.15 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25450.00", - "oi": 3, - "oiChg": 2, - "oiPctChg": 200, - "totTradedVol": 5, - "iv": 0, - "ltp": 1302.45, - "change": 200.85000000000014, - "pChange": 18.23257080610023, - "totBuyQty": 6950, - "totSellQty": 5950, - "bidQty": 1000, - "bidPrice": 1417.2, - "askQty": 300, - "askPrice": 1457.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25500.00", - "oi": 121052, - "oiChg": 62164, - "oiPctChg": 105.56310283928813, - "totTradedVol": 379618, - "iv": 18.59, - "ltp": 2.1, - "change": -0.44999999999999973, - "pChange": -17.647058823529402, - "totBuyQty": 1774575, - "totSellQty": 252375, - "bidQty": 16100, - "bidPrice": 2, - "askQty": 4875, - "askPrice": 2.05 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25500.00", - "oi": 1738, - "oiChg": 595, - "oiPctChg": 52.05599300087489, - "totTradedVol": 752, - "iv": 0, - "ltp": 1486, - "change": 341.70000000000005, - "pChange": 29.861050423839906, - "totBuyQty": 10850, - "totSellQty": 8125, - "bidQty": 75, - "bidPrice": 1488.55, - "askQty": 25, - "askPrice": 1496.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25550.00", - "oi": 4265, - "oiChg": 2849, - "oiPctChg": 201.20056497175142, - "totTradedVol": 14529, - "iv": 18.98, - "ltp": 1.95, - "change": -0.34999999999999987, - "pChange": -15.21739130434782, - "totBuyQty": 157925, - "totSellQty": 81375, - "bidQty": 1725, - "bidPrice": 1.9, - "askQty": 2250, - "askPrice": 1.95 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 1400, - "change": 260.1500000000001, - "pChange": 22.823178488397605, - "totBuyQty": 3850, - "totSellQty": 4850, - "bidQty": 150, - "bidPrice": 1528, - "askQty": 1000, - "askPrice": 1563.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25600.00", - "oi": 25421, - "oiChg": 19198, - "oiPctChg": 308.5007231238952, - "totTradedVol": 82776, - "iv": 19.22, - "ltp": 1.75, - "change": -0.3999999999999999, - "pChange": -18.604651162790695, - "totBuyQty": 839125, - "totSellQty": 172650, - "bidQty": 23300, - "bidPrice": 1.7, - "askQty": 108000, - "askPrice": 1.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25600.00", - "oi": 1213, - "oiChg": 104, - "oiPctChg": 9.377817853922453, - "totTradedVol": 118, - "iv": 0, - "ltp": 1600, - "change": 354, - "pChange": 28.41091492776886, - "totBuyQty": 4650, - "totSellQty": 4250, - "bidQty": 75, - "bidPrice": 1576.9, - "askQty": 100, - "askPrice": 1595.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25650.00", - "oi": 3371, - "oiChg": 2628, - "oiPctChg": 353.70121130551814, - "totTradedVol": 8722, - "iv": 19.72, - "ltp": 1.75, - "change": -0.2999999999999998, - "pChange": -14.634146341463408, - "totBuyQty": 150650, - "totSellQty": 37825, - "bidQty": 1125, - "bidPrice": 1.7, - "askQty": 2075, - "askPrice": 1.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3000, - "bidQty": 1000, - "bidPrice": 1616.6, - "askQty": 25, - "askPrice": 1663.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25700.00", - "oi": 23440, - "oiChg": 19916, - "oiPctChg": 565.1532349602725, - "totTradedVol": 76702, - "iv": 20.15, - "ltp": 1.65, - "change": -0.30000000000000004, - "pChange": -15.384615384615389, - "totBuyQty": 977850, - "totSellQty": 84675, - "bidQty": 33850, - "bidPrice": 1.6, - "askQty": 19125, - "askPrice": 1.65 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25700.00", - "oi": 907, - "oiChg": 177, - "oiPctChg": 24.246575342465754, - "totTradedVol": 208, - "iv": 0, - "ltp": 1678.95, - "change": 330.45000000000005, - "pChange": 24.505005561735267, - "totBuyQty": 4250, - "totSellQty": 4450, - "bidQty": 200, - "bidPrice": 1683.7, - "askQty": 125, - "askPrice": 1692.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25750.00", - "oi": 12644, - "oiChg": 4747, - "oiPctChg": 60.11143472204635, - "totTradedVol": 36293, - "iv": 20.57, - "ltp": 1.65, - "change": 0.04999999999999982, - "pChange": 3.124999999999989, - "totBuyQty": 191775, - "totSellQty": 43950, - "bidQty": 8650, - "bidPrice": 1.6, - "askQty": 1175, - "askPrice": 1.65 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 3, - "iv": 0, - "ltp": 1620, - "change": 325.8499999999999, - "pChange": 25.178688714600305, - "totBuyQty": 4625, - "totSellQty": 4600, - "bidQty": 1000, - "bidPrice": 1708.2, - "askQty": 1000, - "askPrice": 1765.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25800.00", - "oi": 30632, - "oiChg": 22886, - "oiPctChg": 295.4557190808159, - "totTradedVol": 112151, - "iv": 21.06, - "ltp": 1.6, - "change": -0.09999999999999987, - "pChange": -5.882352941176463, - "totBuyQty": 1291750, - "totSellQty": 143650, - "bidQty": 78725, - "bidPrice": 1.55, - "askQty": 37800, - "askPrice": 1.6 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25800.00", - "oi": 521, - "oiChg": 139, - "oiPctChg": 36.38743455497382, - "totTradedVol": 162, - "iv": 0, - "ltp": 1790, - "change": 357.04999999999995, - "pChange": 24.91712899961617, - "totBuyQty": 5475, - "totSellQty": 5100, - "bidQty": 50, - "bidPrice": 1779.9, - "askQty": 100, - "askPrice": 1795.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25850.00", - "oi": 1578, - "oiChg": 1050, - "oiPctChg": 198.86363636363637, - "totTradedVol": 4800, - "iv": 21.8, - "ltp": 1.7, - "change": 0, - "pChange": 0, - "totBuyQty": 300525, - "totSellQty": 36375, - "bidQty": 1025, - "bidPrice": 1.65, - "askQty": 1050, - "askPrice": 1.75 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4450, - "totSellQty": 4450, - "bidQty": 1000, - "bidPrice": 1808.55, - "askQty": 1000, - "askPrice": 1872.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25900.00", - "oi": 4276, - "oiChg": 2303, - "oiPctChg": 116.72579827673593, - "totTradedVol": 21748, - "iv": 22.13, - "ltp": 1.65, - "change": 0, - "pChange": 0, - "totBuyQty": 705450, - "totSellQty": 42375, - "bidQty": 4425, - "bidPrice": 1.65, - "askQty": 5825, - "askPrice": 1.7 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25900.00", - "oi": 276, - "oiChg": 92, - "oiPctChg": 50, - "totTradedVol": 108, - "iv": 0, - "ltp": 1848.5, - "change": 196.8499999999999, - "pChange": 11.918384645657367, - "totBuyQty": 4700, - "totSellQty": 3925, - "bidQty": 200, - "bidPrice": 1883.2, - "askQty": 25, - "askPrice": 1898.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE25950.00", - "oi": 1435, - "oiChg": 444, - "oiPctChg": 44.803229061553985, - "totTradedVol": 2851, - "iv": 22.7, - "ltp": 1.7, - "change": 0.050000000000000044, - "pChange": 3.030303030303033, - "totBuyQty": 211075, - "totSellQty": 44700, - "bidQty": 825, - "bidPrice": 1.6, - "askQty": 1375, - "askPrice": 1.7 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE25950.00", - "oi": 3, - "oiChg": 3, - "oiPctChg": 0, - "totTradedVol": 16, - "iv": 0, - "ltp": 1960, - "change": 502.8499999999999, - "pChange": 34.50914456301684, - "totBuyQty": 4575, - "totSellQty": 4575, - "bidQty": 1000, - "bidPrice": 1906.6, - "askQty": 1000, - "askPrice": 1965.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE26000.00", - "oi": 145384, - "oiChg": 95984, - "oiPctChg": 194.2995951417004, - "totTradedVol": 371464, - "iv": 23.1, - "ltp": 1.65, - "change": 0.04999999999999982, - "pChange": 3.124999999999989, - "totBuyQty": 2684700, - "totSellQty": 355150, - "bidQty": 41100, - "bidPrice": 1.65, - "askQty": 50850, - "askPrice": 1.7 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE26000.00", - "oi": 2619, - "oiChg": 1557, - "oiPctChg": 146.61016949152543, - "totTradedVol": 1735, - "iv": 0, - "ltp": 1991.9, - "change": 354.0500000000002, - "pChange": 21.616753670971104, - "totBuyQty": 8800, - "totSellQty": 5900, - "bidQty": 125, - "bidPrice": 1987, - "askQty": 150, - "askPrice": 1993.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26050, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE26050.00", - "oi": 772, - "oiChg": 490, - "oiPctChg": 173.75886524822695, - "totTradedVol": 2613, - "iv": 23.5, - "ltp": 1.55, - "change": -0.1499999999999999, - "pChange": -8.823529411764701, - "totBuyQty": 232525, - "totSellQty": 43525, - "bidQty": 2375, - "bidPrice": 1.55, - "askQty": 575, - "askPrice": 1.6 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE26050.00", - "oi": 201, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4450, - "totSellQty": 3450, - "bidQty": 1000, - "bidPrice": 2007.25, - "askQty": 25, - "askPrice": 2057.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26100, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE26100.00", - "oi": 3544, - "oiChg": 713, - "oiPctChg": 25.185446838572943, - "totTradedVol": 10488, - "iv": 24.16, - "ltp": 1.6, - "change": 0.10000000000000009, - "pChange": 6.666666666666672, - "totBuyQty": 1373025, - "totSellQty": 48300, - "bidQty": 1850, - "bidPrice": 1.6, - "askQty": 4100, - "askPrice": 1.7 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE26100.00", - "oi": 261, - "oiChg": 174, - "oiPctChg": 200, - "totTradedVol": 191, - "iv": 0, - "ltp": 2105, - "change": 365, - "pChange": 20.977011494252874, - "totBuyQty": 5175, - "totSellQty": 4575, - "bidQty": 550, - "bidPrice": 2073.85, - "askQty": 100, - "askPrice": 2096.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26150, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE26150.00", - "oi": 1121, - "oiChg": 350, - "oiPctChg": 45.39559014267186, - "totTradedVol": 3267, - "iv": 24.55, - "ltp": 1.5, - "change": -0.1499999999999999, - "pChange": -9.090909090909086, - "totBuyQty": 213800, - "totSellQty": 77075, - "bidQty": 1925, - "bidPrice": 1.45, - "askQty": 6375, - "askPrice": 1.5 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE26150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3825, - "totSellQty": 3825, - "bidQty": 1000, - "bidPrice": 2109.45, - "askQty": 1000, - "askPrice": 2161 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26200, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE26200.00", - "oi": 39539, - "oiChg": 29829, - "oiPctChg": 307.1987641606591, - "totTradedVol": 121543, - "iv": 24.94, - "ltp": 1.45, - "change": 0, - "pChange": 0, - "totBuyQty": 1353175, - "totSellQty": 285350, - "bidQty": 11450, - "bidPrice": 1.4, - "askQty": 6375, - "askPrice": 1.45 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE26200.00", - "oi": 74, - "oiChg": 70, - "oiPctChg": 1750, - "totTradedVol": 71, - "iv": 0, - "ltp": 2200, - "change": 248, - "pChange": 12.704918032786885, - "totBuyQty": 5025, - "totSellQty": 4000, - "bidQty": 1000, - "bidPrice": 2173, - "askQty": 100, - "askPrice": 2207.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26250, - "expiry": "05-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY05-12-2024CE26250.00", - "oi": 70154, - "oiChg": 44526, - "oiPctChg": 173.73965974715156, - "totTradedVol": 208112, - "iv": 25.22, - "ltp": 1.4, - "change": 0.04999999999999982, - "pChange": 3.7037037037036904, - "totBuyQty": 3173925, - "totSellQty": 323775, - "bidQty": 44800, - "bidPrice": 1.4, - "askQty": 25475, - "askPrice": 1.45 - }, - "pe": { - "id": "OPTIDXNIFTY05-12-2024PE26250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4450, - "totSellQty": 4450, - "bidQty": 1000, - "bidPrice": 2197.65, - "askQty": 1000, - "askPrice": 2269.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2395.75, - "askQty": 25, - "askPrice": 2476 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21600.00", - "oi": 573, - "oiChg": 1, - "oiPctChg": 0.17482517482517482, - "totTradedVol": 1864, - "iv": 23.26, - "ltp": 3.35, - "change": -1.4999999999999996, - "pChange": -30.92783505154639, - "totBuyQty": 48850, - "totSellQty": 18300, - "bidQty": 100, - "bidPrice": 3.2, - "askQty": 550, - "askPrice": 3.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2347.55, - "askQty": 25, - "askPrice": 2426.95 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21650.00", - "oi": 105, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 54150, - "totSellQty": 3550, - "bidQty": 1800, - "bidPrice": 2.8, - "askQty": 250, - "askPrice": 4.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2298.75, - "askQty": 25, - "askPrice": 2377.3 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21700.00", - "oi": 731, - "oiChg": 129, - "oiPctChg": 21.428571428571427, - "totTradedVol": 280, - "iv": 23.11, - "ltp": 4.3, - "change": -0.04999999999999982, - "pChange": -1.1494252873563178, - "totBuyQty": 42575, - "totSellQty": 7800, - "bidQty": 900, - "bidPrice": 3.4, - "askQty": 25, - "askPrice": 3.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2250.55, - "askQty": 25, - "askPrice": 2309.9 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 22.62, - "ltp": 4.25, - "change": -0.40000000000000036, - "pChange": -8.602150537634417, - "totBuyQty": 30450, - "totSellQty": 3725, - "bidQty": 800, - "bidPrice": 3.1, - "askQty": 600, - "askPrice": 7.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2202.65, - "askQty": 25, - "askPrice": 2279.75 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 53475, - "totSellQty": 2750, - "bidQty": 1800, - "bidPrice": 3.25, - "askQty": 600, - "askPrice": 8.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2154.2, - "askQty": 25, - "askPrice": 2230.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 27325, - "totSellQty": 2175, - "bidQty": 1800, - "bidPrice": 2.8, - "askQty": 25, - "askPrice": 5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2106, - "askQty": 25, - "askPrice": 2181.05 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 29000, - "totSellQty": 3175, - "bidQty": 1800, - "bidPrice": 3.2, - "askQty": 25, - "askPrice": 5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2057.5, - "askQty": 25, - "askPrice": 2131.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 27400, - "totSellQty": 2175, - "bidQty": 1500, - "bidPrice": 3.3, - "askQty": 25, - "askPrice": 5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 2009.9, - "askQty": 25, - "askPrice": 2083 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22000.00", - "oi": 3441, - "oiChg": 678, - "oiPctChg": 24.5385450597177, - "totTradedVol": 3451, - "iv": 21.04, - "ltp": 5.55, - "change": 0.25, - "pChange": 4.716981132075472, - "totBuyQty": 67150, - "totSellQty": 9925, - "bidQty": 225, - "bidPrice": 5.45, - "askQty": 50, - "askPrice": 5.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1961.85, - "askQty": 25, - "askPrice": 2034.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22050.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 44450, - "totSellQty": 2900, - "bidQty": 800, - "bidPrice": 4.2, - "askQty": 350, - "askPrice": 10.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1913.1, - "askQty": 25, - "askPrice": 1984.2 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22100.00", - "oi": 128, - "oiChg": 128, - "oiPctChg": 0, - "totTradedVol": 171, - "iv": 20.26, - "ltp": 5.7, - "change": -5.6000000000000005, - "pChange": -49.557522123893804, - "totBuyQty": 28825, - "totSellQty": 4450, - "bidQty": 100, - "bidPrice": 5.25, - "askQty": 100, - "askPrice": 6.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1865.45, - "askQty": 25, - "askPrice": 1936 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 24700, - "totSellQty": 1050, - "bidQty": 800, - "bidPrice": 4.1, - "askQty": 600, - "askPrice": 11 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22200.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1817.25, - "askQty": 25, - "askPrice": 1888 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22200.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 26800, - "totSellQty": 2350, - "bidQty": 800, - "bidPrice": 4.2, - "askQty": 100, - "askPrice": 7.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1769.5, - "askQty": 25, - "askPrice": 1809.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 22750, - "totSellQty": 1450, - "bidQty": 800, - "bidPrice": 3.8, - "askQty": 400, - "askPrice": 12.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22300.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1720.45, - "askQty": 25, - "askPrice": 1759.85 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22300.00", - "oi": 1299, - "oiChg": 405, - "oiPctChg": 45.30201342281879, - "totTradedVol": 1486, - "iv": 18.79, - "ltp": 7.25, - "change": 1.2000000000000002, - "pChange": 19.834710743801658, - "totBuyQty": 53000, - "totSellQty": 10875, - "bidQty": 500, - "bidPrice": 6.95, - "askQty": 125, - "askPrice": 7.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1672.45, - "askQty": 25, - "askPrice": 1711.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22350.00", - "oi": 465, - "oiChg": 339, - "oiPctChg": 269.04761904761904, - "totTradedVol": 572, - "iv": 18.7, - "ltp": 7.55, - "change": 0.8999999999999995, - "pChange": 13.533834586466156, - "totBuyQty": 41100, - "totSellQty": 3850, - "bidQty": 275, - "bidPrice": 6.75, - "askQty": 1000, - "askPrice": 8.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22400.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1624.75, - "askQty": 25, - "askPrice": 1663.45 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22400.00", - "oi": 532, - "oiChg": 122, - "oiPctChg": 29.75609756097561, - "totTradedVol": 542, - "iv": 18.38, - "ltp": 8.7, - "change": 1.8499999999999996, - "pChange": 27.007299270072988, - "totBuyQty": 44250, - "totSellQty": 4450, - "bidQty": 400, - "bidPrice": 7.9, - "askQty": 625, - "askPrice": 8.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1578.1, - "askQty": 25, - "askPrice": 1615.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 19275, - "totSellQty": 1050, - "bidQty": 800, - "bidPrice": 6.1, - "askQty": 450, - "askPrice": 16.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22500.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1529.8, - "askQty": 25, - "askPrice": 1567.6 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22500.00", - "oi": 5491, - "oiChg": 2110, - "oiPctChg": 62.40757172434191, - "totTradedVol": 10435, - "iv": 18.13, - "ltp": 11.15, - "change": 2.9000000000000004, - "pChange": 35.151515151515156, - "totBuyQty": 61550, - "totSellQty": 4950, - "bidQty": 1800, - "bidPrice": 11, - "askQty": 875, - "askPrice": 11.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1482.45, - "askQty": 25, - "askPrice": 1520.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22550.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 19550, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 7.7, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 38.42, - "ltp": 1630.15, - "change": -160.5999999999999, - "pChange": -8.96830936758341, - "totBuyQty": 1200, - "totSellQty": 1350, - "bidQty": 50, - "bidPrice": 1430, - "askQty": 150, - "askPrice": 1461.8 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22600.00", - "oi": 1058, - "oiChg": 284, - "oiPctChg": 36.69250645994832, - "totTradedVol": 956, - "iv": 17.56, - "ltp": 12.7, - "change": 3.9499999999999993, - "pChange": 45.14285714285713, - "totBuyQty": 37400, - "totSellQty": 3725, - "bidQty": 475, - "bidPrice": 12.15, - "askQty": 325, - "askPrice": 12.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1386.25, - "askQty": 25, - "askPrice": 1424.4 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22650.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 23575, - "totSellQty": 0, - "bidQty": 1000, - "bidPrice": 8.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 925, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1338.35, - "askQty": 25, - "askPrice": 1376.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22700.00", - "oi": 933, - "oiChg": -391, - "oiPctChg": -29.531722054380666, - "totTradedVol": 3776, - "iv": 17.07, - "ltp": 14.05, - "change": 4.25, - "pChange": 43.36734693877551, - "totBuyQty": 35575, - "totSellQty": 3475, - "bidQty": 975, - "bidPrice": 14.85, - "askQty": 200, - "askPrice": 15.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1269.15, - "askQty": 25, - "askPrice": 1329.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 21925, - "totSellQty": 600, - "bidQty": 600, - "bidPrice": 10.5, - "askQty": 600, - "askPrice": 26.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1222.85, - "askQty": 25, - "askPrice": 1269.9 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22800.00", - "oi": 2592, - "oiChg": 549, - "oiPctChg": 26.87224669603524, - "totTradedVol": 6439, - "iv": 16.72, - "ltp": 18.9, - "change": 7.099999999999998, - "pChange": 60.1694915254237, - "totBuyQty": 43675, - "totSellQty": 4075, - "bidQty": 125, - "bidPrice": 18.6, - "askQty": 950, - "askPrice": 18.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1025, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1177.25, - "askQty": 25, - "askPrice": 1220.75 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 20275, - "totSellQty": 1200, - "bidQty": 300, - "bidPrice": 18.2, - "askQty": 300, - "askPrice": 25.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22900.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 31.04, - "ltp": 1300, - "change": -88.65000000000009, - "pChange": -6.383898030461245, - "totBuyQty": 1100, - "totSellQty": 1250, - "bidQty": 50, - "bidPrice": 1131.3, - "askQty": 50, - "askPrice": 1173.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22900.00", - "oi": 4038, - "oiChg": 3263, - "oiPctChg": 421.03225806451616, - "totTradedVol": 10606, - "iv": 16.19, - "ltp": 22.8, - "change": 9.200000000000001, - "pChange": 67.64705882352942, - "totBuyQty": 43400, - "totSellQty": 2875, - "bidQty": 25, - "bidPrice": 22.8, - "askQty": 1575, - "askPrice": 23.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE22950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 44.44, - "ltp": 1462.1, - "change": -13.700000000000045, - "pChange": -0.9283100691150594, - "totBuyQty": 1600, - "totSellQty": 1575, - "bidQty": 150, - "bidPrice": 1096.8, - "askQty": 50, - "askPrice": 1134.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE22950.00", - "oi": 268, - "oiChg": 176, - "oiPctChg": 191.30434782608697, - "totTradedVol": 407, - "iv": 16.37, - "ltp": 25.35, - "change": 12.350000000000001, - "pChange": 95, - "totBuyQty": 28825, - "totSellQty": 3900, - "bidQty": 100, - "bidPrice": 25.85, - "askQty": 525, - "askPrice": 27 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23000.00", - "oi": 578, - "oiChg": 475, - "oiPctChg": 461.1650485436893, - "totTradedVol": 577, - "iv": 19.67, - "ltp": 1085.05, - "change": -334.95000000000005, - "pChange": -23.588028169014088, - "totBuyQty": 3225, - "totSellQty": 3475, - "bidQty": 25, - "bidPrice": 1061.45, - "askQty": 100, - "askPrice": 1067.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23000.00", - "oi": 14895, - "oiChg": 5165, - "oiPctChg": 53.08324768756423, - "totTradedVol": 48322, - "iv": 16.14, - "ltp": 30.35, - "change": 14.25, - "pChange": 88.50931677018633, - "totBuyQty": 53475, - "totSellQty": 68425, - "bidQty": 300, - "bidPrice": 30.2, - "askQty": 200, - "askPrice": 30.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23050.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 17.89, - "ltp": 1024.9, - "change": 324.9000000000001, - "pChange": 46.414285714285725, - "totBuyQty": 1450, - "totSellQty": 1425, - "bidQty": 50, - "bidPrice": 1006.1, - "askQty": 50, - "askPrice": 1043.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23050.00", - "oi": 305, - "oiChg": 154, - "oiPctChg": 101.98675496688742, - "totTradedVol": 961, - "iv": 15.74, - "ltp": 29.4, - "change": 12.549999999999997, - "pChange": 74.48071216617208, - "totBuyQty": 39625, - "totSellQty": 6525, - "bidQty": 50, - "bidPrice": 32.35, - "askQty": 275, - "askPrice": 33.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23100.00", - "oi": 12, - "oiChg": 8, - "oiPctChg": 200, - "totTradedVol": 9, - "iv": 25.42, - "ltp": 1070, - "change": -233.29999999999995, - "pChange": -17.900713573237166, - "totBuyQty": 1625, - "totSellQty": 1750, - "bidQty": 50, - "bidPrice": 958.5, - "askQty": 150, - "askPrice": 983.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23100.00", - "oi": 2852, - "oiChg": 1481, - "oiPctChg": 108.02334062727935, - "totTradedVol": 9912, - "iv": 15.66, - "ltp": 37.05, - "change": 18.749999999999996, - "pChange": 102.4590163934426, - "totBuyQty": 46200, - "totSellQty": 6425, - "bidQty": 200, - "bidPrice": 36.65, - "askQty": 250, - "askPrice": 37.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23150.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 375, - "totSellQty": 1350, - "bidQty": 25, - "bidPrice": 919.95, - "askQty": 25, - "askPrice": 955.95 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23150.00", - "oi": 428, - "oiChg": 297, - "oiPctChg": 226.7175572519084, - "totTradedVol": 485, - "iv": 15.5, - "ltp": 40.95, - "change": 20.950000000000003, - "pChange": 104.75000000000001, - "totBuyQty": 37875, - "totSellQty": 4125, - "bidQty": 25, - "bidPrice": 40.9, - "askQty": 100, - "askPrice": 41.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23200.00", - "oi": 116, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 4, - "iv": 39.5, - "ltp": 1214, - "change": 0, - "pChange": 0, - "totBuyQty": 1700, - "totSellQty": 1650, - "bidQty": 50, - "bidPrice": 868.25, - "askQty": 275, - "askPrice": 900.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23200.00", - "oi": 4719, - "oiChg": 679, - "oiPctChg": 16.806930693069308, - "totTradedVol": 16011, - "iv": 15.52, - "ltp": 46.7, - "change": 24.900000000000002, - "pChange": 114.22018348623854, - "totBuyQty": 49825, - "totSellQty": 15550, - "bidQty": 50, - "bidPrice": 46.4, - "askQty": 575, - "askPrice": 46.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23250.00", - "oi": 17, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 22.12, - "ltp": 909.5, - "change": -265.5, - "pChange": -22.595744680851062, - "totBuyQty": 1525, - "totSellQty": 1500, - "bidQty": 50, - "bidPrice": 822.9, - "askQty": 125, - "askPrice": 862.2 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23250.00", - "oi": 492, - "oiChg": 212, - "oiPctChg": 75.71428571428571, - "totTradedVol": 927, - "iv": 14.99, - "ltp": 50.95, - "change": 27.250000000000004, - "pChange": 114.97890295358653, - "totBuyQty": 40400, - "totSellQty": 5850, - "bidQty": 50, - "bidPrice": 49.9, - "askQty": 500, - "askPrice": 51.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23300.00", - "oi": 164, - "oiChg": -3, - "oiPctChg": -1.7964071856287425, - "totTradedVol": 30, - "iv": 22.02, - "ltp": 870.05, - "change": -243.04999999999995, - "pChange": -21.835414607851945, - "totBuyQty": 1650, - "totSellQty": 1925, - "bidQty": 50, - "bidPrice": 785.4, - "askQty": 150, - "askPrice": 806.3 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23300.00", - "oi": 5905, - "oiChg": 1968, - "oiPctChg": 49.98729997459995, - "totTradedVol": 19772, - "iv": 15.15, - "ltp": 58.05, - "change": 31.799999999999997, - "pChange": 121.14285714285712, - "totBuyQty": 48250, - "totSellQty": 21325, - "bidQty": 675, - "bidPrice": 57.7, - "askQty": 1025, - "askPrice": 58.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23350.00", - "oi": 61, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 5, - "iv": 15.29, - "ltp": 742.5, - "change": -352.5, - "pChange": -32.19178082191781, - "totBuyQty": 3500, - "totSellQty": 1700, - "bidQty": 25, - "bidPrice": 736, - "askQty": 75, - "askPrice": 768.8 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23350.00", - "oi": 604, - "oiChg": 193, - "oiPctChg": 46.95863746958638, - "totTradedVol": 2144, - "iv": 14.83, - "ltp": 63.55, - "change": 34.4, - "pChange": 118.01029159519724, - "totBuyQty": 41475, - "totSellQty": 6800, - "bidQty": 250, - "bidPrice": 63, - "askQty": 50, - "askPrice": 64.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23400.00", - "oi": 235, - "oiChg": -12, - "oiPctChg": -4.8582995951417, - "totTradedVol": 51, - "iv": 20.6, - "ltp": 774.8, - "change": -128.85000000000002, - "pChange": -14.258839152326678, - "totBuyQty": 3775, - "totSellQty": 1900, - "bidQty": 150, - "bidPrice": 694.3, - "askQty": 25, - "askPrice": 720.15 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23400.00", - "oi": 6197, - "oiChg": 2860, - "oiPctChg": 85.70572370392568, - "totTradedVol": 21224, - "iv": 14.9, - "ltp": 72.85, - "change": 40.599999999999994, - "pChange": 125.89147286821705, - "totBuyQty": 51250, - "totSellQty": 16375, - "bidQty": 1025, - "bidPrice": 72.1, - "askQty": 200, - "askPrice": 72.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23450.00", - "oi": 86, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 18.69, - "ltp": 709.6, - "change": 49.75, - "pChange": 7.539592331590512, - "totBuyQty": 2375, - "totSellQty": 1550, - "bidQty": 25, - "bidPrice": 653.75, - "askQty": 25, - "askPrice": 680.55 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23450.00", - "oi": 840, - "oiChg": 295, - "oiPctChg": 54.12844036697248, - "totTradedVol": 2170, - "iv": 14.72, - "ltp": 79.75, - "change": 44.35, - "pChange": 125.28248587570623, - "totBuyQty": 42950, - "totSellQty": 13275, - "bidQty": 500, - "bidPrice": 79.55, - "askQty": 500, - "askPrice": 81.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23500.00", - "oi": 866, - "oiChg": 46, - "oiPctChg": 5.609756097560975, - "totTradedVol": 995, - "iv": 17.49, - "ltp": 626, - "change": -288.65, - "pChange": -31.558519652326023, - "totBuyQty": 7500, - "totSellQty": 5825, - "bidQty": 25, - "bidPrice": 627.6, - "askQty": 350, - "askPrice": 631 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23500.00", - "oi": 17158, - "oiChg": 8531, - "oiPctChg": 98.88721455894286, - "totTradedVol": 58062, - "iv": 14.7, - "ltp": 90.6, - "change": 50.89999999999999, - "pChange": 128.21158690176318, - "totBuyQty": 71350, - "totSellQty": 44475, - "bidQty": 350, - "bidPrice": 90.25, - "askQty": 25, - "askPrice": 90.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23550.00", - "oi": 221, - "oiChg": 13, - "oiPctChg": 6.25, - "totTradedVol": 42, - "iv": 18.52, - "ltp": 618.1, - "change": -274.94999999999993, - "pChange": -30.78774984603325, - "totBuyQty": 6000, - "totSellQty": 2950, - "bidQty": 150, - "bidPrice": 579.35, - "askQty": 25, - "askPrice": 597.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23550.00", - "oi": 652, - "oiChg": 222, - "oiPctChg": 51.627906976744185, - "totTradedVol": 2161, - "iv": 14.55, - "ltp": 101, - "change": 57.45, - "pChange": 131.91733639494836, - "totBuyQty": 28175, - "totSellQty": 18350, - "bidQty": 200, - "bidPrice": 99.7, - "askQty": 500, - "askPrice": 100.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23600.00", - "oi": 530, - "oiChg": -74, - "oiPctChg": -12.251655629139073, - "totTradedVol": 471, - "iv": 16.93, - "ltp": 550, - "change": -277.9, - "pChange": -33.56685590047107, - "totBuyQty": 5750, - "totSellQty": 2150, - "bidQty": 100, - "bidPrice": 548.85, - "askQty": 250, - "askPrice": 551.55 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23600.00", - "oi": 4591, - "oiChg": 810, - "oiPctChg": 21.422903993652472, - "totTradedVol": 20604, - "iv": 14.32, - "ltp": 114.35, - "change": 65.85, - "pChange": 135.77319587628864, - "totBuyQty": 35450, - "totSellQty": 20575, - "bidQty": 300, - "bidPrice": 111.6, - "askQty": 25, - "askPrice": 112.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23650.00", - "oi": 44, - "oiChg": 7, - "oiPctChg": 18.91891891891892, - "totTradedVol": 28, - "iv": 15.55, - "ltp": 517.6, - "change": -276.54999999999995, - "pChange": -34.823396083863244, - "totBuyQty": 8150, - "totSellQty": 1525, - "bidQty": 225, - "bidPrice": 503, - "askQty": 50, - "askPrice": 519.9 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23650.00", - "oi": 734, - "oiChg": 144, - "oiPctChg": 24.406779661016948, - "totTradedVol": 2010, - "iv": 14.04, - "ltp": 123, - "change": 69.05, - "pChange": 127.98887859128823, - "totBuyQty": 16350, - "totSellQty": 23300, - "bidQty": 50, - "bidPrice": 122.85, - "askQty": 125, - "askPrice": 124.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23700.00", - "oi": 539, - "oiChg": 188, - "oiPctChg": 53.56125356125356, - "totTradedVol": 3381, - "iv": 15.67, - "ltp": 474.15, - "change": -265.85, - "pChange": -35.92567567567568, - "totBuyQty": 23425, - "totSellQty": 6875, - "bidQty": 175, - "bidPrice": 472.95, - "askQty": 500, - "askPrice": 475.05 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23700.00", - "oi": 4037, - "oiChg": 1494, - "oiPctChg": 58.7495084545812, - "totTradedVol": 16900, - "iv": 14.06, - "ltp": 137.9, - "change": 78.2, - "pChange": 130.98827470686766, - "totBuyQty": 33050, - "totSellQty": 23550, - "bidQty": 650, - "bidPrice": 137, - "askQty": 125, - "askPrice": 138.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23750.00", - "oi": 87, - "oiChg": 26, - "oiPctChg": 42.622950819672134, - "totTradedVol": 288, - "iv": 16.45, - "ltp": 440, - "change": -268.6, - "pChange": -37.90572960767712, - "totBuyQty": 17050, - "totSellQty": 3900, - "bidQty": 500, - "bidPrice": 440.1, - "askQty": 500, - "askPrice": 442.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23750.00", - "oi": 952, - "oiChg": 435, - "oiPctChg": 84.13926499032883, - "totTradedVol": 2019, - "iv": 13.55, - "ltp": 149.95, - "change": 83.19999999999999, - "pChange": 124.64419475655428, - "totBuyQty": 13275, - "totSellQty": 14575, - "bidQty": 150, - "bidPrice": 150.1, - "askQty": 100, - "askPrice": 152 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23800.00", - "oi": 1054, - "oiChg": 281, - "oiPctChg": 36.35187580853816, - "totTradedVol": 3496, - "iv": 15.41, - "ltp": 405.65, - "change": -243.55000000000007, - "pChange": -37.515403573629094, - "totBuyQty": 34575, - "totSellQty": 11400, - "bidQty": 500, - "bidPrice": 403.35, - "askQty": 25, - "askPrice": 406.95 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23800.00", - "oi": 6328, - "oiChg": 2732, - "oiPctChg": 75.97330367074527, - "totTradedVol": 29964, - "iv": 13.78, - "ltp": 168.6, - "change": 94.14999999999999, - "pChange": 126.46071188717258, - "totBuyQty": 28300, - "totSellQty": 23500, - "bidQty": 350, - "bidPrice": 167, - "askQty": 325, - "askPrice": 167.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23850.00", - "oi": 216, - "oiChg": 110, - "oiPctChg": 103.77358490566037, - "totTradedVol": 413, - "iv": 15.25, - "ltp": 375.1, - "change": -225.94999999999993, - "pChange": -37.59254637717327, - "totBuyQty": 24200, - "totSellQty": 5200, - "bidQty": 325, - "bidPrice": 372.85, - "askQty": 100, - "askPrice": 378.2 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23850.00", - "oi": 904, - "oiChg": 499, - "oiPctChg": 123.20987654320987, - "totTradedVol": 3023, - "iv": 13.37, - "ltp": 184.9, - "change": 101.60000000000001, - "pChange": 121.96878751500601, - "totBuyQty": 12975, - "totSellQty": 12575, - "bidQty": 375, - "bidPrice": 183.35, - "askQty": 500, - "askPrice": 185.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23900.00", - "oi": 1871, - "oiChg": 1151, - "oiPctChg": 159.86111111111111, - "totTradedVol": 7456, - "iv": 14.99, - "ltp": 342.3, - "change": -230.55, - "pChange": -40.24613773239068, - "totBuyQty": 38100, - "totSellQty": 13650, - "bidQty": 750, - "bidPrice": 340.3, - "askQty": 600, - "askPrice": 342.45 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23900.00", - "oi": 5942, - "oiChg": 3319, - "oiPctChg": 126.53450247807854, - "totTradedVol": 26867, - "iv": 13.55, - "ltp": 202, - "change": 110.25, - "pChange": 120.16348773841963, - "totBuyQty": 23875, - "totSellQty": 22425, - "bidQty": 225, - "bidPrice": 201.8, - "askQty": 50, - "askPrice": 202.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE23950.00", - "oi": 360, - "oiChg": 117, - "oiPctChg": 48.148148148148145, - "totTradedVol": 1117, - "iv": 15.09, - "ltp": 310.05, - "change": -230.7, - "pChange": -42.6629680998613, - "totBuyQty": 23750, - "totSellQty": 9775, - "bidQty": 150, - "bidPrice": 311.2, - "askQty": 25, - "askPrice": 312.45 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE23950.00", - "oi": 837, - "oiChg": 534, - "oiPctChg": 176.23762376237624, - "totTradedVol": 3517, - "iv": 13.28, - "ltp": 225.05, - "change": 122.80000000000001, - "pChange": 120.09779951100245, - "totBuyQty": 6450, - "totSellQty": 15500, - "bidQty": 25, - "bidPrice": 223.55, - "askQty": 25, - "askPrice": 225.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24000.00", - "oi": 9048, - "oiChg": 4603, - "oiPctChg": 103.55455568053993, - "totTradedVol": 31475, - "iv": 14.7, - "ltp": 281.15, - "change": -213, - "pChange": -43.10432055044015, - "totBuyQty": 40325, - "totSellQty": 46075, - "bidQty": 25, - "bidPrice": 283.25, - "askQty": 500, - "askPrice": 284.35 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24000.00", - "oi": 16275, - "oiChg": 3397, - "oiPctChg": 26.378319614847026, - "totTradedVol": 65899, - "iv": 13.34, - "ltp": 244.85, - "change": 130.85, - "pChange": 114.78070175438594, - "totBuyQty": 36325, - "totSellQty": 39450, - "bidQty": 400, - "bidPrice": 243.05, - "askQty": 125, - "askPrice": 244.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24050.00", - "oi": 803, - "oiChg": 673, - "oiPctChg": 517.6923076923077, - "totTradedVol": 4190, - "iv": 14.91, - "ltp": 260.55, - "change": -197.64999999999998, - "pChange": -43.13618507202095, - "totBuyQty": 31050, - "totSellQty": 15250, - "bidQty": 75, - "bidPrice": 258.5, - "askQty": 675, - "askPrice": 260.75 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24050.00", - "oi": 937, - "oiChg": -1578, - "oiPctChg": -62.74353876739563, - "totTradedVol": 9738, - "iv": 12.76, - "ltp": 268, - "change": 141.15, - "pChange": 111.27315727236895, - "totBuyQty": 12925, - "totSellQty": 9000, - "bidQty": 200, - "bidPrice": 267.65, - "askQty": 150, - "askPrice": 269.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24100.00", - "oi": 5142, - "oiChg": 3154, - "oiPctChg": 158.65191146881287, - "totTradedVol": 18979, - "iv": 14.66, - "ltp": 234.2, - "change": -185.7, - "pChange": -44.22481543224578, - "totBuyQty": 38875, - "totSellQty": 39875, - "bidQty": 600, - "bidPrice": 234.05, - "askQty": 325, - "askPrice": 235.3 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24100.00", - "oi": 4733, - "oiChg": 1813, - "oiPctChg": 62.08904109589041, - "totTradedVol": 28713, - "iv": 12.96, - "ltp": 294, - "change": 154.9, - "pChange": 111.3587347232207, - "totBuyQty": 14075, - "totSellQty": 17900, - "bidQty": 350, - "bidPrice": 292.25, - "askQty": 75, - "askPrice": 294.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24150.00", - "oi": 808, - "oiChg": 506, - "oiPctChg": 167.5496688741722, - "totTradedVol": 3579, - "iv": 14.48, - "ltp": 213.1, - "change": -172.4, - "pChange": -44.72114137483788, - "totBuyQty": 30550, - "totSellQty": 14650, - "bidQty": 350, - "bidPrice": 210.45, - "askQty": 700, - "askPrice": 212.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24150.00", - "oi": 966, - "oiChg": 100, - "oiPctChg": 11.547344110854503, - "totTradedVol": 4654, - "iv": 12.49, - "ltp": 326.1, - "change": 170.35000000000002, - "pChange": 109.37399678972714, - "totBuyQty": 4750, - "totSellQty": 3725, - "bidQty": 100, - "bidPrice": 319.25, - "askQty": 500, - "askPrice": 321.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24200.00", - "oi": 12020, - "oiChg": 4684, - "oiPctChg": 63.849509269356595, - "totTradedVol": 36897, - "iv": 14.33, - "ltp": 190.3, - "change": -161.55, - "pChange": -45.91445218132727, - "totBuyQty": 54825, - "totSellQty": 43500, - "bidQty": 675, - "bidPrice": 189.8, - "askQty": 375, - "askPrice": 191.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24200.00", - "oi": 13790, - "oiChg": 4877, - "oiPctChg": 54.71782789184338, - "totTradedVol": 51018, - "iv": 12.85, - "ltp": 348, - "change": 177.9, - "pChange": 104.58553791887127, - "totBuyQty": 35200, - "totSellQty": 39450, - "bidQty": 1000, - "bidPrice": 348.5, - "askQty": 700, - "askPrice": 349.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24250.00", - "oi": 1745, - "oiChg": 1209, - "oiPctChg": 225.5597014925373, - "totTradedVol": 6610, - "iv": 14.73, - "ltp": 171.55, - "change": -147.95, - "pChange": -46.306729264475734, - "totBuyQty": 30900, - "totSellQty": 24350, - "bidQty": 525, - "bidPrice": 169.3, - "askQty": 25, - "askPrice": 170.3 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24250.00", - "oi": 644, - "oiChg": -165, - "oiPctChg": -20.3955500618047, - "totTradedVol": 2565, - "iv": 12.14, - "ltp": 378.8, - "change": 191.20000000000002, - "pChange": 101.91897654584223, - "totBuyQty": 5300, - "totSellQty": 7100, - "bidQty": 200, - "bidPrice": 377.5, - "askQty": 500, - "askPrice": 379.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24300.00", - "oi": 11526, - "oiChg": 6373, - "oiPctChg": 123.67552881816418, - "totTradedVol": 45279, - "iv": 14.21, - "ltp": 151, - "change": -137.2, - "pChange": -47.6058292852186, - "totBuyQty": 37050, - "totSellQty": 39675, - "bidQty": 400, - "bidPrice": 150.6, - "askQty": 125, - "askPrice": 151.5 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24300.00", - "oi": 7816, - "oiChg": 1572, - "oiPctChg": 25.176169122357464, - "totTradedVol": 28610, - "iv": 12.54, - "ltp": 413.7, - "change": 206.89999999999998, - "pChange": 100.04835589941972, - "totBuyQty": 12300, - "totSellQty": 11575, - "bidQty": 1050, - "bidPrice": 408.55, - "askQty": 50, - "askPrice": 410.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24350.00", - "oi": 1837, - "oiChg": 1053, - "oiPctChg": 134.3112244897959, - "totTradedVol": 3796, - "iv": 14.19, - "ltp": 136.35, - "change": -123.75000000000003, - "pChange": -47.577854671280285, - "totBuyQty": 33250, - "totSellQty": 36225, - "bidQty": 200, - "bidPrice": 133.9, - "askQty": 750, - "askPrice": 135.3 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24350.00", - "oi": 460, - "oiChg": -205, - "oiPctChg": -30.827067669172934, - "totTradedVol": 1658, - "iv": 11.79, - "ltp": 415.65, - "change": 187.89999999999998, - "pChange": 82.50274423710208, - "totBuyQty": 4275, - "totSellQty": 3075, - "bidQty": 450, - "bidPrice": 437.85, - "askQty": 25, - "askPrice": 440.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24400.00", - "oi": 9737, - "oiChg": 5508, - "oiPctChg": 130.2435563963112, - "totTradedVol": 31378, - "iv": 14, - "ltp": 117.65, - "change": -113.04999999999998, - "pChange": -49.00303424360641, - "totBuyQty": 43250, - "totSellQty": 33650, - "bidQty": 500, - "bidPrice": 117.75, - "askQty": 50, - "askPrice": 118.55 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24400.00", - "oi": 5255, - "oiChg": 1788, - "oiPctChg": 51.57196423420825, - "totTradedVol": 8474, - "iv": 12.33, - "ltp": 482.7, - "change": 231.5, - "pChange": 92.15764331210191, - "totBuyQty": 2225, - "totSellQty": 2400, - "bidQty": 200, - "bidPrice": 475.95, - "askQty": 200, - "askPrice": 478 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24450.00", - "oi": 1323, - "oiChg": 665, - "oiPctChg": 101.06382978723404, - "totTradedVol": 2320, - "iv": 14.32, - "ltp": 105.35, - "change": -101.15, - "pChange": -48.98305084745763, - "totBuyQty": 35050, - "totSellQty": 24825, - "bidQty": 550, - "bidPrice": 103.85, - "askQty": 50, - "askPrice": 105.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24450.00", - "oi": 330, - "oiChg": -56, - "oiPctChg": -14.507772020725389, - "totTradedVol": 480, - "iv": 9.12, - "ltp": 500, - "change": 226.39999999999998, - "pChange": 82.7485380116959, - "totBuyQty": 3075, - "totSellQty": 3275, - "bidQty": 25, - "bidPrice": 506.8, - "askQty": 25, - "askPrice": 509.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24500.00", - "oi": 16125, - "oiChg": 3838, - "oiPctChg": 31.236265972165704, - "totTradedVol": 57641, - "iv": 13.91, - "ltp": 92, - "change": -90.15, - "pChange": -49.49217677738128, - "totBuyQty": 54125, - "totSellQty": 52850, - "bidQty": 350, - "bidPrice": 91.55, - "askQty": 125, - "askPrice": 92.35 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24500.00", - "oi": 5187, - "oiChg": -467, - "oiPctChg": -8.259639193491333, - "totTradedVol": 10369, - "iv": 12.05, - "ltp": 550, - "change": 251.3, - "pChange": 84.1312353531972, - "totBuyQty": 10575, - "totSellQty": 12600, - "bidQty": 50, - "bidPrice": 542.25, - "askQty": 25, - "askPrice": 544.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24550.00", - "oi": 811, - "oiChg": 307, - "oiPctChg": 60.91269841269841, - "totTradedVol": 5023, - "iv": 14.21, - "ltp": 80.65, - "change": -78.9, - "pChange": -49.45158257599498, - "totBuyQty": 31175, - "totSellQty": 17600, - "bidQty": 325, - "bidPrice": 80.8, - "askQty": 400, - "askPrice": 81.85 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24550.00", - "oi": 151, - "oiChg": -266, - "oiPctChg": -63.78896882494005, - "totTradedVol": 520, - "iv": 11.72, - "ltp": 569.1, - "change": 239.25, - "pChange": 72.53296953160527, - "totBuyQty": 2900, - "totSellQty": 2875, - "bidQty": 25, - "bidPrice": 582.55, - "askQty": 25, - "askPrice": 585.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24600.00", - "oi": 3657, - "oiChg": 1242, - "oiPctChg": 51.42857142857143, - "totTradedVol": 17992, - "iv": 13.96, - "ltp": 70.15, - "change": -70.75, - "pChange": -50.21291696238467, - "totBuyQty": 35625, - "totSellQty": 31225, - "bidQty": 275, - "bidPrice": 69.75, - "askQty": 400, - "askPrice": 70.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24600.00", - "oi": 564, - "oiChg": -254, - "oiPctChg": -31.051344743276285, - "totTradedVol": 1320, - "iv": 11.98, - "ltp": 613.8, - "change": 257.34999999999997, - "pChange": 72.19806424463458, - "totBuyQty": 3700, - "totSellQty": 3850, - "bidQty": 200, - "bidPrice": 616.1, - "askQty": 200, - "askPrice": 629.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24650.00", - "oi": 655, - "oiChg": 217, - "oiPctChg": 49.54337899543379, - "totTradedVol": 2216, - "iv": 13.78, - "ltp": 60.5, - "change": -62.349999999999994, - "pChange": -50.75295075295075, - "totBuyQty": 22650, - "totSellQty": 18775, - "bidQty": 500, - "bidPrice": 60.8, - "askQty": 200, - "askPrice": 62 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24650.00", - "oi": 107, - "oiChg": -134, - "oiPctChg": -55.601659751037346, - "totTradedVol": 357, - "iv": 10.41, - "ltp": 667.85, - "change": 278.3, - "pChange": 71.4414067513798, - "totBuyQty": 3075, - "totSellQty": 3825, - "bidQty": 250, - "bidPrice": 662.15, - "askQty": 250, - "askPrice": 665.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24700.00", - "oi": 6430, - "oiChg": 3397, - "oiPctChg": 112.00131882624464, - "totTradedVol": 27328, - "iv": 13.83, - "ltp": 53.15, - "change": -52.9, - "pChange": -49.88213107024988, - "totBuyQty": 36975, - "totSellQty": 30775, - "bidQty": 550, - "bidPrice": 52.8, - "askQty": 25, - "askPrice": 53.05 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24700.00", - "oi": 517, - "oiChg": 11, - "oiPctChg": 2.1739130434782608, - "totTradedVol": 1053, - "iv": 0, - "ltp": 664.85, - "change": 238.15000000000003, - "pChange": 55.81204593391143, - "totBuyQty": 1825, - "totSellQty": 1825, - "bidQty": 50, - "bidPrice": 703.6, - "askQty": 75, - "askPrice": 714.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24750.00", - "oi": 971, - "oiChg": 462, - "oiPctChg": 90.76620825147347, - "totTradedVol": 2959, - "iv": 14.26, - "ltp": 46.55, - "change": -44.3, - "pChange": -48.76169510181618, - "totBuyQty": 21000, - "totSellQty": 9625, - "bidQty": 500, - "bidPrice": 46.1, - "askQty": 75, - "askPrice": 46.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24750.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1450, - "totSellQty": 425, - "bidQty": 25, - "bidPrice": 735.9, - "askQty": 25, - "askPrice": 763.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24800.00", - "oi": 6183, - "oiChg": 1649, - "oiPctChg": 36.369651521835024, - "totTradedVol": 33761, - "iv": 13.85, - "ltp": 40.1, - "change": -37.65, - "pChange": -48.42443729903537, - "totBuyQty": 38200, - "totSellQty": 28800, - "bidQty": 400, - "bidPrice": 40.1, - "askQty": 25, - "askPrice": 40.4 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24800.00", - "oi": 196, - "oiChg": 106, - "oiPctChg": 117.77777777777777, - "totTradedVol": 920, - "iv": 0, - "ltp": 797, - "change": 297.85, - "pChange": 59.6714414504658, - "totBuyQty": 2025, - "totSellQty": 2200, - "bidQty": 25, - "bidPrice": 788.95, - "askQty": 250, - "askPrice": 794.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24850.00", - "oi": 668, - "oiChg": 375, - "oiPctChg": 127.9863481228669, - "totTradedVol": 3894, - "iv": 13.82, - "ltp": 35.6, - "change": -31.499999999999993, - "pChange": -46.94485842026825, - "totBuyQty": 30900, - "totSellQty": 12075, - "bidQty": 700, - "bidPrice": 34.15, - "askQty": 2125, - "askPrice": 35.45 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24850.00", - "oi": 51, - "oiChg": 36, - "oiPctChg": 240, - "totTradedVol": 60, - "iv": 12.58, - "ltp": 839.25, - "change": 295.4, - "pChange": 54.31644754987588, - "totBuyQty": 1800, - "totSellQty": 1500, - "bidQty": 25, - "bidPrice": 818.4, - "askQty": 25, - "askPrice": 848.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24900.00", - "oi": 2970, - "oiChg": 1002, - "oiPctChg": 50.91463414634146, - "totTradedVol": 23030, - "iv": 13.87, - "ltp": 30.15, - "change": -26.6, - "pChange": -46.87224669603525, - "totBuyQty": 44100, - "totSellQty": 13950, - "bidQty": 925, - "bidPrice": 29.55, - "askQty": 400, - "askPrice": 30.15 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24900.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1400, - "totSellQty": 1375, - "bidQty": 25, - "bidPrice": 862.95, - "askQty": 25, - "askPrice": 897.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE24950.00", - "oi": 788, - "oiChg": 213, - "oiPctChg": 37.04347826086956, - "totTradedVol": 1835, - "iv": 13.9, - "ltp": 25.5, - "change": -22.5, - "pChange": -46.875, - "totBuyQty": 31825, - "totSellQty": 9225, - "bidQty": 400, - "bidPrice": 25.4, - "askQty": 600, - "askPrice": 26.05 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE24950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1375, - "totSellQty": 1350, - "bidQty": 25, - "bidPrice": 914.7, - "askQty": 25, - "askPrice": 943.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25000.00", - "oi": 19117, - "oiChg": 7415, - "oiPctChg": 63.36523671167322, - "totTradedVol": 61898, - "iv": 13.97, - "ltp": 22.2, - "change": -18.8, - "pChange": -45.85365853658537, - "totBuyQty": 73750, - "totSellQty": 59800, - "bidQty": 625, - "bidPrice": 22.1, - "askQty": 450, - "askPrice": 22.35 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25000.00", - "oi": 505, - "oiChg": 168, - "oiPctChg": 49.85163204747774, - "totTradedVol": 352, - "iv": 0, - "ltp": 955, - "change": 307.70000000000005, - "pChange": 47.53591843040322, - "totBuyQty": 2275, - "totSellQty": 2900, - "bidQty": 25, - "bidPrice": 972.1, - "askQty": 100, - "askPrice": 980.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25050.00", - "oi": 1941, - "oiChg": 665, - "oiPctChg": 52.11598746081505, - "totTradedVol": 3941, - "iv": 14.14, - "ltp": 18.9, - "change": -16, - "pChange": -45.845272206303726, - "totBuyQty": 42300, - "totSellQty": 8100, - "bidQty": 850, - "bidPrice": 18.8, - "askQty": 550, - "askPrice": 19.35 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1350, - "totSellQty": 1325, - "bidQty": 25, - "bidPrice": 998.5, - "askQty": 25, - "askPrice": 1039.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25100.00", - "oi": 4574, - "oiChg": 1551, - "oiPctChg": 51.3066490241482, - "totTradedVol": 17836, - "iv": 14.27, - "ltp": 16, - "change": -11.7, - "pChange": -42.238267148014444, - "totBuyQty": 73725, - "totSellQty": 20000, - "bidQty": 150, - "bidPrice": 15.95, - "askQty": 725, - "askPrice": 16.35 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1325, - "totSellQty": 1300, - "bidQty": 25, - "bidPrice": 1046.4, - "askQty": 25, - "askPrice": 1083.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25150.00", - "oi": 481, - "oiChg": 67, - "oiPctChg": 16.183574879227052, - "totTradedVol": 1222, - "iv": 14.2, - "ltp": 14, - "change": -9.2, - "pChange": -39.655172413793096, - "totBuyQty": 40275, - "totSellQty": 4650, - "bidQty": 475, - "bidPrice": 13.8, - "askQty": 25, - "askPrice": 14.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1325, - "totSellQty": 1300, - "bidQty": 25, - "bidPrice": 1097.25, - "askQty": 25, - "askPrice": 1132.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25200.00", - "oi": 6711, - "oiChg": 2923, - "oiPctChg": 77.16473072861669, - "totTradedVol": 26149, - "iv": 14.16, - "ltp": 11.85, - "change": -7.35, - "pChange": -38.28125, - "totBuyQty": 46400, - "totSellQty": 11800, - "bidQty": 1525, - "bidPrice": 11.7, - "askQty": 650, - "askPrice": 12.05 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25200.00", - "oi": 191, - "oiChg": -1, - "oiPctChg": -0.5208333333333334, - "totTradedVol": 16, - "iv": 0, - "ltp": 1120.15, - "change": 288.30000000000007, - "pChange": 34.65769068942719, - "totBuyQty": 1500, - "totSellQty": 1350, - "bidQty": 25, - "bidPrice": 1143.45, - "askQty": 150, - "askPrice": 1180.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25250.00", - "oi": 744, - "oiChg": 203, - "oiPctChg": 37.52310536044362, - "totTradedVol": 1284, - "iv": 14.38, - "ltp": 10.9, - "change": -5.200000000000001, - "pChange": -32.298136645962735, - "totBuyQty": 36925, - "totSellQty": 3950, - "bidQty": 75, - "bidPrice": 10.6, - "askQty": 575, - "askPrice": 11 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1300, - "totSellQty": 1275, - "bidQty": 25, - "bidPrice": 1195.45, - "askQty": 25, - "askPrice": 1241.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25300.00", - "oi": 3909, - "oiChg": 266, - "oiPctChg": 7.301674444139445, - "totTradedVol": 15559, - "iv": 14.28, - "ltp": 8.9, - "change": -4.049999999999999, - "pChange": -31.274131274131268, - "totBuyQty": 50650, - "totSellQty": 5625, - "bidQty": 400, - "bidPrice": 8.8, - "askQty": 25, - "askPrice": 8.9 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25300.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 1275, - "bidQty": 25, - "bidPrice": 1244.25, - "askQty": 25, - "askPrice": 1279 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25350.00", - "oi": 665, - "oiChg": 439, - "oiPctChg": 194.24778761061947, - "totTradedVol": 996, - "iv": 14.53, - "ltp": 8.2, - "change": -3.4000000000000004, - "pChange": -29.31034482758621, - "totBuyQty": 39300, - "totSellQty": 2575, - "bidQty": 275, - "bidPrice": 7.65, - "askQty": 500, - "askPrice": 8.45 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 1250, - "bidQty": 25, - "bidPrice": 1293.65, - "askQty": 25, - "askPrice": 1328.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25400.00", - "oi": 2781, - "oiChg": 1001, - "oiPctChg": 56.235955056179776, - "totTradedVol": 11465, - "iv": 14.44, - "ltp": 6.75, - "change": -3, - "pChange": -30.76923076923077, - "totBuyQty": 61600, - "totSellQty": 4775, - "bidQty": 500, - "bidPrice": 6.45, - "askQty": 250, - "askPrice": 6.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25400.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 1250, - "bidQty": 25, - "bidPrice": 1328.85, - "askQty": 25, - "askPrice": 1372.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25450.00", - "oi": 744, - "oiChg": 378, - "oiPctChg": 103.27868852459017, - "totTradedVol": 857, - "iv": 14.79, - "ltp": 6.4, - "change": -6.049999999999999, - "pChange": -48.594377510040154, - "totBuyQty": 42025, - "totSellQty": 4725, - "bidQty": 275, - "bidPrice": 6, - "askQty": 400, - "askPrice": 6.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1250, - "totSellQty": 1250, - "bidQty": 25, - "bidPrice": 1379.2, - "askQty": 25, - "askPrice": 1429.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25500.00", - "oi": 7272, - "oiChg": 2925, - "oiPctChg": 67.28778467908903, - "totTradedVol": 22390, - "iv": 14.9, - "ltp": 5.55, - "change": -2.6000000000000005, - "pChange": -31.90184049079755, - "totBuyQty": 86000, - "totSellQty": 33850, - "bidQty": 825, - "bidPrice": 5.5, - "askQty": 725, - "askPrice": 5.55 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25500.00", - "oi": 360, - "oiChg": 98, - "oiPctChg": 37.404580152671755, - "totTradedVol": 111, - "iv": 0, - "ltp": 1448.95, - "change": 332.85000000000014, - "pChange": 29.82259654152855, - "totBuyQty": 2550, - "totSellQty": 1800, - "bidQty": 100, - "bidPrice": 1451.15, - "askQty": 100, - "askPrice": 1463.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25550.00", - "oi": 252, - "oiChg": 136, - "oiPctChg": 117.24137931034483, - "totTradedVol": 373, - "iv": 15.03, - "ltp": 4.95, - "change": -2.1499999999999995, - "pChange": -30.281690140845065, - "totBuyQty": 30975, - "totSellQty": 12550, - "bidQty": 600, - "bidPrice": 4.85, - "askQty": 100, - "askPrice": 5.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1250, - "totSellQty": 1225, - "bidQty": 25, - "bidPrice": 1478.6, - "askQty": 25, - "askPrice": 1540.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25600.00", - "oi": 1126, - "oiChg": 524, - "oiPctChg": 87.04318936877077, - "totTradedVol": 3132, - "iv": 15.32, - "ltp": 4.7, - "change": -1.3999999999999995, - "pChange": -22.95081967213114, - "totBuyQty": 93025, - "totSellQty": 14325, - "bidQty": 150, - "bidPrice": 4.4, - "askQty": 575, - "askPrice": 4.65 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1225, - "totSellQty": 1225, - "bidQty": 25, - "bidPrice": 1528.15, - "askQty": 25, - "askPrice": 1580.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25650.00", - "oi": 56, - "oiChg": 25, - "oiPctChg": 80.64516129032258, - "totTradedVol": 84, - "iv": 15.82, - "ltp": 4.9, - "change": -2.6999999999999993, - "pChange": -35.52631578947368, - "totBuyQty": 28900, - "totSellQty": 12300, - "bidQty": 800, - "bidPrice": 3.7, - "askQty": 50, - "askPrice": 4.75 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1225, - "totSellQty": 1225, - "bidQty": 25, - "bidPrice": 1578.25, - "askQty": 25, - "askPrice": 1629.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25700.00", - "oi": 917, - "oiChg": 54, - "oiPctChg": 6.257242178447277, - "totTradedVol": 1798, - "iv": 15.75, - "ltp": 4, - "change": -1.0999999999999996, - "pChange": -21.568627450980387, - "totBuyQty": 94275, - "totSellQty": 18250, - "bidQty": 1500, - "bidPrice": 4, - "askQty": 525, - "askPrice": 4.1 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25700.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 12, - "iv": 0, - "ltp": 1400, - "change": 0, - "pChange": 0, - "totBuyQty": 1375, - "totSellQty": 1375, - "bidQty": 150, - "bidPrice": 1628.3, - "askQty": 150, - "askPrice": 1674.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25750.00", - "oi": 225, - "oiChg": -27, - "oiPctChg": -10.714285714285714, - "totTradedVol": 279, - "iv": 16.25, - "ltp": 3.45, - "change": -2.45, - "pChange": -41.52542372881356, - "totBuyQty": 29150, - "totSellQty": 13975, - "bidQty": 350, - "bidPrice": 3.65, - "askQty": 525, - "askPrice": 3.95 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1225, - "totSellQty": 1200, - "bidQty": 25, - "bidPrice": 1678.25, - "askQty": 25, - "askPrice": 1731.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25800.00", - "oi": 406, - "oiChg": 284, - "oiPctChg": 232.78688524590163, - "totTradedVol": 606, - "iv": 16.17, - "ltp": 3.4, - "change": -1.0000000000000004, - "pChange": -22.727272727272734, - "totBuyQty": 87200, - "totSellQty": 17500, - "bidQty": 125, - "bidPrice": 3.25, - "askQty": 200, - "askPrice": 3.55 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1200, - "totSellQty": 1200, - "bidQty": 25, - "bidPrice": 1728, - "askQty": 25, - "askPrice": 1780.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25850.00", - "oi": 193, - "oiChg": 17, - "oiPctChg": 9.659090909090908, - "totTradedVol": 136, - "iv": 16.71, - "ltp": 3.65, - "change": -0.5000000000000004, - "pChange": -12.048192771084347, - "totBuyQty": 29550, - "totSellQty": 14450, - "bidQty": 550, - "bidPrice": 3.5, - "askQty": 625, - "askPrice": 3.7 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1200, - "totSellQty": 1200, - "bidQty": 25, - "bidPrice": 1778.4, - "askQty": 25, - "askPrice": 1832.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25900.00", - "oi": 930, - "oiChg": 242, - "oiPctChg": 35.174418604651166, - "totTradedVol": 2645, - "iv": 16.75, - "ltp": 3.3, - "change": -0.20000000000000018, - "pChange": -5.71428571428572, - "totBuyQty": 83650, - "totSellQty": 20675, - "bidQty": 500, - "bidPrice": 3.05, - "askQty": 225, - "askPrice": 3.25 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1200, - "totSellQty": 1200, - "bidQty": 25, - "bidPrice": 1828.3, - "askQty": 25, - "askPrice": 1882.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE25950.00", - "oi": 1467, - "oiChg": 774, - "oiPctChg": 111.68831168831169, - "totTradedVol": 1999, - "iv": 17.33, - "ltp": 3.45, - "change": -0.09999999999999964, - "pChange": -2.8169014084506943, - "totBuyQty": 37800, - "totSellQty": 22900, - "bidQty": 925, - "bidPrice": 3.45, - "askQty": 525, - "askPrice": 3.55 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE25950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1878.55, - "askQty": 25, - "askPrice": 1923.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "12-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY12-12-2024CE26000.00", - "oi": 1294, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2896, - "iv": 17.46, - "ltp": 3.3, - "change": -54.900000000000006, - "pChange": -94.32989690721651, - "totBuyQty": 99275, - "totSellQty": 26625, - "bidQty": 150, - "bidPrice": 3.25, - "askQty": 525, - "askPrice": 3.35 - }, - "pe": { - "id": "OPTIDXNIFTY12-12-2024PE26000.00", - "oi": 24, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 25, - "iv": 0, - "ltp": 1891.55, - "change": 213.5999999999999, - "pChange": 12.729819124526948, - "totBuyQty": 1650, - "totSellQty": 1725, - "bidQty": 150, - "bidPrice": 1945, - "askQty": 150, - "askPrice": 1960 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21600.00", - "oi": 1, - "oiChg": 1, - "oiPctChg": 0, - "totTradedVol": 4, - "iv": 23.27, - "ltp": 12.4, - "change": 0.9000000000000004, - "pChange": 7.826086956521743, - "totBuyQty": 17375, - "totSellQty": 375, - "bidQty": 200, - "bidPrice": 3.15, - "askQty": 25, - "askPrice": 15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 10400, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 3.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21700.00", - "oi": 154, - "oiChg": 22, - "oiPctChg": 16.666666666666668, - "totTradedVol": 75, - "iv": 21.61, - "ltp": 9.85, - "change": 2.3499999999999996, - "pChange": 31.33333333333333, - "totBuyQty": 22050, - "totSellQty": 100, - "bidQty": 400, - "bidPrice": 5.75, - "askQty": 100, - "askPrice": 9.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21750.00", - "oi": 57, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 23.47, - "ltp": 18, - "change": 0, - "pChange": 0, - "totBuyQty": 12075, - "totSellQty": 0, - "bidQty": 200, - "bidPrice": 4.35, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8325, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 5.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8600, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 4, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8500, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 4.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8600, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 4, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8200, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 7.2, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7900, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 4.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8900, - "totSellQty": 0, - "bidQty": 1000, - "bidPrice": 4, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6400, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 4.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22200.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9000, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 4.55, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6425, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22300.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8900, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 5.9, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6525, - "totSellQty": 0, - "bidQty": 800, - "bidPrice": 7, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22400.00", - "oi": 356, - "oiChg": 77, - "oiPctChg": 27.59856630824373, - "totTradedVol": 147, - "iv": 18.17, - "ltp": 20.4, - "change": 5.399999999999999, - "pChange": 35.99999999999999, - "totBuyQty": 35925, - "totSellQty": 2350, - "bidQty": 100, - "bidPrice": 16.8, - "askQty": 100, - "askPrice": 20.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 13125, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 9, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22500.00", - "oi": 350, - "oiChg": -123, - "oiPctChg": -26.004228329809724, - "totTradedVol": 599, - "iv": 17.49, - "ltp": 23.5, - "change": 9.9, - "pChange": 72.79411764705883, - "totBuyQty": 41300, - "totSellQty": 4000, - "bidQty": 100, - "bidPrice": 22.4, - "askQty": 25, - "askPrice": 24 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 15250, - "totSellQty": 300, - "bidQty": 300, - "bidPrice": 12.05, - "askQty": 300, - "askPrice": 29.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9400, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 12.65, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 14, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9725, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 16.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8425, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 21.45, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 11325, - "totSellQty": 1800, - "bidQty": 575, - "bidPrice": 24.6, - "askQty": 900, - "askPrice": 52.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9450, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 27.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 11200, - "totSellQty": 1800, - "bidQty": 900, - "bidPrice": 30.95, - "askQty": 1800, - "askPrice": 58.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE22950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8750, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 33.9, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23000.00", - "oi": 4140, - "oiChg": 1413, - "oiPctChg": 51.81518151815182, - "totTradedVol": 5193, - "iv": 15.66, - "ltp": 56, - "change": 25.3, - "pChange": 82.41042345276874, - "totBuyQty": 37575, - "totSellQty": 7350, - "bidQty": 25, - "bidPrice": 56.35, - "askQty": 425, - "askPrice": 57.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9250, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 42.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23100.00", - "oi": 271, - "oiChg": 38, - "oiPctChg": 16.30901287553648, - "totTradedVol": 538, - "iv": 15.61, - "ltp": 69.2, - "change": 32.85, - "pChange": 90.37138927097662, - "totBuyQty": 32650, - "totSellQty": 4375, - "bidQty": 25, - "bidPrice": 65.7, - "askQty": 50, - "askPrice": 68.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23150.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7300, - "totSellQty": 0, - "bidQty": 600, - "bidPrice": 26.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23200.00", - "oi": 209, - "oiChg": 33, - "oiPctChg": 18.75, - "totTradedVol": 204, - "iv": 15.55, - "ltp": 80.55, - "change": 38.599999999999994, - "pChange": 92.01430274135875, - "totBuyQty": 19775, - "totSellQty": 3650, - "bidQty": 1800, - "bidPrice": 76.5, - "askQty": 1800, - "askPrice": 80.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2850, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 32, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23300.00", - "oi": 359, - "oiChg": 157, - "oiPctChg": 77.72277227722772, - "totTradedVol": 557, - "iv": 15.38, - "ltp": 88.9, - "change": 40.550000000000004, - "pChange": 83.86763185108585, - "totBuyQty": 16250, - "totSellQty": 6400, - "bidQty": 25, - "bidPrice": 91.6, - "askQty": 1825, - "askPrice": 94.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23350.00", - "oi": 32, - "oiChg": 1, - "oiPctChg": 3.225806451612903, - "totTradedVol": 4, - "iv": 11.55, - "ltp": 44.15, - "change": -8.5, - "pChange": -16.144349477682812, - "totBuyQty": 12175, - "totSellQty": 1525, - "bidQty": 675, - "bidPrice": 88.15, - "askQty": 25, - "askPrice": 110.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23400.00", - "oi": 11, - "oiChg": 1, - "oiPctChg": 10, - "totTradedVol": 2, - "iv": 19.49, - "ltp": 856.8, - "change": 72.04999999999995, - "pChange": 9.18126791971965, - "totBuyQty": 1175, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 768.45, - "askQty": 25, - "askPrice": 807.7 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23400.00", - "oi": 505, - "oiChg": -107, - "oiPctChg": -17.483660130718953, - "totTradedVol": 469, - "iv": 15.2, - "ltp": 110, - "change": 54.1, - "pChange": 96.77996422182468, - "totBuyQty": 10325, - "totSellQty": 7700, - "bidQty": 200, - "bidPrice": 108.35, - "askQty": 25, - "askPrice": 111.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23450.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 14.08, - "ltp": 723.15, - "change": 93.14999999999998, - "pChange": 14.785714285714283, - "totBuyQty": 1125, - "totSellQty": 1525, - "bidQty": 25, - "bidPrice": 721.55, - "askQty": 25, - "askPrice": 764.4 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23450.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 4200, - "bidQty": 900, - "bidPrice": 103.5, - "askQty": 1800, - "askPrice": 135 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23500.00", - "oi": 115, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3175, - "totSellQty": 1500, - "bidQty": 475, - "bidPrice": 679.25, - "askQty": 900, - "askPrice": 722.15 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23500.00", - "oi": 3927, - "oiChg": 1289, - "oiPctChg": 48.862774829416225, - "totTradedVol": 5493, - "iv": 14.8, - "ltp": 132.05, - "change": 64.20000000000002, - "pChange": 94.62048636698603, - "totBuyQty": 10325, - "totSellQty": 12275, - "bidQty": 250, - "bidPrice": 130.75, - "askQty": 25, - "askPrice": 131.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3325, - "totSellQty": 1275, - "bidQty": 900, - "bidPrice": 639.75, - "askQty": 300, - "askPrice": 682.35 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23550.00", - "oi": 173, - "oiChg": -16, - "oiPctChg": -8.465608465608465, - "totTradedVol": 80, - "iv": 14.19, - "ltp": 143.35, - "change": 72.35, - "pChange": 101.90140845070421, - "totBuyQty": 9875, - "totSellQty": 8425, - "bidQty": 125, - "bidPrice": 140.15, - "askQty": 1925, - "askPrice": 145.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23600.00", - "oi": 27, - "oiChg": 23, - "oiPctChg": 575, - "totTradedVol": 24, - "iv": 17.09, - "ltp": 670.55, - "change": -261.5, - "pChange": -28.0564347406255, - "totBuyQty": 3000, - "totSellQty": 1025, - "bidQty": 25, - "bidPrice": 611.4, - "askQty": 25, - "askPrice": 651.2 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23600.00", - "oi": 185, - "oiChg": 108, - "oiPctChg": 140.25974025974025, - "totTradedVol": 430, - "iv": 14.55, - "ltp": 146.05, - "change": 67.00000000000001, - "pChange": 84.7564832384567, - "totBuyQty": 8800, - "totSellQty": 9225, - "bidQty": 250, - "bidPrice": 154.35, - "askQty": 25, - "askPrice": 156.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23650.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5100, - "totSellQty": 600, - "bidQty": 900, - "bidPrice": 561.55, - "askQty": 300, - "askPrice": 618.7 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23650.00", - "oi": 16, - "oiChg": -17, - "oiPctChg": -51.515151515151516, - "totTradedVol": 24, - "iv": 15.18, - "ltp": 172.85, - "change": 84.55, - "pChange": 95.75311438278595, - "totBuyQty": 5575, - "totSellQty": 4200, - "bidQty": 925, - "bidPrice": 153.3, - "askQty": 900, - "askPrice": 195.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23700.00", - "oi": 7, - "oiChg": 3, - "oiPctChg": 75, - "totTradedVol": 5, - "iv": 15.33, - "ltp": 568.05, - "change": -203.4000000000001, - "pChange": -26.365934279603355, - "totBuyQty": 5950, - "totSellQty": 1950, - "bidQty": 200, - "bidPrice": 544.05, - "askQty": 25, - "askPrice": 572.75 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23700.00", - "oi": 412, - "oiChg": 188, - "oiPctChg": 83.92857142857143, - "totTradedVol": 624, - "iv": 13.69, - "ltp": 158.7, - "change": 63.849999999999994, - "pChange": 67.31681602530311, - "totBuyQty": 10950, - "totSellQty": 12275, - "bidQty": 25, - "bidPrice": 178.55, - "askQty": 250, - "askPrice": 181.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 600, - "bidQty": 900, - "bidPrice": 505.85, - "askQty": 300, - "askPrice": 552.35 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23750.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5125, - "totSellQty": 4500, - "bidQty": 900, - "bidPrice": 171.8, - "askQty": 1200, - "askPrice": 206.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23800.00", - "oi": 55, - "oiChg": 37, - "oiPctChg": 205.55555555555554, - "totTradedVol": 84, - "iv": 15.3, - "ltp": 503.8, - "change": -193.2, - "pChange": -27.71879483500717, - "totBuyQty": 8775, - "totSellQty": 2350, - "bidQty": 1600, - "bidPrice": 485.9, - "askQty": 775, - "askPrice": 492.1 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23800.00", - "oi": 337, - "oiChg": 158, - "oiPctChg": 88.26815642458101, - "totTradedVol": 851, - "iv": 13.84, - "ltp": 213.1, - "change": 101.55, - "pChange": 91.03541012998654, - "totBuyQty": 8100, - "totSellQty": 11800, - "bidQty": 25, - "bidPrice": 208.8, - "askQty": 50, - "askPrice": 212.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23850.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 13000, - "totSellQty": 1600, - "bidQty": 100, - "bidPrice": 450.05, - "askQty": 200, - "askPrice": 460.85 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23850.00", - "oi": 57, - "oiChg": 34, - "oiPctChg": 147.82608695652175, - "totTradedVol": 143, - "iv": 13.15, - "ltp": 228.7, - "change": 101.19999999999999, - "pChange": 79.37254901960783, - "totBuyQty": 3950, - "totSellQty": 7775, - "bidQty": 25, - "bidPrice": 226.1, - "askQty": 50, - "askPrice": 230.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23900.00", - "oi": 51, - "oiChg": 31, - "oiPctChg": 155, - "totTradedVol": 116, - "iv": 16.01, - "ltp": 424.9, - "change": -182.10000000000002, - "pChange": -30.000000000000004, - "totBuyQty": 19625, - "totSellQty": 6450, - "bidQty": 100, - "bidPrice": 423.8, - "askQty": 2300, - "askPrice": 428.05 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23900.00", - "oi": 236, - "oiChg": 143, - "oiPctChg": 153.76344086021504, - "totTradedVol": 558, - "iv": 14.12, - "ltp": 248.2, - "change": 116.25, - "pChange": 88.10155361879501, - "totBuyQty": 4275, - "totSellQty": 9600, - "bidQty": 275, - "bidPrice": 247.05, - "askQty": 1000, - "askPrice": 247.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE23950.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 14100, - "totSellQty": 2925, - "bidQty": 100, - "bidPrice": 386.25, - "askQty": 100, - "askPrice": 398.05 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE23950.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2925, - "totSellQty": 3800, - "bidQty": 150, - "bidPrice": 252.25, - "askQty": 300, - "askPrice": 277.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24000.00", - "oi": 530, - "oiChg": 367, - "oiPctChg": 225.15337423312883, - "totTradedVol": 1285, - "iv": 14.86, - "ltp": 365, - "change": -196.85000000000002, - "pChange": -35.03604164812673, - "totBuyQty": 22900, - "totSellQty": 7525, - "bidQty": 100, - "bidPrice": 362.3, - "askQty": 500, - "askPrice": 366.5 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24000.00", - "oi": 1177, - "oiChg": 286, - "oiPctChg": 32.098765432098766, - "totTradedVol": 3845, - "iv": 12.98, - "ltp": 289.5, - "change": 132.95, - "pChange": 84.92494410731395, - "totBuyQty": 7600, - "totSellQty": 11425, - "bidQty": 50, - "bidPrice": 287.3, - "askQty": 1825, - "askPrice": 292.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24050.00", - "oi": 53, - "oiChg": 45, - "oiPctChg": 562.5, - "totTradedVol": 131, - "iv": 13.7, - "ltp": 327.6, - "change": -215.29999999999995, - "pChange": -39.65739546877877, - "totBuyQty": 17175, - "totSellQty": 3125, - "bidQty": 50, - "bidPrice": 332.2, - "askQty": 25, - "askPrice": 343.4 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24050.00", - "oi": 19, - "oiChg": 15, - "oiPctChg": 375, - "totTradedVol": 68, - "iv": 12.03, - "ltp": 261.9, - "change": 88.74999999999997, - "pChange": 51.25613629800749, - "totBuyQty": 2550, - "totSellQty": 3550, - "bidQty": 400, - "bidPrice": 300.95, - "askQty": 900, - "askPrice": 324.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24100.00", - "oi": 313, - "oiChg": 287, - "oiPctChg": 1103.8461538461538, - "totTradedVol": 569, - "iv": 14.46, - "ltp": 320.5, - "change": -182.05, - "pChange": -36.2252512187842, - "totBuyQty": 18850, - "totSellQty": 6325, - "bidQty": 50, - "bidPrice": 308.95, - "askQty": 250, - "askPrice": 314.95 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24100.00", - "oi": 307, - "oiChg": -34, - "oiPctChg": -9.970674486803519, - "totTradedVol": 520, - "iv": 13.59, - "ltp": 340.5, - "change": 159.55, - "pChange": 88.17352859906052, - "totBuyQty": 5550, - "totSellQty": 5850, - "bidQty": 100, - "bidPrice": 334, - "askQty": 1150, - "askPrice": 338.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24150.00", - "oi": 77, - "oiChg": 23, - "oiPctChg": 42.592592592592595, - "totTradedVol": 68, - "iv": 15.16, - "ltp": 313, - "change": -139.10000000000002, - "pChange": -30.767529307675296, - "totBuyQty": 17075, - "totSellQty": 3900, - "bidQty": 200, - "bidPrice": 276.85, - "askQty": 25, - "askPrice": 296.55 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24150.00", - "oi": 44, - "oiChg": -3, - "oiPctChg": -6.382978723404255, - "totTradedVol": 223, - "iv": 12.33, - "ltp": 320.3, - "change": 124.35000000000002, - "pChange": 63.46006634345498, - "totBuyQty": 1700, - "totSellQty": 2575, - "bidQty": 25, - "bidPrice": 346.05, - "askQty": 100, - "askPrice": 366.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24200.00", - "oi": 430, - "oiChg": 269, - "oiPctChg": 167.08074534161491, - "totTradedVol": 1196, - "iv": 14.47, - "ltp": 275, - "change": -152.14999999999998, - "pChange": -35.61980568886808, - "totBuyQty": 25700, - "totSellQty": 10425, - "bidQty": 200, - "bidPrice": 262.3, - "askQty": 350, - "askPrice": 267.1 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24200.00", - "oi": 393, - "oiChg": 47, - "oiPctChg": 13.583815028901734, - "totTradedVol": 814, - "iv": 13.3, - "ltp": 382.2, - "change": 166.04999999999998, - "pChange": 76.82165163081193, - "totBuyQty": 4800, - "totSellQty": 9100, - "bidQty": 50, - "bidPrice": 382.7, - "askQty": 50, - "askPrice": 387.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24250.00", - "oi": 139, - "oiChg": 51, - "oiPctChg": 57.95454545454545, - "totTradedVol": 743, - "iv": 15.08, - "ltp": 267.85, - "change": -131.14999999999998, - "pChange": -32.86967418546365, - "totBuyQty": 19575, - "totSellQty": 4400, - "bidQty": 200, - "bidPrice": 233.75, - "askQty": 100, - "askPrice": 247.95 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24250.00", - "oi": 63, - "oiChg": -49, - "oiPctChg": -43.75, - "totTradedVol": 347, - "iv": 13.02, - "ltp": 392.7, - "change": 157.39999999999998, - "pChange": 66.89332766680832, - "totBuyQty": 3025, - "totSellQty": 2075, - "bidQty": 875, - "bidPrice": 411.8, - "askQty": 875, - "askPrice": 418.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24300.00", - "oi": 683, - "oiChg": 336, - "oiPctChg": 96.82997118155619, - "totTradedVol": 1315, - "iv": 14.33, - "ltp": 222.45, - "change": -140.55, - "pChange": -38.719008264462815, - "totBuyQty": 23425, - "totSellQty": 12875, - "bidQty": 25, - "bidPrice": 215.8, - "askQty": 50, - "askPrice": 222.25 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24300.00", - "oi": 302, - "oiChg": -83, - "oiPctChg": -21.558441558441558, - "totTradedVol": 1090, - "iv": 11.96, - "ltp": 399.65, - "change": 145.29999999999998, - "pChange": 57.12600747002162, - "totBuyQty": 2025, - "totSellQty": 1900, - "bidQty": 50, - "bidPrice": 440.9, - "askQty": 100, - "askPrice": 446.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24350.00", - "oi": 74, - "oiChg": 23, - "oiPctChg": 45.09803921568628, - "totTradedVol": 170, - "iv": 13.58, - "ltp": 196, - "change": -138.2, - "pChange": -41.35248354278875, - "totBuyQty": 22050, - "totSellQty": 4975, - "bidQty": 900, - "bidPrice": 190.45, - "askQty": 100, - "askPrice": 207.85 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24350.00", - "oi": 11, - "oiChg": 4, - "oiPctChg": 57.142857142857146, - "totTradedVol": 11, - "iv": 0, - "ltp": 257, - "change": -19.44999999999999, - "pChange": -7.035630312895637, - "totBuyQty": 1500, - "totSellQty": 700, - "bidQty": 300, - "bidPrice": 450.45, - "askQty": 300, - "askPrice": 489.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24400.00", - "oi": 400, - "oiChg": 224, - "oiPctChg": 127.27272727272727, - "totTradedVol": 800, - "iv": 14.56, - "ltp": 182.25, - "change": -121.35000000000002, - "pChange": -39.9703557312253, - "totBuyQty": 21500, - "totSellQty": 12100, - "bidQty": 50, - "bidPrice": 179.45, - "askQty": 50, - "askPrice": 183.15 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24400.00", - "oi": 148, - "oiChg": 69, - "oiPctChg": 87.34177215189874, - "totTradedVol": 370, - "iv": 11.67, - "ltp": 459.1, - "change": 170.35000000000002, - "pChange": 58.995670995671, - "totBuyQty": 3125, - "totSellQty": 2375, - "bidQty": 25, - "bidPrice": 492, - "askQty": 25, - "askPrice": 521.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24450.00", - "oi": 75, - "oiChg": 49, - "oiPctChg": 188.46153846153845, - "totTradedVol": 96, - "iv": 14.75, - "ltp": 187.05, - "change": -102.94999999999999, - "pChange": -35.5, - "totBuyQty": 18325, - "totSellQty": 5400, - "bidQty": 25, - "bidPrice": 163, - "askQty": 1800, - "askPrice": 168.05 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24450.00", - "oi": 6, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 34, - "iv": 10.94, - "ltp": 479.6, - "change": 134.60000000000002, - "pChange": 39.014492753623195, - "totBuyQty": 625, - "totSellQty": 1525, - "bidQty": 25, - "bidPrice": 513.75, - "askQty": 25, - "askPrice": 548.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24500.00", - "oi": 1932, - "oiChg": 1029, - "oiPctChg": 113.95348837209302, - "totTradedVol": 4131, - "iv": 14.05, - "ltp": 148.4, - "change": -103.94999999999999, - "pChange": -41.19278779472954, - "totBuyQty": 27525, - "totSellQty": 17100, - "bidQty": 200, - "bidPrice": 147.55, - "askQty": 25, - "askPrice": 150.4 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24500.00", - "oi": 262, - "oiChg": 35, - "oiPctChg": 15.418502202643172, - "totTradedVol": 531, - "iv": 12.19, - "ltp": 540, - "change": 201.45, - "pChange": 59.503766061143104, - "totBuyQty": 1900, - "totSellQty": 3925, - "bidQty": 675, - "bidPrice": 561.65, - "askQty": 25, - "askPrice": 568.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24550.00", - "oi": 49, - "oiChg": 36, - "oiPctChg": 276.9230769230769, - "totTradedVol": 98, - "iv": 13.98, - "ltp": 141.4, - "change": -119.95000000000002, - "pChange": -45.896307633441744, - "totBuyQty": 15925, - "totSellQty": 5525, - "bidQty": 900, - "bidPrice": 120.25, - "askQty": 125, - "askPrice": 143.5 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1500, - "totSellQty": 600, - "bidQty": 300, - "bidPrice": 584.65, - "askQty": 300, - "askPrice": 623.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24600.00", - "oi": 219, - "oiChg": 27, - "oiPctChg": 14.0625, - "totTradedVol": 561, - "iv": 13.78, - "ltp": 120, - "change": -91.65, - "pChange": -43.30262225372077, - "totBuyQty": 24550, - "totSellQty": 7225, - "bidQty": 100, - "bidPrice": 120.15, - "askQty": 200, - "askPrice": 123.15 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 775, - "totSellQty": 1475, - "bidQty": 300, - "bidPrice": 615.7, - "askQty": 300, - "askPrice": 659.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24650.00", - "oi": 1, - "oiChg": 1, - "oiPctChg": 0, - "totTradedVol": 5, - "iv": 12.47, - "ltp": 89.45, - "change": -41.7, - "pChange": -31.79565383149066, - "totBuyQty": 16050, - "totSellQty": 4275, - "bidQty": 900, - "bidPrice": 93.45, - "askQty": 25, - "askPrice": 117.75 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24700.00", - "oi": 481, - "oiChg": 106, - "oiPctChg": 28.266666666666666, - "totTradedVol": 872, - "iv": 13.93, - "ltp": 96.5, - "change": -70.05000000000001, - "pChange": -42.05944160912639, - "totBuyQty": 24225, - "totSellQty": 11100, - "bidQty": 1800, - "bidPrice": 93.8, - "askQty": 125, - "askPrice": 97.2 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24700.00", - "oi": 72, - "oiChg": 31, - "oiPctChg": 75.60975609756098, - "totTradedVol": 116, - "iv": 11.79, - "ltp": 716.35, - "change": 256.35, - "pChange": 55.728260869565226, - "totBuyQty": 600, - "totSellQty": 425, - "bidQty": 525, - "bidPrice": 713.9, - "askQty": 400, - "askPrice": 723.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24750.00", - "oi": 21, - "oiChg": 11, - "oiPctChg": 110, - "totTradedVol": 28, - "iv": 14.62, - "ltp": 105, - "change": -55, - "pChange": -34.375, - "totBuyQty": 17025, - "totSellQty": 2625, - "bidQty": 25, - "bidPrice": 77.35, - "askQty": 125, - "askPrice": 99.9 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24800.00", - "oi": 356, - "oiChg": 238, - "oiPctChg": 201.6949152542373, - "totTradedVol": 793, - "iv": 13.84, - "ltp": 76.65, - "change": -56.25, - "pChange": -42.32505643340858, - "totBuyQty": 21175, - "totSellQty": 7975, - "bidQty": 25, - "bidPrice": 76.65, - "askQty": 100, - "askPrice": 78 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24850.00", - "oi": 39, - "oiChg": 23, - "oiPctChg": 143.75, - "totTradedVol": 69, - "iv": 13.16, - "ltp": 64, - "change": -61, - "pChange": -48.8, - "totBuyQty": 22125, - "totSellQty": 650, - "bidQty": 25, - "bidPrice": 64, - "askQty": 25, - "askPrice": 77.6 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24900.00", - "oi": 197, - "oiChg": 81, - "oiPctChg": 69.82758620689656, - "totTradedVol": 490, - "iv": 13.56, - "ltp": 60.05, - "change": -44.10000000000001, - "pChange": -42.342774843975036, - "totBuyQty": 32325, - "totSellQty": 6000, - "bidQty": 25, - "bidPrice": 59.7, - "askQty": 25, - "askPrice": 61.55 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE24900.00", - "oi": 6, - "oiChg": 2, - "oiPctChg": 50, - "totTradedVol": 7, - "iv": 13.23, - "ltp": 875, - "change": 190.70000000000005, - "pChange": 27.867894198450983, - "totBuyQty": 750, - "totSellQty": 650, - "bidQty": 300, - "bidPrice": 857.85, - "askQty": 25, - "askPrice": 899.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE24950.00", - "oi": 35, - "oiChg": 13, - "oiPctChg": 59.09090909090909, - "totTradedVol": 45, - "iv": 14.31, - "ltp": 63.95, - "change": -26.5, - "pChange": -29.297954671089, - "totBuyQty": 18175, - "totSellQty": 775, - "bidQty": 25, - "bidPrice": 47.2, - "askQty": 250, - "askPrice": 63.95 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25000.00", - "oi": 1750, - "oiChg": 888, - "oiPctChg": 103.01624129930394, - "totTradedVol": 4021, - "iv": 13.43, - "ltp": 46, - "change": -34.7, - "pChange": -42.998760842627014, - "totBuyQty": 29250, - "totSellQty": 14250, - "bidQty": 200, - "bidPrice": 45.25, - "askQty": 100, - "askPrice": 46.2 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 24, - "iv": 16.14, - "ltp": 1000, - "change": 275, - "pChange": 37.93103448275862, - "totBuyQty": 50, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 944.15, - "askQty": 25, - "askPrice": 982.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25050.00", - "oi": 6, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 17475, - "totSellQty": 350, - "bidQty": 125, - "bidPrice": 27.5, - "askQty": 25, - "askPrice": 49.4 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25100.00", - "oi": 137, - "oiChg": 80, - "oiPctChg": 140.35087719298247, - "totTradedVol": 378, - "iv": 13.44, - "ltp": 34.35, - "change": -19.049999999999997, - "pChange": -35.674157303370784, - "totBuyQty": 23350, - "totSellQty": 6075, - "bidQty": 350, - "bidPrice": 34.35, - "askQty": 100, - "askPrice": 36.15 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25150.00", - "oi": 66, - "oiChg": 2, - "oiPctChg": 3.125, - "totTradedVol": 56, - "iv": 13.17, - "ltp": 29.7, - "change": -25.3, - "pChange": -46, - "totBuyQty": 21725, - "totSellQty": 625, - "bidQty": 300, - "bidPrice": 27.05, - "askQty": 300, - "askPrice": 35 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25200.00", - "oi": 273, - "oiChg": 156, - "oiPctChg": 133.33333333333334, - "totTradedVol": 573, - "iv": 13.58, - "ltp": 29.35, - "change": -16.1, - "pChange": -35.42354235423543, - "totBuyQty": 30375, - "totSellQty": 5175, - "bidQty": 50, - "bidPrice": 25.3, - "askQty": 50, - "askPrice": 28.8 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25250.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 13.49, - "ltp": 24.95, - "change": -29.95, - "pChange": -54.55373406193078, - "totBuyQty": 21700, - "totSellQty": 925, - "bidQty": 300, - "bidPrice": 20.1, - "askQty": 300, - "askPrice": 27.6 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25300.00", - "oi": 389, - "oiChg": 110, - "oiPctChg": 39.42652329749104, - "totTradedVol": 500, - "iv": 13.66, - "ltp": 21, - "change": -12.600000000000001, - "pChange": -37.5, - "totBuyQty": 36500, - "totSellQty": 2175, - "bidQty": 175, - "bidPrice": 21.05, - "askQty": 200, - "askPrice": 22.15 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25350.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 28600, - "totSellQty": 1950, - "bidQty": 400, - "bidPrice": 13.1, - "askQty": 300, - "askPrice": 27.9 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25400.00", - "oi": 53, - "oiChg": 45, - "oiPctChg": 562.5, - "totTradedVol": 77, - "iv": 13.35, - "ltp": 18.9, - "change": -12.200000000000003, - "pChange": -39.228295819935695, - "totBuyQty": 18975, - "totSellQty": 3150, - "bidQty": 350, - "bidPrice": 15.9, - "askQty": 525, - "askPrice": 17.65 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25450.00", - "oi": 73, - "oiChg": 69, - "oiPctChg": 1725, - "totTradedVol": 109, - "iv": 14, - "ltp": 15, - "change": -22.1, - "pChange": -59.56873315363882, - "totBuyQty": 28675, - "totSellQty": 5650, - "bidQty": 25, - "bidPrice": 14.55, - "askQty": 525, - "askPrice": 15.25 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25500.00", - "oi": 2090, - "oiChg": 806, - "oiPctChg": 62.77258566978193, - "totTradedVol": 2131, - "iv": 13.71, - "ltp": 13, - "change": -5.600000000000001, - "pChange": -30.107526881720435, - "totBuyQty": 48175, - "totSellQty": 5975, - "bidQty": 75, - "bidPrice": 12.55, - "askQty": 25, - "askPrice": 12.9 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25550.00", - "oi": 18, - "oiChg": 5, - "oiPctChg": 38.46153846153846, - "totTradedVol": 107, - "iv": 14.03, - "ltp": 12.05, - "change": -13.45, - "pChange": -52.74509803921569, - "totBuyQty": 27425, - "totSellQty": 4550, - "bidQty": 100, - "bidPrice": 10.6, - "askQty": 525, - "askPrice": 12.5 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25600.00", - "oi": 288, - "oiChg": 196, - "oiPctChg": 213.04347826086956, - "totTradedVol": 580, - "iv": 14.06, - "ltp": 11, - "change": -3.9499999999999993, - "pChange": -26.421404682274247, - "totBuyQty": 29025, - "totSellQty": 3000, - "bidQty": 100, - "bidPrice": 10.05, - "askQty": 525, - "askPrice": 11.35 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25650.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 35725, - "totSellQty": 3500, - "bidQty": 600, - "bidPrice": 6.4, - "askQty": 100, - "askPrice": 13.9 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25700.00", - "oi": 171, - "oiChg": 131, - "oiPctChg": 327.5, - "totTradedVol": 209, - "iv": 14.31, - "ltp": 9.4, - "change": -3.549999999999999, - "pChange": -27.41312741312741, - "totBuyQty": 33700, - "totSellQty": 6450, - "bidQty": 350, - "bidPrice": 7.9, - "askQty": 50, - "askPrice": 9.6 - }, - "pe": { - "id": "OPTIDXNIFTY19-12-2024PE25700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 17, - "iv": 14.56, - "ltp": 9, - "change": -10.600000000000001, - "pChange": -54.08163265306123, - "totBuyQty": 22000, - "totSellQty": 5900, - "bidQty": 750, - "bidPrice": 6, - "askQty": 200, - "askPrice": 10.45 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25800.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 23050, - "totSellQty": 4000, - "bidQty": 750, - "bidPrice": 5.4, - "askQty": 500, - "askPrice": 10 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 19500, - "totSellQty": 5250, - "bidQty": 750, - "bidPrice": 4.4, - "askQty": 50, - "askPrice": 10.45 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25900.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 16.22, - "ltp": 11.4, - "change": 0, - "pChange": 0, - "totBuyQty": 20950, - "totSellQty": 5475, - "bidQty": 400, - "bidPrice": 5.35, - "askQty": 100, - "askPrice": 9.95 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE25950.00", - "oi": 88, - "oiChg": 34, - "oiPctChg": 62.96296296296296, - "totTradedVol": 93, - "iv": 15.27, - "ltp": 6.85, - "change": -1.5, - "pChange": -17.964071856287426, - "totBuyQty": 32000, - "totSellQty": 6200, - "bidQty": 125, - "bidPrice": 5.5, - "askQty": 150, - "askPrice": 7 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "19-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY19-12-2024CE26000.00", - "oi": 238, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 465, - "iv": 15.23, - "ltp": 5.65, - "change": -6.15, - "pChange": -52.1186440677966, - "totBuyQty": 28250, - "totSellQty": 8650, - "bidQty": 525, - "bidPrice": 5.65, - "askQty": 175, - "askPrice": 5.85 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 14000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE14000.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 50, - "totSellQty": 1075, - "bidQty": 25, - "bidPrice": 9966.65, - "askQty": 25, - "askPrice": 10332.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE14000.00", - "oi": 13802, - "oiChg": 216, - "oiPctChg": 1.5898719269836596, - "totTradedVol": 1632, - "iv": 68.55, - "ltp": 2.1, - "change": -0.7999999999999998, - "pChange": -27.58620689655172, - "totBuyQty": 78650, - "totSellQty": 21750, - "bidQty": 1875, - "bidPrice": 2.1, - "askQty": 300, - "askPrice": 2.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 15000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE15000.00", - "oi": 602, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 75, - "totSellQty": 2825, - "bidQty": 25, - "bidPrice": 8901.05, - "askQty": 25, - "askPrice": 9242.85 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE15000.00", - "oi": 3428, - "oiChg": 50, - "oiPctChg": 1.4801657785671996, - "totTradedVol": 359, - "iv": 61.44, - "ltp": 2.5, - "change": -0.5499999999999998, - "pChange": -18.032786885245898, - "totBuyQty": 69675, - "totSellQty": 15825, - "bidQty": 350, - "bidPrice": 2.5, - "askQty": 925, - "askPrice": 2.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 16000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE16000.00", - "oi": 13270, - "oiChg": -10, - "oiPctChg": -0.07530120481927711, - "totTradedVol": 94, - "iv": 78.61, - "ltp": 8110.4, - "change": -255.35000000000036, - "pChange": -3.05232645010908, - "totBuyQty": 4450, - "totSellQty": 4700, - "bidQty": 25, - "bidPrice": 8016, - "askQty": 25, - "askPrice": 8043.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE16000.00", - "oi": 6227, - "oiChg": 20, - "oiPctChg": 0.3222168519413565, - "totTradedVol": 528, - "iv": 54.76, - "ltp": 3.05, - "change": -0.9500000000000002, - "pChange": -23.750000000000004, - "totBuyQty": 53325, - "totSellQty": 16750, - "bidQty": 350, - "bidPrice": 3.1, - "askQty": 100, - "askPrice": 3.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 17000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE17000.00", - "oi": 990, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 23, - "iv": 0, - "ltp": 7069.5, - "change": -329.39999999999964, - "pChange": -4.452013137087941, - "totBuyQty": 2700, - "totSellQty": 4375, - "bidQty": 25, - "bidPrice": 7000.05, - "askQty": 25, - "askPrice": 7073.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE17000.00", - "oi": 6826, - "oiChg": 89, - "oiPctChg": 1.3210627875909158, - "totTradedVol": 622, - "iv": 47.98, - "ltp": 3.7, - "change": -0.39999999999999947, - "pChange": -9.756097560975597, - "totBuyQty": 53375, - "totSellQty": 27000, - "bidQty": 200, - "bidPrice": 3.55, - "askQty": 150, - "askPrice": 3.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE18000.00", - "oi": 2227, - "oiChg": 20, - "oiPctChg": 0.9062075215224287, - "totTradedVol": 63, - "iv": 0, - "ltp": 6072, - "change": -319.1999999999998, - "pChange": -4.994367254975589, - "totBuyQty": 3850, - "totSellQty": 5825, - "bidQty": 100, - "bidPrice": 6031.55, - "askQty": 25, - "askPrice": 6086.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE18000.00", - "oi": 16111, - "oiChg": 303, - "oiPctChg": 1.916751012145749, - "totTradedVol": 2742, - "iv": 41.61, - "ltp": 4.25, - "change": -0.25, - "pChange": -5.555555555555555, - "totBuyQty": 70800, - "totSellQty": 23450, - "bidQty": 400, - "bidPrice": 4.1, - "askQty": 125, - "askPrice": 4.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE19000.00", - "oi": 3354, - "oiChg": -22, - "oiPctChg": -0.6516587677725119, - "totTradedVol": 32, - "iv": 0, - "ltp": 5065, - "change": -317.75, - "pChange": -5.903116436765594, - "totBuyQty": 6250, - "totSellQty": 7200, - "bidQty": 25, - "bidPrice": 5055, - "askQty": 100, - "askPrice": 5078.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE19000.00", - "oi": 23129, - "oiChg": 6, - "oiPctChg": 0.025948190113739566, - "totTradedVol": 2492, - "iv": 35.37, - "ltp": 5.25, - "change": 0.04999999999999982, - "pChange": 0.9615384615384581, - "totBuyQty": 117575, - "totSellQty": 21550, - "bidQty": 450, - "bidPrice": 5.05, - "askQty": 550, - "askPrice": 5.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE20000.00", - "oi": 12114, - "oiChg": 37, - "oiPctChg": 0.30636747536639897, - "totTradedVol": 881, - "iv": 35.29, - "ltp": 4094.35, - "change": -310.7000000000003, - "pChange": -7.053268407850087, - "totBuyQty": 6275, - "totSellQty": 6975, - "bidQty": 50, - "bidPrice": 4071.55, - "askQty": 150, - "askPrice": 4089 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE20000.00", - "oi": 71888, - "oiChg": -555, - "oiPctChg": -0.7661195698687244, - "totTradedVol": 17662, - "iv": 29.52, - "ltp": 6.75, - "change": 0.7000000000000002, - "pChange": 11.5702479338843, - "totBuyQty": 114825, - "totSellQty": 44325, - "bidQty": 4625, - "bidPrice": 6.7, - "askQty": 300, - "askPrice": 6.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21000.00", - "oi": 24168, - "oiChg": 90, - "oiPctChg": 0.373785198106155, - "totTradedVol": 663, - "iv": 28.07, - "ltp": 3083.05, - "change": -335.7999999999997, - "pChange": -9.822016175029608, - "totBuyQty": 6250, - "totSellQty": 9625, - "bidQty": 100, - "bidPrice": 3078.2, - "askQty": 100, - "askPrice": 3088.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21000.00", - "oi": 99905, - "oiChg": 4251, - "oiPctChg": 4.444142430008155, - "totTradedVol": 28279, - "iv": 23.6, - "ltp": 9, - "change": 0.5999999999999996, - "pChange": 7.142857142857138, - "totBuyQty": 79550, - "totSellQty": 26400, - "bidQty": 725, - "bidPrice": 9, - "askQty": 2825, - "askPrice": 9.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21600.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 3975, - "bidQty": 25, - "bidPrice": 2455.35, - "askQty": 250, - "askPrice": 2569.7 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21600.00", - "oi": 15263, - "oiChg": -270, - "oiPctChg": -1.738234726067083, - "totTradedVol": 17114, - "iv": 19.79, - "ltp": 10.8, - "change": 2.1500000000000004, - "pChange": 24.855491329479772, - "totBuyQty": 135600, - "totSellQty": 8550, - "bidQty": 450, - "bidPrice": 10.8, - "askQty": 550, - "askPrice": 10.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2200, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 2411.25, - "askQty": 25, - "askPrice": 2516.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21650.00", - "oi": 568, - "oiChg": 268, - "oiPctChg": 89.33333333333333, - "totTradedVol": 456, - "iv": 19.76, - "ltp": 12.35, - "change": -2.6500000000000004, - "pChange": -17.666666666666668, - "totBuyQty": 22325, - "totSellQty": 4275, - "bidQty": 25, - "bidPrice": 12, - "askQty": 525, - "askPrice": 12.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2200, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 2363, - "askQty": 25, - "askPrice": 2439.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21700.00", - "oi": 2404, - "oiChg": 129, - "oiPctChg": 5.670329670329671, - "totTradedVol": 7108, - "iv": 19.59, - "ltp": 12.8, - "change": 2.8500000000000014, - "pChange": 28.643216080402027, - "totBuyQty": 38800, - "totSellQty": 6725, - "bidQty": 450, - "bidPrice": 12.75, - "askQty": 225, - "askPrice": 12.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2200, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 2317.05, - "askQty": 25, - "askPrice": 2392.25 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21750.00", - "oi": 884, - "oiChg": 218, - "oiPctChg": 32.732732732732735, - "totTradedVol": 330, - "iv": 18.89, - "ltp": 10.65, - "change": -0.5499999999999989, - "pChange": -4.910714285714277, - "totBuyQty": 29850, - "totSellQty": 4100, - "bidQty": 100, - "bidPrice": 10.65, - "askQty": 100, - "askPrice": 17.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21800.00", - "oi": 60, - "oiChg": 17, - "oiPctChg": 39.53488372093023, - "totTradedVol": 32, - "iv": 28.5, - "ltp": 2391, - "change": 656, - "pChange": 37.809798270893374, - "totBuyQty": 4125, - "totSellQty": 4275, - "bidQty": 250, - "bidPrice": 2279.7, - "askQty": 125, - "askPrice": 2334.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21800.00", - "oi": 18349, - "oiChg": 1146, - "oiPctChg": 6.661628785676917, - "totTradedVol": 19778, - "iv": 19.3, - "ltp": 14.65, - "change": 4, - "pChange": 37.558685446009385, - "totBuyQty": 34550, - "totSellQty": 8050, - "bidQty": 100, - "bidPrice": 14.45, - "askQty": 225, - "askPrice": 14.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21850.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3725, - "bidQty": 275, - "bidPrice": 2225.45, - "askQty": 25, - "askPrice": 2313.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21850.00", - "oi": 528, - "oiChg": 105, - "oiPctChg": 24.822695035460992, - "totTradedVol": 924, - "iv": 19.28, - "ltp": 15.65, - "change": 3.0500000000000007, - "pChange": 24.206349206349213, - "totBuyQty": 31275, - "totSellQty": 6250, - "bidQty": 350, - "bidPrice": 16.05, - "askQty": 525, - "askPrice": 16.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21900.00", - "oi": 17, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3750, - "bidQty": 275, - "bidPrice": 2176.9, - "askQty": 50, - "askPrice": 2248.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21900.00", - "oi": 4203, - "oiChg": -283, - "oiPctChg": -6.308515381185912, - "totTradedVol": 5485, - "iv": 19.21, - "ltp": 17.65, - "change": 4.299999999999999, - "pChange": 32.20973782771535, - "totBuyQty": 33500, - "totSellQty": 8825, - "bidQty": 925, - "bidPrice": 17.55, - "askQty": 800, - "askPrice": 17.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE21950.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3750, - "bidQty": 275, - "bidPrice": 2133.5, - "askQty": 50, - "askPrice": 2200.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE21950.00", - "oi": 412, - "oiChg": 27, - "oiPctChg": 7.012987012987013, - "totTradedVol": 704, - "iv": 19.14, - "ltp": 17.95, - "change": 4.299999999999999, - "pChange": 31.501831501831496, - "totBuyQty": 32100, - "totSellQty": 9375, - "bidQty": 350, - "bidPrice": 18.35, - "askQty": 525, - "askPrice": 18.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22000.00", - "oi": 25249, - "oiChg": 942, - "oiPctChg": 3.8754268317768545, - "totTradedVol": 2722, - "iv": 22, - "ltp": 2113.65, - "change": -318.4000000000001, - "pChange": -13.091836105343232, - "totBuyQty": 11350, - "totSellQty": 11600, - "bidQty": 75, - "bidPrice": 2103.15, - "askQty": 100, - "askPrice": 2111.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22000.00", - "oi": 159453, - "oiChg": 12103, - "oiPctChg": 8.21377672209026, - "totTradedVol": 106801, - "iv": 19.08, - "ltp": 20.6, - "change": 5.450000000000001, - "pChange": 35.97359735973598, - "totBuyQty": 118600, - "totSellQty": 53050, - "bidQty": 625, - "bidPrice": 20.4, - "askQty": 50, - "askPrice": 20.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22050.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 2825, - "bidQty": 250, - "bidPrice": 2036.7, - "askQty": 25, - "askPrice": 2123.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 31625, - "totSellQty": 0, - "bidQty": 600, - "bidPrice": 15.65, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22100.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 4650, - "bidQty": 250, - "bidPrice": 1990.35, - "askQty": 25, - "askPrice": 2061.2 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22100.00", - "oi": 2148, - "oiChg": 954, - "oiPctChg": 79.89949748743719, - "totTradedVol": 5476, - "iv": 18.62, - "ltp": 22.95, - "change": 7.199999999999999, - "pChange": 45.71428571428571, - "totBuyQty": 45700, - "totSellQty": 7775, - "bidQty": 200, - "bidPrice": 22.85, - "askQty": 700, - "askPrice": 23.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22150.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 3975, - "bidQty": 250, - "bidPrice": 1944, - "askQty": 250, - "askPrice": 2031.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22150.00", - "oi": 448, - "oiChg": 187, - "oiPctChg": 71.64750957854406, - "totTradedVol": 929, - "iv": 18.37, - "ltp": 24.3, - "change": 7.650000000000002, - "pChange": 45.945945945945965, - "totBuyQty": 37325, - "totSellQty": 10375, - "bidQty": 375, - "bidPrice": 23.5, - "askQty": 525, - "askPrice": 23.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22200.00", - "oi": 10, - "oiChg": 2, - "oiPctChg": 25, - "totTradedVol": 3, - "iv": 0, - "ltp": 1872.25, - "change": 302.25, - "pChange": 19.2515923566879, - "totBuyQty": 4200, - "totSellQty": 3975, - "bidQty": 250, - "bidPrice": 1896.75, - "askQty": 150, - "askPrice": 1950.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22200.00", - "oi": 6547, - "oiChg": -174, - "oiPctChg": -2.5889004612408866, - "totTradedVol": 15496, - "iv": 18.25, - "ltp": 25.7, - "change": 7.649999999999999, - "pChange": 42.38227146814403, - "totBuyQty": 39775, - "totSellQty": 8050, - "bidQty": 100, - "bidPrice": 25.5, - "askQty": 500, - "askPrice": 25.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22250.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 3975, - "bidQty": 25, - "bidPrice": 1851.95, - "askQty": 250, - "askPrice": 1936.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22250.00", - "oi": 247, - "oiChg": 160, - "oiPctChg": 183.90804597701148, - "totTradedVol": 647, - "iv": 18.46, - "ltp": 28.5, - "change": 10.05, - "pChange": 54.47154471544716, - "totBuyQty": 43325, - "totSellQty": 2575, - "bidQty": 50, - "bidPrice": 25.45, - "askQty": 50, - "askPrice": 28.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22300.00", - "oi": 147, - "oiChg": 5, - "oiPctChg": 3.5211267605633805, - "totTradedVol": 12, - "iv": 27.68, - "ltp": 1950, - "change": 658.8499999999999, - "pChange": 51.02815319676256, - "totBuyQty": 4325, - "totSellQty": 5025, - "bidQty": 250, - "bidPrice": 1788.9, - "askQty": 150, - "askPrice": 1852.7 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22300.00", - "oi": 6267, - "oiChg": 50, - "oiPctChg": 0.804246421103426, - "totTradedVol": 8169, - "iv": 17.89, - "ltp": 28.85, - "change": 9.55, - "pChange": 49.4818652849741, - "totBuyQty": 45275, - "totSellQty": 6725, - "bidQty": 350, - "bidPrice": 28.8, - "askQty": 250, - "askPrice": 29 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22350.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 3725, - "bidQty": 25, - "bidPrice": 1760.2, - "askQty": 25, - "askPrice": 1821.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22350.00", - "oi": 343, - "oiChg": 91, - "oiPctChg": 36.111111111111114, - "totTradedVol": 654, - "iv": 17.61, - "ltp": 28.3, - "change": 7.699999999999999, - "pChange": 37.37864077669902, - "totBuyQty": 43325, - "totSellQty": 4025, - "bidQty": 350, - "bidPrice": 31.25, - "askQty": 525, - "askPrice": 31.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22400.00", - "oi": 22, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 4625, - "bidQty": 250, - "bidPrice": 1705.35, - "askQty": 900, - "askPrice": 1773.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22400.00", - "oi": 11342, - "oiChg": 846, - "oiPctChg": 8.060213414634147, - "totTradedVol": 11387, - "iv": 17.71, - "ltp": 33.95, - "change": 11.950000000000003, - "pChange": 54.318181818181834, - "totBuyQty": 45500, - "totSellQty": 5600, - "bidQty": 50, - "bidPrice": 34.1, - "askQty": 125, - "askPrice": 34.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22450.00", - "oi": 41, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 14, - "iv": 0, - "ltp": 1661.2, - "change": -374.0999999999999, - "pChange": -18.380582715078855, - "totBuyQty": 4425, - "totSellQty": 4175, - "bidQty": 250, - "bidPrice": 1653.5, - "askQty": 125, - "askPrice": 1702.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22450.00", - "oi": 429, - "oiChg": 142, - "oiPctChg": 49.47735191637631, - "totTradedVol": 1456, - "iv": 17.44, - "ltp": 35.55, - "change": 12.599999999999998, - "pChange": 54.90196078431372, - "totBuyQty": 35550, - "totSellQty": 4450, - "bidQty": 350, - "bidPrice": 36.2, - "askQty": 75, - "askPrice": 36.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22500.00", - "oi": 13003, - "oiChg": 779, - "oiPctChg": 6.372709424083769, - "totTradedVol": 3079, - "iv": 17.61, - "ltp": 1634.6, - "change": -308.45000000000005, - "pChange": -15.874527160906823, - "totBuyQty": 9775, - "totSellQty": 17875, - "bidQty": 25, - "bidPrice": 1626.9, - "askQty": 25, - "askPrice": 1633.8 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22500.00", - "oi": 76425, - "oiChg": 5449, - "oiPctChg": 7.677243011722273, - "totTradedVol": 80441, - "iv": 17.41, - "ltp": 39.25, - "change": 15.45, - "pChange": 64.91596638655462, - "totBuyQty": 243475, - "totSellQty": 27275, - "bidQty": 225, - "bidPrice": 38.95, - "askQty": 375, - "askPrice": 39.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22550.00", - "oi": 28, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 17.09, - "ltp": 1600, - "change": -340, - "pChange": -17.525773195876287, - "totBuyQty": 4100, - "totSellQty": 3850, - "bidQty": 250, - "bidPrice": 1544.3, - "askQty": 125, - "askPrice": 1616.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22550.00", - "oi": 440, - "oiChg": -5, - "oiPctChg": -1.1235955056179776, - "totTradedVol": 1567, - "iv": 17.24, - "ltp": 41.7, - "change": 15.800000000000004, - "pChange": 61.003861003861026, - "totBuyQty": 43025, - "totSellQty": 2800, - "bidQty": 25, - "bidPrice": 41.65, - "askQty": 550, - "askPrice": 42 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22600.00", - "oi": 317, - "oiChg": 69, - "oiPctChg": 27.822580645161292, - "totTradedVol": 87, - "iv": 25.28, - "ltp": 1666, - "change": -79.84999999999991, - "pChange": -4.5737033536672635, - "totBuyQty": 3850, - "totSellQty": 4475, - "bidQty": 125, - "bidPrice": 1528.15, - "askQty": 125, - "askPrice": 1566.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22600.00", - "oi": 13164, - "oiChg": 43, - "oiPctChg": 0.3277189238625105, - "totTradedVol": 24158, - "iv": 17.11, - "ltp": 44.65, - "change": 17.75, - "pChange": 65.98513011152417, - "totBuyQty": 46700, - "totSellQty": 7275, - "bidQty": 675, - "bidPrice": 44.55, - "askQty": 725, - "askPrice": 44.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22650.00", - "oi": 40, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3000, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 1455.4, - "askQty": 25, - "askPrice": 1525.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22650.00", - "oi": 2215, - "oiChg": 492, - "oiPctChg": 28.554846198491003, - "totTradedVol": 2521, - "iv": 16.97, - "ltp": 47.85, - "change": 19, - "pChange": 65.8578856152513, - "totBuyQty": 43600, - "totSellQty": 3400, - "bidQty": 350, - "bidPrice": 48.1, - "askQty": 525, - "askPrice": 48.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22700.00", - "oi": 162, - "oiChg": -2, - "oiPctChg": -1.2195121951219512, - "totTradedVol": 18, - "iv": 25.13, - "ltp": 1583.3, - "change": -93.25, - "pChange": -5.562017237779965, - "totBuyQty": 3875, - "totSellQty": 4925, - "bidQty": 50, - "bidPrice": 1436.65, - "askQty": 300, - "askPrice": 1472.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22700.00", - "oi": 17110, - "oiChg": 7, - "oiPctChg": 0.04092849207741332, - "totTradedVol": 22034, - "iv": 16.79, - "ltp": 51.75, - "change": 20.85, - "pChange": 67.47572815533981, - "totBuyQty": 41800, - "totSellQty": 5125, - "bidQty": 850, - "bidPrice": 51.5, - "askQty": 75, - "askPrice": 51.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22750.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3850, - "totSellQty": 3750, - "bidQty": 250, - "bidPrice": 1371, - "askQty": 25, - "askPrice": 1451.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22750.00", - "oi": 1352, - "oiChg": 243, - "oiPctChg": 21.911632100991884, - "totTradedVol": 2201, - "iv": 16.74, - "ltp": 54.7, - "change": 21.950000000000003, - "pChange": 67.02290076335878, - "totBuyQty": 40750, - "totSellQty": 200, - "bidQty": 25, - "bidPrice": 54.5, - "askQty": 25, - "askPrice": 57.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22800.00", - "oi": 268, - "oiChg": 3, - "oiPctChg": 1.1320754716981132, - "totTradedVol": 24, - "iv": 17.58, - "ltp": 1383, - "change": -271.45000000000005, - "pChange": -16.407265254314122, - "totBuyQty": 4825, - "totSellQty": 4875, - "bidQty": 50, - "bidPrice": 1346.3, - "askQty": 25, - "askPrice": 1369.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22800.00", - "oi": 32223, - "oiChg": 7353, - "oiPctChg": 29.56574185765983, - "totTradedVol": 55027, - "iv": 16.73, - "ltp": 60.7, - "change": 26.35, - "pChange": 76.7103347889374, - "totBuyQty": 49825, - "totSellQty": 15250, - "bidQty": 525, - "bidPrice": 60.05, - "askQty": 225, - "askPrice": 60.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22850.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4550, - "totSellQty": 3925, - "bidQty": 25, - "bidPrice": 1295.6, - "askQty": 200, - "askPrice": 1346.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22850.00", - "oi": 1219, - "oiChg": 91, - "oiPctChg": 8.067375886524824, - "totTradedVol": 2118, - "iv": 16.39, - "ltp": 63.1, - "change": 26.050000000000004, - "pChange": 70.31039136302296, - "totBuyQty": 43125, - "totSellQty": 3900, - "bidQty": 500, - "bidPrice": 63.95, - "askQty": 50, - "askPrice": 64.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22900.00", - "oi": 188, - "oiChg": 2, - "oiPctChg": 1.075268817204301, - "totTradedVol": 51, - "iv": 12.41, - "ltp": 1237.4, - "change": -344.5999999999999, - "pChange": -21.782553729456378, - "totBuyQty": 5000, - "totSellQty": 4975, - "bidQty": 125, - "bidPrice": 1258.3, - "askQty": 125, - "askPrice": 1287.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22900.00", - "oi": 23452, - "oiChg": 2341, - "oiPctChg": 11.089005731609113, - "totTradedVol": 35957, - "iv": 16.29, - "ltp": 69.25, - "change": 29.75, - "pChange": 75.31645569620254, - "totBuyQty": 48700, - "totSellQty": 15600, - "bidQty": 100, - "bidPrice": 69.15, - "askQty": 525, - "askPrice": 69.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE22950.00", - "oi": 377, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3975, - "bidQty": 25, - "bidPrice": 1211.3, - "askQty": 25, - "askPrice": 1252.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE22950.00", - "oi": 995, - "oiChg": 363, - "oiPctChg": 57.436708860759495, - "totTradedVol": 2131, - "iv": 16.11, - "ltp": 75.1, - "change": 33.099999999999994, - "pChange": 78.8095238095238, - "totBuyQty": 42625, - "totSellQty": 2550, - "bidQty": 500, - "bidPrice": 73.8, - "askQty": 500, - "askPrice": 74.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23000.00", - "oi": 44542, - "oiChg": 5382, - "oiPctChg": 13.74361593462717, - "totTradedVol": 14408, - "iv": 16.68, - "ltp": 1179.65, - "change": -294.64999999999986, - "pChange": -19.985755951977204, - "totBuyQty": 13600, - "totSellQty": 78450, - "bidQty": 25, - "bidPrice": 1179.65, - "askQty": 675, - "askPrice": 1179.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23000.00", - "oi": 180410, - "oiChg": -2365, - "oiPctChg": -1.2939406373957052, - "totTradedVol": 190698, - "iv": 16.23, - "ltp": 80.2, - "change": 34.5, - "pChange": 75.49234135667395, - "totBuyQty": 109350, - "totSellQty": 90425, - "bidQty": 500, - "bidPrice": 80.1, - "askQty": 25, - "askPrice": 80.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23050.00", - "oi": 476, - "oiChg": -1, - "oiPctChg": -0.20964360587002095, - "totTradedVol": 4, - "iv": 14.69, - "ltp": 1128.7, - "change": -222.5999999999999, - "pChange": -16.473025974987042, - "totBuyQty": 4950, - "totSellQty": 4050, - "bidQty": 125, - "bidPrice": 1122.1, - "askQty": 25, - "askPrice": 1145.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23050.00", - "oi": 727, - "oiChg": 327, - "oiPctChg": 81.75, - "totTradedVol": 2157, - "iv": 15.96, - "ltp": 85.45, - "change": 37.300000000000004, - "pChange": 77.46625129802702, - "totBuyQty": 30800, - "totSellQty": 7475, - "bidQty": 500, - "bidPrice": 85, - "askQty": 500, - "askPrice": 85.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23100.00", - "oi": 521, - "oiChg": 1, - "oiPctChg": 0.19230769230769232, - "totTradedVol": 112, - "iv": 17.97, - "ltp": 1139.55, - "change": -244.54999999999995, - "pChange": -17.668521060617003, - "totBuyQty": 5775, - "totSellQty": 5325, - "bidQty": 100, - "bidPrice": 1087.55, - "askQty": 100, - "askPrice": 1098.35 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23100.00", - "oi": 12645, - "oiChg": 2825, - "oiPctChg": 28.767820773930755, - "totTradedVol": 25437, - "iv": 15.75, - "ltp": 91.4, - "change": 40.60000000000001, - "pChange": 79.9212598425197, - "totBuyQty": 34450, - "totSellQty": 11575, - "bidQty": 200, - "bidPrice": 91.15, - "askQty": 125, - "askPrice": 91.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23150.00", - "oi": 634, - "oiChg": 4, - "oiPctChg": 0.6349206349206349, - "totTradedVol": 5, - "iv": 14.79, - "ltp": 1045.75, - "change": -229.45000000000005, - "pChange": -17.99325595984944, - "totBuyQty": 3250, - "totSellQty": 4025, - "bidQty": 25, - "bidPrice": 1036.45, - "askQty": 25, - "askPrice": 1062.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23150.00", - "oi": 880, - "oiChg": 318, - "oiPctChg": 56.58362989323843, - "totTradedVol": 2566, - "iv": 15.63, - "ltp": 98.9, - "change": 44.35000000000001, - "pChange": 81.30155820348305, - "totBuyQty": 18850, - "totSellQty": 7950, - "bidQty": 50, - "bidPrice": 98.1, - "askQty": 1100, - "askPrice": 98.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23200.00", - "oi": 1976, - "oiChg": 8, - "oiPctChg": 0.4065040650406504, - "totTradedVol": 500, - "iv": 17.18, - "ltp": 1007.2, - "change": -289.54999999999995, - "pChange": -22.32889917100443, - "totBuyQty": 10475, - "totSellQty": 9725, - "bidQty": 50, - "bidPrice": 1006.55, - "askQty": 250, - "askPrice": 1012.35 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23200.00", - "oi": 26409, - "oiChg": 3861, - "oiPctChg": 17.123469930814263, - "totTradedVol": 48964, - "iv": 15.64, - "ltp": 106, - "change": 47.3, - "pChange": 80.57921635434411, - "totBuyQty": 37125, - "totSellQty": 20650, - "bidQty": 575, - "bidPrice": 105.3, - "askQty": 175, - "askPrice": 106 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23250.00", - "oi": 410, - "oiChg": 1, - "oiPctChg": 0.24449877750611246, - "totTradedVol": 7, - "iv": 16.3, - "ltp": 991.1, - "change": -274.6, - "pChange": -21.695504463933002, - "totBuyQty": 5150, - "totSellQty": 4425, - "bidQty": 125, - "bidPrice": 955.15, - "askQty": 125, - "askPrice": 976.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23250.00", - "oi": 3453, - "oiChg": 443, - "oiPctChg": 14.717607973421927, - "totTradedVol": 10516, - "iv": 15.34, - "ltp": 114.35, - "change": 51.74999999999999, - "pChange": 82.66773162939296, - "totBuyQty": 17425, - "totSellQty": 14275, - "bidQty": 600, - "bidPrice": 113.15, - "askQty": 900, - "askPrice": 114 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23300.00", - "oi": 2104, - "oiChg": 16, - "oiPctChg": 0.7662835249042146, - "totTradedVol": 665, - "iv": 16.31, - "ltp": 930, - "change": -270.6500000000001, - "pChange": -22.541956440261533, - "totBuyQty": 4800, - "totSellQty": 8250, - "bidQty": 25, - "bidPrice": 925.15, - "askQty": 25, - "askPrice": 929.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23300.00", - "oi": 31162, - "oiChg": 1322, - "oiPctChg": 4.43029490616622, - "totTradedVol": 46027, - "iv": 15.39, - "ltp": 122.75, - "change": 55.7, - "pChange": 83.07233407904549, - "totBuyQty": 30650, - "totSellQty": 19575, - "bidQty": 150, - "bidPrice": 122.75, - "askQty": 100, - "askPrice": 122.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23350.00", - "oi": 397, - "oiChg": -86, - "oiPctChg": -17.805383022774325, - "totTradedVol": 241, - "iv": 15.59, - "ltp": 900.35, - "change": -259.4999999999999, - "pChange": -22.37358279087812, - "totBuyQty": 2725, - "totSellQty": 4900, - "bidQty": 125, - "bidPrice": 875, - "askQty": 125, - "askPrice": 898.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23350.00", - "oi": 2456, - "oiChg": -1025, - "oiPctChg": -29.445561620224073, - "totTradedVol": 4622, - "iv": 15.11, - "ltp": 131.6, - "change": 59.05, - "pChange": 81.3921433494142, - "totBuyQty": 16325, - "totSellQty": 11750, - "bidQty": 775, - "bidPrice": 131.2, - "askQty": 25, - "askPrice": 132.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23400.00", - "oi": 3333, - "oiChg": 318, - "oiPctChg": 10.54726368159204, - "totTradedVol": 1412, - "iv": 16.04, - "ltp": 840, - "change": -273.95000000000005, - "pChange": -24.592665739036764, - "totBuyQty": 7375, - "totSellQty": 11025, - "bidQty": 50, - "bidPrice": 844.25, - "askQty": 50, - "askPrice": 848.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23400.00", - "oi": 19813, - "oiChg": 926, - "oiPctChg": 4.90284322549902, - "totTradedVol": 28981, - "iv": 15.17, - "ltp": 142.55, - "change": 64.55000000000001, - "pChange": 82.75641025641028, - "totBuyQty": 32775, - "totSellQty": 23525, - "bidQty": 600, - "bidPrice": 141.7, - "askQty": 25, - "askPrice": 142.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23450.00", - "oi": 695, - "oiChg": -4, - "oiPctChg": -0.5722460658082976, - "totTradedVol": 24, - "iv": 16.12, - "ltp": 836.8, - "change": -150.25, - "pChange": -15.222126538675854, - "totBuyQty": 2550, - "totSellQty": 5900, - "bidQty": 50, - "bidPrice": 801.7, - "askQty": 125, - "askPrice": 818.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23450.00", - "oi": 3596, - "oiChg": 2360, - "oiPctChg": 190.93851132686083, - "totTradedVol": 8064, - "iv": 14.88, - "ltp": 150.5, - "change": 65.9, - "pChange": 77.89598108747046, - "totBuyQty": 16075, - "totSellQty": 15800, - "bidQty": 1225, - "bidPrice": 151.45, - "askQty": 300, - "askPrice": 152.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23500.00", - "oi": 33637, - "oiChg": 1347, - "oiPctChg": 4.1715701455559, - "totTradedVol": 13708, - "iv": 15.33, - "ltp": 763.3, - "change": -264.10000000000014, - "pChange": -25.705664784893916, - "totBuyQty": 21975, - "totSellQty": 30550, - "bidQty": 25, - "bidPrice": 765.05, - "askQty": 100, - "askPrice": 767.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23500.00", - "oi": 147093, - "oiChg": 12398, - "oiPctChg": 9.20449905341698, - "totTradedVol": 182918, - "iv": 15.01, - "ltp": 165.05, - "change": 72.75000000000001, - "pChange": 78.819068255688, - "totBuyQty": 94775, - "totSellQty": 61750, - "bidQty": 100, - "bidPrice": 164.6, - "askQty": 400, - "askPrice": 165.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23550.00", - "oi": 1217, - "oiChg": -81, - "oiPctChg": -6.240369799691834, - "totTradedVol": 194, - "iv": 16.31, - "ltp": 731.5, - "change": -241.95000000000005, - "pChange": -24.854897529405726, - "totBuyQty": 1100, - "totSellQty": 8025, - "bidQty": 100, - "bidPrice": 725.5, - "askQty": 50, - "askPrice": 734.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23550.00", - "oi": 1481, - "oiChg": 319, - "oiPctChg": 27.452667814113596, - "totTradedVol": 3664, - "iv": 14.74, - "ltp": 174.2, - "change": 76.1, - "pChange": 77.57390417940877, - "totBuyQty": 13225, - "totSellQty": 13225, - "bidQty": 500, - "bidPrice": 174.7, - "askQty": 100, - "askPrice": 175.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23600.00", - "oi": 3631, - "oiChg": -160, - "oiPctChg": -4.220522289633342, - "totTradedVol": 2268, - "iv": 15.36, - "ltp": 696.3, - "change": -243.95000000000005, - "pChange": -25.94522733315608, - "totBuyQty": 8250, - "totSellQty": 12400, - "bidQty": 25, - "bidPrice": 689.2, - "askQty": 25, - "askPrice": 695.8 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23600.00", - "oi": 17548, - "oiChg": 1029, - "oiPctChg": 6.229190628972698, - "totTradedVol": 30595, - "iv": 14.75, - "ltp": 187.75, - "change": 81.9, - "pChange": 77.37364194615022, - "totBuyQty": 22075, - "totSellQty": 16625, - "bidQty": 100, - "bidPrice": 187.05, - "askQty": 25, - "askPrice": 187.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23650.00", - "oi": 872, - "oiChg": 61, - "oiPctChg": 7.52157829839704, - "totTradedVol": 301, - "iv": 15.61, - "ltp": 657, - "change": -271.95000000000005, - "pChange": -29.274987889552722, - "totBuyQty": 3750, - "totSellQty": 7925, - "bidQty": 25, - "bidPrice": 657.1, - "askQty": 25, - "askPrice": 659.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23650.00", - "oi": 2189, - "oiChg": 224, - "oiPctChg": 11.399491094147583, - "totTradedVol": 3193, - "iv": 14.45, - "ltp": 199.75, - "change": 85.8, - "pChange": 75.29618253620008, - "totBuyQty": 11600, - "totSellQty": 14050, - "bidQty": 275, - "bidPrice": 200.3, - "askQty": 200, - "askPrice": 202.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23700.00", - "oi": 9235, - "oiChg": 582, - "oiPctChg": 6.725990985785277, - "totTradedVol": 6084, - "iv": 14.79, - "ltp": 618.25, - "change": -239.95000000000005, - "pChange": -27.959683057562344, - "totBuyQty": 11125, - "totSellQty": 15625, - "bidQty": 25, - "bidPrice": 621.05, - "askQty": 25, - "askPrice": 623.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23700.00", - "oi": 33521, - "oiChg": 1175, - "oiPctChg": 3.6325975391083904, - "totTradedVol": 39665, - "iv": 14.53, - "ltp": 218.85, - "change": 95.05, - "pChange": 76.77705977382875, - "totBuyQty": 27375, - "totSellQty": 33025, - "bidQty": 25, - "bidPrice": 216.35, - "askQty": 50, - "askPrice": 217.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23750.00", - "oi": 884, - "oiChg": 160, - "oiPctChg": 22.099447513812155, - "totTradedVol": 706, - "iv": 14.94, - "ltp": 590, - "change": -231.04999999999995, - "pChange": -28.14079532306193, - "totBuyQty": 6950, - "totSellQty": 9900, - "bidQty": 25, - "bidPrice": 587.65, - "askQty": 400, - "askPrice": 590 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23750.00", - "oi": 2036, - "oiChg": 426, - "oiPctChg": 26.459627329192546, - "totTradedVol": 4620, - "iv": 14.16, - "ltp": 229.8, - "change": 98.70000000000002, - "pChange": 75.28604118993137, - "totBuyQty": 13000, - "totSellQty": 13675, - "bidQty": 100, - "bidPrice": 229.95, - "askQty": 25, - "askPrice": 231.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23800.00", - "oi": 11189, - "oiChg": 1089, - "oiPctChg": 10.782178217821782, - "totTradedVol": 11165, - "iv": 14.59, - "ltp": 555.25, - "change": -222, - "pChange": -28.56223866194918, - "totBuyQty": 12375, - "totSellQty": 17550, - "bidQty": 50, - "bidPrice": 554.4, - "askQty": 50, - "askPrice": 556.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23800.00", - "oi": 43427, - "oiChg": 2796, - "oiPctChg": 6.881445201939406, - "totTradedVol": 68714, - "iv": 14.37, - "ltp": 249.8, - "change": 107.35000000000002, - "pChange": 75.35977535977538, - "totBuyQty": 39525, - "totSellQty": 34500, - "bidQty": 75, - "bidPrice": 247.85, - "askQty": 150, - "askPrice": 247.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23850.00", - "oi": 1013, - "oiChg": 324, - "oiPctChg": 47.02467343976778, - "totTradedVol": 1611, - "iv": 14.4, - "ltp": 522.6, - "change": -218, - "pChange": -29.435592762624896, - "totBuyQty": 9325, - "totSellQty": 10475, - "bidQty": 450, - "bidPrice": 520.9, - "askQty": 450, - "askPrice": 522.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23850.00", - "oi": 1902, - "oiChg": 460, - "oiPctChg": 31.9001386962552, - "totTradedVol": 4392, - "iv": 13.8, - "ltp": 262.75, - "change": 112.15, - "pChange": 74.46879150066403, - "totBuyQty": 15850, - "totSellQty": 13775, - "bidQty": 150, - "bidPrice": 263.05, - "askQty": 100, - "askPrice": 264.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23900.00", - "oi": 9143, - "oiChg": 2048, - "oiPctChg": 28.86539816772375, - "totTradedVol": 15202, - "iv": 14.36, - "ltp": 491.5, - "change": -205.75, - "pChange": -29.508784510577268, - "totBuyQty": 29375, - "totSellQty": 20975, - "bidQty": 500, - "bidPrice": 490.65, - "askQty": 500, - "askPrice": 492.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23900.00", - "oi": 20073, - "oiChg": 5205, - "oiPctChg": 35.00807102502018, - "totTradedVol": 49830, - "iv": 14.11, - "ltp": 282.85, - "change": 121.25000000000003, - "pChange": 75.03094059405943, - "totBuyQty": 28125, - "totSellQty": 31775, - "bidQty": 100, - "bidPrice": 282.05, - "askQty": 25, - "askPrice": 282.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE23950.00", - "oi": 1708, - "oiChg": 678, - "oiPctChg": 65.8252427184466, - "totTradedVol": 3427, - "iv": 14.53, - "ltp": 461.35, - "change": -203.75, - "pChange": -30.63449105397684, - "totBuyQty": 15025, - "totSellQty": 13150, - "bidQty": 500, - "bidPrice": 460.1, - "askQty": 500, - "askPrice": 461.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE23950.00", - "oi": 1678, - "oiChg": 487, - "oiPctChg": 40.890008396305625, - "totTradedVol": 6225, - "iv": 14.03, - "ltp": 302.2, - "change": 127.44999999999999, - "pChange": 72.93276108726752, - "totBuyQty": 14800, - "totSellQty": 15975, - "bidQty": 50, - "bidPrice": 301.2, - "askQty": 325, - "askPrice": 302.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24000.00", - "oi": 120541, - "oiChg": 18643, - "oiPctChg": 18.295746727119276, - "totTradedVol": 160235, - "iv": 14.24, - "ltp": 434.8, - "change": -192.95, - "pChange": -30.736758263639985, - "totBuyQty": 95725, - "totSellQty": 107950, - "bidQty": 25, - "bidPrice": 433.6, - "askQty": 50, - "askPrice": 434.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24000.00", - "oi": 202831, - "oiChg": 14142, - "oiPctChg": 7.49487251509097, - "totTradedVol": 305591, - "iv": 13.96, - "ltp": 322.3, - "change": 134, - "pChange": 71.16303770578864, - "totBuyQty": 216800, - "totSellQty": 96875, - "bidQty": 375, - "bidPrice": 322.3, - "askQty": 100, - "askPrice": 322.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24050.00", - "oi": 3009, - "oiChg": 2080, - "oiPctChg": 223.8966630785791, - "totTradedVol": 6557, - "iv": 14.18, - "ltp": 400.7, - "change": -191.00000000000006, - "pChange": -32.279871556532036, - "totBuyQty": 31450, - "totSellQty": 15425, - "bidQty": 100, - "bidPrice": 401.85, - "askQty": 25, - "askPrice": 402.85 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24050.00", - "oi": 2849, - "oiChg": 1363, - "oiPctChg": 91.72274562584118, - "totTradedVol": 8916, - "iv": 13.79, - "ltp": 345.05, - "change": 144.60000000000002, - "pChange": 72.13769019705664, - "totBuyQty": 20275, - "totSellQty": 16975, - "bidQty": 500, - "bidPrice": 343, - "askQty": 150, - "askPrice": 345.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24100.00", - "oi": 19448, - "oiChg": 9378, - "oiPctChg": 93.12810327706057, - "totTradedVol": 42520, - "iv": 14.01, - "ltp": 375.85, - "change": -180.60000000000002, - "pChange": -32.45574624853985, - "totBuyQty": 39325, - "totSellQty": 32900, - "bidQty": 25, - "bidPrice": 376.2, - "askQty": 200, - "askPrice": 377 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24100.00", - "oi": 19912, - "oiChg": 6612, - "oiPctChg": 49.714285714285715, - "totTradedVol": 56726, - "iv": 13.76, - "ltp": 364.85, - "change": 150.60000000000002, - "pChange": 70.291715285881, - "totBuyQty": 29925, - "totSellQty": 21875, - "bidQty": 525, - "bidPrice": 363.3, - "askQty": 100, - "askPrice": 365 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24150.00", - "oi": 2947, - "oiChg": 1762, - "oiPctChg": 148.69198312236287, - "totTradedVol": 5343, - "iv": 13.81, - "ltp": 348.1, - "change": -174.39999999999998, - "pChange": -33.377990430622006, - "totBuyQty": 47225, - "totSellQty": 13675, - "bidQty": 200, - "bidPrice": 349.5, - "askQty": 25, - "askPrice": 350.8 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24150.00", - "oi": 2380, - "oiChg": 670, - "oiPctChg": 39.1812865497076, - "totTradedVol": 7806, - "iv": 13.37, - "ltp": 387.9, - "change": 158.99999999999997, - "pChange": 69.46264744429881, - "totBuyQty": 15000, - "totSellQty": 15850, - "bidQty": 525, - "bidPrice": 387, - "askQty": 250, - "askPrice": 389.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24200.00", - "oi": 35474, - "oiChg": 13601, - "oiPctChg": 62.18168518264527, - "totTradedVol": 84141, - "iv": 13.79, - "ltp": 323.2, - "change": -166, - "pChange": -33.932951757972205, - "totBuyQty": 50225, - "totSellQty": 73750, - "bidQty": 200, - "bidPrice": 323.35, - "askQty": 125, - "askPrice": 324.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24200.00", - "oi": 35093, - "oiChg": 8635, - "oiPctChg": 32.63663164260337, - "totTradedVol": 99493, - "iv": 13.57, - "ltp": 411.9, - "change": 165.29999999999998, - "pChange": 67.03163017031629, - "totBuyQty": 41350, - "totSellQty": 30325, - "bidQty": 200, - "bidPrice": 411.5, - "askQty": 150, - "askPrice": 412.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24250.00", - "oi": 3531, - "oiChg": 1265, - "oiPctChg": 55.8252427184466, - "totTradedVol": 8152, - "iv": 13.62, - "ltp": 301, - "change": -154.89999999999998, - "pChange": -33.97674928712436, - "totBuyQty": 33250, - "totSellQty": 23775, - "bidQty": 325, - "bidPrice": 300, - "askQty": 200, - "askPrice": 301.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24250.00", - "oi": 3252, - "oiChg": 1038, - "oiPctChg": 46.883468834688344, - "totTradedVol": 9561, - "iv": 13.17, - "ltp": 437.8, - "change": 174.35000000000002, - "pChange": 66.17954070981213, - "totBuyQty": 13100, - "totSellQty": 14875, - "bidQty": 25, - "bidPrice": 438, - "askQty": 400, - "askPrice": 439.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24300.00", - "oi": 35413, - "oiChg": 12334, - "oiPctChg": 53.442523506217775, - "totTradedVol": 95572, - "iv": 13.58, - "ltp": 276.55, - "change": -148.59999999999997, - "pChange": -34.95236975185228, - "totBuyQty": 47075, - "totSellQty": 59525, - "bidQty": 300, - "bidPrice": 277, - "askQty": 500, - "askPrice": 278.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24300.00", - "oi": 30900, - "oiChg": 4628, - "oiPctChg": 17.615712545676004, - "totTradedVol": 94786, - "iv": 13.42, - "ltp": 465.95, - "change": 182.95, - "pChange": 64.64664310954063, - "totBuyQty": 25450, - "totSellQty": 21800, - "bidQty": 450, - "bidPrice": 464, - "askQty": 75, - "askPrice": 465.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24350.00", - "oi": 3030, - "oiChg": 987, - "oiPctChg": 48.311306901615275, - "totTradedVol": 8971, - "iv": 13.75, - "ltp": 253.15, - "change": -142.24999999999997, - "pChange": -35.976226605968634, - "totBuyQty": 32400, - "totSellQty": 17150, - "bidQty": 450, - "bidPrice": 253.55, - "askQty": 25, - "askPrice": 254.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24350.00", - "oi": 2317, - "oiChg": 72, - "oiPctChg": 3.2071269487750556, - "totTradedVol": 7297, - "iv": 13, - "ltp": 496, - "change": 194.8, - "pChange": 64.67463479415672, - "totBuyQty": 8725, - "totSellQty": 12300, - "bidQty": 75, - "bidPrice": 493.1, - "askQty": 25, - "askPrice": 495.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24400.00", - "oi": 25522, - "oiChg": 3906, - "oiPctChg": 18.069948186528496, - "totTradedVol": 55925, - "iv": 13.41, - "ltp": 233.6, - "change": -134.75000000000003, - "pChange": -36.58205511062849, - "totBuyQty": 41850, - "totSellQty": 48225, - "bidQty": 250, - "bidPrice": 233.95, - "askQty": 150, - "askPrice": 235.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24400.00", - "oi": 23621, - "oiChg": -120, - "oiPctChg": -0.5054546986226359, - "totTradedVol": 46494, - "iv": 13.21, - "ltp": 526.85, - "change": 201.85000000000002, - "pChange": 62.10769230769232, - "totBuyQty": 15575, - "totSellQty": 21625, - "bidQty": 225, - "bidPrice": 524.2, - "askQty": 225, - "askPrice": 525.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24450.00", - "oi": 3879, - "oiChg": 619, - "oiPctChg": 18.987730061349694, - "totTradedVol": 8218, - "iv": 13.41, - "ltp": 214.7, - "change": -124.90000000000003, - "pChange": -36.77856301531214, - "totBuyQty": 33525, - "totSellQty": 20050, - "bidQty": 50, - "bidPrice": 215.25, - "askQty": 200, - "askPrice": 216.85 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24450.00", - "oi": 2188, - "oiChg": -383, - "oiPctChg": -14.896927265655387, - "totTradedVol": 6435, - "iv": 12.4, - "ltp": 548.85, - "change": 204.75, - "pChange": 59.5030514385353, - "totBuyQty": 8125, - "totSellQty": 10475, - "bidQty": 125, - "bidPrice": 550.35, - "askQty": 125, - "askPrice": 552.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24500.00", - "oi": 145758, - "oiChg": 57110, - "oiPctChg": 64.42333724393106, - "totTradedVol": 264770, - "iv": 13.33, - "ltp": 199.15, - "change": -114.70000000000002, - "pChange": -36.546120758324044, - "totBuyQty": 99675, - "totSellQty": 167250, - "bidQty": 1800, - "bidPrice": 199.05, - "askQty": 175, - "askPrice": 199.35 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24500.00", - "oi": 141439, - "oiChg": 38040, - "oiPctChg": 36.78952407663517, - "totTradedVol": 181171, - "iv": 13.03, - "ltp": 586.5, - "change": 215.60000000000002, - "pChange": 58.12887570773795, - "totBuyQty": 34075, - "totSellQty": 28000, - "bidQty": 275, - "bidPrice": 584, - "askQty": 400, - "askPrice": 585.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24550.00", - "oi": 2775, - "oiChg": 445, - "oiPctChg": 19.098712446351932, - "totTradedVol": 7247, - "iv": 13.43, - "ltp": 179.9, - "change": -108.24999999999997, - "pChange": -37.56723928509456, - "totBuyQty": 31450, - "totSellQty": 17525, - "bidQty": 700, - "bidPrice": 178.95, - "askQty": 1550, - "askPrice": 180.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24550.00", - "oi": 1048, - "oiChg": 16, - "oiPctChg": 1.550387596899225, - "totTradedVol": 1998, - "iv": 12.48, - "ltp": 605.95, - "change": 212.80000000000007, - "pChange": 54.12692356606895, - "totBuyQty": 5425, - "totSellQty": 6300, - "bidQty": 25, - "bidPrice": 615.05, - "askQty": 25, - "askPrice": 617.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24600.00", - "oi": 18161, - "oiChg": 2022, - "oiPctChg": 12.528657289794907, - "totTradedVol": 39761, - "iv": 13.17, - "ltp": 164.1, - "change": -99.15, - "pChange": -37.66381766381767, - "totBuyQty": 57575, - "totSellQty": 30475, - "bidQty": 50, - "bidPrice": 163.85, - "askQty": 225, - "askPrice": 164.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24600.00", - "oi": 22828, - "oiChg": 823, - "oiPctChg": 3.7400590774823903, - "totTradedVol": 16687, - "iv": 13.03, - "ltp": 651, - "change": 230.64999999999998, - "pChange": 54.87094088259783, - "totBuyQty": 15625, - "totSellQty": 15450, - "bidQty": 25, - "bidPrice": 650.5, - "askQty": 125, - "askPrice": 652.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24650.00", - "oi": 2242, - "oiChg": 199, - "oiPctChg": 9.740577581987274, - "totTradedVol": 7618, - "iv": 13.3, - "ltp": 149.65, - "change": -91.25, - "pChange": -37.878787878787875, - "totBuyQty": 28775, - "totSellQty": 10800, - "bidQty": 625, - "bidPrice": 148.1, - "askQty": 600, - "askPrice": 149 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24650.00", - "oi": 1213, - "oiChg": 204, - "oiPctChg": 20.218037661050545, - "totTradedVol": 896, - "iv": 12.13, - "ltp": 683.7, - "change": 239.40000000000003, - "pChange": 53.88251181634032, - "totBuyQty": 5575, - "totSellQty": 5400, - "bidQty": 25, - "bidPrice": 681.1, - "askQty": 100, - "askPrice": 684.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24700.00", - "oi": 18636, - "oiChg": 2862, - "oiPctChg": 18.14378090528718, - "totTradedVol": 45943, - "iv": 13.08, - "ltp": 134.5, - "change": -84.44999999999999, - "pChange": -38.570449874400545, - "totBuyQty": 39650, - "totSellQty": 22075, - "bidQty": 125, - "bidPrice": 134.6, - "askQty": 400, - "askPrice": 135.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24700.00", - "oi": 4483, - "oiChg": 520, - "oiPctChg": 13.121372697451426, - "totTradedVol": 6076, - "iv": 12.15, - "ltp": 713.25, - "change": 239.89999999999998, - "pChange": 50.68131403823808, - "totBuyQty": 11375, - "totSellQty": 9600, - "bidQty": 25, - "bidPrice": 717.3, - "askQty": 25, - "askPrice": 719.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24750.00", - "oi": 2971, - "oiChg": 305, - "oiPctChg": 11.440360090022505, - "totTradedVol": 7477, - "iv": 13.13, - "ltp": 124.2, - "change": -75.45, - "pChange": -37.79113448534936, - "totBuyQty": 32925, - "totSellQty": 12550, - "bidQty": 25, - "bidPrice": 121.55, - "askQty": 400, - "askPrice": 122.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24750.00", - "oi": 1018, - "oiChg": 179, - "oiPctChg": 21.33492252681764, - "totTradedVol": 708, - "iv": 11.84, - "ltp": 720, - "change": 216.45, - "pChange": 42.98480786416443, - "totBuyQty": 7025, - "totSellQty": 2675, - "bidQty": 50, - "bidPrice": 749.65, - "askQty": 25, - "askPrice": 757.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24800.00", - "oi": 28943, - "oiChg": 5594, - "oiPctChg": 23.95819949462504, - "totTradedVol": 54670, - "iv": 12.99, - "ltp": 111.1, - "change": -69.30000000000001, - "pChange": -38.41463414634147, - "totBuyQty": 42650, - "totSellQty": 37850, - "bidQty": 225, - "bidPrice": 110.25, - "askQty": 175, - "askPrice": 110.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24800.00", - "oi": 32353, - "oiChg": 19793, - "oiPctChg": 157.5875796178344, - "totTradedVol": 27472, - "iv": 12.4, - "ltp": 796.1, - "change": 260.9, - "pChange": 48.74813153961135, - "totBuyQty": 13525, - "totSellQty": 11025, - "bidQty": 175, - "bidPrice": 795.55, - "askQty": 150, - "askPrice": 799.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24850.00", - "oi": 1953, - "oiChg": 1016, - "oiPctChg": 108.43116328708645, - "totTradedVol": 5822, - "iv": 13.02, - "ltp": 99.9, - "change": -63.599999999999994, - "pChange": -38.89908256880734, - "totBuyQty": 33700, - "totSellQty": 11350, - "bidQty": 600, - "bidPrice": 100, - "askQty": 125, - "askPrice": 100.7 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24850.00", - "oi": 378, - "oiChg": -11, - "oiPctChg": -2.827763496143959, - "totTradedVol": 105, - "iv": 12, - "ltp": 802.6, - "change": 244.70000000000005, - "pChange": 43.86090697257574, - "totBuyQty": 5950, - "totSellQty": 5200, - "bidQty": 50, - "bidPrice": 819, - "askQty": 100, - "askPrice": 840.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24900.00", - "oi": 14945, - "oiChg": 2154, - "oiPctChg": 16.839965600813073, - "totTradedVol": 34562, - "iv": 12.97, - "ltp": 89.9, - "change": -57.29999999999998, - "pChange": -38.9266304347826, - "totBuyQty": 36025, - "totSellQty": 16725, - "bidQty": 100, - "bidPrice": 89.7, - "askQty": 225, - "askPrice": 90.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24900.00", - "oi": 2272, - "oiChg": 88, - "oiPctChg": 4.029304029304029, - "totTradedVol": 1648, - "iv": 11.93, - "ltp": 869.4, - "change": 271.35, - "pChange": 45.372460496614, - "totBuyQty": 12750, - "totSellQty": 12375, - "bidQty": 25, - "bidPrice": 868.6, - "askQty": 25, - "askPrice": 873.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE24950.00", - "oi": 2190, - "oiChg": 753, - "oiPctChg": 52.40083507306889, - "totTradedVol": 6291, - "iv": 12.95, - "ltp": 80.85, - "change": -53, - "pChange": -39.596563317146064, - "totBuyQty": 26025, - "totSellQty": 10200, - "bidQty": 375, - "bidPrice": 81.55, - "askQty": 500, - "askPrice": 82.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE24950.00", - "oi": 340, - "oiChg": -64, - "oiPctChg": -15.841584158415841, - "totTradedVol": 170, - "iv": 12.22, - "ltp": 887.45, - "change": 249.55000000000007, - "pChange": 39.12055181062864, - "totBuyQty": 7075, - "totSellQty": 4600, - "bidQty": 250, - "bidPrice": 907.85, - "askQty": 100, - "askPrice": 914.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25000.00", - "oi": 165184, - "oiChg": 24270, - "oiPctChg": 17.22327093120627, - "totTradedVol": 249370, - "iv": 12.9, - "ltp": 71.7, - "change": -49.3, - "pChange": -40.74380165289256, - "totBuyQty": 107400, - "totSellQty": 241975, - "bidQty": 400, - "bidPrice": 72.3, - "askQty": 525, - "askPrice": 72.6 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25000.00", - "oi": 86950, - "oiChg": 1091, - "oiPctChg": 1.2706879884461735, - "totTradedVol": 40488, - "iv": 12.21, - "ltp": 955, - "change": 284.25, - "pChange": 42.377935147223255, - "totBuyQty": 33350, - "totSellQty": 23525, - "bidQty": 200, - "bidPrice": 953.3, - "askQty": 50, - "askPrice": 956.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25050.00", - "oi": 3601, - "oiChg": 412, - "oiPctChg": 12.919410473502666, - "totTradedVol": 18352, - "iv": 12.9, - "ltp": 64.65, - "change": -42.599999999999994, - "pChange": -39.72027972027972, - "totBuyQty": 32850, - "totSellQty": 12450, - "bidQty": 425, - "bidPrice": 64.55, - "askQty": 550, - "askPrice": 64.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25050.00", - "oi": 174, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5250, - "totSellQty": 2700, - "bidQty": 25, - "bidPrice": 976.05, - "askQty": 25, - "askPrice": 1013.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25100.00", - "oi": 14030, - "oiChg": 1350, - "oiPctChg": 10.646687697160884, - "totTradedVol": 56083, - "iv": 12.85, - "ltp": 57.8, - "change": -37.85000000000001, - "pChange": -39.5713538944067, - "totBuyQty": 35425, - "totSellQty": 19925, - "bidQty": 175, - "bidPrice": 57.65, - "askQty": 25, - "askPrice": 57.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25100.00", - "oi": 1546, - "oiChg": 30, - "oiPctChg": 1.9788918205804749, - "totTradedVol": 932, - "iv": 7.29, - "ltp": 1019, - "change": 276.54999999999995, - "pChange": 37.24829954879116, - "totBuyQty": 6575, - "totSellQty": 6725, - "bidQty": 25, - "bidPrice": 1029.55, - "askQty": 100, - "askPrice": 1043.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25150.00", - "oi": 1968, - "oiChg": 620, - "oiPctChg": 45.99406528189911, - "totTradedVol": 5130, - "iv": 13.03, - "ltp": 51.95, - "change": -33.45, - "pChange": -39.168618266978925, - "totBuyQty": 19375, - "totSellQty": 4125, - "bidQty": 25, - "bidPrice": 51.85, - "askQty": 450, - "askPrice": 52.2 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25150.00", - "oi": 270, - "oiChg": 1, - "oiPctChg": 0.37174721189591076, - "totTradedVol": 10, - "iv": 10.25, - "ltp": 1040, - "change": 259, - "pChange": 33.162612035851474, - "totBuyQty": 5875, - "totSellQty": 4700, - "bidQty": 250, - "bidPrice": 1061.25, - "askQty": 400, - "askPrice": 1097.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25200.00", - "oi": 33421, - "oiChg": 3863, - "oiPctChg": 13.069219838960688, - "totTradedVol": 56592, - "iv": 13.04, - "ltp": 47.3, - "change": -28.950000000000003, - "pChange": -37.9672131147541, - "totBuyQty": 37400, - "totSellQty": 35350, - "bidQty": 100, - "bidPrice": 47.3, - "askQty": 175, - "askPrice": 47.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25200.00", - "oi": 1911, - "oiChg": 350, - "oiPctChg": 22.42152466367713, - "totTradedVol": 1234, - "iv": 11.85, - "ltp": 1120, - "change": 289.45000000000005, - "pChange": 34.85040033712601, - "totBuyQty": 8900, - "totSellQty": 7675, - "bidQty": 25, - "bidPrice": 1114.5, - "askQty": 250, - "askPrice": 1120.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25250.00", - "oi": 2043, - "oiChg": 785, - "oiPctChg": 62.40063593004769, - "totTradedVol": 5825, - "iv": 12.96, - "ltp": 40.85, - "change": -26.15, - "pChange": -39.02985074626866, - "totBuyQty": 26475, - "totSellQty": 8925, - "bidQty": 150, - "bidPrice": 40.25, - "askQty": 50, - "askPrice": 40.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25250.00", - "oi": 346, - "oiChg": 10, - "oiPctChg": 2.9761904761904763, - "totTradedVol": 39, - "iv": 9.63, - "ltp": 1150.7, - "change": 295.30000000000007, - "pChange": 34.52186111760581, - "totBuyQty": 5350, - "totSellQty": 4200, - "bidQty": 25, - "bidPrice": 1157.95, - "askQty": 250, - "askPrice": 1169.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25300.00", - "oi": 13849, - "oiChg": 3317, - "oiPctChg": 31.494492973794152, - "totTradedVol": 49169, - "iv": 12.94, - "ltp": 36.9, - "change": -22.550000000000004, - "pChange": -37.931034482758626, - "totBuyQty": 41825, - "totSellQty": 16400, - "bidQty": 1200, - "bidPrice": 36.75, - "askQty": 100, - "askPrice": 36.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25300.00", - "oi": 1205, - "oiChg": 482, - "oiPctChg": 66.66666666666667, - "totTradedVol": 628, - "iv": 0, - "ltp": 1217.95, - "change": 318, - "pChange": 35.335296405355855, - "totBuyQty": 8300, - "totSellQty": 6075, - "bidQty": 25, - "bidPrice": 1203.2, - "askQty": 250, - "askPrice": 1211.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25350.00", - "oi": 2562, - "oiChg": 393, - "oiPctChg": 18.118948824343015, - "totTradedVol": 8609, - "iv": 13, - "ltp": 32.2, - "change": -20.15, - "pChange": -38.4909264565425, - "totBuyQty": 41425, - "totSellQty": 7750, - "bidQty": 625, - "bidPrice": 31.95, - "askQty": 25, - "askPrice": 32.2 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25350.00", - "oi": 154, - "oiChg": -22, - "oiPctChg": -12.5, - "totTradedVol": 62, - "iv": 0, - "ltp": 1120.65, - "change": 192.95000000000005, - "pChange": 20.7987495957745, - "totBuyQty": 4775, - "totSellQty": 4100, - "bidQty": 125, - "bidPrice": 1245.8, - "askQty": 150, - "askPrice": 1284.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25400.00", - "oi": 13785, - "oiChg": 3634, - "oiPctChg": 35.799428627721404, - "totTradedVol": 39734, - "iv": 12.93, - "ltp": 28.55, - "change": -16.900000000000002, - "pChange": -37.18371837183719, - "totBuyQty": 56050, - "totSellQty": 22325, - "bidQty": 475, - "bidPrice": 28.45, - "askQty": 175, - "askPrice": 28.6 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25400.00", - "oi": 1125, - "oiChg": 312, - "oiPctChg": 38.37638376383764, - "totTradedVol": 404, - "iv": 0, - "ltp": 1270, - "change": 277.65, - "pChange": 27.97903965334811, - "totBuyQty": 7950, - "totSellQty": 4425, - "bidQty": 100, - "bidPrice": 1296.35, - "askQty": 250, - "askPrice": 1308.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25450.00", - "oi": 704, - "oiChg": 245, - "oiPctChg": 53.37690631808279, - "totTradedVol": 4134, - "iv": 12.93, - "ltp": 25.9, - "change": -13.399999999999999, - "pChange": -34.096692111959285, - "totBuyQty": 47925, - "totSellQty": 7550, - "bidQty": 350, - "bidPrice": 25.9, - "askQty": 800, - "askPrice": 26.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25450.00", - "oi": 568, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4575, - "totSellQty": 3100, - "bidQty": 225, - "bidPrice": 1308.55, - "askQty": 25, - "askPrice": 1371.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25500.00", - "oi": 77163, - "oiChg": 16545, - "oiPctChg": 27.29387310699792, - "totTradedVol": 123703, - "iv": 13.06, - "ltp": 23.45, - "change": -11.650000000000002, - "pChange": -33.1908831908832, - "totBuyQty": 110675, - "totSellQty": 122400, - "bidQty": 25, - "bidPrice": 23.45, - "askQty": 650, - "askPrice": 23.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25500.00", - "oi": 30375, - "oiChg": 9273, - "oiPctChg": 43.943702018766, - "totTradedVol": 13270, - "iv": 0, - "ltp": 1393.25, - "change": 315.5, - "pChange": 29.27395035954535, - "totBuyQty": 21225, - "totSellQty": 13525, - "bidQty": 100, - "bidPrice": 1393.8, - "askQty": 25, - "askPrice": 1399.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25550.00", - "oi": 1757, - "oiChg": 318, - "oiPctChg": 22.098679638637943, - "totTradedVol": 6256, - "iv": 12.99, - "ltp": 21, - "change": -9.8, - "pChange": -31.818181818181817, - "totBuyQty": 45900, - "totSellQty": 8450, - "bidQty": 25, - "bidPrice": 20.7, - "askQty": 450, - "askPrice": 21 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25550.00", - "oi": 109, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4550, - "totSellQty": 4075, - "bidQty": 25, - "bidPrice": 1415.95, - "askQty": 150, - "askPrice": 1461.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25600.00", - "oi": 25492, - "oiChg": 8603, - "oiPctChg": 50.938480667890346, - "totTradedVol": 41598, - "iv": 13, - "ltp": 18.35, - "change": -8.349999999999998, - "pChange": -31.273408239700366, - "totBuyQty": 110125, - "totSellQty": 12900, - "bidQty": 125, - "bidPrice": 18, - "askQty": 350, - "askPrice": 18.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25600.00", - "oi": 1508, - "oiChg": 135, - "oiPctChg": 9.832483612527312, - "totTradedVol": 313, - "iv": 15.51, - "ltp": 1505, - "change": 350, - "pChange": 30.303030303030305, - "totBuyQty": 6300, - "totSellQty": 4675, - "bidQty": 125, - "bidPrice": 1480.1, - "askQty": 150, - "askPrice": 1505 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25650.00", - "oi": 1006, - "oiChg": 57, - "oiPctChg": 6.006322444678609, - "totTradedVol": 2753, - "iv": 13.2, - "ltp": 17, - "change": -7.25, - "pChange": -29.896907216494846, - "totBuyQty": 42625, - "totSellQty": 2975, - "bidQty": 50, - "bidPrice": 16.75, - "askQty": 25, - "askPrice": 17.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25650.00", - "oi": 277, - "oiChg": 193, - "oiPctChg": 229.76190476190476, - "totTradedVol": 271, - "iv": 0, - "ltp": 1477.15, - "change": 319.1500000000001, - "pChange": 27.560449050086365, - "totBuyQty": 4775, - "totSellQty": 3950, - "bidQty": 250, - "bidPrice": 1515.95, - "askQty": 25, - "askPrice": 1568.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25700.00", - "oi": 16533, - "oiChg": 259, - "oiPctChg": 1.591495637212732, - "totTradedVol": 42030, - "iv": 13.19, - "ltp": 15.2, - "change": -5.400000000000002, - "pChange": -26.21359223300972, - "totBuyQty": 43375, - "totSellQty": 13600, - "bidQty": 575, - "bidPrice": 14.95, - "askQty": 500, - "askPrice": 15.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25700.00", - "oi": 1420, - "oiChg": 426, - "oiPctChg": 42.857142857142854, - "totTradedVol": 488, - "iv": 0, - "ltp": 1575.15, - "change": 313.45000000000005, - "pChange": 24.843465166045814, - "totBuyQty": 8050, - "totSellQty": 4975, - "bidQty": 900, - "bidPrice": 1576.2, - "askQty": 25, - "askPrice": 1596.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25750.00", - "oi": 1212, - "oiChg": -53, - "oiPctChg": -4.189723320158103, - "totTradedVol": 4636, - "iv": 13.39, - "ltp": 14.4, - "change": -4.1, - "pChange": -22.16216216216216, - "totBuyQty": 36775, - "totSellQty": 15050, - "bidQty": 375, - "bidPrice": 14.2, - "askQty": 25, - "askPrice": 14.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25750.00", - "oi": 11, - "oiChg": 8, - "oiPctChg": 266.6666666666667, - "totTradedVol": 9, - "iv": 0, - "ltp": 1500, - "change": 185, - "pChange": 14.068441064638785, - "totBuyQty": 4575, - "totSellQty": 3900, - "bidQty": 25, - "bidPrice": 1613.7, - "askQty": 175, - "askPrice": 1669 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25800.00", - "oi": 16737, - "oiChg": 5628, - "oiPctChg": 50.661625708884685, - "totTradedVol": 35298, - "iv": 13.47, - "ltp": 13.15, - "change": -4.15, - "pChange": -23.988439306358384, - "totBuyQty": 68825, - "totSellQty": 12275, - "bidQty": 10600, - "bidPrice": 12.95, - "askQty": 300, - "askPrice": 13.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25800.00", - "oi": 1726, - "oiChg": 283, - "oiPctChg": 19.61191961191961, - "totTradedVol": 572, - "iv": 0, - "ltp": 1660, - "change": 308.79999999999995, - "pChange": 22.853759621077558, - "totBuyQty": 8025, - "totSellQty": 4000, - "bidQty": 25, - "bidPrice": 1681.65, - "askQty": 250, - "askPrice": 1694.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25850.00", - "oi": 969, - "oiChg": 82, - "oiPctChg": 9.244644870349493, - "totTradedVol": 4511, - "iv": 13.66, - "ltp": 12.3, - "change": -3.299999999999999, - "pChange": -21.15384615384615, - "totBuyQty": 40925, - "totSellQty": 7750, - "bidQty": 500, - "bidPrice": 12.25, - "askQty": 600, - "askPrice": 12.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25850.00", - "oi": 8, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4700, - "totSellQty": 2200, - "bidQty": 275, - "bidPrice": 1700.55, - "askQty": 250, - "askPrice": 1791.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25900.00", - "oi": 9793, - "oiChg": 5348, - "oiPctChg": 120.31496062992126, - "totTradedVol": 23512, - "iv": 13.68, - "ltp": 11.05, - "change": -3.5999999999999996, - "pChange": -24.57337883959044, - "totBuyQty": 50775, - "totSellQty": 13550, - "bidQty": 1150, - "bidPrice": 10.9, - "askQty": 525, - "askPrice": 11 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25900.00", - "oi": 536, - "oiChg": 216, - "oiPctChg": 67.5, - "totTradedVol": 295, - "iv": 0, - "ltp": 1730, - "change": 276.6500000000001, - "pChange": 19.035332163621984, - "totBuyQty": 6375, - "totSellQty": 5125, - "bidQty": 75, - "bidPrice": 1773.5, - "askQty": 100, - "askPrice": 1793.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE25950.00", - "oi": 797, - "oiChg": 395, - "oiPctChg": 98.2587064676617, - "totTradedVol": 4759, - "iv": 13.94, - "ltp": 10.85, - "change": -2.3499999999999996, - "pChange": -17.8030303030303, - "totBuyQty": 37450, - "totSellQty": 4375, - "bidQty": 675, - "bidPrice": 10.7, - "askQty": 750, - "askPrice": 10.85 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE25950.00", - "oi": 6, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3725, - "bidQty": 275, - "bidPrice": 1798, - "askQty": 25, - "askPrice": 1875.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26000.00", - "oi": 151892, - "oiChg": 11690, - "oiPctChg": 8.337969501148343, - "totTradedVol": 108042, - "iv": 14.22, - "ltp": 10.65, - "change": -2.799999999999999, - "pChange": -20.817843866170996, - "totBuyQty": 179400, - "totSellQty": 118300, - "bidQty": 3175, - "bidPrice": 10.65, - "askQty": 1625, - "askPrice": 10.7 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26000.00", - "oi": 61448, - "oiChg": 8878, - "oiPctChg": 16.887958911926955, - "totTradedVol": 13691, - "iv": 0, - "ltp": 1878.35, - "change": 327.29999999999995, - "pChange": 21.101834241320393, - "totBuyQty": 15900, - "totSellQty": 13450, - "bidQty": 100, - "bidPrice": 1875.35, - "askQty": 25, - "askPrice": 1878.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26050, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26050.00", - "oi": 1753, - "oiChg": 1354, - "oiPctChg": 339.3483709273183, - "totTradedVol": 4335, - "iv": 14.32, - "ltp": 9.8, - "change": -1.799999999999999, - "pChange": -15.517241379310336, - "totBuyQty": 36550, - "totSellQty": 7700, - "bidQty": 600, - "bidPrice": 9.8, - "askQty": 25, - "askPrice": 9.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26050.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 1950, - "bidQty": 250, - "bidPrice": 1870.4, - "askQty": 25, - "askPrice": 1959.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26100, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26100.00", - "oi": 4639, - "oiChg": 892, - "oiPctChg": 23.805711235655192, - "totTradedVol": 15684, - "iv": 14.42, - "ltp": 9, - "change": -1.8499999999999996, - "pChange": -17.05069124423963, - "totBuyQty": 49425, - "totSellQty": 20150, - "bidQty": 625, - "bidPrice": 9, - "askQty": 1600, - "askPrice": 9.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26100.00", - "oi": 1968, - "oiChg": 277, - "oiPctChg": 16.380839739798937, - "totTradedVol": 339, - "iv": 17.85, - "ltp": 1970, - "change": 332.8499999999999, - "pChange": 20.331063127996817, - "totBuyQty": 5475, - "totSellQty": 3650, - "bidQty": 25, - "bidPrice": 1964.55, - "askQty": 25, - "askPrice": 1984.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26150, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26150.00", - "oi": 481, - "oiChg": 58, - "oiPctChg": 13.711583924349881, - "totTradedVol": 456, - "iv": 14.58, - "ltp": 8.6, - "change": -1.8000000000000007, - "pChange": -17.307692307692314, - "totBuyQty": 37975, - "totSellQty": 4325, - "bidQty": 350, - "bidPrice": 8.5, - "askQty": 525, - "askPrice": 8.7 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26150.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4000, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 1964.05, - "askQty": 25, - "askPrice": 2057.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26200, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26200.00", - "oi": 10857, - "oiChg": 258, - "oiPctChg": 2.4341919048966885, - "totTradedVol": 16485, - "iv": 14.74, - "ltp": 7.95, - "change": -1.8500000000000005, - "pChange": -18.877551020408166, - "totBuyQty": 51525, - "totSellQty": 10825, - "bidQty": 450, - "bidPrice": 7.95, - "askQty": 400, - "askPrice": 8.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26200.00", - "oi": 2264, - "oiChg": 973, - "oiPctChg": 75.36793183578621, - "totTradedVol": 1064, - "iv": 19.84, - "ltp": 2075, - "change": 334.5, - "pChange": 19.21861534041942, - "totBuyQty": 4975, - "totSellQty": 3525, - "bidQty": 100, - "bidPrice": 2058.7, - "askQty": 25, - "askPrice": 2089.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26250, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26250.00", - "oi": 356, - "oiChg": -137, - "oiPctChg": -27.789046653144016, - "totTradedVol": 630, - "iv": 14.97, - "ltp": 7.95, - "change": -1.6499999999999995, - "pChange": -17.187499999999993, - "totBuyQty": 36375, - "totSellQty": 8925, - "bidQty": 350, - "bidPrice": 7.8, - "askQty": 525, - "askPrice": 8.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26250.00", - "oi": 55, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 1929.5, - "change": 415.5, - "pChange": 27.443857331571998, - "totBuyQty": 3975, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 2062.1, - "askQty": 25, - "askPrice": 2160.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26300, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26300.00", - "oi": 2430, - "oiChg": 102, - "oiPctChg": 4.381443298969073, - "totTradedVol": 5664, - "iv": 15.15, - "ltp": 7.5, - "change": -1.75, - "pChange": -18.91891891891892, - "totBuyQty": 36800, - "totSellQty": 9450, - "bidQty": 500, - "bidPrice": 7.4, - "askQty": 400, - "askPrice": 7.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26300.00", - "oi": 554, - "oiChg": 327, - "oiPctChg": 144.05286343612335, - "totTradedVol": 361, - "iv": 0, - "ltp": 2082.45, - "change": 242.44999999999982, - "pChange": 13.176630434782599, - "totBuyQty": 5125, - "totSellQty": 5700, - "bidQty": 950, - "bidPrice": 2153.2, - "askQty": 25, - "askPrice": 2192.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26350, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26350.00", - "oi": 345, - "oiChg": 88, - "oiPctChg": 34.24124513618677, - "totTradedVol": 268, - "iv": 15.61, - "ltp": 8.2, - "change": -0.7000000000000011, - "pChange": -7.865168539325855, - "totBuyQty": 35600, - "totSellQty": 4375, - "bidQty": 1200, - "bidPrice": 6.2, - "askQty": 350, - "askPrice": 9.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26350.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 1950, - "bidQty": 250, - "bidPrice": 2164.65, - "askQty": 25, - "askPrice": 2268.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26400, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26400.00", - "oi": 3105, - "oiChg": -65, - "oiPctChg": -2.050473186119874, - "totTradedVol": 3913, - "iv": 15.38, - "ltp": 6.5, - "change": -1.8499999999999996, - "pChange": -22.15568862275449, - "totBuyQty": 41225, - "totSellQty": 7975, - "bidQty": 350, - "bidPrice": 6.4, - "askQty": 925, - "askPrice": 6.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26400.00", - "oi": 56, - "oiChg": 20, - "oiPctChg": 55.55555555555556, - "totTradedVol": 200, - "iv": 0, - "ltp": 1885, - "change": -65, - "pChange": -3.3333333333333335, - "totBuyQty": 6100, - "totSellQty": 5150, - "bidQty": 750, - "bidPrice": 2233.3, - "askQty": 100, - "askPrice": 2331.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26450, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26450.00", - "oi": 381, - "oiChg": 66, - "oiPctChg": 20.952380952380953, - "totTradedVol": 522, - "iv": 15.67, - "ltp": 6.65, - "change": -1.549999999999999, - "pChange": -18.902439024390233, - "totBuyQty": 26400, - "totSellQty": 8550, - "bidQty": 600, - "bidPrice": 6.55, - "askQty": 125, - "askPrice": 6.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26450.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3975, - "totSellQty": 3725, - "bidQty": 250, - "bidPrice": 2261, - "askQty": 25, - "askPrice": 2370.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26500, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26500.00", - "oi": 34729, - "oiChg": 623, - "oiPctChg": 1.8266580660294376, - "totTradedVol": 24256, - "iv": 15.8, - "ltp": 6.1, - "change": -1.7000000000000002, - "pChange": -21.7948717948718, - "totBuyQty": 44900, - "totSellQty": 62275, - "bidQty": 1500, - "bidPrice": 6.05, - "askQty": 975, - "askPrice": 6.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26500.00", - "oi": 8809, - "oiChg": 1179, - "oiPctChg": 15.4521625163827, - "totTradedVol": 1518, - "iv": 0, - "ltp": 2365.8, - "change": 322.2000000000003, - "pChange": 15.766294773928378, - "totBuyQty": 8600, - "totSellQty": 10100, - "bidQty": 50, - "bidPrice": 2364.5, - "askQty": 125, - "askPrice": 2370.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26550, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26550.00", - "oi": 257, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 5, - "iv": 16.5, - "ltp": 7.5, - "change": -0.8499999999999996, - "pChange": -10.17964071856287, - "totBuyQty": 30100, - "totSellQty": 7700, - "bidQty": 750, - "bidPrice": 5.1, - "askQty": 400, - "askPrice": 8.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26550.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2359.4, - "askQty": 25, - "askPrice": 2473.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26600.00", - "oi": 2057, - "oiChg": -208, - "oiPctChg": -9.183222958057396, - "totTradedVol": 2250, - "iv": 16.25, - "ltp": 6, - "change": -1.75, - "pChange": -22.58064516129032, - "totBuyQty": 38950, - "totSellQty": 11025, - "bidQty": 350, - "bidPrice": 5.95, - "askQty": 475, - "askPrice": 6.05 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26600.00", - "oi": 899, - "oiChg": 56, - "oiPctChg": 6.6429418742586, - "totTradedVol": 89, - "iv": 0, - "ltp": 2325, - "change": 180, - "pChange": 8.391608391608392, - "totBuyQty": 4725, - "totSellQty": 4025, - "bidQty": 25, - "bidPrice": 2450.2, - "askQty": 25, - "askPrice": 2515.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26650.00", - "oi": 150, - "oiChg": -7, - "oiPctChg": -4.45859872611465, - "totTradedVol": 75, - "iv": 16.59, - "ltp": 6.05, - "change": -3.7, - "pChange": -37.948717948717956, - "totBuyQty": 24725, - "totSellQty": 9875, - "bidQty": 350, - "bidPrice": 6, - "askQty": 1550, - "askPrice": 6.25 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2457.85, - "askQty": 25, - "askPrice": 2548.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26700.00", - "oi": 2288, - "oiChg": -88, - "oiPctChg": -3.7037037037037037, - "totTradedVol": 1337, - "iv": 16.54, - "ltp": 5.3, - "change": -1.8500000000000005, - "pChange": -25.87412587412588, - "totBuyQty": 40625, - "totSellQty": 12825, - "bidQty": 1050, - "bidPrice": 5.2, - "askQty": 125, - "askPrice": 5.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26700.00", - "oi": 1245, - "oiChg": 21, - "oiPctChg": 1.7156862745098038, - "totTradedVol": 25, - "iv": 0, - "ltp": 2500.35, - "change": 158.04999999999973, - "pChange": 6.7476412073602745, - "totBuyQty": 5200, - "totSellQty": 3750, - "bidQty": 300, - "bidPrice": 2546.9, - "askQty": 25, - "askPrice": 2584.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26750.00", - "oi": 233, - "oiChg": -16, - "oiPctChg": -6.42570281124498, - "totTradedVol": 268, - "iv": 16.94, - "ltp": 5.75, - "change": -1.6500000000000004, - "pChange": -22.2972972972973, - "totBuyQty": 25575, - "totSellQty": 7825, - "bidQty": 350, - "bidPrice": 5.75, - "askQty": 525, - "askPrice": 6 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2556.35, - "askQty": 25, - "askPrice": 2652.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26800.00", - "oi": 932, - "oiChg": -7, - "oiPctChg": -0.7454739084132055, - "totTradedVol": 789, - "iv": 17.06, - "ltp": 5.4, - "change": -1.6999999999999993, - "pChange": -23.943661971830977, - "totBuyQty": 37650, - "totSellQty": 8325, - "bidQty": 275, - "bidPrice": 4.7, - "askQty": 475, - "askPrice": 5.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26800.00", - "oi": 84, - "oiChg": 82, - "oiPctChg": 4100, - "totTradedVol": 130, - "iv": 0, - "ltp": 2635, - "change": -491.8499999999999, - "pChange": -15.729887906359433, - "totBuyQty": 4075, - "totSellQty": 4125, - "bidQty": 125, - "bidPrice": 2649.85, - "askQty": 100, - "askPrice": 2691.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26850.00", - "oi": 134, - "oiChg": -49, - "oiPctChg": -26.775956284153004, - "totTradedVol": 312, - "iv": 17.38, - "ltp": 5.55, - "change": -1.2000000000000002, - "pChange": -17.777777777777782, - "totBuyQty": 22425, - "totSellQty": 6725, - "bidQty": 350, - "bidPrice": 5.6, - "askQty": 525, - "askPrice": 5.8 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2654.9, - "askQty": 25, - "askPrice": 2753.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26900.00", - "oi": 1769, - "oiChg": -4, - "oiPctChg": -0.22560631697687536, - "totTradedVol": 2238, - "iv": 17.4, - "ltp": 4.9, - "change": -1.3499999999999996, - "pChange": -21.599999999999994, - "totBuyQty": 54250, - "totSellQty": 15950, - "bidQty": 1475, - "bidPrice": 4.9, - "askQty": 2225, - "askPrice": 5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26900.00", - "oi": 1602, - "oiChg": 1, - "oiPctChg": 0.06246096189881324, - "totTradedVol": 2, - "iv": 0, - "ltp": 2685.8, - "change": 145.05000000000018, - "pChange": 5.708944209386999, - "totBuyQty": 3900, - "totSellQty": 3825, - "bidQty": 25, - "bidPrice": 2747.15, - "askQty": 25, - "askPrice": 2795.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE26950.00", - "oi": 139, - "oiChg": 51, - "oiPctChg": 57.95454545454545, - "totTradedVol": 233, - "iv": 17.92, - "ltp": 5.6, - "change": -1.4000000000000004, - "pChange": -20.000000000000004, - "totBuyQty": 29500, - "totSellQty": 7350, - "bidQty": 125, - "bidPrice": 4.7, - "askQty": 100, - "askPrice": 6.95 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE26950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2781.4, - "askQty": 25, - "askPrice": 2856.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27000.00", - "oi": 92787, - "oiChg": 3274, - "oiPctChg": 3.6575692916112743, - "totTradedVol": 21348, - "iv": 18.22, - "ltp": 5.55, - "change": -1.7999999999999998, - "pChange": -24.489795918367346, - "totBuyQty": 61175, - "totSellQty": 118125, - "bidQty": 3025, - "bidPrice": 5.55, - "askQty": 725, - "askPrice": 5.65 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27000.00", - "oi": 30832, - "oiChg": 2732, - "oiPctChg": 9.722419928825623, - "totTradedVol": 4979, - "iv": 0, - "ltp": 2874.35, - "change": 340.1500000000001, - "pChange": 13.422381816746906, - "totBuyQty": 8200, - "totSellQty": 11850, - "bidQty": 25, - "bidPrice": 2875.75, - "askQty": 50, - "askPrice": 2878.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27050, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27050.00", - "oi": 95, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 25300, - "totSellQty": 4300, - "bidQty": 1800, - "bidPrice": 4.1, - "askQty": 200, - "askPrice": 7.25 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27050.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2852.2, - "askQty": 25, - "askPrice": 2958.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27100, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27100.00", - "oi": 234, - "oiChg": -69, - "oiPctChg": -22.77227722772277, - "totTradedVol": 324, - "iv": 18.62, - "ltp": 5.25, - "change": -1.2999999999999998, - "pChange": -19.847328244274806, - "totBuyQty": 43375, - "totSellQty": 10400, - "bidQty": 350, - "bidPrice": 5.25, - "askQty": 500, - "askPrice": 5.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27100.00", - "oi": 32, - "oiChg": 26, - "oiPctChg": 433.3333333333333, - "totTradedVol": 33, - "iv": 0, - "ltp": 2930.8, - "change": 180.80000000000018, - "pChange": 6.5745454545454605, - "totBuyQty": 3925, - "totSellQty": 3050, - "bidQty": 200, - "bidPrice": 2906.1, - "askQty": 25, - "askPrice": 3005.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27150, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27150.00", - "oi": 99, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 22775, - "totSellQty": 3400, - "bidQty": 900, - "bidPrice": 4.15, - "askQty": 600, - "askPrice": 7.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 2951.15, - "askQty": 25, - "askPrice": 3060.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27200, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27200.00", - "oi": 175, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 49, - "iv": 19.03, - "ltp": 5.25, - "change": -1.6500000000000004, - "pChange": -23.913043478260875, - "totBuyQty": 25175, - "totSellQty": 5925, - "bidQty": 350, - "bidPrice": 5.1, - "askQty": 525, - "askPrice": 5.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27200.00", - "oi": 25, - "oiChg": 6, - "oiPctChg": 31.57894736842105, - "totTradedVol": 22, - "iv": 0, - "ltp": 3038, - "change": 313, - "pChange": 11.486238532110091, - "totBuyQty": 4200, - "totSellQty": 4200, - "bidQty": 250, - "bidPrice": 3033.35, - "askQty": 250, - "askPrice": 3084.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27250, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27250.00", - "oi": 26, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 21625, - "totSellQty": 2750, - "bidQty": 900, - "bidPrice": 3.65, - "askQty": 600, - "askPrice": 8 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3049.75, - "askQty": 25, - "askPrice": 3163.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27300, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27300.00", - "oi": 281, - "oiChg": 6, - "oiPctChg": 2.1818181818181817, - "totTradedVol": 69, - "iv": 19.81, - "ltp": 5.85, - "change": -2.0500000000000007, - "pChange": -25.9493670886076, - "totBuyQty": 23675, - "totSellQty": 5025, - "bidQty": 200, - "bidPrice": 3.8, - "askQty": 75, - "askPrice": 6.45 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27300.00", - "oi": 5, - "oiChg": 2, - "oiPctChg": 66.66666666666667, - "totTradedVol": 6, - "iv": 0, - "ltp": 3110, - "change": 305, - "pChange": 10.87344028520499, - "totBuyQty": 3725, - "totSellQty": 3725, - "bidQty": 25, - "bidPrice": 3094.75, - "askQty": 25, - "askPrice": 3209.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27350, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27350.00", - "oi": 11, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 15125, - "totSellQty": 3050, - "bidQty": 750, - "bidPrice": 3.65, - "askQty": 100, - "askPrice": 7.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3148.4, - "askQty": 25, - "askPrice": 3265.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27400, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27400.00", - "oi": 163, - "oiChg": 1, - "oiPctChg": 0.6172839506172839, - "totTradedVol": 3, - "iv": 20.22, - "ltp": 5.65, - "change": -0.2999999999999998, - "pChange": -5.042016806722685, - "totBuyQty": 29375, - "totSellQty": 8225, - "bidQty": 900, - "bidPrice": 3.7, - "askQty": 25, - "askPrice": 7 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27400.00", - "oi": 20, - "oiChg": 14, - "oiPctChg": 233.33333333333334, - "totTradedVol": 15, - "iv": 0, - "ltp": 3150, - "change": 174, - "pChange": 5.846774193548387, - "totBuyQty": 3750, - "totSellQty": 3750, - "bidQty": 25, - "bidPrice": 3192.05, - "askQty": 25, - "askPrice": 3310.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27450, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27450.00", - "oi": 30, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 19825, - "totSellQty": 2850, - "bidQty": 900, - "bidPrice": 3.1, - "askQty": 600, - "askPrice": 7.35 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3210.95, - "askQty": 25, - "askPrice": 3369.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27500, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27500.00", - "oi": 6760, - "oiChg": 340, - "oiPctChg": 5.29595015576324, - "totTradedVol": 4206, - "iv": 20.04, - "ltp": 4.35, - "change": -1.4500000000000002, - "pChange": -25.000000000000007, - "totBuyQty": 68950, - "totSellQty": 22925, - "bidQty": 1025, - "bidPrice": 4.35, - "askQty": 1200, - "askPrice": 4.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27500.00", - "oi": 3674, - "oiChg": 818, - "oiPctChg": 28.641456582633054, - "totTradedVol": 928, - "iv": 0, - "ltp": 3330.25, - "change": 304, - "pChange": 10.045435770342834, - "totBuyQty": 5175, - "totSellQty": 5025, - "bidQty": 50, - "bidPrice": 3350.2, - "askQty": 100, - "askPrice": 3372.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27550, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27550.00", - "oi": 73, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 19600, - "totSellQty": 3025, - "bidQty": 600, - "bidPrice": 3.25, - "askQty": 100, - "askPrice": 6.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3308.6, - "askQty": 25, - "askPrice": 3471.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27600, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27600.00", - "oi": 37, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 21.28, - "ltp": 5.8, - "change": 0, - "pChange": 0, - "totBuyQty": 21100, - "totSellQty": 4675, - "bidQty": 25, - "bidPrice": 3.7, - "askQty": 100, - "askPrice": 6.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27600.00", - "oi": 24, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 3, - "iv": 0, - "ltp": 3380, - "change": 255, - "pChange": 8.16, - "totBuyQty": 3725, - "totSellQty": 2825, - "bidQty": 25, - "bidPrice": 3353, - "askQty": 25, - "askPrice": 3516.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27650, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27650.00", - "oi": 64, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 80150, - "totSellQty": 3600, - "bidQty": 600, - "bidPrice": 3.1, - "askQty": 100, - "askPrice": 6.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3406.3, - "askQty": 25, - "askPrice": 3574.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27700, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27700.00", - "oi": 191, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 30300, - "totSellQty": 6875, - "bidQty": 925, - "bidPrice": 4.1, - "askQty": 100, - "askPrice": 6.15 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3454.9, - "askQty": 25, - "askPrice": 3624.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27750, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27750.00", - "oi": 70, - "oiChg": 16, - "oiPctChg": 29.62962962962963, - "totTradedVol": 208, - "iv": 21.23, - "ltp": 4.3, - "change": -1.7000000000000002, - "pChange": -28.33333333333334, - "totBuyQty": 23000, - "totSellQty": 9550, - "bidQty": 475, - "bidPrice": 4.2, - "askQty": 100, - "askPrice": 4.3 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3503.8, - "askQty": 25, - "askPrice": 3675.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27800, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27800.00", - "oi": 137, - "oiChg": 1, - "oiPctChg": 0.7352941176470589, - "totTradedVol": 5, - "iv": 22.26, - "ltp": 5.8, - "change": 0, - "pChange": 0, - "totBuyQty": 28300, - "totSellQty": 7875, - "bidQty": 100, - "bidPrice": 3.55, - "askQty": 1200, - "askPrice": 5.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 3530, - "change": 2014.65, - "pChange": 132.94948361764608, - "totBuyQty": 3725, - "totSellQty": 3725, - "bidQty": 25, - "bidPrice": 3552.4, - "askQty": 25, - "askPrice": 3726.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27850, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27850.00", - "oi": 274, - "oiChg": 70, - "oiPctChg": 34.31372549019608, - "totTradedVol": 253, - "iv": 21.68, - "ltp": 4.3, - "change": -1.25, - "pChange": -22.52252252252252, - "totBuyQty": 15500, - "totSellQty": 6250, - "bidQty": 1250, - "bidPrice": 4, - "askQty": 100, - "askPrice": 7.1 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3601.7, - "askQty": 25, - "askPrice": 3777.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27900, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27900.00", - "oi": 272, - "oiChg": 97, - "oiPctChg": 55.42857142857143, - "totTradedVol": 494, - "iv": 21.75, - "ltp": 4, - "change": -1.4500000000000002, - "pChange": -26.605504587155966, - "totBuyQty": 180200, - "totSellQty": 7250, - "bidQty": 350, - "bidPrice": 4.05, - "askQty": 525, - "askPrice": 4.2 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 3650.3, - "askQty": 25, - "askPrice": 3828.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27950, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE27950.00", - "oi": 362, - "oiChg": 55, - "oiPctChg": 17.91530944625407, - "totTradedVol": 355, - "iv": 21.99, - "ltp": 4.05, - "change": -1.2000000000000002, - "pChange": -22.857142857142858, - "totBuyQty": 23375, - "totSellQty": 6575, - "bidQty": 1800, - "bidPrice": 3.9, - "askQty": 100, - "askPrice": 4.2 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE27950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3725, - "totSellQty": 2150, - "bidQty": 25, - "bidPrice": 3699.3, - "askQty": 25, - "askPrice": 3880 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 28000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE28000.00", - "oi": 35873, - "oiChg": 1095, - "oiPctChg": 3.1485421818390935, - "totTradedVol": 11254, - "iv": 21.95, - "ltp": 3.8, - "change": -1.0499999999999998, - "pChange": -21.649484536082472, - "totBuyQty": 63525, - "totSellQty": 24325, - "bidQty": 1350, - "bidPrice": 3.8, - "askQty": 600, - "askPrice": 3.9 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE28000.00", - "oi": 11260, - "oiChg": 439, - "oiPctChg": 4.05692634691803, - "totTradedVol": 670, - "iv": 0, - "ltp": 3851.8, - "change": 325.10000000000036, - "pChange": 9.218249354921042, - "totBuyQty": 7025, - "totSellQty": 5850, - "bidQty": 25, - "bidPrice": 3853, - "askQty": 250, - "askPrice": 3866.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 29000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE29000.00", - "oi": 31555, - "oiChg": 5134, - "oiPctChg": 19.43151281177851, - "totTradedVol": 14983, - "iv": 26.2, - "ltp": 3.55, - "change": -0.10000000000000009, - "pChange": -2.739726027397263, - "totBuyQty": 72275, - "totSellQty": 87625, - "bidQty": 1000, - "bidPrice": 3.55, - "askQty": 1775, - "askPrice": 3.6 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE29000.00", - "oi": 21327, - "oiChg": 95, - "oiPctChg": 0.4474378296910324, - "totTradedVol": 160, - "iv": 0, - "ltp": 4840, - "change": 318.60000000000036, - "pChange": 7.046490025213438, - "totBuyQty": 7450, - "totSellQty": 5075, - "bidQty": 100, - "bidPrice": 4836.5, - "askQty": 25, - "askPrice": 4862.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 30000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE30000.00", - "oi": 32063, - "oiChg": 5430, - "oiPctChg": 20.388240153193408, - "totTradedVol": 10526, - "iv": 30.3, - "ltp": 3.5, - "change": -0.04999999999999982, - "pChange": -1.4084507042253471, - "totBuyQty": 58100, - "totSellQty": 53850, - "bidQty": 750, - "bidPrice": 3.35, - "askQty": 1625, - "askPrice": 3.5 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE30000.00", - "oi": 1038, - "oiChg": 13, - "oiPctChg": 1.2682926829268293, - "totTradedVol": 27, - "iv": 0, - "ltp": 5783.3, - "change": 276, - "pChange": 5.011530150890636, - "totBuyQty": 6175, - "totSellQty": 3900, - "bidQty": 25, - "bidPrice": 5794.95, - "askQty": 25, - "askPrice": 5842.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 31000, - "expiry": "26-Dec-2024", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-12-2024CE31000.00", - "oi": 20298, - "oiChg": 5620, - "oiPctChg": 38.28859517645456, - "totTradedVol": 13005, - "iv": 34.17, - "ltp": 3.4, - "change": -0.1499999999999999, - "pChange": -4.225352112676054, - "totBuyQty": 65175, - "totSellQty": 54925, - "bidQty": 350, - "bidPrice": 3.25, - "askQty": 525, - "askPrice": 3.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-12-2024PE31000.00", - "oi": 2361, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2825, - "totSellQty": 425, - "bidQty": 25, - "bidPrice": 6675.9, - "askQty": 375, - "askPrice": 6970.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 15375, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 4.2, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3300, - "totSellQty": 0, - "bidQty": 150, - "bidPrice": 6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4650, - "totSellQty": 75, - "bidQty": 75, - "bidPrice": 7.1, - "askQty": 75, - "askPrice": 20.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.75, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5925, - "totSellQty": 0, - "bidQty": 150, - "bidPrice": 6.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7650, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7725, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6150, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9375, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.7, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7725, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 11025, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 5.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6150, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 4.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22200.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 7.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7875, - "totSellQty": 0, - "bidQty": 150, - "bidPrice": 6.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22300.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9750, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 6.75, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22400.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9825, - "totSellQty": 0, - "bidQty": 75, - "bidPrice": 6.85, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7650, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 7, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22500.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6375, - "totSellQty": 0, - "bidQty": 75, - "bidPrice": 12.8, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6150, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 8.9, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7425, - "totSellQty": 0, - "bidQty": 75, - "bidPrice": 10.65, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6150, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 9.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8100, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 10.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1650, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4275, - "totSellQty": 0, - "bidQty": 900, - "bidPrice": 11.15, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1725, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 6.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3675, - "totSellQty": 0, - "bidQty": 900, - "bidPrice": 9.15, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE22950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1650, - "totSellQty": 0, - "bidQty": 600, - "bidPrice": 8.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5100, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 85, - "askQty": 900, - "askPrice": 107.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 10.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2925, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 11.05, - "askQty": 900, - "askPrice": 121.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 11.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23200.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2775, - "totSellQty": 900, - "bidQty": 750, - "bidPrice": 12.1, - "askQty": 900, - "askPrice": 136.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23250.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1575, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 20.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23300.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3450, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 15.8, - "askQty": 900, - "askPrice": 152 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23350.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2100, - "totSellQty": 900, - "bidQty": 525, - "bidPrice": 17.05, - "askQty": 900, - "askPrice": 165.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23400.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3000, - "totSellQty": 900, - "bidQty": 375, - "bidPrice": 17.15, - "askQty": 900, - "askPrice": 174 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23450.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 900, - "bidQty": 300, - "bidPrice": 20.1, - "askQty": 900, - "askPrice": 185.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23500.00", - "oi": 52, - "oiChg": 13, - "oiPctChg": 33.333333333333336, - "totTradedVol": 28, - "iv": 14.42, - "ltp": 169.25, - "change": 62.599999999999994, - "pChange": 58.6966713548992, - "totBuyQty": 2775, - "totSellQty": 1950, - "bidQty": 375, - "bidPrice": 175.45, - "askQty": 75, - "askPrice": 190.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23550.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 5.15, - "askQty": 900, - "askPrice": 209.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23600.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2025, - "totSellQty": 0, - "bidQty": 150, - "bidPrice": 205.7, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 0.15, - "askQty": 900, - "askPrice": 235 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE23700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23700.00", - "oi": 11, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 75, - "bidQty": 900, - "bidPrice": 0.15, - "askQty": 75, - "askPrice": 244.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 75, - "totSellQty": 825, - "bidQty": 75, - "bidPrice": 0.1, - "askQty": 825, - "askPrice": 266.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE23800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 225, - "bidQty": 0, - "bidPrice": 0, - "askQty": 225, - "askPrice": 634.4 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 80.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE23850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 900, - "totSellQty": 225, - "bidQty": 900, - "bidPrice": 573.05, - "askQty": 225, - "askPrice": 606.25 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 0, - "bidQty": 900, - "bidPrice": 0.15, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE23900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 600, - "totSellQty": 900, - "bidQty": 525, - "bidPrice": 0.15, - "askQty": 900, - "askPrice": 318.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE23950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 225, - "totSellQty": 225, - "bidQty": 225, - "bidPrice": 508.05, - "askQty": 225, - "askPrice": 540.45 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE23950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24000.00", - "oi": 15, - "oiChg": 1, - "oiPctChg": 7.142857142857143, - "totTradedVol": 7, - "iv": 15.34, - "ltp": 541.5, - "change": -140.70000000000005, - "pChange": -20.624450307827622, - "totBuyQty": 450, - "totSellQty": 375, - "bidQty": 150, - "bidPrice": 482.15, - "askQty": 150, - "askPrice": 501.1 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24000.00", - "oi": 34, - "oiChg": 2, - "oiPctChg": 6.25, - "totTradedVol": 22, - "iv": 13.39, - "ltp": 316.05, - "change": 111.05000000000001, - "pChange": 54.170731707317074, - "totBuyQty": 1425, - "totSellQty": 1425, - "bidQty": 150, - "bidPrice": 254.15, - "askQty": 300, - "askPrice": 356.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 225, - "bidQty": 0, - "bidPrice": 0, - "askQty": 225, - "askPrice": 484.4 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24050.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 975, - "bidQty": 900, - "bidPrice": 35.05, - "askQty": 75, - "askPrice": 378.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 525, - "bidQty": 0, - "bidPrice": 0, - "askQty": 300, - "askPrice": 455.5 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24150.00", - "oi": 1, - "oiChg": 1, - "oiPctChg": 0, - "totTradedVol": 4, - "iv": 15.9, - "ltp": 480, - "change": 208.75, - "pChange": 76.95852534562212, - "totBuyQty": 2175, - "totSellQty": 225, - "bidQty": 75, - "bidPrice": 107.4, - "askQty": 225, - "askPrice": 428.3 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 225, - "totSellQty": 0, - "bidQty": 225, - "bidPrice": 397.65, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24200.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 825, - "bidQty": 0, - "bidPrice": 0, - "askQty": 300, - "askPrice": 401.05 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24200.00", - "oi": 29, - "oiChg": -1, - "oiPctChg": -3.3333333333333335, - "totTradedVol": 2, - "iv": 12.31, - "ltp": 379.25, - "change": 76.05000000000001, - "pChange": 25.082453825857527, - "totBuyQty": 300, - "totSellQty": 375, - "bidQty": 225, - "bidPrice": 420.7, - "askQty": 75, - "askPrice": 445.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24250.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 5, - "iv": 19.52, - "ltp": 539.5, - "change": -5, - "pChange": -0.9182736455463728, - "totBuyQty": 3900, - "totSellQty": 0, - "bidQty": 225, - "bidPrice": 26.95, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24300.00", - "oi": 19, - "oiChg": 17, - "oiPctChg": 850, - "totTradedVol": 21, - "iv": 14.34, - "ltp": 364, - "change": -137.85000000000002, - "pChange": -27.46836704194481, - "totBuyQty": 5700, - "totSellQty": 600, - "bidQty": 75, - "bidPrice": 325.65, - "askQty": 75, - "askPrice": 351.65 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24300.00", - "oi": 2, - "oiChg": -1, - "oiPctChg": -33.333333333333336, - "totTradedVol": 9, - "iv": 11.7, - "ltp": 415, - "change": 97.69999999999999, - "pChange": 30.791049479987386, - "totBuyQty": 150, - "totSellQty": 450, - "bidQty": 75, - "bidPrice": 461.3, - "askQty": 75, - "askPrice": 519.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24350.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6375, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 11.05, - "askQty": 900, - "askPrice": 329.3 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24400.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5400, - "totSellQty": 900, - "bidQty": 1800, - "bidPrice": 10.1, - "askQty": 900, - "askPrice": 305.95 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24400.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6300, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 10.15, - "askQty": 900, - "askPrice": 285.95 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24500.00", - "oi": 36, - "oiChg": 30, - "oiPctChg": 500, - "totTradedVol": 54, - "iv": 13.76, - "ltp": 260.3, - "change": -124.69999999999999, - "pChange": -32.38961038961038, - "totBuyQty": 5850, - "totSellQty": 2550, - "bidQty": 150, - "bidPrice": 240.15, - "askQty": 75, - "askPrice": 259.45 - }, - "pe": { - "id": "OPTIDXNIFTY02-01-2025PE24500.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6000, - "totSellQty": 0, - "bidQty": 600, - "bidPrice": 10.15, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24600.00", - "oi": 2, - "oiChg": -1, - "oiPctChg": -33.333333333333336, - "totTradedVol": 16, - "iv": 13.47, - "ltp": 224.35, - "change": -105.50000000000003, - "pChange": -31.984235258450816, - "totBuyQty": 5925, - "totSellQty": 975, - "bidQty": 150, - "bidPrice": 202.05, - "askQty": 75, - "askPrice": 228.35 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6300, - "totSellQty": 825, - "bidQty": 900, - "bidPrice": 10.15, - "askQty": 825, - "askPrice": 210.9 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5550, - "totSellQty": 0, - "bidQty": 75, - "bidPrice": 40, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24750.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 13.82, - "ltp": 188.4, - "change": 0, - "pChange": 0, - "totBuyQty": 6375, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 55.1, - "askQty": 900, - "askPrice": 181.1 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5400, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 10.1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5400, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 10.1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6900, - "totSellQty": 0, - "bidQty": 900, - "bidPrice": 11.15, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE24950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5400, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 10.1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25000.00", - "oi": 157, - "oiChg": 112, - "oiPctChg": 248.88888888888889, - "totTradedVol": 188, - "iv": 13.09, - "ltp": 111.7, - "change": -43.45, - "pChange": -28.005156300354493, - "totBuyQty": 12225, - "totSellQty": 2175, - "bidQty": 75, - "bidPrice": 106.05, - "askQty": 150, - "askPrice": 111.55 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 12.97, - "ltp": 100, - "change": 14.75, - "pChange": 17.302052785923756, - "totBuyQty": 7575, - "totSellQty": 75, - "bidQty": 300, - "bidPrice": 16.1, - "askQty": 75, - "askPrice": 120 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25100.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 17550, - "totSellQty": 1200, - "bidQty": 900, - "bidPrice": 21.05, - "askQty": 900, - "askPrice": 171.85 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2175, - "totSellQty": 0, - "bidQty": 375, - "bidPrice": 18.1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25200.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8025, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 16.5, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6075, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 14.1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25300.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 7500, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 16.55, - "askQty": 900, - "askPrice": 73.25 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5325, - "totSellQty": 300, - "bidQty": 750, - "bidPrice": 16, - "askQty": 300, - "askPrice": 200 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25400.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8400, - "totSellQty": 900, - "bidQty": 900, - "bidPrice": 17.55, - "askQty": 900, - "askPrice": 61.75 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25450.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 5475, - "totSellQty": 450, - "bidQty": 150, - "bidPrice": 15, - "askQty": 150, - "askPrice": 160 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25500.00", - "oi": 4, - "oiChg": 4, - "oiPctChg": 0, - "totTradedVol": 6, - "iv": 13.6, - "ltp": 50, - "change": 6.799999999999997, - "pChange": 15.740740740740733, - "totBuyQty": 14775, - "totSellQty": 1800, - "bidQty": 900, - "bidPrice": 21.55, - "askQty": 900, - "askPrice": 67.85 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 10050, - "totSellQty": 1425, - "bidQty": 750, - "bidPrice": 12, - "askQty": 75, - "askPrice": 67 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25600.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 10350, - "totSellQty": 1725, - "bidQty": 300, - "bidPrice": 13.05, - "askQty": 75, - "askPrice": 62 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25650.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9150, - "totSellQty": 1800, - "bidQty": 750, - "bidPrice": 12, - "askQty": 75, - "askPrice": 62 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8325, - "totSellQty": 1650, - "bidQty": 75, - "bidPrice": 12.15, - "askQty": 75, - "askPrice": 59.6 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25750.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9900, - "totSellQty": 1500, - "bidQty": 300, - "bidPrice": 11.75, - "askQty": 75, - "askPrice": 56.95 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8925, - "totSellQty": 2100, - "bidQty": 75, - "bidPrice": 13.15, - "askQty": 75, - "askPrice": 56.95 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6300, - "totSellQty": 2400, - "bidQty": 750, - "bidPrice": 9, - "askQty": 75, - "askPrice": 49.95 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25900.00", - "oi": 20, - "oiChg": 18, - "oiPctChg": 900, - "totTradedVol": 32, - "iv": 13.07, - "ltp": 18, - "change": -23.75, - "pChange": -56.886227544910184, - "totBuyQty": 11700, - "totSellQty": 3450, - "bidQty": 75, - "bidPrice": 16.2, - "askQty": 75, - "askPrice": 19.85 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE25950.00", - "oi": 26, - "oiChg": 9, - "oiPctChg": 52.94117647058823, - "totTradedVol": 18, - "iv": 13.15, - "ltp": 16.55, - "change": -9.2, - "pChange": -35.728155339805824, - "totBuyQty": 11175, - "totSellQty": 2700, - "bidQty": 225, - "bidPrice": 16.55, - "askQty": 300, - "askPrice": 30.5 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "02-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY02-01-2025CE26000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9225, - "totSellQty": 1800, - "bidQty": 75, - "bidPrice": 19.6, - "askQty": 150, - "askPrice": 27.7 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21600, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21600.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 19.5, - "ltp": 2765, - "change": -225, - "pChange": -7.5250836120401345, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2612.75, - "askQty": 25, - "askPrice": 2816.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4175, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 12.8, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21650, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2561.75, - "askQty": 25, - "askPrice": 2760.35 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21650.00", - "oi": 519, - "oiChg": -2, - "oiPctChg": -0.3838771593090211, - "totTradedVol": 12, - "iv": 17.36, - "ltp": 35, - "change": -7.5, - "pChange": -17.647058823529413, - "totBuyQty": 7725, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 31, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21700, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2517.1, - "askQty": 25, - "askPrice": 2711.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 6200, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 20.75, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21750, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2472.35, - "askQty": 25, - "askPrice": 2663.75 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1375, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 15.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21800, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 2426.2, - "askQty": 25, - "askPrice": 2613.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21800.00", - "oi": 3034, - "oiChg": 122, - "oiPctChg": 4.18956043956044, - "totTradedVol": 451, - "iv": 17.51, - "ltp": 47.8, - "change": 14.949999999999996, - "pChange": 45.50989345509892, - "totBuyQty": 3725, - "totSellQty": 4800, - "bidQty": 100, - "bidPrice": 45, - "askQty": 525, - "askPrice": 47.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21850, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2384.5, - "askQty": 25, - "askPrice": 2566.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21850.00", - "oi": 81, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1175, - "totSellQty": 0, - "bidQty": 50, - "bidPrice": 18.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21900, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 2339.6, - "askQty": 25, - "askPrice": 2517.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21900.00", - "oi": 1254, - "oiChg": 41, - "oiPctChg": 3.3800494641384997, - "totTradedVol": 200, - "iv": 17.14, - "ltp": 48.15, - "change": 10.699999999999996, - "pChange": 28.57142857142856, - "totBuyQty": 3175, - "totSellQty": 450, - "bidQty": 200, - "bidPrice": 46.5, - "askQty": 25, - "askPrice": 53.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21950, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2296.4, - "askQty": 25, - "askPrice": 2396.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE21950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1750, - "totSellQty": 0, - "bidQty": 50, - "bidPrice": 23, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22000.00", - "oi": 535, - "oiChg": 17, - "oiPctChg": 3.281853281853282, - "totTradedVol": 49, - "iv": 0, - "ltp": 2294.4, - "change": -305.25, - "pChange": -11.741965264554842, - "totBuyQty": 3800, - "totSellQty": 3250, - "bidQty": 25, - "bidPrice": 2285, - "askQty": 100, - "askPrice": 2341.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22000.00", - "oi": 22214, - "oiChg": 1363, - "oiPctChg": 6.536856745479833, - "totTradedVol": 11871, - "iv": 17.35, - "ltp": 61.05, - "change": 16.849999999999994, - "pChange": 38.122171945701346, - "totBuyQty": 24100, - "totSellQty": 10750, - "bidQty": 25, - "bidPrice": 60.6, - "askQty": 400, - "askPrice": 61.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22050, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2208.75, - "askQty": 25, - "askPrice": 2302.45 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 4400, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 43.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22100, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3175, - "totSellQty": 3175, - "bidQty": 25, - "bidPrice": 2164.75, - "askQty": 450, - "askPrice": 2287.55 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22100.00", - "oi": 1277, - "oiChg": 162, - "oiPctChg": 14.52914798206278, - "totTradedVol": 227, - "iv": 17.06, - "ltp": 63, - "change": 16.299999999999997, - "pChange": 34.90364025695931, - "totBuyQty": 2175, - "totSellQty": 1900, - "bidQty": 100, - "bidPrice": 48.35, - "askQty": 200, - "askPrice": 66 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22150, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1525, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 2121.3, - "askQty": 25, - "askPrice": 2211.15 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22150.00", - "oi": 592, - "oiChg": 23, - "oiPctChg": 4.042179261862917, - "totTradedVol": 252, - "iv": 16.82, - "ltp": 63.95, - "change": 2.0500000000000043, - "pChange": 3.3117932148626883, - "totBuyQty": 3075, - "totSellQty": 1875, - "bidQty": 125, - "bidPrice": 65.85, - "askQty": 525, - "askPrice": 69.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22200, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22200.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3175, - "totSellQty": 3175, - "bidQty": 25, - "bidPrice": 2073.7, - "askQty": 25, - "askPrice": 2162.05 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22200.00", - "oi": 2084, - "oiChg": 314, - "oiPctChg": 17.740112994350284, - "totTradedVol": 988, - "iv": 16.53, - "ltp": 70, - "change": 21.75, - "pChange": 45.07772020725388, - "totBuyQty": 5175, - "totSellQty": 2250, - "bidQty": 125, - "bidPrice": 68.35, - "askQty": 50, - "askPrice": 71.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22250, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22250.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 2032.8, - "askQty": 25, - "askPrice": 2118.15 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22250.00", - "oi": 66, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1175, - "totSellQty": 0, - "bidQty": 75, - "bidPrice": 21, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22300, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22300.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3175, - "totSellQty": 3175, - "bidQty": 25, - "bidPrice": 1988.25, - "askQty": 25, - "askPrice": 2073.35 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22300.00", - "oi": 4057, - "oiChg": 527, - "oiPctChg": 14.929178470254957, - "totTradedVol": 1007, - "iv": 16.3, - "ltp": 77.5, - "change": 25.15, - "pChange": 48.04202483285577, - "totBuyQty": 2625, - "totSellQty": 2025, - "bidQty": 50, - "bidPrice": 73.9, - "askQty": 525, - "askPrice": 77.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22350, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22350.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 1948.65, - "askQty": 25, - "askPrice": 2030.75 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22350.00", - "oi": 66, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1375, - "totSellQty": 25, - "bidQty": 50, - "bidPrice": 21.1, - "askQty": 25, - "askPrice": 77.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22400, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22400.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1903.2, - "askQty": 25, - "askPrice": 1982.55 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22400.00", - "oi": 4599, - "oiChg": 1058, - "oiPctChg": 29.878565377012144, - "totTradedVol": 2746, - "iv": 16.3, - "ltp": 83, - "change": 21.450000000000003, - "pChange": 34.849715678310325, - "totBuyQty": 3850, - "totSellQty": 2050, - "bidQty": 75, - "bidPrice": 82.5, - "askQty": 1800, - "askPrice": 85.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22450, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22450.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1625, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 1864.25, - "askQty": 25, - "askPrice": 1942.4 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22450.00", - "oi": 8, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1025, - "totSellQty": 0, - "bidQty": 125, - "bidPrice": 20.4, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22500, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22500.00", - "oi": 641, - "oiChg": 10, - "oiPctChg": 1.5847860538827259, - "totTradedVol": 20, - "iv": 12.02, - "ltp": 1852.2, - "change": -287.14999999999986, - "pChange": -13.422301166242075, - "totBuyQty": 4625, - "totSellQty": 3825, - "bidQty": 500, - "bidPrice": 1828.3, - "askQty": 50, - "askPrice": 1863.1 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22500.00", - "oi": 32866, - "oiChg": 5616, - "oiPctChg": 20.609174311926605, - "totTradedVol": 18425, - "iv": 16.42, - "ltp": 98.6, - "change": 30.799999999999997, - "pChange": 45.427728613569315, - "totBuyQty": 27750, - "totSellQty": 2675, - "bidQty": 400, - "bidPrice": 97.5, - "askQty": 200, - "askPrice": 98.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22550, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22550.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 1778.1, - "askQty": 25, - "askPrice": 1851.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22550.00", - "oi": 45, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1900, - "totSellQty": 25, - "bidQty": 100, - "bidPrice": 41.1, - "askQty": 25, - "askPrice": 111.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22600, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22600.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1736.3, - "askQty": 25, - "askPrice": 1806.5 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22600.00", - "oi": 3108, - "oiChg": 1173, - "oiPctChg": 60.62015503875969, - "totTradedVol": 2041, - "iv": 15.97, - "ltp": 102.95, - "change": 31.549999999999997, - "pChange": 44.18767507002801, - "totBuyQty": 4550, - "totSellQty": 2250, - "bidQty": 1800, - "bidPrice": 103.05, - "askQty": 1800, - "askPrice": 106.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22650, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22650.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 1694.3, - "askQty": 25, - "askPrice": 1785.35 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22650.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1525, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 91.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22700, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22700.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1626.25, - "askQty": 25, - "askPrice": 1719.25 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22700.00", - "oi": 4793, - "oiChg": 1174, - "oiPctChg": 32.439900525006905, - "totTradedVol": 4142, - "iv": 15.76, - "ltp": 113.65, - "change": 38.45, - "pChange": 51.130319148936174, - "totBuyQty": 30925, - "totSellQty": 3000, - "bidQty": 50, - "bidPrice": 113.05, - "askQty": 100, - "askPrice": 115.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22750, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22750.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 1588.4, - "askQty": 25, - "askPrice": 1676.2 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22750.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1550, - "totSellQty": 325, - "bidQty": 300, - "bidPrice": 101.25, - "askQty": 25, - "askPrice": 129.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22800, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22800.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1546.4, - "askQty": 25, - "askPrice": 1609.05 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22800.00", - "oi": 3267, - "oiChg": 883, - "oiPctChg": 37.038590604026844, - "totTradedVol": 1707, - "iv": 15.58, - "ltp": 126.2, - "change": 42.8, - "pChange": 51.318944844124694, - "totBuyQty": 5100, - "totSellQty": 2900, - "bidQty": 75, - "bidPrice": 124.3, - "askQty": 25, - "askPrice": 126.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22850, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22850.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1507.9, - "askQty": 25, - "askPrice": 1567.8 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22850.00", - "oi": 14, - "oiChg": 1, - "oiPctChg": 7.6923076923076925, - "totTradedVol": 12, - "iv": 15.44, - "ltp": 125, - "change": 16.25, - "pChange": 14.942528735632186, - "totBuyQty": 1650, - "totSellQty": 625, - "bidQty": 300, - "bidPrice": 119.6, - "askQty": 25, - "askPrice": 146.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22900, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22900.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1467.95, - "askQty": 25, - "askPrice": 1527.2 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22900.00", - "oi": 2195, - "oiChg": 658, - "oiPctChg": 42.810670136629795, - "totTradedVol": 1335, - "iv": 15.5, - "ltp": 141.75, - "change": 47.650000000000006, - "pChange": 50.637619553666326, - "totBuyQty": 7275, - "totSellQty": 5400, - "bidQty": 50, - "bidPrice": 139.45, - "askQty": 50, - "askPrice": 142.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22950, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE22950.00", - "oi": 9, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 1825, - "bidQty": 25, - "bidPrice": 1428.75, - "askQty": 25, - "askPrice": 1486 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE22950.00", - "oi": 76, - "oiChg": 1, - "oiPctChg": 1.3333333333333333, - "totTradedVol": 13, - "iv": 15.32, - "ltp": 139.3, - "change": 22.000000000000014, - "pChange": 18.755328218243832, - "totBuyQty": 3325, - "totSellQty": 2400, - "bidQty": 1800, - "bidPrice": 146.9, - "askQty": 1800, - "askPrice": 151.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23000.00", - "oi": 3523, - "oiChg": -266, - "oiPctChg": -7.020321984692531, - "totTradedVol": 1751, - "iv": 13.95, - "ltp": 1422.45, - "change": -257.89999999999986, - "pChange": -15.347992977653458, - "totBuyQty": 4325, - "totSellQty": 8750, - "bidQty": 50, - "bidPrice": 1414.7, - "askQty": 50, - "askPrice": 1424.2 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23000.00", - "oi": 46283, - "oiChg": 4028, - "oiPctChg": 9.532599692344101, - "totTradedVol": 20777, - "iv": 15.47, - "ltp": 159.3, - "change": 52.20000000000002, - "pChange": 48.739495798319346, - "totBuyQty": 15525, - "totSellQty": 13975, - "bidQty": 400, - "bidPrice": 159.2, - "askQty": 25, - "askPrice": 160.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23050, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23050.00", - "oi": 10, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1350.6, - "askQty": 25, - "askPrice": 1421.05 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23050.00", - "oi": 145, - "oiChg": 94, - "oiPctChg": 184.31372549019608, - "totTradedVol": 123, - "iv": 15.19, - "ltp": 154.85, - "change": 45.39999999999999, - "pChange": 41.48012791228871, - "totBuyQty": 6200, - "totSellQty": 2400, - "bidQty": 1800, - "bidPrice": 163, - "askQty": 1800, - "askPrice": 166.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23100, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23100.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 12.92, - "ltp": 1342, - "change": -230, - "pChange": -14.631043256997456, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1313.05, - "askQty": 25, - "askPrice": 1385.2 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23100.00", - "oi": 822, - "oiChg": 123, - "oiPctChg": 17.59656652360515, - "totTradedVol": 1043, - "iv": 15.14, - "ltp": 172.95, - "change": 56.19999999999999, - "pChange": 48.13704496788008, - "totBuyQty": 3625, - "totSellQty": 4525, - "bidQty": 25, - "bidPrice": 171.35, - "askQty": 75, - "askPrice": 173.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23150, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23150.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 1575, - "bidQty": 25, - "bidPrice": 1275.3, - "askQty": 25, - "askPrice": 1341.25 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23150.00", - "oi": 199, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 650, - "totSellQty": 625, - "bidQty": 25, - "bidPrice": 164.5, - "askQty": 25, - "askPrice": 190.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23200, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23200.00", - "oi": 38, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2775, - "bidQty": 25, - "bidPrice": 1235.9, - "askQty": 25, - "askPrice": 1292.35 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23200.00", - "oi": 1345, - "oiChg": 191, - "oiPctChg": 16.55112651646447, - "totTradedVol": 1373, - "iv": 15.03, - "ltp": 189.35, - "change": 63.19999999999999, - "pChange": 50.09908838684105, - "totBuyQty": 3725, - "totSellQty": 3825, - "bidQty": 50, - "bidPrice": 190.55, - "askQty": 25, - "askPrice": 192.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23250, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23250.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1197, - "askQty": 25, - "askPrice": 1238.1 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23250.00", - "oi": 811, - "oiChg": -14, - "oiPctChg": -1.696969696969697, - "totTradedVol": 297, - "iv": 14.94, - "ltp": 195.7, - "change": 32.54999999999998, - "pChange": 19.95096536929205, - "totBuyQty": 1925, - "totSellQty": 28800, - "bidQty": 25, - "bidPrice": 201.55, - "askQty": 1800, - "askPrice": 203.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23300, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23300.00", - "oi": 464, - "oiChg": -244, - "oiPctChg": -34.463276836158194, - "totTradedVol": 364, - "iv": 14.2, - "ltp": 1219.15, - "change": -260.8499999999999, - "pChange": -17.624999999999993, - "totBuyQty": 1175, - "totSellQty": 3275, - "bidQty": 25, - "bidPrice": 1162.6, - "askQty": 225, - "askPrice": 1193.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23300.00", - "oi": 1485, - "oiChg": 263, - "oiPctChg": 21.522094926350245, - "totTradedVol": 1823, - "iv": 14.88, - "ltp": 213, - "change": 72.1, - "pChange": 51.17104329311568, - "totBuyQty": 34200, - "totSellQty": 6925, - "bidQty": 75, - "bidPrice": 210.95, - "askQty": 50, - "askPrice": 213 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23350, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23350.00", - "oi": 90, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 4, - "iv": 12.44, - "ltp": 1130.6, - "change": -174.75, - "pChange": -13.387214157122612, - "totBuyQty": 950, - "totSellQty": 2725, - "bidQty": 25, - "bidPrice": 1124.9, - "askQty": 25, - "askPrice": 1152.4 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23350.00", - "oi": 178, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 775, - "totSellQty": 650, - "bidQty": 300, - "bidPrice": 193.05, - "askQty": 25, - "askPrice": 238.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23400, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23400.00", - "oi": 453, - "oiChg": -2, - "oiPctChg": -0.43956043956043955, - "totTradedVol": 18, - "iv": 12.96, - "ltp": 1107.5, - "change": -269.54999999999995, - "pChange": -19.57445263425438, - "totBuyQty": 2550, - "totSellQty": 3125, - "bidQty": 50, - "bidPrice": 1087.9, - "askQty": 25, - "askPrice": 1115.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23400.00", - "oi": 1070, - "oiChg": 183, - "oiPctChg": 20.631341600901916, - "totTradedVol": 659, - "iv": 14.66, - "ltp": 232.05, - "change": 77.9, - "pChange": 50.53519299383717, - "totBuyQty": 3150, - "totSellQty": 3625, - "bidQty": 25, - "bidPrice": 231.6, - "askQty": 100, - "askPrice": 233.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23450, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23450.00", - "oi": 32, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 3275, - "bidQty": 25, - "bidPrice": 1041.55, - "askQty": 150, - "askPrice": 1081.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23450.00", - "oi": 129, - "oiChg": -3, - "oiPctChg": -2.272727272727273, - "totTradedVol": 34, - "iv": 14.25, - "ltp": 219.4, - "change": 26.80000000000001, - "pChange": 13.914849428868125, - "totBuyQty": 600, - "totSellQty": 1550, - "bidQty": 300, - "bidPrice": 230.6, - "askQty": 25, - "askPrice": 254.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23500, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23500.00", - "oi": 4622, - "oiChg": 516, - "oiPctChg": 12.56697515830492, - "totTradedVol": 1350, - "iv": 13.11, - "ltp": 1027.4, - "change": -229.79999999999995, - "pChange": -18.27871460388164, - "totBuyQty": 3025, - "totSellQty": 8725, - "bidQty": 50, - "bidPrice": 1022.45, - "askQty": 50, - "askPrice": 1027.45 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23500.00", - "oi": 28002, - "oiChg": 1673, - "oiPctChg": 6.354210186486384, - "totTradedVol": 17639, - "iv": 14.69, - "ltp": 258, - "change": 86, - "pChange": 50, - "totBuyQty": 20450, - "totSellQty": 14475, - "bidQty": 200, - "bidPrice": 256.95, - "askQty": 50, - "askPrice": 258.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23550, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23550.00", - "oi": 176, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 50, - "totSellQty": 3225, - "bidQty": 25, - "bidPrice": 959.5, - "askQty": 475, - "askPrice": 1006.5 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23550.00", - "oi": 160, - "oiChg": 17, - "oiPctChg": 11.888111888111888, - "totTradedVol": 31, - "iv": 14.42, - "ltp": 262.35, - "change": 83.90000000000003, - "pChange": 47.01597086018495, - "totBuyQty": 2375, - "totSellQty": 3250, - "bidQty": 25, - "bidPrice": 266.85, - "askQty": 1425, - "askPrice": 269.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23600, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23600.00", - "oi": 372, - "oiChg": -47, - "oiPctChg": -11.217183770883056, - "totTradedVol": 231, - "iv": 13.22, - "ltp": 971.15, - "change": -244.64999999999998, - "pChange": -20.12255305148873, - "totBuyQty": 2525, - "totSellQty": 4075, - "bidQty": 50, - "bidPrice": 951.85, - "askQty": 50, - "askPrice": 956.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23600.00", - "oi": 6604, - "oiChg": 73, - "oiPctChg": 1.1177461338233043, - "totTradedVol": 412, - "iv": 14.51, - "ltp": 268.25, - "change": 82.85, - "pChange": 44.687162891046384, - "totBuyQty": 3325, - "totSellQty": 2400, - "bidQty": 1400, - "bidPrice": 276.8, - "askQty": 425, - "askPrice": 280.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23650, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23650.00", - "oi": 64, - "oiChg": 1, - "oiPctChg": 1.5873015873015872, - "totTradedVol": 3, - "iv": 15.19, - "ltp": 924.65, - "change": -189.69999999999993, - "pChange": -17.023376856463404, - "totBuyQty": 2375, - "totSellQty": 5050, - "bidQty": 125, - "bidPrice": 902.85, - "askQty": 375, - "askPrice": 921.7 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23650.00", - "oi": 95, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 700, - "totSellQty": 2525, - "bidQty": 300, - "bidPrice": 277.3, - "askQty": 25, - "askPrice": 309.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23700, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23700.00", - "oi": 442, - "oiChg": 114, - "oiPctChg": 34.75609756097561, - "totTradedVol": 309, - "iv": 13.13, - "ltp": 899.7, - "change": -207.8499999999999, - "pChange": -18.76664710396821, - "totBuyQty": 1650, - "totSellQty": 5375, - "bidQty": 25, - "bidPrice": 875.85, - "askQty": 100, - "askPrice": 880.55 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23700.00", - "oi": 3280, - "oiChg": -29, - "oiPctChg": -0.8763977032336053, - "totTradedVol": 516, - "iv": 14.1, - "ltp": 303.4, - "change": 96.49999999999997, - "pChange": 46.64088931851134, - "totBuyQty": 4250, - "totSellQty": 3450, - "bidQty": 1825, - "bidPrice": 304.15, - "askQty": 1800, - "askPrice": 308.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23750, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23750.00", - "oi": 120, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 15.89, - "ltp": 965.35, - "change": 0, - "pChange": 0, - "totBuyQty": 1525, - "totSellQty": 4200, - "bidQty": 300, - "bidPrice": 832.3, - "askQty": 25, - "askPrice": 869.3 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23750.00", - "oi": 246, - "oiChg": -11, - "oiPctChg": -4.280155642023346, - "totTradedVol": 33, - "iv": 13.27, - "ltp": 275.2, - "change": 55.19999999999999, - "pChange": 25.090909090909086, - "totBuyQty": 625, - "totSellQty": 1450, - "bidQty": 25, - "bidPrice": 307.1, - "askQty": 25, - "askPrice": 331.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23800, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23800.00", - "oi": 745, - "oiChg": 241, - "oiPctChg": 47.817460317460316, - "totTradedVol": 753, - "iv": 12.93, - "ltp": 810, - "change": -212.20000000000005, - "pChange": -20.759146937976915, - "totBuyQty": 3600, - "totSellQty": 5475, - "bidQty": 475, - "bidPrice": 807.55, - "askQty": 475, - "askPrice": 812.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23800.00", - "oi": 8235, - "oiChg": 374, - "oiPctChg": 4.757664419285078, - "totTradedVol": 3807, - "iv": 14.22, - "ltp": 333.15, - "change": 107.54999999999998, - "pChange": 47.67287234042553, - "totBuyQty": 3250, - "totSellQty": 3375, - "bidQty": 125, - "bidPrice": 332.85, - "askQty": 50, - "askPrice": 338.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23850, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23850.00", - "oi": 327, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 4, - "iv": 13.72, - "ltp": 823.75, - "change": -169.14999999999998, - "pChange": -17.03595528250579, - "totBuyQty": 1700, - "totSellQty": 3275, - "bidQty": 200, - "bidPrice": 760.15, - "askQty": 300, - "askPrice": 788.8 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23850.00", - "oi": 142, - "oiChg": -21, - "oiPctChg": -12.883435582822086, - "totTradedVol": 83, - "iv": 14.46, - "ltp": 349.2, - "change": 108.79999999999998, - "pChange": 45.25790349417637, - "totBuyQty": 1525, - "totSellQty": 2650, - "bidQty": 25, - "bidPrice": 347.5, - "askQty": 250, - "askPrice": 355.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23900, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23900.00", - "oi": 580, - "oiChg": -26, - "oiPctChg": -4.29042904290429, - "totTradedVol": 323, - "iv": 12.65, - "ltp": 745.25, - "change": -195.79999999999995, - "pChange": -20.806545879602567, - "totBuyQty": 2150, - "totSellQty": 4775, - "bidQty": 525, - "bidPrice": 741, - "askQty": 125, - "askPrice": 745.2 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23900.00", - "oi": 6364, - "oiChg": 40, - "oiPctChg": 0.6325110689437066, - "totTradedVol": 2445, - "iv": 13.92, - "ltp": 366.45, - "change": 116.79999999999998, - "pChange": 46.785499699579404, - "totBuyQty": 6750, - "totSellQty": 6575, - "bidQty": 200, - "bidPrice": 365.85, - "askQty": 25, - "askPrice": 368.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23950, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE23950.00", - "oi": 137, - "oiChg": 6, - "oiPctChg": 4.580152671755725, - "totTradedVol": 20, - "iv": 12.56, - "ltp": 711.3, - "change": -114.85000000000002, - "pChange": -13.901833807419964, - "totBuyQty": 2575, - "totSellQty": 3850, - "bidQty": 550, - "bidPrice": 708.1, - "askQty": 450, - "askPrice": 714.5 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE23950.00", - "oi": 7, - "oiChg": 1, - "oiPctChg": 16.666666666666668, - "totTradedVol": 13, - "iv": 13.28, - "ltp": 386.35, - "change": 123.15000000000003, - "pChange": 46.78951367781157, - "totBuyQty": 2825, - "totSellQty": 3300, - "bidQty": 1000, - "bidPrice": 382.25, - "askQty": 500, - "askPrice": 387.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24000.00", - "oi": 19158, - "oiChg": 1421, - "oiPctChg": 8.01150138129334, - "totTradedVol": 9191, - "iv": 12.59, - "ltp": 683.05, - "change": -195.10000000000002, - "pChange": -22.21716107726471, - "totBuyQty": 6425, - "totSellQty": 14700, - "bidQty": 25, - "bidPrice": 679.7, - "askQty": 200, - "askPrice": 685.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24000.00", - "oi": 32920, - "oiChg": 1729, - "oiPctChg": 5.54326568561444, - "totTradedVol": 21520, - "iv": 13.85, - "ltp": 401.5, - "change": 121.39999999999998, - "pChange": 43.34166369153872, - "totBuyQty": 12900, - "totSellQty": 12525, - "bidQty": 300, - "bidPrice": 402.85, - "askQty": 50, - "askPrice": 405.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24050, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24050.00", - "oi": 37, - "oiChg": 25, - "oiPctChg": 208.33333333333334, - "totTradedVol": 68, - "iv": 11.99, - "ltp": 656.5, - "change": -238.79999999999995, - "pChange": -26.67262370155255, - "totBuyQty": 3250, - "totSellQty": 4600, - "bidQty": 1275, - "bidPrice": 646.1, - "askQty": 25, - "askPrice": 651.35 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24050.00", - "oi": 60, - "oiChg": -1, - "oiPctChg": -1.639344262295082, - "totTradedVol": 42, - "iv": 13.98, - "ltp": 413.6, - "change": 68.70000000000005, - "pChange": 19.918817048419847, - "totBuyQty": 825, - "totSellQty": 1750, - "bidQty": 200, - "bidPrice": 404.15, - "askQty": 25, - "askPrice": 433.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24100, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24100.00", - "oi": 459, - "oiChg": 45, - "oiPctChg": 10.869565217391305, - "totTradedVol": 625, - "iv": 12.59, - "ltp": 614.85, - "change": -191.14999999999998, - "pChange": -23.715880893300245, - "totBuyQty": 1725, - "totSellQty": 1975, - "bidQty": 25, - "bidPrice": 611.5, - "askQty": 50, - "askPrice": 621.15 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24100.00", - "oi": 1402, - "oiChg": 460, - "oiPctChg": 48.832271762208066, - "totTradedVol": 2385, - "iv": 13.33, - "ltp": 425.8, - "change": 119.69999999999999, - "pChange": 39.104867690297276, - "totBuyQty": 2100, - "totSellQty": 1150, - "bidQty": 500, - "bidPrice": 438.55, - "askQty": 875, - "askPrice": 443.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24150, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24150.00", - "oi": 522, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 63, - "iv": 13.29, - "ltp": 632.7, - "change": -106.19999999999993, - "pChange": -14.372716199756386, - "totBuyQty": 1700, - "totSellQty": 1475, - "bidQty": 200, - "bidPrice": 562.95, - "askQty": 25, - "askPrice": 609.75 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24150.00", - "oi": 127, - "oiChg": -55, - "oiPctChg": -30.21978021978022, - "totTradedVol": 115, - "iv": 13.64, - "ltp": 443.55, - "change": 123.55000000000001, - "pChange": 38.609375, - "totBuyQty": 2650, - "totSellQty": 700, - "bidQty": 25, - "bidPrice": 445.35, - "askQty": 100, - "askPrice": 462.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24200, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24200.00", - "oi": 1246, - "oiChg": 75, - "oiPctChg": 6.4047822374039285, - "totTradedVol": 1978, - "iv": 12.46, - "ltp": 559.55, - "change": -182.05000000000007, - "pChange": -24.548274002157505, - "totBuyQty": 3350, - "totSellQty": 4400, - "bidQty": 25, - "bidPrice": 550.05, - "askQty": 25, - "askPrice": 564.6 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24200.00", - "oi": 4778, - "oiChg": 67, - "oiPctChg": 1.4222033538526853, - "totTradedVol": 2454, - "iv": 13.4, - "ltp": 471.75, - "change": 138, - "pChange": 41.34831460674157, - "totBuyQty": 5175, - "totSellQty": 1775, - "bidQty": 450, - "bidPrice": 475, - "askQty": 100, - "askPrice": 482.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24250, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24250.00", - "oi": 498, - "oiChg": 10, - "oiPctChg": 2.0491803278688523, - "totTradedVol": 90, - "iv": 13.81, - "ltp": 555, - "change": -148.20000000000005, - "pChange": -21.075085324232088, - "totBuyQty": 4550, - "totSellQty": 5225, - "bidQty": 1800, - "bidPrice": 528.2, - "askQty": 725, - "askPrice": 534.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24250.00", - "oi": 155, - "oiChg": -11, - "oiPctChg": -6.626506024096385, - "totTradedVol": 359, - "iv": 12.68, - "ltp": 497.15, - "change": 145.34999999999997, - "pChange": 41.31608868675383, - "totBuyQty": 3200, - "totSellQty": 4950, - "bidQty": 775, - "bidPrice": 498.05, - "askQty": 125, - "askPrice": 503.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24300, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24300.00", - "oi": 1341, - "oiChg": 304, - "oiPctChg": 29.315332690453232, - "totTradedVol": 1493, - "iv": 12.13, - "ltp": 511.35, - "change": -164, - "pChange": -24.28370474568742, - "totBuyQty": 3725, - "totSellQty": 3625, - "bidQty": 100, - "bidPrice": 504, - "askQty": 750, - "askPrice": 509.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24300.00", - "oi": 1787, - "oiChg": -52, - "oiPctChg": -2.8276237085372484, - "totTradedVol": 2297, - "iv": 13.43, - "ltp": 523.6, - "change": 151.20000000000005, - "pChange": 40.60150375939851, - "totBuyQty": 6750, - "totSellQty": 2400, - "bidQty": 725, - "bidPrice": 520.65, - "askQty": 200, - "askPrice": 525.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24350, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24350.00", - "oi": 266, - "oiChg": 185, - "oiPctChg": 228.39506172839506, - "totTradedVol": 235, - "iv": 12.28, - "ltp": 490.3, - "change": -146.99999999999994, - "pChange": -23.066059940373442, - "totBuyQty": 4325, - "totSellQty": 1425, - "bidQty": 25, - "bidPrice": 475.95, - "askQty": 800, - "askPrice": 482.45 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24350.00", - "oi": 86, - "oiChg": -5, - "oiPctChg": -5.4945054945054945, - "totTradedVol": 12, - "iv": 12.7, - "ltp": 500.7, - "change": 108.05000000000001, - "pChange": 27.518145931491155, - "totBuyQty": 1500, - "totSellQty": 800, - "bidQty": 300, - "bidPrice": 520.6, - "askQty": 300, - "askPrice": 559.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24400, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24400.00", - "oi": 1481, - "oiChg": 536, - "oiPctChg": 56.71957671957672, - "totTradedVol": 1186, - "iv": 12.1, - "ltp": 446.75, - "change": -164.29999999999995, - "pChange": -26.88814335979052, - "totBuyQty": 3775, - "totSellQty": 2800, - "bidQty": 150, - "bidPrice": 450, - "askQty": 50, - "askPrice": 457.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24400.00", - "oi": 3563, - "oiChg": 88, - "oiPctChg": 2.5323741007194243, - "totTradedVol": 747, - "iv": 13, - "ltp": 547.95, - "change": 142.95000000000005, - "pChange": 35.29629629629631, - "totBuyQty": 3100, - "totSellQty": 2725, - "bidQty": 325, - "bidPrice": 565.75, - "askQty": 25, - "askPrice": 570.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24450, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24450.00", - "oi": 126, - "oiChg": 6, - "oiPctChg": 5, - "totTradedVol": 27, - "iv": 12.97, - "ltp": 470.85, - "change": -124.44999999999993, - "pChange": -20.905425835713075, - "totBuyQty": 3325, - "totSellQty": 1475, - "bidQty": 900, - "bidPrice": 413.85, - "askQty": 25, - "askPrice": 445.85 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24450.00", - "oi": 29, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 600, - "totSellQty": 2325, - "bidQty": 300, - "bidPrice": 567.15, - "askQty": 300, - "askPrice": 605.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24500, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24500.00", - "oi": 30105, - "oiChg": 11937, - "oiPctChg": 65.70343461030383, - "totTradedVol": 32170, - "iv": 12.02, - "ltp": 406.15, - "change": -151.85000000000002, - "pChange": -27.213261648745522, - "totBuyQty": 10350, - "totSellQty": 11325, - "bidQty": 50, - "bidPrice": 405.75, - "askQty": 200, - "askPrice": 408.6 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24500.00", - "oi": 26525, - "oiChg": 7208, - "oiPctChg": 37.31428275612155, - "totTradedVol": 28793, - "iv": 13.26, - "ltp": 625.1, - "change": 178.85000000000002, - "pChange": 40.07843137254902, - "totBuyQty": 8050, - "totSellQty": 6750, - "bidQty": 200, - "bidPrice": 621.05, - "askQty": 600, - "askPrice": 623.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24550, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24550.00", - "oi": 138, - "oiChg": 4, - "oiPctChg": 2.985074626865672, - "totTradedVol": 14, - "iv": 15.77, - "ltp": 537.7, - "change": 0.8500000000000227, - "pChange": 0.15833100493620614, - "totBuyQty": 3350, - "totSellQty": 700, - "bidQty": 25, - "bidPrice": 372.85, - "askQty": 50, - "askPrice": 402.4 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24550.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 625, - "totSellQty": 2400, - "bidQty": 325, - "bidPrice": 622.15, - "askQty": 300, - "askPrice": 673.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24600, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24600.00", - "oi": 870, - "oiChg": 172, - "oiPctChg": 24.64183381088825, - "totTradedVol": 896, - "iv": 12.11, - "ltp": 365, - "change": -132.3, - "pChange": -26.603659762718685, - "totBuyQty": 3700, - "totSellQty": 3400, - "bidQty": 900, - "bidPrice": 353.2, - "askQty": 25, - "askPrice": 367.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24600.00", - "oi": 1157, - "oiChg": 76, - "oiPctChg": 7.030527289546716, - "totTradedVol": 337, - "iv": 12.83, - "ltp": 640, - "change": 154.64999999999998, - "pChange": 31.863603585041716, - "totBuyQty": 1825, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 661.55, - "askQty": 25, - "askPrice": 679.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24650, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24650.00", - "oi": 65, - "oiChg": 1, - "oiPctChg": 1.5625, - "totTradedVol": 9, - "iv": 12.79, - "ltp": 379, - "change": -94.80000000000001, - "pChange": -20.008442380751372, - "totBuyQty": 4275, - "totSellQty": 650, - "bidQty": 50, - "bidPrice": 324.55, - "askQty": 25, - "askPrice": 356.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24650.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 600, - "totSellQty": 1500, - "bidQty": 300, - "bidPrice": 686.1, - "askQty": 300, - "askPrice": 717.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24700, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24700.00", - "oi": 795, - "oiChg": 142, - "oiPctChg": 21.745788667687595, - "totTradedVol": 940, - "iv": 12.11, - "ltp": 328, - "change": -120.60000000000002, - "pChange": -26.883637984841734, - "totBuyQty": 14425, - "totSellQty": 2350, - "bidQty": 525, - "bidPrice": 322.05, - "askQty": 1175, - "askPrice": 326.5 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24700.00", - "oi": 627, - "oiChg": 332, - "oiPctChg": 112.54237288135593, - "totTradedVol": 569, - "iv": 12.36, - "ltp": 680.75, - "change": 145.70000000000005, - "pChange": 27.23109989720588, - "totBuyQty": 2150, - "totSellQty": 1450, - "bidQty": 250, - "bidPrice": 730.45, - "askQty": 250, - "askPrice": 735.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24750, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24750.00", - "oi": 19, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2425, - "totSellQty": 650, - "bidQty": 25, - "bidPrice": 286.7, - "askQty": 25, - "askPrice": 316.8 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24750.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1500, - "totSellQty": 1500, - "bidQty": 300, - "bidPrice": 744.35, - "askQty": 300, - "askPrice": 779.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24800, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24800.00", - "oi": 1750, - "oiChg": 324, - "oiPctChg": 22.720897615708274, - "totTradedVol": 1382, - "iv": 11.97, - "ltp": 290.55, - "change": -106.94999999999999, - "pChange": -26.905660377358487, - "totBuyQty": 20200, - "totSellQty": 2300, - "bidQty": 100, - "bidPrice": 287.35, - "askQty": 50, - "askPrice": 289.8 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24800.00", - "oi": 354, - "oiChg": 94, - "oiPctChg": 36.15384615384615, - "totTradedVol": 362, - "iv": 13.01, - "ltp": 795, - "change": 216, - "pChange": 37.30569948186528, - "totBuyQty": 1275, - "totSellQty": 800, - "bidQty": 250, - "bidPrice": 796.6, - "askQty": 250, - "askPrice": 801.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24850, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24850.00", - "oi": 11, - "oiChg": 1, - "oiPctChg": 10, - "totTradedVol": 15, - "iv": 12.36, - "ltp": 290.05, - "change": -48.599999999999966, - "pChange": -14.351099955706474, - "totBuyQty": 4200, - "totSellQty": 650, - "bidQty": 300, - "bidPrice": 261.95, - "askQty": 50, - "askPrice": 281.45 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24850.00", - "oi": 1, - "oiChg": 1, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 12.5, - "ltp": 780.35, - "change": -104.04999999999995, - "pChange": -11.765038444142917, - "totBuyQty": 1450, - "totSellQty": 1525, - "bidQty": 25, - "bidPrice": 811.55, - "askQty": 25, - "askPrice": 848.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24900, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24900.00", - "oi": 981, - "oiChg": 248, - "oiPctChg": 33.83356070941337, - "totTradedVol": 664, - "iv": 12.08, - "ltp": 253.15, - "change": -101.15, - "pChange": -28.54925204628846, - "totBuyQty": 23150, - "totSellQty": 3450, - "bidQty": 25, - "bidPrice": 252.45, - "askQty": 1800, - "askPrice": 255.85 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24900.00", - "oi": 124, - "oiChg": 8, - "oiPctChg": 6.896551724137931, - "totTradedVol": 9, - "iv": 5.76, - "ltp": 590.15, - "change": -45.55000000000007, - "pChange": -7.165329557967605, - "totBuyQty": 4100, - "totSellQty": 1525, - "bidQty": 25, - "bidPrice": 852.3, - "askQty": 25, - "askPrice": 877.75 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24950, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE24950.00", - "oi": 138, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9925, - "totSellQty": 700, - "bidQty": 25, - "bidPrice": 229.9, - "askQty": 50, - "askPrice": 261.55 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE24950.00", - "oi": 219, - "oiChg": 218, - "oiPctChg": 21800, - "totTradedVol": 296, - "iv": 13.21, - "ltp": 872.3, - "change": -110.85000000000002, - "pChange": -11.27498347149469, - "totBuyQty": 3175, - "totSellQty": 1550, - "bidQty": 50, - "bidPrice": 890.2, - "askQty": 50, - "askPrice": 897.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25000.00", - "oi": 25175, - "oiChg": 988, - "oiPctChg": 4.08483896307934, - "totTradedVol": 34500, - "iv": 11.84, - "ltp": 226.1, - "change": -83.4, - "pChange": -26.94668820678514, - "totBuyQty": 41200, - "totSellQty": 31625, - "bidQty": 425, - "bidPrice": 225.05, - "askQty": 25, - "askPrice": 226.1 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25000.00", - "oi": 9954, - "oiChg": 955, - "oiPctChg": 10.61229025447272, - "totTradedVol": 9137, - "iv": 12.91, - "ltp": 926.9, - "change": 235.25, - "pChange": 34.012867779946504, - "totBuyQty": 8375, - "totSellQty": 12375, - "bidQty": 200, - "bidPrice": 921.6, - "askQty": 50, - "askPrice": 926.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25050, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25050.00", - "oi": 409, - "oiChg": 273, - "oiPctChg": 200.73529411764707, - "totTradedVol": 497, - "iv": 11.74, - "ltp": 211.1, - "change": -80.79999999999998, - "pChange": -27.6807125727989, - "totBuyQty": 18250, - "totSellQty": 2925, - "bidQty": 200, - "bidPrice": 207.7, - "askQty": 1800, - "askPrice": 210.8 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25050.00", - "oi": 242, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 938.9, - "askQty": 25, - "askPrice": 987.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25100, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25100.00", - "oi": 951, - "oiChg": 341, - "oiPctChg": 55.90163934426229, - "totTradedVol": 906, - "iv": 11.9, - "ltp": 200, - "change": -72.69999999999999, - "pChange": -26.659332599926657, - "totBuyQty": 23550, - "totSellQty": 2450, - "bidQty": 1800, - "bidPrice": 195.4, - "askQty": 25, - "askPrice": 198 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25100.00", - "oi": 351, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2775, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 975.55, - "askQty": 25, - "askPrice": 1016.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25150, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25150.00", - "oi": 6, - "oiChg": 4, - "oiPctChg": 200, - "totTradedVol": 9, - "iv": 11.86, - "ltp": 186.05, - "change": -53.94999999999999, - "pChange": -22.47916666666666, - "totBuyQty": 11400, - "totSellQty": 650, - "bidQty": 300, - "bidPrice": 170.95, - "askQty": 25, - "askPrice": 190.25 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25150.00", - "oi": 2, - "oiChg": 1, - "oiPctChg": 100, - "totTradedVol": 2, - "iv": 10.15, - "ltp": 912, - "change": 36.700000000000045, - "pChange": 4.192848166342974, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1001.35, - "askQty": 25, - "askPrice": 1068.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25200, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25200.00", - "oi": 1089, - "oiChg": 49, - "oiPctChg": 4.711538461538462, - "totTradedVol": 1219, - "iv": 11.73, - "ltp": 170.2, - "change": -66.70000000000002, - "pChange": -28.155339805825246, - "totBuyQty": 29400, - "totSellQty": 3775, - "bidQty": 100, - "bidPrice": 169.6, - "askQty": 1800, - "askPrice": 172.35 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25200.00", - "oi": 86, - "oiChg": 40, - "oiPctChg": 86.95652173913044, - "totTradedVol": 224, - "iv": 12.51, - "ltp": 1024, - "change": 212.45000000000005, - "pChange": 26.17830078245334, - "totBuyQty": 2825, - "totSellQty": 2225, - "bidQty": 50, - "bidPrice": 1068.95, - "askQty": 75, - "askPrice": 1083.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25250, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25250.00", - "oi": 138, - "oiChg": 4, - "oiPctChg": 2.985074626865672, - "totTradedVol": 5, - "iv": 12.18, - "ltp": 172.6, - "change": -47.30000000000001, - "pChange": -21.50977717144157, - "totBuyQty": 11450, - "totSellQty": 725, - "bidQty": 25, - "bidPrice": 147.45, - "askQty": 25, - "askPrice": 170.85 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25250.00", - "oi": 9, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 9, - "iv": 0, - "ltp": 848.95, - "change": -92.14999999999998, - "pChange": -9.79173307831261, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1079.25, - "askQty": 25, - "askPrice": 1141.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25300, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25300.00", - "oi": 1073, - "oiChg": 14, - "oiPctChg": 1.3220018885741265, - "totTradedVol": 1441, - "iv": 11.86, - "ltp": 147.8, - "change": -57.849999999999994, - "pChange": -28.13031850230975, - "totBuyQty": 22300, - "totSellQty": 5700, - "bidQty": 100, - "bidPrice": 147.4, - "askQty": 25, - "askPrice": 149.75 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25300.00", - "oi": 31, - "oiChg": 2, - "oiPctChg": 6.896551724137931, - "totTradedVol": 16, - "iv": 14.01, - "ltp": 1146.85, - "change": 194.3499999999999, - "pChange": 20.404199475065607, - "totBuyQty": 4200, - "totSellQty": 1675, - "bidQty": 25, - "bidPrice": 1126.2, - "askQty": 50, - "askPrice": 1164.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25350, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25350.00", - "oi": 185, - "oiChg": 148, - "oiPctChg": 400, - "totTradedVol": 482, - "iv": 11.74, - "ltp": 138.35, - "change": -33.099999999999994, - "pChange": -19.305920093321667, - "totBuyQty": 14400, - "totSellQty": 2500, - "bidQty": 1800, - "bidPrice": 137.05, - "askQty": 1800, - "askPrice": 139.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25350.00", - "oi": 3, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 9.62, - "ltp": 1057.75, - "change": 81.95000000000005, - "pChange": 8.39823734371798, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1158, - "askQty": 25, - "askPrice": 1214.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25400, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25400.00", - "oi": 470, - "oiChg": 164, - "oiPctChg": 53.59477124183007, - "totTradedVol": 447, - "iv": 11.8, - "ltp": 127.25, - "change": -50.25, - "pChange": -28.30985915492958, - "totBuyQty": 19975, - "totSellQty": 3250, - "bidQty": 1800, - "bidPrice": 127.85, - "askQty": 25, - "askPrice": 129.5 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25400.00", - "oi": 26, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 9.48, - "ltp": 1096.35, - "change": 74.74999999999989, - "pChange": 7.316953797963967, - "totBuyQty": 2725, - "totSellQty": 2000, - "bidQty": 25, - "bidPrice": 1198.65, - "askQty": 25, - "askPrice": 1244.55 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25450, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25450.00", - "oi": 34, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 13200, - "totSellQty": 650, - "bidQty": 300, - "bidPrice": 114.55, - "askQty": 25, - "askPrice": 136.1 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25450.00", - "oi": 15, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 0, - "ltp": 974.95, - "change": -84.59999999999991, - "pChange": -7.984521730923497, - "totBuyQty": 2725, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 1223, - "askQty": 25, - "askPrice": 1288.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25500, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25500.00", - "oi": 16280, - "oiChg": 3612, - "oiPctChg": 28.512788127565518, - "totTradedVol": 28429, - "iv": 11.77, - "ltp": 111.9, - "change": -42.19999999999999, - "pChange": -27.384815055158978, - "totBuyQty": 31500, - "totSellQty": 31125, - "bidQty": 400, - "bidPrice": 111.75, - "askQty": 125, - "askPrice": 112.6 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25500.00", - "oi": 1182, - "oiChg": 101, - "oiPctChg": 9.343200740055504, - "totTradedVol": 507, - "iv": 12.66, - "ltp": 1260, - "change": 242.45000000000005, - "pChange": 23.826838975971704, - "totBuyQty": 7900, - "totSellQty": 1950, - "bidQty": 250, - "bidPrice": 1298.7, - "askQty": 125, - "askPrice": 1314.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25550, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25550.00", - "oi": 146, - "oiChg": 24, - "oiPctChg": 19.672131147540984, - "totTradedVol": 34, - "iv": 11.73, - "ltp": 103, - "change": -42.80000000000001, - "pChange": -29.355281207133068, - "totBuyQty": 14100, - "totSellQty": 875, - "bidQty": 300, - "bidPrice": 94.7, - "askQty": 25, - "askPrice": 119.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25550.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 0, - "ltp": 1048.7, - "change": -8.399999999999864, - "pChange": -0.7946268091949544, - "totBuyQty": 2725, - "totSellQty": 1450, - "bidQty": 25, - "bidPrice": 1322.15, - "askQty": 25, - "askPrice": 1395.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25600, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25600.00", - "oi": 137, - "oiChg": -52, - "oiPctChg": -27.513227513227513, - "totTradedVol": 194, - "iv": 11.69, - "ltp": 94.6, - "change": -37.45000000000002, - "pChange": -28.360469519121555, - "totBuyQty": 13500, - "totSellQty": 1350, - "bidQty": 25, - "bidPrice": 94.05, - "askQty": 100, - "askPrice": 98.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25600.00", - "oi": 72, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 3, - "iv": 0, - "ltp": 1060, - "change": -34.549999999999955, - "pChange": -3.1565483532045095, - "totBuyQty": 3175, - "totSellQty": 950, - "bidQty": 450, - "bidPrice": 1327.05, - "askQty": 25, - "askPrice": 1423.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25650, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25650.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 9675, - "totSellQty": 625, - "bidQty": 25, - "bidPrice": 82.6, - "askQty": 25, - "askPrice": 101.15 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25650.00", - "oi": 10, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 1369.25, - "askQty": 25, - "askPrice": 1452.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25700, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25700.00", - "oi": 1492, - "oiChg": 31, - "oiPctChg": 2.1218343600273784, - "totTradedVol": 745, - "iv": 11.87, - "ltp": 85.5, - "change": -27.099999999999994, - "pChange": -24.06749555950266, - "totBuyQty": 11500, - "totSellQty": 1675, - "bidQty": 25, - "bidPrice": 81.8, - "askQty": 50, - "askPrice": 87.4 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25700.00", - "oi": 64, - "oiChg": 2, - "oiPctChg": 3.225806451612903, - "totTradedVol": 4, - "iv": 9.18, - "ltp": 1354.3, - "change": 396.4, - "pChange": 41.38219020774611, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1425.05, - "askQty": 25, - "askPrice": 1496.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25750, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25750.00", - "oi": 116, - "oiChg": 1, - "oiPctChg": 0.8695652173913043, - "totTradedVol": 7, - "iv": 12.26, - "ltp": 87.4, - "change": -8.25, - "pChange": -8.625196027182437, - "totBuyQty": 8725, - "totSellQty": 600, - "bidQty": 25, - "bidPrice": 67.4, - "askQty": 300, - "askPrice": 91.65 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25750.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1455.1, - "askQty": 25, - "askPrice": 1548.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25800, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25800.00", - "oi": 403, - "oiChg": 27, - "oiPctChg": 7.180851063829787, - "totTradedVol": 647, - "iv": 11.84, - "ltp": 70.1, - "change": -27.35000000000001, - "pChange": -28.065674704976917, - "totBuyQty": 9950, - "totSellQty": 1050, - "bidQty": 125, - "bidPrice": 70.15, - "askQty": 25, - "askPrice": 74.4 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25800.00", - "oi": 25, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3175, - "totSellQty": 950, - "bidQty": 450, - "bidPrice": 1499.55, - "askQty": 25, - "askPrice": 1598.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25850, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25850.00", - "oi": 65, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 10500, - "totSellQty": 400, - "bidQty": 300, - "bidPrice": 56.5, - "askQty": 50, - "askPrice": 74.75 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25850.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 1541.4, - "askQty": 25, - "askPrice": 1644.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25900, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25900.00", - "oi": 304, - "oiChg": -40, - "oiPctChg": -11.627906976744185, - "totTradedVol": 192, - "iv": 11.99, - "ltp": 64.3, - "change": -19.549999999999997, - "pChange": -23.315444245676805, - "totBuyQty": 11850, - "totSellQty": 1950, - "bidQty": 100, - "bidPrice": 60.05, - "askQty": 25, - "askPrice": 64.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25900.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1600.4, - "askQty": 25, - "askPrice": 1692.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25950, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE25950.00", - "oi": 269, - "oiChg": 4, - "oiPctChg": 1.509433962264151, - "totTradedVol": 42, - "iv": 11.77, - "ltp": 58.75, - "change": -18, - "pChange": -23.452768729641694, - "totBuyQty": 10250, - "totSellQty": 1900, - "bidQty": 25, - "bidPrice": 55.25, - "askQty": 50, - "askPrice": 58.9 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE25950.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1630.1, - "askQty": 25, - "askPrice": 1741.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE26000.00", - "oi": 27174, - "oiChg": -875, - "oiPctChg": -3.119540803593711, - "totTradedVol": 33371, - "iv": 11.85, - "ltp": 52.15, - "change": -16.9, - "pChange": -24.475018102824038, - "totBuyQty": 53425, - "totSellQty": 35900, - "bidQty": 400, - "bidPrice": 52.15, - "askQty": 100, - "askPrice": 52.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE26000.00", - "oi": 824, - "oiChg": 207, - "oiPctChg": 33.54943273905997, - "totTradedVol": 539, - "iv": 12.57, - "ltp": 1712.8, - "change": 289.79999999999995, - "pChange": 20.36542515811665, - "totBuyQty": 4600, - "totSellQty": 1950, - "bidQty": 25, - "bidPrice": 1730, - "askQty": 25, - "askPrice": 1739.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26050, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE26050.00", - "oi": 282, - "oiChg": -28, - "oiPctChg": -9.03225806451613, - "totTradedVol": 44, - "iv": 11.95, - "ltp": 49.9, - "change": -7.350000000000001, - "pChange": -12.838427947598255, - "totBuyQty": 11850, - "totSellQty": 2925, - "bidQty": 300, - "bidPrice": 41.6, - "askQty": 25, - "askPrice": 56.25 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE26050.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1718.35, - "askQty": 25, - "askPrice": 1814.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26100, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE26100.00", - "oi": 214, - "oiChg": 5, - "oiPctChg": 2.3923444976076556, - "totTradedVol": 62, - "iv": 11.99, - "ltp": 39.65, - "change": -13.899999999999999, - "pChange": -25.957049486461248, - "totBuyQty": 13850, - "totSellQty": 4200, - "bidQty": 350, - "bidPrice": 46.4, - "askQty": 25, - "askPrice": 49 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE26100.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3175, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1776.95, - "askQty": 25, - "askPrice": 1859.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26150, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE26150.00", - "oi": 64, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8900, - "totSellQty": 2075, - "bidQty": 800, - "bidPrice": 32, - "askQty": 200, - "askPrice": 59.8 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE26150.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 1828.55, - "askQty": 25, - "askPrice": 1912.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26200, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE26200.00", - "oi": 5182, - "oiChg": 3525, - "oiPctChg": 212.7338563669282, - "totTradedVol": 4940, - "iv": 12.27, - "ltp": 45.75, - "change": -4.299999999999997, - "pChange": -8.591408591408586, - "totBuyQty": 15425, - "totSellQty": 9200, - "bidQty": 75, - "bidPrice": 45.65, - "askQty": 25, - "askPrice": 46.45 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE26200.00", - "oi": 1, - "oiChg": 1, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 0, - "ltp": 1780, - "change": -4.4500000000000455, - "pChange": -0.24937655860349384, - "totBuyQty": 3175, - "totSellQty": 950, - "bidQty": 450, - "bidPrice": 1860.05, - "askQty": 25, - "askPrice": 1959.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26250, - "expiry": "30-Jan-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY30-01-2025CE26250.00", - "oi": 1393, - "oiChg": 214, - "oiPctChg": 18.150975402883798, - "totTradedVol": 817, - "iv": 12.32, - "ltp": 40.6, - "change": -8.149999999999999, - "pChange": -16.717948717948715, - "totBuyQty": 13825, - "totSellQty": 4350, - "bidQty": 200, - "bidPrice": 39.5, - "askQty": 125, - "askPrice": 41.95 - }, - "pe": { - "id": "OPTIDXNIFTY30-01-2025PE26250.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2725, - "totSellQty": 950, - "bidQty": 25, - "bidPrice": 1922, - "askQty": 25, - "askPrice": 2013.25 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE18000.00", - "oi": 293, - "oiChg": 22, - "oiPctChg": 8.118081180811808, - "totTradedVol": 46, - "iv": 26.05, - "ltp": 17.7, - "change": -4, - "pChange": -18.433179723502306, - "totBuyQty": 3700, - "totSellQty": 5500, - "bidQty": 1525, - "bidPrice": 17.55, - "askQty": 475, - "askPrice": 19.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE19000.00", - "oi": 224, - "oiChg": 146, - "oiPctChg": 187.17948717948718, - "totTradedVol": 220, - "iv": 23.02, - "ltp": 24.65, - "change": 1.75, - "pChange": 7.641921397379914, - "totBuyQty": 10400, - "totSellQty": 2450, - "bidQty": 100, - "bidPrice": 22.3, - "askQty": 225, - "askPrice": 24.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE20000.00", - "oi": 3923, - "oiChg": 93, - "oiPctChg": 2.4281984334203655, - "totTradedVol": 140, - "iv": 0, - "ltp": 4390.1, - "change": -290.59999999999945, - "pChange": -6.208473091631582, - "totBuyQty": 400, - "totSellQty": 1600, - "bidQty": 50, - "bidPrice": 4393.7, - "askQty": 200, - "askPrice": 4427.2 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE20000.00", - "oi": 13323, - "oiChg": 109, - "oiPctChg": 0.8248827001664901, - "totTradedVol": 1343, - "iv": 20.54, - "ltp": 36, - "change": 5.149999999999999, - "pChange": 16.693679092382492, - "totBuyQty": 39100, - "totSellQty": 11325, - "bidQty": 200, - "bidPrice": 35.35, - "askQty": 275, - "askPrice": 36 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE21000.00", - "oi": 606, - "oiChg": 4, - "oiPctChg": 0.6644518272425249, - "totTradedVol": 7, - "iv": 0, - "ltp": 3524.25, - "change": -239, - "pChange": -6.350893509599416, - "totBuyQty": 200, - "totSellQty": 500, - "bidQty": 25, - "bidPrice": 3447.05, - "askQty": 25, - "askPrice": 3498.9 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE21000.00", - "oi": 14339, - "oiChg": 748, - "oiPctChg": 5.5036421161062465, - "totTradedVol": 2545, - "iv": 18.6, - "ltp": 65.5, - "change": 14.700000000000003, - "pChange": 28.93700787401576, - "totBuyQty": 19875, - "totSellQty": 7225, - "bidQty": 200, - "bidPrice": 65.05, - "askQty": 175, - "askPrice": 65.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE22000.00", - "oi": 7295, - "oiChg": 45, - "oiPctChg": 0.6206896551724138, - "totTradedVol": 243, - "iv": 0, - "ltp": 2612.65, - "change": -242.9000000000001, - "pChange": -8.50624223004325, - "totBuyQty": 825, - "totSellQty": 2225, - "bidQty": 125, - "bidPrice": 2560.3, - "askQty": 100, - "askPrice": 2584.25 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE22000.00", - "oi": 29708, - "oiChg": 1132, - "oiPctChg": 3.961366181410974, - "totTradedVol": 5937, - "iv": 17.11, - "ltp": 128, - "change": 28.849999999999994, - "pChange": 29.097327281896106, - "totBuyQty": 28625, - "totSellQty": 8900, - "bidQty": 50, - "bidPrice": 127.4, - "askQty": 200, - "askPrice": 128.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE23000.00", - "oi": 6751, - "oiChg": 94, - "oiPctChg": 1.4120474688298033, - "totTradedVol": 518, - "iv": 10.41, - "ltp": 1751.9, - "change": -229.64999999999986, - "pChange": -11.589412328732552, - "totBuyQty": 575, - "totSellQty": 2050, - "bidQty": 75, - "bidPrice": 1737.6, - "askQty": 150, - "askPrice": 1750.3 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE23000.00", - "oi": 49415, - "oiChg": 2158, - "oiPctChg": 4.566519245826015, - "totTradedVol": 14002, - "iv": 15.87, - "ltp": 258.15, - "change": 58.74999999999997, - "pChange": 29.463390170511524, - "totBuyQty": 36400, - "totSellQty": 12325, - "bidQty": 500, - "bidPrice": 255.7, - "askQty": 225, - "askPrice": 259.15 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE24000.00", - "oi": 17657, - "oiChg": 88, - "oiPctChg": 0.5008822357561614, - "totTradedVol": 3844, - "iv": 11.64, - "ltp": 1030.45, - "change": -187.79999999999995, - "pChange": -15.415555099528008, - "totBuyQty": 6700, - "totSellQty": 2425, - "bidQty": 100, - "bidPrice": 1026.05, - "askQty": 200, - "askPrice": 1033.05 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE24000.00", - "oi": 38221, - "oiChg": 565, - "oiPctChg": 1.500424899086467, - "totTradedVol": 11763, - "iv": 14.65, - "ltp": 498.25, - "change": 108.10000000000002, - "pChange": 27.707292067153666, - "totBuyQty": 19900, - "totSellQty": 5325, - "bidQty": 200, - "bidPrice": 498.3, - "askQty": 75, - "askPrice": 500.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE25000.00", - "oi": 27740, - "oiChg": 593, - "oiPctChg": 2.184403433160202, - "totTradedVol": 7405, - "iv": 11.35, - "ltp": 494.45, - "change": -107.94999999999999, - "pChange": -17.919986719787513, - "totBuyQty": 32775, - "totSellQty": 9800, - "bidQty": 25, - "bidPrice": 490.1, - "askQty": 100, - "askPrice": 495.05 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE25000.00", - "oi": 28464, - "oiChg": -1151, - "oiPctChg": -3.8865439810906635, - "totTradedVol": 7030, - "iv": 13.93, - "ltp": 925.35, - "change": 183.25, - "pChange": 24.693437542110228, - "totBuyQty": 13275, - "totSellQty": 3775, - "bidQty": 25, - "bidPrice": 922, - "askQty": 50, - "askPrice": 924.9 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE26000.00", - "oi": 27787, - "oiChg": 3888, - "oiPctChg": 16.26846311561153, - "totTradedVol": 14202, - "iv": 11.03, - "ltp": 187.4, - "change": -57.599999999999994, - "pChange": -23.51020408163265, - "totBuyQty": 18875, - "totSellQty": 15725, - "bidQty": 400, - "bidPrice": 183.95, - "askQty": 225, - "askPrice": 187.3 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE26000.00", - "oi": 18537, - "oiChg": 139, - "oiPctChg": 0.7555169040113056, - "totTradedVol": 1513, - "iv": 14.2, - "ltp": 1588.1, - "change": 250.5, - "pChange": 18.72757177033493, - "totBuyQty": 1425, - "totSellQty": 1050, - "bidQty": 25, - "bidPrice": 1579.7, - "askQty": 100, - "askPrice": 1592.1 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE27000.00", - "oi": 25766, - "oiChg": 1095, - "oiPctChg": 4.438409468606866, - "totTradedVol": 7748, - "iv": 11.38, - "ltp": 66.05, - "change": -16.400000000000006, - "pChange": -19.890842935112197, - "totBuyQty": 40200, - "totSellQty": 8725, - "bidQty": 125, - "bidPrice": 66.15, - "askQty": 325, - "askPrice": 67.7 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE27000.00", - "oi": 7995, - "oiChg": 289, - "oiPctChg": 3.7503244225279, - "totTradedVol": 704, - "iv": 16.56, - "ltp": 2420.45, - "change": 276.2999999999997, - "pChange": 12.886225310729179, - "totBuyQty": 2225, - "totSellQty": 1975, - "bidQty": 75, - "bidPrice": 2416.8, - "askQty": 125, - "askPrice": 2443.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 28000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE28000.00", - "oi": 19990, - "oiChg": 733, - "oiPctChg": 3.806408059406969, - "totTradedVol": 1999, - "iv": 12.71, - "ltp": 32.45, - "change": -4.199999999999996, - "pChange": -11.459754433833549, - "totBuyQty": 19125, - "totSellQty": 6375, - "bidQty": 125, - "bidPrice": 32.45, - "askQty": 200, - "askPrice": 33 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE28000.00", - "oi": 5083, - "oiChg": 3, - "oiPctChg": 0.05905511811023622, - "totTradedVol": 235, - "iv": 16.77, - "ltp": 3274.25, - "change": 229, - "pChange": 7.519908053525983, - "totBuyQty": 825, - "totSellQty": 2425, - "bidQty": 25, - "bidPrice": 3327.6, - "askQty": 100, - "askPrice": 3367.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 29000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE29000.00", - "oi": 3670, - "oiChg": 13, - "oiPctChg": 0.3554826360404703, - "totTradedVol": 357, - "iv": 14.71, - "ltp": 24.6, - "change": 0.45000000000000284, - "pChange": 1.8633540372670927, - "totBuyQty": 16950, - "totSellQty": 5625, - "bidQty": 50, - "bidPrice": 23.55, - "askQty": 225, - "askPrice": 24.6 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE29000.00", - "oi": 797, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 275, - "totSellQty": 100, - "bidQty": 25, - "bidPrice": 3603.45, - "askQty": 50, - "askPrice": 4531.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 30000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE30000.00", - "oi": 7140, - "oiChg": 46, - "oiPctChg": 0.6484352974344516, - "totTradedVol": 201, - "iv": 16.42, - "ltp": 17.8, - "change": 0.3500000000000014, - "pChange": 2.005730659025796, - "totBuyQty": 18225, - "totSellQty": 15275, - "bidQty": 125, - "bidPrice": 17.5, - "askQty": 100, - "askPrice": 18.25 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE30000.00", - "oi": 70, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 50, - "totSellQty": 100, - "bidQty": 25, - "bidPrice": 4086.2, - "askQty": 25, - "askPrice": 5499.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 31000, - "expiry": "27-Mar-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY27-03-2025CE31000.00", - "oi": 1128, - "oiChg": 30, - "oiPctChg": 2.73224043715847, - "totTradedVol": 129, - "iv": 17.54, - "ltp": 11.2, - "change": -1.3000000000000007, - "pChange": -10.400000000000006, - "totBuyQty": 96125, - "totSellQty": 5300, - "bidQty": 125, - "bidPrice": 11.2, - "askQty": 1825, - "askPrice": 12 - }, - "pe": { - "id": "OPTIDXNIFTY27-03-2025PE31000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 75, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 5822.15, - "askQty": 25, - "askPrice": 6583.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 14000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE14000.00", - "oi": 121, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 1, - "iv": 34.88, - "ltp": 20.05, - "change": 0, - "pChange": 0, - "totBuyQty": 3600, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 3.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 15000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE15000.00", - "oi": 69, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 31.19, - "ltp": 20.05, - "change": 0, - "pChange": 0, - "totBuyQty": 200, - "totSellQty": 0, - "bidQty": 200, - "bidPrice": 20.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE19000.00", - "oi": 24017, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1825, - "totSellQty": 125, - "bidQty": 775, - "bidPrice": 23.35, - "askQty": 125, - "askPrice": 55.3 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE20000.00", - "oi": 18397, - "oiChg": 36, - "oiPctChg": 0.19606775230107293, - "totTradedVol": 99, - "iv": 19.66, - "ltp": 75, - "change": 9.349999999999994, - "pChange": 14.242193450114232, - "totBuyQty": 2750, - "totSellQty": 3500, - "bidQty": 25, - "bidPrice": 70.4, - "askQty": 300, - "askPrice": 89.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE21000.00", - "oi": 1164, - "oiChg": 44, - "oiPctChg": 3.9285714285714284, - "totTradedVol": 135, - "iv": 18.14, - "ltp": 117.05, - "change": 11.25, - "pChange": 10.633270321361058, - "totBuyQty": 11000, - "totSellQty": 3625, - "bidQty": 50, - "bidPrice": 117.05, - "askQty": 25, - "askPrice": 119.8 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE22000.00", - "oi": 6750, - "oiChg": 363, - "oiPctChg": 5.683419445749178, - "totTradedVol": 792, - "iv": 16.81, - "ltp": 194, - "change": 28.55000000000001, - "pChange": 17.255968570565134, - "totBuyQty": 24850, - "totSellQty": 2800, - "bidQty": 50, - "bidPrice": 194.15, - "askQty": 100, - "askPrice": 197.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE23000.00", - "oi": 1232, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 101, - "iv": 0, - "ltp": 2140, - "change": -237.5, - "pChange": -9.989484752891693, - "totBuyQty": 1250, - "totSellQty": 1175, - "bidQty": 100, - "bidPrice": 2121.35, - "askQty": 100, - "askPrice": 2153.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE23000.00", - "oi": 9299, - "oiChg": 660, - "oiPctChg": 7.639773121889108, - "totTradedVol": 1265, - "iv": 16.04, - "ltp": 341, - "change": 50.39999999999998, - "pChange": 17.34342739160357, - "totBuyQty": 4575, - "totSellQty": 1400, - "bidQty": 50, - "bidPrice": 339.35, - "askQty": 75, - "askPrice": 344.4 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE24000.00", - "oi": 2545, - "oiChg": 124, - "oiPctChg": 5.121850475010326, - "totTradedVol": 769, - "iv": 8.92, - "ltp": 1441.35, - "change": -191.4000000000001, - "pChange": -11.722553973357837, - "totBuyQty": 3150, - "totSellQty": 2125, - "bidQty": 100, - "bidPrice": 1430.85, - "askQty": 50, - "askPrice": 1445.4 - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE24000.00", - "oi": 7873, - "oiChg": 457, - "oiPctChg": 6.16235167206041, - "totTradedVol": 2516, - "iv": 15.44, - "ltp": 568, - "change": 84.39999999999998, - "pChange": 17.45244003308519, - "totBuyQty": 3575, - "totSellQty": 2150, - "bidQty": 25, - "bidPrice": 568.1, - "askQty": 50, - "askPrice": 577.5 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE25000.00", - "oi": 4454, - "oiChg": 67, - "oiPctChg": 1.527239571461135, - "totTradedVol": 877, - "iv": 9.85, - "ltp": 890, - "change": -126.60000000000002, - "pChange": -12.453275624631125, - "totBuyQty": 11825, - "totSellQty": 6575, - "bidQty": 25, - "bidPrice": 889, - "askQty": 100, - "askPrice": 896.8 - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE25000.00", - "oi": 4229, - "oiChg": -303, - "oiPctChg": -6.685789938217122, - "totTradedVol": 1315, - "iv": 15.1, - "ltp": 930, - "change": 139.85000000000002, - "pChange": 17.69917104347276, - "totBuyQty": 1525, - "totSellQty": 1400, - "bidQty": 25, - "bidPrice": 943.6, - "askQty": 100, - "askPrice": 962.2 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE26000.00", - "oi": 3196, - "oiChg": 102, - "oiPctChg": 3.2967032967032965, - "totTradedVol": 655, - "iv": 10.29, - "ltp": 493.3, - "change": -74.30000000000001, - "pChange": -13.090204369274138, - "totBuyQty": 9000, - "totSellQty": 3025, - "bidQty": 25, - "bidPrice": 481.55, - "askQty": 25, - "askPrice": 498.8 - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE26000.00", - "oi": 1712, - "oiChg": -103, - "oiPctChg": -5.674931129476584, - "totTradedVol": 265, - "iv": 15.7, - "ltp": 1480, - "change": 218.75, - "pChange": 17.34390485629336, - "totBuyQty": 1175, - "totSellQty": 975, - "bidQty": 125, - "bidPrice": 1467.25, - "askQty": 100, - "askPrice": 1507.6 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE27000.00", - "oi": 2346, - "oiChg": 129, - "oiPctChg": 5.818673883626523, - "totTradedVol": 419, - "iv": 10.47, - "ltp": 239.85, - "change": -38.79999999999998, - "pChange": -13.924277767809073, - "totBuyQty": 13725, - "totSellQty": 3725, - "bidQty": 75, - "bidPrice": 234.05, - "askQty": 100, - "askPrice": 239.55 - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE27000.00", - "oi": 560, - "oiChg": 107, - "oiPctChg": 23.620309050772626, - "totTradedVol": 212, - "iv": 17.08, - "ltp": 2198.5, - "change": 286.1500000000001, - "pChange": 14.963265092687013, - "totBuyQty": 250, - "totSellQty": 825, - "bidQty": 25, - "bidPrice": 2159.7, - "askQty": 75, - "askPrice": 2185.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 28000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE28000.00", - "oi": 1645, - "oiChg": -91, - "oiPctChg": -5.241935483870968, - "totTradedVol": 304, - "iv": 10.63, - "ltp": 105.7, - "change": -17.700000000000003, - "pChange": -14.34359805510535, - "totBuyQty": 9525, - "totSellQty": 3850, - "bidQty": 125, - "bidPrice": 105.5, - "askQty": 100, - "askPrice": 109.75 - }, - "pe": { - "id": "OPTIDXNIFTY26-06-2025PE28000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 2190.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 29000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE29000.00", - "oi": 1639, - "oiChg": -30, - "oiPctChg": -1.7974835230677053, - "totTradedVol": 98, - "iv": 11.71, - "ltp": 70, - "change": -8.950000000000003, - "pChange": -11.336288790373656, - "totBuyQty": 10825, - "totSellQty": 4275, - "bidQty": 100, - "bidPrice": 65.05, - "askQty": 225, - "askPrice": 70 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 30000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE30000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 15450, - "totSellQty": 1000, - "bidQty": 300, - "bidPrice": 22, - "askQty": 1000, - "askPrice": 60 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 31000, - "expiry": "26-Jun-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY26-06-2025CE31000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 8800, - "totSellQty": 0, - "bidQty": 1800, - "bidPrice": 4.2, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-09-2025PE19000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 29.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-09-2025PE20000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 49.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-09-2025PE21000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 110.2, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-09-2025PE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 125.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-09-2025PE24000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 408, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-09-2025CE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 0, - "bidQty": 0, - "bidPrice": 0, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-09-2025CE26000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 50, - "totSellQty": 0, - "bidQty": 50, - "bidPrice": 0.1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY25-09-2025PE26000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 1033, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27000, - "expiry": "25-Sep-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-09-2025CE27000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 200, - "bidPrice": 0.15, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 13000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE13000.00", - "oi": 9, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 750, - "totSellQty": 50, - "bidQty": 750, - "bidPrice": 0.05, - "askQty": 50, - "askPrice": 20.05 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 15000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE15000.00", - "oi": 47, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 24.8, - "ltp": 20.05, - "change": -0.75, - "pChange": -3.6057692307692304, - "totBuyQty": 450, - "totSellQty": 0, - "bidQty": 450, - "bidPrice": 20.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 16000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE16000.00", - "oi": 90, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 2, - "iv": 22.3, - "ltp": 20.2, - "change": -0.10000000000000142, - "pChange": -0.4926108374384306, - "totBuyQty": 775, - "totSellQty": 0, - "bidQty": 750, - "bidPrice": 20.2, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 16500, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE16500.00", - "oi": 104, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 950, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 20.65, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 17000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE17000.00", - "oi": 25, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 125, - "bidQty": 0, - "bidPrice": 0, - "askQty": 100, - "askPrice": 9000 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE17000.00", - "oi": 117, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2500, - "totSellQty": 25, - "bidQty": 100, - "bidPrice": 21.45, - "askQty": 25, - "askPrice": 35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE18000.00", - "oi": 266, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 75, - "totSellQty": 250, - "bidQty": 25, - "bidPrice": 6530.1, - "askQty": 25, - "askPrice": 6999.95 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE18000.00", - "oi": 119, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1300, - "totSellQty": 25, - "bidQty": 100, - "bidPrice": 25.4, - "askQty": 25, - "askPrice": 70 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE19000.00", - "oi": 129, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 400, - "totSellQty": 0, - "bidQty": 400, - "bidPrice": 5520, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE19000.00", - "oi": 407, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1625, - "totSellQty": 100, - "bidQty": 500, - "bidPrice": 37.15, - "askQty": 25, - "askPrice": 80 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19500, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE19500.00", - "oi": 67, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 75, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 5220, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE20000.00", - "oi": 191, - "oiChg": 9, - "oiPctChg": 4.945054945054945, - "totTradedVol": 23, - "iv": 0, - "ltp": 5280, - "change": -202.85000000000036, - "pChange": -3.699718212243639, - "totBuyQty": 150, - "totSellQty": 50, - "bidQty": 25, - "bidPrice": 5065, - "askQty": 25, - "askPrice": 5350.2 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE20000.00", - "oi": 1477, - "oiChg": 10, - "oiPctChg": 0.6816632583503749, - "totTradedVol": 145, - "iv": 19.76, - "ltp": 154, - "change": 13.199999999999989, - "pChange": 9.374999999999991, - "totBuyQty": 1950, - "totSellQty": 800, - "bidQty": 25, - "bidPrice": 148, - "askQty": 100, - "askPrice": 153.35 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE21000.00", - "oi": 17, - "oiChg": 2, - "oiPctChg": 13.333333333333334, - "totTradedVol": 4, - "iv": 0, - "ltp": 4388.25, - "change": 240.25, - "pChange": 5.791947926711669, - "totBuyQty": 375, - "totSellQty": 25, - "bidQty": 25, - "bidPrice": 4200.05, - "askQty": 25, - "askPrice": 4442.65 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE21000.00", - "oi": 1513, - "oiChg": 73, - "oiPctChg": 5.069444444444445, - "totTradedVol": 150, - "iv": 18.89, - "ltp": 224, - "change": 20.849999999999994, - "pChange": 10.263352202805805, - "totBuyQty": 5075, - "totSellQty": 2475, - "bidQty": 100, - "bidPrice": 222.5, - "askQty": 100, - "askPrice": 235.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE22000.00", - "oi": 209, - "oiChg": -1, - "oiPctChg": -0.47619047619047616, - "totTradedVol": 5, - "iv": 0, - "ltp": 3710, - "change": -138.55000000000018, - "pChange": -3.6000571643865915, - "totBuyQty": 75, - "totSellQty": 25, - "bidQty": 25, - "bidPrice": 3497.7, - "askQty": 25, - "askPrice": 3620 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE22000.00", - "oi": 9613, - "oiChg": 195, - "oiPctChg": 2.0705032915693353, - "totTradedVol": 404, - "iv": 18.38, - "ltp": 339.95, - "change": 33.099999999999966, - "pChange": 10.787029493237727, - "totBuyQty": 5300, - "totSellQty": 1325, - "bidQty": 100, - "bidPrice": 335.25, - "askQty": 25, - "askPrice": 340 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE23000.00", - "oi": 1716, - "oiChg": 63, - "oiPctChg": 3.8112522686025407, - "totTradedVol": 130, - "iv": 0, - "ltp": 2895.55, - "change": -234.39999999999964, - "pChange": -7.488937522963614, - "totBuyQty": 400, - "totSellQty": 400, - "bidQty": 25, - "bidPrice": 2887.35, - "askQty": 100, - "askPrice": 2920.95 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE23000.00", - "oi": 9165, - "oiChg": 35, - "oiPctChg": 0.3833515881708653, - "totTradedVol": 753, - "iv": 17.97, - "ltp": 510.85, - "change": 54.150000000000034, - "pChange": 11.856798773812137, - "totBuyQty": 6650, - "totSellQty": 2275, - "bidQty": 100, - "bidPrice": 507.4, - "askQty": 100, - "askPrice": 510.85 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE24000.00", - "oi": 2338, - "oiChg": 69, - "oiPctChg": 3.0409872190392244, - "totTradedVol": 316, - "iv": 0, - "ltp": 2255, - "change": -191.44999999999982, - "pChange": -7.825624885037497, - "totBuyQty": 1875, - "totSellQty": 2175, - "bidQty": 25, - "bidPrice": 2251, - "askQty": 75, - "askPrice": 2271 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE24000.00", - "oi": 15191, - "oiChg": 84, - "oiPctChg": 0.5560336267955253, - "totTradedVol": 1054, - "iv": 17.77, - "ltp": 744, - "change": 83.85000000000002, - "pChange": 12.701658713928657, - "totBuyQty": 5400, - "totSellQty": 5500, - "bidQty": 100, - "bidPrice": 740.6, - "askQty": 50, - "askPrice": 757.45 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE25000.00", - "oi": 3592, - "oiChg": -59, - "oiPctChg": -1.6159956176390031, - "totTradedVol": 408, - "iv": 7.09, - "ltp": 1673.4, - "change": -159.79999999999995, - "pChange": -8.71699759982544, - "totBuyQty": 2300, - "totSellQty": 1725, - "bidQty": 25, - "bidPrice": 1643.05, - "askQty": 25, - "askPrice": 1679.4 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE25000.00", - "oi": 9242, - "oiChg": -216, - "oiPctChg": -2.283780926200042, - "totTradedVol": 1045, - "iv": 17.26, - "ltp": 1042.1, - "change": 125.29999999999995, - "pChange": 13.667102966841183, - "totBuyQty": 2325, - "totSellQty": 3325, - "bidQty": 150, - "bidPrice": 1025, - "askQty": 150, - "askPrice": 1049 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE26000.00", - "oi": 3325, - "oiChg": 71, - "oiPctChg": 2.1819299323909034, - "totTradedVol": 586, - "iv": 8.35, - "ltp": 1138, - "change": -142.6500000000001, - "pChange": -11.138874790145636, - "totBuyQty": 800, - "totSellQty": 2850, - "bidQty": 50, - "bidPrice": 1122.75, - "askQty": 25, - "askPrice": 1138 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE26000.00", - "oi": 3990, - "oiChg": 55, - "oiPctChg": 1.3977128335451081, - "totTradedVol": 360, - "iv": 16.65, - "ltp": 1388.35, - "change": 145, - "pChange": 11.662042063779307, - "totBuyQty": 4100, - "totSellQty": 2150, - "bidQty": 100, - "bidPrice": 1359.95, - "askQty": 50, - "askPrice": 1400 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 27000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE27000.00", - "oi": 6285, - "oiChg": 76, - "oiPctChg": 1.224029634401675, - "totTradedVol": 354, - "iv": 9.13, - "ltp": 758.75, - "change": -101.14999999999998, - "pChange": -11.762995697174087, - "totBuyQty": 2675, - "totSellQty": 2350, - "bidQty": 50, - "bidPrice": 756.55, - "askQty": 100, - "askPrice": 778.15 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE27000.00", - "oi": 2379, - "oiChg": -34, - "oiPctChg": -1.4090343970161625, - "totTradedVol": 144, - "iv": 17.18, - "ltp": 1870.6, - "change": 172.5, - "pChange": 10.158412343207115, - "totBuyQty": 2050, - "totSellQty": 2350, - "bidQty": 25, - "bidPrice": 1872.45, - "askQty": 100, - "askPrice": 1898.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 28000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE28000.00", - "oi": 2931, - "oiChg": 146, - "oiPctChg": 5.242369838420108, - "totTradedVol": 417, - "iv": 9.73, - "ltp": 495, - "change": -72.95000000000005, - "pChange": -12.844440531736955, - "totBuyQty": 2250, - "totSellQty": 525, - "bidQty": 25, - "bidPrice": 490, - "askQty": 100, - "askPrice": 505 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE28000.00", - "oi": 3111, - "oiChg": 145, - "oiPctChg": 4.888739042481457, - "totTradedVol": 253, - "iv": 17.8, - "ltp": 2474.3, - "change": 173.35000000000036, - "pChange": 7.533844716312843, - "totBuyQty": 1200, - "totSellQty": 2450, - "bidQty": 100, - "bidPrice": 2447.3, - "askQty": 75, - "askPrice": 2529.95 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 29000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE29000.00", - "oi": 1148, - "oiChg": 55, - "oiPctChg": 5.032021957913998, - "totTradedVol": 87, - "iv": 10.07, - "ltp": 305.9, - "change": -24.100000000000023, - "pChange": -7.30303030303031, - "totBuyQty": 1175, - "totSellQty": 975, - "bidQty": 75, - "bidPrice": 288, - "askQty": 250, - "askPrice": 304.9 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE29000.00", - "oi": 38, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 25, - "bidQty": 25, - "bidPrice": 3095.5, - "askQty": 25, - "askPrice": 3500 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 30000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE30000.00", - "oi": 583, - "oiChg": 9, - "oiPctChg": 1.5679442508710801, - "totTradedVol": 48, - "iv": 9.88, - "ltp": 158, - "change": -28.099999999999994, - "pChange": -15.099408919935517, - "totBuyQty": 1275, - "totSellQty": 1250, - "bidQty": 50, - "bidPrice": 158, - "askQty": 25, - "askPrice": 165 - }, - "pe": { - "id": "OPTIDXNIFTY24-12-2025PE30000.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 2962.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 31000, - "expiry": "24-Dec-2025", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY24-12-2025CE31000.00", - "oi": 262, - "oiChg": 34, - "oiPctChg": 14.912280701754385, - "totTradedVol": 76, - "iv": 10.87, - "ltp": 115, - "change": -23.75, - "pChange": -17.117117117117118, - "totBuyQty": 1300, - "totSellQty": 450, - "bidQty": 50, - "bidPrice": 118, - "askQty": 25, - "askPrice": 120 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 12000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE12000.00", - "oi": 23, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 20.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 14000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE14000.00", - "oi": 37, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 450, - "totSellQty": 0, - "bidQty": 450, - "bidPrice": 20.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 15000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE15000.00", - "oi": 34, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 700, - "totSellQty": 0, - "bidQty": 700, - "bidPrice": 20.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 16000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE16000.00", - "oi": 20, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 450, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 21.4, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE18000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 33.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE19000.00", - "oi": 7, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 550, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 52.9, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE20000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 550, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 100.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE21000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 550, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 196.65, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 550, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 353.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE23000.00", - "oi": 16, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 650, - "totSellQty": 25, - "bidQty": 250, - "bidPrice": 503.05, - "askQty": 25, - "askPrice": 700 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-06-2026CE24000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 50, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 1855, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY25-06-2026PE24000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 600, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 561.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-06-2026CE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 25, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 1550, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-06-2026CE26000.00", - "oi": 25, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 24, - "iv": 0, - "ltp": 1490.25, - "change": -183.0999999999999, - "pChange": -10.94212209041742, - "totBuyQty": 550, - "totSellQty": 100, - "bidQty": 100, - "bidPrice": 1490.3, - "askQty": 25, - "askPrice": 1619.85 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 31000, - "expiry": "25-Jun-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY25-06-2026CE31000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 350, - "totSellQty": 0, - "bidQty": 300, - "bidPrice": 1, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 12000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE12000.00", - "oi": 32, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 500, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 20.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 13000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE13000.00", - "oi": 6, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 500, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 20.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 14000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE14000.00", - "oi": 47, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 0, - "bidQty": 1275, - "bidPrice": 20.2, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 15000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE15000.00", - "oi": 86, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 975, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 21.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 16000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE16000.00", - "oi": 96, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1275, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 23.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 17000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE17000.00", - "oi": 120, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1400, - "totSellQty": 50, - "bidQty": 750, - "bidPrice": 29.05, - "askQty": 50, - "askPrice": 129.65 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE18000.00", - "oi": 211, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1050, - "totSellQty": 200, - "bidQty": 500, - "bidPrice": 41.6, - "askQty": 200, - "askPrice": 227 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE19000.00", - "oi": 97, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1700, - "totSellQty": 0, - "bidQty": 500, - "bidPrice": 66.15, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE20000.00", - "oi": 170, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1450, - "totSellQty": 250, - "bidQty": 300, - "bidPrice": 125.8, - "askQty": 250, - "askPrice": 550 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE21000.00", - "oi": 28, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1075, - "totSellQty": 0, - "bidQty": 525, - "bidPrice": 225.55, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE22000.00", - "oi": 8, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1075, - "totSellQty": 0, - "bidQty": 525, - "bidPrice": 377.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY31-12-2026CE23000.00", - "oi": 20, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 0, - "totSellQty": 50, - "bidQty": 0, - "bidPrice": 0, - "askQty": 50, - "askPrice": 6000 - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE23000.00", - "oi": 498, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2575, - "totSellQty": 100, - "bidQty": 250, - "bidPrice": 552.05, - "askQty": 50, - "askPrice": 750 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY31-12-2026CE24000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 50, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 2101, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE24000.00", - "oi": 183, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 3425, - "totSellQty": 100, - "bidQty": 250, - "bidPrice": 731.05, - "askQty": 100, - "askPrice": 1098.7 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY31-12-2026CE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 25, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 1850, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE25000.00", - "oi": 11, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 1800, - "totSellQty": 25, - "bidQty": 250, - "bidPrice": 810.05, - "askQty": 25, - "askPrice": 1750 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 26000, - "expiry": "31-Dec-2026", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": "OPTIDXNIFTY31-12-2026CE26000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 25, - "totSellQty": 0, - "bidQty": 25, - "bidPrice": 1650, - "askQty": 0, - "askPrice": 0 - }, - "pe": { - "id": "OPTIDXNIFTY31-12-2026PE26000.00", - "oi": 9, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 2275, - "totSellQty": 25, - "bidQty": 100, - "bidPrice": 920.05, - "askQty": 25, - "askPrice": 2828 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE18000.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 47.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE19000.00", - "oi": 21, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 76.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE20000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 139.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE21000.00", - "oi": 8, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 236.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 378.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE23000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 574.95, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE24000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 835.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "24-Jun-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY24-06-2027PE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 571, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 15000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE15000.00", - "oi": 14, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 450, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 23, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 17000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE17000.00", - "oi": 568, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 350, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 36.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE18000.00", - "oi": 404, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 500, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 53.4, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE19000.00", - "oi": 31, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 85.85, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE20000.00", - "oi": 106, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 725, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 148.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE21000.00", - "oi": 2, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 241.85, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE22000.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 374.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE23000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 552.95, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE24000.00", - "oi": 6, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 785.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "30-Dec-2027", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY30-12-2027PE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 530, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE19000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 91.15, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE20000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 152.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE21000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 240.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE22000.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 362.55, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE23000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 525.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE24000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 733.75, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "29-Jun-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY29-06-2028PE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 350, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 993.55, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 18000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE18000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 100, - "totSellQty": 0, - "bidQty": 100, - "bidPrice": 13.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE19000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 94.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE20000.00", - "oi": 62, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 600, - "totSellQty": 525, - "bidQty": 600, - "bidPrice": 150.5, - "askQty": 500, - "askPrice": 650 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE21000.00", - "oi": 49, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 75, - "bidQty": 250, - "bidPrice": 235.15, - "askQty": 25, - "askPrice": 770 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE22000.00", - "oi": 5, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 375, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 347.8, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE23000.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 495.6, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE24000.00", - "oi": 20, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 750, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 683.5, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "28-Dec-2028", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-12-2028PE25000.00", - "oi": 4, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 3, - "iv": 21.89, - "ltp": 999, - "change": -312, - "pChange": -23.79862700228833, - "totBuyQty": 325, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 920.05, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 19000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE19000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 94.8, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 20000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE20000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 150.1, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 21000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE21000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 227.25, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 22000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE22000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 330.9, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 23000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE23000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 465.3, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 24000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE24000.00", - "oi": 1, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 250, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 634.7, - "askQty": 0, - "askPrice": 0 - } - }, - { - "ts": "2024-11-28 14:45:00+05:30", - "strike": 25000, - "expiry": "28-Jun-2029", - "underlying": "NIFTY", - "underlyingValue": 23924.85, - "ce": { - "id": null, - "oi": null, - "oiChg": null, - "oiPctChg": null, - "totTradedVol": null, - "iv": null, - "ltp": null, - "change": null, - "pChange": null, - "totBuyQty": null, - "totSellQty": null, - "bidQty": null, - "bidPrice": null, - "askQty": null, - "askPrice": null - }, - "pe": { - "id": "OPTIDXNIFTY28-06-2029PE25000.00", - "oi": 0, - "oiChg": 0, - "oiPctChg": 0, - "totTradedVol": 0, - "iv": 0, - "ltp": 0, - "change": 0, - "pChange": 0, - "totBuyQty": 350, - "totSellQty": 0, - "bidQty": 250, - "bidPrice": 842.7, - "askQty": 0, - "askPrice": 0 - } - } -] \ No newline at end of file diff --git a/utils_v2/nse/options/index.py b/utils_v2/nse/options/index.py deleted file mode 100644 index e2d567a..0000000 --- a/utils_v2/nse/options/index.py +++ /dev/null @@ -1,281 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Thursday, 28th Nov., 2024 - - OBJECTIVE: - - To provide a way to retrieve dates of important events like financial-results, stock-splits, fund-raising, etc. - from NSE's portal. - - NOTE: This method involves web scraping. It is good for proof-of-concept development, but it is recommended that - more professional data-sources be used when the product starts becoming mature. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# My utils: -from utils_v2.string import json -from utils_v2.date_time import date_time - -# NSE-related utils: -from utils_v2.nse.base import AsyncNSEBase -from utils_v2.nse.models.data.api_call import NSEApiResponse - -# To make REST-ful API calls: -import httpx - -# To work with date and time: -import datetime - -# To work with datatypes: -from typing import Any, List - -# For asynchronous activities: -import asyncio - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class NSEIndexOptionChain(AsyncNSEBase): - - # Index Names: - INDEX_NIFTY = "NIFTY" - INDEX_BANKNIFTY = "BANKNIFTY" - INDEX_FINNIFTY = "FINNIFTY" - INDEX_MIDCPNIFTY = "MIDCPNIFTY" - INDEX_NIFTYNXT50 = "NIFTYNXT50" - - def __init__( - self, - http_client: httpx.AsyncClient, - debug = True, - debug_prefix = "NSE (IdxOC) | ", - debug_only_errors = True - ): - - # Pass on the initialization to the parent: - super().__init__( - base_url = r"https://www.nseindia.com/option-chain", - data_url = r"https://www.nseindia.com/api/option-chain-indices", - http_client = http_client, - debug = debug, - debug_prefix = debug_prefix, - debug_only_errors = debug_only_errors - ) - - async def get_data( - self, - index_name: str, - return_raw: bool = False - ) -> NSEApiResponse: - - """ - To get the data of the corporate event calendar. - :param index_name: The name of the index whose option chain is needed. Use one of the options created within the - scope of this class. - :param return_raw: Whether you want the raw JSON from NSE or you want it formatted. - :return: The raw or formatted event calendar data in the 'data' field of the response model. - """ - - # Make the API call: - api_response = await self.get(params = {"symbol": index_name}) - - # If the API call was successful: - if api_response.httpCode in [200]: - api_response.success = True - if return_raw: api_response.data = await api_response.get_json() - else: - try: api_response.data = self.format_data( - raw_json = await api_response.get_json(), - timestamp = date_time.get_current_utc_date_time(as_string = True), - raise_exception = True - ) - except Exception as exception: - api_response.exception = exception - api_response.success = False - - # Done here: - return api_response - - @staticmethod - def format_data( - raw_json: dict, - timestamp: datetime.datetime = None, - raise_exception: bool = False - ) -> List[dict] | None: - - """ - We format the data here to be able to retrieve it properly later. - :param raw_json: The raw data as scraped from NSE. - :param timestamp: The timestamp at which the data was scraped. This shall be useful for data retrieval from the - database, later. - :param raise_exception: If set to True, any exception will be propagated. If set to False, any exception will be - suppressed internally. - :return: The formatted data if successful, else None. - """ - - # Can't do anything if the chain itself is null: - if raw_json is None: return raw_json - - # Start by assuming failure: - formatted_chain = None - - # Ensure that we've got a proper timestamp: - if timestamp is None: timestamp = date_time.get_current_utc_date_time(as_string = False) - - try: - - # Start at the expiry-level: - expiry_dates = raw_json["records"]["expiryDates"] - semi_formatted_chain = {e: None for e in expiry_dates} - - # Iterate through the raw records and start plugging them into the formatted records: - for record in raw_json["records"]["data"]: - - # Extract some variables: - expiry_date = record["expiryDate"] - strike_price = record["strikePrice"] - - # Start building the needed structure: - if semi_formatted_chain.get(expiry_date) is None: semi_formatted_chain[expiry_date] = {} - if semi_formatted_chain[expiry_date].get(strike_price) is None: - semi_formatted_chain[expiry_date][strike_price] = { - "ts": timestamp, - "strike": record["strikePrice"], - "expiry": record["expiryDate"] - } - - # Add the CE/PE data: - for right in ["CE", "PE"]: - right_data = record.get(right, {}) - if right_data: - semi_formatted_chain[expiry_date][strike_price]["underlying"] = right_data["underlying"] - semi_formatted_chain[expiry_date][strike_price]["underlyingValue"] = right_data["underlyingValue"] - semi_formatted_chain[expiry_date][strike_price][right.lower()] = {} - semi_formatted_chain[expiry_date][strike_price][right.lower()] = { - "id": right_data.get("identifier"), - "oi": right_data.get("openInterest"), - "oiChg": right_data.get("changeinOpenInterest"), - "oiPctChg": right_data.get("pchangeinOpenInterest"), - "totTradedVol": right_data.get("totalTradedVolume"), - "iv": right_data.get("impliedVolatility"), - "ltp": right_data.get("lastPrice"), - "change": right_data.get("change"), - "pChange": right_data.get("pChange"), - "totBuyQty": right_data.get("totalBuyQuantity"), - "totSellQty": right_data.get("totalSellQuantity"), - "bidQty": right_data.get("bidQty"), - "bidPrice": right_data.get("bidprice"), - "askQty": right_data.get("askQty"), - "askPrice": right_data.get("askPrice") - } - - # Final formatting: - formatted_chain = [] - for expiry, _0 in semi_formatted_chain.items(): - if isinstance(_0, dict): - for strike_price, _1 in _0.items(): - _1["ce"] = _1.pop("ce") - _1["pe"] = _1.pop("pe") - formatted_chain.append(_1) - - # If something goes wrong: - except Exception as exception: - formatted_chain = None - if raise_exception: raise - - # Done here: - return formatted_chain - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - async def main(): - - # Create an HTTP client: - test_client = httpx.AsyncClient( - limits = httpx.Limits( - max_connections = 100, # ............ Maximum number of connections allowed in the pool. - max_keepalive_connections = 50, # ... Maximum number of connections that can be kept alive. - ), - timeout = httpx.Timeout( - connect = 2.5, # ... Shorter connection timeout. - read = 2.5, # ...... Like what EasyEcom gives. - write = 10.0, # .... Time to wait for sending data. - pool = 120.0 # ..... Time to wait for a free connection from the pool. - ) - ) - - # Create an instance of the scraper, and refresh its cookies: - my_nse = NSEIndexOptionChain(http_client = test_client) - - # Get and show the data: - api_response = await my_nse.get_data( - index_name = NSEIndexOptionChain.INDEX_NIFTY, - return_raw = False - ) - print("SUMMARY:", api_response.to_markdown(), "\n---\n\n") - if api_response.success: print("OPTION CHAIN:", json.to_string(api_response.data, default = str)) - - asyncio.run(main()) diff --git a/utils_v2/payments/__init__.py b/utils_v2/payments/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/payments/safaricom/__init__.py b/utils_v2/payments/safaricom/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/payments/safaricom/models/__init__.py b/utils_v2/payments/safaricom/models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/payments/safaricom/models/data/__init__.py b/utils_v2/payments/safaricom/models/data/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/payments/safaricom/models/data/m_pesa_express.py b/utils_v2/payments/safaricom/models/data/m_pesa_express.py deleted file mode 100644 index dfef608..0000000 --- a/utils_v2/payments/safaricom/models/data/m_pesa_express.py +++ /dev/null @@ -1,253 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Wednesday, 30th Oct., 2024. - - OBJECTIVE: - - To provide data model(s) for describing the data needed for M-Pesa Express transactions. - - REFERENCES: - - 1. Documentation: https://developer.safaricom.co.ke/APIs/Authorization - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For making data behaviour_models: -from pydantic import BaseModel, Field, field_validator, model_validator, AwareDatetime -from typing import Optional, Literal, Union, Dict, List, Any - -# My utils: -from utils_v2.string import json -from utils_v2.string import regex -from utils_v2.date_time import date_time - -# To work with date and time: -import datetime -import dateparser - -# To make API calls: -import httpx - -# For asynchronous activities: -import asyncio - -# Misc: -import base64 - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# M-Pesa URLs: -M_PESA_EXPRESS_AUTH_API_URL = r"https://api.safaricom.co.ke/oauth/v1/generate" - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -class MPesaExpressAuthorization(BaseModel): - - # Pass the following values from outside. - # These will set the model up. - - consumerKey: str = Field( - description = "the app's consumer key given by safaricom; found in 'my apps'", - frozen = True - ) - - consumerSecret: str = Field( - description = "the app's consumer secret given by safaricom; found in 'my apps'", - frozen = True - ) - - shortCode: str = Field( - description = "your app's business short code; found in 'my apps'", - frozen = True - ) - - appPasskey: str = Field( - description = "your app's passkey; taken from human representative", - frozen = True - ) - - callbackUrl: str = Field( - description = "the url for m-pesa to inform you about a successful or failed payment", - frozen = True, - pattern = regex.REGEX_HTTPS_URL - ) - - # Don't pass these values from outside, - # these will be set and used internally. - - accessToken: str | None = Field( - description = "the token received after authorization", - frozen = False, - default = None - ) - - expiresAt: AwareDatetime = Field( - description = "the time (utc) at which the token will expire", - frozen = False, - default = date_time.as_if_timezone( - date_time.parse_date_time(0), - timezone = date_time.TIMEZONE_UTC - ) - ) - - lastRefresh: datetime.datetime | None = Field( - description = "the time at which the token was last refreshed", - frozen = False, - default = date_time.as_if_timezone( - date_time.parse_date_time(0), - timezone = date_time.TIMEZONE_UTC - ) - ) - - # ┏┓ ┏• - # ┃ ┏┓┏┓╋┓┏┓ - # ┗┛┗┛┛┗┛┗┗┫ - # ┛ - - class Config: - extra = "forbid" - - # ┏┓ • - # ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏ - # ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛ - # ┛ - - @property - def expired(self) -> bool: - return True if date_time.get_current_utc_date_time() >= self.expiresAt else False - - @property - def ttl(self): - ttl = (self.expiresAt - date_time.get_current_utc_date_time()).total_seconds() - return max(0, ttl) - - # ┏┓ ┏┓ - # ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏ - # ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛ - - async def get_access_token( - self, - http_client: httpx.AsyncClient = None - ) -> str | None: - - """ - If you just pick the 'accessToken' variable, you may get a stale token. Using this method will ensure that the - token is refreshed, if needed, before being handed to you. - :param http_client: A preset HTTP client to use. If not given, one will be created inside and used to make the - API call. Giving it from outside could save time in setting up a new client. You may start passing this when - you notice delays. - :return: Either a valid access token or None if the refreshing fails. - """ - - # If the token is stale: - if self.expired: - - # Prepare the inputs: - url = M_PESA_EXPRESS_AUTH_API_URL - key = base64.b64encode(f"{self.consumerKey}:{self.consumerSecret}".encode()).decode() - input_headers = {"Authorization": "Basic " + key} - input_params = {"grant_type": "client_credentials"} - - # make the API call: - if http_client: - api_response = await http_client.get( - url = url, - headers = input_headers, - params = input_params - ) - else: - async with httpx.AsyncClient() as http_client: - api_response = await http_client.get( - url = url, - headers = input_headers, - params = input_params - ) - - # If the API call was successful: - if api_response.status_code in [200]: - api_json = api_response.json() - self.accessToken = api_json.get("access_token") - self.lastRefresh = date_time.get_current_utc_date_time() - self.expiresAt = self.lastRefresh + datetime.timedelta(seconds = int(0.95 * float(api_json.get("expires_in")))) - - # Now that refreshing attempt is done: - return None if self.expired else self.accessToken - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - async def main(): - - auth = MPesaExpressAuthorization( - consumerKey = "kFiHZ3G1vCqxkQfHgMZzPvkPd5ilsJD3", - consumerSecret = "NIp2mp1V0cSEQ63G", - shortCode = "4092041", - appPasskey = "cf5c0f05298e63b4039c60e3fd12c2f72e1adac840d3dbd68c88a33b43dbef82", - callbackUrl = "https://www.something.otherthing.com/my/callback/path?with=params" - ) - - print("AUTH:", auth.model_dump_json(indent = 4)) - print("EXPIRED:", auth.expired) - print("TTL:", auth.ttl) - - print("\n\nRefreshing...\n\n") - await auth.get_access_token() - - print("AUTH:", auth.model_dump_json(indent = 4)) - print("EXPIRED:", auth.expired) - print("TTL:", auth.ttl) - - - asyncio.run(main()) diff --git a/utils_v2/pdf/__init__.py b/utils_v2/pdf/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/pdf/pdf_maker.py b/utils_v2/pdf/pdf_maker.py deleted file mode 100644 index fb97cdd..0000000 --- a/utils_v2/pdf/pdf_maker.py +++ /dev/null @@ -1,1642 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Tuesday, 13th Aug., 2024 - - OBJECTIVE: - - To generate custom PDFs. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For conversion to PDF: -from PyPDF2 import PdfMerger, PdfReader, PdfWriter, Transformation - -# For barcode and QR code generation: -import xml.etree.ElementTree as ET -from barcode import Code128 -from barcode.writer import ImageWriter, SVGWriter -import segno -from PIL import Image, ExifTags, ImageFilter - -# System-level activities: -import os -import io -import inspect -import contextlib - -# For calculations: -import math - -# For PDF generation: -import fitz -from reportlab.pdfgen import canvas -from reportlab.lib.units import mm, cm, inch -from reportlab.lib.styles import ParagraphStyle -from reportlab.platypus import Paragraph -from reportlab.pdfbase import pdfmetrics -from reportlab.pdfbase.ttfonts import TTFont -from reportlab.lib.utils import ImageReader -from reportlab.graphics import renderSVG - -# My utils: -from utils_v2.string import json -from utils_v2.system import files -from utils_v2.string import regex - -# For debugging: -from icecream import IceCreamDebugger -import traceback - -# For random string generation: -import random -import string - -# To validate the font file: -from fontTools import ttLib - -# To make http calls: -import requests -import httpx - -# To work with base64 coding: -import base64 - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make async API calls: -max_connections = 5 -limits = httpx.Limits( - max_keepalive_connections = max_connections, - max_connections = max_connections, - keepalive_expiry = 3600 -) -http_client = httpx.AsyncClient( - limits = limits, - follow_redirects = False, - timeout = httpx.Timeout(None) -) - -# Headers for downloading files: -HEADERS_DOWNLOAD = { - "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:129.0) Gecko/20100101 Firefox/129.0", - "Accept": "*/*", - "Accept-Encoding": "gzip, deflate" -} - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class PDFMaker: - - def __init__( - self, - width, - height, - unit = "mm", - dpi = 72, - debug = True, - debug_prefix = "PDF (M) | ", - raise_exception = True, - **kwargs - ): - - """ - IMPORTANT: To keep things intuitively oriented (left-to-right, and top-to-bottom), the internal bottom-up - coordinates have been flipped mathematically. All measurements start from the top-left corner. Moreover, I have - ensured that all numbers follow the same units. So, if you set your unit to "inch", everything will be measured - in the same unit. I hope this creates maximum consistency for you. - A NOTE ON IMAGES: All images will be measured in pixels when operating on them directly (like cropping and - resizing), but will be measured in the 'unit' of the canvas when placing it in the PDF. - A NOTE OF FONT SIZES: Font sizes (and their line spacings) are measured in 'points'. As per the standard, there - are 72 'points' in one inch. While everything else in this utility uses the unit of measurement defined in the - 'unit' param, fonts need to be specified in 'points' to maintain compatibility with HTML rendering engines to - work with well-formatted paragraphs. - WARNING: I STRONGLY RECOMMEND NOT USING DPI AS A SETTING. THE PDF FORMAT ITSELF DOESN'T HAVE ANY PROVISION FOR - PIXEL DENSITY. THIS SETTING HAS BEEN MADE AVAILABLE FOR PLACEBO EFFECT WHEN CLIENTS ASK FOR VERY HIGH RESOLUTION - FILES WITHOUT WANTING TO UNDERSTAND ANY TECHNICALITY. USE WITH CAUTION. - :param width: [int|float] The width of the page (in the specified unit). - :param height: [int|float] The height of the page (in the specified unit). - :param unit: [str] The unit ("mm", "cm", "inch") to use. - :param dpi: [int|float] The pixel density. AVOID USING THIS. - :param debug: [bool] Whether, or not, you want to print debugging messages. Can be changed on the fly. - :param debug_prefix: [str] The prefix to show in debugging messages. - :param raise_exception: If set to True, any failure will immediately stop the PDF building process. If set to - False, the PDF building will continue by ignoring failed steps. Set to True by default for an all-or-nothing - output behaviour. - :param kwargs: Just a placeholder, does nothing for now (20240904). - """ - - # For debugging: - self.__printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self.__printer.disable() - - # Note down the exception-handling choice: - self.__raise_exception = raise_exception - - # We pick the unit from the user's choice: - self.__unit = { - "mm": mm, - "cm": cm, - "inch": inch - }[unit] - - # To know the canvas size multipliers, we need a few parameters: - # 01. The DPI Factor is the multiplier to apply to achieve the target DPI considering a default DPI of 72, - # 02. The Unit Factor is the multiplier to apply to the unit to achieve a high-res result. - self.__dpi_factor = (dpi / 72.0) - self.__unit_factor = self.__unit * self.__dpi_factor - - # Now we create the canvas: - self.__pdf_in_ram = io.BytesIO() - self.__canvas_width = width * self.__unit_factor - self.__canvas_height = height * self.__unit_factor - self.__canvas = canvas.Canvas( - self.__pdf_in_ram, - pagesize = (self.__canvas_width, self.__canvas_height) - ) - - def enable_debug(self): - - """ - To enable the debugging text in the terminal. - :return: None. - """ - - self.__printer.enable() - - def disable_debug(self): - - """ - To disable the debugging text in the terminal. - :return: None. - """ - - self.__printer.disable() - - # ┏┓┓ ┓ ┳┳ •┓• • - # ┗┓┣┓┏┓┏┓┏┓┏┫ ┃┃╋┓┃┓╋┓┏┓┏ - # ┗┛┛┗┗┻┛ ┗ ┗┻ ┗┛┗┗┗┗┗┗┗ ┛ - - @staticmethod - async def download_from_url(url, follow_redirects = False): - - """ - Download a file from a URL. - :param url: The URL to download the file from. - :param follow_redirects: Whether, or not, to follow along with any redirects when downloading the file. - :return: The downloaded file or None. - """ - - file = io.BytesIO((await http_client.get( - url, - headers = HEADERS_DOWNLOAD, - follow_redirects = follow_redirects - )).content) - file.seek(0) - return file - - @staticmethod - def read_to_ram(file_path): - - """ - Reads a file into a BytesIO object in RAM. - NOTE: The method doesn't itself verify if the file is a PDF. - :param file_path: The path to the file on disk. - :return: The file in a BytesIO object. - """ - - with open(file_path, "rb") as file: - file_data = file.read() - file_in_ram = io.BytesIO(file_data) - file_in_ram.seek(0) - return file_in_ram - - def __parse_color(self, input_color): - - """ - The reportlab 'reportlab' needs the colour to be specified in an array of RGS values where each value is a - number in the range 0-1. - :param input_color: Either a hex string or an array of numbers. - :return: An array that can be used by 'reportlab'. - """ - - # Start by assuming failure: - processed_color = None - - # If the input color is a string, we convert from hex to an array of hex codes: - if isinstance(input_color, str): - input_color = input_color.lstrip("#") - color_tuple = ( - input_color[0:2].upper(), - input_color[2:4].upper(), - input_color[4:6].upper() - ) - input_color = color_tuple - - # If the input color is a list/tuple of hex-strings: - if isinstance(input_color, (list, tuple)): - try: - if all(isinstance(item, str) for item in input_color): - processed_color = [int(item, 16) / 255.0 for item in input_color] - elif all(isinstance(item, (float, int)) for item in input_color): - processed_color = [max(min(item, 255.0), 0.0) / 255.0 for item in input_color] - except: - if self.__raise_exception: raise - - # Done here: - return processed_color - - def __parse_x(self, *args): - - """ - To adjust the horizontal coordinates for the canvas. - :param args: As many horizontal coordinates as you would like to adjust. - :return: The adjusted coordinates. - """ - - if len(args) == 0: return None - parsed_x = [x * self.__unit_factor for x in args] - parsed_x = [x if x >= 0 else x + self.__canvas_width for x in parsed_x] - return tuple(parsed_x) if len(parsed_x) > 1 else parsed_x[0] - - def __parse_y(self, *args, flip = False): - - """ - To adjust the vertical coordinates for the canvas. - :param args: As many vertical coordinates as you would like to adjust. - :param flip: To convert from bottom-up system to top-down system. - :return: The adjusted coordinates. - """ - - if len(args) == 0: return None - parsed_y = [y * self.__unit_factor for y in args] - parsed_y = [y if y >= 0 else y + self.__canvas_height for y in parsed_y] - if flip: parsed_y = [self.__canvas_height - y for y in parsed_y] - return tuple(parsed_y) if len(parsed_y) > 1 else parsed_y[0] - - def __parse_font_size(self, *args): - - """ - Adjust the font size. - :param args: The font sizes to adjust - :return: The adjusted font-size. - """ - - if len(args) == 0: return None - parsed_font_sizes = args - return parsed_font_sizes if len(parsed_font_sizes) > 1 else parsed_font_sizes[0] - - @staticmethod - def _parse_coordinates_for_rotation( - original_x, - original_y, - angle - ): - - """ - Adjusts the x and y coordinates to compensate for the effect of a rotation operation. - :param original_x: The x coordinate before applying rotation. - :param original_y: The y coordinate before applying rotation. - :param angle: The angle (in degrees) by which the rotation will be applied. - :return: The adjusted x and y coordinates that compensate for the effect of the canvas's rotation. - """ - - # Get the angle in radians: - angle_radians = math.radians(angle) - angle_cos = math.cos(angle_radians) - angle_sin = math.sin(angle_radians) - - # Compute the inverse rotation: - adjusted_x = original_x * angle_cos + original_y * angle_sin - adjusted_y = -original_x * angle_sin + original_y * angle_cos - - # Done here: - return adjusted_x, adjusted_y - - # ┳ ┏┓ • - # ┃┏┓┏╋┏┓┏┓┏┏┓ ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏ - # ┻┛┗┛┗┗┻┛┗┗┗ ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛ - # ┛ - - @property - def canvas(self): - - """ - Use this to fetch just the canvas with all the inputs applied to it. - :return: The canvas (page) that is being used currently in the instance. - """ - - return self.__canvas - - @property - def unit_factor(self): - - """ - The scaling factor after taking into consideration the physical unit of measurement being use (e.g.: "mm"). - :return: The unit-factor. - """ - - return self.__unit_factor - - @property - def dpi_factor(self): - - """ - The scaling factor derived from comparing the default DPI of 72 and a custom DPI specified when creating the - instance. Since the PDF format doesn't have a native DPI configuration, this scaling factor will help in - adjusting the sizes of whatever you wish to add to the canvas. - :return: The DPI scaling factor. - """ - - return self.__dpi_factor - - @property - def shape(self): - - """ - an array of the dimensions (width, height) of the canvas. - :return: The width and height of the canvas. - """ - - return self.__canvas_width, self.__canvas_height - - # ┏┓ ┏┓ ┏┓•┓ - # ┃ ┏┓┏┓┓┏┏┓┏ ┣╋ ┣ ┓┃┏┓ - # ┗┛┗┻┛┗┗┛┗┻┛ ┗┻ ┻ ┗┗┗ - - def save(self, path: str = None): - - """ - Save the Canvas as a PDF either to RAM or a file on disk. - :param path: The path you want to save the PDF to on disk. If not specified, the PDF will be saved to RAM and - returned as a BytesIO object. - :return: A BytesIO object, or True/False if a path is supplied and the file gets saved. - """ - - # Save the changes to the file in RAM. - self.__canvas.save() - self.__pdf_in_ram.seek(0) - - # If the user has not specified a path, return the buffer: - if path is None: return self.__pdf_in_ram - - # In case a path was specified, - # We try to save the file in the specified path: - try: - with open(path, "wb") as file: file.write(self.__pdf_in_ram.getvalue()) - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - def next_page(self): - - """ - To start working on the next page. - The library that is being used doesn't support moving back and forth between pages in any random order, it, - instead, needs to go in a sequential fashion from one page to the next. - :return: None. - """ - - self.__canvas.showPage() - - # ┏┓ - # ┣ ┏┓┏┓╋┏ - # ┻ ┗┛┛┗┗┛ - - @staticmethod - async def register_font_from_url(name, url, follow_redirects = False): - - """ - Download a font from a URL and then register it for use. - :param name: The name you would later refer to the font by. - :param url: The URL to download the font from. - :param follow_redirects: Whether, or not, to follow along with any redirects when downloading the file. - :return: True if registered, else False. - """ - - try: return PDFMaker.register_font( - name, - await PDFMaker.download_from_url(url, follow_redirects = follow_redirects) - ) - except Exception as exception: - return False - - @staticmethod - def register_fonts_from_directory(directory): - - """ - Register all the fonts from a directory to be used later in the PDF. - :param directory: The directory that has the TTF files to register. - :return: A dict describing the fonts that were registered. - """ - - # List out all the files in the folder: - all_files = files.list_files(directory, full_path = True) - - # Keep only TTF files and make a name-to-path map: - font_map = { - os.path.split(file)[-1].split(".")[0].lower(): file - for file in all_files if file.lower().rstrip().endswith(".ttf") - } - - # Register the custom fonts: - registered_fonts = [] - for font_name, font_path in font_map.items(): - if PDFMaker.register_font(font_name, font_path): - registered_fonts.append({"name": font_name, "file": font_path}) - - # Done here: - return registered_fonts - - @staticmethod - def register_font(name, file): - - """ - Register one TTF font from either a BytesIO object or a path on the disk. - :param name: The name of the font as you would like to use when invoking it. - :param file: The font file (TTF format). - :return: True if registered, else False. - """ - - try: - - if isinstance(file, io.BytesIO): file.seek(0) - pdfmetrics.registerFont(TTFont(name, file)) - return True - - except Exception as exception: - return False - - @staticmethod - def get_font_height(font, size, count_ascent = True, count_descent = True): - - """ - Compute the height of the font for the given size. - :param font: [str] The name of the font (as registered). - :param size: [int|float] The size of the font (in points). - :param count_ascent: [bool] Whether, or not, you would like to consider the ascent of the font. - :param count_descent: [bool] Whether, or not, you would like to consider the descent of the font. - :return: The height of the font in points. - """ - - # Get font's information and compute the height: - ascent, descent = pdfmetrics.getAscentDescent(font, size) - if not count_ascent: ascent = 0.0 - if not count_descent: descent = 0.0 - height = ascent - descent - return height - - @staticmethod - def font_is_registered(font): - - """ - Checks if a particular font is available for use. - :param font: [str] The name of the font to check. - :return: True if registered, else False - """ - - return font in pdfmetrics.getRegisteredFontNames() - - @staticmethod - def get_first_registered_font(): - - """ - Returns the name of the first registered font. Useful for cases like those when your font fails to load and you - need a default to fall back on. - :return: The name of the first font that has been registered. - """ - - return pdfmetrics.getRegisteredFontNames()[0] - - @staticmethod - def list_registered_fonts(): - - """ - Returns the list of names of all the registered fonts. - :return: The list of names of the fonts that have been registered. - """ - - return pdfmetrics.getRegisteredFontNames() - - @staticmethod - def is_valid_ttf(file): - - """ - Checks if a font file is valid and usable or not. - :param file: [str|io.BytesIO] The file to check. - :return: True if valid, else False. - """ - - if isinstance(file, io.BytesIO): file.seek(0) - try: font = ttLib.TTFont(file)["head"].fontRevision - except Exception as exception: return False - return True - - # ┳ - # ┃┏┳┓┏┓┏┓┏┓┏ - # ┻┛┗┗┗┻┗┫┗ ┛ - # ┛ - - @staticmethod - def make_barcode_image( - data, - bar_width = 2, - bar_height = 125, - border = 10, - bar_color = "#000000", - background_color = "#FFFFFF", - dpi = 300, - format = "png", - as_pil = True - ): - - """ - Makes a barcode in Code128 format. - :param data: [str] The data to encode in the barcode. - :param bar_width: [int] The base bar-module width in pixels. - :param bar_height: [int] The bar-module height in pixels. - :param border: [int] The size of the border around all sides of the barcode in pixels. - :param bar_color: [str] The colour of the bars as a hex string. - :param background_color: [str] The colour of the background as a hex string. - :param dpi: [int] The pixel density to note in the image. Leave it to default for most use cases. - :param format: [str] The file format to save the image in. - :param as_pil: [bool] If True, a PIL object will be returned, else a PNG file will be returned in RAM (BytesIO). - :return: Either a PIL object or a PNG file in RAM. - """ - - # Create the barcode in RAM: - barcode_in_ram = io.BytesIO() - barcode_options = { - "module_width": (bar_width / dpi) * 25.4, - "module_height": (bar_height / dpi) * 25.4, - "quiet_zone": 0, - "foreground": bar_color, - "background": background_color, - "format": format, - "dpi": dpi - } - Code128(str(data), writer = ImageWriter()).write(barcode_in_ram, options = barcode_options) - barcode_in_ram.seek(0) - - # Remove the rasterized text at the bottom, and create a border of the desired size: - barcode_image = Image.open(barcode_in_ram, formats = [format]) - width, height = barcode_image.size - barcode_image = barcode_image.crop(( - 0, - int(dpi * 0.0393701), - width, - int(dpi * 0.0393701) + bar_height - )) - width, height = barcode_image.size - background_image = Image.new( - mode = "RGB", - size = (width + border + border, height + border + border), - color = background_color - ) - background_image.paste(barcode_image, (border, border)) - barcode_image = background_image - - # If the user has asked for a PIL object: - if as_pil: return barcode_image - - # Else, ave the PNG in ram: - barcode_in_ram = io.BytesIO() - barcode_image.save(barcode_in_ram, format = "png") - barcode_in_ram.seek(0) - - # Done: - return barcode_in_ram - - @staticmethod - def make_qr_image( - data, - scale = 5, - border = 2, - foreground_color = "#000000", - background_color = "#FFFFFF", - border_color = "#FFFFFF", - background_art = None, - format = "png", - as_pil = True - ): - - """ - Create a QR code. - :param data: [str] The data that you want to encode in the QR code. - :param scale: [int] The size (in pixels) for each tiny block in the QR code. - :param border: [int] The size (in multiples of scale) of the quiet zone. - :param foreground_color: [str] The color of the foreground, a.k.a. the dark color. - :param background_color: [str] The color of the background, a.k.a. the light color. - :param border_color: [str] The color of the quiet zone. - :param background_art: [io.BytesIO|PIL.Image] Any image that you would like to feed into the background instead - of a plain QR code. This can be an animated GIF image as well. - :param format: [str] The type of output file that you want. - :param as_pil: [bool] If True, a PIL object will be returned, else a PNG file will be returned in RAM (BytesIO). - :return: Either a PIL object or a PNG file in RAM. - """ - - qr_code = segno.make_qr(str(data)) - params = { - "scale": scale, - "border": border, - "dark": foreground_color, - "light": background_color, - "quiet_zone": border_color, - "kind": format - } - - qr_image = io.BytesIO() - - if background_art is not None: - if isinstance(background_art, Image.Image): - buffer = io.BytesIO() - background_art.save(buffer, format = format) - buffer.seek(0) - background_art = buffer - params["background"] = background_art - params["target"] = qr_image - qr_code.to_artistic(**params) - - else: - params["out"] = qr_image - qr_code.save(**params) - - qr_image.seek(0) - if as_pil: qr_image = Image.open(qr_image, formats = [format]) - return qr_image - - async def image_from_url(self, url, follow_redirects = False, as_pil = True, format = "png"): - - """ - Asynchronously downloads an image and returns it as a PIL object. - Use this instead of just passing the URL to 'draw_image' for better efficiency. - :param url: [str] The URL to download the image from. - :param follow_redirects: [bool] Whether, or not, to follow redirect URLs when downloading the file. - :param as_pil: [bool] If True, a PIL object will be returned, else a PNG file will be returned in RAM (BytesIO). - :param format: [str] The type of output file that you want. Not applicable for PIL objects. - :return: The image as a PIL object or as a file in RAM. - """ - - try: - - pil_image = Image.open(await PDFMaker.download_from_url(url, follow_redirects = follow_redirects)) - if as_pil: return pil_image - image_in_memory = io.BytesIO() - pil_image.save(image_in_memory, format = format) - image_in_memory.seek(0) - return image_in_memory - - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - - def image_from_base64(self, data, as_pil = True): - - """ - Converts a base64 string to an image. - :param data: [str] The base-64 representation of the image data. - :param as_pil: [bool] If True, a PIL object will be returned, else a PNG file will be returned in RAM (BytesIO). - :return: The image as a PIL object or as a file in RAM. - """ - - try: - - image = io.BytesIO(base64.b64decode(data)) - image.seek(0) - if not as_pil: return image - image = Image.open(image) - return image - - except Exception as exception: - if self.__raise_exception: raise - - @staticmethod - def crop_image_to_aspect_ratio(image, target_aspect_ratio, anchor = "c"): - - """ - Shaves off pixels from an image to achieve the target aspect ratio. - :param image: [PIL.Image] The image to work on, held in a PIL object. - :param target_aspect_ratio: [int|float] The aspect ratio you want to achieve. - :param anchor: [str] Which part of the image you want to retain. Imagine it like a compass - "nw", "n", "ne", - "e", "se", "s", "sw", "w", and "c". - :return: The adjusted image. - """ - - # Get the existing figures: - width, height = image.size - original_aspect_ratio = width / height - - # Compute the new dimensions: - if original_aspect_ratio > target_aspect_ratio: - scaling_factor = target_aspect_ratio / original_aspect_ratio - new_width, new_height = int(width * scaling_factor), height - else: - scaling_factor = original_aspect_ratio / target_aspect_ratio - new_width, new_height = width, int(height * scaling_factor) - - # Now we figure out the start and end points of cropping: - match anchor.strip().lower(): - case "nw": - start_x = 0 - start_y = 0 - case "n": - start_x = int(abs(new_width - width) / 2.0) - start_y = 0 - case "ne": - start_x = int(abs(new_width - width)) - start_y = 0 - case "e": - start_x = int(abs(new_width - width)) - start_y = int(abs(new_height - height) / 2.0) - case "se": - start_x = int(abs(new_width - width)) - start_y = int(abs(new_height - height)) - case "s": - start_x = int(abs(new_width - width) / 2.0) - start_y = int(abs(new_height - height)) - case "sw": - start_x = 0 - start_y = int(abs(new_height - height)) - case "w": - start_x = 0 - start_y = int(abs(new_height - height) / 2.0) - case _: - start_x = int(abs(new_width - width) / 2.0) - start_y = int(abs(new_height - height) / 2.0) - - end_x = start_x + new_width - end_y = start_y + new_height - - # And we finally crop and return the image: - return image.crop((start_x, start_y, end_x, end_y)) - - @staticmethod - def crop_image(image, start_x, start_y, end_x, end_y): - - """ - Crops an image. - :param image: [PIL.Image] The image to work on, held in a PIL object. - :param start_x: [int|float] The left coordinate (in the same unit as the dimension of the canvas). - :param start_y: [int|float] The top coordinate (in the same unit as the dimension of the canvas). - :param end_x: [int|float] The right coordinate (in the same unit as the dimension of the canvas). - :param end_y: [int|float] The bottom coordinate (in the same unit as the dimension of the canvas). - :return: The cropped image. - """ - - return image.crop((start_x, start_y, end_x, end_y)) - - @staticmethod - def resize_image_to_aspect_ratio(image, target_aspect_ratio): - - """ - Resizes the image (by stretching and squishing) till it fits the target aspect ratio. - :param image: [PIL.Image] The image to adjust. - :param target_aspect_ratio: [int|float] The aspect ratio that you want to achieve. - :return: The adjusted image. - """ - - # Get the existing figures: - width, height = image.size - original_aspect_ratio = width / height - - # Compute the new dimensions: - if original_aspect_ratio > target_aspect_ratio: - new_width, new_height = width, int(width / target_aspect_ratio) - else: - new_width, new_height = int(height * target_aspect_ratio), height - - # Resize and return the image: - return image.resize((new_width, new_height)) - - @staticmethod - def resize_image(image, width, height): - - """ - Resizes an image to the specified width and height. - :param image: [PIL.Image] The image as a PIL object. - :param width: [int|float] The new width. - :param height: [int|float] The new height. - :return: The resized image. - """ - - return image.resize((width, height)) - - @staticmethod - def fit_image_to_aspect_ratio( - image: Image, - target_aspect_ratio: float, - blur_strength = 0.01, - alpha: float = 0.8 - ): - - """ - Fits an image to any aspect ratio by adding a blurred background to it. - :param image: [PIL.Image] The image to adjust. - :param target_aspect_ratio: [int|float] The aspect ratio that you want to achieve. - :param blur_strength: How intense the blur must be. - :param alpha: The opacity of the blurred background. - :return: The adjusted image. - """ - - # Get the existing figures: - width, height = image.size - original_aspect_ratio = width / height - - # Compute the new dimensions: - if original_aspect_ratio > target_aspect_ratio: - new_width, new_height = width, int(width / target_aspect_ratio) - scaling_factor = new_height / height - paste_x = 0 - paste_y = int((new_height - height) / 2) - else: - new_width, new_height = int(height * target_aspect_ratio), height - scaling_factor = new_width / width - paste_x = int((new_width - width) / 2) - paste_y = 0 - - # Prepare the background image: - # bg_image = image.copy().resize((new_width, new_height)) - bg_image = image.copy().resize((int(width * scaling_factor), int(height * scaling_factor))) - bg_image = bg_image.filter(ImageFilter.GaussianBlur(radius = int((new_width + new_height) / 2) * blur_strength)) - bg_image = PDFMaker.crop_image_to_aspect_ratio(bg_image, target_aspect_ratio) - - # darken the background a little: - bg_image = Image.blend( - bg_image, - Image.new("RGB", bg_image.size, (0, 0, 0)), - alpha = 1.0 - alpha - ) - - # Paste the original image on top of the background: - bg_image.paste(image, (paste_x, paste_y)) - - # Resize and return the image: - return bg_image - - @staticmethod - def adjust_image_orientation_from_exif(image): - - """ - Rotates the image as per the instructions in the EXIF tags. - :param image: The PIL object that holds the image data. - :return: The adjusted image. - """ - - # Guard clause to return if the attribute is not even found: - if not hasattr(image, "getexif"): return image - - # Else we start extracting EXIF data: - exif = image.getexif() - if exif is None: return image - - # We look for the tag that indicates orientation: - # ORIENTATION CODES: - # 1: Normal (Landscape) - # 2: Flipped horizontally - # 3: Upside down (Reverse Landscape) - # 4: Flipped vertically - # 5: Rotated 90° clockwise and flipped horizontally - # 6: Rotated 90° clockwise (Portrait) - # 7: Rotated 90° counter-clockwise and flipped horizontally - # 8: Rotated 90° counter-clockwise (Reverse Portrait) - orientation = exif.get(274, 0) - if orientation == 1: pass - elif orientation == 2: image = image.transpose(Image.FLIP_LEFT_RIGHT) - elif orientation == 3: image = image.rotate(180, expand = True) - elif orientation == 4: image = image.rotate(180, expand = True).transpose(Image.FLIP_LEFT_RIGHT) - elif orientation == 5: image = image.rotate(270, expand = True).transpose(Image.FLIP_LEFT_RIGHT) - elif orientation == 6: image = image.rotate(270, expand = True) - elif orientation == 7: image = image.rotate(90, expand = True).transpose(Image.FLIP_LEFT_RIGHT) - elif orientation == 8: image = image.rotate(90, expand = True) - - # Done here: - return image - - # ┏┓┳┓┏ - # ┃┃┃┃╋ - # ┣┛┻┛┛ - - def draw_line( - self, - start_x, - start_y, - end_x, - end_y, - thickness = 1.0, - color = (0, 0, 0), - alpha = 1.0 - ): - - """ - Draw a line in the PDF page. - :param start_x: [int|float] The left coordinate. - :param start_y: [int|float] The top coordinate. - :param end_x: [int|float] The right coordinate. - :param end_y: [int|float] The bottom coordinate. - :param thickness: [int|float] The thickness of the line (in the same unit as the canvas's dimensions). - :param color: [str] The RGB color in an array. - :param alpha: [int|float] The opacity of the line. 1 is 100% and 0 is 0% - :return: True or False based on the success of the operation. - """ - - # Handle color: - color = self.__parse_color(color) - - # Adjust the dimensions: - thickness *= self.__unit_factor - start_x, end_x = self.__parse_x(start_x, end_x) - start_y, end_y = self.__parse_y(start_y, end_y, flip = True) - - try: - - self.__canvas.setLineWidth(thickness) - self.__canvas.setStrokeColorRGB(color[0], color[1], color[2], alpha) - self.__canvas.line( - start_x, - start_y, - end_x, - end_y - ) - return True - - # In case something goes wrong: - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - def draw_circle( - self, - x, - y, - radius, - fill_color = (255, 255, 255), - fill_alpha = 0.0, - stroke_color = (0, 0, 0), - stroke_alpha = 1.0, - thickness = 1.0 - ): - - """ - Draw a circle in the PDF page. - :param x: [int|float] The horizontal coordinate of the center of the circle. - :param y: [int|float] The vertical coordinate of the center of the circle. - :param radius: [int|float] The radius of the circle. - :param fill_color: [str] The color-array (0-255) or hex string to define the inner fill color of the rectangle. - :param fill_alpha: [int|float] The opacity of the inner fill color. - :param stroke_color: [str] The color-array (0-255) or hex string to define the outline color of the rectangle. - :param stroke_alpha: [int|float] The opacity of the outline color. - :param thickness: [int|float] The thickness of the line (in the same unit as the canvas's dimensions). - :return: True or False based on the success of the operation. - """ - - try: - - # Handle color: - fill_color = self.__parse_color(fill_color) - stroke_color = self.__parse_color(stroke_color) - - # Adjust the dimensions: - x = self.__parse_x(x) - y = self.__parse_y(y, flip = True) - thickness *= self.__unit_factor - radius *= self.__unit_factor - - # Draw the circle here: - self.__canvas.setLineWidth(thickness) - self.__canvas.setFillColorRGB(fill_color[0], fill_color[1], fill_color[2]) - self.__canvas.setFillAlpha(fill_alpha) - self.__canvas.setStrokeColorRGB(stroke_color[0], stroke_color[1], stroke_color[2]) - self.__canvas.setStrokeAlpha(stroke_alpha) - self.__canvas.circle(x, y, radius, stroke = 1, fill = 1) - - # In case something goes wrong: - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - def draw_rect( - self, - start_x, - start_y, - end_x, - end_y, - radius = 0.0, - fill_color = (255, 255, 255), - fill_alpha = 0.0, - stroke_color = (0, 0, 0), - stroke_alpha = 1.0, - thickness = 1.0, - ): - - """ - Draws a rectangle on the page. - :param start_x: [int|float] The left coordinate. - :param start_y: [int|float] The top coordinate. - :param end_x: [int|float] The right coordinate. - :param end_y: [int|float] The bottom coordinate. - :param radius: [int|float] The corner radius. - :param fill_color: [str] The color-array (0-255) or hex string to define the inner fill color of the rectangle. - :param fill_alpha: [int|float] The opacity of the inner fill color. - :param stroke_color: [str] The color-array (0-255) or hex string to define the outline color of the rectangle. - :param stroke_alpha: [int|float] The opacity of the outline color. - :param thickness: [int|float] The line thickness of the outline (in the same unit as the canvas's dimensions). - :return: True or False based on the success of the operation. - """ - - try: - - # Handle color: - fill_color = self.__parse_color(fill_color) - stroke_color = self.__parse_color(stroke_color) - - # Adjust the dimensions: - thickness *= self.__unit_factor - start_x, end_x = self.__parse_x(start_x, end_x) - start_y, end_y = self.__parse_y(start_y, end_y, flip = False) - - # Compute the width and height desired by the user: - width = end_x - start_x - height = end_y - start_y - - # Draw the rectangle here: - self.__canvas.setLineWidth(thickness) - self.__canvas.setFillColorRGB(fill_color[0], fill_color[1], fill_color[2]) - self.__canvas.setFillAlpha(fill_alpha) - self.__canvas.setStrokeColorRGB(stroke_color[0], stroke_color[1], stroke_color[2]) - self.__canvas.setStrokeAlpha(stroke_alpha) - self.__canvas.roundRect( - start_x, - self.__canvas_height - start_y - height, - width, - height, - radius * self.__unit_factor, - stroke = 1, - fill = 1 - ) - - return True - - # In case something goes wrong: - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - def make_paragraph_style( - self, - font_name = "Helvetica", - font_size = 12, - font_color = (0, 0, 0), - line_spacing = 12, - border_size = 0.0, - border_color = (255, 255, 255), - align = "left", - style_name = "CustomStyle" - ): - - """ - Creates a text style for using in a paragraph. - :param font_name: [str] The name of the font. Has to be registered. - :param font_size: [int|float] The size that you want the font to be printed in. - :param font_color: [str] The color-array (0-255) or hex string that you want the font to be printed in. - :param line_spacing: [int|float] The line spacing to apply. - :param border_size: [int|float] The thickness of the border. - :param border_color: [str] The color-array (0-255) or hex string of the color you wan the border to be in. - :param align: [str] Text alignment ("left", "center", or "right"). - :param style_name: [str] A name that you would like to give this style. - :return: The paragraph style. - """ - - # Make adjustments: - font_color = self.__parse_color(font_color) - font_size = self.__parse_font_size(font_size) - border_color = self.__parse_color(border_color) - border_size *= self.__unit_factor - - return ParagraphStyle( - name = style_name, - fontName = font_name, - fontSize = font_size, - textColor = (font_color[0], font_color[1], font_color[2]), - alignment = { - "left": 0, - "center": 1, - "right": 2 - }[align], - leading = line_spacing * font_size, - spaceBefore = 0, - spaceAfter = 0, - borderWidth = border_size, - borderColor = border_color - ) - - def write_paragraph( - self, - text, - start_x, - start_y, - end_x, - end_y, - alpha = 1.0, - style = None - ): - - """ - To write text into a bounding box in the PDF. - This can be either plaintext or an HTML string. - :param text: [str] The text to type in the bounding box. - :param start_x: [int|float] The left coordinate (in the same unit as used while setting up the canvas). - :param start_y: [int|float] The top coordinate (in the same unit as used while setting up the canvas). - :param end_x: [int|float] The right coordinate (in the same unit as used while setting up the canvas). - :param end_y: [int|float] The bottom coordinate (in the same unit as used while setting up the canvas). - :param alpha: [int|float] The opacity of the text. 1 is 100% and 0 is 0% - :param style: The paragraph-style generated by using "make_paragraph_style" method. Avoid using this if you are - passing in an HTML string. - :return: True or False based on the success of the operation. You will get a False even if the text flows out of - the bounding box (which will cause it to not render). - """ - - try: - - # Adjust the dimensions: - start_x, end_x = self.__parse_x(start_x, end_x) - start_y, end_y = self.__parse_y(start_y, end_y, flip = False) - - # Compute the width and height desired by the user: - width = end_x - start_x - height = end_y - start_y - - # Make the paragraph: - paragraph = Paragraph(text, style = style) - - # Wrap the paragraph to compute the needed dimensions: - needed_width, needed_height = paragraph.wrap(width, height) - - # Adjust the y coordinates (for top-down system): - start_y = self.__canvas_height - start_y - needed_height - - # Write the text to the canvas if the text fits. - # Return true in case of success, else false: - if width >= needed_width and height >= needed_height: - self.__canvas.setFillAlpha(alpha) - paragraph.drawOn(self.__canvas, start_x, start_y, _sW = 0) - return True - else: return False - - # In case something goes wrong: - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - def write_string( - self, - text, - x, - y, - font = "Helvetica", - size = 12, - color = (0, 0, 0), - alpha = 1.0, - align = "left", - angle = 0 - ): - - """ - Writes a string onto the canvas. - :param text: [str] The text to be written. - :param x: [int|float] The horizontal coordinate (of the baseline). - :param y: [int|float] The vertical coordinate (of the baseline). - :param font: [str] The name of the font to be used. - :param size: [int|float] The size of the font to be used (in points). - :param color: [str] The color-array (0-255) or hex string that you want the font to be printed in. - :param alpha: [int|float] The opacity of the text. 1 is 100% and 0 is 0% - :param align: [str] The alignment to use ("left", "center", "right"). - :param angle: The angle at which you want the text to be printed in. - :return: True or False based on the success of the operation. - """ - - try: - - # Handle the color - color = self.__parse_color(color) - - # Adjust the dimensions: - x = self.__parse_x(x) - y = self.__parse_y(y, flip = True) - size = self.__parse_font_size(size) - - # Adjust the canvas's values: - self.__canvas.setFont(font, size) - self.__canvas.setFillColorRGB(color[0], color[1], color[2]) - self.__canvas.setFillAlpha(alpha) - - # Handle angular adjustments: - self.__canvas.rotate(angle) - x, y = self._parse_coordinates_for_rotation( - original_x = x, - original_y = y, - angle = angle - ) - - # Adjust the font coordinates as per the angle: - text_width = self.__canvas.stringWidth(text, fontName = font, fontSize = size) - if align == "center": x -= text_width / 2 - elif align == "right": x -= text_width - - # Draw the string: - self.__canvas.drawString(x, y, text) - - # Reset angular adjustments: - self.__canvas.rotate(-angle) - - # Return with success if nothing broke till here: - return True - - # In case something goes wrong: - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - def draw_image( - self, - image, - start_x, - start_y, - end_x, - end_y, - crop = False, - crop_anchor = "c", - alpha = 1.0, - stroke_color = (0, 0, 0), - stroke_alpha = 0.0, - thickness = 1.0, - identifier: str = None, - format = "jpeg" - ): - - """ - Draw an image onto the PDF page in the specified bounding box. The image can be drawn in either "fit" mode where - the image is scaled down to fit in the bounding box, or in "fill" mode where the image is cropped to fill up the - space in the bounding box by matching their aspec ratios. - :param image: The image data as a PIL object or a valid URL or a file path. NOTE: If given as a URL, the image - will be downloaded synchronously. - :param start_x: [int|float] The left coordinate. - :param start_y: [int|float] The top coordinate. - :param end_x: [int|float] The right coordinate. - :param end_y: [int|float] The bottom coordinate. - :param crop: [bool] Set to True for "fill" mode, False for "fit" mode. - :param crop_anchor: [str] If cropping is to be performed, what should the anchor be for cropping. Refer to the - description in 'crop_image_to_aspect_ratio'. - :param alpha: [int|float] The opacity of the image. 1 is 100% and 0 is 0% - :param stroke_color: [str] The color-array (0-255) or hex string to define the outline color of the rectangle. - :param stroke_alpha: [int|float] The opacity of the outline color. - :param thickness: [int|float] The line thickness of the outline (in the same unit as the canvas's dimensions). - :param identifier: [str] A unique name for the image. - :param format: The file format of the image (when it will be embedded in the PDF). - :return: True or False based on the success of the operation. - """ - - try: - - # Cleaning: - format = format.strip().lower().split(".")[-1] - - # Handle color: - stroke_color = self.__parse_color(stroke_color) - - # The identifier can allow us to use the same image multiple times in a PDF file. - # If the identifier is not provided, we give the file a random identifier. - if identifier is None: identifier = "".join([random.choice(string.ascii_lowercase) for _ in range(8)]) - - # Adjust the dimensions: - start_x, end_x = self.__parse_x(start_x, end_x) - start_y, end_y = self.__parse_y(start_y, end_y, flip = True) - - # Compute the width and height desired by the user: - width = end_x - start_x - height = end_y - start_y - - # In case the image is passed as a URL, we try to download it and open it as a PIL object: - if isinstance(image, str): - if image.startswith("https://") or image.startswith("http://"): - image = Image.open(io.BytesIO(requests.get(image).content)) - else: image = Image.open(image) - - # The image can have orientation data in its EXIF tags. - # If so, we adjust for it so that reportlab can work with it properly: - image = self.adjust_image_orientation_from_exif(image) - - # If the image needs to be cropped, we compute the aspect ratio and get the image adjusted: - if crop: image = self.crop_image_to_aspect_ratio( - image, - abs(end_x - start_x) / abs(end_y - start_y), - anchor = crop_anchor - ) - - # Else we add a blurred background to the image: - else: image = self.fit_image_to_aspect_ratio( - image, - abs(end_x - start_x) / abs(end_y - start_y), - blur_strength = 0.1 - ) - - # We set the image opacity and outline settings here: - self.__canvas.setFillAlpha(alpha) - self.__canvas.setLineWidth(thickness * self.__unit_factor) - self.__canvas.setStrokeColorRGB(stroke_color[0], stroke_color[1], stroke_color[2]) - self.__canvas.setStrokeAlpha(stroke_alpha) - - # Draw the image onto the canvas: - if ( - image.mode == "P" or - format in ["jpeg", "jpg"] - ): - image = image.convert("RGB") - image_buffer = io.BytesIO() - image.save(image_buffer, format = format) - image_buffer.seek(0) - self.__canvas.drawImage( - ImageReader(image_buffer, ident = identifier), - start_x, - start_y, - width = width, - height = height, - preserveAspectRatio = True, - mask = "auto", - anchor = "c", - showBoundary = True - ) - - return True - - # In case something goes wrong: - except Exception as exception: - self.__printer(exception) - if self.__raise_exception: raise - return False - - # def draw_svg( - # self, - # svg, - # start_x, - # start_y, - # end_x, - # end_y - # ): - # - # renderSVG.draw(svg, sta) - - # ┏┓┳┓┏ ┏┳┓ ┓ - # ┃┃┃┃╋ ┃ ┏┓┏┓┃┏ - # ┣┛┻┛┛ ┻ ┗┛┗┛┗┛ - - @staticmethod - def make_thumbnails( - pdf_file, - pages = None, - scale = 1.0, - as_pil = True, - format = "png" - ): - - """ - Makes thumbnails of pages of the PDF and returns them - :param pdf_file: The PDF file whose pages must be converted to thumbnails. - :param pages: The list of page nos. to make thumbnails of. If not specified, all pages will be converted. - :param scale: The scaling multiplier, applied to both axes, to change the output size. - :param as_pil: If True, the output will be an array of PIL objects, else the output will be an array of - file-like BytesIO objects. - :param format: The file format of the output image. - :return: The array of thumbnails, either as PIL objects, or as BytesIO objects. - """ - - # Open the PDF, and ensure that we have the pages numbers: - if isinstance(pdf_file, io.BytesIO): - pdf_file.seek(0) - pdf_document = fitz.open(stream = pdf_file) - pdf_file.seek(0) - else: pdf_document = fitz.open(pdf_file) - if pages is None: pages = list(range(len(pdf_document))) - - # Iterate over the pages and make the thumbnails: - thumbnails = [] - for page_no in pages: - img = pdf_document.load_page(page_no).get_pixmap(matrix = fitz.Matrix(scale, scale)) - img = io.BytesIO(img.tobytes(format)) - if as_pil: img = Image.open(img, formats = [format]) - thumbnails.append(img) - - # Done here: - return thumbnails - - @staticmethod - def join_from_ram(pdf_files, raise_exception = True): - - """ - Joins a set of PDF files held in RAM (as BytesIO objects). - :param pdf_files: The list of PDF files (as BytesIO objects). - :param raise_exception: Set to True for an all-or-nothing process. - :return: The joined PDF file (as a BytesIo object). - """ - - try: - - # Create a file in RAM that will hold the merged PDF: - joined_pdf_in_ram = io.BytesIO() - - # Merge the files into one: - merger = PdfMerger() - for pdf_file in pdf_files: merger.append(pdf_file) - merger.write(joined_pdf_in_ram) - merger.close() - - # Done here: - joined_pdf_in_ram.seek(0) - return joined_pdf_in_ram - - # In case something goes wrong: - except Exception as exception: - if raise_exception: raise - return None - - @staticmethod - def grid_from_ram( - pdf_files, - input_width, - input_height, - output_width, - output_height, - cutting_width, - cutting_height, - unit = "mm", - dpi = 72 - ): - - """ - Lays out a set of input PDFs into a larger pdf in a grid. - NOTE: The 'unit' and 'dpi' choice will be used for both (input and output). - WARNING: I STRONGLY RECOMMEND NOT USING DPI AS A SETTING. THE PDF FORMAT ITSELF DOESN'T HAVE ANY PROVISION FOR - PIXEL DENSITY. THIS SETTING HAS BEEN MADE AVAILABLE FOR PLACEBO EFFECT WHEN CLIENTS ASK FOR VERY HIGH RESOLUTION - FILES WITHOUT WANTING TO UNDERSTAND ANY TECHNICALITY. USE WITH CAUTION. - :param pdf_files: The list of PDF files (as BytesIO objects) to lay onto the larger canvas. - :param input_width: The width of the input PDFs. - :param input_height: The height of the input PDFs - :param output_width: The width of the large PDF on which the smaller PDFs will be laid out. - :param output_height: The height of the large PDF on which the smaller PDFs will be laid out. - :param cutting_width: The horizontal buffer to leave between the grid. - :param cutting_height: The vertical buffer to leave between the grid. - :param unit: The unit to use (common to the input and output PDFs). - :param dpi: The pixel density to consider (common to the input and output PDFs). - :return: The PDF grid. - """ - - # Create the base PDF: - base_canvas = PDFMaker( - width = output_width, - height = output_height, - unit = unit, - dpi = dpi - ) - base_canvas.draw_line(0, 1, 1, 0, alpha = 0.0) - base_pdf = base_canvas.save() - - # Adjust all units to match the pixel density adjustments: - input_width *= base_canvas.unit_factor - input_height *= base_canvas.unit_factor - output_width *= base_canvas.unit_factor - output_height *= base_canvas.unit_factor - cutting_width *= base_canvas.unit_factor - cutting_height *= base_canvas.unit_factor - - # Calculate how many input pdfs will fit and the page count needed: - per_row = math.floor((output_width - cutting_width) / (input_width + cutting_width)) - per_column = math.floor((output_height - cutting_height) / (input_height + cutting_height)) - per_page = per_row * per_column - output_page_count = math.ceil(len(pdf_files) / per_page) - - # Calculate the starting point on the page from where the pasting will start: - page_start_x = (output_width - (per_row * (input_width + cutting_width)) + cutting_width) / 2.0 - page_start_y = (output_height - (per_column * (input_height + cutting_height)) + cutting_height) / 2.0 - - # We make a writer object to write pages to the output file, - # and we make a list that will hold the individual output pages: - grid_pdf = PdfWriter() - - # We create each needed page: - for page_number in range(output_page_count): - - # Open the base PDF and create a page here: - grid_page = PdfReader(base_pdf).pages[0] - - # Shortlist the input pdfs to be pasted on this page: - starting_offset = page_number * per_page - ending_offset = starting_offset + per_page - ending_offset = min(ending_offset, len(pdf_files)) - pdf_files_for_page = pdf_files[starting_offset:ending_offset] - - # We paste all the input PDFs one-by-one: - for index, input_pdf in enumerate(pdf_files_for_page): - - # Compute the coordinates to paste on: - row_number = math.floor(index / per_row) - column_number = index if index < per_row else index % per_row - paste_x = page_start_x + (column_number * input_width) + (column_number * cutting_width) - paste_y = page_start_y + (row_number * input_height) + (row_number * cutting_height) - - # The default system for the reportlab is bottom-up, - # we convert to top-down for intuitive operations: - paste_y = base_canvas.shape[1] - paste_y - input_height - - # Open th smaller PDF and paste it on those coordinates: - input_page = PdfReader(input_pdf).pages[0] - input_page.add_transformation(Transformation().translate( - tx = paste_x, - ty = paste_y - ), expand = True) - grid_page.merge_page(input_page) - - # Add the grid page to the grid PDF: - grid_pdf.add_page(grid_page) - - # Join and return the result: - grid_pdf_in_ram = io.BytesIO() - grid_pdf.write(grid_pdf_in_ram) - return grid_pdf_in_ram - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - - async def main(): - - my_pdf = PDFMaker(width = 210, height = 297) - # my_image = await my_pdf.image_from_url(r"https://images.pexels.com/photos/28973930/pexels-photo-28973930/free-photo-of-historic-saigon-central-post-office-architecture.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1") - # my_image = await my_pdf.image_from_url(r"") - # my_image = await my_pdf.image_from_url(r"") - my_image = await my_pdf.image_from_url(r"https://images.pexels.com/photos/18317748/pexels-photo-18317748/free-photo-of-peoples-committee-of-ho-chi-minh.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1") - # my_image.show() - blurred_image = PDFMaker.fit_image_to_aspect_ratio(my_image, 1.49) - blurred_image.show() - - asyncio.run(main()) diff --git a/utils_v2/queue/__init__.py b/utils_v2/queue/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/queue/async_kafka.py b/utils_v2/queue/async_kafka.py deleted file mode 100644 index d6c0a82..0000000 --- a/utils_v2/queue/async_kafka.py +++ /dev/null @@ -1,554 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Saturday, 13th Jul, 2024 - - OBJECTIVE: - - To be able to work with keys - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# To use Kafka: -from aiokafka import AIOKafkaProducer -from aiokafka import AIOKafkaConsumer - -# For working with JSON strings: -from utils_v2.string import json -from utils_v2.serialization.json_serializer import JSONSerializer - -# For debugging: -from icecream import IceCreamDebugger - -# For SSL security: -import ssl - -# For asynchronous activities: -import asyncio - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def get_ssl_context( - ca_file, - cert_file, - key_file -): - - """ - Generate the SSL context to use with the Kafka instances. - :param ca_file: The Certificate Authority file as a path to a local file. - :param cert_file: The Certificate file as a path to a local file. - :param key_file: The Key file as a path to a local file. - :return: The SSL context instance as a path to a local file. - """ - - ssl_context = ssl.create_default_context() - ssl_context.load_verify_locations(ca_file) - ssl_context.load_cert_chain(certfile = cert_file, keyfile = key_file) - return ssl_context - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class ProducerKafka: - - def __init__( - self, - topic, - serializer = None, - debug = True, - debug_prefix = "Kafka (P) | ", - **kwargs - ): - - """ - Create a Kafka Producer. - :param topic: The topic to produce on. - :param serializer: The serializer to use. - :param debug: Whether, or not, you want to print the debug strings. - :param debug_prefix: The prefix to use while debugging. - :param kwargs: Any configuration parameters for the Kafka instances. - """ - - # Initialize the debugger: - self.__printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self.__printer.disable() - - # initialize the Kafka producer: - self.__topic = topic - self.__kwargs = kwargs - self.__producer = None - self.__connected = False - self.__serializer = serializer or JSONSerializer() - - # For establishing connection: - self.__exclusive_semaphore = asyncio.Semaphore(1) - - def enable_debug(self): - self.__printer.enable() - - def disable_debug(self): - self.__printer.disable() - - async def connect(self): - - """ - Connects to the Kafka server if not connected. - :return: True or False based on the success of the operation. - """ - - async with self.__exclusive_semaphore: - if not self.__connected: - try: - self.__producer = AIOKafkaProducer(**self.__kwargs) - await self.__producer.start() - self.__connected = True - except Exception as exception: self.__printer(exception) - return self.__connected - - async def ensure_connection(self): - - """ - Connects to the Kafka server if not connected. - :return: True or False based on the success of the operation. - """ - - if not self.__connected: await self.connect() - return self.__connected - - async def close(self): - - """ - Terminates the connection. - :return: None. - """ - - if self.__connected: - try: - await self.__producer.stop() - self.__printer("Producer closed!") - self.__connected = False - except Exception as exception: self.__printer(exception) - - async def produce(self, value, key = None, topic = None, encoding = "utf-8"): - - """ - Sends one message to the Kafka server on the topic that has been set for this instance. - :param value: The message to send. - :param key: The key to use when you want the messages to follow an order. - :param topic: A custom topic for this message, else the topic defined during the creation of this instance will - be used by default. - :param encoding: The encoding format. - :return: True or False based on the success of the operation. - """ - - # Ensure connectivity to the server. - # If not connected, return with failure immediately. - if not await self.ensure_connection(): return False - - try: - - # Send the message: - await self.__producer.send_and_wait( - topic = topic or self.__topic, - value = self.__serializer.serialize(data = value, encoding = encoding), - key = key - ) - - # Return with success if no exception occurred: - return True - - # Return with failure if something went wrong: - except Exception as exception: - self.__printer(exception, self.__topic, type(value), value) - return False - - -# --------------------------------------------------------------------------------------------------------------------- - - -class ConsumerKafka: - - def __init__( - self, - topic, - serializer = None, - debug = True, - debug_prefix = "Kafka (C) | ", - **kwargs - ): - - """ - Create a Kafka Consumer. - :param topic: The topic to consumer on. - :param serializer: The serializer to use. - :param debug: Whether, or not, you want to print the debug strings. - :param debug_prefix: The prefix to use while debugging. - :param kwargs: Any configuration parameters for the Kafka instances. - """ - - # Initialize the debugger: - self.__printer = IceCreamDebugger(prefix = debug_prefix, includeContext = True) - if not debug: self.__printer.disable() - - # initialize the Kafka producer: - self.__topic = topic - self.__kwargs = kwargs - self.__consumer = None - self.__connected = False - self.__serializer = serializer or JSONSerializer() - - # For establishing connection: - self.__exclusive_semaphore = asyncio.Semaphore(1) - - def enable_debug(self): - self.__printer.enable() - - def disable_debug(self): - self.__printer.disable() - - async def connect(self): - - """ - Connects to the Kafka server if not connected. - :return: True or False based on the success of the operation. - """ - - async with self.__exclusive_semaphore: - if not self.__connected: - try: - self.__consumer = AIOKafkaConsumer(self.__topic, **self.__kwargs) - await self.__consumer.start() - self.__connected = True - except Exception as exception: self.__printer(exception) - return self.__connected - - async def ensure_connection(self): - - """ - Connects to the Kafka server if not connected. - :return: True or False based on the success of the operation. - """ - - if not self.__connected: await self.connect() - return self.__connected - - async def close(self): - - """ - Terminates the connection. - :return: None. - """ - - if self.__connected: - try: - await self.__consumer.stop() - self.__printer("Consumer closed!") - self.__connected = False - except Exception as exception: self.__printer(exception) - - async def consume(self, count = 1, timeout = 0.05, encoding = "utf-8"): - - """ - Get messages from the Kafka server. - :param count: The number of messages to get from the Kafka server. - :param timeout: The time in seconds to wait for retrieval. - :param encoding: The encoding to use. - :return: The messages that were received. If no messages are available, an empty list will be returned. - """ - - # Ensure connectivity to the server. - # If not connected, return with failure immediately. - if not await self.ensure_connection(): return [] - - # Make a variable that will hold the final results: - messages = [] - - try: - - # Read some messages: - results = await self.__consumer.getmany( - max_records = max(1, count), - timeout_ms = int(timeout * 1_000) - ) - - # Format the received messages: - if results: - for topic_partition, records in results.items(): - for record in records: - record_dict = record.__dict__ - record_dict["value"] = self.__serializer.deserialize( - data = record_dict["value"], - encoding = encoding - ) - messages.append(record_dict) - - # Debugging print if something went wrong: - except Exception as exception: self.__printer(exception) - - # Done here: - return messages - - -# --------------------------------------------------------------------------------------------------------------------- - - -class BidirectionalKafka: - - # The 'roles' that the instance can take. - # The master talks on the channel (topic) that the slave listens on and vice versa. - # Master-Slave is only for deciding who talks on which channel and who listens on which. - # In a two-party system, one must be the master, the other must be the slave. - # There are no extra privileges that the master enjoys. The naming convention was borrowed from common protocols - # used in electronics (like I2C). - ROLE_MASTER = 1 - ROLE_SLAVE = 0 - - def __init__( - self, - role, - topic, - ack_topic: str = None, - group: str = None, - serializer = None, - debug = True, - debug_prefix = "Kafka (B) | ", - **kwargs - ): - - """ - Creates a walkie-talkie type setup to use Kafka in a bidirectional manner. Fo more information on all the - individual methods, please read through the doc-strings of the component classes 'ProducerKafka', and - 'ConsumerKafka'. - :param role: Select from "ROLE_MASTER" and "ROLE_SLAVE". Between the two parties that are talking, one will be - the master and the other will be the slave. The channel that the master uses to speak will the one the slave - uses to listen, and vice versa. - :param topic: The topic to communicate on. Will be the same between the master and the slave. - :param ack_topic: Explicitly provide this for the second channel, or it will be created from the name of the - topic itself. Will be the same between the master and the slave. - :param group: The group to assign the instance to. - :param debug: Whether, or not, you want to print the debug strings. - :param debug_prefix: The prefix to use while debugging. - :param kwargs: Any configuration parameters for the Kafka instances. - """ - - # Not down the basic variables: - self.__role = role - self.__topic = topic - self.__ack_topic = ack_topic or topic + "Ack" - self.__group = group - - # In case the current instance is the master, - # it will talk on "topic", and listen on "ack_topic": - if self.__role == self.ROLE_MASTER: - self.__producer_kwargs = kwargs.copy() - self.__producer = ProducerKafka( - topic = self.__topic, - serializer = serializer, - debug = debug, - debug_prefix = debug_prefix.strip() + " (P) | ", - **self.__producer_kwargs - ) - self.__consumer_kwargs = kwargs.copy() - self.__consumer_kwargs["group_id"] = self.__group - self.__consumer = ConsumerKafka( - topic = self.__ack_topic, - group = group, - serializer = serializer, - debug = debug, - debug_prefix = debug_prefix.strip() + " (C) | ", - **self.__consumer_kwargs - ) - - # On the other hand, if the current instance is a slave, - # It will listen on "topic", and talk on "ack_topic": - else: - self.__producer_kwargs = kwargs.copy() - self.__producer = ProducerKafka( - topic = self.__ack_topic, - serializer = serializer, - debug = debug, - debug_prefix = debug_prefix.strip() + " (P) | ", - **self.__producer_kwargs - ) - self.__consumer_kwargs = kwargs.copy() - self.__consumer_kwargs["group_id"] = self.__group - self.__consumer = ConsumerKafka( - topic = self.__topic, - group = group, - serializer = serializer, - debug = debug, - debug_prefix = debug_prefix.strip() + " (C) | ", - **self.__consumer_kwargs - ) - - def enable_debug(self): - self.__producer.enable_debug() - self.__consumer.enable_debug() - - def disable_debug(self): - self.__producer.disable_debug() - self.__consumer.disable_debug() - - async def ensure_connection(self): - await self.__producer.ensure_connection() - await self.__consumer.ensure_connection() - - async def close(self): - await self.__producer.close() - await self.__consumer.close() - - async def produce(self, message, encoding = "utf-8"): - return await self.__producer.produce(message, encoding = encoding) - - async def consume(self, count = 1, timeout = 0.05, encoding = "utf-8"): - return await self.__consumer.consume(count = count, timeout = timeout, encoding = encoding) - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import asyncio - import time - from data_models.kafka_message import KafkaMessage - - ssl_ctx = get_ssl_context( - ca_file = r"/home/developer/PycharmProjects/utils/cred/kafka/cert_authority.pem", - cert_file = r"/home/developer/PycharmProjects/utils/cred/kafka/fullchain.pem", - key_file = r"/home/developer/PycharmProjects/utils/cred/kafka/privkey.pem" - ) - - async def consumer_test(): - - consumer = ConsumerKafka( - topic = "kft_file_upload", - # group_id = "assessImg", - group_id = "updateMedia", - bootstrap_servers = "wtt.ditscentre.in:9092", - security_protocol = "SSL", - ssl_context = ssl_ctx - ) - await consumer.connect() - await asyncio.sleep(1.5) - print("READY!") - - while True: - messages = await consumer.consume(count = 1) - if len(messages) > 0: print("MESSAGE:", json.to_string(messages[0], default=str)) - await asyncio.sleep(1.0) - - async def producer_test(): - - producer = ProducerKafka( - topic = "kft_file_upload", - bootstrap_servers = "del.ditscentre.in:9092", - security_protocol = "SSL", - ssl_context = ssl_ctx - ) - await producer.connect() - print("READY!") - - while True: - my_msg = KafkaMessage( - data = { - "accepted": False, - "reason": "low resolution" - }, - media = { - "name": "pikachu_poster.jpg", - "ext": "jpg", - "url": "https://nexcom.ditscentre.in/utils/files/small/download/66ded1c1c1c05139a618b5ff", - "attr": { - "user": "SarangKabir", - "project": "ACE-PGP", - "id": 173, - "campaignActivityId": "25", - "idCampaign": 49, - "phoneNo": "7977821877" - } - }, - appId = "aceWockhardt", - proc = { - "name": "_assessImg", - "attr": { - "blurThreshold": 0.25, - "clarityThreshold": 0.65, - "nsfwThreshold": 0.25, - "minWidth": 512, - "minHeight": 512 - } - }, - ack = None - ) - success = await producer.produce(my_msg.model_dump()) - print("produced...") - time.sleep(1.0) - break - - await producer.close() - - - asyncio.run(consumer_test()) diff --git a/utils_v2/rate_limit/__init__.py b/utils_v2/rate_limit/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/rate_limit/async_token_bucket.py b/utils_v2/rate_limit/async_token_bucket.py deleted file mode 100644 index 4fb85e7..0000000 --- a/utils_v2/rate_limit/async_token_bucket.py +++ /dev/null @@ -1,212 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Wednesday, 15th May, 2024 - - OBJECTIVE: - - To provide a rate-limiting mechanism using the simple token bucket algorithm. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# For date and time keeping: -import datetime -import time - -# For asynchronous activities: -import asyncio - -# For mathematical operations: -import math - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** CLASSES *** -# ***** **** -# ***************************************************************************************************************** - - -class TokenBucket: - - """ - MODES: "add" - Add 'rate_limit' no. of tokens to the bucket every interval. - "reset" - Reset the token count to 'rate_limit' every interval - """ - - MODE_RESET = 0 - MODE_ADD = 1 - - ONE_YEAR = 3_15_36_000.0 - ONE_MONTH = 26_78_400.0 - ONE_WEEK = 6_04_800.0 - ONE_DAY = 86_400.0 - ONE_HOUR = 3_600.0 - ONE_MINUTE = 60.0 - ONE_SECOND = 1.0 - - def __init__(self, rate_limit, seconds = 1.0, mode = "reset", sleep = 0.1, in_sequence = False): - - """ - Initialize the rate controller. - :param rate_limit: The no. of operations allowed per unit of time. - :param seconds: The time period in seconds in which the tokens get reset or added. - :param mode: To select what happens when the period is over. 'reset' mode means that the remaining tokens from - the previous period are discarded and the counter is set back to the rate limit, and 'add' mode means that - new tokens are added on top of the exiting ones that were unused in the previous period. - :param sleep: The delay to add before checking back to see if tokens are available. Keep it longer for longer - periods (which is adjusted by the 'seconds' parameter). - :param in_sequence: Whether, or not, you want to maintain the sequence in which the requests were made - (experimental). - """ - - if rate_limit is not None: - rate_limit = int(rate_limit) - self.__semaphore = asyncio.Semaphore(1 if in_sequence else rate_limit) - mode = mode.lower() - if mode not in [self.MODE_RESET, self.MODE_ADD]: mode = self.MODE_RESET - self.__mode = mode - self.__rate_limit = rate_limit - self.__token_count = rate_limit - self.__last_token_generation_time = time.time() - self.__sleep = sleep - self.__seconds = seconds - - async def has_turn(self): - - """ - Just to check if a token is available. - Should be used only if you don't want to wait for turn in case it is unavailable. - :return: True if the token is available, False if not. - """ - - # If the user doesn't want any rate-limits, we return immediately. - # Otherwise, we check if the user has any tokens available: - if self.__rate_limit is None: return True - if self.__token_count > 0: return True - else: return False - - async def get_turn(self, timeout = None): - - """ - To wait till either you get your turn or the wait gets timed-out. - :param timeout: The time (in seconds) to wait to get a turn before exiting with failure. - :return: True if a turn was received, else False if timed-out. - """ - - # If the user doesn't want any rate-limits, we return immediately: - if self.__rate_limit is None: return - - # Start by making variables: - got_turn = False - wait_start = time.time() - - # Otherwise, we wait for the semaphore: - async with self.__semaphore: - - # Wait till you get your turn or the attempt gets timed-out: - while True: - - # If the timeout has been exceeded: - if ( - timeout is not None and - time.time() - wait_start >= timeout - ): break - - # If it is time to generate new tokens: - time_delta = time.time() - self.__last_token_generation_time - if time_delta >= self.__seconds: - if self.__mode == self.MODE_RESET: self.__token_count = self.__rate_limit - else: self.__token_count += int(self.__rate_limit * math.floor(time_delta / self.__seconds)) - self.__last_token_generation_time = time.time() - - # If a token is available (or not): - if self.__token_count > 0: - self.__token_count -= 1 - got_turn = True - break - else: await asyncio.sleep(self.__sleep) - - # Done here: - return got_turn - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import random - - async def single_test(rate_controller, count): - has_turn = await rate_controller.has_turn() - got_turn = await rate_controller.get_turn() - print(f"TURN: {count:.<5} {'Y' if has_turn else '-'} / {'Y' if got_turn else '-'} ({datetime.datetime.now()})") - if got_turn: await asyncio.sleep(random.random()) - - async def multi_test(max_count): - rate_controller = TokenBucket( - rate_limit = 10, - seconds = 1, - in_sequence = False, - sleep = 0.025, - mode = "reset", - timeout = 3 - ) - tasks = [single_test(rate_controller, count + 1) for count in range(max_count)] - await asyncio.gather(*tasks) - - - start_time = time.time() - asyncio.run(multi_test(100)) - print(f"FINISHED IN {time.time() - start_time} SECONDS!") diff --git a/utils_v2/security/__init__.py b/utils_v2/security/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/utils_v2/security/__pycache__/__init__.cpython-310.pyc b/utils_v2/security/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 64b3f9dc4d6ee9ec02919f6afca366168cd5e8f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmd1j<>g`k0#Dw6bP)X*L?8o3AjbiSi&=m~3PUi1CZpdK_U_Ri zcMaojJ(zzi7<>y&44|V%*Pw`+5$Ym_j?I@AwO%1)Ok-QeFkgx6xYDf@u^BmCr`S{N zR;k0>zDcXpJ-53xTBG%Iqg!XU=&cizuhtA|c8b!dyfFI?N2jR-<7v<`m?;dS$?mztH z+Ljb&JUtC5!vqT^aoWd}NP>fikt9rxa6eB18K#NA{gmS{$#N-h6rM1g4bp_+B##dn z7xyuXNf_yW8F=M^d)wb{?`^j?w>xu5wp$z11aRu5YH1R%k(l|zA<0aBEyfUdpZCZI@b&Q5H`m3OLQ-7Vn zd4}bH;Sv(d6q6`QpW#sISdc!8hWL;LX{_1lhY?Fi%)A0&EhC)7B_GqA*6{uu*nmhp zOmqBe0Zej%_xk?G=g3-5aSE&9P;nDJw-$-+`(d@1? zzs9|$-}4TXabYQ2vgcA&Ga@D9iCPl*p^%}>CG+*ng~=_TPgOa~A`-9*#BCT~7<>u- zUO#RPfQlAnrz}b{##_6?U_f}h%hO{PNYNr$=!c1hCQ&PwP!9g-YD=&n=b;?71XPp^ zM^G(ZHdHlDsIM7)2;f4y(st{}grD;-e+P!wMAib&M9yHK#XUDBAoRqP#@LYP%;a~q z*yk|XGS1M%9D~1#ITPl-3SlLbh4l(%58msU6Ki5idu*Q}iKN*#PZ4j9?ZlE5{cdcI z(bzge>&DZMG)|*3`m>O}GyMz@FQJ%*0w~b&5I^edw3~%Didu!@f+7ggJfcuWrDobh z?X>gL<7Sv>(!g05)F8o$cuQf?G{|F?$g&)wP=G->92pcP1(=tV(&^@F)iceLf?cmR zmJ6>@d+DDJuqxnAocc!-OsyBz1n7j%x7(w8b7ghk?=^c~uh(m>ee-GWvt9!q@G9)( zuI?6ex2QW^Ic0YTBIT5PF^Gj;WEX;K$?eMM17OFG)8r`i)}u5ak$B*h>#yZ&>V42= z`5r-r2hIe6)aVTTZaxLMiZkK%sLe1NrZT-1?g8;+`nU}hmn5-??J2xV)9R3(%w7T~!dc;#IHYgE)?d5O(ZSccbXd8VR&Iib*r zLZ@$JSb#jyscDhix?QVViwOGHHoAj8LAF(_P_FO8U7YxSV?kAYjp_T!5<|!ZoIg+w z$ugEuwRCAwue50IULG6jbWqYg&k+$+Oxhtmt3K7A+Nh0r!g`k0#Dw6bP)X*L?8o3AjbiSi&=m~3PUi1CZpdV h9}kquEQycTE2zB1VUwGmQks)$2eP4<2}rOo002KKC+z?L diff --git a/utils_v2/string/__pycache__/json.cpython-310.pyc b/utils_v2/string/__pycache__/json.cpython-310.pyc deleted file mode 100644 index a9d65741cc90479cdf937c6edbfc927fd9e2040d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3542 zcmeHJ&u`<#6(%W4qGWm3`OySOi^a5;1p%*=b%G)_iXe(DcfCzyLsGJdb701rkwu&0 z2s1+qGUQVhy%c-y)qCt;RDjo>a_%XcwCH;?l9s#KAon07I2_JAzBlu}_r5n`bF=Qi zb+~za_NU)D&cE@ac$MJeBY4!`pkdC5!(8Si?upCYbML0aN>5$aS@wPGn|c4lH}CRE z8Q$fjGO3U9EF`?JA=qu#Flz=6MxGc~3OIVOD}QpV+ZY$x~IgHAziPjagHF6mR9 zNk-?})!&jPB(X(S6;Ijx_Q~GVF*56Umo-@6!zdzx1iC^jk|E3y4UW)?K`1+bz>a1&xe9> zMJRdLKk5>tWt^Vjjw!KAi-+Wr%9x%eoFwrDc!scesGH{R-6@rHLU7p;I%Jm&#{6YX z%$QjIAUU9yS~)wxer(9fhF_^#xHpy zrd+m;=fg3TlVd5)`B1ACoyJj|YA#cnv@#thD!SZh**&+6@2B&8VE8h@jUUI1w(cs3j_>!m3onr#d08>Ef1sDo0u?~*YX{K$Y{uFdEWL&DPxTdG~ zW-)^x9|;MWz_p&^OMwK{F@$CjbjC+COP0TmvUG?N7&)2Z1bPav&|?!#W2(uJrm4{6 zltcJPKqCRwR4UF0AcEocQ@c_egG>vlcFA6*w3v|RLrZ%vEG!j~n$jUq#o>s|MFu&X zY7ASR!paI}z{{{OMK2-#CwwC0oSe=Ht};`&ZlgsJ@CA6rypuTP_fCO`E>x3rg*N^` z&N&kTm;fZl*#xKqBp5x7lUM^e0iyHg0$>hxTYF9NsNL%xcK-qZJUHx=qt83N-r;_y zPdd>1k{k^lbb92t-D`i^89=Y|#a`!lu(o=4iNW3F{)@>~+^6J46p0v___EQl&T@<| zt0(lHx!cd&UC6lV(n4N;?(?veS8UiwBo=uan$VM&7+(&-QlhRd+;7}#Zvho6^sfG8Jlq2i*Tjen zYv|tkSdkb)3TM~;`&pJm6*keP6mkrL9<$si#>9a>i`4~&8?~cjo?vzmK;PQ>c&@oR zJR;&0`Ro;-{|uu_tPo+4*JFrprD;0kxfhGPx>TI|it~#+IOF<~CK;FL&b)@v9N{_* z0|NZM`7j_FoRNKtNE!x3na41p8qhR?x{G(<0+0R{28Q_e>Ov*>805Z&4j^Y(a^WxF zJo2P`UD3d%+B+`+mUj@rMdhZGhOV9mz`Ygbv+|RY>pX&UOy6b^NUO9T;+G%K&iWGDr%^`~ube%HF?3_LdoM9nb`dRgBSOB5?*}V-5t{gyReb zoT3x{QmolCDo)O1tTmh;Oz0H2-G7OdOb}f-N8sC<>)5x8gQj`Fk`PMA3xCX%vON+<<{@_aNNNt5L+nFpBb$nycJL zFXk0Go${2~otT1kdvy$Kf|TYHvkk*@cH_uZYbz-@Jc-U1LwMRt;YOxqcggXMc~ z-!As!_da%MoIDv7;In#iW2b*c5dMHn=cfmlyYN_lhJp%tfr>O#74sq!pM<^&)9}}# zDEPF5G_RNP5{={|v?t#~d-J`tFW*P|^ZhiMkJ1zQ6LcUyKu_jR(!u;79m)^U;ruW? zl|MyK=TFl!`7`uv{w#ef{}z2a|2CbXBlP?iV*VYVF3^iWodfD!`W{dtKwY8)sPjNw zrlUYz0O|@I1L`7BSLypez02OCl`Do(wUn|^i`Vzq$thN%>pg#6=Ef2syKN!V2YCpCyNJj)2-&? z$2f*ftGJjb#0&9>O*Pg`#_}_hj$yV^<%)KRF?nrVd(#%|bEpliPQu zmBr5sg+e@5l$C><)2*@Q>BoF!h*F3Z4`!#Y&46skla-2~GPeMNnZnd!fga3EUuzYt z$-)FOK+21oF{J?O$k{eM-%^(V+l4J$BziF4ia|N&mktO&QgvsAZ8;BA(*e}N@4oX< zLx-p8BpW+Umerm0vhAder_M4f%LQu+dYGM_YfUeD^nA-W_Pe z%Prf{sbf;du3*RBaG-3c=Dxg$;{wL?IT#^uFhamH`K&1`6B4*nw(T zHqbB!plw#$VkWRK9bgTQfq4NFRKX0}oZOzFT-a*f*aTPt5L=tL%LfZBkDvGX+1BQ4 z>=v(@ZRN4fr<>}pb0EmpFaZfQ0Q zI6)p&7>wSWCWc9L!=5JlMgw9Q1T>t~Vf^xkfURSPt-Cs=hFwyt)dWdatHvGyl9Vej z&oTtMUbNvevRd8V_x4G( z$R4X!z5Y$uOreZL@CgBdaLU4CjX|*^I6`r-CE9``J{N7VA(#V>r~_E2Fe3ac^ciLw z;y2ib9C9Ulzs}sSWt%TUZb+GNBYavf1@ipuK=<2=ndM34$%%0ZO!e)fdUBR9#}Adx7+LQnLF4GLATdO zjyVJ!yS*MptRruBCG780d^HY48WQ4+I$4SlC)8+u)jfSGxxqo+I?kTb9hXV291Ov3LiIb5NvxBy()Yk>ga%5mZK#ZR6XG zBFaj9+ij?^hM@?Z2#Mae=dXReeWG~*gk{87@ac+2b0CFy6mh~3k0O3NiZ~L)Bjhk1 z;V(v_5TG(bLoXyiU|5|56ZfM|y{eW0VXD600X{#N@L17~Jw6b-oPU>JM*UYsnfA#8 zPbe5`d_P}PDeLOxb&&?+U}u~9F}8 zFyC>tXbPB${pBVU- zAKiyDa*$}XZ3Eqee@yQN;c>|81g{4=O4J=y)4}=U2!d>*GkJTRLHysPUOBVDy==#1 zJ$K8jX~L=&BP)<@_#UB+yxhunvDafU)ht(D9`AE8#2-PMNkH~Xcr3i_@&fzWuq1N% zE3sx?0%gF=?_P%)4u`fEVMnra&+Bvog(u@>L?0R)IzeLS)qMgEjvKJ8n*0<1499|( z*n8os%U!-f*)a+JzYk?5LdCp{MRx$_6~6(w2PW>eIGC_O7nm?+2ae177?>aDxFCj0 zPUN{rMaZCKh~naiK*Mm23G`RM;dLuNO-ky|1BhnpRn5kz4(lqvoBeAUEPs0};=!7$Ecp zR}^xByV_jplU#y~KHON1Uz@o#w{Uae`t1CTTk+ZX#O#g4wS_p=7&Qx`He?3Ox@+uK z=yrLOH{M9*a;Z!j+BfQ2T$zkdENw!P6J$Ji z(fBkO2UQe(_jTi~&K%)Q6gVadBt6*itQaqej)$HHp?0bPXSnVpm!}7A{|*8UaV++!{#75m-+u-s)p`D_^OT(D&4u=Q8PNlzttxkZ@?JJdP0IyO> z4mTIzI)^sEeDDGWK^!9w_A%q+!Wg-+fTC;zE`Z=qqS_YxF{GAvn`7VGY=-PKPt7O` zWEZX&!8|mt;ST_=Eb@8FAxO)vxV@zkHOi$D90v9+SAul4;`XTZI@2j%Np~=lx|jN- zlzNa{T`R3FyZs*jFtg?kdF1_EZX;Vlfv>xf%w`|0XO`Wlr;tuQNCkBdvtVGzpY`gN z*3-G)_X56{Coo62Gl;B^~Z5-5zj|jjHWN>frb74oLBg1TU%FzS}jxLzUfu3_!3lP)I@_ w84w4=zOZxxp!K@1B#F_p(F@U$=sEa~L`V8A_l5dGp??1^;&0K2^hZhh2lst~YybcN diff --git a/utils_v2/string/fuzzy.py b/utils_v2/string/fuzzy.py deleted file mode 100644 index 34c08d4..0000000 --- a/utils_v2/string/fuzzy.py +++ /dev/null @@ -1,168 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Saturday, 18th May, 2024 - - OBJECTIVE: - - To provide a quick set of functions to work with fuzzy logic. - - REFERENCES: - - 1) https://www.w3schools.com/python/python_json.asp - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# To apply fuzzy logic: -from thefuzz import fuzz, process - -# To work with tabulated data: -import pandas as pd - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def get_best_match( - target, - choices, - threshold = 0.70, - partial = False -): - - if partial: scorer = fuzz.partial_token_sort_ratio - else: scorer = fuzz.ratio - - result = process.extractOne( - target, - choices, - score_cutoff = threshold * 100, - scorer = scorer - ) - - try: return result[0] - except: return None - - -# --------------------------------------------------------------------------------------------------------------------- - - -def rank(target, choices, partial = True): - - if partial: scorer = fuzz.partial_token_sort_ratio - else: scorer = fuzz.ratio - - result = process.extract( - target, - choices, - limit = len(choices), - scorer = scorer - ) - - result = pd.DataFrame(result, columns = ["choice", "closeness"]) - result["closeness"] = result["closeness"] / 100.0 - - return result - - -# --------------------------------------------------------------------------------------------------------------------- - - -def match(targets, choices, threshold = 0.7, partial = False, allow_null = False): - - all_matches_df = None - all_matches = {target: None for target in targets} - something_is_null = False - - for target in targets: - match_df = rank(target, choices, partial = partial) - match_df["target"] = target - if all_matches_df is None: all_matches_df = match_df - else: all_matches_df = pd.concat([all_matches_df, match_df]) - - all_matches_df = all_matches_df.sort_values(by = ["closeness"], ascending = False).reset_index(drop = True) - - for target in targets: - target_df = all_matches_df[all_matches_df["target"] == target].reset_index(drop = True) - if target_df.empty: continue - if target_df.at[0, "closeness"] >= threshold: - choice = target_df.at[0, "choice"] - all_matches[target] = choice - all_matches_df = all_matches_df[all_matches_df["choice"] != choice] - else: - all_matches[target] = None - something_is_null = True - - # print(all_matches) - if something_is_null and not allow_null: return None - else: return all_matches - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - import async_json_utils - - awb_numbers = [ - "SF1111BIC", - "SF2222BIC", - "SF3333BIC", - "SF4444BIC", - ] - - chat_text = "SF1112BIC" - - # print(chat_text == names[0]) - best_match = get_best_match(chat_text, awb_numbers, threshold = 0.60, partial = False) - print(f"Best match for '{chat_text}' is '{best_match}'") diff --git a/utils_v2/string/help.py b/utils_v2/string/help.py deleted file mode 100644 index 85dcc97..0000000 --- a/utils_v2/string/help.py +++ /dev/null @@ -1,177 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Saturday, 24th Aug., 2024 - - OBJECTIVE: - - To provide an overview of any function or class in a string. - The generated overview can then either be shown on the terminal, or transmitted over some other medium for - collaborative work. - - REFERENCES: - - N/A - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# System-level activities: -import io -import inspect - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def get_help_for_class(cls, skip_methods = None): - - """ - Returns the help documentation to use this class. - :param cls: The class whose help string is desired. - :param skip_methods: A list of methods to NOT include in the help text. - :return: This help documentation. - """ - - separator = "\n\n" + ("=" * 120) + "\n\n" - if skip_methods is None: skip_methods = [] - elif not isinstance(skip_methods, list): skip_methods = [skip_methods] - - # Get class name and docstring: - class_name = cls.__name__ - docstring = inspect.getdoc(cls) or "" - help_string = "HELP FOR:\n\n" - help_string += class_name + "\n\n" - help_string += "This document has upto 120 chars per line.\n" - help_string += "Best viewed with monospaced font :)" - help_string += docstring + separator - - # Get all methods and their docstrings. - # Then note the documentation of the methods while ignoring the blacklisted ones: - members = inspect.getmembers(cls, predicate = inspect.isfunction) - func_help = [] - for name, method in members: - - # Ignore if asked, or extract the details: - if name in skip_methods or name.startswith(f"_{class_name}__"): continue - else: func_help.append(get_help_for_function(method)) - - # Put all the things together: - func_help = separator.join(func_help) - help_string += func_help - - # Done here: - return help_string - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_help_for_function(func): - - """ - Get the help string for one function. - It could be a standalone function, or a method of a class. - :param func: The function (or method) whose help string is needed. - :return: The help string of the function. - """ - - # Get the name and documentation: - func_name = func.__name__ - async_indicator = " (async)" if inspect.iscoroutinefunction(func) else "" - func_doc = inspect.getdoc(func) or "" - - # Create the decorated header: - func_decorator = "-" * (len(func_name) + 2) - func_head = "." + func_decorator + f".\n| {func_name} |{async_indicator}\n`" + func_decorator + "`\n\n" - - # Add the 'args' and 'kwargs': - func_args = [] - for name, param in inspect.signature(func).parameters.items(): - default = param.default - if isinstance(default, str): default = f"\"{default}\"" - if default == inspect.Parameter.empty: func_args.append(f"{name}") - else: func_args.append(f"{name}: {type(default).__name__} = {default}") - if len(func_args) > 0: func_args = f"{func_name} (\n\t" + "\n\t".join(func_args) + "\n):\n\n" - else: func_args = f"{func_name} ():\n\n" - - # Get the params and return value part from the doc: - params_start = func_doc.find(":param") - return_start = func_doc.find(":return") - func_params = "\n" + func_doc[params_start:return_start] if params_start >= 0 else "" - func_return = "\n" + func_doc[return_start:] if return_start >= 0 else "" - - # Isolate the documentation part: - if params_start >= 0: func_doc = func_doc[:params_start] - elif return_start >= 0: func_doc = func_doc[:return_start] - - # Done here: - return func_head + func_args + func_doc + func_params + func_return - - -# --------------------------------------------------------------------------------------------------------------------- - - -def get_help(entity, skip_methods = None): - - """ - Get the help documentation for anything from its docstring. - :param entity: The entity you want to get help for. - :param skip_methods: A list of methods to ignore if inspecting a class. Not valid for standalone functions. - :return: The help string. - """ - - if inspect.isclass(entity): return get_help_for_class(entity, skip_methods = skip_methods) - else: return get_help_for_function(entity) - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/string/json.py b/utils_v2/string/json.py deleted file mode 100644 index 67d39f7..0000000 --- a/utils_v2/string/json.py +++ /dev/null @@ -1,202 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Create: Saturday, 18th May, 2022 - Update: Thursday, 22nd Aug. 2024 - - OBJECTIVE: - - To provide an easy way to work with '.json' data and files. - - REFERENCES: - - 1) https://www.w3schools.com/python/python_json.asp - - DOWNLOADS: - - N/A - -""" - - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# System-level activities: -import io - -# To work with the JSON standard: -import json - -# To work with files: -from utils_v2.system import files - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def from_string(json_data): - - """ - Decodes a JSON string to a pythonic variable like a dict. - :param json_data: The JSON string to decode. - :return: The decoded pythonic variable. - """ - - python_data = json.loads(json_data) - return python_data - - -# --------------------------------------------------------------------------------------------------------------------- - - -def to_string( - python_data, - indent = 4, - default = None, - separators = None, - no_space = False -): - - """ - Converts the given pythonic data to a JSON string. - :param python_data: The input data like a dict. - :param indent: The tab-width for pretty presentation. - :param default: The function to use on something that cannot be directly parsed into a JSON string. - :param separators: Custom separators to use. - :param no_space: If you want a dense JSON string that saves memory by not using spaces or tabs or line-breaks. Not - good for human readability, very good for saving memory. WARNING: THIS OVERRIDES EVERY OTHER PARAMETER EXCEPT - 'default'. - :return: The JSON string representation of the input pythonic data. - """ - - if no_space: - json_data = json.dumps( - python_data, - default = default, - separators = (',', ':') - ) - - else: - json_data = json.dumps( - python_data, - indent = indent, - default = default, - separators = separators - ) - - return json_data - - -# --------------------------------------------------------------------------------------------------------------------- - - -def from_file(file): - - """ - Reads a JSON file and returns it as a pythonic variable like a dict. - :param file: The path to the file on the disk or a file held in RAM as a BytesIO object. - :return: The decoded pythonic variable. - """ - - if isinstance(file, io.BytesIO): - file.seek(0) - json_data = file.getvalue() - else: json_data = files.read_file(file) - python_data = from_string(json_data) - return python_data - - -# --------------------------------------------------------------------------------------------------------------------- - - -def to_file( - file, - python_data, - indent = 4, - default = None, - separators = None, - no_space = False -): - - """ - - :param file: Either a path to a file on disk, or a buffer in RAM in the form of a BytesIO object. - :param python_data: The pythonic data to be converted to the JSON string. - :param indent: The tab-width for pretty presentation. - :param default: The function to use on something that cannot be directly parsed into a JSON string. - :param separators: Custom separators to use. - :param no_space: If you want a dense JSON string that saves memory by not using spaces or tabs or line-breaks. Not - good for human readability, very good for saving memory. WARNING: THIS OVERRIDES EVERY OTHER PARAMETER EXCEPT - 'default'. - :return: True/False if a path was given, else the same BytesIO object with the written JSON data. - """ - - json_data = to_string( - python_data, - indent = indent, - default = default, - separators = separators, - no_space = no_space - ) - - if isinstance(file, io.BytesIO): - file.write(json_data.encode("utf-8")) - file.seek(0) - return file - - else: - try: - files.write_file(file, json_data, mode = "w") - return True - except: return False - - -# ***************************************************************************************************************** -# ***** **** -# *** MAIN PROGRAM *** -# ***** **** -# ***************************************************************************************************************** - - -if __name__ == "__main__": - - pass diff --git a/utils_v2/string/regex.py b/utils_v2/string/regex.py deleted file mode 100644 index 988ea56..0000000 --- a/utils_v2/string/regex.py +++ /dev/null @@ -1,290 +0,0 @@ -""" - - AUTHOR: - - Khushal P Soonderji - - DATE: - - Sunday, 28th Apr., 2024 - - OBJECTIVE: - - To provide a convenient way to perform RegEx operations like finding patterns and substituting them. - - REFERENCES: - - 1) https://www.w3schools.com/python/python_regex.asp - - DOWNLOADS: - - N/A - -""" - -# ***************************************************************************************************************** -# ***** **** -# *** IMPORT *** -# ***** **** -# ***************************************************************************************************************** - - -# To make sibling directories accessible for imports: -import sys -sys.path.append(".") -sys.path.append("..") - -# To work with RegEx: -import re - - -# ***************************************************************************************************************** -# ***** **** -# *** MACROS / ONE-TIME INIT *** -# ***** **** -# ***************************************************************************************************************** - - -# Common RegEx patterns: -REGEX_EMAIL_ID = r"[\d\w\-_.+]*@[\d\w\-_]*.[\d\w]{2,}" -REGEX_URL = r"^http[s]?:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(?:\/[a-zA-Z0-9-_.~%]*)*(?:\?[a-zA-Z0-9-_&=%.]*)?$" -REGEX_HTTPS_URL = r"^https:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(?:\/[a-zA-Z0-9-_.~%]*)*(?:\?[a-zA-Z0-9-_&=%.]*)?$" -REGEX_PASSWORD = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[!@#$%^&*()_+{}\[\]:;<>,.?~\\\/-]).{8,}$" -REGEX_NAME = r"^[\d\w .\-]{1,30}$" -REGEX_USERNAME = r"^[\d\w_]{8,25}$" -REGEX_CONTACT_NUMBER = r"\+?\d{0,3}\s*\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}" -REGEX_DATE = r"\b(?:\d{4}-\d{2}-\d{2}|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2},?\s+\d{4}|\d{1,2}\/\d{1,2}\/\d{4}|\d{1,2}-\d{1,2}-\d{2}|\d{1,2}(?:st|nd|rd|th)\s+(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s+\d{4})\b" -REGEX_GSTIN = r"[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}" -REGEX_PAN = r"[A-Z]{5}[0-9]{4}[A-Z]{1}" -REGEX_IPV4 = (r"[0-9]{1,3}\." * 3) + r"[0-9]{1,3}" -REGEX_IPV6 = (r"[0-9a-fA-F]{1,4}:" * 7) + r"[0-9a-fA-F]{1,4}" -REGEX_IFSC = r"[A-Z]{4}0[A-Z0-9]{6}" -REGEX_UPI = r"[a-zA-Z0-9\.\-]{2,256}@[a-zA-Z][a-zA-Z]{2,64}" -REGEX_MAC_ADDRESS = r"([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})|([0-9a-fA-F]{4}\\.[0-9a-fA-F]{4}\\.[0-9a-fA-F]{4})" -REGEX_METRIC_WEIGHT = r"[\d\.]+[ ]?[k]?g" - - -# RegEx chars (append them to the patterns if needed): -REGEX_START = "^" -REGEX_END = "$" - - -# ***************************************************************************************************************** -# ***** **** -# *** VARIABLES *** -# ***** **** -# ***************************************************************************************************************** - - -# --- Nothing Yet - - -# ***************************************************************************************************************** -# ***** **** -# *** FUNCTIONS *** -# ***** **** -# ***************************************************************************************************************** - - -def find(text, pattern, case_sensitive = True, dot_all = False): - - """ - Returns a list of substrings that match the given RegEx pattern in the input text. - :param text: The text in which the pattern needs to be found. - :param pattern: The RegEx pattern to look for. - :param case_sensitive: Whether, or not, you want the operation to be case-sensitive. - :param dot_all: Allow all characters to be matched in ".". - :return: An array (list) of substring that match the pattern. Can be an empty list as well. - """ - - # Prepare the flags: - flags = 0 - if not case_sensitive: flags |= re.IGNORECASE - if dot_all: flags |= re.DOTALL - - # Perform the RegEx operation, and clean the results: - matches = [match if type(match) is str else match[1] for match in re.findall(pattern, text, flags = flags)] - matches = [match for match in matches if len(match) > 0] - - # Return the results: - return matches - - -# --------------------------------------------------------------------------------------------------------------------- - - -def find_first(text, pattern, case_sensitive = True, dot_all = False): - - """ - Returns the first substring that matches the given RegEx pattern in the input text. - :param text: The text in which the pattern needs to be found. - :param pattern: The RegEx pattern to look for. - :param case_sensitive: Whether, or not, you want the operation to be case-sensitive. - :param dot_all: Allow all characters to be matched in ".". - :return: The first match as a string, or None if no match was found.. - """ - - matches = find( - text = text, - pattern = pattern, - case_sensitive = case_sensitive, - dot_all = dot_all - ) - - if not matches: return None - else: return matches[0] - - -# --------------------------------------------------------------------------------------------------------------------- - - -def replace(text, pattern, substitute_text, case_sensitive = True, dot_all = False): - - """ - Replaces any substring in the text that matches the RegEx pattern. - :param text: The text in which the substitutions need to be made. - :param pattern: The RegEx pattern that needs to be substituted. - :param substitute_text: The text that will replace the matches that were found. - :param case_sensitive: Whether, or not, you want the operation to be case-sensitive. - :param dot_all: Allow all characters to be matched in ".". - :return: The text with the substitutions. If no matches are found, the original string is returned. - """ - - # Prepare the flags: - flags = 0 - if not case_sensitive: flags |= re.IGNORECASE - if dot_all: flags |= re.DOTALL - - # Perform the RegEx operation, and return the results: - return re.sub(pattern, substitute_text, text, flags = flags) - - -# --------------------------------------------------------------------------------------------------------------------- - - -def search(text, pattern, case_sensitive = True, dot_all = False): - - """ - Checks if the given RegEx pattern occurs ANYWHERE in the text that was provided. - :param text: The text that needs to be matched against the pattern. - :param pattern: The RegEx pattern to look for. - :param case_sensitive: Whether, or not, you want the operation to be case-sensitive. - :param dot_all: Allow all characters to be matched in ".". - :return: True if the pattern matches, else False. - """ - - # Prepare the flags: - flags = 0 - if not case_sensitive: flags |= re.IGNORECASE - if dot_all: flags |= re.DOTALL - - # Perform the RegEx operation, and return the results: - if re.search(pattern, text, flags = flags): return True - else: return False - - -# --------------------------------------------------------------------------------------------------------------------- - - -def match(text, pattern, case_sensitive = True, dot_all = False): - - """ - Checks if the given text matches the RegEx pattern that was provided. The check is made only at the start of the - input string. - :param text: The text that needs to be matched against the pattern. - :param pattern: The RegEx pattern to look for. - :param case_sensitive: Whether, or not, you want the operation to be case-sensitive. - :param dot_all: Allow all characters to be matched in ".". - :return: True if the pattern matches, else False. - """ - - # Prepare the flags: - flags = 0 - if not case_sensitive: flags |= re.IGNORECASE - if dot_all: flags |= re.DOTALL - - # Perform the RegEx operation, and return the results: - if re.match(pattern, text, flags = flags): return True - else: return False - - -# --------------------------------------------------------------------------------------------------------------------- - - -def split(text, pattern, case_sensitive = True, dot_all = False): - - """ - Splits an input string based on the pattern that is being matched. - :param text: The text that needs to be matched against the pattern. - :param pattern: The RegEx pattern to look for. - :param case_sensitive: Whether, or not, you want the operation to be case-sensitive. - :param dot_all: Allow all characters to be matched in ".". - :return: True if the pattern matches, else False. - """ - - # Prepare the flags: - flags = 0 - if not case_sensitive: flags |= re.IGNORECASE - if dot_all: flags |= re.DOTALL - - # Perform the RegEx operation, and return the results: - substrings = re.split(pattern, text, flags = flags) - if len(substrings) > 0 and substrings[0] == "": substrings.pop(0) - return substrings - - -# --------------------------------------------------------------------------------------------------------------------- - - -def to_json(text, pattern, case_sensitive = True, dot_all = False): - - """ - Gives out a dict from the extracted features in a string. It is based on the concept of Named Groups. - Consider the following example (assuming the search is case-insensitive): - TEXT: "UPI/309258561479/14:17:35/UPI/omsainurses@okhdfc" - PATTERN: "upi/.*/(?P