मैप की तरह पृथ्वी के आकार के मिनीक्राफ्ट को प्रस्तुत करने के लिए किस तरह के हार्डवेयर की आवश्यकता होगी?


10

मैं इस समस्या के बारे में सोच रहा हूं। क्या वोकेल आधारित खेल में पृथ्वी की 1: 1 प्रतिकृति बनाने के लिए वर्तमान तकनीक के साथ संभव है? इस विशाल मानचित्र को संग्रहीत करने के लिए सबसे अच्छी डेटा संरचना क्या है? इस डेटा संरचना को वास्तविक समय में प्रस्तुत करने के लिए किस एल्गोरिथ्म का उपयोग किया जाना चाहिए?

ये प्रश्न ये धारणाएँ बनाते हैं:

  • प्रत्येक स्वर में 1 घन मीटर का संकल्प होता है।

  • सरलता के लिए, प्रत्येक स्वर को मेटाडेटा जानकारी के केवल 1 बाइट की आवश्यकता होती है। इस जानकारी का उपयोग स्वर (पृथ्वी, जल, चट्टान, आदि) के "प्रकार" की पहचान करने के लिए किया जाएगा।

  • पृथ्वी की मात्रा 1 * 10ˆ21 घन मीटर है।

  • "वर्तमान तकनीक" द्वारा मैं कुछ भी शामिल करता हूं जो व्यावसायिक रूप से उपलब्ध है, लेकिन सुपर कंप्यूटर नहीं।

  • नक्शे को बनाने के लिए केवल पृथ्वी स्थलाकृति और स्नानागार का उपयोग किया जाएगा। मानव भवन, पौधों या गुफाओं को बाहर रखा गया है। भूगर्भीय अध्ययन के आधार पर भूमिगत ब्लॉकों को चुना जाएगा: यदि गहराई 3000 किमी से अधिक है, तो एक 'मैग्मा' स्वर को प्रस्तुत करना।

  • Minecraft की तरह, मानचित्र स्थिर नहीं है, इसे गेम में संशोधित किया जा सकता है।

  • एक 'असीम' ड्रॉ की दूरी एक बड़ा प्लस है, यदि आप पूरी पृथ्वी को नहीं देख सकते हैं, तो एक मैप में पूरी पृथ्वी के होने की बात क्या है?

इस समस्या के बारे में मैंने सोचा था कि पहला निष्कर्ष यह आया है कि पृथ्वी के डेटा को एक रैखिक तरीके से संग्रहीत करना संभव है, यह मानते हुए कि प्रत्येक voxel में केवल 1 बाइट की स्मृति होती है, फिर भी मानचित्र को संग्रहीत करने के लिए 1 zettabyte की आवश्यकता होगी। तो किसी प्रकार के संपीड़न की आवश्यकता है।

मुझे लगता है कि एक voxel ओक्ट्री मानचित्र को संकुचित कर सकता है, लेकिन मुझे यकीन नहीं है कि कितना। इस voxel मानचित्र का एन्ट्रापी शायद बहुत कम है, इसलिए मुझे लगता है कि बहुत उच्च स्तर के संपीड़न को प्राप्त किया जा सकता है।

अस्वीकरण

यह एक सैद्धांतिक सवाल है, मेरा कोई इरादा नहीं है कि मैं एक उलटी धरती लिखूं

संपादित करें

ईएसए GOCE ने पहले ही 1cm-2cm परिशुद्धता के साथ पृथ्वी जियोइड का मानचित्रण किया है। मेरा मानना ​​है कि इस जानकारी का उपयोग पृथ्वी के बहुत सटीक ऊंचाई को उत्पन्न करने के लिए किया जा सकता है। यह पृथ्वी स्थलाकृति में अंतराल को भरने के लिए एक एल्गोरिथ्म का उपयोग करने की आवश्यकता को बाहर करेगा।


