Re: MineCraft with Python

"Cabal Owen" <[email protected]> Fri, 02 Dec 2022 04:59:43 -0000
Newsgroups gmane.comp.python.education
Message-ID <[email protected]>
UHl0aG9uIHNjcmlwdHMgY2FuIGdlbmVyYXRlIG5lYXQgaW4td29ybGQgdGhpbmdzLCBhbmQgdGhl
cmUgYXJlIG1hbnkgZXhhbXBsZXMgb24gdGhlIHdlYi4gV2l0aCBhIGZldyBsaW5lcyB5b3UgY2Fu
IGRyYXcgYSBnaWFudCBnbGFzcyBzcGhlcmUsIGFuZCB3aXRoIGEgYml0IG1vcmUgd29yayBtYWtl
IGEgZ2lhbnQgU2llcnBpbnNraSB0cmlhbmdsZSBpbiB0aGUgc2t5IGFuZCBldmVuIGltcG9ydCBv
YmogZmlsZXMgbGlrZSBhIHNwYWNlIHNodXR0bGUuIEkgbXlzZWxmIG1hZGUgZnVuIHNjcmlwdHMg
dG8gZHJhdyBhIHdhdGVyLWZpbGxlZCBnbGFzcyBkb251dCBhbmQgYSBnaWdhbnRpYyBLbGVpbiBi
b3R0bGUsIHRvIHR1cm4gZXZlcnl0aGluZyBhcm91bmQgaW50byBUTlQgYW5kIHRvIGNvbnRyb2wg
TWluZWNyYWZ0IHdpdGggeW91ciBicmFpbiB1c2luZyBhIE1pbmRGbGV4IEVFRyB0b3kuIFRoZXJl
IGlzIGEgd2hvbGUgYm9vayBpbnRyb2R1Y2luZyBwcm9ncmFtbWluZyB1c2luZyBweXRob24gc2Ny
aXB0cyBmb3IgTWluZWNyYWZ0LCBhbmQgeW91IGNhbiBldmVuIG1ha2Ugc2ltcGxlIE1pbmVjcmFm
dC1iYXNlZCBnYW1lcy4gSSB3aWxsIGFsc28gc2hvdyBob3cgdG8gZG8gc2ltcGxlIChhbmQgc29t
ZXRpbWVzIG1vcmUgZWxhYm9yYXRlKSB0dXJ0bGUtYmFzZWQgZHJhd2luZ3MgaW4gTWluZWNyYWZ0
LCB3aGlsZSB5b3UgY2FuIHJpZGUgYWxvbmcgd2l0aCB0aGUgZHJhd2luZyBhcyB0aGUgdHVydGxl
Lg0KDQpGb3IgYSB3aGlsZSBub3cgeW91IGNvdWxkIHdyaXRlIHB5dGhvbiBzY3JpcHRzIGZvciBN
aW5lY3JhZnQgb24gdGhlIFJhc3BiZXJyeSBQaS4gSSB3YW50ZWQgbXkga2lkcyB0byBiZSBhYmxl
IHRvIGRvIHRoYXQsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgUGksIHBsdXMgaXQgd291bGQgYmUgbmlj
ZSB0byBkbyB0aGlzIHdpdGggdGhlIGZ1bGwgZGVza3RvcCBNaW5lY3JhZnQuIFlvdSBjb3VsZCBy
dW4geW91ciBvd24gc2VydmVyIHdpdGggdGhlIFJhc3BiZXJyeSBKdWljZSBwbHVnaW4gd2hpY2gg
ZW5hYmxlcyBtb3N0IG9mIHRoZSBweXRob24gc2NyaXB0cyB0byB3b3JrLiBCdXQgbm90IGV2ZXJ5
b25lIHdhbnRzIHRvIGluc3RhbGwgYW5kIGNvbmZpZ3VyZSBhIHNlcnZlci4NCg0KU28gSSB3cm90
ZSB0aGUgUmFzcGJlcnJ5IEphbSBNb2QgZm9yIE1pbmVjcmFmdCAxLjggKG5vdyBwb3J0ZWQgdG8g
MS44LjgsIDEuOC45IGFuZCAxLjkgYXMgd2VsbCkgdGhhdCBlbXVsYXRlcyBtb3N0IG9mIHRoZSBS
YXNwYmVycnkgUGkgTWluZWNyYWZ0IHByb3RvY29sIChhYm91dCB0aGUgc2FtZSBhcyB0aGUgUmFz
cGJlcnJ5IEp1aWNlIHBsdWdpbiBwcm92aWRlcykgYW5kIGxldHMgUmFzcGJlcnJ5IFBpIHB5dGhv
biBzY3JpcHRzIHJ1biB3aXRoIGZ1bGwgZGVza3RvcCBNaW5lY3JhZnQuIChJIGxhdGVyIGZvdW5k
IG91dCB0aGF0IHNvbWVvbmUgd3JvdGUgdGhlIG1jcGlhcGkgbW9kIGZvciBNaW5lY3JhZnQgMS43
LjEwIGEgY291cGxlIG9mIHdlZWtzIGVhcmxpZXIuKSBJIHdyb3RlIHRoaXMgSW5zdHJ1Y3RhYmxl
IGluaXRpYWxseSBmb3IgUHl0aG9uIDIuNywgYnV0IEkgdGhpbmsgbW9zdCBvZiBteSBzYW1wbGVz
IHdpbGwgd29yayBmb3IgMy54Lg0KDQpJIGFzc3VtZSB0aGF0IHlvdSBoYXZlIGJhc2ljIGZhY2ls
aXR5IHdpdGggY3JlYXRpbmcgZm9sZGVycyBhbmQgZG93bmxvYWRpbmcsIHVuemlwcGluZywgYW5k
IGNvcHlpbmcgZmlsZXMgb24gV2luZG93cyAob3IgeW91ciBvcGVyYXRpbmcgc3lzdGVtIG9mIGNo
b2ljZSkuDQoNCllvdSBjYW4gY3JlYXRlIFB5dGhvbiBzY3JpcHRzIGZvciBNaW5lY3JhZnQgd2l0
aCBhIHRleHQgZWRpdG9yLCB0aGUgSURMRSBlbnZpcm9ubWVudCB3aGljaCBjb21lcyB3aXRoIFB5
dGhvbiwgb3Igd2l0aCBWaXN1YWwgU3R1ZGlvIFB5dGhvbiBUb29scyBvbiBXaW5kb3dzLiBUaGUg
bGFzdCBpcyBhY3R1YWxseSB0aGUgbmljZXN0IGluIHNvbWUgd2F5cywgc28gSSdsbCBoYXZlIHNv
bWUgb3B0aW9uYWwgc3RlcHMgb24gaG93IHRvIGRvIHRoYXQuDQoNClRoaXMgc3VtbWVyIEkgcGxh
biB0byB0ZWFjaCBjb2RpbmcgYW5kIGJhc2ljIDNEIGdlb21ldHJ5IHRvIGdpZnRlZCBtaWRkbGUt
IGFuZCBoaWdoLXNjaG9vbGVycyB1c2luZyBNaW5lY3JhZnQsIFJhc3BiZXJyeSBKYW0gTW9kLCBQ
eXRob24gYW5kIFZpc3VhbCBTdHVkaW8uDQoNCklmIHlvdSB3YW50IHRvIGRvIHRoaXMgd2l0aCBN
aW5lY3JhZnQgUG9ja2V0IEVkaXRpb24gb24gQW5kcm9pZCBpbnN0ZWFkLCBJIGhhdmUgYW4gSW5z
dHJ1Y3RhYmxlIGZvciB0aGF0LCB0b28uDQoNClN0ZXAgMS4gTW9kdWxlcyBhbmQgbGlicmFyaWVz
IGZvciBNYWtlIE1pbmVjcmFmdCBpbiBQeXRob24NClRvIG1ha2UgdGhpcyBNaW5lY3JhZnQgZ2Ft
ZSBpbiBQeXRob24sIHdlIHdpbGwgdXRpbGl6ZSB0aGUgdXJzaW5hIFB5dGhvbiBtb2R1bGUuIEl0
IGlzIGEgUHl0aG9uIGNyb3NzLXBsYXRmb3JtIGdhbWUgY3JlYXRpb24gcGFja2FnZSBzaW1pbGFy
IHRvIFB5R2FtZS4NCg0KVG8gaW5zdGFsbCB0aGlzIGxpYnJhcnksIHN0YXJ0IGEgdGVybWluYWwg
b3IgY29tbWFuZCBwcm9tcHQgaW4gdGhlIHByb2plY3QgZm9sZGVyIGFuZCBwYXN0ZSB0aGUgZm9s
bG93aW5nIGNvbW1hbmQuDQoNCnBpcCBpbnN0YWxsIHVyc2luYQ0KU3RlcCAyLiBpbXBvcnRpbmcg
bGlicmFyeQ0KSW1wb3J0IHRoZSBVcnNpbmEgRW5naW5lIGFuZCBhbGwgdGhlIFRleHR1cmVzIHRo
YXQgd2Ugd2lsbCByZXF1aXJlIGluIHRoZSBmdXR1cmUuDQoNCmZyb20gdXJzaW5hIGltcG9ydCAq
DQpmcm9tIHVyc2luYS5wcmVmYWJzLmZpcnN0X3BlcnNvbl9jb250cm9sbGVyIGltcG9ydCBGaXJz
dFBlcnNvbkNvbnRyb2xsZXINCmFwcCA9IFVyc2luYSgpDQpncmFzc190ZXh0dXJlID0gbG9hZF90
ZXh0dXJlKCdhc3NldHMvZ3Jhc3NfYmxvY2sucG5nJykNCnN0b25lX3RleHR1cmUgPSBsb2FkX3Rl
eHR1cmUoJ2Fzc2V0cy9zdG9uZV9ibG9jay5wbmcnKQ0KYnJpY2tfdGV4dHVyZSA9IGxvYWRfdGV4
dHVyZSgnYXNzZXRzL2JyaWNrX2Jsb2NrLnBuZycpDQpkaXJ0X3RleHR1cmUgID0gbG9hZF90ZXh0
dXJlKCdhc3NldHMvZGlydF9ibG9jay5wbmcnKQ0Kc2t5X3RleHR1cmUgICA9IGxvYWRfdGV4dHVy
ZSgnYXNzZXRzL3NreWJveC5wbmcnKQ0KYXJtX3RleHR1cmUgICA9IGxvYWRfdGV4dHVyZSgnYXNz
ZXRzL2FybV90ZXh0dXJlLnBuZycpDQpwdW5jaF9zb3VuZCAgID0gQXVkaW8oJ2Fzc2V0cy9wdW5j
aF9zb3VuZCcsbG9vcCA9IEZhbHNlLCBhdXRvcGxheSA9IEZhbHNlKQ0KYmxvY2tfcGljayA9IDEN
ClRvIGxvYWQgdGhlIHRleHR1cmVzIGFuZCBibG9jayB5b3UgbmVlZCB0byBkb3dubG9hZCB0aGUg
QXNzZXRzIGZvbGRlciBhbmQgcGFzdGUgaXQgd2hlcmUgeW91ciBNaW5lY3JhZnQgY29kZSBQeXRo
b24gZmlsZSBpcyBzdG9yZWQuDQoNCk5vdyB0aGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIG5lZWQg
dG8gZG8gdG8gbWFrZSB0aGlzIGFsbCB3b3JrLCBhbmQgbGV04oCZcyBzdGFydCBieSBtYWtpbmcg
YWN0dWFsIGN1YmVzIHRoYXQgd2UgY2FuIHV0aWxpemUuIFRoaXMgd2lsbCBiZSB0aGUgbW9zdCBz
aWduaWZpY2FudCBtb2RpZmljYXRpb24gdGhhdCB3ZSBjYW4gZG8uIEl0IHdvdWxkIGFwcGVhciBh
cHByb3ByaWF0ZSBpZiB3ZSBhcHBsaWVkIGEgbW9yZSBhcHByb3ByaWF0ZSB0ZXh0dXJlIHRvIGl0
LiBUbyBkbyB0aGF0IHdlIGNyZWF0ZWQgYSBjb3VwbGUgb2YgdGV4dHVyZXMuDQoNClN0ZXAgMy4g
TWFraW5nIFZveGVsKEN1YmVzKSBmb3IgTWluZWNyYWZ0IGluIFB5dGhvbg0KY2xhc3MgVm94ZWwo
QnV0dG9uKToNCglkZWYgX19pbml0X18oc2VsZiwgcG9zaXRpb24gPSAoMCwwLDApLCB0ZXh0dXJl
ID0gZ3Jhc3NfdGV4dHVyZSk6DQoJCXN1cGVyKCkuX19pbml0X18oDQoJCQlwYXJlbnQgPSBzY2Vu
ZSwNCgkJCXBvc2l0aW9uID0gcG9zaXRpb24sDQoJCQltb2RlbCA9ICdhc3NldHMvYmxvY2snLA0K
CQkJb3JpZ2luX3kgPSAwLjUsDQoJCQl0ZXh0dXJlID0gdGV4dHVyZSwNCgkJCWNvbG9yID0gY29s
b3IuY29sb3IoMCwwLHJhbmRvbS51bmlmb3JtKDAuOSwxKSksDQoJCQlzY2FsZSA9IDAuNSkNClRo
ZSB0aGlyZCBzdGVwIGlzIHRvIGJ1aWxkIGEgbmV3IGNsYXNzIGZvciBlYWNoIHZveGVsIHRoYXQg
d2Ugd2FudCB0byBjb25zdHJ1Y3QsIHRoZXJlZm9yZSB0aGUgY2xhc3MgbmFtZSB3aWxsIGJlIHZv
eGVsLiBBbmQgaXQgZGVyaXZlcyBmcm9tIHRoZSBidXR0b24gY2xhc3MuIFRoZSBiYXNpYyBleHBs
YW5hdGlvbiBpcyB0aGF0IGFueXRpbWUgSSBjbGljayBvbiBhIHZveGVsLCBJIHdhbnQgdG8gbWFr
ZSBhbm90aGVyIHZveGVsIGp1c3QgYWRqYWNlbnQgdG8gaXQuIFNvIEkgbmVlZCB0byBrbm93IHdo
ZXJlIGVhY2ggdm94ZWwgaXMgaW4gcmVsYXRpb24gdG8gd2hpY2ggYnV0dG9uLiBBbmQgaW4gaGVy
ZSwgd2UgbmVlZCBvdXIgaW5pdCBtZXRob2QgYWdhaW4gYW5kIG5vdGhpbmcgZWxzZSBmb3IgdGhl
IHRpbWUgYmVpbmcsIGFuZCB3ZSBhbHNvIG5lZWQgdGhlIHN1cGVyIG1ldGhvZCB3aXRoIGFuIHVu
ZGVyc2NvcmUgdG8gaW5pdC4gQW5kIG5vdyB3ZSBtdXN0IHN1cHBseSBhIGZldyBwYXJhbWV0ZXJz
LCB0aGUgZmlyc3Qgb2Ygd2hpY2ggaXMgcGFyZW50LCBhcyBzaG93biBhYm92ZS4NCg0KVGhlIG5l
eHQgc3RhZ2Ugd291bGQgYmUgdG8gZmluZCBhIHBvc2l0aW9uLCBhbmQgdGhlIGN1cnJlbnQgc3Rh
dHVzIGlzICgwLDApLiBOZXh0LCBJ4oCZZCB3YW50IHRvIG1ha2UgYSBtb2RlbCBvZiB3aGF0IHRo
ZSBvYmplY3Qgd291bGQgbG9vayBsaWtlLiBBbmQgZm9yIHRoZSB0aW1lIGJlaW5nLCB0aGlzIG9u
ZSB3aWxsIGJlIGEgY3ViZSAocGFyYW1ldGVycyksIGJ1dCB3ZSBtYXkgdXNlIGRpZmZlcmVudCBm
b3Jtcy4gVGhlIG5leHQgc3RlcCBpcyB0byBwYXNzIG9yaWdpbl95IHNvIHRoYXQgdGhlIGhlaWdo
dCBhbmQgM0Qgc3BhY2Ugb2YgdGhpcyBjdWJlIGFyZSBlZmZlY3RpdmVseSAoMC41KSwgYW5kIHRo
ZSBmaW5hbCBhbmQgbW9zdCBjcnVjaWFsIGl0ZW0gaXMgdGV4dHVyZSBhbmQgY29sb3IuIEFuZCBi
b3RoIG9mIHRoZXNlIHRoaW5ncyBtdWx0aXBsaWVkLg0KDQpTdGVwIDQuIE1ha2luZyBNaW5lY3Jh
ZnQgQXJlbmENCmZvciB6IGluIHJhbmdlKDIwKToNCglmb3IgeCBpbiByYW5nZSgyMCk6DQoJCXZv
eGVsID0gVm94ZWwocG9zaXRpb24gPSAoeCwwLHopKQ0KTm93IHRoYXQgd2UgaGF2ZSBldmVyeXRo
aW5nLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIGJ1dHRvbiBmb3IgaXQuIFRoZSBjdWJl4oCZcyBjdXJy
ZW50IHBvc2l0aW9ucyBhcmUgeCwgeSwgYW5kIHouICgwLDAsMCkuIFRvIGNyZWF0ZSBpbmRpdmlk
dWFsIHZveGVscywgd2UgbXVzdCBmaXJzdCBjcmVhdGUgYSBmb3IgbG9vcCBpbiB3aGljaCB0aGUg
dm94ZWwgaXMgc2V0LiBBbmQgaWYgeW91IG5lZWQgdG8gbWFrZSBpdCBiaWdnZXIsIGluY3JlYXNl
IDM1IGJ5IDM1LiBPbmUgb2YgdGhlIGN1cnJlbnQgaXNzdWVzIHdpdGggdGhpcyBnYW1lIGlzIHRo
YXQgaWYgeW91IGFkZCB0b28gbWFueSBvZiB0aGVzZSBmaWVsZHMsIHRoZSBnYW1lIG1heSBzbG93
IGRvd24uIEFzIGEgcmVzdWx0LCB0aGVyZSB3b3VsZCBiZSBhIHNpZ25pZmljYW50IGFtb3VudCBv
ZiBvcHRpbWl6YXRpb24gd29yayB0byBiZSBkb25lLg0KDQpTdGVwIDUuIENyZWF0aW5nIEZpcnN0
IHBlcnNvbiBDb250cm9sbGVyKEZQQykNCmZyb20gdXJzaW5hLnByZWZhYnMuZmlyc3RfcGVyc29u
X2NvbnRyb2xsZXIgaW1wb3J0IEZpcnN0UGVyc29uQ29udHJvbGxlcg0KcGxheWVyID0gRmlyc3RQ
ZXJzb25Db250cm9sbGVyKCkNClRoZSBxdWVzdGlvbiBpcyBob3cgd2UgY2FuIGRldmVsb3AgYSBm
aXJzdC1wZXJzb24gY2hhcmFjdGVyIGluIGFsbCBvZiB0aGlzLiBhbmQgdXJzaW5hIG1ha2VzIHRo
aXMgc3VwZXIgc2ltcGxlLiBCZWNhdXNlIGl0IGNvbWVzIHdpdGggYSBudW1iZXIgb2YgcHJlc2V0
IGNsYXNzZXMgdGhhdCB3ZSBtYXkgdXRpbGl6ZSB0byBjb25zdHJ1Y3QgYSBmaXJzdC1wZXJzb24g
Y2hhcmFjdGVyLiBXZSBkb27igJl0IHJlYWxseSBoYXZlIHRvIGRvIGFueXRoaW5nIGFib3V0IGl0
LiBBbmQgcmVhbGx5LCBhbGwgd2UgaGF2ZSB0byBkbyBpcyBpbXBvcnQgc29tZXRoaW5nIGVsc2Ug
Zmlyc3QsIHdoaWNoIGlzIGZyb20gdXJzaW5hLiBwcmVmYWJzLmZpcnN0X3BlcnNvbl8gY29udHJv
bGxlci4gVGhpcyBpcyBub3QgYnkgZGVmYXVsdCBpbXBvcnRlZCBpbnRvIE9jZWFuYSwgc28gd2Ug
aGF2ZSB0byBkbyBpdCBvdXJzZWx2ZXMsIGJ1dCBvbmNlIHdlIGRvIGl0LCBhbGwgd2UgaGF2ZSB0
byBkbyB0byBjcmVhdGUgRlBDIChGaXJzdCBQZXJzb24gQ2hhcmFjdGVyKSBpcyB0byBjcmVhdGUg
YSBuZXcgdmFyaWFibGUgd2hlcmUgd2Ugc3RvcmUgYW5kIHRoZW4gY2FsbCBGUEMuDQoNClN0ZXAg
Ni4gTWFraW5nIEludGVyYWN0aXZlIFVJIGZvciBNaW5lY3JhZnQgUHl0aG9uIEVkaXRpb24NCmRl
ZiBpbnB1dChzZWxmLGtleSk6DQoJaWYgc2VsZi5ob3ZlcmVkOg0KCQlpZiBrZXkgPT0gJ2xlZnQg
bW91c2UgZG93bic6DQoJCQlwdW5jaF9zb3VuZC5wbGF5KCkNCgkJCWlmIGJsb2NrX3BpY2sgPT0g
MTogdm94ZWwgPSBWb3hlbChwb3NpdGlvbiA9IHNlbGYucG9zaXRpb24gKyBtb3VzZS5ub3JtYWws
IHRleHR1cmUgPSBncmFzc190ZXh0dXJlKQ0KCQkJaWYgYmxvY2tfcGljayA9PSAyOiB2b3hlbCA9
IFZveGVsKHBvc2l0aW9uID0gc2VsZi5wb3NpdGlvbiArIG1vdXNlLm5vcm1hbCwgdGV4dHVyZSA9
IHN0b25lX3RleHR1cmUpDQoJCQlpZiBibG9ja19waWNrID09IDM6IHZveGVsID0gVm94ZWwocG9z
aXRpb24gPSBzZWxmLnBvc2l0aW9uICsgbW91c2Uubm9ybWFsLCB0ZXh0dXJlID0gYnJpY2tfdGV4
dHVyZSkNCgkJCWlmIGJsb2NrX3BpY2sgPT0gNDogdm94ZWwgPSBWb3hlbChwb3NpdGlvbiA9IHNl
bGYucG9zaXRpb24gKyBtb3VzZS5ub3JtYWwsIHRleHR1cmUgPSBkaXJ0X3RleHR1cmUpDQoJCQlp
ZiBrZXkgPT0gJ3JpZ2h0IG1vdXNlIGRvd24nOg0KCQkJCXB1bmNoX3NvdW5kLnBsYXkoKQ0KCQkJ
CWRlc3Ryb3koc2VsZikNCldoYXQgd2UgbmVlZCB0byBmaW5kIG91dCBub3cgaXMgaG93IHRvIG1h
a2UgdGhpcyBhbGwgbW9yZSBpbnRlcmFjdGl2ZS4gV2UgbXVzdCBhbHNvIGNyZWF0ZSBhbmQgZGVz
dHJveSBibG9ja3MsIHdoaWNoIHdpbGwgYmUgcmVhbGx5IHNpbXBsZS4gQmVjYXVzZSB3aGF0IHdl
IHdhbnQgdG8gYWNjb21wbGlzaCBpcywgd2hlbiB5b3UgcHVzaCB0aGUgdm94ZWwgYnV0dG9uLCB3
ZSB3YW50IHRvIGNvbnN0cnVjdCBhIG5ldyBibG9jayBhdCB0aGF0IGxvY2F0aW9uLiBXZSBkZXZl
bG9wIGFuIGlucHV0IGZ1bmN0aW9uIHRvIGRvIHRoaXMuIE1ha2Ugc29tZSB0cmFuc21pc3Npb25z
IGFzIHdlbGwuIEFuZCB0aGVuIG1ha2UgYSB0byBjaGFuZ2Ugdm94ZWwgZm9yIHZveGVsIHRleHR1
cmUNCg0KU3RlcCA3LiBDaGFuZ2luZyBEaWZmZXJlbnQgVGV4dHVyZXMgZm9yIENvZGluZyBNaW5l
Y3JhZnQgaW4gUHl0aG9uDQpkZWYgdXBkYXRlKCk6DQoJZ2xvYmFsIGJsb2NrX3BpY2sNCg0KCWlm
IGhlbGRfa2V5c1snbGVmdCBtb3VzZSddIG9yIGhlbGRfa2V5c1sncmlnaHQgbW91c2UnXToNCgkJ
aGFuZC5hY3RpdmUoKQ0KCWVsc2U6DQoJCWhhbmQucGFzc2l2ZSgpDQoNCglpZiBoZWxkX2tleXNb
JzEnXTogYmxvY2tfcGljayA9IDENCglpZiBoZWxkX2tleXNbJzInXTogYmxvY2tfcGljayA9IDIN
CglpZiBoZWxkX2tleXNbJzMnXTogYmxvY2tfcGljayA9IDMNCglpZiBoZWxkX2tleXNbJzQnXTog
YmxvY2tfcGljayA9IDQNClRvIG1ha2UgTWluZWNyYWZ0IHdpdGggcHl0aG9uLCB3ZSBuZWVkIHRv
IGNoYW5nZSB0aGUgY3ViZSB0ZXh0dXJlLCBhbmQgZm9yIGNoYW5naW5nIHRoZSBjdWJlIHRleHR1
cmUgaGVyZSB3ZSBjcmVhdGVkIGEgbG9vcCBieSBjbGlja2luZyBvbmUgdG8gZm91ciBrZXlzIHRv
IGFsdGVyIHRoZSB2b3hlbCB0ZXh0dXJlIGJ5IExlZnQgY2xpY2sgYW5kIGRlc3Ryb3lpbmcgaXQg
d2l0aCB0aGUgcmlnaHQga2V5LiBJbiBzaW1wbGUgd29yZHMuIElmIHdlIHByZXNzIGFueSBvZiB0
aGVzZSBidXR0b25zIHRoaXMgYmxvY2sgcGljayBnZXRzIGEgZGlmZmVyZW50IG51bWJlci4NCg0K
U3RlcCA4LiBDcmVhdGluZyB0aGUgU2t5DQpjbGFzcyBTa3koRW50aXR5KToNCglkZWYgX19pbml0
X18oc2VsZik6DQoJCXN1cGVyKCkuX19pbml0X18oDQoJCQlwYXJlbnQgPSBzY2VuZSwNCgkJCW1v
ZGVsID0gJ3NwaGVyZScsDQoJCQl0ZXh0dXJlID0gc2t5X3RleHR1cmUsDQoJCQlzY2FsZSA9IDE1
MCwNCgkJCWRvdWJsZV9zaWRlZCA9IFRydWUpDQpUaGVyZSBhcmUgdGhyZWUgb3RoZXIgY29tcG9u
ZW50cyB0aGF0IGNhbiBzaWduaWZpY2FudGx5IGhlbHAgdG8gY29udmV5IHRoZSBnYW1lLiBUaGUg
Zmlyc3QgaXMgYSBTa3kgQm94LCB0aGUgc2Vjb25kIGlzIGEgSGFuZCwgYW5kIHRoZSB0aGlyZCBp
cyBub2lzZXMuIEFuZCBsZXQgdXMgdGFrZSB0aGVtIG9uZSBzdGVwIGF0IGEgdGltZSBpbiBNaW5l
Y3JhZnQgY29kaW5nIFB5dGhvbi4gVGhlIGZpcnN0IGlzIGEgc2t5Ym94LCB3aGljaCB3ZSBlbXVs
YXRlZCBpbiBvdXIgZ2FtZSBieSBjcmVhdGluZyBhIGh1Z2Ugc3BoZXJlIHdpdGggYSBza3kgdGV4
dHVyZS4gVG8gZG8gdGhpcywgd2Ugd2lsbCBjb25zdHJ1Y3QgYSBuZXcgY2xhc3MgbmFtZWQgU2t5
Lg0KDQpTdGVwIDkuIE1ha2UgYW4gRlBDIEhhbmQNCmNsYXNzIEhhbmQoRW50aXR5KToNCglkZWYg
X19pbml0X18oc2VsZik6DQoJCXN1cGVyKCkuX19pbml0X18oDQoJCQlwYXJlbnQgPSBjYW1lcmEu
dWksICMgVGhpcyAzRCBzcGFjZSBmb3IgT3VyIFVJIGFuZCAyRCBzcGFjZSBmb3Igb3VyIGNhbWVy
YQ0KCQkJbW9kZWwgPSAnYXNzZXRzL2FybScsDQoJCQl0ZXh0dXJlID0gYXJtX3RleHR1cmUsDQoJ
CQlzY2FsZSA9IDAuMiwNCgkJCXJvdGF0aW9uID0gVmVjMygxNTAsLTEwLDApLCAjdmVjMyBpcyBy
ZXByZXNlbnQgM0Qgc3BhY2UgYW5kIHRoZSBwYXJhbWV0ZXJzIGFyZSBmb3IgcG9zaXRpb24oeCx5
LHopDQoJCQlwb3NpdGlvbiA9IFZlYzIoMC40LC0wLjYpKSAjdmVjMiBpcyByZXByZXNlbnQgMkQg
c3BhY2UgYW5kIHRoZSBwYXJhbWV0ZXJzIGFyZSBmb3IgcG9zaXRpb24oeCx5LHopDQoNCglkZWYg
YWN0aXZlKHNlbGYpOg0KCQlzZWxmLnBvc2l0aW9uID0gVmVjMigwLjMsLTAuNSkNCg0KCWRlZiBw
YXNzaXZlKHNlbGYpOg0KCQlzZWxmLnBvc2l0aW9uID0gVmVjMigwLjQsLTAuNikNCk5vdyB0aGUg
bmV4dCB0aGluZyB3ZSB3aWxsIGdvaW5nIHRvIG5lZWQgaXMgYSBoYW5kIGFuZCB0aGlzIG9uZSBp
cyBwdXJlbHkgZGVjb3JhdGl2ZS4gQmFzaWNhbGx5IEkgaGF2ZSB1c2VkIHNvbWUgdHlwZXMgb2Yg
dmFyaWFibGVzIHdoaWxlIHdvcmtpbmcgb24gaHR0cHM6Ly9lbnRlcnByaXNlLmFmZmxlLmNvbS9t
b2JpbGUtYXBwLWRldmVsb3BtZW50IC4gSXQgZG9lcyBub3QgZG8gYW55dGhpbmcgYmVzaWRlcyBz
aW11bGF0aW5nIGhhdmluZyBhIGhhbmQgaXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIHRoaW5nIGJ5
IGNyZWF0aW5nIGEgY2xhc3MgY2FsbGVkIGhhbmQsIHRoaXMgb25lIGlzIGFsc28gZ29pbmcgdG8g
YmUgYW4gZW50aXR5Lg0KDQpDb21wbGV0ZSBjb2RlIG9mIE1pbmVjcmFmdCBpbiBQeXRob24gLQ0K
ZnJvbSB1cnNpbmEgaW1wb3J0ICoNCmZyb20gdXJzaW5hLnByZWZhYnMuZmlyc3RfcGVyc29uX2Nv
bnRyb2xsZXIgaW1wb3J0IEZpcnN0UGVyc29uQ29udHJvbGxlcg0KDQphcHAgPSBVcnNpbmEoKQ0K
Z3Jhc3NfdGV4dHVyZSA9IGxvYWRfdGV4dHVyZSgnYXNzZXRzL2dyYXNzX2Jsb2NrLnBuZycpDQpz
dG9uZV90ZXh0dXJlID0gbG9hZF90ZXh0dXJlKCdhc3NldHMvc3RvbmVfYmxvY2sucG5nJykNCmJy
aWNrX3RleHR1cmUgPSBsb2FkX3RleHR1cmUoJ2Fzc2V0cy9icmlja19ibG9jay5wbmcnKQ0KZGly
dF90ZXh0dXJlICA9IGxvYWRfdGV4dHVyZSgnYXNzZXRzL2RpcnRfYmxvY2sucG5nJykNCnNreV90
ZXh0dXJlICAgPSBsb2FkX3RleHR1cmUoJ2Fzc2V0cy9za3lib3gucG5nJykNCmFybV90ZXh0dXJl
ICAgPSBsb2FkX3RleHR1cmUoJ2Fzc2V0cy9hcm1fdGV4dHVyZS5wbmcnKQ0KcHVuY2hfc291bmQg
ICA9IEF1ZGlvKCdhc3NldHMvcHVuY2hfc291bmQnLGxvb3AgPSBGYWxzZSwgYXV0b3BsYXkgPSBG
YWxzZSkNCmJsb2NrX3BpY2sgPSAxDQoNCndpbmRvdy5mcHNfY291bnRlci5lbmFibGVkID0gRmFs
c2UgI1RvIERpc2FibGUgdGhlIEZQUyBDb3VudGVyIA0Kd2luZG93LmV4aXRfYnV0dG9uLnZpc2li
bGUgPSBGYWxzZSAjVG8gUmVtb3ZlIHRoZSBleGl0KGNsb3NlKSBCdXR0b24NCg0KZGVmIHVwZGF0
ZSgpOg0KCWdsb2JhbCBibG9ja19waWNrDQoNCglpZiBoZWxkX2tleXNbJ2xlZnQgbW91c2UnXSBv
ciBoZWxkX2tleXNbJ3JpZ2h0IG1vdXNlJ106DQoJCWhhbmQuYWN0aXZlKCkNCgllbHNlOg0KCQlo
YW5kLnBhc3NpdmUoKQ0KDQoJaWYgaGVsZF9rZXlzWycxJ106IGJsb2NrX3BpY2sgPSAxDQoJaWYg
aGVsZF9rZXlzWycyJ106IGJsb2NrX3BpY2sgPSAyDQoJaWYgaGVsZF9rZXlzWyczJ106IGJsb2Nr
X3BpY2sgPSAzDQoJaWYgaGVsZF9rZXlzWyc0J106IGJsb2NrX3BpY2sgPSA0DQoNCmNsYXNzIFZv
eGVsKEJ1dHRvbik6DQoJZGVmIF9faW5pdF9fKHNlbGYsIHBvc2l0aW9uID0gKDAsMCwwKSwgdGV4
dHVyZSA9IGdyYXNzX3RleHR1cmUpOg0KCQlzdXBlcigpLl9faW5pdF9fKA0KCQkJcGFyZW50ID0g
c2NlbmUsDQoJCQlwb3NpdGlvbiA9IHBvc2l0aW9uLA0KCQkJbW9kZWwgPSAnYXNzZXRzL2Jsb2Nr
JywNCgkJCW9yaWdpbl95ID0gMC41LA0KCQkJdGV4dHVyZSA9IHRleHR1cmUsDQoJCQljb2xvciA9
IGNvbG9yLmNvbG9yKDAsMCxyYW5kb20udW5pZm9ybSgwLjksMSkpLA0KCQkJc2NhbGUgPSAwLjUp
DQoNCglkZWYgaW5wdXQoc2VsZixrZXkpOg0KCQlpZiBzZWxmLmhvdmVyZWQ6DQoJCQlpZiBrZXkg
PT0gJ2xlZnQgbW91c2UgZG93bic6DQoJCQkJcHVuY2hfc291bmQucGxheSgpDQoJCQkJaWYgYmxv
Y2tfcGljayA9PSAxOiB2b3hlbCA9IFZveGVsKHBvc2l0aW9uID0gc2VsZi5wb3NpdGlvbiArIG1v
dXNlLm5vcm1hbCwgdGV4dHVyZSA9IGdyYXNzX3RleHR1cmUpDQoJCQkJaWYgYmxvY2tfcGljayA9
PSAyOiB2b3hlbCA9IFZveGVsKHBvc2l0aW9uID0gc2VsZi5wb3NpdGlvbiArIG1vdXNlLm5vcm1h
bCwgdGV4dHVyZSA9IHN0b25lX3RleHR1cmUpDQoJCQkJaWYgYmxvY2tfcGljayA9PSAzOiB2b3hl
bCA9IFZveGVsKHBvc2l0aW9uID0gc2VsZi5wb3NpdGlvbiArIG1vdXNlLm5vcm1hbCwgdGV4dHVy
ZSA9IGJyaWNrX3RleHR1cmUpDQoJCQkJaWYgYmxvY2tfcGljayA9PSA0OiB2b3hlbCA9IFZveGVs
KHBvc2l0aW9uID0gc2VsZi5wb3NpdGlvbiArIG1vdXNlLm5vcm1hbCwgdGV4dHVyZSA9IGRpcnRf
dGV4dHVyZSkNCg0KCQkJaWYga2V5ID09ICdyaWdodCBtb3VzZSBkb3duJzoNCgkJCQlwdW5jaF9z
b3VuZC5wbGF5KCkNCgkJCQlkZXN0cm95KHNlbGYpDQoNCmNsYXNzIFNreShFbnRpdHkpOg0KCWRl
ZiBfX2luaXRfXyhzZWxmKToNCgkJc3VwZXIoKS5fX2luaXRfXygNCgkJCXBhcmVudCA9IHNjZW5l
LA0KCQkJbW9kZWwgPSAnc3BoZXJlJywNCgkJCXRleHR1cmUgPSBza3lfdGV4dHVyZSwNCgkJCXNj
YWxlID0gMTUwLA0KCQkJZG91YmxlX3NpZGVkID0gVHJ1ZSkNCg0KY2xhc3MgSGFuZChFbnRpdHkp
Og0KCWRlZiBfX2luaXRfXyhzZWxmKToNCgkJc3VwZXIoKS5fX2luaXRfXygNCgkJCXBhcmVudCA9
IGNhbWVyYS51aSwNCgkJCW1vZGVsID0gJ2Fzc2V0cy9hcm0nLA0KCQkJdGV4dHVyZSA9IGFybV90
ZXh0dXJlLA0KCQkJc2NhbGUgPSAwLjIsDQoJCQlyb3RhdGlvbiA9IFZlYzMoMTUwLC0xMCwwKSwN
CgkJCXBvc2l0aW9uID0gVmVjMigwLjQsLTAuNikpDQoNCglkZWYgYWN0aXZlKHNlbGYpOg0KCQlz
ZWxmLnBvc2l0aW9uID0gVmVjMigwLjMsLTAuNSkNCg0KCWRlZiBwYXNzaXZlKHNlbGYpOg0KCQlz
ZWxmLnBvc2l0aW9uID0gVmVjMigwLjQsLTAuNikNCg0KZm9yIHogaW4gcmFuZ2UoMjApOg0KCWZv
ciB4IGluIHJhbmdlKDIwKTogDQoJCXZveGVsID0gVm94ZWwocG9zaXRpb24gPSAoeCwwLHopKQ0K
DQpwbGF5ZXIgPSBGaXJzdFBlcnNvbkNvbnRyb2xsZXIoKQ0Kc2t5ID0gU2t5KCkNCmhhbmQgPSBI
YW5kKCkNCg0KYXBwLnJ1bigpDQoNCkhvcGUgaXQgd2lsbCBoZWxwIGV2ZXJ5b25lLg0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRWR1LXNpZyBtYWlsaW5n
IGxpc3QgLS0gZWR1LXNpZ0BweXRob24ub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwg
dG8gZWR1LXNpZy1sZWF2ZUBweXRob24ub3JnCmh0dHBzOi8vbWFpbC5weXRob24ub3JnL21haWxt
YW4zL2xpc3RzL2VkdS1zaWcucHl0aG9uLm9yZy8KTWVtYmVyIGFkZHJlc3M6IHB5dGhvbi1lZHUt
c2lnQG0uZ21hbmUtbXgub3JnCg==