SGVsbG8gZmVsbG93IFBJQ2VycywKCkRvbid0IGtub3cgd2hhdCBJJ20gZG9pbmcgd3Jvbmc7SSd2 ZSBzZXQgdXAgdGhlIExDRCBvbiB0aGlzIHBhcnQgYW5kIAp0cmllZCB0byBzdGFydCB0aGUgTENE IG1vZHVsZSBidXQgaXQgbmV2ZXIgc3RhcnRzIGFuZApiaXQgTENEQSBvZiBMQ0RQUyBzdGF5cyBs b3cuCgpJIHhvcidlZCBhIHBvcnQgaW4gbWFpbiB0byB2ZXJpZnkgdGhlIFBJQyBpcyBydW5uaW5n LgoKClNPIG5vIGFjdGl2aXR5IG9uIHRoZSBzZWdtZW50IG9yIGNvbW1vbiBvdXRwdXRzLiBBcyBu ZWFyIGFzIEkgY2FuIHRlbGwgCmFsbCB0aGUgb3RoZXIgcmVnaXN0ZXJzIHNlZW0gY29ycmVjdC4K SSdkIHZlcnkgbXVjaCBhcHByZWNpYXRlIGl0IGlmIHNvbWVvbmUgY291bGQgdGFrZSBhIGxvb2sg YXQgbXkgY29kZSBvciAKc3VnZ2VzdCB0aGluZ3MgSSBmb3Jnb3Qgb3IgZGlkIHdyb25nLgoKSGVy ZSdzIG15IGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZSBMQ0Q6CgoqKioKCnZvaWQgTENEX0lu aXRpYWxpemUodm9pZCkKewogwqDCoMKgIC8vIERpc2FibGUgbW9kdWxlIGJlZm9yZSBjb25maWd1 cmluZwogwqDCoMKgIExDRENPTmJpdHMuTENERU4gPSAwOwoKIMKgwqDCoCAvLyBzZXQgdGhlIExD RCB0byB0aGUgb3B0aW9ucyBzZWxlY3RlZCBpbiB0aGUgVXNlciBJbnRlcmZhY2UKIMKgwqDCoCAv LyBMUCAxOjE7IFdGVCBUeXBlLUEgd2F2ZWZvcm07CiDCoMKgwqAgTENEUFMgPSAweDAwOwoKIMKg wqDCoCAvLyBMQ0RDU1QgTWF4IGNvbnRyYXN0IChNaW4gUmVzaXN0YW5jZSk7CiDCoMKgwqAgTENE UkVGID0gMHgwMDsKCiDCoMKgwqAgLy8gTFJMQVAgSGlnaDsgTENESVJJIGVuYWJsZWQ7IExSTEFU IEFsd2F5cyBCIFBvd2VyIG1vZGU7CiDCoMKgwqAgTENEUkwgPSAweEM4OwoKIMKgwqDCoCAvLyBC SUFTIDIuODBWOyBFTjVWIGRpc2FibGVkOyBMUEVOIGRpc2FibGVkOwogwqDCoMKgIExDRFZDT04x ID0gMHgwMDsKCiDCoMKgwqAgLy8gQ1BXRFQgZW5hYmxlZDsgTENEVlNSQyBJbnRlcm5hbCBSZXNp c3RvciBMYWRkZXIgKyBGVlIgZm9yIFZMQ0QzOwogwqDCoMKgIExDRFZDT04yID0gMHgwMzsKCiDC oMKgwqAgLy9TZWdDb20gRGF0YSBSZWdpc3RlcnMKIMKgwqAgwqBMQ0REQVRBMCA9IDB4Q0Y7CiDC oMKgIMKgTENEREFUQTEgPSAweDBGOwogwqDCoCDCoExDRERBVEEyID0gMHg1MDsKIMKgwqAgwqBM Q0REQVRBNiA9IDB4Q0Y7CiDCoMKgIMKgTENEREFUQTcgPSAweDBGOwogwqDCoCDCoExDRERBVEE4 ID0gMHg1MDsKIMKgwqAgwqBMQ0REQVRBMTIgPSAweENGOwogwqDCoCDCoExDRERBVEExMyA9IDB4 MEY7CiDCoMKgIMKgTENEREFUQTE0ID0gMHg1MDsKIMKgwqAgwqBMQ0REQVRBMTggPSAweDAwOwog wqDCoCDCoExDRERBVEExOSA9IDB4MDA7CiDCoMKgIMKgTENEREFUQTIwID0gMHgwMDsKIMKgwqAg wqBMQ0REQVRBMjQgPSAweDAwOwogwqDCoCDCoExDRERBVEEyNSA9IDB4MDA7CiDCoMKgIMKgTENE REFUQTI2ID0gMHgwMDsKIMKgwqAgwqBMQ0REQVRBMzAgPSAweDAwOwogwqDCoCDCoExDRERBVEEz MSA9IDB4MDA7CiDCoMKgIMKgTENEREFUQTMyID0gMHgwMDsKIMKgwqAgwqBMQ0REQVRBMzYgPSAw eDAwOwogwqDCoCDCoExDRERBVEEzNyA9IDB4MDA7CiDCoMKgIMKgTENEREFUQTM4ID0gMHgwMDsK IMKgwqAgwqBMQ0REQVRBNDIgPSAweDAwOwogwqDCoCDCoExDRERBVEE0MyA9IDB4MDA7CiDCoMKg IMKgTENEREFUQTQ0ID0gMHgwMDsKCiDCoMKgIMKgLy9FbmFibGUgdXNlZCBzZWdtZW50cwogwqDC oCDCoExDRFNFMCA9IDB4Q0Y7CiDCoMKgIMKgTENEU0UxID0gMHgwRjsKIMKgwqAgwqBMQ0RTRTIg PSAweDUwOwogwqDCoCDCoExDRFNFMyA9IDB4MDA7CiDCoMKgIMKgTENEU0U0ID0gMHgwMDsKIMKg wqAgwqBMQ0RTRTUgPSAweDAwOwoKIMKgwqDCoCAvLyBDUyBMRklOVE9TQzsgU0xQRU4gZGlzYWJs ZWQ7IFdFUlIgTm8gTENEIFdyaXRlIEVycm9yOyBMTVVYIDEvMyAKQ09NKDI6MCk7IExDREVOIGVu YWJsZWQ7CiDCoMKgwqAgTENEQ09OID0gMHhDMzsKCgoqKioKRm9yIHRoZSBwb3J0czoKKioqCnZv aWQgUElOX01BTkFHRVJfSW5pdGlhbGl6ZSh2b2lkKQp7CiDCoMKgwqAgLyoqCiDCoMKgwqAgTEFU eCByZWdpc3RlcnMKIMKgwqDCoCAqLwogwqDCoMKgIExBVEEgPSAweDAwOwogwqDCoMKgIExBVEIg PSAweDAwOwogwqDCoMKgIExBVEMgPSAweDAwOwoKIMKgwqDCoCAvKioKIMKgwqDCoCBUUklTeCBy ZWdpc3RlcnMKIMKgwqDCoCAqLwogwqDCoMKgIFRSSVNBID0gMHgwMDsKIMKgwqDCoCBUUklTQiA9 IDB4QzA7CiDCoMKgwqAgVFJJU0MgPSAweDg5OwoKIMKgwqDCoCAvKioKIMKgwqDCoCBBTlNFTHgg cmVnaXN0ZXJzCiDCoMKgwqAgKi8KIMKgwqDCoCBBTlNFTEMgPSAweDAwOwogwqDCoMKgIEFOU0VM QiA9IDB4QzA7CiDCoMKgwqAgQU5TRUxBID0gMHgwMDsKCiDCoMKgwqAgLyoqCiDCoMKgwqAgV1BV eCByZWdpc3RlcnMKIMKgwqDCoCAqLwogwqDCoMKgIFdQVUUgPSAweDAwOwogwqDCoMKgIFdQVUIg PSAweDAwOwogwqDCoMKgIFdQVUEgPSAweDAwOwogwqDCoMKgIFdQVUMgPSAweDAwOwoKIMKgwqDC oCAvKioKIMKgwqDCoCBPRHggcmVnaXN0ZXJzCiDCoMKgwqAgKi8KIMKgwqDCoCBPRENPTkEgPSAw eDAwOwogwqDCoMKgIE9EQ09OQiA9IDB4MDA7CiDCoMKgwqAgT0RDT05DID0gMHgwMDsKCiDCoMKg wqAgLyoqCiDCoMKgwqAgU0xSQ09OeCByZWdpc3RlcnMKIMKgwqDCoCAqLwogwqDCoMKgIFNMUkNP TkEgPSAweERGOwogwqDCoMKgIFNMUkNPTkIgPSAweEZGOwogwqDCoMKgIFNMUkNPTkMgPSAweERG OwoKfQoKCioqKgpTeXN0ZW0gSW5pdDogT3NjaWxsYXRvciBhbmQgUE1EcywgYWxzbyBGVlIKCioq Kgp2b2lkIFNZU1RFTV9Jbml0aWFsaXplKHZvaWQpCnsKIMKgwqDCoCBQTURfSW5pdGlhbGl6ZSgp OwogwqDCoMKgIFBJTl9NQU5BR0VSX0luaXRpYWxpemUoKTsKIMKgwqDCoCBPU0NJTExBVE9SX0lu aXRpYWxpemUoKTsKIMKgwqDCoCBGVlJfSW5pdGlhbGl6ZSgpOwogwqDCoMKgIExDRF9Jbml0aWFs aXplKCk7Cn0KCnZvaWQgT1NDSUxMQVRPUl9Jbml0aWFsaXplKHZvaWQpCnsKIMKgwqDCoCAvLyBO T1NDIEhGSU5UT1NDOyBORElWIDE7CiDCoMKgwqAgT1NDQ09OMSA9IDB4NjA7CiDCoMKgwqAgLy8g Q1NXSE9MRCBtYXkgcHJvY2VlZDsgU09TQ1BXUiBMb3cgcG93ZXI7CiDCoMKgwqAgT1NDQ09OMyA9 IDB4MDA7CiDCoMKgwqAgLy8gTUZPRU4gZGlzYWJsZWQ7IExGT0VOIGVuYWJsZWQ7IEFET0VOIGRp c2FibGVkOyBTT1NDRU4gZGlzYWJsZWQ7IApFWFRPRU4gZGlzYWJsZWQ7IEhGT0VOIGVuYWJsZWQ7 CiDCoMKgwqAgT1NDRU4gPSAweDUwOwogwqDCoMKgIC8vIEhGRlJRIDMyX01IejsKIMKgwqDCoCBP U0NGUlEgPSAweDA2OwogwqDCoMKgIC8vIE1GT1Igbm90IHJlYWR5OwogwqDCoMKgIE9TQ1NUQVQg PSAweDAwOwogwqDCoMKgIC8vIFRVTiAwOwogwqDCoMKgIE9TQ1RVTkUgPSAweDAwOwogwqDCoMKg IC8vIEFDVFVEIGVuYWJsZWQ7IEFDVEVOIGRpc2FibGVkOwogwqDCoMKgIEFDVENPTiA9IDB4MDA7 Cn0KCnZvaWQgUE1EX0luaXRpYWxpemUodm9pZCkKewogwqDCoMKgIC8vIFNZU0NNRCBTWVNDTEsg ZW5hYmxlZDsgQUNUTUQgQUNUIGRpc2FibGVkOyBGVlJNRCBGVlIgZW5hYmxlZDsgCklPQ01EIElP QyBlbmFibGVkOyBOVk1NRCBOVk0gZW5hYmxlZDsKIMKgwqDCoCBQTUQwID0gMHgyMDsKIMKgwqDC oCAvLyBUTVIwTUQgVE1SMCBlbmFibGVkOyBUTVIxTUQgVE1SMSBlbmFibGVkOyBUTVI0TUQgVE1S NCBlbmFibGVkOyAKVE1SMk1EIFRNUjIgZW5hYmxlZDsKIMKgwqDCoCBQTUQxID0gMHgwMDsKIMKg wqDCoCAvLyBaQ0RNRCBaQ0QgZGlzYWJsZWQ7IERBQ01EIERBQyBkaXNhYmxlZDsgQ01QMU1EIENN UDEgZGlzYWJsZWQ7IApBRENNRCBBREMgZGlzYWJsZWQ7IENNUDJNRCBDTVAyIGRpc2FibGVkOyBS VENDTUQgUlRDQyBkaXNhYmxlZDsKIMKgwqDCoCBQTUQyID0gMHhFNzsKIMKgwqDCoCAvLyBDQ1Ay TUQgQ0NQMiBlbmFibGVkOyBDQ1AxTUQgQ0NQMSBlbmFibGVkOyBDQ1A0TUQgUFdNNCBlbmFibGVk OyAKQ0NQM01EIFBXTTMgZW5hYmxlZDsKIMKgwqDCoCBQTUQzID0gMHgwMDsKIMKgwqDCoCAvLyBD V0cxTUQgQ1dHMSBlbmFibGVkOyBVQVJUMk1EIEVVU0FSVDIgZGlzYWJsZWQ7IE1TU1AxTUQgTVNT UDEgCmVuYWJsZWQ7IFVBUlQxTUQgRVVTQVJUIGRpc2FibGVkOwogwqDCoMKgIFBNRDQgPSAweEMw OwogwqDCoMKgIC8vIENMQzNNRCBDTEMzIGVuYWJsZWQ7IENMQzRNRCBDTEM0IGVuYWJsZWQ7IFNN VDFNRCBTTVQxIGVuYWJsZWQ7IApMQ0RNRCBMQ0QgZW5hYmxlZDsgQ0xDMU1EIENMQzEgZW5hYmxl ZDsgQ0xDMk1EIENMQzIgZW5hYmxlZDsKIMKgwqDCoCBQTUQ1ID0gMHgwMDsKfQp2b2lkIEZWUl9J bml0aWFsaXplKHZvaWQpCnsKIMKgwqDCoCAvLyBDREFGVlIgb2ZmOyBGVlJFTiBlbmFibGVkOyBU U1JORyBMb19yYW5nZTsgQURGVlIgb2ZmOyBUU0VOIApkaXNhYmxlZDsKIMKgwqDCoCBGVlJDT04g PSAweDgwOwp9CgoKKioqCmZpbmFsbHksIEkgdHVybiBvbiB0aGUgbW9kdWxlOgp2b2lkIExDRF9F bmFibGUgKHZvaWQpCnsKIMKgwqDCoCBMQ0RDT05iaXRzLkxDREVOID0gMTsKfQoKCldoYXQgYW0g SSBtaXNzaW5nPwpUaGFua3MsCk1hcmsKCi0tIApodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hy ZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdlIHlvdXIgbWVt YmVyc2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5m by9waWNsaXN0Cg== .