1
माइनक्राफ्ट में दुनिया के लायक क्या है यह पृथ्वी से बड़ा है, आप वास्तव में इसे प्राप्त करने की कोशिश कर रहे हैं यह पृथ्वी का एक बहु-रिज़ॉल्यूशन voxel मानचित्र है, इसलिए आप सीमित देखने की सीमा के बजाय एक बार में यह सब देख सकते हैं वह खेल। यह वास्तव में विस्तार के एक स्तर तक नीचे आता है .. जब आप व्यक्तिगत स्वर दिखाते हैं या कब उन सभी स्वरों को एक चंक में औसतन प्राप्त किया जाता है और निचले रिज़ॉल्यूशन मानचित्र में एकल बिंदु के रूप में प्रस्तुत किया जाता है। आप विस्तार के स्तर के बीच तेजी से कैसे बढ़ सकते हैं, आदि
जेम्स

@ नाम, आप भूल जाते हैं कि Minecraft प्रक्रियात्मक रूप से उत्पन्न होता है, जिसका अर्थ है कि जब तक आप वास्तव में एक क्षेत्र का दौरा नहीं करते हैं, तब तक कोई मेमोरी / डेटा भंडारण की आवश्यकता नहीं है। वह चाहता है कि हमारी पृथ्वी हो, जिसका अर्थ है कि आपको घन मीटर के आकार के नीचे पूरे ग्रह के लिए डेटा की आवश्यकता होगी।
विलियम मैरीजेन

1
"यह अभी भी मानचित्र को संग्रहीत करने के लिए 1 zettabyte की आवश्यकता होगी। इसलिए किसी प्रकार के संपीड़न की आवश्यकता है।" मुझे पता नहीं क्यों, लेकिन इससे मुझे मुस्कुराहट मिली :) आप अनंत-universe.com/Infinity
Ray Dey

@RayDey लिंक के लिए धन्यवाद, उनका पूर्वावलोकन वीडियो प्रभावशाली है! infinity-universe.com/Infinity/…
सीजर कैनसा

निर्भर करता है। मेरे मॉनीटर पर 1m: 1 v स्वर के साथ पृथ्वी का 1 प्रतिकृति मॉडल केवल एक समय में एक स्वर के एक अंश का प्रतिपादन करने में सक्षम होगा ...
पीटर टेलर

जवाबों:


6

यह आपके द्वारा उपयोग किए जाने वाले स्थानिक उपखंड विधि पर निर्भर करता है, हालांकि सभी उपखंड विधियां (जैसे किसी भी संपीड़न विधि) अंत में पैन जहां डेटा संपीड़न ओवरहेड्स और अन्य तार्किक / गणितीय कारकों के कारण आगे कोई संपीड़न नहीं हो सकता है। एक उदाहरण अष्टक में पाया जा सकता है। ऑक्ट्री में प्रत्येक नोड के लिए, एक सूचक को माता-पिता और / या बच्चों के लिए रखा जाना चाहिए (यह निर्भर करता है कि आप अपने डेटा की संरचना संरचना के बारे में कैसे जाते हैं), सार्थक ट्रैवर्सल को सक्षम करने के लिए। किसी भी पेड़ की संरचना में n बच्चे हो सकते हैं। कम अनुपात 1: n, आपके द्वारा प्राप्त स्थान का अधिक कुशल उपयोग और फलस्वरूप ट्री-ट्रैवर्सल में बड़े ओवरहेड्स क्योंकि आपके पास अधिक पूर्वज नोड्स होना चाहिए जिसमें समान संख्या में पत्ती स्वर (आपके मामले में, लगभग 510 ट्रिलियन) हो इनमें से सतह क्षेत्र का प्रतिनिधित्व)।

यह देखते हुए कि आपके उदाहरण में प्राथमिक मुद्दे भंडारण लागत हैं और पूरे ग्रह (या उसके कुछ हिस्सों) को उचित दूरी से प्रदान करते हैं, कोई डेटा संरचना नहीं है जिसे मैं एक ऑक्ट्री से अधिक सुझाऊंगा। Mipmapping एक आवश्यकता है: 2 की निकटतम उच्च शक्ति पर 12.8 मिलियन मीटर व्यास 2 ^ 24 = 16.8 मिलियन है। 24 ऑक्ट्री का स्तर पीछे हटने के लिए एक विशाल राशि की राशि होगी - जीपीयू और सीपीयू के लिए समान रूप से महंगा। लेकिन बशर्ते आप चीजों को सही तरीके से करते हैं, तो आपको केवल एक समय में कुछ स्तरों को पार करने की आवश्यकता होगी। अंतरिक्ष की मात्रा को देखते हुए, हालांकि, विकल्प कुछ और दूर हैं (नीचे देखें)।

ऑक्ट्रेसेस की मानचित्रण क्षमताएँ हैं जो इसे बड़े संस्करणों के लिए एक अविश्वसनीय रूप से शक्तिशाली उपकरण बनाते हैं जैसे कि आप वर्णन करते हैं। अन्य सभी ज्ञात उपखंड विधियों (केडी-वृक्षों के अपवाद के साथ) के विपरीत, ऑक्ट्री प्रति स्तर कम से कम उपखंड रखता है, जिसका अर्थ है कि मिपमप स्तरों के बीच दृश्य और शारीरिक अंतर भी न्यूनतम रखा जाता है, जिसका अर्थ है कि आप ऊपर चलते हैं और ग्रैन्युलैरिटी में बहुत महीन डेल्टा होते हैं। पेड़ के नीचे।

यदि, दूसरी ओर, आप एक ऐसी दुनिया उत्पन्न करना चाहते हैं, जहाँ पदानुक्रमित ग्रिड ट्रैवर्सल को न्यूनतम रखा जाए, तो आपको वृद्धि की गति के लिए अंतरिक्ष से व्यापार करने की आवश्यकता होगी।

आदर्श 1: n अनुपात की बात करें, तो इस संबंध में kd- वृक्ष की तुलना में कोई महीन संरचना नहीं है। जहां प्रत्येक धुरी के लिए ऑक्ट्री 2 में विभाजित होती है, जिसके परिणामस्वरूप 2 ^ 3 = 8 व्यक्तिगत बाल कोशिकाएं होती हैं, kd ट्री उपखंड स्तर के अनुसार एक बार विभाजित होता है। इसके साथ समस्या यह है कि आपको विभाजित करने के लिए हाइपरप्लेन चुनना होगा, और इस हाइपरप्लेन को 3 अक्षों में से किसी एक के आसपास चुना जा सकता है। हालांकि यह अंतरिक्ष के मामले में इष्टतम है, यह 3 डी ट्रैवर्सल्स बनाता है (जैसे कि किरणों के दौरान, एक मौलिक ऑप जब भौतिकी के लिए ऑक्टर्स का उपयोग करना या प्रतिपादन करना) ऑक्ट्री की तुलना में बहुत अधिक कठिन होता है, क्योंकि एक गतिशील पोर्टल-प्रकार की संरचना को रिकॉर्ड करने के लिए रखा जाना चाहिए अलग-अलग केडी-ट्री नोड्स के बीच इंटरफेस

RLE संपीड़न के लिए एक और दृष्टिकोण है, लेकिन इस तरह की समस्या (जहां संचालन का आधार गोलाकार है) पर लागू करने के लिए कई मायनों में कठिन है, क्योंकि RLE संपीड़न एक आयामी है, और आपको उस अक्ष को चुनना होगा जो इसे संचालित करता है। ग्रह, एक ध्रुवीय अक्ष का चयन कर सकता है, लेकिन कोई भी एकल-धुरी पसंद कुछ गैर-इष्टतम कोणों से कार्य करते समय प्रतिपादन और भौतिकी के लिए ट्रैवर्सल्स के साथ कुछ मुद्दों को पेश करेगा। बेशक, आप RLE को एक साथ 3 एक्सिस में चला सकते हैं, स्टोरेज लागत को तिगुना कर सकते हैं, या 6 एक्सिस (-x, + x, -y, + y, -z, + z) में एक और अनुकूलन के रूप में।

तो आपके प्रश्न का उत्तर देने के लिए (या नहीं!)

मैं हार्डवेयर की तरह क्या जवाब देने में सीधे जाने के लिए नहीं जा रहा हूँ, लेकिन मैं एक octree नजरिए से इसे देख लगता है कि शुरू होता है आप हार्डवेयर की किस तरह पर संभव क्या वास्तव में की एक विचार देने के लिए। मैं आपको इस मार्ग पर जाने के लिए प्रोत्साहित करूंगा, यदि आप वास्तव में जानना चाहते हैं, तो वास्तव में एक सरल विरल ऑक्ट्री को लागू करना आसान हो सकता है(रेफरी में Laine का पेपर देखें) और इसमें सतह स्वरों के एक गोलाकार खोल को रखें, और देखें कि परिणामी अंतरिक्ष उपयोग कैसा है। वहां से कदम बढ़ाओ। देखें कि आपके सिस्टम की मेमोरी शुरू होने से पहले आप कितनी दूर जा सकते हैं। जब तक आप विज़ुअलाइज़ेशन नहीं चाहते हैं, तब तक आपको रेंडर लिखने की आवश्यकता नहीं है। यह भी ध्यान रखें कि यह सीपीयू पर सबसे अच्छा है - जीपीयू द्वारा और बड़े में इस पैमाने की समस्याओं से निपटने के लिए मेमोरी क्षमता नहीं है। यह उन कारणों में से एक है जो इंटेल बड़े पैमाने पर समानांतर प्रोसेसर की ओर बढ़ रहा है: GPGPU के लाभ, जो इस तरह की चीज़ों में बेहतर है, को सिस्टम के लिए एक बहुत ही तेज़ मेमोरी स्पेस पर लागू किया जा सकता है, जिसके साथ सिस्टम बस अड़चनें हैं। संभवतः यहाँ अन्य हैं, या math.stackexchange.com पर,

आपकी अनंत दृश्य दूरी की आवश्यकता के संदर्भ में, निश्चित रूप से, लेकिन सवाल हमेशा नीचे आता है, "किस दूरी पर कितना विस्तार"। अनंत विस्तार का प्रतिपादन करने के लिए अनंत संसाधनों की आवश्यकता होगी। यही कारण है कि चर-प्रति-दृश्य mipmapping खेलने में आता है। यह भी ध्यान में रखें कि सभी डेटा संरचनाएं अंतरिक्ष या इसके विपरीत गति के कुछ ट्रेडऑफ़ को अपनाती हैं। इसका मतलब है कि कम / धीमी रेंडरिंग, अगर आप इंजीनियरिंग के समान प्रयास के लिए एक बड़ी दुनिया चाहते हैं।


4

इस समस्या के बारे में मैंने सोचा था कि पहला निष्कर्ष यह आया है कि पृथ्वी के डेटा को एक रैखिक तरीके से संग्रहीत करना संभव है, यह मानते हुए कि प्रत्येक voxel में केवल 1 बाइट की स्मृति होती है, फिर भी मानचित्र को संग्रहीत करने के लिए 1 zettabyte की आवश्यकता होगी। तो किसी प्रकार के संपीड़न की आवश्यकता है।

चूंकि आप सबसे अधिक वास्तविक दुनिया के प्रत्येक क्यूबिक-मीटर के गुणों का पता लगाने के लिए कभी नहीं जा रहे हैं, इसलिए आपको उस डेटा को उत्पन्न करने के लिए किसी तरह की आवश्यकता होगी जो मान्यताओं के आधार पर अनिश्चित हो। तो अगर आपको पता चल गया है, तो आपको उस सभी डेटा की गणना करने और संग्रहीत करने की कोई आवश्यकता नहीं है, लेकिन आप इसे मक्खी पर उत्पन्न कर सकते हैं।

और सबसे पहले आप पृथ्वी के भीतर सभी स्वरों को त्याग सकते हैं, क्योंकि इनकी गणना तभी की जाएगी जब कोई वास्तव में छेद खोदता है, जैसे। स्वर दिखाई देते हैं।

पृथ्वी की सतह के लिए, मैं शायद अपनी गणना के लिए शुरुआती बिंदु के रूप में एक छवि ले लूंगा। शायद कुछ प्रकार के तापमान- और आर्द्रता-मानचित्र आपको आवेदन करने के लिए ब्लॉकों के प्रकार की गणना करने की अनुमति देगा। उदाहरण के लिए। पानी, रेत (रेगिस्तान), घास, बर्फ आदि। चूंकि छवि में शायद पृथ्वी के सतह के हर वर्ग-मीटर के लिए एक पिक्सेल की जानकारी नहीं होगी, इसलिए आपको थोड़ा बदलाव लाने के लिए इसे कुछ शोर के साथ मिलाना होगा। सतह। यदि आप हमेशा एक ही यादृच्छिक-बीज का उपयोग करते हैं, तो आपका परिणाम निर्धारक होना चाहिए।

इसके अलावा, एक ऊंचाई-नक्शा उपयोगी होगा, ताकि आप सतह सुविधाओं की ऊंचाई निर्धारित कर सकें। इस तरह आप पहाड़ों आदि को जोड़ सकते हैं।

तो यह कुछ 2 डी छवियों के डेटा-वॉल्यूम को उबालता है जिसमें पृथ्वी की सतह के बारे में जानकारी होती है। अंदर की हर चीज के लिए, आप एक शुद्ध प्रक्रियात्मक दृष्टिकोण पर लौट आएंगे, जहां आप पृथ्वी-केंद्र से दूरी के आधार पर विभिन्न प्रकार के ब्लॉकों को प्रस्तुत करते हैं। लेकिन जैसा कि ऊपर कहा गया है, इन की गणना केवल तब की जानी है, जब कोई छेद खोदता है।

परिवर्तनों को लगातार बनाए रखने के लिए, मैं केवल संशोधनों को दुनिया को बचाऊंगा। इसलिए अगर कोई छेद खोदता है, तो मैं इस बारे में जानकारी संग्रहीत करूंगा कि कौन से स्वर निकाले गए हैं, क्योंकि मुझे आसपास के स्वरों को प्रक्रियात्मक रूप से प्रस्तुत करने में सक्षम होना चाहिए।

प्रतिपादन के लिए: इस कार्य को करने के लिए आपको कुछ परिष्कृत स्तर के विवरण और कलिंग एल्गोरिदम की आवश्यकता होगी। यह सभी सतह स्वरों को प्रस्तुत करने के लिए मूर्खतापूर्ण है, जब कैमरा एक ज़ूम स्तर पर होता है जो पूरी दुनिया को दिखाता है। इस स्तर पर, स्वर बहुत बड़ा होना चाहिए, शायद एक साधारण बनावट वाला क्षेत्र भी पर्याप्त होगा।

मुझे लगता है कि सबसे मुश्किल बात यह है कि एक ठोस जनरेटर होगा जो आपको विभिन्न "प्रस्तावों" के लिए भी, voxel गुणों की गणना करने की अनुमति देता है, ताकि आप इसे विस्तार के विभिन्न स्तरों को उत्पन्न करने के लिए उपयोग कर सकें।


केवल संशोधनों को बचाने के साथ समस्या यह है कि इसका एक अल्पकालिक समाधान है। यदि खिलाड़ी ग्रह को संशोधित करना शुरू करते हैं तो यह अंततः उस स्थिति की ओर ले जाएगा जहां संशोधित डेटा ग्रह जितना बड़ा है।
सीज़र कानास

1
@CesarCanassa यह अधिक वास्तविक डेटा तो वास्तविक ग्रह डेटा के लिए एक यथार्थवादी परिदृश्य नहीं है। देखो कि हम इंसानों ने पृथ्वी पर क्या परिवर्तन किया है ... मैं कहूंगा कि यह पृथ्वी की सतह का केवल एक छोटा प्रतिशत है। महासागर मूल रूप से अछूते हैं जो पहले से ही पृथ्वी की सतह का बड़ा हिस्सा बनाते हैं। कल्पना कीजिए कि 1 मिलियन खिलाड़ी खेल खेल रहे हैं (लगातार) और 1 voxel प्रति m2 पृथ्वी की सतह (510,072,000km2)। यदि प्रत्येक खिलाड़ी प्रत्येक 10 सेकंड में 1 voxel को संशोधित करेगा, तो इसे अभी भी ~ 160 साल लगेंगे बस सतह को संशोधित करने के लिए। और यह पृथ्वी के अंदर की गिनती नहीं है!
बंमज़ैक 15

एक बड़े पैमाने पर voxels को संशोधित करने के तरीके लागू किए जाते हैं जैसे कि एक परमाणु बम विस्फोट और एक पूरे द्वीप या शक्तिशाली भूकंप उद्घाटन दरारें डूबना। यहां तक ​​कि संशोधित डेटा पृथ्वी की मात्रा का सिर्फ 0.0001% है जो अभी भी 10 ^ 15 voxels
Cesar Canassa

यह सच है कि संशोधन पृथ्वी के सापेक्ष छोटे हैं, लेकिन हमने पिछली सदी में जो संशोधन किए हैं, वे अभी भी काफी प्रभावशाली हैं: 1970 और 1990 के दशक के अंत से अरल समुद्र के लिए उपग्रह कल्पना की तुलना करें। (मैंने एक बार 1940 के दशक में आधुनिक 100 मीटर-रिज़ॉल्यूशन उपग्रह इमेजरी को बैकडेट करने के लिए आवश्यक परिवर्तनों पर ध्यान दिया)। और 1 मीटर रिज़ॉल्यूशन में बर्फ और बर्फ के आवरण में मौसमी बदलाव के लिए टन डेटा की आवश्यकता होती है, भले ही आप हिमशैल के मॉडल के रूप में इतनी दूर न जाएं।
पीटर टेलर

0

आप मूल रूप से वही काम कर सकते हैं जो Minecraft करता है। डेटा की इतनी मात्रा बनाने के बजाय आप एक विश्व को गणितीय सूत्र के रूप में परिभाषित कर सकते हैं, जब भी प्रदर्शन के लिए डेटा का एक टुकड़ा आवश्यक होता है तो आप इसे सूत्र का उपयोग करके उत्पन्न करते हैं।

इस तरह का एक सूत्र आमतौर पर पेरलिन शोर की अवधारणा का उपयोग करके बनाया गया है , यह सभी स्तरों पर विवरणों के लिए अनुमति देता है, आपके पास वास्तविक दुनिया में पर्वत श्रृंखला जितनी बड़ी हो सकती है, फिर भी उनमें से केवल एक छोटा सा हिस्सा चुनना है। आप अपनी पसंद का विवरण तैयार कर सकते हैं, इसलिए पास के सामान के लिए बहुत ही बारीक विवरण तैयार करना संभव है, फिर भी विस्तार के आवश्यक स्तर में दूर के दृश्य उत्पन्न करते हैं।

Minecraft आपके द्वारा देखे गए उन सभी ब्लॉकों को बचाता है, जो कुछ भी बदलाव किए गए हैं, उनके साथ, केवल एक उत्पन्न दुनिया और अद्यतन दुनिया के बीच के अंतर को बचा सकता है, लेकिन मुझे लगता है कि बड़े ब्लॉकों को सहेजना आसान था, और वे अपेक्षाकृत अच्छी तरह से सेक करते हैं।

मुझे नहीं लगता कि कोई ऐसा खेल है जो वास्तव में इसे सीमा तक ले जाता है, लेकिन बड़े खेल की दुनिया के सभी "महत्वहीन" विवरणों के फार्मूलाबद्ध पीढ़ी का उपयोग करना बहुत आम है। मुझे यकीन नहीं है कि जरूरत पड़ने पर जनरेट कितना सामान्य है, हालांकि, केवल बहुत उत्पन्न करने और डिस्क पर डालने के विपरीत।


2
मैं एक गणितीय सूत्र से अवगत नहीं हूं जो 1: 1 फैशन में पृथ्वी का वर्णन करता है।
MichaelHouse

नहीं "पृथ्वी", लेकिन कुछ इसी तरह की।
आआआआआआआआआआ आआआआआ

0

आप पृथ्वी के भूस्वामियों के वेक्टर डेटा की तलाश कर सकते हैं, क्योंकि वेक्टर डेटा को आपके इच्छित किसी भी पैमाने पर स्केलिंग का लाभ मिलता है। भू-भाग की ऊँचाई उत्पन्न करने के लिए इसे पृथ्वी के ऊँचाई के नक्शे के साथ मिलाएँ। अंतिम चरण कुछ विस्तृत उपग्रह इमेजरी है, जहां से आप छवि के आधार पर शीर्ष ब्लॉक के प्रकार को चुन सकते हैं, इसलिए आपको वहां चट्टान मिलती है जहां चट्टान है, रेत जहां रेत है, आदि। ग्रह के वास्तविक अंदरूनी हिस्से को संभवतः उत्पन्न किया जाना चाहिए। जैसे कि Minecraft करता है, जब तक कि आप काम करने के लिए विस्तृत भौगोलिक डेटा नहीं पा सकते। मूल रूप से, आप जो करना चाहते हैं वह भौगोलिक डेटा है, और इसमें से एक्सट्रपलेट केवल एक्सवाईजेड समन्वय इनपुट दिया जाता है। इसका मतलब है कि आपके पास सीमित डेटा है, और आप जितना हो सके बाकी को एक्सट्रपलेशन करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.