ZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZWwxX3B1YmxpY19hcGkuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZWwxX3B1YmxpY19hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTY0NGI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDFfcHVibGljX2FwaS5oCkBAIC0wLDAgKzEsMTE0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZWwxX3B1YmxpY19hcGkuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwOCAyMyAyMDE2IGFsaS5zdQorICogW01PTFkwMDE5NTIxNl0gW1VNT0xZQV1bRUwxXSBtb3ZlIGVmdXNlIGZ1bmN0aW9uIHRvIEVMMQorICogKFVNT0xZQSkgZWZ1c2UgZml4LgorICoKKyAqIDA5IDAxIDIwMTQgYy1oLmh1YW5nCisgKiBbTU9MWTAwMDc3NjgzXSBbTmV3IGZlYXR1cmVdIEltcHJvdmVkIGZhc3QgcGh5IHRyYWNraW5nCisgKiBhdWRpbyBpbmZvcm0gZWwxIHZvbHRlIG9uL29mZi4KKyAqCisgKiAxMCAwMSAyMDEzIHBvcGNhZmEuc2hpaAorICogW01PTFkwMDAzOTUxNF0gW01UNjI5MF1bQ2FwdHVyZSBDYXJkXSByZWxhdGVkIGNvZGUgY2hlY2sgaW4gT0EKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiAgX0VMMV9QVUJMSUNfQVBJX0gKKyNkZWZpbmUgIF9FTDFfUFVCTElDX0FQSV9ICisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorCisjaWYgMCAvLyA2MjkzOiBtb3ZlIGVmdXNlIGZ1bmN0aW9uIHRvIGx0ZV9lZnVzZS5oCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisvKiB1bmRlciBjb25zdHJ1Y3Rpb24gISovCisjZW5kaWYKKworI2lmZGVmIF9fTVRLX1RBUkdFVF9fCisvKiBTdGFydCBjYXB0dXJlICovCitJTkxJTkUgdm9pZCBfZWwxX3N0YXJ0X2NhcHR1cmUodm9pZCk7CisKKy8qIFN0b3AgY2FwdHVyZSAqLworSU5MSU5FIHZvaWQgX2VsMV9zdG9wX2NhcHR1cmUodm9pZCk7CisjZW5kaWYgLypfX01US19UQVJHRVRfXyovCisKKy8qKgorICpAYnJpZWYgZWwxX3Boc192b2x0ZV9vbgorICpGb3IgTDEgQXVkaW8gdG8gaW5mb3JtIEVMMSBpZiBWT0xURSBpcyBvbgorICoKKyAqLwordm9pZCBlbDFfcGhzX3ZvbHRlX29uKGthbF9ib29sIHZvbHRlX29uKTsKKworI2VuZGlmICAgLyogX0VMMV9QVUJMSUNfQVBJX0ggKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDJfYXBpLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VsMl9hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjUzZDJhCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDJfYXBpLmgKQEAgLTAsMCArMSwyNTggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVsMl9hcGkuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgcHJvdG90eXBlcyBvZiBFTDIgZXhwb3J0IGZ1bmN0aW9uCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA3IDA5IDIwMTkgcGV0ZXIuY2hpYW5nCisgKiBbTU9MWTAwMzk2ODY5XSBbTU9ESVMgSFcgQ29wcm9dIFdvcmsgb24gbWFraW5nIE1vZGlzIHRvIHJ1biB3aXRoIEVTTCBIVyBtb2RlbHMgYW5kIFVwbGFuZSB3aXRoIEVTTAorICogQ2hlY2staW4gZm9yIE1BU0UKKyAqCisgKiAwNyAwOCAyMDE5IHlrLmxpdQorICogW01PTFkwMDQxOTc1M10gY2hlY2sgaW4gZm9yIDk3IE1BU0UKKyAqIAkKKyAqIAlDaGVjayBpbiBmb3IgTUFTRQorICoKKyAqIDAxIDExIDIwMTggamlhLXNoaS5saW4KKyAqIFtNT0xZMDAzMDE0NTFdIFtTTU8gcmVsZWFzZV1bOTMvOTVdRUwxIHJlbGF0aXZlIGludGVyZmFjZQorICogZW1hYy9lbDEgaW50ZXJmYWNlIHJlLWFyY2gKKyAqCisgKiAwOCAwMyAyMDE3IHdlbi1qaXVubi5saXUKKyAqIFtNT0xZMDAyNjg1NTFdIFRhc2sgYmF0Y2ggc2NoZWR1bGluZyBmb3IgTFRFIExvdyBwb3dlcgorICogW0VMMl0gVGFzayBSZXNjaGVkdWxpbmcgZm9yIExvdyBQb3dlciBQb2xsaW5nIFRpY2sgQ2hhbmdlCisgKgorICogMDggMDMgMjAxNyB3ZW4taml1bm4ubGl1CisgKiBbTU9MWTAwMjY4NTUxXSBUYXNrIGJhdGNoIHNjaGVkdWxpbmcgZm9yIExURSBMb3cgcG93ZXIKKyAqIFtFTDJdIFRhc2sgUmVzY2hlZHVsaW5nIGZvciBMb3cgUG93ZXIgUG9sbGluZyBUaWNrIENoYW5nZQorICoKKyAqIDA0IDA3IDIwMTcgc3RldmUua2FvCisgKiBbTU9MWTAwMjMwMDYyXSBbVU1PTFlBXSBNLVBTIHJlbGF0ZWQgaW50ZXJmYWNlIGNoYW5nZXMgZm9yIFVQQ00sIFJBVERNLCBhbmQgRVBEQ1AKKyAqIAkKKyAqIAlbVU1PTFlBXVtUUlVOS10KKyAqIAkKKyAqIAlbVVBDTV1bTS1QU10gQ29kZSBjaGFuZ2VzCisgKiAJMS4gRHVwbGljYXRpbmcgVVBDTSBjb250ZXh0cywKKyAqIAkyLiBVc2UgcHJvdG9jb2xfaWR4IGluIFVML0RMIGNhbGxiYWNrL0lMTSBpbnRlcmZhY2VzLAorICogCTMuIENoZWNrIHByb3RvY29sX2lkeCBpbiBMSElGIFBJVCBlbnRyaWVzLAorICogCTQuIEZpeCB0ZXN0IG1vZGUgVUwgZGF0YSBwcm9jZXNzaW5nIGZsb3csCisgKiAJNS4gQWxsb3dpbmcgdGVzdCBtb2RlIG9uIHByb3RvY29sIDIvMy80LAorICogCTYuIFdyYXAgaW50ZXJmYWNlcyB3aXRoIFJBVERNIHdpdGggX19NVUxUSVBMRV9QU19fLAorICogCQorICogCVtFUERDUF1bTCtMXSBDb2RlIGNoYW5nZXMKKyAqIAkKKyAqIAlbUkFURE1dW0wrTF0gQ29kZSBjaGFuZ2VzCisgKgorICogMDkgMjYgMjAxNiBzbGlmZXIuaHN1ZWgKKyAqIFtNT0xZMDAyMDUwODVdIFtNVDYyOTNdW0VMMl0gRVJMQyBzb3VyY2UgY29kZXMgaW50ZWdyYXRpb24gZnJvbSBERVYgdG8gVFJVTksKKyAqIEVSTEMgc291cmNlIGNvZGVzIGludGVncmF0aW9uIGZyb20gREVWIHRvIFRSVU5LCisgKgorICogMDEgMTIgMjAxNiBrYXRoaWUuaG8KKyAqIFtNT0xZMDAxNTYyMjldIFtNVDYyOTJdIENvZGUgc3luYyBmcm9tIE1UNjI5MTogQXVEUlgKKyAqIENvZGVTeW5jIGZyb20gTFIxMSAoZnJvbSAyMDE1LzA5LzIxfjExLzE1LCBleGNsdWRlIFRTVE0sIE1CTVMpUEFSVDQKKyAqICAgQ0wgMTgwMDY0NFtNVDYyOTFdQXV0b25vbW91cyBEUlgKKyAqCisgKiAwOSAwNyAyMDE1IG5pZW50ZWguaHN1CisgKiBbTU9MWTAwMTQwNjcxXSBbNjI5Ml0gRVJMQyBjb2RlIHN5bmMgZnJvbSBMUjExIHRvIFVNT0xZIChBdWd1c3QpCisgKiAJLgorICoKKyAqIDA5IDA0IDIwMTUgbmllbnRlaC5oc3UKKyAqIC4KKyAqCisgKiAwOSAwNCAyMDE1IG5pZW50ZWguaHN1CisgKiBDb2RlIHN5bmMgZnJvbSBMUjExIHRvIFVNT0xZLgorICogCUNMMTU0Mjc3MDogREwgJiBVTCBwcmludCBTRFUgcmF3IGRhdGEuCisgKiAJQ0wxNTgyNjI2OiBGaXggb2YgREwgcHJpbnQgU0RVIHJhdyBkYXRhLgorICogCUNMMTU5MDU5NTogRVJMQyBidWlsZCB3YXJuaW5nIGZpeC4KKyAqIAlDTDE1MjUxNjk6IEVNIEhPIGR1cmF0aW9uIHJlcG9ydGluZy4gRVJMQy1VTCBwYXJ0IGlzIG1lcmdlZC4KKyAqIAlDTDE1NDY1Mzk6IEJhY2t1cCBTSVQgaGVhZCBhbmQgdGFpbCBpbmRleCB3aGVuIGNvcHJvIHBvd2VyIG9mZi4KKyAqIAlDTDE1NjQzOTQ6IEF2b2lkIGVhcmx5IHJldHVybiBpbiBzY2hlZF9ncmFudF9tYWluIGZ1bmN0aW9uIGFuZCBub3QgdHJpZ2dlciBwb2xsIHJlLVRYLgorICogCUNMMTU4Njg5MzogRml4IG9mIEVNIEhPIGR1cmF0aW9uIHJlcG9ydGluZy4KKyAqCisgKiAxMiAwNCAyMDE0IHNoZW5neWkuaG8KKyAqIFtNT0xZMDAwODM4NTRdIFtUSzYyOTFdIGVMMiBkZXZlbG9wbWVudCBjaGVja2luIENSCisgKiAxKSBmaXggZXJsYyBndGVzdCB1dCBjYXNlIEhXQiBsZWFrYWdlCisgKiAyKSByZW5hbWUgYW0vdW0gdmFyIHJlc2V0IG1hY3JvIHdpdGggRVJMQ1VML0VSTENETCBwcmVmaXgKKyAqIDMpIGZpeCBIV0IgQy1tb2RlbCBmdW5jdGlvbiBvZiBnZXQgVUwvREwgYWxsb2MgaHdiIG51bQorICoKKyAqIDExIDExIDIwMTQgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMDg0MDQyXSBbVU1PTFldIG1lcmdlIFVNT0xZX0RFViB0byBVTU9MWSB0cnVuaworICogLgorICoKKyAqIDEwIDI3IDIwMTQgc2gueWFuZworICogW01PTFkwMDA4MjIxMV0gW01UNjI5MV9ERVZdIEVNQk1TIGNoZWNrLWluCisgKiBlbWJtcyBjaGVjay1pbgorICoKKyAqIDEwIDA4IDIwMTQgc2hlbmd5aS5obworICogW01PTFkwMDA3NzU5Ml0gW1RLNjI5MV0gZW1hYy9lcmxjIGRldmVsb3BtZW50IGNoZWNrLWluIC0gMSkgdHRpIGJ1bmRsZS9tc2czIGNvbGxpZGUgcnYgc2V0dGluZy4gMikgc3IgcHJvaGliaXQgY2hlY2suIDMpIGFkZCBlbWFjIHV0IGZyYW1ld29yayBmb3IgdHggcmVxLiA0KSByZW1vdmUgdW51c2VkIGZ1bmN0aW9uIGluIE1UNjI5MQorICogLgorICoKKyAqIDA3IDMxIDIwMTQgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMDczODMwXSBbTVQ2MjkxX0RFVl0gY2hlY2staW4gTVQ2MjkxIG1vZGlmaWNhdGlvbgorICogZm9yIGZpeCBwb3RlbnRpYWwgdGFyZ2V0IGJ1aWxkIGVycm9yCisgKgorICogMDcgMzAgMjAxNCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAwNzM4MzBdIFtNVDYyOTFfREVWXSBjaGVjay1pbiBNVDYyOTEgbW9kaWZpY2F0aW9uCisgKiBNVDYyOTEgbW9kaWZpY2F0aW9uLCB1c2luZyB0ZW1wIGludGVyZmFjZSB3aXRoIEVMMQorICoKKyAqIDAxIDE1IDIwMTQgc2xpZmVyLmhzdWVoCisgKiBbTU9MWTAwMDUzMTA0XSBbTVQ2MjkwRTJdW05BUyBSVERdW01NXVtGRERdIEFzc2VydCBmYWlsOiBkcml2ZXIvbDJjb3Byby9jaXBoZXIvc3JjL2NpcGhlcl9jb21tb24uYyAxOTYgLSBMMkNPUFJPCisgKiBNZXJnZSBjb2RlcyByZWxhdGVkIHRvIEwyIGNvcHJvIGRlbGF5IHBvd2VyIG9mZiBiYWNrIHRvIE1PTFkgVFJVTksgaW4gTFRFIGRvbWFpbgorICoKKyAqIDAxIDA5IDIwMTQgbW9qYS5oc3UKKyAqIFtNT0xZMDAwNTI5NzVdIEZpbmUgdHVuZSBSQVIvRUFSIDFtcyBwcm90ZWN0aW9uIHRvIHByZXZlbnQgZmFsc2UgYWxhcm0uCisgKiAuCisgKgorICogMTIgMDMgMjAxMyB0aW1vdGh5LnlhbworICogW01PTFkwMDA0ODgzMl0gcG93ZXIgZG93bi9vbiBpbiBFTDIgdGFzayBjb250ZXh0IGFuZCByZWZpbmUgdGhlIGZsb3cKKyAqIDEuIHBvd2VyLW9mZi9vbiBMMiBjb3BybyBpbiBFTDIgdGFzayBjb250ZXh0LgorICogMi4gcmVmaW5lIHRoZSBmbG93IGJldHd3ZW4gRUwxICYgRUwyLgorICoKKyAqIDA5IDI3IDIwMTMgc3RldmUua2FvCisgKiBbTU9MWTAwMDM5MTk1XSBbTVQ2MjkwXSBbTG93IFBvd2VyXSBMVEUgTDIgY29wcm8gcG93ZXIgZG93biBpbiBMVEUgZmxpZ2h0IG1vZGUKKyAqIFVuc2hlbHZlZCBmcm9tIHBlbmRpbmcgY2hhbmdlbGlzdCAnMjcyMTk5JzoKKyAqICAJCisgKiAJRml4IGxpbmsgZXJyb3IKKyAqCisgKiAwOCAyMCAyMDEzIG1mLmpoYW5nCisgKiBbTU9MWTAwMDM0MjkyXSBbTVQ2MjkwRTFdIE1vdmUgUEhSIHRvIFNXCisgKiBNb3ZlIFBIUiByZXBvcnQgdG8gU1cKKyAqCisgKiAwNyAyMyAyMDEzIG1mLmpoYW5nCisgKiBbTU9MWTAwMDMwOTExXSBbTVQ2MjkwRTFdW0VNQUNdIEVNQUMgY29kZSBlbmhhbmNlbWVudAorICogUmVnaXN0ZXIgVUwgTE1BQyBlcnJvciBpbnRlcnJ1cHQgaGFuZGxlcgorICogVXBkYXRlIHNvbWUgdHJhY2UKKyAqCisgKiAwNiAxMCAyMDEzIG1mLmpoYW5nCisgKiBbTU9MWTAwMDI1MzQ5XSBbTVQ2MjkwRTFdW0dDRl1bTUQ4NDMwXVtMVEVdW1RDIDcuMS41LjRdIEFzc2VydCBmYWlsIGRyaXZlcmwyY29wcm9sbWFjc3JjbDJsbWFjX2Rydi5jIDI2OCAtIEwyQ09QUk8KKyAqIEFkZCBFTDIgQVBJIGZvciBETCBMTUFDIGhhbmRsZXIKKyAqCisgKiAwNSAxNiAyMDEzIG1vamEuaHN1CisgKiBbTU9MWTAwMDA3NjI1XSBNYWludGFpbiBjb2RlCisgKiBmaXggZWR5biBjb21waWxlIHdhcm5pbmcuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqCisgKiBAZGF0ZSAgMjAxMi8xLzEwIAorICovCisKKyNpZm5kZWYgRUwyX0VYUE9SVF9BUEkKKyNkZWZpbmUgRUwyX0VYUE9SVF9BUEkKKworLy8jaW5jbHVkZSAiZHJ2L2Rydl9sbWFjLmgiCisvLyNpbmNsdWRlICJlbDFfZW51bS5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisvLyNpbmNsdWRlICJlbDJfZGVmLmgiCisjaW5jbHVkZSAibHRlX3RpbWVfY29tbW9uLmgiCisKKy8qIEVMMiBjb25zdHJ1Y3RvciAqLwordm9pZCBlbDJfaW5pdCgpOworCisvLyBFTDIgVGljayBTb3VyY2UgSGFuZGxlcgordm9pZCBlbDJfdGlja19zb3VyY2VfZGlzcGF0Y2hfdGljaygpOworCisvKiBFTUFDIGV4cG9ydCBBUEkgKi8KK2thbF9ib29sIGVtYWNfZHJ4X2lzX2RyeF9zbGVlcCgpOyAgLy8gcXVlcnkgd2hldGhlciBFTUFDIERSWCBzbGVlcCBvciBub3QKK3ZvaWQgZW1hY19yY3ZfaWxtKGlsbV9zdHJ1Y3QgKnBJbG0pOwkvLy88IEVNQUMgbWVzc2FnZSBoYW5kbGVyCit2b2lkIGVtYWNfZWwydGFza19yY3ZfaWxtKGlsbV9zdHJ1Y3QgKnBfaWxtKTsgLy8vPCBFTUFDIG1lc3NhZ2UgaGFuZGxlciBvbiBFTDIgdGFzawordm9pZCBlbWFjX2N0cmxfZGF0YV9yY3YoKTsgICAgICAgIC8vLzwgY29udHJvbCBkYXRhIHJlY2VpdmluZyBoYW5kbGVyIFRPX0JFX1JFTU9WRTogcGxlYXNlIHVzZSBlbWFjX2N0cmxfZGF0YV9jaGVjaygpLgordm9pZCBlbWFjX2N0cmxfZGF0YV9jaGVjaygpOwkJCS8vLzwgY2hlY2sgREwgY29udHJvbCBzd28gYml0cwordm9pZCBlbWFjX2Vhcmx5X3Byb3RlY3RfY2FuY2VsX3JlZyh2b2lkKCpmdW5jKSh2b2lkKSk7CS8vUmVnaXN0ZXIgZWFybHkgcHJvdGVjdCBjYW5jZWwgY2FsbGJhY2sKK3ZvaWQgZW1hY19yYXJfcHJvdGVjdF9jYW5jZWxfcmVnKHZvaWQoKmZ1bmMpKHZvaWQpKTsJICAvL1JlZ2lzdGVyIHJhciBwcm90ZWN0IGNhbmNlbCBjYWxsYmFjaworI2lmIE1CTVNfU1VQUE9SVAordm9pZCBlbWFjX21jaF9kYXRhX2NoZWNrKCk7IC8vLzwgY2hlY2sgTUNIIHN3byBiaXRzCisjZW5kaWYKKworI2lmIEVMMl9TQlBfT05fQVVEUlgKK3ZvaWQgZW1hY19hdWRyeF9ycmNfY21kKGthbF91aW50MzIgdGltZSk7Cit2b2lkIGVtYWNfYXVkcnhfbmFzX2NtZChrYWxfdWludDMyIHRpbWUpOwordm9pZCBlbWFjX2VwZGNwX2F1ZHJ4X3RpbWVyX3RpbWVvdXQodm9pZCk7Cit2b2lkIGVtYWNfZXBkY3BfYXVkcnhfdGltZXJfcmVzdGFydCh2b2lkKTsKK2thbF91aW50MzIgZW1hY19hdWRyeF9ycmNfc2xlZXBfcmVwb3J0KHZvaWQpOworI2VuZGlmCisKKy8qKgorICogQGJyaWVmIGVtYWNfY2hlY2tfcmFyX3Byb3RlY3QgCisgKiBDaGVjayBpZiB3ZSBuZWVkIHRvIFJBUiAxbXMgcHJvdGVjdGlvbi4KKyAqIFByZXZlbnQgRmFsc2UgYWxhcm0gb2YgZnJhbWUgYm91bmRhcnkKKyAqCisgKiBAcmV0dXJuIEtBTF9UUlVFOiBOZWVkIHRvIHByb3RlY3Rpb24uCisgKiAgICAgICAgIEtBTF9GQUxTRTogTm8gbmVlZCB0byBkbyBwcm90ZWN0aW9uLgorICovCisvL2thbF9ib29sIGVtYWNfY2hlY2tfcmFyX3Byb3RlY3Qodm9pZCk7CisKKy8qKgorICogQGJyaWVmIGVtYWNfY2hlY2tfZWFyX3Byb3RlY3QgCisgKiBDaGVjayBpZiB3ZSBuZWVkIHRvIFJBUiAxbXMgcHJvdGVjdGlvbi4KKyAqIFByZXZlbnQgRmFsc2UgYWxhcm0gb2YgZnJhbWUgYm91bmRhcnkKKyAqCisgKiBAcGFyYW0gdmVjdCBTV08gYml0IHRvIGluZGljYXRlIHdoaWNoIEhUIGNvbnRhaW4gRUFSIExDSUQKKyAqCisgKiBAcmV0dXJuIEtBTF9UUlVFOiBOZWVkIHRvIHByb3RlY3Rpb24uCisgKiAgICAgICAgIEtBTF9GQUxTRTogTm8gbmVlZCB0byBkbyBwcm90ZWN0aW9uLgorICovCisvL2thbF9ib29sIGVtYWNfY2hlY2tfZWFyX3Byb3RlY3QoaHRfZWFyX3ZlY3QgKnZlY3QpOwora2FsX2ludDMyIF9sdGVfZGxfbG1hY19lcnJfaG5kbHIoa2FsX3VpbnQzMiB2ZWN0LCB2b2lkICpwdHIpOyAvL0RMIExNQUMgZXJyb3IgaW50ZXJydXB0IGNhbGxiYWNrCitrYWxfaW50MzIgX2x0ZV91bF9sbWFjX2Vycl9obmRscihrYWxfdWludDMyIHZlY3QsIHZvaWQgKnB0cik7IC8vVUwgTE1BQyBlcnJvciBpbnRlcnJ1cHQgY2FsbGJhY2sKKworLyogRVJMQyBleHBvcnQgQVBJICovCit2b2lkIGVybGN1bF9yY3ZfaWxtKGlsbV9zdHJ1Y3QgKnBJbG0pOwkvLy88IEVSTEMtVUwgbWVzc2FnZSBoYW5kbGVyCit2b2lkIGVybGNkbF9yY3ZfaWxtKGlsbV9zdHJ1Y3QgKnBJbG0pOwkvLy88IEVSTEMtREwgbWVzc2FnZSBoYW5kbGVyCit2b2lkIGVybGN1bF9wb2xsKGthbF91aW50MzIgcHJvdG9jb2xfaWR4KTsgLy8vPCBFUkxDLVVMIHBvbGxpbmcKK3ZvaWQgZXJsY2RsX3BvbGwoKTsJCQkJCQkvLy88IEVSTEMtREwgcG9sbGluZwordm9pZCBlcmxjdWxfcmVzZXQoKTsgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgRVJMQy1VTCByZXNldAordm9pZCBlcmxjZGxfcmVzZXQoKTsJCQkJCQkvLy88IEVSTEMtREwgcmVzZXQKKwora2FsX3VpbnQzMiBlcmxjdWxfcXVlcnlfc2xlZXBfYWxsb3coKTsgIC8vLzwgRVJMQy1VTCBzZWVzIGlmIHdlIGNhbiBzbGVlcCBjb3Bybwordm9pZCBlcmxjdWxfY29wcm9fcG93ZXJfZG93bl9iYWNrdXAoKTsgIC8vL2JhY2sgdXAgaW5mbyB1c2VkIHdoZW4gY29wcm8gcG93ZXIgb2ZmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDJfZXNsX3R4bGlzci5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDJfZXNsX3R4bGlzci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNDVmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VsMl9lc2xfdHhsaXNyLmgKQEAgLTAsMCArMSw3NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZWwyX2VzbF90eGxpc3IuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWUEKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICAKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDAyIDE3IDIwMTcgamlhLXNoaS5saW4KKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIGVzbCBzZXR0aW5nIHJlZmluZW1lbnQ6IHN1cHBvcnQgbXVsdGlwbGUgY2FzZSBydW5uaW5nCisgKgorICogMDEgMDYgMjAxNyBqaWEtc2hpLmxpbgorICogW01PTFkwMDE5NDk4N10gW01UNjI5M11bVU1PTFlBL1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogRVNMOiBnZXQgZXNsIHNjZW5hcmlvIGlkIGZvciBzcnMgdHgKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImVsMWNkX2NvbW1vbl9lc2wuaCIKKwordm9pZCBlbDJfZXNsX3R4bGlzcl9pbml0KGthbF91aW50MzIgZGxfY2NfbnVtLCBrYWxfdWludDMyIHVsX2NjX251bSwga2FsX3VpbnQzMiBzY2VuYXJpb19pZCk7Cit2b2lkIGVsMl9lc2xfdHhsaXNyXzFzdF9zdWJmcmFtZV9wcmVwYXJlKHZvaWQpOwordm9pZCBlbDJfZXNsX3R4bGlzcl8ybmRfc3ViZnJhbWVfcHJlcGFyZSh2b2lkKTsKKwordm9pZCBlbDJfZXNsX3R4bGlzcl9zdWJmcmFtZV9wb3N0X2NoZWNrKHZvaWQpOworCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZWwyX3B1YmxpY19hcGkuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZWwyX3B1YmxpY19hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWE3OWRiCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDJfcHVibGljX2FwaS5oCkBAIC0wLDAgKzEsMTk4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZWwyX3B1bGJpY19hcGkuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWUEKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICAgRUwyIEFQSSBmb3Igb3RoZXIgbW9kdWxlcworICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfRUwyX1BVQkxJQ19BUElfSF8KKyNkZWZpbmUgX0VMMl9QVUJMSUNfQVBJX0hfCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgIFZSQiByZWxlYXNlIEFQSSBmb3Igb3RoZXIgbGF5ZXI6IEVSUkMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit2b2lkIGVwZGNwX2VycmNfbWNjaF9kYXRhX2J1ZmZlcl9mcmVlKHZvaWQgKnBfZGF0YSwga2FsX3VpbnQzMiBkYXRhX2xlbik7Cit2b2lkIGVucGRjcF9ycmNfZGNjaF9kYXRhX2J1ZmZlcl9mcmVlKHZvaWQgKnBfZGF0YSwga2FsX3VpbnQzMiBkYXRhX2xlbik7Cit2b2lkIGVtYWNfZXJyY19jY2NoX2RhdGFfYnVmZmVyX2ZyZWUodm9pZCAqcF9kYXRhLCBrYWxfdWludDMyIGRhdGFfbGVuKTsKK3ZvaWQgZXBkY3BfZXJyY19kY2NoX2RhdGFfYnVmZmVyX2ZyZWUodm9pZCAqcF9kYXRhLCBrYWxfdWludDMyIGRhdGFfbGVuKTsKKworCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgIEVMMiBBUEkgZm9yIG90aGVyIGxheWVyOiBFUlJDCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyogIAorICogIEBicmllZiB1c2luZyBkZXRlY3Rpb24gdGltZXIgMyB0byBjaGVjayBFTlBEQ1AgaXMgaW4gZGF0YSBhY3Rpdml0eSBvciBub3QKKyAqICAgICAgICAgRU5QRENQIHdvdWxkIHVzZSBUX3ggKD0gVDMgKyBUX3JhbmQpIHRvIGNoZWNrLCB3aGljaCBpcyB1c2VkIGZvciBSUkMgdGltZW91dAorICoKKyAqICBAcGFyYW0gcHJvdG9jb2xfaWR4IChjYW4gYmUgMCBvciAxKQorICoKKyAqICBAcmV0dXJuIGthbF9ib29sCisgKiAgICAgICBLQUxfVFJVRToKKyAqICAgICAgICAgICBUaGVyZSBpcyBkYXRhIGFjdGl2aXR5IGFjY29yZGluZyB0byBkZXRlY3Rpb24gdGltZXIgMyAoVF94KQorICogICAgICAgS0FMX0ZBTFNFOgorICogICAgICAgICAgIENhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICogICAgICAgICAgIDEuIFRoZXJlIGlzIG5vIGRhdGEgYWN0aXZpdHkgYWNjb3JkaW5nIHRvIGRldGVjdGlvbiB0aW1lciAzIChUX3gpCisgKiAgICAgICAgICAgMi4gUlJDIGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QKKyAqICAgICAgICAgICAzLiBEZXRlY3Rpb24gdGltZXIgMyBpcyBub3QgY29uZmlndXJlZAorICovCitrYWxfYm9vbCBlbnBkY3BfZXJyY19jaGVja19kYXRhX2FjdGl2aXR5X2J5X2RldGVjdGlvbl90aW1lcjMoa2FsX3VpbnQzMiBwcm90b2NvbF9pZHgpOworCisvKiAgCisgKiAgQGJyaWVmIEZvciBFUlJDIHRvIHF1ZXJ5IGlmIENEUlggaXMgY29uZmlndXJlZCBvciBub3QgKEZvciBkZXRlY3Rpb24gdGltZXIzKQorICoKKyAqICBAcGFyYW0gdm9pZAorICoKKyAqICBAcmV0dXJuIGthbF9ib29sCisgKiAJICBLQUxfVFJVRToKKyAqIAkJCSBFTUFDIGlzIGNvbmZpZ3VyZWQgd2l0aCBEUlggYnkgTlcKKyAqIAkgIEtBTF9GQUxTRToKKyAqIAkJCSBFTUFDIGlzIE5PVCBjb25maWd1cmVkIHdpdGggRFJYIGJ5IE5XCisqLwora2FsX2Jvb2wgZW1hY19lcnJjX2lzX2RyeF9jb25maWcoKTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgIEVMMlBPVyBBUEkgZm9yIG90aGVyIGxheWVyOiBFUlJDL0wxUworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3ZvaWQgZWwycG93X2VycmNfY29uZmlnX2NvcHJvX3Bvd2VyX29uX3JlcShrYWxfdWludDggcHJvdG9jb2xfaWR4KTsKK3ZvaWQgZWwycG93X2VycmNfY29uZmlnX2NvcHJvX3Bvd2VyX29mZl9yZXEoa2FsX3VpbnQ4IHByb3RvY29sX2lkeCk7CisKK3ZvaWQgZWwycG93X2wxc19wb3dlcl9vbigpOworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgRUwyIEFQSSBmb3Igb3RoZXIgbGF5ZXI6IFJTVkFTCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEBicmllZiBUZWxsIFJTVkFTIHRoZSBzZXF1ZW5jZSB0byBzZW5kIFNVU1BFTkRfU0VSVklDRV9SRVEgZm9yIGVhY2ggbW9kdWxlcworCisvLyBFTUFDRExQT1JUQUwgSUQ6IGInMDEKKy8vIEVMMkhQT1JUQUwgSUQ6ICAgYicxMAorLy8gRUwyUE9SVEFMIElEOiAgICBiJzExCisKKy8vIERlZmF1bHQgc2VxdWVuY2U6IEVMMkhQT1JUQUwgLT4gRU1BQ0RMUE9SVEFMIC0+IEVMMlBPUlRBTAorLy8gRGVmYXVsdCByZXR1cm4gdmFsdWU6IGInMDAgMTEgMDEgMTAgKDB4MzYpCisKKy8vIHJldHVybiAgICAgQjdCNiAgICBCNUI0ICAgICAgICBCM0IyICAgICAgICAgIEIxQjAKKy8vIG1lYW5pbmcgICAgTi9BICAgICAzcmQgICAgICAgICAybmQgICAgICAgICAgIDFzdAorLy8gbW9kdWxlICAgICBOL0EgICAgIEVMMlBPUlRBTCAgIEVNQUNETFBPUlRBTCAgRUwySFBPUlRBTAorLy8gbW9kdWxlIGlkICAwMCAgICAgIDExICAgICAgICAgIDAxICAgICAgICAgICAgMTAKKwora2FsX3VpbnQzMiBlbDJfcnN2YXNfZm9yd2FyZF9zZXF1ZW5jZV9mb3Jfc3VzcGVuZF9zZXJ2aWNlX3JlcSgpOworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgRUwyIEFQSSBmb3Igb3RoZXIgbGF5ZXI6IFVQQ00KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvKiAgCisgKiAgQGJyaWVmIGVwZGNwX2lzX25vbl9pbXNfdWxfcHNuX3ByaW50X2J5X2VwZGNwCisgKiAgUXVlcnkgaWYgRVBEQ1AgaXMgcHJpbnRpbmcgUFNOIGZvciB1cGxpbmsgcGFja2V0cyBvZiBub24tSU1TIERSQnMgZm9yIHRoZSAKKyAqICBwcm90b2NvbF9pZHggc3BlY2lmaWVkLgorICoKKyAqICBAcGFyYW0gcHJvdG9jb2xfaWR4CisgKgorICogIEByZXR1cm4ga2FsX2Jvb2wKKyAqICAgICAgIEtBTF9UUlVFOgorICogICAgICAgICAgIEVQRENQIHByaW50cyBQU04gZm9yIHVwbGluayBwYWNrZXRzIG9mIG5vbi1JTVMgRFJCcyBwZXJpb2RpY2FsbHkKKyAqICAgICAgICAgICBmb3IgdGhlIHByb3RvY29sX2lkeCBzcGVjaWZpZWQuCisgKiAgICAgICBLQUxfRkFMU0U6CisgKiAgICAgICAgICAgRVBEQ1AgZG93cyBub3QgcHJpbnQgUFNOIGZvciB1cGxpbmsgcGFja2V0cyBhdCBhbGwgZm9yIHRoZSAKKyAqICAgICAgICAgICBwcm90b2NvbF9pZHggc3BlY2lmaWVkLgorICovCitrYWxfYm9vbCBlcGRjcF9pc19ub25faW1zX3VsX3Bzbl9wcmludF9ieV9lcGRjcChrYWxfdWludDMyIHByb3RvY29sX2lkeCk7CisKK3ZvaWQgZW1hY19vcHRfaW50ZXJuZXRfZGlzY29ubmVjdF9oYW5kbGVyKCk7CisKKy8vIEFQSSBmb3IgVVBDTSB0byB0dXJuIG9mZiAxc3QgYXJyb3cgb3B0aW1pemF0aW9uIHdoZW4gUEROIGRpc2Nvbm5lY3QKK3ZvaWQgZXJsY2RsXzFzdF9hcnJvd19kaXNhYmxlX2huZGxyKCk7Cit2b2lkIGVybGN1bF8xc3RfYXJyb3dfZGlzYWJsZV9obmRscigpOworCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICBFTDIgQVBJIGZvciBvdGhlciBsYXllcjogSUNECisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gRm9yIE1BQ19ETF9UQiByZWNvcmQKK3ZvaWQgZWwyaWNkX21hY19kbF90cmFuc3BvcnRfYmxvY2tfcGFnaW5nX2hhbmRsZXIoa2FsX3VpbnQzMiBwcm90b2NvbF9pZHgsIGthbF91aW50MzIgc2ZuLCBrYWxfdWludDMyIHN1YmZyYW1lKTsKK3ZvaWQgZWwyaWNkX21hY19kbF90cmFuc3BvcnRfYmxvY2tfc2lfaGFuZGxlcihrYWxfdWludDMyIHByb3RvY29sX2lkeCwga2FsX3VpbnQzMiBzZm4sIGthbF91aW50MzIgc3ViZnJhbWUsIGthbF9ib29sIGlzX3NpKTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgIEVMMiBBUEkgZm9yIG90aGVyIGxheWVyOiBFUlJDCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2thbF9ib29sIGVucGRjcF9lcnJjX2lzX3VkY19zdXBwb3J0ZWQoKTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgIEVMMiBBUEkgZm9yIG90aGVyIGxheWVyOiBJUENPUkUKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordm9pZCBlbnBkY3BfaXBjb3JlX3Vua25vd25faGVhZGVyX3N0YXRpc3RpY3MoCitrYWxfdWludDMyIHVua25vd25faGVhZGVyX251bSwgICAgICAgIC8vIHVua25vd24gaGVhZGVyIG51bSBpbiB0aGlzIHBvbGxpbmcKK2thbF91aW50MTYgYmVnaW5fY250bCwgICAgICAgICAgICAgICAgLy8gYmVnaW4gY250bCBvZiByYl9pZHggaW4gdGhpcyBwb2xsaW5nCitrYWxfdWludDE2IGVuZF9jbnRsLCAgICAgICAgICAgICAgICAgIC8vIGVuZCBjbnRsIG9mIHJiX2lkeCBpbiB0aGlzIHBvbGxpbmcKK2thbF91aW50MTYgcmJfaWR4LCAgICAgICAgICAgICAgICAgICAgLy8gcmJfaWR4IDB+MzYKK2thbF91aW50MTYgcHJvdG9jb2xfaWR4KTsgICAgICAgICAgICAgLy8gcHJvdG9jb2xfaWR4IChzaW1faWR4IDB+MSkKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgIEVMMiBBUEkgZm9yIG90aGVyIGxheWVyOiBFU00KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLyogIAorICogIEBicmllZiBGb3IgRVNNIHRvIHF1ZXJ5IGlmIGViaSBpcyBjb25uZWN0ZWQgd2l0aCBOUi1QRENQCisgKgorICogIEBwYXJhbSBwcm90b2NvbF9pZHggKDA6IFNJTTEsIDE6IFNJTTIpCisgKgorICogIEByZXR1cm4gZWJpX2JtcF93aXRoX25yLCBiaXQgaXMgb25seSB2YWxpZCBmb3IgRVBTIEJlYXJlciByYW5nZSAoYml0LTMxIG1hcHMgdG8gZWJpPTMxLCBiaXQtMCBtYXBzIHRvIGViaT0wKQorICogCSAgMTogUkIgY29ubmVjdGVkIHRvIEVQUyBCZWFyZXIgaXMgYWN0aXZlIGFuZCBjb25uZWN0ZWQgd2l0aCBOUi1QRENQIChDTiBpcyBFUFMpCisgKiAJICAwOiBvdGhlcnMKKyovCitrYWxfdWludDMyIGVucGRjcF9lc21fZ2V0X2ViaV9ibXBfd2l0aF9ucihrYWxfdWludDMyIHByb3RvY29sX2lkeCk7CisKKyNlbmRpZiAvKiBfRUwyX1BVQkxJQ19BUElfSF8gKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZWwyX3NhcF9jb21tb24uaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZWwyX3NhcF9jb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDE3NGYzCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbDJfc2FwX2NvbW1vbi5oCkBAIC0wLDAgKzEsMzkxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlbDJfc2FwX2NvbW1vbi5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1PTFkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBDb21tb24gaGVhZGVyIGZpbGUgZm9yIGFsbCBFTDIgU0FQcy4KKyAqICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvbW1vbiBzdHJ1Y3R1cmVzIHVzZWQgYnkgYWxsIEVMMiBTQVBzLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwMiAwMyAyMDIwIHBpbGluLmxpbgorICogW01PTFkwMDQ3NzY0OV0g44CQ5biC5Zy65Y+N6aaI44CR44CQ6K+V55So54mI5pysbWluaWR1bXDjgJEoTUNVX2NvcmUxLHZwZTAsdGMwKFZQRTMpKSBbQVNTRVJUXSBmaWxlOm1jdS9wcm90b2NvbC9sdGVfc2VjL2VycmMvY2htL3NyYy9lcnJjX2NobV9sMl9jb250cm9sLmMgbGluZTozNzYzCisgKgorICogMDkgMjUgMjAxOSB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDA0NDMzMTJdIFtNVDY4ODVdW1BldHJ1c11bU2FuaXR5XVtWTU9MWV1bVk1PTFldWzIwMTktMDktMjFfMTcwMF0gQVNTRVJUID0gWzFdW2NvcmUxLHZwZTAsdGMwKHZwZTMpXSBBc3NlcnQgZmFpbDogZXBkY3BfcmJtLmMgNjM5MiAtIEVMMiBfCisgKiAuCisgKgorICogMTIgMTcgMjAxOCBjaGVueWVuLmh1YW5nCisgKiBbTU9MWTAwMzQ3NjU4XSBbR2VuOTddIGVSTEMgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIAkKKyAqIAlGaXggdHlwby4KKyAqCisgKiAxMiAxNyAyMDE4IGNoZW55ZW4uaHVhbmcKKyAqIFtNT0xZMDAzNDc2NThdIFtHZW45N10gZVJMQyBkZXZlbG9wbWVudCBjaGVjay1pbgorICogCQorICogCUZpeCBidWlsZCBlcnJvciB3aGVuIGJ1aWxkIDk1IHByb2plY3QuCisgKgorICogMTIgMTcgMjAxOCBtaW5ndHN1bmcuc3VuCisgKiBbTU9MWTAwMzcyNzY5XSBbVk1PTFldIGVuYWJsZSBFTkwyIG9uIEdlbjk1IEhXIHBsYXRmb3JtCisgKiBFTkwyIG1pZ3JhdGlvbiAtIE1QRCAoZXJyY19lbWFjX21zZy5oIG1vdmUgdG8gTUFDIENMKQorICoKKyAqIDA3IDI0IDIwMTggY2hpLXBpbi55ZWgKKyAqIFtNT0xZMDAzNDE3NjRdIFtHZW45N10gcmVtb3ZlIGVudW0gZXJyY19lbDJfY2ZnX3Jlc3VsdF9lbnVtCisgKiByb2xsYmFjayBlbnVtIGVycmNfZWwyX2NmZ19yZXN1bHRfZW51bQorICoKKyAqIDA3IDI0IDIwMTggY2hpLXBpbi55ZWgKKyAqIFtNT0xZMDAzNDE3NjRdIFtHZW45N10gcmVtb3ZlIGVudW0gZXJyY19lbDJfY2ZnX3Jlc3VsdF9lbnVtCisgKiBSZW1vdmUgZW51bSBlcnJjX2VsMl9jZmdfcmVzdWx0X2VudW0gdGhhdCB1c2VkIGZvciBjb25maWcgY29uZmlybSByZXN1bHQKKyAqIAkKKyAqIAlbUHJvdG9jb2wgYnVpbGQgdGFnXQorICogCVtJcyBDTCBzZWxmIHRlc3RhYmxlOiBOT10KKyAqIAlbR3JvdXAgQ0wgbGlzdDogQ0w2MDI4MTg3O0NMNjAyODQzMDtDTDYwMDc4NzU7Q0w2MDE2NzM1XQorICoKKyAqIDA2IDIwIDIwMTggcGV0ZXIuY2hpYW5nCisgKiBbTU9MWTAwMzI2NjkxXSBbTVQ2Mjk3XSBHRU45Ny5ERVYgRU5MMiBQYXRjaCBiYWNrCisgKiAxLiByZW1vdmUgZW51bSBhbmQgY29kZXMgcmVsYXRlZCB0byBSTEMgVUwgc3VzcGVuZC4KKyAqIDIuIERvbid0IHNldCBESyBpbiBwb2xsIGlmIHRoZSBSQiBoYXMgYmVlbiBsb2NrZWQgYnkgUERDUCAodG8gYXZvaWQgcmFjZSBjb25kaXRpb24pCisgKiAKKyAqIFtQcm90b2NvbCBidWlsZCB0YWddIAorICogW0lzIENMIHNlbGYgdGVzdGFibGU6IFlFU10gCisgKiBbR3JvdXAgQ0wgbGlzdDogTk9dCisgKgorICogMDUgMzAgMjAxOCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBSUkMtRU5QRENQIEdlbWluaSBWQyBpbnRlcmZhY2UgbmFtaW5nIGNoYW5nZQorICoKKyAqIDA1IDMwIDIwMTggcGV0ZXIuY2hpYW5nCisgKiBbTU9MWTAwMzI2NjkxXSBbTVQ2Mjk3XSBHRU45Ny5ERVYgRU5MMiBQYXRjaCBiYWNrCisgKiBbRU5MMl1bSW50ZXJmYWNlXSBCU1IgYW5kIGludGVyZmFjZSBtb2RpZmljYXRpb24gcGF0Y2hiYWNrCisgKgorICogMDUgMTggMjAxOCBoZWFkLmhzdQorICogW01PTFkwMDMyNjY5MV0gW01UNjI5N10gR0VOOTcuREVWIEVOTDIgUGF0Y2ggYmFjaworICogCXBvcnQgbGF0ZXN0IGludGVyZmFjZSBhbmQgY29kZSBvbiBHZW45Ny5ERVYgKGludGVyZmFjZSkKKyAqCisgKiAwMyAyOCAyMDE4IHNoaW4uY2hlbgorICogW01PTFkwMDMxNjY5Ml0gWzYyOTddIEludGVyZmFjZSBidWlsZC11cCBmb3IgRVJSQy1OUlJDLCBFUlJDL05SUkMtRU5MMiwgRVJSQy1FTDIgU0FQCisgKiB1cGRhdGUgZWwyIGludGVyZmFjZXMuCisgKgorICogMDggMTcgMjAxNyBzdGV2ZS5rYW8KKyAqIFtNT0xZMDAyNzE1MDRdIFs2MjkzXVtTUkxURSBFbmhhbmNlbWVudF1bRUwyXVtFUERDUF0gU3luYyBmcm9tIExSMTEuTVA1CisgKiBbVU1PTFlBXVtUUlVOS11bRVBEQ1BdIFNSTFRFIGVuaGFuY2VtZW50LgorICoKKyAqIDAyIDA2IDIwMTcgcGV0ZXIueXUKKyAqIFtNT0xZMDAyMDc3MzNdIFtNVDYyOTNdW0VMMl0gRVJMQ0RMIGRldmVsb3BtZW50CisgKiBbTS1TSU1dIFN5bmMgUi1TSU0gcmVsYXRlZCBpbnRlcmZhY2VzLCByZW1vdmUgcmVkdW5kYW50IG1lc3NhZ2UgSURzIHJlbGF0ZWQgdG8gRVJMQy4KKyAqCisgKiAwOSAyNiAyMDE2IHNsaWZlci5oc3VlaAorICogW01PTFkwMDIwNTA4NV0gW01UNjI5M11bRUwyXSBFUkxDIHNvdXJjZSBjb2RlcyBpbnRlZ3JhdGlvbiBmcm9tIERFViB0byBUUlVOSworICogRVJMQyBzb3VyY2UgY29kZXMgaW50ZWdyYXRpb24gZnJvbSBERVYgdG8gVFJVTksKKyAqCisgKiAwNCAwOCAyMDE1IGthdGllLnRzZW5nCisgKiBbTU9MWTAwMTA0MTg2XSBbVU1PTFldIFVNT0xZIGNvZGUgbWFpbnRlbmFuY2UuCisgKiAJMS4gTWFyY2ggMjAxNSBNT0xZIENSIHN5bmMgb24gRVJMQy1ETDogKDEpIFZvTFRFIGVhcmx5IFJMRiAoMikgbG9nIHJlZHVjdGlvbgorICogCTIuIFJMQyBndGVzdCBVVCBmaXg6IHNldC9yZXNldCBnRVJMQ19UcmFwX01zZ19FTiBhdCBzZXR1cCgpIGFuZCB0ZWFyZG93bigpCisgKgorICogMTEgMTEgMjAxNCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAwODQwNDJdIFtVTU9MWV0gbWVyZ2UgVU1PTFlfREVWIHRvIFVNT0xZIHRydW5rCisgKiAuCisgKgorICogMTAgMjcgMjAxNCBzaC55YW5nCisgKiBbTU9MWTAwMDgyMjExXSBbTVQ2MjkxX0RFVl0gRU1CTVMgY2hlY2staW4KKyAqIGVtYm1zIGNoZWNrLWluCisgKgorICogMDkgMTkgMjAxNCBjaGktY2h1bmcubGluCisgKiBbTU9MWTAwMDczODM2XSBbTVQ2MjkxXVtFUlJDXVtDSE1dIExURS1BIENITSBkZXZlbG9wbWVudCBjb2RlIGNoZWNrLWluCisgKiBbQ0hNXSBNQk1TIGludGVyZmFjZSBjaGVjayBpbgorICoKKyAqIDA3IDI5IDIwMTQgc2gueWFuZworICogW01PTFkwMDA3MzkyMl0gW01UNjI5MV9ERVZdIEVNQk1TIGdlbmVyYWwgY2hlY2staW4KKyAqIC4KKyAqCisgKiAwNyAyOCAyMDE0IHlpdGluZy5jaGVuZworICogW01PTFkwMDA3MzgzMF0gW01UNjI5MV9ERVZdIGNoZWNrLWluIE1UNjI5MSBtb2RpZmljYXRpb24KKyAqIENoZWNrLWluIEVNQUMtRVJSQyBpbnRlcmZhY2UKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvLy8gQGRhdGUgMDgvMTAvMTEKKworI2lmbmRlZiBfTVRLX0xURV9FTDJfQ09NTU9OX1NBUF9IXworI2RlZmluZSBfTVRLX0xURV9FTDJfQ09NTU9OX1NBUF9IXworCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKworI2lmZGVmIF9fRUwyX0FSQ0hfVjJfXworI2luY2x1ZGUgImVubDJfc2FwX2NvbW1vbi5oIgorI2VuZGlmIC8qIF9fRUwyX0FSQ0hfVjJfXyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSQklEICh1c2VkIFJMQ1VMIFNBUCwgUkxDREwgU0FQLCBhbmQgUERDUCBTQVApCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLy8vIFJCSUQgKHJhZGlvIGJlYXJlciBpZGVudGl0eSkKK3R5cGVkZWYgZW51bSAKK3sKKyAgICBSQklEX1NSQjAgID0gMHgwMCwKKyAgICBSQklEX1NSQjEgID0gMHgwMSwKKyAgICBSQklEX1NSQjIgID0gMHgwMiwKKyAgICBSQklEX1NSQjMgID0gMHgwMywKKyAgICBSQklEX0RSQjEgID0gMHgxMCwKKyAgICBSQklEX0RSQjIgID0gMHgxMSwKKyAgICBSQklEX0RSQjMgID0gMHgxMiwKKyAgICBSQklEX0RSQjQgID0gMHgxMywKKyAgICBSQklEX0RSQjUgID0gMHgxNCwKKyAgICBSQklEX0RSQjYgID0gMHgxNSwKKyAgICBSQklEX0RSQjcgID0gMHgxNiwKKyAgICBSQklEX0RSQjggID0gMHgxNywKKyAgICBSQklEX0RSQjkgID0gMHgxOCwKKyAgICBSQklEX0RSQjEwID0gMHgxOSwKKyAgICBSQklEX0RSQjExID0gMHgxQSwKKyAgICBSQklEX0RSQjEyID0gMHgxQiwKKyAgICBSQklEX0RSQjEzID0gMHgxQywKKyAgICBSQklEX0RSQjE0ID0gMHgxRCwKKyAgICBSQklEX0RSQjE1ID0gMHgxRSwKKyAgICBSQklEX0RSQjE2ID0gMHgxRiwKKyAgICBSQklEX0RSQjE3ID0gMHgyMCwKKyAgICBSQklEX0RSQjE4ID0gMHgyMSwKKyAgICBSQklEX0RSQjE5ID0gMHgyMiwKKyAgICBSQklEX0RSQjIwID0gMHgyMywKKyAgICBSQklEX0RSQjIxID0gMHgyNCwKKyAgICBSQklEX0RSQjIyID0gMHgyNSwKKyAgICBSQklEX0RSQjIzID0gMHgyNiwKKyAgICBSQklEX0RSQjI0ID0gMHgyNywKKyAgICBSQklEX0RSQjI1ID0gMHgyOCwKKyAgICBSQklEX0RSQjI2ID0gMHgyOSwKKyAgICBSQklEX0RSQjI3ID0gMHgyQSwKKyAgICBSQklEX0RSQjI4ID0gMHgyQiwKKyAgICBSQklEX0RSQjI5ID0gMHgyQywKKyAgICBSQklEX0RSQjMwID0gMHgyRCwKKyAgICBSQklEX0RSQjMxID0gMHgyRSwKKyAgICBSQklEX0RSQjMyID0gMHgyRgorCit9IGVycmNfZWwyX3JiaWRfZW51bTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSUkMgY29uZmlndXJhdGlvbiByZXN1bHQgKHVzZWQgYnkgYWxsIFNBUHMpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLy8vIHJlc3VsdCBvZiBSUkMgY29uZmlndXJhdGlvbiAKK3R5cGVkZWYgZW51bSAKK3sgICAgCisgICAgRVJSQ19FTDJfQ0ZHX1NVQ0NFU1MgICAgPSAweDAwLAorICAgIEVSUkNfRUwyX0NGR19QQVJBTV9FUlIgID0gMHgxMCwKKyAgICBFUlJDX0VMMl9DRkdfU1RBVFVTX0VSUiA9IDB4MjAKKworfSBlcnJjX2VsMl9jZmdfcmVzdWx0X2VudW07CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUlJDIGNvbmZpZ3VyYXRpb24gdG8gZW50ZXIvbGVhdmUgdmlydHVhbCBjb25uZWN0ZWQgc3RhdGUKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFTDEtRUwyIHJlc3VsdAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8vLyByZXN1bHQgb2YgRUwxPC0+RUwyIGNvbmZpZ3VyYXRpb24gIAordHlwZWRlZiBlbnVtIAoreyAgICAKKyAgICBFTDJfRUwxX1NVQ0NFU1MgICAgPSAweDAwLAorICAgIEVMMl9FTDFfUEFSQU1fRVJSICA9IDB4MTAsCisgICAgRUwyX0VMMV9TVEFUVVNfRVJSID0gMHgyMAorCit9IGVsMl9lbDFfcmVzdWx0X2VudW07CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogbG9naWNhbCBjaGFubmVsIGNvbmZpZ3VyYXRpb24gKHVzZWQgYnkgRU1BQyBTQVAgYW5kIEVSTENVTCBTQVApCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLy8vIHByaW9yaXRpc2VkIGJpdCByYXRlIChQQlIpCit0eXBlZGVmIGVudW0KK3sKKyAgICBQQlJfS0JQU18wICAgPSAweDAwLAorICAgIFBCUl9LQlBTXzggICA9IDB4MDEsCisgICAgUEJSX0tCUFNfMTYgID0gMHgwMiwKKyAgICBQQlJfS0JQU18zMiAgPSAweDAzLAorICAgIFBCUl9LQlBTXzY0ICA9IDB4MDQsCisgICAgUEJSX0tCUFNfMTI4ID0gMHgwNSwKKyAgICBQQlJfS0JQU18yNTYgPSAweDA2LAorICAgIFBCUl9LQlBTXzUxMiA9IDB4MDcsCisgICAgUEJSX0tCUFNfMTAyND0gMHgwOCwKKyAgICBQQlJfS0JQU18yMDQ4PSAweDA5LAorICAgIFBCUl9LQlBTX0lORiA9IDB4MGEKK30gZXJyY19lbDJfcGJyX2VudW07CisKKworLy8vIGJ1Y2tldCBzaXplIGR1cmF0aW9uIChCU0QpCit0eXBlZGVmIGVudW0KK3sKKyAgICBCU0RfTVM1MCAgICA9IDB4MDAsIAorICAgIEJTRF9NUzEwMCAgID0gMHgwMSwgCisgICAgQlNEX01TMTUwICAgPSAweDAyLCAKKyAgICBCU0RfTVMzMDAgICA9IDB4MDMsIAorICAgIEJTRF9NUzUwMCAgID0gMHgwNCwgCisgICAgQlNEX01TMTAwMCAgPSAweDA1LAorICAgIEJTRF9JTlZBTElEID0gMHgwNgorfSBlcnJjX2VsMl9ic2RfZW51bTsKKworCisjZGVmaW5lIElOVkFMSURfTENHICAgICAgICAgICAoMHgwNCkKKworLy8vIGxvZ2ljYWwgY2hhbm5lbCBjb25maWd1cmF0aW9uIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICBwcmk7ICAgICAvLy88IHByaW9yaXR5IAorICAgIGVycmNfZWwyX3Bicl9lbnVtICAgcGJyOyAgICAgLy8vPCBwcmlvcml0aXNlZCBiaXQgcmF0ZSAoUEJSKQorICAgIGVycmNfZWwyX2JzZF9lbnVtICAgIGJzZDsgICAgIC8vLzwgYnVja2V0IHNpemUgZHVyYXRpb24gKEJTRCkKKyAgICBrYWxfdWludDggICAgICAgICAgIGxjZzsgICAgIC8vLzwgbG9naWNhbCBjaGFubmVsIGdyb3VwIChMQ0cpCisKK30gZXJyY19lbDJfbGNoX2NmZzsKKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJCIGNvbmZpZ3VyYXRpb24gKHVzZWQgYnkgRVJMQ1VMIFNBUCBhbmQgRVJMQ0RMIFNBUCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvLy8gbWF4aW11bSBudW1iZXIgb2YgUkJzIGluIEVSTEMgY29uZmlndXJlZCBieSBFUlJDCisjZGVmaW5lIE1BWF9OVU1fUkxDX0NPTkZJR19SQiAgICAoMTgpCisKKy8vLyBtYXhpbXVtIG51bWJlciBvZiBNUkJzIGluIEVSTEMgY29uZmlndXJlZCBieSBFUlJDCisjZGVmaW5lIE1BWF9OVU1fUkxDX0NPTkZJR19NUkIgICAgKDI5KQorCisvLy8gUkIgY29uZmlndXJhdGlvbiBtb2RlIGluIEVSTENVTCBhbmQgRVJMQ0RMCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUkxDX01PREVfUkVMICAgICAgICAgICAgID0gMHgwMCwKKyAgICBFUkxDX01PREVfRVNUICAgICAgICAgICAgID0gMHgxMCwKKyAgICBFUkxDX01PREVfUkVFU1QgICAgICAgICAgID0gMHgyMCwKKyAgICBFUkxDX01PREVfUkVDRkcgICAgICAgICAgID0gMHgzMCwKKyAgICBFUkxDX01PREVfUkVFU1RfTk9fQ0ZHICAgID0gMHg0MCwKKyAgICBFUkxDX01PREVfUkVTVU1FICAgICAgICAgID0gMHg1MAorfSBlcnJjX2VybGNfcmJfbW9kZV9lbnVtOworCisKKy8vLyBSTEMgbW9kZQordHlwZWRlZiBlbnVtCit7CisgICAgRVJMQ19BTSA9IDAsCisgICAgRVJMQ19VTSA9IDEKKworfSBlcnJjX2VybGNfcmJfdHlwZV9lbnVtOworCisKKy8vLyBSTEMgU04gZmllbGQgbGVuZ3RoCit0eXBlZGVmIGVudW0KK3sKKyAgICBTTl9TSVpFXzUgID0gMCwgCisgICAgU05fU0laRV8xMCA9IDEKKworfSBlcnJjX2VybGNfc25fZmllbGRfbGVuX2VudW07CisKKworI2lmZGVmIF9fRUwyX0FSQ0hfVjJfXwordHlwZWRlZiBlbnVtCit7CisgICAgRVJSQ19FTDJfQ0VMTF9HUk9VUF9NQ0csCisgICAgRVJSQ19FTDJfQ0VMTF9HUk9VUF9TQ0cKK30gZXJyY19lbDJfY2VsbF9ncm91cF9lbnVtOworCisKK3R5cGVkZWYgZW51bSB7CisgICAgRVJSQ19FTDJfUkJfVFlQRV9TUkIsCisgICAgRVJSQ19FTDJfUkJfVFlQRV9EUkIKK30gZXJyY19lbDJfcmJfdHlwZV9lbnVtOworI2VuZGlmIC8qIF9fRUwyX0FSQ0hfVjJfXyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFTUJNUyBjb25maWd1cmF0aW9uIAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHJhZGlvIGxpbmsgZmFpbHVyZSAoUkxGKSAodXNlZCBieSBFUkxDVUwgU0FQIGFuZCBFUkxDREwgU0FQKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8vLyBjYXVzZSBvZiBFUlJDLUVSTEMgUkxGIGluZGljYXRpb24KK3R5cGVkZWYgZW51bSAKK3sKKyAgICBFUkxDX1VMX01BWF9SRVRYID0gMHgwMCwgIC8vLzwgbWF4IHJldHJhbnNtaXNzaW9uIGZvciBhIHNwZWNpZmljIFNOIChUUzM2LjMyMikKKyAgICBFUkxDX0RMX01BWF9SRVRYID0gMHgwMSAgIC8vLzwgbWF4IGR1cGxpY2F0aW9uIGZvciBhIHNwZWNpZmljIFNOIChNVEsgcHJvcHJpZXRhcnkpCisKK30gZXJyY19lcmxjX3JsZl9lbnVtOworCisvLy8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBSTEYgaW5kaWNhdGlvbgordHlwZWRlZiBlbnVtCit7CisgICAgRVJMQ19STEZfQUREX0lOVkFMSUQgICAgICA9IDB4MDAsICAgLy8vPCBObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgICAgRVJMQ19STEZfQUREX1VMX0VBUl9SRUVTVCA9IDB4MDEsICAgLy8vPCBVTCBlYXJseSByZS1lc3RhYmxpc2htZW50CisgICAgRVJMQ19STEZfQUREX0RMX0VBUl9SRUVTVCA9IDB4MDIgICAgLy8vPCBETCBlYXJseSByZS1lc3RhYmxpc2htZW50CisKK30gZXJyY19lcmxjX3JsZl9pbmRfYWRkX2VudW07CisKKy8vLyBtZXNzYWdlIHN0cnVjdHVyZSBvZiBFUlJDX0VSTENfUkxGX0lORAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorI2lmZGVmIF9fRUwyX0FSQ0hfVjJfXworICAgIGVycmNfZWwyX3JiX3R5cGVfZW51bSAgICAgICByYl90eXBlOyAgLyogU1JCIG9yIERSQiAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYmlkOyAgICAgLyogUkIgSWRlbnRpdHksIHZhbHVlIHJhbmdlOiAxLTMyLCBTUkI6IDEtMiwgRFJCOiAxLTMyICovCisjZWxzZQorICAgIGVycmNfZWwyX3JiaWRfZW51bSAgICAgICAgICByYmlkOworI2VuZGlmIC8qIF9fRUwyX0FSQ0hfVjJfXyAqLworICAgIGthbF91aW50OCAgICAgICAgICAgcmJfaWR4OyAgICAgLy8gUkIgaW5kZXgKKyAgICBrYWxfYm9vbCAgICAgICAgICAgIGlzX29sZF9yYjsgIC8vIGlzIG9sZCBSQiBSTEYgb3Igbm90CisgICAgZXJyY19lcmxjX3JsZl9lbnVtICBjYXVzZTsgICAgICAvLyByZWFzb24gb2YgUkxGCisKKyAgICBrYWxfdWludDggICAgICAgICAgIGFkZF9pbmZvOyAgIC8vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKE1USyBwcm9wcmlldGFyeSkKKyAgICBrYWxfdWludDggICAgICAgICAgIHJzdmQ4OyAgICAgIC8vIHJlc2VydmVkIDEgYnl0ZQorICAgIGthbF91aW50MTYgICAgICAgICAgcnN2ZDE2OyAgICAgLy8gcmVzZXJ2ZWQgMiBieXRlcworCit9IGVycmNfZXJsY19ybGZfaW5kX3N0cnVjdDsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VsMmVtX2xlZ2FjeV9zdGF0c19zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZW0vZWwyZW1fbGVnYWN5X3N0YXRzX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNjc1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VsMmVtX2xlZ2FjeV9zdGF0c19zdHJ1Y3QuaApAQCAtMCwwICsxLDczIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlbDJlbV9sZWdhY3lfc3RhdHNfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgVU1PTFlBCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRGVmaW5lIGxlZ2FjeSBzdGF0aXN0aWMgc3RydWN0dXJlcyAobm90IHVzZWQgaW4gOTMpCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA5IDExIDIwMTkgZnJhbmsuc29uZworICogW01PTFkwMDQzODk0Ml0gW1ZNT0xZXSBETUYgcGF0Y2hlcyBuZWVkIHRvIGJlIHBvcnRlZCB0byBWTU9MWSBUUlVOSworICogCQorICogCURNRiBwb3J0aW5nLgorICogCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBMRUdBQ1lfU1RBVFNfU1RSVUNUX0gKKyNkZWZpbmUgTEVHQUNZX1NUQVRTX1NUUlVDVF9ICisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IG5vdCBleGlzdCBmb3IgOTMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vCisKKworCisjZW5kaWYgLypFTUFDX1NUQVRTX1NUUlVDVF9IKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lbDJlbV9yZXBvcnRfbXNnLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VsMmVtX3JlcG9ydF9tc2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjZhMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lbDJlbV9yZXBvcnRfbXNnLmgKQEAgLTAsMCArMSwyMzQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlbDJlbV9yZXBvcnRfbXNnLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgVU1PTFlBCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRGVmaW5lIG1lc3NhZ2Ugc3RydWN0dXJlIG9mIEVNIHJlcG9ydCAKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA5IDExIDIwMTkgZnJhbmsuc29uZworICogW01PTFkwMDQzODk0Ml0gW1ZNT0xZXSBETUYgcGF0Y2hlcyBuZWVkIHRvIGJlIHBvcnRlZCB0byBWTU9MWSBUUlVOSworICogCQorICogCURNRiBwb3J0aW5nLgorICoKKyAqIDA2IDA2IDIwMTggeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogRml4IGJ1aWxkIGVycm9yIGZvciBNVDM5NjcgLSByb2xsYmFjayBFTSBzdHJ1Y3R1cmUKKyAqCisgKiAwNiAwMSAyMDE4IGhhbWlsdG9uLmxpYW5nCisgKiBbTU9MWTAwMzMwNDY2XSBETCA1Q0NzIHVwZ3JhZGVkIG9uIEdlbjk3CisgKiAJCisgKiAJREwgNUNDcyB1cGdyYWRlIG1vZGlmaWNhdGlvbgorICoKKyAqIDA1IDIyIDIwMTggcGV0ZXIuY2hpYW5nCisgKiBbTU9MWTAwMzI2NjkxXSBbTVQ2Mjk3XSBHRU45Ny5ERVYgRU5MMiBQYXRjaCBiYWNrCisgKiBbR0VOOTddRU5MMiBDb21tb24gZmlsZXMKKyAqCisgKgorICogMDQgMjcgMjAxOCBzaHUtd2VpLmhvCisgKiBbTU9MWTAwMzIyODU0XSBbRUwyXSBQYXRjaCBiYWNrIGZyb20gVU1PTFlFIHRvIEdFTjk3LkRFVgorICogCQorICogCS4gRU1BQyBwYXJ0CisgKgorICogMDQgMjcgMjAxOCBzaHUtd2VpLmhvCisgKiBbTU9MWTAwMzIyODU0XSBbRUwyXSBQYXRjaCBiYWNrIGZyb20gVU1PTFlFIHRvIEdFTjk3LkRFVgorICogLiBFTUFDIHBhcnQKKyAqCisgKiAwNCAyMyAyMDE4IHNodS13ZWkuaG8KKyAqIC5QYXRjaCBmcm9tIFVNT0xZRSBzaW5jZSAyLzEgdG8gNC8yMAorICoKKyAqIDAxIDExIDIwMTggamlhLXNoaS5saW4KKyAqIFtNT0xZMDAzMDE0NTFdIFtTTU8gcmVsZWFzZV1bOTMvOTVdRUwxIHJlbGF0aXZlIGludGVyZmFjZQorICogZW1hYy9lbDEgaW50ZXJmYWNlIHJlLWFyY2gKKyAqCisgKiAwMyAwOSAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyMjMwNjddIFtNVDYyOTNdIEVMMiBFTSBpbXBsZW1lbnRhdGlvbgorICogRUwyRU0gcmUtYXJjaC9zeW5jIHRvIExSMTIgQ0wzNjAxMTQyCisgKgorICogMDEgMjUgMjAxNyBuaWNvbGUuaHN1CisgKiBbTU9MWTAwMjIzMDY3XSBbTVQ2MjkzXSBFTDIgRU0gaW1wbGVtZW50YXRpb24KKyAqIGZpeCBjb21waWxlIG9wdGlvbgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiAgQGZpbGUgICBlbDJlbV9yZXBvcnRfbXNnLmgKKyAqICBAYnJpZWYgIERlZmluZSBtZXNzYWdlIHN0cnVjdHVyZSBvZiBFTSByZXBvcnQgCisgKgorICogIEBhdXRob3IgbXRrMDU0OTUKKyAqICBAZGF0ZSAgIDIwMTYvMDkvMDgKKyAqCisgKiovCisKKyNpZm5kZWYgX19FTDJFTV9SRVBPUlRfTVNHX0hfXworI2RlZmluZSBfX0VMMkVNX1JFUE9SVF9NU0dfSF9fCisKKyNpbmNsdWRlICJlbmwyX2RlZi5oIgorCisjaWYgZGVmaW5lZChfX0VMMl9FTV9NT0RFX18pCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorCisjaW5jbHVkZSAiZW1fZW5sMl9wdWJsaWNfc3RydWN0LmgiCisjaW5jbHVkZSAibHRlX3RpbWVfY29tbW9uLmgiCisKKyNpbmNsdWRlICJlbWFjX3N0YXRzX3N0cnVjdC5oIgorI2luY2x1ZGUgImVybGNfc3RhdHNfc3RydWN0LmgiCisjaW5jbHVkZSAiZXBkY3Bfc3RhdHNfc3RydWN0LmgiCisjaW5jbHVkZSAiZWwyZW1fbGVnYWN5X3N0YXRzX3N0cnVjdC5oIgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogbXNnIHN0cnVjdCBmb3IgRU0gcmVwb3J0CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFTDJfT1YgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS8vCisjZGVmaW5lIEVMMl9PVl9NU0dfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVNQUMgRU0gTVNHID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0vLworI2RlZmluZSBFTUFDX0VNX01TR19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgZW1faW5mb19lbnVtIGVtX2luZm87CisgICAga2FsX3VpbnQxNiAgIHN5c3RlbV9mbjsKKyAgICBrYWxfdWludDggICAgc3ViX2ZuOworICAgIC8qCisgICAgICAgIEZvciBWelcgRU0sIHJlcXVpcmVkIHRvIHJlcG9ydCBhdmcgcmVjZWl2ZWQgVUwgZ3JhbnQgYnl0ZXMgaW4gNTAwbXMKKyAgICAgICAgSGVyZSB3ZSBhY3VtdWxhdGUgdGhlIHRvdGFsIFVMIGdyYW50IGJ5dGVzLCAKKyAgICAgICAgYW5kIGRpdmlkZSBieSBlbWFjX3VsX2dyYW50X2J5dGVzX2NvdW50CisgICAgICAgIGZvciA5MiB3aXRoIFVMIENBLCB0aGlzIGZpZWxkIGFnZ3JlZ2F0ZSBib3RoIGNlbGxzJyBncmFudCBieXRlcworICAgICAgKi8KKyAgICBrYWxfdWludDMyIGVtYWNfdWxfZ3JhbnRfYnl0ZXNfdG90YWw7CisgICAgLyoKKyAgICAgICAgRm9yIFZ6VyBFTSwgcmVxdWlyZWQgdG8gcmVwb3J0IGF2ZyBVTCBwYWRkaW5nIGJ5dGVzIGluIDUwMG1zCisgICAgICAgIEhlcmUgd2UgYWN1bXVsYXRlIHRoZSB0b3RhbCBwYWRkaW5nIGJ5dGVzLCAKKyAgICAgICAgYW5kIGRpdmlkZSBieSBlbWFjX3VsX2dyYW50X2J5dGVzX2NvdW50CisgICAgICAgIGZvciA5MiB3aXRoIFVMIENBLCB0aGlzIGZpZWxkIGFnZ3JlZ2F0ZSBib3RoIGNlbGxzJyBwYWRkaW5nIGJ5dGVzCisgICAgICAqLyAKKyAgICBrYWxfdWludDMyIGVtYWNfdWxfcGFkZGluZ19ieXRlc190b3RhbDsKKyAgICAvKgorICAgICAgICAgIFRvdGFsIHRyYW5zbWl0dGVkIHRiIGNvdW50IGluIDUwMG1zCisgICAgICAgICAgZm9yIDkyIHdpdGggVUwgQ0EsIHRoaXMgZmllbGQgYWdncmVnYXRlIGJvdGggY2VsbHMnIGdyYW50IGNvdW50CisgICAgICAqLworICAgIGthbF91aW50MTYgZW1hY191bF9ncmFudF9ieXRlc19jb3VudDsKKworICAgIC8qQmVsb3cgZmllbGRzIGlzIGZvciBLT1IgTU5PKi8KKyAgICBrYWxfdWludDMyIHJhX3Jhcl9lcnJvcl9jbnQ7CisgICAga2FsX3VpbnQzMiByYV9jcl9lcnJvcl9jbnQ7CisgICAga2FsX3VpbnQzMiByYV9lcnJvcl9pbmRfY250OworCisgICAga2FsX3VpbnQzMiBlbWFjX3J4X2JpdHM7CisgICAga2FsX3VpbnQzMiBlbWFjX3R4X2JpdHM7CisgICAga2FsX3VpbnQzMiBwaGljaF9uYWNrX2NudDsKKyAgICBrYWxfdWludDMyIHBoaWNoX2Fja19jbnQ7CisgICAga2FsX3VpbnQzMiByeF9jbnRfcGNlbGw7CisgICAga2FsX3VpbnQzMiByeF9jbnRfc2NlbGw7CisgICAga2FsX3VpbnQzMiByeF9jcmNfbmdfY250X3BjZWxsOworICAgIGthbF91aW50MzIgcnhfY3JjX25nX2NudF9zY2VsbDsKKworICAgIC8qIEZvciBSMTIgRmVhdHVyZSBFTSB2aWV3LCBjb25zaWRlciB1cCB0byBETDRDQywgVUwyQ0MgaW4gOTIgZ2VuLCBkb24ndCByZXNldCBiZWxvdyByZWdpb25zIGFmdGVyIHByaW1pdGl2ZSBzZW5kIChyZWZlciB0byBfZWR5bl9lbV9yZXNldF9lbWFjX292X3N0YXR1c181MDBtcyksCisgICAgICAgRUwyX09WX1NUQVRVU19JTkQgYWxzbyBoYXMgc2ltaWxhciBFTSBpbmZvLCBidXQgaXRzIGFjY2VzcyBwcml2aWxlZ2UgaXMgSFFfT05MWSAocmVmZXIgdG8gZW1fbWFwcGluZ19mb3JfdG9vbC5oKSwgc28gdG8gYWxsb3cgY3VzdG9tZXIvb3V0c291cmNpbmcKKyAgICAgICB0byBzZWUgUjEyIEZlYXR1cmUgRU0gdmlldyB3b3JraW5nLCB0aGUgdmlldyBuZWVkcyB0byBiZSBiaW5kZWQgdG8gY3VzdG9tZXIvb3V0c291cmNpbmcgYWNjZXNzaWJsZSBwcmltaXRpdmVzLCBhbmQgd2UgY2hvb3NlIEVNQUNfT1ZfU1RBVFVTXzUwMF9JTkQgdG8gZG8gc28uCisgICAgICovCisgICAgZW1hY19zY2VsbF9zdGF0ZV9lbnVtIHN0YXRlX3NjZWxsW01BWF9OVU1fU1VQUE9SVF9TQ0VMTF07CisKKyAgICBrYWxfdWludDMyIGFjY3VtdWxhdGVfcnhfY250X3BjZWxsOworCisgICAga2FsX3VpbnQzMiBhY2N1bXVsYXRlX3J4X2NudF9zY2VsbFtNQVhfTlVNX1NVUFBPUlRfU0NFTExdOworCisgICAga2FsX3VpbnQzMiBhY2N1bXVsYXRlX3R4X2NudF9wY2VsbDsKKyAgICBrYWxfdWludDMyIGFjY3VtdWxhdGVfdHhfY250X3NjZWxsOworICAgIGthbF91aW50NjQgYWNjdW11bGF0ZV90eF9ieXRlX3BjZWxsOworICAgIGthbF91aW50NjQgYWNjdW11bGF0ZV90eF9ieXRlX3NjZWxsOworICAgIC8qKioqKioqKioqKioqKi8KKworICAgIC8vRm9yIHRpdGFuCisgICAgLy9hY3VtdWxhdGUgdGhlIGJzcl9ieXRlcyBpbiByZXBvcnRpbmcgcGVyaW9kLCByZXBvcnQgdGhlIHRvdGFsIHZhbHVlCisgICAga2FsX3VpbnQzMiBlbWFjX3R4X2Jzcl9ieXRlczsKK30gZW1fZW1hY19vdl9zdGF0dXNfNTAwX2luZF9zdHJ1Y3Q7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFTUFDIGV2ZW50IEVNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBlbV9pbmZvX2VudW0gZW1faW5mbzsKKyAgICBsdGVfY2VsbF90aW1lIHJjdl90aW1lOworICAgIGthbF91aW50MzIgcmFyX3RhX3ZhbHVlOworICAgIGthbF9ib29sIHJhX3R5cGVfY29udGVudGlvbjsKKyAgICBrYWxfdWludDMyIHRjX3JudGk7Cit9IGVtX2VtYWNfbXNnMl9yZXBvcnRfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgZW1faW5mb19lbnVtIGVtX2luZm87CisgICAgbHRlX2NlbGxfdGltZSByY3ZfdGltZTsKKyAgICBlbWFjX2NyX3Jlc3VsdF9lbnVtIGNyX3Jlc3VsdDsKK30gZW1fZW1hY19tc2c0X3JlcG9ydF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBlbV9pbmZvX2VudW0gZW1faW5mbzsKKyAgICBlbWFjX3RpbWVyX2V4cGlyeV9ldmVudF9lbnVtIGVtYWNfdGltZXJfZXhwaXJ5OworfSBlbV9lbWFjX3RpbWVyX2V4cGlyZV9pbmRfc3RydWN0OworCisjZW5kaWYKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VtYWNfb3RhLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VtYWNfb3RhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMwNDhiOQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZW0vZW1hY19vdGEuaApAQCAtMCwwICsxLDI5MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZW1hY19vdGEuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWUEKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBEZWZpbmUgRU1BQyBzdGF0aXN0aWMgc3RydWN0dXJlcyAKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDkgMTMgMjAxNyBuaWNvbGUuaHN1CisgKiBbTU9MWTAwMjc3Mzk2XSBbTVQ2MjkzXSBFTDIgTCtMIEVNIGRldmVsb3BtZW50CisgKiBbVFJVTktdIEwrTCBFTSAtIEVMMkVNLCBFTUFDLCBFTUFDREwKKyAqCisgKiAwNiAyOSAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyNTg2NjBdIFtCSUFOQ09dW01UNjc2M11bTVAxXVtFVkJdW1BIWVRlc3RdW0FTU0VSVF0gQXNzZXJ0IGZhaWw6IGRwY29wcm9fbW11X2Rydi5jIDE2MDgKKyAqIFtUUlVOS10gc2VuZCByYWNoX3RyaWdnZXIgZW0gd2hlbiBQUkFDSCBpcyByZWFsbHkgc2NoZWR1bGVkIGJ5IEVMMQorICogCXJlZmluZSBFTUFDIERMIE9UQQorICoKKyAqIDAyIDA5IDIwMTcgbmljb2xlLmhzdQorICogW01PTFkwMDIyMzA2N10gW01UNjI5M10gRUwyIEVNIGltcGxlbWVudGF0aW9uCisgKiBtb2RpZnkgT1RBIGNvbXBpbGUgb3B0aW9uCisgKgorICogMDEgMjUgMjAxNyBuaWNvbGUuaHN1CisgKiBbTU9MWTAwMjIzMDY3XSBbTVQ2MjkzXSBFTDIgRU0gaW1wbGVtZW50YXRpb24KKyAqIGZpeCBjb21waWxlIG9wdGlvbgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBFTUFDX09UQV9ICisjZGVmaW5lIEVNQUNfT1RBX0gKKworI2lmIGRlZmluZWQoX19FTV9NT0RFX18pCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorI2luY2x1ZGUgImRobF90cmFjZS5oIgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCB0cnVuY2F0ZWQ6MTsKKyAgICBrYWxfdWludDggdHlwZTozOworICAgIGthbF91aW50OCB2ZXJzaW9uOjQ7CisgICAga2FsX3VpbnQ4IGRpcmVjdGlvbjoxOworICAgIGthbF91aW50OCB0cmFuc3BvcnRfY2hhbm5lbDozOyAvLyAxOmJjaCAyOmRsLXNjaCAzOnBjaCA0Om1jaCA1OnVsLXNjaCA2OnJhY2gKKyAgICBrYWxfdWludDggbWFjX2hkcl9sZW46NDsgIC8vIDF+MTEKKyAgICBrYWxfdWludDggbWFjX2hkclsxMV07Cit9ZW1hY19vdGFfaGVhZGVyX3Q7CisKKy8qKioqIEVNQUMgT1RBIGhlYWRlciBzdHJ1Y3QgKGZvciBib3RoIFVML0RMIEVNQUMgVEIpCisgKgorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCAgdCAgfCAgICAgIHR5cGUgICAgICAgfCAgICAgICAgdmVyc2lvbiAgICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCAgZCAgfCAgICAgIHRyY2ggICAgICAgfCAgICAgIG1hY19oZHJfbGVuICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgc2ZuWzk6Ml0gICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICogfCAgc2ZuWzE6MF0gfCAgc3ViZnJhbWUgbnVtYmVyWzM6MF0gfCAgUmVzZXJ2ZWQgfAorICogKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICoKKyAqIHQ6ICAgICAgICAgICAgICAgdHJ1bmNhdGVkLCBzZXQgdG8gMSBpZiB0aGUgTUFDIGhlYWRlciBzaXplIGlzIGxhcmdlciB0aGFuIEVNQUNfT1RBX01BQ19IRFJfTEVOIGJ5dGVzCisgKiBzZm46ICAgICAgICAgICAgIExURSBzeXN0ZW0gZnJhbWUgbnVtYmVyICgwLi4xMDIzKQorICogc3ViZnJhbWUgbnVtYmVyOiBMVEUgc3ViZnJhbWUgbnVtYmVyICgwLi45KQorICoKKyAqLworCisvLyBFTUFDIE9UQTogbGVuZ3RoIHNldHRpbmcKKyNkZWZpbmUgRU1BQ19PVEFfQlVGRkVSX0xFTiAgIDE1CisjZGVmaW5lIEVNQUNfT1RBX01BQ19IRFJfTEVOICAxMQorI2RlZmluZSBFTUFDX09UQV9PVkVSSEVBRCAgICAgIDQKKworLy8gRU1BQyBPVEE6IGhlYWRlci50eXBlCisjZGVmaW5lIEVNQUNfT1RBX1RZUEVfTUFDIERITF9MMl9QRFVfTUFDX1RZUEUKKworLy8gRU1BQyBPVEE6IGhlYWRlci52ZXJzaW9uCisjZGVmaW5lIEVNQUNfT1RBX1ZFUlNJT04gMQorCisvLyBFTUFDIE9UQTogaGVhZGVyLmQgKGRpcmVjdGlvbikKKyNkZWZpbmUgRU1BQ19PVEFfRElSX1VMIDAKKyNkZWZpbmUgRU1BQ19PVEFfRElSX0RMIDEKKworLy8gRU1BQyBPVEE6IGhlYWRlci50cmNoICh0cmFuc3BvcnQgY2hhbm5lbCkKKyNkZWZpbmUgRU1BQ19PVEFfQkNIICAgIDEKKyNkZWZpbmUgRU1BQ19PVEFfRExTQ0ggIDIKKyNkZWZpbmUgRU1BQ19PVEFfUENIICAgIDMKKyNkZWZpbmUgRU1BQ19PVEFfTUNIICAgIDQKKyNkZWZpbmUgRU1BQ19PVEFfVUxTQ0ggIDUKKyNkZWZpbmUgRU1BQ19PVEFfUkFDSCAgIDYKKworI2RlZmluZSBFTUFDX1NVQl9IRFJfRSAoMHgyMCkgLy8gRSBpbiBNQUMgc3ViaGVhZGVyCisjZGVmaW5lIEVNQUNfU1VCX0hEUl9GICgweDgwKSAvLyBGIGluIE1BQyBzdWJoZWFkZXIKKworZXh0ZXJuIGthbF91aW50OCogcF9lbWFjX2RsX290YV9idWZmZXI7CitleHRlcm4ga2FsX3VpbnQ4IGVtYWNfZGxfb3RhX2xlbmd0aDsKK2V4dGVybiBrYWxfdWludDggZW1hY191bF9vdGFfYnVmZmVyW107CitleHRlcm4ga2FsX3VpbnQ4IGVtYWNfdWxfb3RhX2xlbmd0aDsKKworLy8gMiBieXRlIGlzIG1pbmltdW0gb3ZlcmhlYWQgZm9yIGVtYWMgb3RhIHN0cnVjdHVyZQorI2RlZmluZSBFTUFDX0RMX09UQV9ERUNMQVJFKF9wT3RhLCBfcEN1ciwgX2JUcnVuY2F0ZSwgX2xlbiwgX2lzX2RsX3RiX3JlcG9ydF9uZWVkZWRfaW4sIF9wVGJfcmVwb3J0X2luLCBfcGlkeCkgXAorICAgIGthbF91aW50OCogX3BPdGEgPSBwX2VtYWNfZGxfb3RhX2J1ZmZlcjsgXAorICAgIGthbF91aW50OCogX3BDdXIgPSBwX2VtYWNfZGxfb3RhX2J1ZmZlciArIEVNQUNfT1RBX09WRVJIRUFEOyBcCisgICAga2FsX3VpbnQ4IF9iVHJ1bmNhdGUgPSAwOyBcCisgICAga2FsX2Jvb2wgIF9pc19kbF90Yl9yZXBvcnRfbmVlZGVkID0gZWwyZW1faXNfZW1fb24oRUwyRU1fRU1fVFlQRV9FTUFDX0RMX1RCU19SRVBPUlQsIF9waWR4KTsgXAorICAgIGthbF91aW50MzIgX2xlbiA9IDA7IFwKKyAgICBlbWFjX2VsMnRhc2tfZGxfdGJfcmVwb3J0X2luZF9zdHJ1Y3QqIF9wVGJfcmVwb3J0ID0gKF9wVGJfcmVwb3J0X2luKTsKKworI2RlZmluZSBFTUFDX0RMX09UQV9DTEVBUl9CVUZGRVIoKVwKKyAgICBkbyB7XAorICAgICAgICBFTUFDX01FTV9TRVQocF9lbWFjX2RsX290YV9idWZmZXIsIDAsIEVNQUNfT1RBX0JVRkZFUl9MRU4pO1wKKyAgICB9IHdoaWxlKDApOworCisjZGVmaW5lIF9GSUxMX0VNQUNfT1RBX0JZVEUxKG90YV9wdHIsIHRydW5jYXRlZCwgdHlwZSwgdmVyc2lvbikgXAorICAgIGRvIHtcCisgICAgICAgICooa2FsX3VpbnQ4ICopKG90YV9wdHIpID0gKCgoa2FsX3VpbnQ4KSh0cnVuY2F0ZWQpICYgMHgwMSkgPDwgNykgfCAoKChrYWxfdWludDgpKHR5cGUpICYgMHgwNykgPDwgNCkgfCAoKGthbF91aW50OCkodmVyc2lvbikgJiAweDBGKTtcCisgICAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBfRklMTF9FTUFDX09UQV9CWVRFMihvdGFfcHRyLCBkaXJlY3Rpb24sIHRjaCwgb3RhX2xlbikgXAorICAgIGRvIHtcCisgICAgICAgICooa2FsX3VpbnQ4ICopKChvdGFfcHRyKSsxKSA9ICgoKGthbF91aW50OCkoZGlyZWN0aW9uKSAmIDB4MDEpIDw8IDcpIHwgKCgoa2FsX3VpbnQ4KSh0Y2gpICYgMHgwNykgPDwgNCkgfCAoKGthbF91aW50OCkob3RhX2xlbikgJiAweDBGKTtcCisgICAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBfRklMTF9FTUFDX09UQV9CWVRFM180KG90YV9wdHIsIHN5c3RlbV9mbiwgc3ViX2ZuKSBcCisgICAgICAgIGRvIHtcCisgICAgICAgICAgICAqKGthbF91aW50OCAqKSgob3RhX3B0cikrMikgPSAoKGthbF91aW50OCkoKHN5c3RlbV9mbikgPj4gMikpO1wKKyAgICAgICAgICAgICooa2FsX3VpbnQ4ICopKChvdGFfcHRyKSszKSA9ICgoKGthbF91aW50OCkoc3lzdGVtX2ZuKSAmIDB4MDMpIDw8IDYgKSB8ICgoKChrYWxfdWludDgpKHN1Yl9mbikgJiAweDBGKSkgPDwgMik7XAorICAgICAgICB9IHdoaWxlKDApOworCisjZGVmaW5lIF9GSUxMX0VNQUNfT1RBX0xDSUQoY3VyX3B0ciwgb3RhX2xlbiwgX2JUcnVuY2F0ZSwgbGNpZCkgXAorICAgIGRvIHtcCisgICAgICAgIGlmKCAhKF9iVHJ1bmNhdGUpICYmICgob3RhX2xlbikrTUFDX1NVQkhEUl9MXzBfU1opIDw9IEVNQUNfT1RBX01BQ19IRFJfTEVOKXsgXAorICAgICAgICAgICAgKihrYWxfdWludDggKikoY3VyX3B0cikgPSAoKGthbF91aW50OCkobGNpZCkgJiAweDFGKTtcCisgICAgICAgICAgICAob3RhX2xlbikrKztcCisgICAgICAgICAgICAoY3VyX3B0cikrKztcCisgICAgICAgIH0gXAorICAgICAgICBlbHNleyBcCisgICAgICAgICAgICAoX2JUcnVuY2F0ZSkgPSAxOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUoMCk7CisKKyNkZWZpbmUgRklMTF9FTUFDX09UQV9FX0xDSUQoY3VyX3B0ciwgb3RhX2xlbiwgX2JUcnVuY2F0ZSwgbGNpZCkgXAorICAgIGRvIHtcCisgICAgICAgIGlmKERITF9NQUNfQ0hFQ0tfTDJfUERVKCkgfHwgX2lzX2RsX3RiX3JlcG9ydF9uZWVkZWQpe1wKKyAgICAgICAgICAgIGlmKCAhKF9iVHJ1bmNhdGUpICYmICgob3RhX2xlbikrTUFDX1NVQkhEUl9MXzBfU1opIDw9IEVNQUNfT1RBX01BQ19IRFJfTEVOKXsgXAorICAgICAgICAgICAgICAgICooa2FsX3VpbnQ4ICopKGN1cl9wdHIpID0gKChrYWxfdWludDgpRU1BQ19TVUJfSERSX0UpIHwgKCgoa2FsX3VpbnQ4KShsY2lkKSAmIDB4MUYpKTtcCisgICAgICAgICAgICAgICAgKG90YV9sZW4pKys7XAorICAgICAgICAgICAgICAgIChjdXJfcHRyKSsrO1wKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZXsgXAorICAgICAgICAgICAgICAgIChfYlRydW5jYXRlKSA9IDE7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9XAorICAgIH0gd2hpbGUoMCk7CisKKyNkZWZpbmUgRklMTF9FTUFDX09UQV9MQVNUX0xDSUQoY3VyX3B0ciwgb3RhX2xlbiwgX2JUcnVuY2F0ZSwgbGNpZCwgb3RhX3B0ciwgZGlyZWN0aW9uLCB0Y2gsIHN5c3RlbV9mbiwgc3ViX2ZuKSBcCisgICAgZG8ge1wKKyAgICAgICAgaWYoREhMX01BQ19DSEVDS19MMl9QRFUoKSB8fCBfaXNfZGxfdGJfcmVwb3J0X25lZWRlZCl7XAorICAgICAgICAgICAgX0ZJTExfRU1BQ19PVEFfTENJRCgoY3VyX3B0ciksIChvdGFfbGVuKSwgKF9iVHJ1bmNhdGUpLCAobGNpZCkpOyBcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFMSgob3RhX3B0ciksIChfYlRydW5jYXRlKSwgRU1BQ19PVEFfVFlQRV9NQUMsIEVNQUNfT1RBX1ZFUlNJT04pOyBcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFMigob3RhX3B0ciksIChkaXJlY3Rpb24pLCAodGNoKSwgKG90YV9sZW4pKTsgXAorICAgICAgICAgICAgX0ZJTExfRU1BQ19PVEFfQllURTNfNCgob3RhX3B0ciksIChzeXN0ZW1fZm4pLCAoc3ViX2ZuKSk7IFwKKyAgICAgICAgICAgIGVtYWNfZGxfb3RhX2xlbmd0aCA9IChvdGFfbGVuKSArIEVNQUNfT1RBX09WRVJIRUFEO1wKKyAgICAgICAgICAgIGlmKERITF9NQUNfQ0hFQ0tfTDJfUERVKCkpIHtcCisgICAgICAgICAgICAgICAgREhMX01BQ19MT0dfTDJfUERVKGVtYWNfZGxfb3RhX2J1ZmZlciwgZW1hY19kbF9vdGFfbGVuZ3RoKTtcCisgICAgICAgICAgICB9XAorICAgICAgICAgICAgaWYoX2lzX2RsX3RiX3JlcG9ydF9uZWVkZWQgJiYgX3BUYl9yZXBvcnQpIHtcCisgICAgICAgICAgICAgICAga2FsX3VpbnQzMiBjb3B5X2xlbiA9IChvdGFfbGVuKSA8PSBFTV9FTUFDX01BWF9IRUFERVJfTEVOID9cCisgICAgICAgICAgICAgICAgICAgIChvdGFfbGVuKSA6IEVNX0VNQUNfTUFYX0hFQURFUl9MRU47XAorICAgICAgICAgICAgICAgIEVNQUNfTUVNX0NQWShfcFRiX3JlcG9ydC0+dGIubWFjX2hlYWRlcl9kYXRhLFwKKyAgICAgICAgICAgICAgICAgICAgZW1hY19kbF9vdGFfYnVmZmVyICsgRU1BQ19PVEFfT1ZFUkhFQUQsIGNvcHlfbGVuKTtcCisgICAgICAgICAgICAgICAgX3BUYl9yZXBvcnQtPnRiLm1hY19oZWFkZXJfbGVuID0gY29weV9sZW47XAorICAgICAgICAgICAgfVwKKyAgICAgICAgfVwKKyAgICB9IHdoaWxlKDApOworCisvLyByZXF1ZXN0ZWQgYnkgRVJSQyBQYWdpbmcvU0lCIHJlcG9ydGluZywgRVJSQyB3aWxsIHByZXBhcmUgT1RBIGRhdGEgYnVmZmVyCisjZGVmaW5lIEZJTExfRU1BQ19PVEFfTk9fTENJRChvdGFfbGVuLCBfYlRydW5jYXRlLCBvdGFfcHRyLCBkaXJlY3Rpb24sIHRjaCwgc3lzdGVtX2ZuLCBzdWJfZm4pIFwKKyAgICBkbyB7XAorICAgICAgICBpZihESExfTUFDX0NIRUNLX0wyX1BEVSgpKXtcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFMSgob3RhX3B0ciksIChfYlRydW5jYXRlKSwgRU1BQ19PVEFfVFlQRV9NQUMsIEVNQUNfT1RBX1ZFUlNJT04pOyBcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFMigob3RhX3B0ciksIChkaXJlY3Rpb24pLCAodGNoKSwgKG90YV9sZW4pKTsgXAorICAgICAgICAgICAgX0ZJTExfRU1BQ19PVEFfQllURTNfNCgob3RhX3B0ciksIChzeXN0ZW1fZm4pLCAoc3ViX2ZuKSk7IFwKKyAgICAgICAgICAgIERITF9NQUNfTE9HX0wyX1BEVShvdGFfcHRyLCAob3RhX2xlbikrIEVNQUNfT1RBX09WRVJIRUFEKTtcCisgICAgICAgIH1cCisgICAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBGSUxMX0VNQUNfT1RBX0VfU1VCSERSKGN1cl9wdHIsIG90YV9sZW4sIF9iVHJ1bmNhdGUsIGxjaWQsIGxlbilcCitkbyB7XAorICAgIGlmKERITF9NQUNfQ0hFQ0tfTDJfUERVKCkgfHwgX2lzX2RsX3RiX3JlcG9ydF9uZWVkZWQpe1wKKyAgICAgICAgaWYgKChsZW4pIDw9IE1BQ19TVUJIRFJfTF83X01BWF9WQUwpIHtcCisgICAgICAgICAgICBpZiggIShfYlRydW5jYXRlKSAmJiAoKG90YV9sZW4pK01BQ19TVUJIRFJfTF83X1NaKSA8PSBFTUFDX09UQV9NQUNfSERSX0xFTil7IFwKKyAgICAgICAgICAgICAgICAqKGthbF91aW50OCAqKShjdXJfcHRyKSA9ICgoa2FsX3VpbnQ4KUVNQUNfU1VCX0hEUl9FKSB8ICgoKGthbF91aW50OCkobGNpZCkgJiAweDFGKSk7XAorICAgICAgICAgICAgICAgICooa2FsX3VpbnQ4ICopKChjdXJfcHRyKSsxKSA9ICgoKGthbF91aW50OCkobGVuKSAmIDB4N0YpKTtcCisgICAgICAgICAgICAgICAgKG90YV9sZW4pICs9IE1BQ19TVUJIRFJfTF83X1NaO1wKKyAgICAgICAgICAgICAgICAoY3VyX3B0cikgKz0gTUFDX1NVQkhEUl9MXzdfU1o7XAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNleyBcCisgICAgICAgICAgICAgICAgKF9iVHJ1bmNhdGUpID0gMTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gZWxzZSB7XAorICAgICAgICAgICAgaWYoICEoX2JUcnVuY2F0ZSkgJiYgKG90YV9sZW4rTUFDX1NVQkhEUl9MXzE1X1NaKSA8PSBFTUFDX09UQV9NQUNfSERSX0xFTil7IFwKKyAgICAgICAgICAgICAgICAqKGthbF91aW50OCAqKShjdXJfcHRyKSA9ICgoa2FsX3VpbnQ4KUVNQUNfU1VCX0hEUl9FKSB8ICgoKGthbF91aW50OCkobGNpZCkgJiAweDFGKSk7XAorICAgICAgICAgICAgICAgICooa2FsX3VpbnQ4ICopKChjdXJfcHRyKSsxKSA9ICgoa2FsX3VpbnQ4KUVNQUNfU1VCX0hEUl9GKSB8ICgoKGthbF91aW50OCkoKGxlbik+PjgpKSAmIDB4N0YpO1wKKyAgICAgICAgICAgICAgICAqKGthbF91aW50OCAqKSgoY3VyX3B0cikrMikgPSAoKGthbF91aW50OCkoKGxlbikgJiAweEZGKSk7XAorICAgICAgICAgICAgICAgIChvdGFfbGVuKSArPSBNQUNfU1VCSERSX0xfMTVfU1o7XAorICAgICAgICAgICAgICAgIChjdXJfcHRyKSArPSBNQUNfU1VCSERSX0xfMTVfU1o7XAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNleyBcCisgICAgICAgICAgICAgICAgKF9iVHJ1bmNhdGUpID0gMTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH1cCisgICAgfVwKK30gd2hpbGUgKDApOworCisjZGVmaW5lIEZJTExfRU1BQ19VTF9PVEEoZGlyZWN0aW9uLCB0Y2gsIG1hY19oZHJfcHRyLCBvdGFfbGVuLCBzeXN0ZW1fZm4sIHN1Yl9mbilcCitkbyB7XAorICAgIGlmKERITF9NQUNfQ0hFQ0tfTDJfUERVKCkpe1wKKyAgICAgICAgaWYoKG90YV9sZW4pID4gRU1BQ19PVEFfTUFDX0hEUl9MRU4pe1wKKyAgICAgICAgICAgIF9GSUxMX0VNQUNfT1RBX0JZVEUxKGVtYWNfdWxfb3RhX2J1ZmZlciwgMSwgRU1BQ19PVEFfVFlQRV9NQUMsIEVNQUNfT1RBX1ZFUlNJT04pOyBcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFMihlbWFjX3VsX290YV9idWZmZXIsIChkaXJlY3Rpb24pLCAodGNoKSwgRU1BQ19PVEFfTUFDX0hEUl9MRU4pOyBcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFM180KGVtYWNfdWxfb3RhX2J1ZmZlciwgKHN5c3RlbV9mbiksIChzdWJfZm4pKTsgXAorICAgICAgICAgICAgRU1BQ19NRU1fQ1BZKGVtYWNfdWxfb3RhX2J1ZmZlcitFTUFDX09UQV9PVkVSSEVBRCwgKHZvaWQqKShtYWNfaGRyX3B0ciksIEVNQUNfT1RBX01BQ19IRFJfTEVOKTtcCisgICAgICAgICAgICBlbWFjX3VsX290YV9sZW5ndGggPSBFTUFDX09UQV9CVUZGRVJfTEVOO1wKKyAgICAgICAgfVwKKyAgICAgICAgZWxzZXtcCisgICAgICAgICAgICBfRklMTF9FTUFDX09UQV9CWVRFMShlbWFjX3VsX290YV9idWZmZXIsIDAsIEVNQUNfT1RBX1RZUEVfTUFDLCBFTUFDX09UQV9WRVJTSU9OKTsgXAorICAgICAgICAgICAgX0ZJTExfRU1BQ19PVEFfQllURTIoZW1hY191bF9vdGFfYnVmZmVyLCAoZGlyZWN0aW9uKSwgKHRjaCksIChvdGFfbGVuKSk7IFwKKyAgICAgICAgICAgIF9GSUxMX0VNQUNfT1RBX0JZVEUzXzQoZW1hY191bF9vdGFfYnVmZmVyLCAoc3lzdGVtX2ZuKSwgKHN1Yl9mbikpOyBcCisgICAgICAgICAgICBFTUFDX01FTV9DUFkoZW1hY191bF9vdGFfYnVmZmVyK0VNQUNfT1RBX09WRVJIRUFELCAodm9pZCopKG1hY19oZHJfcHRyKSwgKG90YV9sZW4pKTtcCisgICAgICAgICAgICBlbWFjX3VsX290YV9sZW5ndGggPSAob3RhX2xlbikgKyBFTUFDX09UQV9PVkVSSEVBRDtcCisgICAgICAgIH1cCisgICAgICAgIERITF9NQUNfTE9HX0wyX1BEVShlbWFjX3VsX290YV9idWZmZXIsIGVtYWNfdWxfb3RhX2xlbmd0aCk7XAorICAgIH1cCit9d2hpbGUoMCk7CisKKyNlbHNlCisjZGVmaW5lIEVNQUNfRExfT1RBX0RFQ0xBUkUoX3BPdGEsIF9wQ3VyLCBfYlRydW5jYXRlLCBfbGVuLCBfaXNfZGxfdGJfcmVwb3J0X25lZWRlZF9pbiwgX3BUYl9yZXBvcnRfaW4pIAorI2RlZmluZSBFTUFDX0RMX09UQV9DTEVBUl9CVUZGRVIoKSAKKyNkZWZpbmUgRklMTF9FTUFDX09UQV9FX0xDSUQoY3VyX3B0ciwgb3RhX2xlbiwgX2JUcnVuY2F0ZSwgbGNpZCkKKyNkZWZpbmUgRklMTF9FTUFDX09UQV9FX1NVQkhEUihjdXJfcHRyLCBvdGFfbGVuLCBfYlRydW5jYXRlLCBsY2lkLCBsZW4pCisjZGVmaW5lIEZJTExfRU1BQ19PVEFfTEFTVF9MQ0lEKGN1cl9wdHIsIG90YV9sZW4sIF9iVHJ1bmNhdGUsIGxjaWQsIG90YV9wdHIsIGRpcmVjdGlvbiwgdGNoLCBzeXN0ZW1fZm4sIHN1Yl9mbikKKyNkZWZpbmUgRklMTF9FTUFDX09UQV9OT19MQ0lEKG90YV9sZW4sIF9iVHJ1bmNhdGUsIG90YV9wdHIsIGRpcmVjdGlvbiwgdGNoLCBzeXN0ZW1fZm4sIHN1Yl9mbikKKyNkZWZpbmUgRklMTF9FTUFDX1VMX09UQShkaXJlY3Rpb24sIHRjaCwgbWFjX2hkcl9wdHIsIG90YV9sZW4sIHN5c3RlbV9mbiwgc3ViX2ZuKQorI2VuZGlmIC8qIF9fRUwyX0VNX01PREVfXyAqLworCisjZW5kaWYgLypFTUFDX1NUQVRTX1NUUlVDVF9IKi8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lbWFjX3N0YXRzX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lbWFjX3N0YXRzX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MzcxZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VtYWNfc3RhdHNfc3RydWN0LmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVtYWNfc3RhdHNfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgVU1PTFlBCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRGVmaW5lIEVNQUMgc3RhdGlzdGljIHN0cnVjdHVyZXMgCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA5IDExIDIwMTkgZnJhbmsuc29uZworICogW01PTFkwMDQzODk0Ml0gW1ZNT0xZXSBETUYgcGF0Y2hlcyBuZWVkIHRvIGJlIHBvcnRlZCB0byBWTU9MWSBUUlVOSworICogCQorICogCURNRiBwb3J0aW5nLgorICoKKyAqIDA3IDI0IDIwMTkgZnJhbmsuc29uZworICogW01PTFkwMDQyMDY5NF0gW01UNjI5N11bQXBvbGxvXVtNUDFdW1NRQ11bRU1dW0NoaW5hXVtTaGVuemhlbl1bRkREXVs0R01NXVtDVStOQV1bVENJRDpFTV9FTDJfMDAxXVNSQi9EUkIgbnVtYmVyIGRvZXNuJ3QgZGlzcGxheSB0aGUgdmFsdWUuCisgKiAuCisgKgorICogMDYgMDEgMjAxOCBoYW1pbHRvbi5saWFuZworICogW01PTFkwMDMzMDQ2Nl0gREwgNUNDcyB1cGdyYWRlZCBvbiBHZW45NworICogCQorICogCURMIDVDQ3MgdXBncmFkZSBtb2RpZmljYXRpb24KKyAqCisgKiAwNiAyMyAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyNTkxMTldIFtNVDY3NjNdW0VMMl0gRU1BQy9FTDJFTS9FTDJQT1cgbWFpbnRlbmFuY2UKKyAqIFtUUlVOS10gc3luYyBFTSBmcm9tIExSMTIKKyAqCisgKiAwMyAwOSAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyMjMwNjddIFtNVDYyOTNdIEVMMiBFTSBpbXBsZW1lbnRhdGlvbgorICogRUwyRU0gcmUtYXJjaC9zeW5jIHRvIExSMTIgQ0wzNjAxMTQyCisgKgorICogMDIgMjEgMjAxNyBqaWEtc2hpLmxpbgorICogW01PTFkwMDE5NDk4N10gW01UNjI5M11bVU1PTFlBL1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogZW1hYyBlbSBzdHJ1Y3QgdXBkYXRlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIEVNQUNfU1RBVFNfU1RSVUNUX0gKKyNkZWZpbmUgRU1BQ19TVEFUU19TVFJVQ1RfSAorI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisjaW5jbHVkZSAibHRlX2Fic190aW1lLmgiCisjaW5jbHVkZSAiZGhsX3RyYWNlLmgiCisjaW5jbHVkZSAiZW1fZW5sMl9wdWJsaWNfc3RydWN0LmgiCisKKy8qIFRoaXMgY29uc3RhbnQgaGFzIHRoZSBzYW1lIHZhbHVlIGFzIE1BWF9OVU1fU0NFTEwgY29uc3RhbnQgaW4gRUwxLUVNQUMgSUYuICovCisjZGVmaW5lIEVNQUNfU1RBVFNfTUFYX05VTV9TQ0VMTCA3CisvKiBUaGlzIGNvbnN0YW50IGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyBNQVhfTlVNX1NVUFBPUlRfVUxfQ0VMTFMgY29uc3RhbnQgaW4gRUwxLUVNQUMgSUYuICovCisjZGVmaW5lIEVNQUNfU1RBVFNfTUFYX05VTV9TVVBQT1JUX1VMX0NFTExTIDIKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVNIHVwZGF0ZSB1c2UKK3R5cGVkZWYgZW51bQoreworICAgIEVNX0VNQUNfRlVOQ19TVEFUVVNfQklUX0RSWCA9IDAsCisgICAgRU1fRU1BQ19GVU5DX1NUQVRVU19CSVRfUEhSID0gMSwKKyAgICBFTV9FTUFDX0ZVTkNfU1RBVFVTX0JJVF9TUFMgPSAyLAorICAgIEVNX0VNQUNfRlVOQ19TVEFUVVNfQklUX1RUSV9CVU5ETElORyA9IDMKK30gZW1fZW1hY19mdW5jX3N0YXR1c19iaXRfZTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU1fRU1BQ19DSF9NT0RFX0NMT1NFID0gMCwKKyAgICBFTV9FTUFDX0NIX01PREVfU1JCMCA9IDEsCisgICAgRU1fRU1BQ19DSF9NT0RFX09QRU4gPSAyCit9IGVtX2VtYWNfY2hfbW9kZV9lOworCisKKyNlbmRpZiAvKkVNQUNfU1RBVFNfU1RSVUNUX0gqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VwZGNwX290YS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lcGRjcF9vdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTEzOTZmCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lcGRjcF9vdGEuaApAQCAtMCwwICsxLDcyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlcGRjcF9vdGEuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWUEKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBlUERDUCBzdGF0aXN0aWNzIAorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTFRFX0VMMl9FUERDUF9PVEFfSF8KKyNkZWZpbmUgX0xURV9FTDJfRVBEQ1BfT1RBX0hfCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgZ2xvYmFsIHZhcmlhYmxlcworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2VuZGlmIC8vX0xURV9FTDJfRVBEQ1BfU1RBVFNfU1RSVUNUX0hfCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZW0vZXBkY3Bfc3RhdHNfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VwZGNwX3N0YXRzX3N0cnVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZGYxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VwZGNwX3N0YXRzX3N0cnVjdC5oCkBAIC0wLDAgKzEsMTI2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlcGRjcF9zdGF0cy5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIFVNT0xZQQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIGVQRENQIHN0YXRpc3RpY3MgCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA5IDExIDIwMTkgZnJhbmsuc29uZworICogW01PTFkwMDQzODk0Ml0gW1ZNT0xZXSBETUYgcGF0Y2hlcyBuZWVkIHRvIGJlIHBvcnRlZCB0byBWTU9MWSBUUlVOSworICogCQorICogCURNRiBwb3J0aW5nLgorICoKKyAqIDA2IDA2IDIwMTggeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogRml4IGJ1aWxkIGVycm9yIGZvciBNVDM5NjcgLSByb2xsYmFjayBFTSBzdHJ1Y3R1cmUKKyAqCisgKiAwNiAwMSAyMDE3IGktZmVuZy5jaGVuCisgKiBbTU9MWTAwMjUyODE1XSBbNjI5M10gRVBEQ1AgRU0gc3RhdGlzdGljcworICogCQorICogCVtVTU9MWUFdW1RSVU5LXVtFUERDUF0gRVBEQ1AgRU0gU3RhdGljcworICoKKyAqIDAzIDA5IDIwMTcgbmljb2xlLmhzdQorICogW01PTFkwMDIyMzA2N10gW01UNjI5M10gRUwyIEVNIGltcGxlbWVudGF0aW9uCisgKiBFTDJFTSByZS1hcmNoL3N5bmMgdG8gTFIxMiBDTDM2MDExNDIKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTFRFX0VMMl9FUERDUF9TVEFUU19TVFJVQ1RfSF8KKyNkZWZpbmUgX0xURV9FTDJfRVBEQ1BfU1RBVFNfU1RSVUNUX0hfCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBjb25zdGFudHMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBlbnVtIHR5cGVzCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIHN0YXRpc3RpY3Mgc3RydWN0dXJlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFZ6VyBNRE1JOiBFUERDUC1PVEEtTVNHICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIC8qIDFzdC1ieXRlIChESEwgdXNlZCkgKi8KKyAgICBrYWxfdWludDggdmVyc2lvbjo0OworICAgIGthbF91aW50OCB0eXBlOjM7IC8vIHBkY3AgMTAwLCBybGMgMDEwLCBtYWMgMDAxCisgICAga2FsX3VpbnQ4IHRydW5jYXRlOjE7CisKKyAgICAvKiAybmQtYnl0ZSAqLworICAgIGthbF91aW50OCBkaXJlY3Rpb246MTsgLy8gdXBzdHJlYW06IDAsIGRvd25zdHJlYW06IDEKKyAgICBrYWxfdWludDggbXNnX3R5cGU6MTsgLy8gZGF0YSBmb3IgZHJiKG51bGwgZm9yIHNyYik6IDAsIGNvbnRyb2wgZm9yIGRyYjogMQorICAgIGthbF91aW50OCBwZGNwX2hkcl9sZW46MTsgLy8gMS1ieXRlIGhlYWRlcjogMCwgMi1ieXRlIGhlYWRlcjogMQorICAgIGthbF91aW50OCByZXNlcnZlZDoxOworICAgIGthbF91aW50OCByYmlkOjQ7CisKKyAgICAvKiAzcmQtYnl0ZSAqLworICAgIGthbF91aW50OCBwZGNwX3NuX2JpdDoyOyAvLyBudWxsOiAwLCA3LWJpdDogMSwgMTItYml0OiAyLCAxNS1iaXQ6IDMKKyAgICBrYWxfdWludDggcmJfdHlwZToxOyAvLyBkcmI6IDAsIHNyYjogMQorICAgIGthbF91aW50OCBybGNfbW9kZToxOyAvLyBhbTogMCwgdW06IDEKKworICAgIC8qIHJhdyBoZWFkZXIgKi8KKyAgICBrYWxfdWludDggcGRjcF9oZHJbMl07Cit9IGVwZGNwX290YV9tc2dfdDsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgZ2xvYmFsIHZhcmlhYmxlcworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCisjZW5kaWYgLy9fTFRFX0VMMl9FUERDUF9TVEFUU19TVFJVQ1RfSF8KKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lcmxjX290YS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbS9lcmxjX290YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NTE4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VybGNfb3RhLmgKQEAgLTAsMCArMSw2OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZXJsY19vdGEuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWUEKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBFUkxDIHN0YXRpc3RpY3MgCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDAzIDA5IDIwMTcgbmljb2xlLmhzdQorICogW01PTFkwMDIyMzA2N10gW01UNjI5M10gRUwyIEVNIGltcGxlbWVudGF0aW9uCisgKiBFTDJFTSByZS1hcmNoL3N5bmMgdG8gTFIxMiBDTDM2MDExNDIKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTFRFX0VMMl9FUkxDX09UQV9IXworI2RlZmluZSBfTFRFX0VMMl9FUkxDX09UQV9IXworCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKworCisjZW5kaWYgCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VybGNfc3RhdHNfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtL2VybGNfc3RhdHNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmYjhlYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZW0vZXJsY19zdGF0c19zdHJ1Y3QuaApAQCAtMCwwICsxLDkzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlcmxjX3N0YXRzX3N0cnVjdC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIFVNT0xZQQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIEVSTEMgc3RhdGlzdGljcyAKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDkgMTEgMjAxOSBmcmFuay5zb25nCisgKiBbTU9MWTAwNDM4OTQyXSBbVk1PTFldIERNRiBwYXRjaGVzIG5lZWQgdG8gYmUgcG9ydGVkIHRvIFZNT0xZIFRSVU5LCisgKiAJCisgKiAJRE1GIHBvcnRpbmcuCisgKgorICogMDcgMzEgMjAxOSBwZXRlci55dQorICogW01PTFkwMDQyNTg1MV0gW01UNjI5N11bQXBvbGxvXVtNUDFdW1NRQ11bRU1dW0NoaW5hXVtTaGVuemhlbl1bRkREXVs0R01NXVtDVStOQV1bVENJRDpFTV9FTDJfMDAzXXRoZSBjb25maWcgb2YgYWxsIERSQiBkaXNwbGF5IEtBTF9GQUxTRS4KKyAqIEZpeCBsdGVfc2VjIEVMMiBFTSBzdHJ1Y3R1cmUgaW5jbHVkaW5nIGZvciBESEwgZGF0YWJhc2UuCisgKgorICogMDcgMjQgMjAxOSBwZXRlci55dQorICogW01PTFkwMDQyMDY5NF0gW01UNjI5N11bQXBvbGxvXVtNUDFdW1NRQ11bRU1dW0NoaW5hXVtTaGVuemhlbl1bRkREXVs0R01NXVtDVStOQV1bVENJRDpFTV9FTDJfMDAxXVNSQi9EUkIgbnVtYmVyIGRvZXNuJ3QgZGlzcGxheSB0aGUgdmFsdWUuCisgKiBSZWZpbmUgRVJMQyBFTS9JQ0QgcmVwb3J0aW5nLgorICoKKyAqIDEwIDMxIDIwMTggY2hpLXBpbi55ZWgKKyAqIFtNT0xZMDAzNDIzNjNdIFtHZW45N10gZVJMQyBkZXZlbG9wbWVudCBjaGVjay1pbgorICogbW92ZSBkZWZpbmUgUkIgbWFjcm8gdG8gZW5sMiBjZGIKKyAqCisgKiAwNSAyMiAyMDE4IHBldGVyLmNoaWFuZworICogW01PTFkwMDMyNjY5MV0gW01UNjI5N10gR0VOOTcuREVWIEVOTDIgUGF0Y2ggYmFjaworICogW0dFTjk3XUVSTEMgTGF0ZXN0IGNvZGUgcGF0Y2ggYmFjaworICoKKyAqCisgKiAwMyAwOSAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyMjMwNjddIFtNVDYyOTNdIEVMMiBFTSBpbXBsZW1lbnRhdGlvbgorICogRUwyRU0gcmUtYXJjaC9zeW5jIHRvIExSMTIgQ0wzNjAxMTQyCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0xURV9FTDJfRVJMQ19TVEFUU19TVFJVQ1RfSF8KKyNkZWZpbmUgX0xURV9FTDJfRVJMQ19TVEFUU19TVFJVQ1RfSF8KKworI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisjaW5jbHVkZSAiY29tbW9uX2RlZi5oIgorI2luY2x1ZGUgImVsMl9zYXBfY29tbW9uLmgiCisjaW5jbHVkZSAiZW1fZW5sMl9wdWJsaWNfc3RydWN0LmgiCisKKyNlbmRpZiAKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZW1hY19hcGkuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZW1hY19hcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY2YWRiCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbWFjX2FwaS5oCkBAIC0wLDAgKzEsNTk4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZW1hY19hcGkuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBVTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqICAKKyAqCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDggMDggMjAxOSBrYXRoaWUuaG8KKyAqIFtNT0xZMDA0Mjg4MDBdIFtNVDYyOTddIEVNQUMgTFRPIHdhcm5pbmcgY2xlYW4gdXAKKyAqIFNvbHZlIExUTyB3YXJuaW5nLgorICoKKyAqIDA1IDA4IDIwMTkga2F0aGllLmhvCisgKiBbTU9MWTAwNDA0MDM1XSBFTkRDIFRETSBQSElDSCBSZXZpc2lvbgorICogLgorICoKKyAqIDA1IDA2IDIwMTkgc2h1LXdlaS5obworICogW01PTFkwMDQwMjA0Ml0gW0dlbjk3XVtFTUFDXVtFTDFdW0VSTENdIEhSVCBJbXByb3ZlbW50LCBkZWZhdWx0IG9mZgorICogW0VNQUNdW0hSVF0gVFhMSVNSIHBhcnQuCisgKgorICogMDQgMzAgMjAxOSBmcmFuay5zb25nCisgKiBbTU9MWTAwNDAxOTUyXSBTeW5jIEdlbjk1IENMIDY1OTE5ODEgdG8gR2VuOTcKKyAqIAkKKyAqIAkuCisgKgorICogMTAgMjkgMjAxOCBzaHUtd2VpLmhvCisgKiBbTU9MWTAwMzYxMzk3XSBbQjE4MDYyMy00NDBdoWmlqz+n6z+haqFpRlQtpr8/qXk/oWpUU1hYRkstMjAxODA2MjMwMDAwMqFHpOLJ87ShpEqyvj80R6VkoUFWT0xURbNxPz8/Pz+hXTMvMTChXgorICogRDRVNS4KKyAqCisgKiAwOCAxNyAyMDE4IHNodS13ZWkuaG8KKyAqIFtNT0xZMDAzMzk0NDldIFtHZW45N11bRU1BQ10gR2VuZXJhbCBkZXZlbG9wbWVudCBjaGVjay1pbgorICogLk1lcmdlIHRvIFZNT0xZLiAobm9uIE1QRCkKKyAqCisgKiAwMSAxMSAyMDE4IGppYS1zaGkubGluCisgKiBbTU9MWTAwMzAxNDUxXSBbU01PIHJlbGVhc2VdWzkzLzk1XUVMMSByZWxhdGl2ZSBpbnRlcmZhY2UKKyAqIGVtYWMvZWwxIGludGVyZmFjZSByZS1hcmNoCisgKgorICogMDcgMTIgMjAxNyBqaWEtc2hpLmxpbgorICogW01PTFkwMDI2Mzc5Nl0gW0dlbjkzXSBFTDFDIGFsd2F5cyB0aWNrcyBQQ1NJIGR1cmluZyBEUlggb2ZmIHBlcmlvZCB3aGljaCBsb2NrcyBzbGVlcCBtb2RlCisgKiBhZGQgZW1hYyBhcGkgZW1hY19zbHBfY3FpX3Nyc19wcmVkaWN0X3Jlc3VsdF9yeGxpc3IKKyAqCisgKiAwNyAxMSAyMDE3IGppYS1zaGkubGluCisgKiBbTU9MWTAwMjYzNDI2XSBbQmlhbmNvXVtOMV1bU1JMVEVdW0NUIDZNIENdW0xURSBJT1RdW0ZUXVtDRF1bSFddW1RDLVNNRlQtMDcwMDVdRUUgbWQxOihNQ1VfY29yZTAudnBlMS50YzEoVlBFMSkpIFtBU1NFUlRdIGZpbGU6bWN1L3Bjb3JlL21vZGVtL2VsMi9jb21tb24vZWwyX3V0aWxpdHkuYyBsaW5lOjUwOQorICogcmVsYXggdGhlIDFtcyB0aW1pbmcgcHJvdGVjdGlvbiBmb3IgZXJ0IHNmIHByb2MKKyAqCisgKiAwNiAyMiAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyNTkxMTldIFtNVDY3NjNdW0VMMl0gRU1BQy9FTDJFTS9FTDJQT1cgbWFpbnRlbmFuY2UKKyAqIFtUUlVOS10gcG90ZW50aWFsIGJ1ZyBmaXgsIFJTSU0gRU0sIEFUJlQgRU0KKyAqCisgKiAwNiAwOSAyMDE3IGppYS1zaGkubGluCisgKiBbTU9MWTAwMjU0MTQwXSBbTVQ2MjkzXVtFTDFDXSBSZWR1Y2UgcHJvY2Vzc2luZyBpbiBSUkMgaWRsZQorICogY2hlY2sgaW4gZW1hY190eGxpc3JfbXRfY2hrX3N0YWdlMygpCisgKgorICogMDYgMDkgMjAxNyBtZi5qaGFuZworICogW01PTFkwMDI1NDE0MF0gW01UNjI5M11bRUwxQ10gUmVkdWNlIHByb2Nlc3NpbmcgaW4gUlJDIGlkbGUKKyAqIC5Qcm92aWRlIGlzIGVtYWNfdHhsaXNyX2FjdGl2ZSBmb3IgRUwxCisgKgorICogMDUgMTkgMjAxNyBqaWEtc2hpLmxpbgorICogW01PTFkwMDI0OTMwNl0gW1NFMiBJbnRlcm5hbCBUZXN0XVtNVDYyOTNdW1VNT0xZQV1bQVRFXVsyMDE3MDUxMl1bMV1bY29yZTAsdnBlMSx0YzIodnBlMSldIEFzc2VydCBmYWlsIGVtYWNfZHJ4LmMgODExIC0gKExJU1IpRUwxX0NfVFgKKyAqIDEuIGRyeCBidWcgZml4CisgKiAyLiBtaWQgaW5kIHRvIGVydAorICogMy4gZGwgd28gcGRzY2ggaW5kCisgKgorICogMDUgMTkgMjAxNyBuaWNvbGUuaHN1CisgKiBbTU9MWTAwMjUwOTI5XSBbQ29weSBDUl1bQklBTkNPXVtNVDY3NjNdW1JESVRdW1BIT05FXVtPdmVybmlnaHRdW0hRXVtNVEJGXVtMYWJdW0VyaWNzc29uXVtBU1NFUlRdIGZpbGU6bWN1L2wxY29yZS9tb2RlbS9lbDEvZWwxYy9waHMvc3JjL2VsMV9waHNfbXNnLmMgbGluZToyNDI5CisgKiBTQ2VsbCBuZXcgaW50ZXJmYWNlL2Rlc2lnbgorICoKKyAqIDA0IDE4IDIwMTcgbWYuamhhbmcKKyAqIFtNT0xZMDAyNDE5MjldIFtCSUFOQ09dW01UNjc2M11bUkRJVF1bNEdQU11bUlREXVtIRUFUXVtMVEVfMDRfMTNfMDJfUjEyX1VMNjRRVUFNXzJfVUw2NFFBTW9uQm90aENDc19UeXBlMF1Bc3NlcnQgZmFpbDogZWwxX21lYXNfY3RybC5jIDExOTE2IC0gRUwxX01QQworICogLiBBZGQgRUwxQyBjb21tYW5kIHF1ZXVlCisgKgorICogMDQgMDUgMjAxNyBqaWEtc2hpLmxpbgorICogW01PTFkwMDIzNzczMV0gW01UNjI5M11bTCtMXSBGZWF0dXJlIGRldmVsb3BtZW50CisgKiBbRU1BQ10gVXBkYXRlIEVMMVRYIEVNQUMgaW50ZXJmYWNlIChFTUFDIHBhcnQpLgorICoKKyAqIDAzIDAyIDIwMTcgamlhLXNoaS5saW4KKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIHJlbW92ZSBlbWFjX2ZvcmNlX3BoeV9jb25maWdfc2NoX2Nsb3NlCisgKgorICogMDEgMTkgMjAxNyBtZi5qaGFuZworICogW01PTFkwMDE5NDk4N10gW01UNjI5M11bVU1PTFlBL1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogU3BsaXQgZW1hYyB0eGxpc3IgcHJvY2VzcyBpbnRvIDMgc3RhZ2VzIGZvciBsb2FkIGJhbGFuY2UKKyAqCisgKiAxMiAyMSAyMDE2IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIFtTZWFtbGVzcyBNZXRhIE1vZGVdIEVNQUMgcGFydAorICogLSBwcm92aWRlIGR1bW15IEFQSSB0byBiZSBjYWxsZWQgaW4gTWV0YSBNb2RlCisgKiAtIHByb3ZpZGUgZm9yY2Ugc2NoX2Nsb3NlIEFQSSB0byBiZSBjYWxsZWQgYmVmb3JlIGxlYXZpbmcgTWV0YSBNb2RlCisgKgorICogMTAgMTggMjAxNiBqaWEtc2hpLmxpbgorICogW01PTFkwMDE5NDk4N10gW01UNjI5M11bVU1PTFlBL1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogYWRkIG9uZSBwaGljaCByZXN1bHQgdHlwZQorICoKKyAqIDEwIDA1IDIwMTYgbWYuamhhbmcKKyAqIFtNT0xZMDAyMDY0NzZdIFtNVDYyOTNdW05XU0lNXVtSZWdyZXNzaW9uXVtUQ183XzFfNF8xNl0gRmFpbGVkIGF0IHN0ZXAgNgorICogYWRkIGVtYWNfdGFfc3RhZ190YV9kaWZmX2V4Y2VlZGVkCisgKgorICogMTAgMDMgMjAxNiBuaWNvbGUuaHN1CisgKiBbTU9MWTAwMTk0OTg3XSBbTVQ2MjkzXVtVTU9MWUEvUFMgREVWXSBFTUFDIG1haW50ZW5hbmNlCisgKiAxLiBSQVIgZ3JhbnQgc2l6ZSBjaGVjayBhbmQgaGFuZGxpbmcKKyAqIDIuIGZpeCBQSFIgYXBpIGZvciByYSBncm91cCBzZWxlY3Rpb24KKyAqCisgKiAwOCAxMSAyMDE2IHl1LWNodW4uY2hlbgorICogW01PTFkwMDE3NjA3OF0gW0VMMUNdIFVNT0xZQSBjb2RlIHN5bmMKKyAqIEJhY2sgb3V0IGNoYW5nZWxpc3QgMjcxMTI1MQorICoKKyAqIDA4IDExIDIwMTYgbmljb2xlLmhzdQorICogW01PTFkwMDE5NDk4N10gW01UNjI5M11bVU1PTFlBL1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogMS4gZml4IHNpbSBhcGkgd2FybmluZworICogMi4gZml4IHNpbSBhcGkgcHJvdG90eXBlCisgKiAzLiBwcm92aWRlIHJhcl9hY3NpX3RyaWdnZXIgYXNzZXJ0IGZ1bmN0aW9uIGZvciBlbDF0eAorICoKKyAqIDA4IDEwIDIwMTYgc2hhbmctbHVuLmNoaXUKKyAqIFtNT0xZMDAxOTY1MzldIFtNVDYyOTNdW0VMMVRYXSBVcGRhdGUgY29tbWVudHMgdG8gZ2VuZXJhdGUgZG94eWdlbiBkb2N1bWVudAorICoKKyAqIDA4IDAyIDIwMTYgd2VuLWppdW5uLmxpdQorICogW01PTFkwMDE5NDI5OF0gW1VNT0xZQV0gRUwyICsgRU1BQyBDb2RlIFJldmlldworICogUmV2aXNlIEVMMS1FTUFDIEludGVyZmFjZQorICogCS0gQ1JDIEhhbmRsZXIKKyAqIAktIERMIEFzc2lnbm1lbnQKKyAqCisgKiAwOCAwMiAyMDE2IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogW0VNQUNdIHJhIGFwaSBmaXgKKyAqCisgKiAwOCAwMSAyMDE2IGplcmVteS5jaGVuCisgKiBbTU9MWTAwMTkwNjgzXSBbVU1PTFlBXVs2MjkzXSBFTDIgbWVyZ2UgYmFjayB0byBVTU9MWUEgVFJVTksgJiBQUyBERVYKKyAqIAkKKyAqIAlbRUwyXVtSRCBkb21haW5dIFN5bmMgRUwyIGludGVyZmFjZSBmcm9tIEFyaWMgQ0JyCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioKKyAqICBAZmlsZSAgIGVtYWNfYXBpLmgKKyAqICBAYnJpZWYgIEVNQUMgRXhwb3J0ZWQgQVBJcyB0byBPdGhlciBMaWJyYXJpZXMKKyAqCisgKiAgQGF1dGhvciAKKyAqICBAZGF0ZSAgIDIwMTYvMi8yMgorICoKKyAqKi8KKyAKKyNpZm5kZWYgX19FTUFDX0FQSV9IX18KKyNkZWZpbmUgX19FTUFDX0FQSV9IX18KKworI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisjaW5jbHVkZSAibHRlX3RpbWVfY29tbW9uLmgiCisjaW5jbHVkZSAiYWJzX3RpbWUuaCIKKyNpbmNsdWRlICJlbDFfZW1hY19zdHIuaCIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRUSSBFeGVjdXRpb24gUHJvY2VzcworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKKyAqIEBicmllZiAgICAgICBJbml0aWFsaXplIHRoZSBFTUFDIGNvbnRleHQgYmVmb3JlIGVhY2ggVFRJIHByb2Nlc3MKKyAqIEBub3RlICAgICAgICBHZXQgYWlyIHRpbWUgZnJvbSBnbG9iYWwgdmFyaWFibGVzIC8gcmVzZXQgRU1BQyBUVEkgcmVsYXRlZCBjb250ZXh0CisgKiBAcGFyYW0gICAgICAgcHJvdG9jb2xfaWR4CisgKiBAcmV0dXJuICAgICAgKHZvaWQpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorZW1hY190eGxpc3JfaW5pdF90dGlfcHJvYyhrYWxfdWludDMyIHByb3RvY29sX2lkeCk7CisKK3ZvaWQKK2VtYWNfdHhsaXNyX3Byb2Nfc3RhZ2UxKCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgTWFpbiBwcm9jZXNzIGZvciBFTUFDIFxuCisgKiAgICAgICAgICAgICAgRS5nLiwgU0NFTEwgLyBUQSAvIERMIEhBUlEgLyBVTCBIQVJRIC8gQlNSIC8gU1IgLyBSQSAvIERSWAorICogQG5vdGUgICAgICAgIEV4ZWN1dGlvbiBhZnRlciBhbGwgaGFuZGxlciBpbnB1dHMgYXJlIHJlYWR5CisgKiBAcGFyYW1baW5dICAgcF9zZl9pbnB1dCAgICAgIFR4IHN1YmZyYW1lIHBhcmFtZXRlciBmb3IgRU1BQywgaW5jbHVkaW5nIGluZm9ybWF0aW9uIG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZ2FwIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHN1YmZyYW1lIHR5cGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLgorICogQHJldHVybiAgICAgICh2b2lkKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK2VtYWNfdHhsaXNyX3Byb2Nfc3RhZ2UyKAorICAgIGVtYWNfZWwxdHhfdHRpX2lucHV0X3QqIHBfc2ZfaW5wdXQKKyk7CisKK3ZvaWQKK2VtYWNfdHhsaXNyX3Byb2Nfc3RhZ2UzKCk7CisKK2thbF9ib29sCitlbWFjX3R4bGlzcl9tdF9jaGtfc3RhZ2UzKCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgSW52b2tlIHRoaXMgZnVuY3Rpb24gXEAgZ19hYnNfdGltZSB0byBjaGVjayBpZiBhbnkgCisgKiAgICAgICAgICAgICAgRU1BQyBoYW5kbGVkIFRYIHJlcXVpcmVtZW50IGZvciB0eF9hYnNfdGltZSAoZ19hYnNfdGltZSArMikKKyAqIEBub3RlICAgICAgICBDYWxsZWQgYnkgRUwxVFggdG8gcXVlcnkgRU1BQyBpZiB0aGVyZSBpcyBhbnkgdHggcmVxdWlyZW1lbnQgXG4KKyAqICAgICAgICAgICAgICBPbmUgVFhMSVNSIC8gb25lIFRYIHJlcXVpcmVtZW50IGludm9rZWQgKDEtdG8tMSBtYXBwaW5nKSBcbgorICogICAgICAgICAgICAgIEVMMSBjb3VsZCBOT1QgbW9kaWZ5IHR4X2JtcCBpbiB0aGUgcG9pbnRlcgorICogQHBhcmFtICAgICAgICh2b2lkKQorICogQHJldHVybiAgICAgIGVtYWNfZWwxdHhfdHhfcmVxX3N0cnVjdCogICBQb2ludGVyIHRvIFRYIHJlcXVlc3Qgb2YgdGhpcyBUVEkgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEVNQUMgY29udGV4dCBcbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmV0dXJuZWQgRU1BQyBjb250ZXh0IHdpbGwgYmUgY2xlYXJlZCAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXEAgZW1hY190eGxpc3JfaW5pdF90dGlfcHJvYygpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworZW1hY19lbDF0eF90eF9yZXFfc3RydWN0KgorZW1hY190eGxpc3JfZ2V0X3R4X3JlcSgpOworCisjaWYgRUwxVFhfRU1BQ19FQVJMWV9FUlRfU1VQUE9SVAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKKyAqIEBicmllZiAgICAgICBUWCBwcm9jZXNzIGZvciBFTUFDIFxuCisgKiAgICAgICAgICAgICAgRS5nLiwgTVVYIERlY2lzaW9uICAuLi4KKyAqIEBwYXJhbVtpbl0gICB0eF9yZXN1bHRzICAgICAgQml0bWFwIG9mIGVtYWNfZWwxdHhfdHhfYml0bWFwX2UKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCitlbWFjX2VsMV90eF9yZXN1bHRfaGFuZGxlcihrYWxfdWludDMyIHR4X3Jlc3VsdHMpOworI2VuZGlmCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorICogQGJyaWVmICAgICAgIFBvc3QgcHJvY2VzcyBmb3IgRU1BQyBcbgorICogICAgICAgICAgICAgIEUuZy4sIE1VWCBEZWNpc2lvbiAvIENsZWFyIFVMIEhBUlEgQ29udGV4dCAvIENsZWFyIFRYIFRpbWVsaW5lIC8gLi4uCisgKiBAbm90ZSAgICAgICAgRXhlY3V0aW9uIGFmdGVyIGFsbCBoYW5kbGVyIGlucHV0cyBhcmUgcmVhZHkKKyAqIEBwYXJhbVtpbl0gICB0eF9yZXN1bHRzICAgICAgQml0bWFwIG9mIGVtYWNfZWwxdHhfdHhfYml0bWFwX2UKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCitlbWFjX3R4bGlzcl9wb3N0X3Byb2MoCisgICAga2FsX3VpbnQzMiB0eF9yZXN1bHRzICAgICAgICAgICAgICAgICAgIAorKTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKKyAqIEBicmllZiAgICAgICBFTUFDIHByb2Nlc3MgaW4gVFhISVNSIGZvciA5MyAoZS5nLiwgc2VuZCBFUlQgcG9sbGluZyBJTE0pCisgKiAgICAgICAgICAgICAgRU1BQyBwcm9jZXNzIGluIFRYTElTUiBmb3IgOTUgKGUuZy4sIHNlbmQgRVJUIHBvbGxpbmcgSUxNKQorICogQG5vdGUgICAgICAgIENhbGxlZCBvbmx5IGluIFRYSElTUiBmb3IgOTMsIGNhbGxlZCBvbmx5IGluIFRYTElTUiBmb3IgOTUKKyAqIEBwYXJhbSAgICAgICAodm9pZCkKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCitlbWFjX3R0aV9kb25lX3Byb2MoKTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRUSSBJbnB1dCBIYW5kbGVyIFJlbGF0ZWQgQVBJcworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKKyAqIEBicmllZiAgICAgICBSZXBvcnQgbi0yIG9yIG4tMSAoaS5lLiwgZ19hYnNfdGltZSAtMiBvciAtMSkgRENJIHJlc3VsdCBmb3IgREwgSEFSUSBcbgorICogICAgICAgICAgICAgIFN1cHBvcnQgb25seSAKKyAqICAgICAgICAgICAgICAtIEMtUk5USQorICogICAgICAgICAgICAgIC0gVEMtUk5USQorICogICAgICAgICAgICAgIC0gUkEtUk5USQorICogICAgICAgICAgICAgIC0gU1BTLUNSTlRJIChBY3QvUmV0eC9SZWwpCisgKiAgICAgICAgICAgICAgLgorICogQG5vdGUgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB1cGRhdGUgRU1BQyBETCBIQVJRIHN0YXR1cyBcbgorICogICAgICAgICAgICAgIERMIHVuc29saWNpdGVkIGlzIE5PVCBpbmNsdWRlZCAoRU1BQyB3aWxsIGNhbGN1bGF0ZSBETCBTUFMpIFxuCisgKiAgICAgICAgICAgICAgSW5kaWNhdGUgVEIgIm5ldyB0cmFuc21pc3Npb24iIG9yIG5vdCAoaW5zdGVhZCBvZiByYXcgTkRJIHZhbHVlKQorICogQHBhcmFtW2luXSAgIHJjdl9hYnNfdGltZSAgICBnX2Fic190aW1lIC0xIG9yIC0yCisgKiBAcGFyYW1baW5dICAgcF9wZGNjaF9kbF9pbmZvIERMIGluZm9ybWF0aW9uIGNhcnJpZWQgaW4gUERDQ0gKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCitlbWFjX3BkY2NoX2RsX2Fzc2lnbl9oYW5kbGVyKAorICAgIEFCU19USUNLX1RJTUUgcmN2X2Fic190aW1lLAorICAgIGVsMXR4X3BkY2NoX2RsX2luZm9fc3RydWN0KiBwX3BkY2NoX2RsX2luZm8KKyk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgUmVwb3J0IG4tMiBvciBuLTEgKGkuZS4sIGdfYWJzX3RpbWUgLTIgb3IgLTEpIERDSSByZXN1bHQgZm9yIFVMIEhBUlEgXG4KKyAqICAgICAgICAgICAgICBTdXBwb3J0IG9ubHkgCisgKiAgICAgICAgICAgICAgLSBDLVJOVEkKKyAqICAgICAgICAgICAgICAtIFRDLVJOVEkKKyAqICAgICAgICAgICAgICAtIFJBLVJOVEkKKyAqICAgICAgICAgICAgICAtIFNQUy1DUk5USSAoQWN0L1JldHgvUmVsKQorICogICAgICAgICAgICAgIC4KKyAqIEBub3RlICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdXBkYXRlIEVNQUMgVUwgSEFSUSBzdGF0dXMgXG4KKyAqICAgICAgICAgICAgICBVTCB1bnNvbGljaXRlZCBpcyBOT1QgaW5jbHVkZWQgKEVNQUMgd2lsbCBjYWxjdWxhdGUgVUwgU1BTKQorICogQHBhcmFtW2luXSAgIHVsX2NjX2lkeCAgICAgICBVTCBDQyBpbmRleAorICogQHBhcmFtW2luXSAgIHJjdl9hYnNfdGltZSAgICBnX2Fic190aW1lIC0xIG9yIC0yCisgKiBAcGFyYW1baW5dICAgcF9wZGNjaF91bF9pbmZvIFVMIGluZm9ybWF0aW9uIGNhcnJpZWQgaW4gUERDQ0gKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCitlbWFjX3BkY2NoX3VsX2luZm9faGFuZGxlcigKKyAgICBrYWxfdWludDggdWxfY2NfaWR4LAorICAgIEFCU19USUNLX1RJTUUgcmN2X2Fic190aW1lLAorICAgIGVsMXR4X3BkY2NoX3VsX2luZm9fc3RydWN0KiBwX3BkY2NoX3VsX2luZm8KKyk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgUmVwb3J0IG4tMiBvciBuLTEgKGkuZS4sIGdfYWJzX3RpbWUgLTIgb3IgLTEpIFBISUNIIHJlc3VsdCBmb3IgVUwgSEFSUQorICogQG5vdGUgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB1cGRhdGUgRU1BQyBVTCBIQVJRIHN0YXR1cworICogQHBhcmFtW2luXSAgIHVsX2NjX2lkeCAgICAgICBVTCBDQyBpbmRleAorICogQHBhcmFtW2luXSAgIGhhcnFfaWQgICAgICAgICBIQVJRIElECisgKiBAcGFyYW1baW5dICAgZWwxdHhfcGhpY2hfcmx0X2VudW0gICAgUEhJQ0ggcmVzdWx0CisgKiBAcmV0dXJuICAgICAgKHZvaWQpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorZW1hY19wZGNjaF9zZXRfcGhpY2hfcmVzdWx0X2hhbmRsZXIoCisgICAga2FsX3VpbnQ4IHVsX2NjX2lkeCwKKyAgICBBQlNfVElDS19USU1FIHJjdl9hYnNfdGltZSwKKyAgICBrYWxfdWludDggaGFycV9pZCwKKyAgICBlbDF0eF9waGljaF9ybHRfZW51bSBwaGljaF9yZXN1bHQKKyk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgLSBbVEJDXSBSZXBvcnQgbi0zIG9yIG4tMiAoaS5lLiwgZ19hYnNfdGltZSAtMyBvciAtMikKKyAqICAgICAgICAgICAgICAgICAgICAgIHdpdGggZWFjaCBUQiBDUkMgZGVjb2RpbmcgcmVzdWx0CisgKiAgICAgICAgICAgICAgLSBbVEJDXSBJbnZva2VkIGFmdGVyIERMIEFzc2lnbm1lbnQgSGFuZGxlclxuCisgKiAgICAgICAgICAgICAgICAgICAgICBXaXRoIGFzc3VtcHRpb24gb2YgaWdub3JhbmNlIERDSSBmb3Igc2FtZSBUQiB3aXRoaW4gNCBzdWJmcmFtZXMKKyAqICAgICAgICAgICAgICAtIFtUQkNdIERDSSB2LnMuIENSQyByZXBvcnQgaXMgMS10by0xIG1hcHBpbmcKKyAqICAgICAgICAgICAgICAtIFJlcG9ydCBvbmx5CisgKiAgICAgICAgICAgICAgLS0gQy1STlRJCisgKiAgICAgICAgICAgICAgLS0gVEMtUk5USQorICogICAgICAgICAgICAgIC0tIFNQUy1DUk5USSAoQWN0L1JldHgvQ29uZmlnKQorICogICAgICAgICAgICAgICAuCisgKiAgICAgICAgICAgICAgLgorICogQG5vdGUgICAgICAgIFRCIGluZm9ybWF0aW9uIGlzIHdpdGggYml0d2lzZSBvcGVyYXRpb24gKEJJVDAgZm9yIFRCMCA6IEJJVDEgZm9yIFRCMSkKKyAqIEBwYXJhbVtpbl0gICBwX2NyY19yZXN1bHQgICAgQ1JDIHJlc3VsdCBpbmZvcm1hdGlvbgorICogQHJldHVybiAgICAgICh2b2lkKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK2VtYWNfcGRjY2hfc2V0X2NyY19yZXN1bHRfaGFuZGxlcigKKyAgICBlbDF0eF9wZGNjaF9jcmNfcmVzdWx0X3N0cnVjdCogcF9jcmNfcmVzdWx0CispOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorICogQGJyaWVmICAgICAgIFJlcG9ydCBuLTIgb3Igbi0xIChpLmUuLCBnX2Fic190aW1lIC0yIG9yIC0xKSBQRENDSCBvcmRlciBmb3IgUkEKKyAqIEBub3RlICAgICAgICBJZiBQRENDSCBvcmRlciBpcyByZWNlaXZlZCwgY2FsbCBmdW5jdGlvbiB0byB0cmlnZ2VyIFBEQ0NIIG9yZGVyIFJBIHByb2Nlc3MgCisgKiBAcGFyYW1baW5dICAgcmN2X2Fic190aW1lICAgIGdfYWJzX3RpbWUgLTEgb3IgLTIKKyAqIEBwYXJhbVtpbl0gICB1bF9jY19pZHggICAgICAgVUwgQ0MgaW5kZXgKKyAqIEBwYXJhbVtpbl0gICByYXBpZCAgICAgICAgICAgUkEgcHJlYW1ibGUgSUQKKyAqIEBwYXJhbVtpbl0gICBtYXNrICAgICAgICAgICAgUkEgbWFzayBpbmRleAorICogQHJldHVybiAgICAgICh2b2lkKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgCitlbWFjX3JhX3BkY2NoX29yZGVyX3JjdigKKyAgICBBQlNfVElDS19USU1FIHJjdl90aW1lLCAKKyAgICBrYWxfdWludDggdWxfY2NfaWR4LCAKKyAgICBrYWxfdWludDggcmFwaWQsIAorICAgIGthbF91aW50OCBtYXNrCispOworCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBTUFMgUmVsYXRlZCBBUElzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorICogQGJyaWVmICAgICAgIEdldCBVTCBTUFMgQWN0aXZlIFN0YXRlIGluIEVNQUMgY29udGV4dAorICogQG5vdGUgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayBjdXJyZW50IFVMIFNQUyBzdGF0ZSBpbiAKKyAqICAgICAgICAgICAgICBFTUFDIGNvbnRleHQgXEAgVFhMSVNSIFxuCisgKiAgICAgICAgICAgICAgTWF5IGJlIGNhbGxlZCBpbiBkaWZmZXJlbnQgdGhyZWFkcywgbm90IFRYTElTUiBcbgorICogICAgICAgICAgICAgIENhbGxlciBzaG91bGQgdGFrZSBjYXJlIG9mIG11bHRpLXRocmVhZCBlZmZlY3RzIAorICogQHBhcmFtICAgICAgICh2b2lkKQorICogQHJldHVybiAgICAgIEtBTF9UUlVFOiAgIFVMIFNQUyBpcyBhY3RpdmUgXG4KKyAqICAgICAgICAgICAgICBLQUxfRkFMU0U6ICBVTCBTUFMgaXMgbm90IGFjdGl2ZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2thbF9ib29sCitlbWFjX3Nwc191bF9nZXRfYWN0aXZlX3N0YXRlKCk7CisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFVMIEhBUlEgUmVsYXRlZCBBUElzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorICogQGJyaWVmICAgICAgIENoZWNrIGlmIGFueSBVTCBIQVJRIGZvciBhbiBVTCBDQyBpcyBvbi1nb2luZworICogQG5vdGUgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayBQVVNDSCBVTCBIQVJRIHN0YXR1cyBcbgorICogICAgICAgICAgICAgIENhbGxlciBzaG91bGQgdGFrZSBjYXJlIG9mIG11bHRpLXRocmVhZCBlZmZlY3RzIFxuCisgKiBAcGFyYW1baW5dICAgdWxfY2NfaWR4ICAgICAgIFVMIENDIGluZGV4CisgKiBAcmV0dXJuICAgICAgS0FMX1RSVUU6ICAgICAgIG9uZSBvciBtb3JlIFVMIEhBUlEgYXJlIG9uLWdvaW5nIFxuCisgKiAgICAgICAgICAgICAgS0FMX0ZBTFNFOiAgICAgIG5vIFVMIEhBUlEgaXMgb24tZ29pbmcgCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwora2FsX2Jvb2wKK2VtYWNfdWxfaGFycV9pc19hbnlfb25fZ29pbmcoa2FsX3VpbnQ4IHVsX2NjX2lkeCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgUHJlZGljdCBpZiB0aGUgZ3JhbnQgaXMgYXBwbGllZCBmb3IgVFggYmFzZWQgb24gCisgKiAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgVUwgSEFSUSB2aWV3IChCZXN0IEVmZm9ydCkKKyAqIEBub3RlICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJlZGljdCBpZiB0aGUgZ3JhbnQgY2FuIGJlIGFwcGxpZWQgZm9yIFRYIAorICogICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSBjdXJyZW50IEVNQUMgVUwgSEFSUSB2aWV3IChCZXN0IEVmZm9ydCkgXG4KKyAqICAgICAgICAgICAgICBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBvZiBtdWx0aS10aHJlYWQgZWZmZWN0cyBcbgorICogICAgICAgICAgICAgIE1heSBiZSBjYWxsZWQgaW4gVFhMSVNSIGFuZCBSWExJU1IsCisgKiAgICAgICAgICAgICAgRUwxIHNob3VsZCBndWFyYW50ZWVzIG5vIHNpbXVsdGFuZW91cyBleGVjdXRpb24gKG5vIGxvY2sgbmVlZGVkKSBmb3IKKyAqICAgICAgICAgICAgICB0aGUgc2FtZSB0eF9hYnNfdGltZQorICogQHBhcmFtW2luXSAgIHVsX2NjX2lkeCAgICAgICBVTCBDQyBpbmRleAorICogQHBhcmFtW2luXSAgIHBfcHJlZGljdF9yZXEgICBHcmFudCB0byBiZSBwcmVkaWN0ZWQKKyAqIEByZXR1cm4gICAgICBLQUxfVFJVRTogICAgICAgZ3JhbnQgaXMgcHJlZGljdGVkIGFzIGFwcGxpZWQgZm9yIFRYIGluIHRoZSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBFTUFDIFVMIEhBUlEgdmlldyBcbgorICogICAgICAgICAgICAgIEtBTF9GQUxTRTogICAgICBncmFudCBpcyBwcmVkaWN0ZWQgYXMgTk9UIGFwcGxpZWQgZm9yIFRYIGluIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IEVNQUMgVUwgSEFSUSB2aWV3CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwora2FsX2Jvb2wKK2VtYWNfdWxfaGFycV9wcmVkaWN0X2dyYW50X2FwcGx5KAorICAgIGthbF91aW50OCB1bF9jY19pZHgsCisgICAgZWwxdHhfZ3JhbnRfYXBwbHlfcHJlZGljdF9yZXFfc3RydWN0KiBwX3ByZWRpY3RfcmVxCispOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorICogQGJyaWVmICAgICAgIGVtYWNfZWwxX3R4dGltZWxpbmVfZXh0ZW5zaW9uX3Qgc2hvdWxkIGJlIGRlZmluZWQgYnkgRUwxIFxuCisgKiAgICAgICAgICAgICAgUmV0dXJuIHRoZSBFTDEgZXh0ZW5zaW9uIG1lbW9yeSAoZS5nLiwgZm9yIGltcGxlbWVudGluZyBDUUkgb25seSkKKyAqIEBub3RlICAgICAgICBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBvZiBtdWx0aS10aHJlYWQgZWZmZWN0cyBcbgorICogICAgICAgICAgICAgIEVMMSBleHRlbnNpb24gd2lsbCBiZSBjbGVhcmVkIHdoZW4gVFggdGltZWxpbmUgZW50cnkgaXMgY2xlYXJlZAorICogICAgICAgICAgICAgIChcQCBFTUFDIFRYTElTUiBwb3N0IHByb2Nlc3MpIAorICogQHBhcmFtW2luXSAgIHVsX2NjX2lkeCAgICAgICBVTCBDQyBpbmRleAorICogQHBhcmFtW2luXSAgIHR4X2Fic190aW1lICAgICBUaGUgdGltZSB0byByZWZlciB0byB0aGUgdGltZWxpbmUgZW5ydHkKKyAqIEByZXR1cm4gICAgICBTdGFydCBhZGRyZXNzIG9mIEVMMSBleHRlbnNpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitlbWFjX2VsMV90eHRpbWVsaW5lX2V4dGVuc2lvbl90KgorZW1hY191bF9oYXJxX2dldF90aW1lbGluZV9lbDFfZXh0ZW5zaW9uKAorICAgIGthbF91aW50OCB1bF9jY19pZHgsCisgICAgQUJTX1RJQ0tfVElNRSB0eF9hYnNfdGltZQorKTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKKyAqIEBicmllZiAgICAgICBUdXJuIG9uL29mZiBFTUFDJ3MgRDRVNSBVTDY0UUFNIHdvcmthcm91bmQgZmVhdHVyZQorICogQG5vdGUgICAgICAgIENhbGwgYWZ0ZXIgdHRpIGluaXQgYW5kIGJlZm9yZSBQRENDSCBwcm9jZWR1cmUgIFxuCisgKiAgICAgICAgICAgICAgQ2FsbGVyIHNob3VsZCB0YWtlIGNhcmUgb2YgbXVsdGktdGhyZWFkIGVmZmVjdHMKKyAqIEBwYXJhbVtpbl0gICBpc19mZWF0dXJlX29uICAgICAgIG9uL29mZgorICogQHJldHVybiAgICAgICh2b2lkKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK2VtYWNfdWxfaGFycV9ENFU1X0NoZWNrX1VMNjRRQU1fZmVhdHVyZV9jdHJsKAorICAgIGthbF9ib29sIGlzX2ZlYXR1cmVfb24KKyk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgTm90aWZ5IEVNQUMgY29uZmlnIG9mIHRkbSBwYXR0ZXJuIGNoYW5nZQorICogQG5vdGUgICAgICAgIENhbGwgYWZ0ZXIgdHRpIGluaXQgKGVtYWNfdHhsaXNyX2luaXRfdHRpX3Byb2MpLCBhbmQgYmVmb3JlIG90aGVyIFRUSSBmdW5jdGlvbiBjYWxsCisgKiAgICAgICAgICAgICAgQ2FsbGVyIHNob3VsZCB0YWtlIGNhcmUgb2YgbXVsdGktdGhyZWFkIGVmZmVjdHMKKyAqIEBwYXJhbVtpbl0gICBpc190ZG1fb24gICBvbi9vZmYKKyAqIEBwYXJhbVtpbl0gICBzdWJmcmFtZV9iaXRtYXAgKGJpdCBuIHJlcHJlc2VudHMgc3ViZnJhbWUgbiBpbiBvbmUgZnJhbWUsIHZhbHVlIDEnYiBtZWFucyBpdCdzIFRYIHN1YmZyYW1lO290aGVyd2lzZSAwLgorICogQHJldHVybiAgICAgICh2b2lkKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAjaWZkZWYgX19FTkRDX18KK3ZvaWQgCitlbWFjX3RkbV9wYXR0ZXJuX2NvbmZpZ19jaGFuZ2VfaGFuZGxlcigKKyAgICBrYWxfYm9vbCBpc190ZG1fb24sCisgICAga2FsX3VpbnQxNiBzdWJmcmFtZV9iaXRtYXAKKyk7CisjZW5kaWYKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIERSWCBSZWxhdGVkIEFQSXMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgV2hlbiBFTDFUWCBoYXMgYSBwZXJpb2RpYyBDUUkgdHJhbnNtaXNzaW9uIG9uIFBVQ0NILCAKKyAqICAgICAgICAgICAgICBFTDFUWCBuZWVkcyB0byAKKyAqICAgICAgICAgICAgICBjYWxsIHRoaXMgZnVuY3Rpb24gbm8gbGF0ZXIgdGhhbiA8Yj5jcWlfdHhfdGltZSAtIDU8L2I+CisgKiAgICAgICAgICAgICAgKEVMMVRYIGRvZXMgTk9UIHN1cHBvcnQgbm93KS4gCisgKiAgICAgICAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IEVNQUMgbmVlZHMgdG8gY2FsY3VsYXRlIHRoZSBhZG1pc3Npb24gZm9yCisgKiAgICAgICAgICAgICAgdGhpcyBDUUkgVFgKKyAqIEBub3RlICAgICAgICBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBvZiBtdWx0aS10aHJlYWQgZWZmZWN0cyBcbgorICogICAgICAgICAgICAgIEN1cnJlbnRseSwgRUwxVFggbmVlZCBub3QgY2FsbCB0aGlzIEFQSSBzaW5jZSBFTUFDIHdpbGwgCisgKiAgICAgICAgICAgICAgY2FsY3VsYXRlIHRoZSBhZG1pc3Npb24gZm9yIENRSSBUWCBmb3IgZXZlcnkgVFRJIFxuCisgKiAgICAgICAgICAgICAgV2hlbiBFTDFUWCBjYW4gc3VwcG9ydCB0aGUgY2FsbCBvZiB0aGlzIGZ1bmN0aW9uIG5vIGxhdGVyCisgKiAgICAgICAgICAgICAgdGhhbiA8Yj5jcWlfdHhfdGltZSAtNTwvYj4sIEVNQUMgd2lsbCBvbmx5IGNhbGN1bGF0ZSB0aGUgYWRtaXNzaW9uICAKKyAqICAgICAgICAgICAgICBmb3IgQ1FJIFRYIGluIDxiPmNxaV90eF90aW1lPC9iPiB0byBzYXZlIHRoZSBNSVBTCisgKiBAcGFyYW1baW5dICAgY3FpX3R4X3RpbWUgICAgIENRSSBUWCB0aW1lCisgKiBAcmV0dXJuICAgICAgKHZvaWQpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBlbWFjX2RyeF9zZXRfY3FpX3R4X3RpbWUoQUJTX1RJQ0tfVElNRSBjcWlfdHhfdGltZSk7IAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorICogQGJyaWVmICAgICAgIFdoZW4gRUwxVFggaGFzIGEgdHlwZTAgU1JTIHRyYW5zbWlzc2lvbiwgRUwxVFggbmVlZHMgdG8KKyAqICAgICAgICAgICAgICBjYWxsIHRoaXMgZnVuY3Rpb24gbm8gbGF0ZXIgdGhhbiA8Yj50eXBlMF9zcnNfdHhfdGltZSAtIDU8L2I+LiAgCisgKiAgICAgICAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IEVNQUMgbmVlZHMgdG8gY2FsY3VsYXRlIHRoZSBhZG1pc3Npb24gZm9yIHRoaXMgU1JTIFRYCisgKiBAbm90ZSAgICAgICAgQ2FsbGVyIHNob3VsZCB0YWtlIGNhcmUgb2YgbXVsdGktdGhyZWFkIGVmZmVjdHMgXG4KKyAqICAgICAgICAgICAgICBDdXJyZW50bHksIEVMMVRYIG5lZWQgbm90IGNhbGwgdGhpcyBBUEkgc2luY2UgRU1BQyB3aWxsIAorICogICAgICAgICAgICAgIGNhbGN1bGF0ZSB0aGUgYWRtaXNzaW9uIGZvciB0eXBlMCBTUlMgVFggZm9yIGV2ZXJ5IFRUSSBcbgorICogICAgICAgICAgICAgIFdoZW4gRUwxVFggY2FuIHN1cHBvcnQgdGhlIGNhbGwgb2YgdGhpcyBmdW5jdGlvbiBubyBsYXRlcgorICogICAgICAgICAgICAgIHRoYW4gPGI+dHlwZTBfc3JzX3R4X3RpbWUgLTU8L2I+LCBFTUFDIHdpbGwgb25seSBjYWxjdWxhdGUgdGhlIGFkbWlzc2lvbiAgCisgKiAgICAgICAgICAgICAgZm9yIHR5cGUwIFNSUyBUWCBpbiA8Yj50eXBlMF9zcnNfdHhfdGltZTwvYj4gdG8gc2F2ZSB0aGUgTUlQUworICogQHBhcmFtW2luXSAgIHR5cGUwX3Nyc190eF90aW1lICAgdHlwZTAgU1JTIFRYIHRpbWUKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIGVtYWNfZHJ4X3NldF90eXBlMF9zcnNfdHhfdGltZShBQlNfVElDS19USU1FIHR5cGUwX3Nyc190eF90aW1lKTsgCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgRU1BQyB3aWxsIHJldHVybiB0aGUgVFggYWRtaXNzaW9uIG9mIGNxaSBhbmQgdHlwZTAgc3JzCisgKiAgICAgICAgICAgICAgZm9yIHR4X2Fic190aW1lCisgKiBAbm90ZSAgICAgICAgZW1hY19kcnhfc2V0X2NxaV90eF90aW1lIG9yIGVtYWNfZHJ4X3NldF90eXBlMF9zcnNfdHhfdGltZSBzaG91bGQgYmUgY2FsbGVkCisgKiAgICAgICAgICAgICAgYmVmb3JlIGVtYWNfZHJ4X2NxaV9zcnNfYWRtaW4gaXMgY2FsbGVkIFxuCisgKiAgICAgICAgICAgICAgQ2FsbGVyIHNob3VsZCB0YWtlIGNhcmUgb2YgbXVsdGktdGhyZWFkIGVmZmVjdHMgXG4KKyAqICAgICAgICAgICAgICBUaGUgdGltaW5nIGZvciBjYWxsaW5nIHRoaXMgQVBJIGlzIGV4cGVjdGVkIHRvIGJlIGFmdGVyIHRoZSBFTUFDIFRUSQorICogICAgICAgICAgICAgIHByb2Nlc3Mgb2YgPGI+dHhfYWJzX3RpbWUgLTI8L2I+CisgKiBAcGFyYW1baW5dICAgdHhfYWJzX3RpbWUgICAgICAgICAgICAgcGVyaW9kaWMgQ1FJIGFuZCB0eXBlMCBTUlMgdGltZQorICogQHBhcmFtW291dF0gIHBfY3FpX3Nyc19hZG1pbl9pbmZvICAgIGFkbWlzc2lvbiBpbmZvcm1hdGlvbiBvZiBwZXJpb2RpYyBDUUkgYW5kIHR5cGUwIFNSUworICogQHJldHVybiAgICAgICh2b2lkKQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgZW1hY19kcnhfY3FpX3Nyc19hZG1pbihBQlNfVElDS19USU1FIHR4X2Fic190aW1lLCAKKyAgIGVtYWNfZWwxdHhfZHJ4X2NxaV9zcnNfYWRtaW5faW5mb19zdHJ1Y3QgKiBwX2NxaV9zcnNfYWRtaW5faW5mbyk7IAorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAYnJpZWYgICAgICAgREwgd2l0aG91dCBQRFNDSCBvY2N1cnMKKyAqIEBub3RlICAgICAgICB3aGVuIERMIHdpdGhvdXQgUERTQ0ggb2NjdXJzLCBjYWxsIHRoaXMgYXBpCisgKiBAcGFyYW1baW5dICAgcmN2X2Fic190aW1lICAgICAgICAgICAgIHRoZSByY3ZfYWJzX3RpbWUgZm9yIHRoaXMgREwKKyAqIEByZXR1cm4gICAgICAodm9pZCkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIGVtYWNfZHJ4X2RsX3dvX3Bkc2NoX2hhbmRsZXIoQUJTX1RJQ0tfVElNRSByY3ZfYWJzX3RpbWUpOworCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNMRUVQIFJlbGF0ZWQgQVBJcworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwora2FsX2Jvb2wgZW1hY19zbHBfaXNfcHJldjFfZGNpX2luZm9fcmVxdWlyZWQodm9pZCk7CitrYWxfYm9vbCBlbWFjX3NscF9jcWlfc3JzX3ByZWRpY3RfcmVzdWx0X3J4bGlzcihBQlNfVElDS19USU1FIHR4X2Fic190aW1lKTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFJBIFJlbGF0ZWQgQVBJcworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwora2FsX2Jvb2wgZW1hY19yYV9pc19yYXJfZ3JhbnRfdmFsaWQoZWwxdHhfcGRjY2hfdWxfaW5mb19zdHJ1Y3QqIHBfZ3JhbnQpOwordm9pZCBlbWFjX3JhX3NldF9tYXhfdHhwb3dlcl9yZWFjaGVkKCk7Cit2b2lkIGVtYWNfcmFfcmFyX2Fjc2lfdHJpZ2dlcl9mYWlsKCk7Cit2b2lkIGVtYWNfcmFfdGNybnRpX2Fja19hZGRfZmFpbCgpOwordm9pZCBlbWFjX3JhX3NldF9sYXN0X3ByYWNoX3R4X3Bvd2VyKGthbF91aW50OCBwcmFjaF90eF9wb3dlcik7CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBQSFIgUmVsYXRlZCBBUElzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitrYWxfYm9vbCBlbWFjX2VsMV9waHJfcmVzX2hhbmRsZXIoZW1hY19lbDF0eF9waHJfcmVzX3N0cnVjdCBwaHJfY29udGVudCk7CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBUQSBSZWxhdGVkIEFQSXMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkIGVtYWNfdGFfc3RhZ190YV9kaWZmX2V4Y2VlZGVkKGthbF91aW50MzIgc3RhZ19pZCk7CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBTQ0VMTCBSZWxhdGVkIEFQSXMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjaWYgZGVmaW5lZChfX01EOTNfXykKKyAgICAvL2p1c3QgZm9yIGZpeCBidWlsZCBmYWlsLCBub3QgZmluYWwgc29sdXRpb24KKyAgICB2b2lkIGVtYWNfc2NlbGxfZWwxY19jbmYoKTsKKyNlbGlmKENVUl9HRU4+PU1EX0dFTjk1KQorICAgIHZvaWQgZW1hY19zY2VsbF9lbDFjX2NuZihrYWxfdWludDggY2NfY25mX2JtcCk7CisjZW5kaWYgCit2b2lkIGVtYWNfc2NlbGxfcmVsKGthbF91aW50MzIgY2NfaWR4KTsKKwora2FsX2Jvb2wgZW1hY190eGxpc3JfYWN0aXZlKEFCU19USUNLX1RJTUUgY3VyX2Fic190aW1lKTsKK2thbF9ib29sIGVtYWNfdHhsaXNyX3R4X2NoZWNrc3VtX2Vycm9yX2J5cGFzc19jaGVjayhBQlNfVElDS19USU1FIHR4X2Fic190aW1lKTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIE1FVEFfTU9ERSBSZWxhdGVkIEFQSXMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit2b2lkIGVtYWNfZHVtbXlfdHhsaXNyX2luaXRfdHRpX3Byb2Moa2FsX3VpbnQzMiBwcm90b2NvbF9pZHgpOwordm9pZCBlbWFjX2R1bW15X3R4bGlzcl9wb3N0X3Byb2Moa2FsX3VpbnQzMiB0eF9yZXN1bHRzKTsKK3ZvaWQgZW1hY19kdW1teV90eGxpc3JfcHJvYyhlbWFjX2VsMXR4X3R0aV9pbnB1dF90KiBwX3NmX2lucHV0KTsKK3ZvaWQgZW1hY19kdW1teV90dGlfZG9uZV9wcm9jKCk7Cit2b2lkIGVtYWNfZHVtbXlfdHhsaXNyX3Byb2Nfc3RhZ2UxKCk7Cit2b2lkIGVtYWNfZHVtbXlfdHhsaXNyX3Byb2Nfc3RhZ2UzKCk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VtYWNtY2hfcnhsaXNyX2ludGVyZmFjZS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbWFjbWNoX3J4bGlzcl9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjQyYTNjCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lbWFjbWNoX3J4bGlzcl9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDE3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVtYWNtY2hfcnhsaXNyX2ludGVyZmFjZS5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIFVNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRGVjbGFyZSB0aGUgc3RydWN0dXJlcy9lbnVtL2Z1bmN0aW9ucyhhcGkpL2dsb2JhbCB2YXJpYWJsZXMgdGhhdCBhcmUgICAKKyAqICAgc2hhcmVkIHdpdGggb3IgY2FsbGVkIGJ5IFJYIExJU1IuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwMyAzMSAyMDE3IGVkZGllLndhbmcKKyAqIFtNT0xZMDAyMzY0MjFdIFtNVDYyOTNdW1VNT0xZQV1bVFJVTktdCisgKiBbRU1BQ01DSF1bTCtMXSBBZGQgcGlkeCBmb3IgUlhMSVNSIHF1ZXJ5IG5leHQgbWNoIGludGVyZmFjZQorICoKKyAqIDEyIDEyIDIwMTYgZWRkaWUud2FuZworICogW01PTFkwMDIxMDY1MF0gW01UNjI5M11bVU1PTFlBIFRSVU5LXSBFTUFDIG1haW50ZW5hbmNlCisgKiBbRU1VWF1bRU1BQ01DSF0gSW50cm9kdWNlIGRlYnVnIG1vZGUKKyAqCisgKiAwOSAyMyAyMDE2IGVkZGllLndhbmcKKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIFN5bmMgUFMuREVWIHRvIFRSVU5LIHVwIHRvIENMMjg2ODg3MworICoKKyAqIDA5IDIwIDIwMTYgZWRkaWUud2FuZworICogW01PTFkwMDE5NzE3N10gQ29kZSBtYWludGVuYW5jZSBvbiBVTU9MWUEuUFMuREVWCisgKiBFTVVYIGFuZCBFTUFDTUNIIGNvZGUvdHJhY2UgbWFpbnRlbmFuY2UKKyAqCisgKiAwNyAyNyAyMDE2IGplcmVteS5jaGVuCisgKiBbTU9MWTAwMTkwNjgzXSBbVU1PTFlBXVs2MjkzXSBFTDIgbWVyZ2UgYmFjayB0byBVTU9MWUEgVFJVTksgJiBQUyBERVYKKyAqIFtFTDJdW1JEIGRvbWFpbl0gU3luYyBsYXRlc3QgRUwyIGZyb20gTFRFIGRvbWFpbgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiAgQGZpbGUgICBlbWFjbWNoX3J4bGlzcl9pbnRlcmZhY2UuaAorICogIEBicmllZiAgRGVjbGFyZSB0aGUgc3RydWN0dXJlcy9lbnVtL2Z1bmN0aW9ucyhhcGkpL2dsb2JhbCB2YXJpYWJsZXMgdGhhdCBhcmUgICAKKyAqICAgICAgICAgIHNoYXJlZCB3aXRoIG9yIGNhbGxlZCBieSBSWCBMSVNSCisgKiAgQGF1dGhvciBtdGswNDEyMAorICogIEBkYXRlICAgMjAxNi8yLzIyCisgKgorICoqLworI2lmbmRlZiBFTUFDTUNIX1JYTElTUl9JTlRFUkZBQ0VfSAorI2RlZmluZSBFTUFDTUNIX1JYTElTUl9JTlRFUkZBQ0VfSAorCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKworI2luY2x1ZGUgImVsMV9lbnVtLmgiCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBERUZJTklUSU9OCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBDb25maWd1cmFibGUgKi8KKworLyogVXNlci1kZWZpbmVkICovCisKKy8qIENvbnN0YW50ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFTlVNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTVFJVQ1RVUkUKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTVFJVQ1RVUkUKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTdHJ1Y3R1cmUgTGV2ZWwgMyAKKyAqLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFN0cnVjdHVyZSBMZXZlbCAyCisgKi0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTdHJ1Y3R1cmUgTGV2ZWwgMQorICotLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3R7CisKKyAgICBrYWxfdWludDMyICB0aWQ7CisgICAga2FsX2Jvb2wgICAgYl92YWxpZDsKKworICAgIGthbF91aW50OCAgIHN5bmNhcmVhX2lkOworICAgIGthbF91aW50OCAgIGFyZWFfaWQ7IC8vMC0yNTUKKyAgICBrYWxfdWludDggICBwbWNoX2lkOyAvL3BtY2hfaWVfaWR4CisjaWYgMCAgICAKKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKy8qIHVuZGVyIGNvbnN0cnVjdGlvbiAhKi8KKyNlbmRpZgorICAgIGthbF91aW50OCAgIG5vbl9tYnNmbl9yZWdpb25fbGVuOworCisgICAga2FsX2Jvb2wgICAgaXNfbWNoX3JlbGlhYmxlOyAvLyBUcnVlIHdoZW4gTUNDSCwgTVNJLCBVRS1pbnRlcmVzdGVkIE1UQ0ggaW4gTVNJCisKKyAgICBrYWxfYm9vbCAgICBpc19zaWduYWxfbWNzOyAKKyAgICBrYWxfYm9vbCAgICBpc19oaWdoZXJfb3JkZXJfbWNzOyAvLyBGQUxTRSBpZiBzaWduYWxNQ1MKKyAgICBrYWxfdWludDggICBtY3M7CisgICAgCisgICAgZWwxX2VtYm1zX2dlbWluaV9wcmlvcml0eV9lbnVtICBnZW1pbmlfcHJpb3JpdHk7CisKKyAgICBrYWxfdWludDMyICBzZl9ubzsKKyAgICBrYWxfdWludDY0ICBhYnNfdGltZTsKKworfWVtYWNtY2hfcnhsaXNyX3NjaGVkX21jaF90OworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV4dGVybiBnbG9iYWwgdmFyaWFibGUgZGVjbGFyYXRpb25zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBwdWJsaWMgbWV0aG9kcyBwcm90b3R5cGUgZm9yIFJYIExJU1IKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKK3ZvaWQKK2VtYWNtY2hfcnhsaXNyX3F1ZXJ5X25leHRfc2NoZWRfbWNoKGthbF91aW50NjQgICAgICAgICAgICAgICAgICBfYWJzX3RpbWUsICAgIC8vSU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBfc3luY2FyZWFfaWQsIC8vSU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWNtY2hfcnhsaXNyX3NjaGVkX21jaF90KiBfbmV4dF9zY2hlZCwgIC8vT1VUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgX3BpZHgpOyAgICAgICAvL0lOCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VwZGNwX2VudW0uaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXBkY3BfZW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOGQ4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VwZGNwX2VudW0uaApAQCAtMCwwICsxLDMyMSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVwZGNwX2VudW0uaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICogICAKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAxMSAyNSAyMDE5IGppYS1zaGkubGluCisgKiBbTU9MWTAwNDYwODI5XSBbTVQ2ODg1XVtQZXRydXNdW01QMV1bU1FDXVtDVF1bTlNJT1RdW0hRXVtLU11bTjc4XVtTQV1bQ1RDX0RQXzYuMi4zXVtUQy1NRl9OUl9EVC0wMjAwM11TQSBVTDI1NlFBTSBUcHV0IG5vdCBhcyBleHBlY3RlZAorICogMS4gbmV3IHNpdF91cGRhdGUgbXNnIGZyb20gbmwxCisgKiAyLiBzaXQgdXBkYXRlIHByb2ZpbGUKKyAqCisgKiAxMCAxNCAyMDE5IHlpdGluZy5jaGVuZworICogW01PTFkwMDQ0Mjg0Nl0gW0dlbjk3XSBNb2RlbbS8r+Cr3cnzZmVhdHVyZSAtIE5TQSBwYXJ0IChpbXBsZW1lbnRhdGlvbikKKyAqIC4KKyAqCisgKiAwNCAyNSAyMDE5IGtlbi5saQorICogW01PTFkwMDM4MzcxMV0gW01UNjI5N11bQXBvbGxvXVtQcmVTUUNdW01QMC41XVtOVklPVF1bTm9raWFdW091bHVdWzRHXTogQXNzZXJ0IEZhaWw6IGRwY29wcm9faGlzci5jIDcxMyAtIChMSVNSKW1tbDJfZXhjZXBfbGlzcgorICogCQorICogCUVQRENQIERMIE9PQiBhbmQgSEZOIGRlc3luYyBoYW5kbGluZworICoKKyAqIDA0IDIyIDIwMTkga2VuLmxpCisgKiBbTU9MWTAwMzgzNzExXSBbTVQ2Mjk3XVtBcG9sbG9dW1ByZVNRQ11bTVAwLjVdW05WSU9UXVtOb2tpYV1bT3VsdV1bNEddOiBBc3NlcnQgRmFpbDogZHBjb3Byb19oaXNyLmMgNzEzIC0gKExJU1IpbW1sMl9leGNlcF9saXNyCisgKiAJCisgKiAJRVBEQ1AgREwgT09CIGFuZCBIRk4gZGVzeW5jIGhhbmRsaW5nCisgKgorICogMDggMTcgMjAxOCB5ay5saXUKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBtZXJnZSBFTU9MWSBDTHMgdG8gVk1PTFkKKyAqCisgKiAwNyAwNSAyMDE4IGhlYWQuaHN1CisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogcmVzdHJ1Y3R1cmU6CisgKiAxLmZpeCBzb21lIHdhcm5pbmcKKyAqIDIucmVtb3ZlIGxlZ2FjeSBmaWxlCisgKiAzLnJlbW92ZSBzb21lIHBoYXNlLW91dCBjb250ZXh0CisgKiA0LnJlbmFtZSBpbnRlcm5hbCB0ZXJtIGZyb20gZXBkY3AgdG8gZW5wZGNwCisgKiA1LmFkZCB0cmFjZQorICogCisgKiBbUHJvdG9jb2wgYnVpbGQgdGFnXQorICogW0lzIENMIHNlbGYgdGVzdGFibGU6IFlFU10KKyAqIFtHcm91cCBDTCBsaXN0OiBOT10KKyAqCisgKiAwNSAxOCAyMDE4IGhlYWQuaHN1CisgKiBbTU9MWTAwMzI2NjkxXSBbTVQ2Mjk3XSBHRU45Ny5ERVYgRU5MMiBQYXRjaCBiYWNrCisgKiAJcG9ydCBsYXRlc3QgaW50ZXJmYWNlIGFuZCBjb2RlIG9uIEdlbjk3LkRFViAoUERDUCBVTCBkdW1teSkKKyAqCisgKiAwNyAxMyAyMDE3IHN0ZXZlLmthbworICogW01PTFkwMDI2NDAwNF0gWzYyOTNdIEVQRENQIFItU0lNIGNvZGUgY2hhbmdlcyBhbmQgVVQgd2l0aCBidWdmaXhlcworICogCQorICogCVtVTU9MWUFdW1RSVU5LXSBFUERDUCBjaGFuZ2VzIGZvciBMK0wsIFItU0lNLCBVVCwgYW5kIGJ1Z2ZpeGVzLgorICoKKyAqIDA1IDA0IDIwMTcgc3RldmUua2FvCisgKiBbTU9MWTAwMjQ2ODEwXSBbQklBTkNPXVtNVDY3NjNdW1JESVRdW0ZUXVtDTUNDXVtCSl1bVERMIENhc2VdWzEuMy4xXVtBU1NFUlRdIGZpbGU6bWN1L3Bjb3JlL21vZGVtL2VsMi9lbDIvZXBkY3Avc3JjL2VwZGNwX2RsLmMgbGluZTo0NjkyCisgKiBbVU1PTFlBXVtUUlVOS11bRVBEQ1BdIEhhbmRsaW5nIGZsYWcgViBpbiBMSElGIG1vZGUgaGFuZGxlcnMsIGFuZCBtb2RpZnkgbG9ncy4KKyAqCisgKiAwNCAwNyAyMDE3IHN0ZXZlLmthbworICogW01PTFkwMDIzMDA2Ml0gW1VNT0xZQV0gTS1QUyByZWxhdGVkIGludGVyZmFjZSBjaGFuZ2VzIGZvciBVUENNLCBSQVRETSwgYW5kIEVQRENQCisgKiAJCisgKiAJW1VNT0xZQV1bVFJVTktdCisgKiAJCisgKiAJW1VQQ01dW00tUFNdIENvZGUgY2hhbmdlcworICogCTEuIER1cGxpY2F0aW5nIFVQQ00gY29udGV4dHMsCisgKiAJMi4gVXNlIHByb3RvY29sX2lkeCBpbiBVTC9ETCBjYWxsYmFjay9JTE0gaW50ZXJmYWNlcywKKyAqIAkzLiBDaGVjayBwcm90b2NvbF9pZHggaW4gTEhJRiBQSVQgZW50cmllcywKKyAqIAk0LiBGaXggdGVzdCBtb2RlIFVMIGRhdGEgcHJvY2Vzc2luZyBmbG93LAorICogCTUuIEFsbG93aW5nIHRlc3QgbW9kZSBvbiBwcm90b2NvbCAyLzMvNCwKKyAqIAk2LiBXcmFwIGludGVyZmFjZXMgd2l0aCBSQVRETSB3aXRoIF9fTVVMVElQTEVfUFNfXywKKyAqIAkKKyAqIAlbRVBEQ1BdW0wrTF0gQ29kZSBjaGFuZ2VzCisgKiAJCisgKiAJW1JBVERNXVtMK0xdIENvZGUgY2hhbmdlcworICoKKyAqIDAyIDIxIDIwMTcgc3RldmUua2FvCisgKiBbTU9MWTAwMjMwOTk4XSBbNjI5M11bRUwyXVtFUERDUF0gU2ltcGxpZmllZCBETCBtb2RlIHN3aXRjaGluZy4KKyAqIFtVTU9MWUFdW1RSVU5LXVtFUERDUF0gU2ltcGxpZmllZCBETCBtb2RlIHN3aXRjaCBmb3IgTkVUSUYgYmluZGluZy4KKyAqCisgKiAxMSAwMSAyMDE2IHN0ZXZlLmthbworICogW01PTFkwMDE5NTU2M10gWzYyOTNdW0VMMl1bVVBDTV1bUkFURE1dW0VQRENQXSBJbml0aWFsIGZlYXR1cmUgaW50ZWdyYXRpb25zCisgKiBbVU1PTFlBX1RSVU5LXVtFUERDUF0gQWRkIERMIHRyYWNlcyAmIGZpeCBjLW1vZGVsIGJ1Z3MuCisgKgorICogMDEgMjEgMjAxNiBtaW5ndHN1bmcuc3VuCisgKiBbTU9MWTAwMTYwNDIxXSBbTVQ2MjkyXSBlUERDUCBDRSBSQU0gT3B0aW1pemF0aW9uCisgKiBbRVBEQ1BdIENFIFJBTSBPUFQuCisgKgorICogMDYgMTUgMjAxNSBtaW5ndHN1bmcuc3VuCisgKiBbTU9MWTAwMTIxMzMyXSBbVEs2MjkxXSA0RyBFQVMgbG93IHBvd2VyIGNoZWNrIGluCisgKiBlTDIgbG93IHBvd2VyIGFuZCBlUERDUCBjb2RlIHN5bmM6IG1jdVxjb21tb25cbW9kZW1cbHRlX3NlY1wuLi4KKyAqCisgKiAwNyAwNCAyMDEzIHRpbW90aHkueWFvCisgKiBbTU9MWTAwMDI4MDkyXSBbTVQ2MjkwRTFdW0VMMiBJVF0gZml4IHRoZSBsb2cgc3RhdGVtZW50CisgKiAxLiBmaXggdmFyaWFibGUgb3JkZXIgaW4gbG9nIHN0YXRlbWVudC4KKyAqIDIuIGFwcGx5IGhleGltYWwgJiBlbnVtIHVzYWdlLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmICBFTlBEQ1BfRU5VTV9JTkMKKyNkZWZpbmUgIEVOUERDUF9FTlVNX0lOQworCisjaW5jbHVkZSAiZW5sMl9kZWYuaCIKKworLyoqCisqICAgQGJyaWVmICBSQiBzdGF0ZSAoU1JCL0RSQikgCisqLwordHlwZWRlZiBlbnVtCit7CisgICAgLyogZm9yIFJCIGVudGl0eS9yZWNvcmQgY29tbW9uIHVzZSAqLworICAgIFJCX1NUX05PTkUgPSAwLAorICAgIFJCX1NUX0FDVElWRSwKKyAgICBSQl9TVF9TVVNQRU5ERUQsCisgICAgUkJfU1RfSEFORE9WRVIsCisKKyAgICAvKiBmb3IgUkIgcmVjb3JkIHNwZWNpZmljIHVzZSAqLworICAgIFJCX1NUX0hPX05fU1VTUCwKKyAgICBSQl9TVF9IT19OX0FDVFYsCisKKyNpZiBFTlBEQ1BfUkVNT1RFX1NJTQorICAgIC8qIGZvciB2aXJ0dWFsIGNvbm5lY3Rpdml0eSAqLworICAgIFJCX1NUX1ZJUlRfQ09OTl9OX1NVU1AsCisgICAgUkJfU1RfVklSVF9DT05OX05fQUNUViwKKyNlbmRpZgorCit9IGVucGRjcF9yYl9zdF9lOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBERVROX1RNUjNfTU9OVFJfTFZfT0ZGID0gMCwKKyAgICBERVROX1RNUjNfTU9OVFJfTFZfRFJCLAorICAgIERFVE5fVE1SM19NT05UUl9MVl9BTExfUkIsCit9IGRldG5UbXIzX21vbnRyX2x2X2U7CisKK3R5cGVkZWYgZW51bQoreworICAgIERFVE5fVE1SM19QSEFTRV9SUkMgPSAwLAorICAgIERFVE5fVE1SM19QSEFTRV9OQVMsCit9IGRldG5UbXIzX3BoYXNlX2U7CisKK3R5cGVkZWYgZW51bQoreworICAgIFRNUl9TVF9TVE9QUEVEID0gMCwKKyAgICBUTVJfU1RfUlVOTklORywKKyAgICBUTVJfU1RfVElNRU9VVAorfSB0bXJfc3RfZTsKKwordHlwZWRlZiBlbnVtCit7IAorICAgIEVOUERDUF9FQ19PSyA9IDAsCisKKyAgICAvKiBjb21tb24gKi8KKyAgICBFTlBEQ1BfRUNfSU5WX1JCX05VTSwKKyAgICBFTlBEQ1BfRUNfSU5WX1JCX0lELAorICAgIEVOUERDUF9FQ19JTlZfUkJfSURYLAorICAgIEVOUERDUF9FQ19VTkVYUF9SQl9TVEFURSwKKworICAgIC8qIExvb3BiYWNrIFRFU1QtUkVRICovCisgICAgRU5QRENQX0VDX0RSQl9MQl9FTkFCTEVELAorCisgICAgLyogQ09ORklHLVJFUSAqLworICAgIEVOUERDUF9FQ19TRUNfQ0ZHX1dPX1NSQjEsCisgICAgRU5QRENQX0VDX0FERF9TUkIyX0RSQl9XT19GVUxMX1NFQywKKyAgICBFTlBEQ1BfRUNfSU5WX0FERF9SQl9JRCwKKyAgICBFTlBEQ1BfRUNfSU5WX0FERF9SQl9JRFgsCisgICAgRU5QRENQX0VDX0lOVl9BRERfUkJfQ01ELAorICAgIEVOUERDUF9FQ19JTlZfQUREX1VNX0RJUiwKKyAgICBFTlBEQ1BfRUNfSU5WX01PRF9SQl9JRCwKKyAgICBFTlBEQ1BfRUNfSU5WX01PRF9SQl9JRFgsCisgICAgRU5QRENQX0VDX0lOVl9NT0RfUkJfQ01ELAorICAgIEVOUERDUF9FQ19JTlZfTU9EX1VNX0RJUiwKKyAgICBFTlBEQ1BfRUNfSU5WX0RFTF9SQl9JRCwKKyAgICBFTlBEQ1BfRUNfSU5WX0RFTF9SQl9JRFgsCisgICAgRU5QRENQX0VDX0lOVl9ERUxfUkJfQ01ELAorCisgICAgLyogRENDSF9EQVRBX1JFUSAqLworICAgIEVOUERDUF9FQ19JTlZfVEdQRCwKKyAgICBFTlBEQ1BfRUNfSU5WX1BFRVJfQlVGX1BUUiwKKworICAgIC8qIExUTV9EQVRBX1JFUSAqLworICAgIEVOUERDUF9FQ19JTlZfUFJJX0RBVEFfTElTVCwKKyAgICBFTlBEQ1BfRUNfSU5WX05NTF9EQVRBX0xJU1QsCisgICAgRU5QRENQX0VDX1JCX1VMX0RJUl9ESVNBQkxFRCwKKyAgICBFTlBEQ1BfRUNfUkJfVUxfRkxPV19DVFJMLAorICAgIAorICAgIEVOUERDUF9FQ19NQVgKK30gZW5wZGNwX2VycmNvZGVfZTsKKworLy8vLy8vLyBFTlBEQ1AgREwgcmVsYXRlZCAvLy8vLy8vCisvKioKKyAqICBAYnJpZWYgIFJCIERMIGNvbmZpZyBzdGFnZXMgKERSQikgCisgKi8KK3R5cGVkZWYgZW51bQoreworICAgIERSQl9ETF9DRkdfU1RHX05PUk1BTCA9IDAsCisKKyAgICAvLyBXaGVuIHRoZSBETCBDRkcgU1RHIGlzIG5vdCBOT1JNQUwsIHRoZW4gdGhlIERMIG1vZGUgb2YgdGhlIERSQiBtaWdodCBiZQorICAgIC8vIGluIHRoZSBtaWRzdCBvZiBiZWluZyBjaGFuZ2VkIGZyb20gVlJCLW1vZGUgdG8gTEhJRi1tb2RlIC4KKworICAgIC8qIFJFRVNUOiBBTSBEUkIgc2hvdWxkIGJlIHdpdGggVlJCLVJPICovCisgICAgRFJCX0RMX0NGR19TVEdfUkVFU1RfRkxVU0hJTkcsCisgICAgRFJCX0RMX0NGR19TVEdfUkVFU1RfUkVPUkRFUklORywKKyAgICBEUkJfRExfQ0ZHX1NUR19SRUVTVF9XQUlUX0ZPUl9IRk5fU1lOQywKKyAgICBEUkJfRExfQ0ZHX1NUR19SRUVTVF9EQ0lQX1NVU1BFTkRJTkcsCisgICAgRFJCX0RMX0NGR19TVEdfUkVFU1RfV0FJVF9GT1JfREVMSVZFUlksCisgICAgLyogUkVFU1Q6IEFNIERSQiBzaG91bGQgYmUgd2l0aCBWUkItUk8gKi8KKworICAgIC8qIEhGTiBSZXN5bmMgd2hlbiBub3QgaW4gcmVlc3Qgc3RhZ2U6IEFNIERSQiBzaG91bGQgYmUgd2l0aCBWUkItUk8gKi8KKyAgICBEUkJfRExfQ0ZHX1NUR19IRk5fUkVTWU5DX1dBSVRfRk9SX0hGTl9TWU5DLAorICAgIERSQl9ETF9DRkdfU1RHX0hGTl9SRVNZTkNfRENJUF9TVVNQRU5ESU5HLAorICAgIERSQl9ETF9DRkdfU1RHX0hGTl9SRVNZTkNfV0FJVF9GT1JfREVMSVZFUlksCisgICAgLyogSEZOIFJlc3luYyB3aGVuIG5vdCBpbiByZWVzdCBzdGFnZTogQU0gRFJCIHNob3VsZCBiZSB3aXRoIFZSQi1STyAqLworCisgICAgLyogTFdBICovCisgICAgRFJCX0RMX0NGR19TVEdfRU5fTFdBX0RDSVBfU1VTUEVORElORywgLy8gc3VzcGVuZCBEQ0lQIGZvciBBUFJPIGVuYWJsaW5nIC8vIFRPRE86IFJFTU9WRQorICAgIERSQl9ETF9DRkdfU1RHX0VOX0xXQV9XQUlUX0FQUk9fQ05GLy8gVE9ETzogUkVNT1ZFCisgICAgLyogTFdBICovCit9IGVucGRjcF9kcmJfZGxfY2ZnX3N0Z19lOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSQl9ETF9NT0RFX0JJVF9ST19PTiA9IDB4MSwgLy8gby53LiBST19PRkYKKyAgICBSQl9ETF9NT0RFX0JJVF9ERVNUX1ZSQiA9IDB4MiwgLy8gby53LiBERVNUX0xISUYKK30gZW5wZGNwX3JiX2RsX21vZGVfYml0X2U7CisKK3R5cGVkZWYgZW51bQoreworICAgIFJCX0RMX01PREVfTEhJRl9OUk8gPSAwLAorICAgIFJCX0RMX01PREVfTEhJRl9STyA9IFJCX0RMX01PREVfQklUX1JPX09OLAorICAgIFJCX0RMX01PREVfVlJCX05STyA9IFJCX0RMX01PREVfQklUX0RFU1RfVlJCLAorICAgIFJCX0RMX01PREVfVlJCX1JPID0gUkJfRExfTU9ERV9CSVRfREVTVF9WUkIgfCBSQl9ETF9NT0RFX0JJVF9ST19PTgorfSBlbnBkY3BfcmJfZGxfbW9kZV9lOworCit0eXBlZGVmIGVudW17CisgICAgRU5QRENQX0lMTV9JTlZBTElELAorICAgIEVOUERDUF9JTE1fQUNDRVBULAorICAgIEVOUERDUF9JTE1fSUdOT1JFCit9IGVucGRjcF9pbG1fY2hlY2tfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRExfTU9ERV9TV0lUQ0hfQ0FVU0VfQkVDT01FX0xISUZfTU9ERV9DQVBBQkxFID0gMCwKKyAgICBETF9NT0RFX1NXSVRDSF9DQVVTRV9ESVNfVEVTVE1PREUsCisgICAgRExfTU9ERV9TV0lUQ0hfQ0FVU0VfV0FJVF9GT1JfREVMSVZFUllfRE9ORSwKKyAgICBETF9NT0RFX1NXSVRDSF9DQVVTRV9ESVNfRk9SQ0VEX0lORElSRUNUX1BBVEgsCit9IGRsX21vZGVfc3dpdGNoX2NhdXNlX2U7CisKK3R5cGVkZWYgZW51bQoreworICAgIEVQRENQX0RMX0xPR19MRVZFTF9SQVcgPSAwLAorICAgIEVQRENQX0RMX0xPR19MRVZFTF9SRUZJTkVELAorfSBlcGRjcF9kbF9sb2dfbGV2ZWxfZTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRVBEQ1BfVUxfTE9HX0xFVkVMX1JBVyA9IDAsCisgICAgRVBEQ1BfVUxfTE9HX0xFVkVMX1JFRklORUQsCit9IGVwZGNwX3VsX2xvZ19sZXZlbF9lOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBEUkJfRExfSEZOX1NZTkMgPSAwLAorICAgIERSQl9ETF9IRk5fUkVTWU5DX0RPTkUsCisgICAgRFJCX0RMX0hGTl9ERVNZTkNfVFJZX0NVUl9IRk4sCisgICAgRFJCX0RMX0hGTl9ERVNZTkNfRENJUF9SRVNVTUVfVFJZSU5HLAorICAgIERSQl9ETF9IRk5fREVTWU5DX0RDSVBfU1VTUEVORCwKKyAgICBEUkJfRExfSEZOX0RFU1lOQ19EQ0lQX1NVU1BFTkRfUkVTRVRfSEZOLAorfSBlcGRjcF9kcmJfZGxfaGZuX3N5bmNfc3RnX2U7CisKK3R5cGVkZWYgZW51bQoreworICAgIEVOUERDUF9GVU5DX1NJVF9VUERBVEUsCisgICAgRU5QRENQX0ZVTkNfTlJMQ19QUkVHRU4KK30gZW5wZGNwX2Z1bmNfcHJvZmlsZV9lOworCisKKyNlbmRpZiAvLyB+ICNpZm5kZWYgRU5QRENQX0VOVU1fSU5DCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VycmNfZW1hY19tc2cuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXJyY19lbWFjX21zZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzdmODQKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VycmNfZW1hY19tc2cuaApAQCAtMCwwICsxLDEwMjUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVycmNfZW1hY19tc2cuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRGVmaW5lIEVSUkMgRU1BQyBpbnRlcmZhY2UgZW51bXMsIHN0cnVjdHVyZXMgYW5kIGNvbnN0YW50cworICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwOCAwNiAyMDIwIGthdGhpZS5obworICogW01PTFkwMDU1NTI4NV0gW1RJVEFOXVtNNzBdW1JlcXVpcmVtZW50XUFQSSByZXF1aXJlbWVudHMgdG8gcmVhZCBjZWxsIHBhcmFtZXRlcnMKKyAqIElDRCAoZm9yIEJWRCkKKyAqCisgKiAwOCAwNiAyMDIwIGthdGhpZS5obworICogW01PTFkwMDU1NTI4NV0gW1RJVEFOXVtNNzBdW1JlcXVpcmVtZW50XUFQSSByZXF1aXJlbWVudHMgdG8gcmVhZCBjZWxsIHBhcmFtZXRlcnMKKyAqIElDRCBmb3IgRU1BQy4KKyAqCisgKiAxMiAxNyAyMDE4IGhhbWlsdG9uLmxpYW5nCisgKiBbTU9MWTAwMzMyNjgyXSBHZW45NyByZWxldmFudCBmZWF0dXJlL3N0cnVjdHVyZSBjaGFuZ2UKKyAqIAkKKyAqIAlWTU9MWSBFaWdlciB3aXRoIEVOTDIgcG9ydGluZyAtIEVNQUMgcGFydAorICoKKyAqIDEyIDE0IDIwMTggaGFtaWx0b24ubGlhbmcKKyAqIFtNT0xZMDAzMzI2ODJdIEdlbjk3IHJlbGV2YW50IGZlYXR1cmUvc3RydWN0dXJlIGNoYW5nZQorICogCQorICogCVtJbnRlcmZhY2VdW0VNQUM8LT5FUlJDXSBBUyByZWxlYXNlIHVwZ3JhZGUgKHN1cHBvcnQgUjE0L1IxNSBhbmQgcmVsZXZhbnQgY2F0ZWdvcnkgdXBncmFkZSkKKyAqIAlOT1RFMTogQWxzbyBhZGQgdGhlIFRCIHRyYWNlIGZvciBETDVDQ3MKKyAqIAlOT1RFMjogQ3VycmVudGx5IHRoZSBMQ0lEIHN0YXJ0IGluZGV4IHdpbGwgYmUgc2V0IGJhc2VkIG9uIFIxMyBpZiB0aGUgc3VwcG9ydCByZWxlYXNlIGlzIGVpdGhlciBSMTQgb3IgUjE1LCBhbmQgaXQgd2lsbCBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuKHRoZXJlIGFyZSBzb21lIGNvZGUgY2hhbmdlKQorICoKKyAqIDEyIDEzIDIwMTggZnJhbmsuc29uZworICogW01PTFkwMDM2ODY1NF0gW0dlbjk3XVtBcG9sbG9dW1NNT11bNC1EXVtHMl0gRU1BQ19QVUJMSUMKKyAqIC4KKyAqCisgKiAxMSAwMSAyMDE4IHNodS13ZWkuaG8KKyAqIFtNT0xZMDAzNjE0NzhdIFtHZW45N10gR2VtaW5pIENvbXBpbGUgT3B0aW9uIENsZWFuIFVwCisgKiAuCisgKgorICogMTAgMzEgMjAxOCBzaHUtd2VpLmhvCisgKiBbTU9MWTAwMzQ2NjI2XSBbR2VuOTddW0VNQUNdIE1lcmdlIEdlbjk1IENMcyBvbiBHZW45NyBhbmQgcGF0Y2ggYmFjayB0byBWTU9MWSBUUlVOSworICogRU1BQy1FUlJDIGludGVyZmFjZSAoZXh0ZW5kIFJBL1RBIGNvbmZpZ3VhcnRpb24pLgorICoKKyAqIDEwIDI0IDIwMTggZnJhbmsuc29uZworICogW01PTFkwMDM2MDI4MV0gU3luYyBHZW45NSBDTCA5LzEwfjkvMjMKKyAqIC4KKyAqCisgKiAxMCAwNCAyMDE4IGthdGhpZS5obworICogW01PTFkwMDM1MTU0OV0gR2VuOTcgRU1BQyBjaGVjay1pbgorICogRU5EQyAoVERNIHBhdHRlcm4pIGludGVyZmFjZQorICoKKyAqIDA4IDMwIDIwMTggc2hpbi5jaGVuCisgKiBbTU9MWTAwMzQ4OTUyXSBbR2VuOTddSnVuZSBWZXJzaW9uIEFTTi4xIG1pZ3JhdGlvbiBwYXRjaCBiYWNrCisgKiAuCisgKgorICogMDggMTcgMjAxOCBzaHUtd2VpLmhvCisgKiBbTU9MWTAwMzM5NDQ5XSBbR2VuOTddW0VNQUNdIEdlbmVyYWwgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIC5NZXJnZSB0byBWTU9MWS4gKG5vbiBNUEQpCisgKgorICogMDcgMjQgMjAxOCBrYXRoaWUuaG8KKyAqIFtNT0xZMDAzNDE3NjRdIFtHZW45N10gcmVtb3ZlIGVudW0gZXJyY19lbDJfY2ZnX3Jlc3VsdF9lbnVtCisgKiByZW1vdmUgZXJyYyBlbWFjIHJlc3VsdCBlbnVtLgorICogCVtQcm90b2NvbCBidWlsZCB0YWddCisgKiAJW0lzIENMIHNlbGYgdGVzdGFibGU6IE5PXQorICogCVtHcm91cCBDTCBsaXN0OiBXQUlUXQorICoKKyAqIDA1IDMwIDIwMTgga2F0aGllLmhvCisgKiBbTU9MWTAwMzI2NjkxXSBbTVQ2Mjk3XSBHRU45Ny5ERVYgRU5MMiBQYXRjaCBiYWNrCisgKiBHZW45NyBFTkRDIEVSUkMtRU1BQyBpbnRlcmZhY2UuCisgKgorICogMDQgMTggMjAxOCBzaHUtd2VpLmhvCisgKiBbTU9MWTAwMzIwNjI5XSBbNjI5N10gUFMuREVWIHBhdGNoIGJhY2sgdG8gR0VOOTcuREVWCisgKiAuRml4IGVycmNfZW1hYyBtc2cgZXJyb3IKKyAqCisgKiAwMyAyOCAyMDE4IHNoaW4uY2hlbgorICogW01PTFkwMDMxNjY5Ml0gWzYyOTddIEludGVyZmFjZSBidWlsZC11cCBmb3IgRVJSQy1OUlJDLCBFUlJDL05SUkMtRU5MMiwgRVJSQy1FTDIgU0FQCisgKiB1cGRhdGUgZWwyIGludGVyZmFjZXMuCisgKgorICogMDEgMTEgMjAxOCBqaWEtc2hpLmxpbgorICogW01PTFkwMDMwMTQ1MV0gW1NNTyByZWxlYXNlXVs5My85NV1FTDEgcmVsYXRpdmUgaW50ZXJmYWNlCisgKiBlbWFjL2VsMSBpbnRlcmZhY2UgcmUtYXJjaAorICoKKyAqIDA5IDIwIDIwMTcgbmljb2xlLmhzdQorICogW01PTFkwMDI3OTE4NF0gW1BDVF1bQW5yaXRzdV1bQ0FHNTBDXVtFNDBdWzcuMS4xLjJdIGZhaWwKKyAqIFtUUlVOS10gTENJRCB2cy4gc3VwcG9ydCByZWxlYXNlIGhhbmRsaW5nCisgKgorICogMDggMTYgMjAxNyBndWFuZy15dS56aGVuZworICogW01PTFkwMDI3MTEyM10gW01UNjI5M11bRU1BQ10gU1JMVEUtZW5oYW5jZSBmZWF0dXJlIGNvZGUgc3luYworICogQWRkIEVNQUMgaW50ZXJmYWNlIGZvciBTUkxURSBlbmhhbmNlbWVudCBoYW5kbGluZworICoKKyAqIDAxIDI1IDIwMTcgZWRkaWUud2FuZworICogW01PTFkwMDIxMDY1MF0gW01UNjI5M11bVU1PTFlBIFRSVU5LXSBFTUFDIG1haW50ZW5hbmNlCisgKiBbTVNJTV1bUlNJTV0gQWRkIGVtYWMgY29uZmlnIHJlcSBjYXVzZSBmb3IgcmVtb3RlIHNpbSBzY2VuYXJpbworICoKKyAqIDEyIDI2IDIwMTYgbWYuamhhbmcKKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIHVwZGF0ZSBlcnJjX2VtYWNfY2FfYWN0aXZhdGVfaW5kX3N0cnVjdAorICoKKyAqIDExIDA4IDIwMTYgbWYuamhhbmcKKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIFVwZGF0ZSBlcnJjX2VtYWNfY2FfYWN0aXZhdGVfaW5kX3N0cnVjdAorICoKKyAqIDEwIDA2IDIwMTYgZWRkaWUud2FuZworICogW01PTFkwMDIwNjUyMl0gW01UNjI5M11bTldTSU1dW1JlZ3Jlc3Npb25dW1RDXzdfMV80XzE4XSBUZXN0IGZhaWxlZAorICogVFJVTks6UmVtb3ZlIHJlZHVuZGFudCBjb25maWcgbGlrZSBleHRlbmRlZEJTUiBhbmQgTUJNUyBpbiBlbWFjX2NvbmZpZ19yZXEKKyAqCisgKiAwOSAxMyAyMDE2IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAxOTQ5ODddIFtNVDYyOTNdW1VNT0xZQS9QUyBERVZdIEVNQUMgbWFpbnRlbmFuY2UKKyAqIFt4TDFTaW1dIHJlbW92ZSBlcnJjX2VtYWNfY29uZmlnIG9sZCBmaWVsZCAtIHR0aV9idW5kbGluZ19mbGFnCisgKgorICogMDMgMTYgMjAxNiB5ay5saXUKKyAqIFtNT0xZMDAxNjUxODFdIFN5biBFTUFDIGZyb20gTFIxMSBUTyBVTU9MWSBmb3IgQ0wxOTkwMzU4CisgKiAuCisgKgorICogMDMgMTUgMjAxNiByeWFuLm91CisgKiBbTU9MWTAwMTYyMjkxXSBbTVQ2MjkyXSBFTUFDIGNvZGUgc3luYyBmcm9tIExSMTEgdG8gVU1PTFkKKyAqIENMMTg2Nzc2NCwgW01PTFkwMDE1MTAwMF0gW01UNjc1NV0gU1JWQ0MgRW5oYW5jZW1lbnQuCisgKgorICogMDEgMTEgMjAxNiB2aWxsZS5wdWthcmkKKyAqIFtNT0xZMDAxNTY0MTFdIFtNVDYyOTJdIExvZ2ljYWwgQ2hhbm5lbCBTUiBwcm9oaWJpdCB0aW1lcjogTmV3IGZlYXR1cmUKKyAqCisgKiAxMCAxNiAyMDE1IHBhbnUucGVpc2EKKyAqIFtNT0xZMDAxNDUwODRdIERFNiBjb2RlIG1lcmdlIGZyb20gVU1PTFlfOTJkZXYgQ0JyIHRvIFVNT0xZIHRydW5rCisgKiAJSW50ZWdyYXRlZCBMVEVfU0VDIGNoYW5nZXMgZnJvbSBVTU9MWV85MmRldiAoIGVycmMgcGFydCApLgorICoKKyAqIDEwIDA2IDIwMTUgZXNrby5vaWthcmluZW4KKyAqIEVSUkMgY2hhbmdlcyBmb3IgbXVsdGlwbGUgVEEKKyAqCisgKiAwOSAxMCAyMDE1IGNodW4tZmFuLnRzYWkKKyAqIFtNT0xZMDAwOTg0MDBdIFs2MjkxXSBlUlJDIENPTk4gRU0KKyAqIEFkZCBDQ0NIIERhdGEgUmVxIGNhdXNlIGZvciBFTUFDIEVNCisgKgorICogMDMgMTggMjAxNSBjaGVuLXdlaS53YW5nCisgKiBbTU9MWTAwMDk5NTI1XSBbVEs2MjkxXSBFTUFDIE1EVCBmZWF0dXJlIGNoZWNrLWluCisgKiBpbnRlcmZhY2UgZmlsZSBjaGVjay1pbgorICoKKyAqIDEyIDAzIDIwMTQgc2gueWFuZworICogW01PTFkwMDA4NDA4MV0gW1VNT0xZXSBUcnVuayBtZXJnZSBiYWNrCisgKiAuQWRkIGNhcnJpZXIgaW5kZXggaW4gc2lfaW5kX3N0cnVjdAorICoKKyAqIDExIDExIDIwMTQgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMDg0MDQyXSBbVU1PTFldIG1lcmdlIFVNT0xZX0RFViB0byBVTU9MWSB0cnVuaworICogLgorICoKKyAqIDEwIDA4IDIwMTQgaGVucnkubGFpCisgKiBbTU9MWTAwMDc5MDcxXSBbTVQ2MjkxXVtVNEddIExvdyBQb3dlciBNb2RpZmljYXRpb24gZm9yIENFTCBQYWdpbmcKKyAqIC4KKyAqCisgKiAwOSAxOSAyMDE0IGNoaS1jaHVuZy5saW4KKyAqIFtNT0xZMDAwNzM4MzZdIFtNVDYyOTFdW0VSUkNdW0NITV0gTFRFLUEgQ0hNIGRldmVsb3BtZW50IGNvZGUgY2hlY2staW4KKyAqIFtDSE1dIE1CTVMgaW50ZXJmYWNlIGNoZWNrIGluCisgKgorICogMDcgMjggMjAxNCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAwNzM4MzBdIFtNVDYyOTFfREVWXSBjaGVjay1pbiBNVDYyOTEgbW9kaWZpY2F0aW9uCisgKiBDaGVjay1pbiBFTUFDLUVSUkMgaW50ZXJmYWNlCisgKgorICogMDggMDYgMjAxMyBzdGFubGV5aHkuY2hlbgorICogW01PTFkwMDAzMjYzM10gNEcgTmJyIENlbGwgSW5mbworICogNEcgTmJyIENlbGwgSW5mbyBpbiBMVEUgRG9tYWluCisgKgorICogMDcgMjIgMjAxMyBzdGFubGV5aHkuY2hlbgorICogW01PTFkwMDAyOTYwMl0gW05ldyBGZWF0dXJlXSBOQlJfQ0VMTF9JTkZPIGFuZCBUQV9JTkZPIHJlbGF0ZWQgaW50ZXJmYWNlcworICogQWRkIEVSUkNfRU1BQ19UQV9JTkZPX0lOVkFMSURfSU5ECisgKgorICogMDcgMTIgMjAxMyBzdGFubGV5aHkuY2hlbgorICogW01PTFkwMDAyOTYwMl0gW05ldyBGZWF0dXJlXSBOQlJfQ0VMTF9JTkZPIGFuZCBUQV9JTkZPIHJlbGF0ZWQgaW50ZXJmYWNlcworICogVEFfSU5GTyBhbmQgTkJSX0NFTExfSU5GTyBpbnRlcmZhY2VzIGZvciBMUFAgZmVhdHVyZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgRVJSQ19FTUFDX01TR19ICisjZGVmaW5lIEVSUkNfRU1BQ19NU0dfSAorCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorI2luY2x1ZGUgImVsMl9zYXBfY29tbW9uLmgiCisjaW5jbHVkZSAicW11X2JtLmgiCisjaW5jbHVkZSAibHRlX3RpbWVfY29tbW9uLmgiCisjaW5jbHVkZSAiY29tbW9uX2RlZi5oIgorCisjaWYgIWRlZmluZWQoX19YTDFTSU1fRUwxX18pICYmIGRlZmluZWQoX19MVEVfTDFTSU1fXykKKyNkZWZpbmUgX19YTDFTSU1fRUwxX18KKyNlbmRpZgorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTUFDIGNvbmZpZ3VyYXRpb24gcmVxdWVzdAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvL21hYyBjb25maWcgcmVxdWVzdCBpbmZvIGJpdG1hcAorI2RlZmluZSBFTUFDX0NPTkZJR19JTkZPX1JBX01BU0sgMHgwMQorI2RlZmluZSBFTUFDX0NPTkZJR19JTkZPX1NDSEVEX01BU0sgMHgwMiAKKyNkZWZpbmUgRU1BQ19DT05GSUdfSU5GT19EUlhfTUFTSyAweDA0CisjZGVmaW5lIEVNQUNfQ09ORklHX0lORk9fUEhSX01BU0sgMHgwOAorI2RlZmluZSBFTUFDX0NPTkZJR19JTkZPX0NSTlRJX01BU0sgMHgxMAorCisjZGVmaW5lIEVSUkNfRU1BQ19DQ0NIX1NaICg2KQorCisvL21heCBudW1iZXIgb2YgUkIKKyNkZWZpbmUgRVJSQ19FTUFDX01BWF9SQl9OQiAoMTApCisKKy8vbWF4IG51bWJlciBvZiBTVEFHL1NDZWxsCisjaWYoQ1VSX0dFTiA+PSBNRF9HRU45NSkKKyNkZWZpbmUgRVJSQ19FTUFDX01BWF9TVEFHX05CICgxKQorI2RlZmluZSBFUlJDX0VNQUNfTUFYX1NDRUxMX05CICg0KQorI2Vsc2UKKyNkZWZpbmUgRVJSQ19FTUFDX01BWF9TVEFHX05CICgxKQorI2RlZmluZSBFUlJDX0VNQUNfTUFYX1NDRUxMX05CICgxKQorI2VuZGlmCisKKworCit0eXBlZGVmIGVudW0gCit7CisgICAgRVJSQ19FTUFDX0NPTkZJR19DQVVTRV9OT05fSE8gPSAwLAorICAgIEVSUkNfRU1BQ19DT05GSUdfQ0FVU0VfSE8gICAgID0gMSwKKyAgICBFUlJDX0VNQUNfQ09ORklHX0NBVVNFX1JFU0VUICA9IDIsCisjaWZkZWYgX19HRU1JTklfXworICAgIEVSUkNfRU1BQ19DT05GSUdfQ0FVU0VfUkVTRVRfVklSVFVBTF9DT05ORUNURURfRU5URVIgICAgICA9IDMsCisgICAgRVJSQ19FTUFDX0NPTkZJR19DQVVTRV9WSVJUVUFMX0NPTk5FQ1RFRF9MRUFWRV9QUkVQQVJFICAgID0gNCwKKyAgICBFUlJDX0VNQUNfQ09ORklHX0NBVVNFX1ZJUlRVQUxfQ09OTkVDVEVEX0xFQVZFICAgICAgICAgICAgPSA1LAorICAgIEVSUkNfRU1BQ19DT05GSUdfQ0FVU0VfUkVTRVRfVklSVFVBTF9DT05ORUNURURfTEVBVkVfRkFJTCA9IDYsCisgICAgLy9UaGUgZGVzaWduIGZvciBTUkxURSBlbmhhbmNlbWVudCB3aWxsIGJlIHRoZSBzYW1lIGFzIFJTSU0sIGJ1dCB3ZSBzdGlsbCBzZXBlcmF0ZSB0aGUgY2F1c2UKKyAgICBFUlJDX0VNQUNfQ09ORklHX0NBVVNFX1JFU0VUX1ZJUlRVQUxfQ09OTkVDVEVEX0VOVEVSX0ZPUl9TUkxURSAgICAgID0gNywKKyAgICBFUlJDX0VNQUNfQ09ORklHX0NBVVNFX1ZJUlRVQUxfQ09OTkVDVEVEX0xFQVZFX1BSRVBBUkVfRk9SX1NSTFRFICAgID0gOCwKKyAgICBFUlJDX0VNQUNfQ09ORklHX0NBVVNFX1ZJUlRVQUxfQ09OTkVDVEVEX0xFQVZFX0ZPUl9TUkxURSAgICAgICAgICAgID0gOSwKKyAgICBFUlJDX0VNQUNfQ09ORklHX0NBVVNFX1JFU0VUX1ZJUlRVQUxfQ09OTkVDVEVEX0xFQVZFX0ZBSUxfRk9SX1NSTFRFID0gMTAsCisjZW5kaWYKK30gZXJyY19lbWFjX2NvbmZpZ19jYXVzZV9lbnVtOworCisvL0ZvciBJQ0QgTUFDX1JFU0VUX0VWRU5UIGFuZCBNQUNfQ09ORklHVVJBVElPTl9FVkVOVAordHlwZWRlZiBlbnVtCit7CisgICAgRVJSQ19FTUFDX0lDRF9SRVNFVF9DQVVTRV9PVEhFUlMgICA9IDAsCisgICAgRVJSQ19FTUFDX0lDRF9SRVNFVF9DQVVTRV9SRUxFQVNFICA9IDEsCisgICAgRVJSQ19FTUFDX0lDRF9SRVNFVF9DQVVTRV9ITyAgICAgICA9IDIsCisgICAgRVJSQ19FTUFDX0lDRF9SRVNFVF9DQVVTRV9STEYgICAgICA9IDMsCisgICAgLyogUGxlYXNlIG11c3QgdXBkYXRlIHRoaXMgaWYgUkVTRVQgZW51bSBpbmNyZWFzZSAqLworICAgIEVSUkNfRU1BQ19JQ0RfUkVTRVRfQ0FVU0VfTUFYX05VTSA9IEVSUkNfRU1BQ19JQ0RfUkVTRVRfQ0FVU0VfUkxGLCAgCisgICAgRVJSQ19FTUFDX0lDRF9DT05GSUdfQ0FVU0VfTk9STUFMICA9IDQsCisgICAgRVJSQ19FTUFDX0lDRF9DT05GSUdfQ0FVU0VfSE8gICAgICA9IDUsCit9IGVycmNfZW1hY19pY2RfZXZlbnRfY2F1c2VfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRVJSQ19FTUFDX1RBX1RJTUVSXzUwMCwgRVJSQ19FTUFDX1RBX1RJTUVSXzc1MCwgRVJSQ19FTUFDX1RBX1RJTUVSXzEyODAsIEVSUkNfRU1BQ19UQV9USU1FUl8xOTIwLAorICAgIEVSUkNfRU1BQ19UQV9USU1FUl8yNTYwLCBFUlJDX0VNQUNfVEFfVElNRVJfNTEyMCwgRVJSQ19FTUFDX1RBX1RJTUVSXzEwMjQwLCBFUlJDX0VNQUNfVEFfVElNRVJfSU5GCit9IGVycmNfZW1hY190YV90aW1lcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSQV9QUkVBTUJMRV9OQl80LCBSQV9QUkVBTUJMRV9OQl84LCBSQV9QUkVBTUJMRV9OQl8xMiwgUkFfUFJFQU1CTEVfTkJfMTYsIAorICAgIFJBX1BSRUFNQkxFX05CXzIwLCBSQV9QUkVBTUJMRV9OQl8yNCwgUkFfUFJFQU1CTEVfTkJfMjgsIFJBX1BSRUFNQkxFX05CXzMyLCAKKyAgICBSQV9QUkVBTUJMRV9OQl8zNiwgUkFfUFJFQU1CTEVfTkJfNDAsIFJBX1BSRUFNQkxFX05CXzQ0LCBSQV9QUkVBTUJMRV9OQl80OCwgCisgICAgUkFfUFJFQU1CTEVfTkJfNTIsIFJBX1BSRUFNQkxFX05CXzU2LCBSQV9QUkVBTUJMRV9OQl82MCxSQV9QUkVBTUJMRV9OQl82NAorfSBlcnJjX2VtYWNfcmFfcHJlYW1ibGVfbmJfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgUkFfR1JPVVBfQV9TWl80LCBSQV9HUk9VUF9BX1NaXzgsIFJBX0dST1VQX0FfU1pfMTIsIFJBX0dST1VQX0FfU1pfMTYsIAorICAgIFJBX0dST1VQX0FfU1pfMjAsIFJBX0dST1VQX0FfU1pfMjQsIFJBX0dST1VQX0FfU1pfMjgsIFJBX0dST1VQX0FfU1pfMzIsIAorICAgIFJBX0dST1VQX0FfU1pfMzYsIFJBX0dST1VQX0FfU1pfNDAsIFJBX0dST1VQX0FfU1pfNDQsIFJBX0dST1VQX0FfU1pfNDgsIAorICAgIFJBX0dST1VQX0FfU1pfNTIsIFJBX0dST1VQX0FfU1pfNTYsIFJBX0dST1VQX0FfU1pfNjAKK30gZXJyY19lbWFjX3JhX2dyb3VwX2Ffc3pfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgUkFfR1JPVVBfQV9NU0dfU1pfNTYsIFJBX0dST1VQX0FfTVNHX1NaXzE0NCwgUkFfR1JPVVBfQV9NU0dfU1pfMjA4LCBSQV9HUk9VUF9BX01TR19TWl8yNTYKK30gZXJyY19lbWFjX3JhX21zZ19zel9ncm91cF9hX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE1TR19QT1dfT0ZGU0VUX0dST1VQX0JfTUlOVVNfSU5GLCBNU0dfUE9XX09GRlNFVF9HUk9VUF9CXzAsIE1TR19QT1dfT0ZGU0VUX0dST1VQX0JfNSwKKyAgICBNU0dfUE9XX09GRlNFVF9HUk9VUF9CXzgsIE1TR19QT1dfT0ZGU0VUX0dST1VQX0JfMTAsIE1TR19QT1dfT0ZGU0VUX0dST1VQX0JfMTIsCisgICAgTVNHX1BPV19PRkZTRVRfR1JPVVBfQl8xNSwgTVNHX1BPV19PRkZTRVRfR1JPVVBfQl8xOAorfSBlcnJjX2VtYWNfbXNnX3Bvd19vZmZzZXRfZ3JvdXBfYl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSQV9QT1dfUkFNUElOR18wLCBSQV9QT1dfUkFNUElOR18yLCBSQV9QT1dfUkFNUElOR180LCBSQV9QT1dfUkFNUElOR182Cit9IGVycmNfZW1hY19yYV9wb3dfcmFtcGluZ19lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBQUkVBTUJMRV9JTklUX1BPV19NSU5VUzEyMCwgUFJFQU1CTEVfSU5JVF9QT1dfTUlOVVMxMTgsIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTMTE2LAorICAgIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTMTE0LCBQUkVBTUJMRV9JTklUX1BPV19NSU5VUzExMiwgUFJFQU1CTEVfSU5JVF9QT1dfTUlOVVMxMTAsCisgICAgUFJFQU1CTEVfSU5JVF9QT1dfTUlOVVMxMDgsIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTMTA2LCBQUkVBTUJMRV9JTklUX1BPV19NSU5VUzEwNCwKKyAgICBQUkVBTUJMRV9JTklUX1BPV19NSU5VUzEwMiwgUFJFQU1CTEVfSU5JVF9QT1dfTUlOVVMxMDAsIAorICAgIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTOTgsIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTOTYsIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTOTQsIAorICAgIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTOTIsIFBSRUFNQkxFX0lOSVRfUE9XX01JTlVTOTAKK30gZXJyY19lbWFjX3ByZWFtYmxlX2luaXRfcG93X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFBSRUFNQkxFX1RYX01BWF8zLCBQUkVBTUJMRV9UWF9NQVhfNCwgUFJFQU1CTEVfVFhfTUFYXzUsIFBSRUFNQkxFX1RYX01BWF82LAorICAgIFBSRUFNQkxFX1RYX01BWF83LCBQUkVBTUJMRV9UWF9NQVhfOCwgUFJFQU1CTEVfVFhfTUFYXzEwLCBQUkVBTUJMRV9UWF9NQVhfMjAsCisgICAgUFJFQU1CTEVfVFhfTUFYXzUwLCBQUkVBTUJMRV9UWF9NQVhfMTAwLCBQUkVBTUJMRV9UWF9NQVhfMjAwCit9IGVycmNfZW1hY19wcmVhbWJsZV90eF9tYXhfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgUkFSX1dORF9TWl8yLCBSQVJfV05EX1NaXzMsIFJBUl9XTkRfU1pfNCwgUkFSX1dORF9TWl81LCBSQVJfV05EX1NaXzYsIFJBUl9XTkRfU1pfNywKKyAgICBSQVJfV05EX1NaXzgsIFJBUl9XTkRfU1pfMTAKK30gZXJyY19lbWFjX3Jhcl93bmRfc3pfZW51bTsKKwordHlwZWRlZiBlbnVtCit7ICAgCisgICAgQ1JfVElNRVJfOCwgQ1JfVElNRVJfMTYsIENSX1RJTUVSXzI0LCBDUl9USU1FUl8zMiwgQ1JfVElNRVJfNDAsIENSX1RJTUVSXzQ4LCBDUl9USU1FUl81NiwgQ1JfVElNRVJfNjQKK30gZXJyY19lbWFjX2NyX3RpbWVyX2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgTUFYX0hBUlFfVFhfMSwgTUFYX0hBUlFfVFhfMiwgTUFYX0hBUlFfVFhfMywgTUFYX0hBUlFfVFhfNCwgTUFYX0hBUlFfVFhfNSwgTUFYX0hBUlFfVFhfNiwKKyAgICBNQVhfSEFSUV9UWF83LCBNQVhfSEFSUV9UWF84LCBNQVhfSEFSUV9UWF8xMCwgTUFYX0hBUlFfVFhfMTIsIE1BWF9IQVJRX1RYXzE2LCBNQVhfSEFSUV9UWF8yMCwKKyAgICBNQVhfSEFSUV9UWF8yNCwgTUFYX0hBUlFfVFhfMjgKK30gZXJyY19lbWFjX21heF9oYXJxX3R4X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIFBFUklPRElDX0JTUl81LCBQRVJJT0RJQ19CU1JfMTAsIFBFUklPRElDX0JTUl8xNiwgUEVSSU9ESUNfQlNSXzIwLCBQRVJJT0RJQ19CU1JfMzIsCisgICAgUEVSSU9ESUNfQlNSXzQwLCBQRVJJT0RJQ19CU1JfNjQsIFBFUklPRElDX0JTUl84MCwgUEVSSU9ESUNfQlNSXzEyOCwgUEVSSU9ESUNfQlNSXzE2MCwKKyAgICBQRVJJT0RJQ19CU1JfMzIwLCBQRVJJT0RJQ19CU1JfNjQwLCBQRVJJT0RJQ19CU1JfMTI4MCwgUEVSSU9ESUNfQlNSXzI1NjAsIFBFUklPRElDX0JTUl9JTkYKK30gZXJyY19lbWFjX3BlcmlvZGljX2Jzcl90aW1lcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBSRVRYX0JTUl8zMjAsIFJFVFhfQlNSXzY0MCwgUkVUWF9CU1JfMTI4MCwgUkVUWF9CU1JfMjU2MCwgUkVUWF9CU1JfNTEyMCwgUkVUWF9CU1JfMTAyNDAKK30gZXJyY19lbWFjX3JldHhfYnNyX3RpbWVyX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIE9OX0RVUkFUSU9OX1BTMSwgT05fRFVSQVRJT05fUFMyLCBPTl9EVVJBVElPTl9QUzMsIE9OX0RVUkFUSU9OX1BTNCwgT05fRFVSQVRJT05fUFM1LCBPTl9EVVJBVElPTl9QUzYsCisgICAgT05fRFVSQVRJT05fUFM4LCBPTl9EVVJBVElPTl9QUzEwLCBPTl9EVVJBVElPTl9QUzIwLCBPTl9EVVJBVElPTl9QUzMwLCBPTl9EVVJBVElPTl9QUzQwLCAKKyAgICBPTl9EVVJBVElPTl9QUzUwLCBPTl9EVVJBVElPTl9QUzYwLCBPTl9EVVJBVElPTl9QUzgwLCBPTl9EVVJBVElPTl9QUzEwMCwgT05fRFVSQVRJT05fUFMyMDAsCisgICAgT05fRFVSQVRJT05fUFMzMDAsIE9OX0RVUkFUSU9OX1BTNDAwLCBPTl9EVVJBVElPTl9QUzUwMCwgT05fRFVSQVRJT05fUFM2MDAsCisgICAgT05fRFVSQVRJT05fUFM4MDAsIE9OX0RVUkFUSU9OX1BTMTAwMCwgT05fRFVSQVRJT05fUFMxMjAwLCBPTl9EVVJBVElPTl9QUzE2MDAKK30gZXJyY19lbWFjX29uX2R1cmF0aW9uX3RpbWVyX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIERSWF9JTkFDVElWSVRZX1BTMSwgRFJYX0lOQUNUSVZJVFlfUFMyLCBEUlhfSU5BQ1RJVklUWV9QUzMsIERSWF9JTkFDVElWSVRZX1BTNCwgRFJYX0lOQUNUSVZJVFlfUFM1LAorICAgIERSWF9JTkFDVElWSVRZX1BTNiwgRFJYX0lOQUNUSVZJVFlfUFM4LCBEUlhfSU5BQ1RJVklUWV9QUzEwLCBEUlhfSU5BQ1RJVklUWV9QUzIwLCBEUlhfSU5BQ1RJVklUWV9QUzMwLAorICAgIERSWF9JTkFDVElWSVRZX1BTNDAsIERSWF9JTkFDVElWSVRZX1BTNTAsIERSWF9JTkFDVElWSVRZX1BTNjAsIERSWF9JTkFDVElWSVRZX1BTODAsIERSWF9JTkFDVElWSVRZX1BTMTAwLAorICAgIERSWF9JTkFDVElWSVRZX1BTMjAwLCBEUlhfSU5BQ1RJVklUWV9QUzMwMCwgRFJYX0lOQUNUSVZJVFlfUFM1MDAsIERSWF9JTkFDVElWSVRZX1BTNzUwLCBEUlhfSU5BQ1RJVklUWV9QUzEyODAsCisgICAgRFJYX0lOQUNUSVZJVFlfUFMxOTIwLCBEUlhfSU5BQ1RJVklUWV9QUzI1NjAsIERSWF9JTkFDVElWSVRZX1BTMAorfSBlcnJjX2VtYWNfZHJ4X2luYWN0aXZpdHlfdGltZXJfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRFJYX1JFVFhfVElNRVJfUFMxLCBEUlhfUkVUWF9USU1FUl9QUzIsIERSWF9SRVRYX1RJTUVSX1BTNCwgRFJYX1JFVFhfVElNRVJfUFM2LCBEUlhfUkVUWF9USU1FUl9QUzgsIAorICAgIERSWF9SRVRYX1RJTUVSX1BTMTYsIERSWF9SRVRYX1RJTUVSX1BTMjQsIERSWF9SRVRYX1RJTUVSX1BTMzMsIERSWF9SRVRYX1RJTUVSX1BTMCwKKyAgICBEUlhfUkVUWF9USU1FUl9QUzQwLCBEUlhfUkVUWF9USU1FUl9QUzY0LCBEUlhfUkVUWF9USU1FUl9QUzgwLCBEUlhfUkVUWF9USU1FUl9QUzk2LAorICAgIERSWF9SRVRYX1RJTUVSX1BTMTEyLCBEUlhfUkVUWF9USU1FUl9QUzEyOCwgRFJYX1JFVFhfVElNRVJfUFMxNjAsIERSWF9SRVRYX1RJTUVSX1BTMzIwCit9IGVycmNfZW1hY19kcnhfcmV0eF90aW1lcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBEUlhfVUxfUkVUWF9USU1FUl9QUzAsIERSWF9VTF9SRVRYX1RJTUVSX1BTMSwgRFJYX1VMX1JFVFhfVElNRVJfUFMyLCBEUlhfVUxfUkVUWF9USU1FUl9QUzQsIERSWF9VTF9SRVRYX1RJTUVSX1BTNiwgRFJYX1VMX1JFVFhfVElNRVJfUFM4LCAKKyAgICBEUlhfVUxfUkVUWF9USU1FUl9QUzE2LCBEUlhfVUxfUkVUWF9USU1FUl9QUzI0LCBEUlhfVUxfUkVUWF9USU1FUl9QUzMzLCBEUlhfVUxfUkVUWF9USU1FUl9QUzQwLCBEUlhfVUxfUkVUWF9USU1FUl9QUzY0LCAKKyAgICBEUlhfVUxfUkVUWF9USU1FUl9QUzgwLCBEUlhfVUxfUkVUWF9USU1FUl9QUzk2LCBEUlhfVUxfUkVUWF9USU1FUl9QUzExMiwgRFJYX1VMX1JFVFhfVElNRVJfUFMxMjgsIERSWF9VTF9SRVRYX1RJTUVSX1BTMTYwLCBEUlhfVUxfUkVUWF9USU1FUl9QUzMyMAorfSBlcnJjX2VtYWNfZHJ4X3VsX3JldHhfdGltZXJfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgTE9OR19EUlhfQ1lDTEVfMTAsIExPTkdfRFJYX0NZQ0xFXzIwLCBMT05HX0RSWF9DWUNMRV8zMiwgTE9OR19EUlhfQ1lDTEVfNDAsIExPTkdfRFJYX0NZQ0xFXzY0LAorICAgIExPTkdfRFJYX0NZQ0xFXzgwLCBMT05HX0RSWF9DWUNMRV8xMjgsIExPTkdfRFJYX0NZQ0xFXzE2MCwgTE9OR19EUlhfQ1lDTEVfMjU2LCBMT05HX0RSWF9DWUNMRV8zMjAsCisgICAgTE9OR19EUlhfQ1lDTEVfNTEyLCBMT05HX0RSWF9DWUNMRV82NDAsIExPTkdfRFJYX0NZQ0xFXzEwMjQsIExPTkdfRFJYX0NZQ0xFXzEyODAsIExPTkdfRFJYX0NZQ0xFXzIwNDgsCisgICAgTE9OR19EUlhfQ1lDTEVfMjU2MCwgTE9OR19EUlhfQ1lDTEVfNjAsIExPTkdfRFJYX0NZQ0xFXzcwCit9IGVycmNfZW1hY19sb25nX2RyeF9jeWNsZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBTSE9SVF9EUlhfQ1lDTEVfMiwgU0hPUlRfRFJYX0NZQ0xFXzUsIFNIT1JUX0RSWF9DWUNMRV84LCBTSE9SVF9EUlhfQ1lDTEVfMTAsIFNIT1JUX0RSWF9DWUNMRV8xNiwKKyAgICBTSE9SVF9EUlhfQ1lDTEVfMjAsIFNIT1JUX0RSWF9DWUNMRV8zMiwgU0hPUlRfRFJYX0NZQ0xFXzQwLCBTSE9SVF9EUlhfQ1lDTEVfNjQsIFNIT1JUX0RSWF9DWUNMRV84MCwKKyAgICBTSE9SVF9EUlhfQ1lDTEVfMTI4LCBTSE9SVF9EUlhfQ1lDTEVfMTYwLCBTSE9SVF9EUlhfQ1lDTEVfMjU2LCBTSE9SVF9EUlhfQ1lDTEVfMzIwLCBTSE9SVF9EUlhfQ1lDTEVfNTEyLAorICAgIFNIT1JUX0RSWF9DWUNMRV82NDAsIFNIT1JUX0RSWF9DWUNMRV80Cit9IGVycmNfZW1hY19zaG9ydF9kcnhfY3ljbGVfZW51bTsKKworCisKK3R5cGVkZWYgZW51bQoreworICAgIFBFUklPRElDX1BIUl8xMCwgUEVSSU9ESUNfUEhSXzIwLCBQRVJJT0RJQ19QSFJfNTAsIFBFUklPRElDX1BIUl8xMDAsIAorICAgIFBFUklPRElDX1BIUl8yMDAsIFBFUklPRElDX1BIUl81MDAsIFBFUklPRElDX1BIUl8xMDAwLCBQRVJJT0RJQ19QSFJfSU5GCit9IGVycmNfZW1hY19wZXJpb2RpY19waHJfdGltZXJfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgUFJPSElCSVRfUEhSXzAsIFBST0hJQklUX1BIUl8xMCwgUFJPSElCSVRfUEhSXzIwLCBQUk9ISUJJVF9QSFJfNTAsCisgICAgUFJPSElCSVRfUEhSXzEwMCwgUFJPSElCSVRfUEhSXzIwMCwgUFJPSElCSVRfUEhSXzUwMCwgUFJPSElCSVRfUEhSXzEwMDAKK30gZXJyY19lbWFjX3Byb2hpYml0X3Bocl90aW1lcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBETF9QQVRITE9TU19DSEFOR0VfMSwgRExfUEFUSExPU1NfQ0hBTkdFXzMsIERMX1BBVEhMT1NTX0NIQU5HRV82LCBETF9QQVRITE9TU19DSEFOR0VfSU5GCit9IGVycmNfZW1hY19waHJfZGxfcGF0aGxvc3NfY2hhbmdlX2VudW07CisKK3R5cGVkZWYgZW51bSAKK3sKKyAgICBCUlFfUFJPSElCSVRfUzAsIEJSUV9QUk9ISUJJVF9TMERPVDQsIEJSUV9QUk9ISUJJVF9TMERPVDgsIEJSUV9QUk9ISUJJVF9TMURPVDYsCisgICAgQlJRX1BST0hJQklUX1MzLCBCUlFfUFJPSElCSVRfUzYsIEJSUV9QUk9ISUJJVF9TMTIsIEJSUV9QUk9ISUJJVF9TMzAKK30gZXJyY19lbWFjX2JycV9wcm9oaWJpdF90aW1lcl9lbnVtOworCit0eXBlZGVmIGVudW0gCit7CisgICAgRVJSQ19FTUFDX1RBX0lORk9fUkVRX1RZUEVfU1RPUCwKKyAgICBFUlJDX0VNQUNfVEFfSU5GT19SRVFfVFlQRV9TVEFSVAorfSBlcnJjX2VtYWNfdGFfaW5mb19yZXFfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTUFDX0VSUkNfUkFfRVJST1JfRVJSQ19UUklHR0VSICAgICA9IDAsCisgICAgRU1BQ19FUlJDX1JBX0VSUk9SX05PTl9FUlJDX1RSSUdHRVIgPSAweDAxCit9IGVtYWNfZXJyY19yYV9lcnJvcl9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUlJDX0VNQUNfSERBVEFfSU5EX0lOVkFMSUQgPSAwLAorICAgIEVSUkNfRU1BQ19IREFUQV9JTkRfTE9XLAorICAgIEVSUkNfRU1BQ19IREFUQV9JTkRfSElHSAorfSBlcnJjX2VtYWNfaGRhdGFfaW5kX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVNQUNfRVJSQ19MMV9SRUxfQ0FVU0VfVEEgPSAwLAorICAgIEVNQUNfRVJSQ19MMV9SRUxfQ0FVU0VfU1IgPSAweDAxLAorfSBlbWFjX2VycmNfdWxfcmVsX2NhdXNlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVNQUNfRVJSQ19EUlhfSU5DX0dBUF9SRVFfVFlQRV9TVE9QLAorICAgIEVNQUNfRVJSQ19EUlhfSU5DX0dBUF9SRVFfVFlQRV9TVEFSVAorfSBlcnJjX2VtYWNfZHJ4X2luY19nYXBfcmVxX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICBFUlJDX0VNQUNfQ0NDSF9DQVVTRV9DT05OX1JFUSAgPSAwLAorICAgRVJSQ19FTUFDX0NDQ0hfQ0FVU0VfUkVFU1RfUkVRID0gMHgwMQorfSBlcnJjX2VtYWNfY2NjaF9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTUFDX1NDRUxMX0RFQUNUSVZBVElPTl9USU1FUl9JTkZJTklUWSwgIC8vIGRlZmFsdXQgdmFsdWUKKyAgICBFTUFDX1NDRUxMX0RFQUNUSVZBVElPTl9USU1FUl9SRjIsCisgICAgRU1BQ19TQ0VMTF9ERUFDVElWQVRJT05fVElNRVJfUkY0LAorICAgIEVNQUNfU0NFTExfREVBQ1RJVkFUSU9OX1RJTUVSX1JGOCwKKyAgICBFTUFDX1NDRUxMX0RFQUNUSVZBVElPTl9USU1FUl9SRjE2LAorICAgIEVNQUNfU0NFTExfREVBQ1RJVkFUSU9OX1RJTUVSX1JGMzIsCisgICAgRU1BQ19TQ0VMTF9ERUFDVElWQVRJT05fVElNRVJfUkY2NCwKKyAgICBFTUFDX1NDRUxMX0RFQUNUSVZBVElPTl9USU1FUl9SRjEyOAorfWVtYWNfc2NlbGxfZGVhY3RpdmF0aW9uX3RpbWVyX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfRU1BQ19UVElfQlVORExJTkdfRElTQUJMRUQsCisgICAgRVJSQ19FTUFDX1RUSV9CVU5ETElOR19OT1JNQUwsCisgICAgRVJSQ19FTUFDX1RUSV9CVU5ETElOR19FTkhBTkNFRF9GREQKK30gZXJyY19lbWFjX3R0aV9idW5kbGluZ19tb2RlX2VudW07CisKKyNpZiBkZWZpbmVkKF9fWEwxU0lNX0VMMV9fKQorLy8gb2xkIHN0cnVjdCBmb3IgWEwxU2ltIHRlc3QgY2FzZSB1c2UKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgZXJyY19lbWFjX3JhX3Bvd19yYW1waW5nX2VudW0gcG93ZXJfcmFtcGluZ19zdGVwOworICAgIGVycmNfZW1hY19wcmVhbWJsZV9pbml0X3Bvd19lbnVtIHByZWFtYmxlX2luaXRfcmVjX3RhcmdldF9wb3dlcjsgICAgCisgICAgZXJyY19lbWFjX3ByZWFtYmxlX3R4X21heF9lbnVtIHByZWFtYmxlX3RyYW5zX21heDsKK30gZXJyY19lbWFjX3VsX3NjZWxsX3BhcmFtc19zdHJ1Y3Q7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggc2NlbGxfaW5kZXg7CisgICAgZXJyY19lbWFjX3JhX3Bvd19yYW1waW5nX2VudW0gcG93ZXJfcmFtcGluZ19zdGVwOworICAgIGVycmNfZW1hY19wcmVhbWJsZV9pbml0X3Bvd19lbnVtIHByZWFtYmxlX2luaXRfcmVjX3RhcmdldF9wb3dlcjsgICAgCisgICAgZXJyY19lbWFjX3ByZWFtYmxlX3R4X21heF9lbnVtIHByZWFtYmxlX3RyYW5zX21heDsKK30gZXJyY19lbWFjX3NjZWxsX3VsX3BhcmFtc19zdHJ1Y3Q7CisKK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfRU1BQ19TQ0VMTF9OT1RfQ09ORklHVVJFRCAgPSAwLAorICAgIEVSUkNfRU1BQ19TQ0VMTF9BTExfREVBQ1RJVkFURUQgPSAxLAorICAgIEVSUkNfRU1BQ18xX1NDRUxMX0FDVElWQVRFRCAgICAgPSAyICAgIAorfWVycmNfZW1hY19jYV9hY3RpdmF0ZV9zdGF0ZV9lbnVtOworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGVycmNfZW1hY19yYV9wcmVhbWJsZV9uYl9lbnVtICAgICAgICAgICByYV9wcmVhbWJsZV9uYl9pbmRleDsKKyAgICBlcnJjX2VtYWNfcmFfcG93X3JhbXBpbmdfZW51bSAgICAgICAgICAgcmFfcG93X3JhbXBpbmdfaW5kZXg7CisgICAgZXJyY19lbWFjX3ByZWFtYmxlX2luaXRfcG93X2VudW0gICAgICAgIHJhX3ByZWFtYmxlX2luaXRfcG93X2luZGV4OworICAgIGVycmNfZW1hY19wcmVhbWJsZV90eF9tYXhfZW51bSAgICAgICAgICByYV9wcmVhbWJsZV90eF9tYXhfaW5kZXg7CisgICAgZXJyY19lbWFjX3Jhcl93bmRfc3pfZW51bSAgICAgICAgICAgICAgIHJhX3Jhcl93bmRfc3pfaW5kZXg7CisgICAgZXJyY19lbWFjX2NyX3RpbWVyX2VudW0gICAgICAgICAgICAgICAgIHJhX2NyX3RpbWVyX2luZGV4OworCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhX21zZzNfdHhfbWF4OworICAgIAorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9hX3ZhbGlkOworICAgIGVycmNfZW1hY19yYV9ncm91cF9hX3N6X2VudW0gICAgICAgICAgICByYV9ncm91cF9hX3N6X2luZGV4OworICAgIGVycmNfZW1hY19yYV9tc2dfc3pfZ3JvdXBfYV9lbnVtICAgICAgICByYV9tc2dfc3pfZ3JvdXBfYV9pbmRleDsKKyAgICBlcnJjX2VtYWNfbXNnX3Bvd19vZmZzZXRfZ3JvdXBfYl9lbnVtICAgcmFfbXNnX3Bvd19vZmZzZXRfZ3JvdXBfYl9pbmRleDsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFfZGVkaWNhdGVkX3ZhbGlkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXBpZDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJhY2hfbWFzazsKKworI2lmIGRlZmluZWQoX19YTDFTSU1fRUwxX18pCisgICAgLy8gb2xkIHN0cnVjdCBmb3IgWEwxU2ltIHRlc3QgY2FzZSB1c2UKKyAgICBlcnJjX2VtYWNfdWxfc2NlbGxfcGFyYW1zX3N0cnVjdCAgICAgICAgdWxfc2NlbGxfcGFyYW1zOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bF9zY2VsbF9wYXJhbXNfYXJlX3ZhbGlkOworI2Vsc2UKKyAgICBlcnJjX2VtYWNfc2NlbGxfdWxfcGFyYW1zX3N0cnVjdCAgICAgICAgc2NlbGxfcGFyYW1zW0VSUkNfRU1BQ19NQVhfU0NFTExfTkJdOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9zY2VsbF9wYXJhbV9udW07CisjZW5kaWYgICAgCit9IGVtYWNfcmFfY29uZmlnX2luZm9fc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgZXJyY19lbWFjX21heF9oYXJxX3R4X2VudW0gICAgICAgICAgICAgIG1heF9oYXJxX3R4X2luZGV4OworICAgIGVycmNfZW1hY19wZXJpb2RpY19ic3JfdGltZXJfZW51bSAgICAgICBwZXJpb2RpY19ic3JfdGltZXJfaW5kZXg7CisgICAgZXJyY19lbWFjX3JldHhfYnNyX3RpbWVyX2VudW0gICAgICAgICAgIHJldHhfYnNyX3RpbWVyX2luZGV4OworICAgIGVycmNfZW1hY190dGlfYnVuZGxpbmdfbW9kZV9lbnVtICAgICAgICB0dGlfYnVuZGxpbmc7CisKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfYnNyX3NpemVzOworfSBlbWFjX3NjaGVkX2NvbmZpZ19pbmZvX3N0cnVjdDsKKworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgZXJyY19lbWFjX29uX2R1cmF0aW9uX3RpbWVyX2VudW0gICAgICAgIG9uX2R1cmF0aW9uX3RpbWVyX2luZGV4OworICAgIGVycmNfZW1hY19kcnhfaW5hY3Rpdml0eV90aW1lcl9lbnVtICAgICBkcnhfaW5hY3Rpdml0eV90aW1lcl9pbmRleDsKKyAgICBlcnJjX2VtYWNfZHJ4X3JldHhfdGltZXJfZW51bSAgICAgICAgICAgZHJ4X3JldHhfdGltZXJfaW5kZXg7CisgICAgZXJyY19lbWFjX2xvbmdfZHJ4X2N5Y2xlX2VudW0gICAgICAgICAgIGxvbmdfZHJ4X2N5Y2xlX2luZGV4OworICAgIAorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcnhfdWxfcmV0eF90aW1lcl92YWxpZDsKKyAgICBlcnJjX2VtYWNfZHJ4X3VsX3JldHhfdGltZXJfZW51bSAgICAgICAgZHJ4X3VsX3JldHhfdGltZXJfaW5kZXg7CisgICAgCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2N5Y2xlX3ZhbGlkOworICAgIGVycmNfZW1hY19zaG9ydF9kcnhfY3ljbGVfZW51bSAgICAgICAgICBzaG9ydF9kcnhfY3ljbGVfaW5kZXg7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeF9zaG9ydF9jeWNsZV90aW1lcjsKKworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcnhfc3RhcnRfb2Zmc2V0OyAKK30gZW1hY19kcnhfY29uZmlnX2luZm9fc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgZXJyY19lbWFjX3BlcmlvZGljX3Bocl90aW1lcl9lbnVtICAgICAgIHBlcmlvZGljX3Bocl90aW1lcl9pbmRleDsKKyAgICBlcnJjX2VtYWNfcHJvaGliaXRfcGhyX3RpbWVyX2VudW0gICAgICAgcHJvaGliaXRfcGhyX3RpbWVyX2luZGV4OworICAgIGVycmNfZW1hY19waHJfZGxfcGF0aGxvc3NfY2hhbmdlX2VudW0gICBwaHJfZGxfcGF0aGxvc3NfY2hhbmdlX2luZGV4OworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX3BocjsKKy8vI2lmZGVmICAgIF9fRU5EQ19fCisgICAga2FsX2Jvb2wgICAgZHVhbGNvbm5lY3Rpdml0eV9waHI7CisgICAga2FsX2Jvb2wgICAgZHVhbGNvbm5lY3Rpdml0eV9waHJNb2RlT3RoZXJDRzsgLy8gS0FMX1RSVUU6IHJlYWwsIG90aGVyd2lzZSBLQUxfRkFMU0UuIG9ubHkgdmFsaWQgaWYgZHVhbGNvbm5lY3Rpdml0eV9waHIgaXMgVFJVRS4KKy8vI2VuZGlmICAgIC8qX19FTkRDX18qLworfSBlbWFjX3Bocl9jb25maWdfaW5mb19zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfYm9vbCAgICBzcl9tYXNrOyAgLy9yOSBzciBtYXNrCisgICAga2FsX3VpbnQ4ICAgbGNpZDsKKyAgICBrYWxfdWludDggICByYl9pZHg7CisgICAgZXJyY19lbDJfcmJfdHlwZV9lbnVtICByYl90eXBlOyAgLyogU1JCIG9yIERSQiAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgcmJpZDsgICAgIC8qIFJCIElkZW50aXR5LCB2YWx1ZSByYW5nZTogMS0zMiwgU1JCOiAxLTIsIERSQjogMS0zMiAqLworICAgIAorICAgIC8vL1JCIGRpcmVjdGlvbgorICAgIC8vL1VMOiAweDAxIERMOiAweDAyIEJpLWRpcmVjdGlvbiAweDAzCisgICAgLy8vRU1BQ19SQl9VTF9NQVNLIDB4MDEKKyAgICAvLy9FTUFDX1JCX0RMX01BU0sgMHgwMgorICAgIGthbF91aW50OCAgIGRpcmVjdGlvbjsKKyAgICBrYWxfdWludDggICBsY2c7CisgICAga2FsX3VpbnQ4ICAgdWxfcHJpb3JpdHk7CisgICAga2FsX2Jvb2wgICAgbG9naWNhbF9jaGFubmVsX3NyX3Byb2hpYml0X3RpbWVyX2lzX3VzZWQ7CisgICAga2FsX2Jvb2wgICAgbG9naWNhbF9jaGFubmVsX2JycV9wcm9oaWJpdF90aW1lcl9pbmRleF9pc192YWxpZDsKKyAgICBlcnJjX2VtYWNfYnJxX3Byb2hpYml0X3RpbWVyX2VudW0gICAgICAgICAgbG9naWNhbF9jaGFubmVsX2JycV9wcm9oaWJpdF90aW1lcl9pbmRleDsKK30gZXJyY19lbWFjX29wZW5fcmJfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCByYl9pZHg7CisgICAgZXJyY19lbDJfcmJfdHlwZV9lbnVtICByYl90eXBlOyAgLyogU1JCIG9yIERSQiAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgcmJpZDsgICAgIC8qIFJCIElkZW50aXR5LCB2YWx1ZSByYW5nZTogMS0zMiwgU1JCOiAxLTIsIERSQjogMS0zMiAqLworICAgIGthbF91aW50OCBkaXJlY3Rpb247Cit9IGVycmNfZW1hY19jbG9zZV9yYl9zdHJ1Y3Q7CisKKy8vIE1TR19JRF9FUlJDX0VNQUNfTUVBU19HQVBfSU5ECit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGdhcF9wYXR0ZXJuOyAvLzA6IGdhcD00MCwgMTogZ2FwPTgwCisgICAga2FsX3VpbnQ4IG9mZnNldDsgICAgICAvLzB4RkY6IG5vIGdhcAorCisjaWZkZWYgX19FTDJfQVJDSF9WMl9fCisgICAgLyoqCisgICAgICogVGhlIHBhcmFtZXRlciAnZnIxLUdhcC1yMTUnIGluIE1lYXNDb25maWcuCisgICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGdhcCBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIG1lYXN1cmVtZW50cyBvbiBGUjEuCisgICAgICogU2hvdWxkIGJlIHNldCB0byBGQUxTRSB3aGVuIEVOREMgaXMgbm90IGNvbmZpZ3VyZWQuKi8KKyAgIGthbF9ib29sICAgZnIxX2dhcDsKKyAgICAvKioKKyAgICAgKiBUaGUgcGFyYW1ldGVyICdtZ3RhLXIxNScgaW4gTWVhc0NvbmZpZy4KKyAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIHRpbWluZyBhZHZhbmNlIHZhbHVlIG9mIDAuNW1zIGlzIGFwcGxpY2FibGUgdG8gdGhlIG1lYXN1cmVtZW50IGdhcCBjb25maWd1cmF0aW9uIHByb3ZpZGVkIGJ5IEUtVVRSQU4uKi8KKyAgICBrYWxfYm9vbCAgbWd0YTsKKyNlbmRpZiAvKiBfX0VMMl9BUkNIX1YyX18gKi8KK30gZXJyY19lbWFjX21lYXNfZ2FwX2luZF9zdHJ1Y3Q7CisKKyNpZmRlZiBfX0VMMl9BUkNIX1YyX18KKy8vIHJlZmVyIGVsMV9jaF90ZG1fcGF0dGVybl9jZmdfc3RydWN0IGluIGVsMV9lcnJjX3N0cnVjdC5oCit0eXBlZGVmIHN0cnVjdAoreworICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRkbS1QYXR0ZXJuQ29uZmlnLXIxNSBpbiBSUkNDb25uZWN0aW9uUmVjb25maWd1cmF0aW9uLXYxNXgwLUlFcyBpcyBzZXR1cCBvciBub3QqKi8KKyAgIC8qKiBVTC9ETCByZWZlcmVuY2UgY29uZmlndXJhdGlvbiBpbmRpY2F0aW5nIHRoZSB0aW1lIGR1cmluZyB3aGljaCBhIFVFIGNvbmZpZ3VyZWQgd2l0aCBFTi1EQyBpcyBhbGxvd2VkIHRvIHRyYW5zbWl0LiAqKi8KKyAgIGthbF9ib29sIHBhdHRlcm5fdmFsaWQ7CisgICAKKyAgIC8qKiBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIG9ubHkgdmFsaWQgd2hlbiBwYXR0ZXJuX3ZhbGlkID0gS0FMX1RSVUUgKiovCisgICAvKiogQ29ycmVzcG9uZHMgdG8gc3ViZnJhbWVBc3NpZ25tZW50LXIxNSwKKyAgICogSW5kaWNhdGVzIFVMLyBETCBzdWJmcmFtZSBjb25maWd1cmF0aW9uIHdoZXJlIDA6Q29uZmlndXJhdGlvbiAwLCAxOiBDb25maWd1cmF0aW9uIDEgZXRjLgorICAgKiB2YWx1ZTogMC4uNgorICAgKiovCisgICBrYWxfdWludDggc3ViZnJhbWVfYXNzaWduOworICAgCisgICAvKiogQ29ycmVzcG9uZHMgdG8gaGFycS1PZmZzZXQtcjE1LAorICAgICAgKiBJbmRpY2F0ZXMgYSBIQVJRIHN1YmZyYW1lIG9mZnNldCB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIHN1YmZyYW1lcyBkZXNpZ25hdGVkIGFzIFVMIGluIHRoZSBhc3NvY2lhdGVkIHN1YnJhbWUgYXNzaWdubWVudC4KKyAgICAgICogdmFsdWU6IDAuLjkKKyAgICAgICoqLworICAga2FsX3VpbnQ4IGhhcnFfb2Zmc2V0OworICAgIAorfSBlbWFjX3RkbV9wYXR0ZXJuX2NvbmZpZ19pbmZvX3N0cnVjdDsKKyNlbmRpZgorCisvKiBDSE0gTUJNUyBzdXBwb3J0IHN0YXJ0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUlJDX0VNQUNfQ09ORklHX1RZUEVfQUxMICAgICAgID0gMCwgLy8gY29uZmlndXJlIFNDSCBvbmx5LCBvciBjb25maWd1cmUgYm90aCBTQ0grTUNICisgICAgRVJSQ19FTUFDX0NPTkZJR19UWVBFX01DSF9PTkxZICA9IDEgIC8vIGNvbmZpZ3VyZSBNQ0ggb25seQorfSBlcnJjX2VtYWNfY29uZmlnX3R5cGVfZW51bTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICBtYnNmbl9hcmVhX2lkOyAgLy8gMH4yNTUKKworICAgIC8vIG51bWJlcmVkIGJ5IGVSUkMgYW5kIG5vdCBmcm9tIE5XLCAKKyAgICAvLyBJZiBvbmUgY2FycmllciBpcyBzdXBwb3J0ZWQsIHJhbmdlIDB+NworICAgIC8vIElmIHR3byBjYXJyaWVycyBhcmUgc3VwcG9ydGVkLCByYW5nZSAwfjE1CisgICAga2FsX3VpbnQ4ICAgbWNjaF9pZHg7Cit9IGVycmNfZW1hY19vcGVuX21jY2hfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCAgIG1ic2ZuX2FyZWFfaWQ7ICAvLyAwfjI1NSwgY3VycmVudGx5IGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkKKyAgICBrYWxfdWludDggICBtY2NoX2lkeDsKK30gZXJyY19lbWFjX2Nsb3NlX21jY2hfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCAgIG1ic2ZuX2FyZWFfaWQ7ICAvLyAwfjI1NQorICAgIGthbF91aW50OCAgIHBtY2hfaWQ7ICAgICAgICAvLyAwfjE1LCBudW1iZXJlZCBieSBlUlJDIGFuZCBub3QgZnJvbSBOVyAoZGlyZWN0bHkgdXNlIHRoZSBpbmRleCBpbiBhc24pCisgICAga2FsX3VpbnQ4ICAgbGNpZDsgICAgICAgICAgIC8vIDB+MjgKKyAgICBrYWxfdWludDggICBtcmJfaWR4OyAgICAgICAgLy8gbnVtYmVyZWQgYnkgZVJSQywgVGhlIHJhbmdlIG9mIG1yYl9pZHggZGVwZW5kcyBvbiBMMiBIVyBjYXBhYmlsaXR5Cit9IGVycmNfZW1hY19vcGVuX21yYl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgbWJzZm5fYXJlYV9pZDsgIC8vIDB+MjU1LCBjdXJyZW50bHkgZm9yIGRlYnVnIHB1cnBvc2Ugb25seQorICAgIGthbF91aW50OCAgIHBtY2hfaWQ7ICAgICAgICAvLyAwfjE1LCBjdXJyZW50bHkgZm9yIGRlYnVnIHB1cnBvc2Ugb25seQorICAgIGthbF91aW50OCAgIGxjaWQ7ICAgICAgICAgICAvLyAwfjI4LCBjdXJyZW50bHkgZm9yIGRlYnVnIHB1cnBvc2Ugb25seQorICAgIGthbF91aW50OCAgIG1yYl9pZHg7ICAgICAgICAvLyBudW1iZXJlZCBieSBlUlJDLCBUaGUgcmFuZ2Ugb2YgbXJiX2lkeCBkZXBlbmRzIG9uIEwyIEhXIGNhcGFiaWxpdHkKK30gZXJyY19lbWFjX2Nsb3NlX21yYl9zdHJ1Y3Q7CisKKy8qIENITSBNQk1TIHN1cHBvcnQgZW5kICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHN0YWdfaWQ7CisgICAgZXJyY19lbWFjX3RhX3RpbWVyX2VudW0gICAgIHNfdGFnX3RhX3RpbWVyOworfSBlcnJjX2VtYWNfc3RhZ190aW1lcl9pbmZvX3N0cnVjdDsKKworLy8gTVNHX0lEX0VSUkNfRU1BQ19DT05GSUdfUkVRCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgZXJyY19lbWFjX2NvbmZpZ190eXBlX2VudW0gIGNvbmZpZ190eXBlOyAgICAgICAgICAgICAgICAgICAgLy9jb25maWd1cmUgZWl0aGVyIE1DSCBvbmx5IG9yIGFsbAorICAgIGVycmNfZW1hY19jb25maWdfY2F1c2VfZW51bSBjYXVzZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSE8gb3IgUkVTRVQgb3Igbm90CisgICAgZXJyY19lbWFjX3RhX3RpbWVyX2VudW0gICAgIHRhX3RpbWVyX2luZGV4OyAgICAgICAgICAgICAgICAgLy9UQSB0aW1lciBpbmRleAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBzcl9wcm9oaWJpdF90aW1lcjsgICAgICAgICAgICAgIC8vU1IgcHJvaGliaXQgdGltZXIgaW5kZXgKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgb3Blbl9yYl9uYjsgICAgICAgICAgICAgICAgICAgICAvL251bWJlciBvZiBvcGVuIFJCCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNsb3NlX3JiX25iOyAgICAgICAgICAgICAgICAgICAgLy9udW1iZXIgb2YgY2xvc2UgUkIKKyAgICBlcnJjX2VtYWNfb3Blbl9yYl9zdHJ1Y3QgIG9wZW5fcmJbRVJSQ19FTUFDX01BWF9SQl9OQl07CisgICAgZXJyY19lbWFjX2Nsb3NlX3JiX3N0cnVjdCBjbG9zZV9yYltFUlJDX0VNQUNfTUFYX1JCX05CXTsKKyAgICAKKyAgICBlcnJjX2VtYWNfaWNkX2V2ZW50X2NhdXNlX2VudW0gaWNkX2V2ZW50X2NhdXNlOyAgICAgICAgICAgICAvL0lDRCBNQUNfUkVTRVRfRVZFTlQgYW5kIE1BQ19DT05GSUdVUkFUSU9OX0VWRU5UCisKKyAgICAvL0VNQUNfQ09ORklHX0lORk9fUkFfTUFTSworICAgIC8vRU1BQ19DT05GSUdfSU5GT19TQ0hFRF9NQVNLCisgICAgLy9FTUFDX0NPTkZJR19JTkZPX0RSWF9NQVNLCisgICAgLy9FTUFDX0NPTkZJR19JTkZPX1BIUl9NQVNLCisgICAgLy9FTUFDX0NPTkZJR19JTkZQX0NSTlRJX01BU0sgICAgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19iaXRtYXA7CisgICAgZW1hY19yYV9jb25maWdfaW5mb19zdHJ1Y3QgICAgICAgcmFfY29uZmlnX2luZm87CisgICAgZW1hY19zY2hlZF9jb25maWdfaW5mb19zdHJ1Y3QgICAgc2NoZF9jb25maWdfaW5mbzsKKyAgICBlbWFjX2RyeF9jb25maWdfaW5mb19zdHJ1Y3QgICAgICBkcnhfY29uZmlnX2luZm87CisgICAgZW1hY19waHJfY29uZmlnX2luZm9fc3RydWN0ICAgICAgcGhyX2NvbmZpZ19pbmZvOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgICAgIGNfcm50aTsgICAgICAvL25ldyBDLVJOVEkgdmFsdWUKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBkbF9kYXRhX3N1c19mbGc7CisKKyAgICBlbWFjX3NjZWxsX2RlYWN0aXZhdGlvbl90aW1lcl9lbnVtICBzY2VsbF9kZWFjdGl2YXRpb25fdGltZXI7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZF9zY2VsbF9iaXRtYXA7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWx0YW5lb3VzX3B1Y2NoX3B1c2NoOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2NoX2VuaGFuY2VtZW50X21vZGU7CisKKy8qIENITSBNQk1TIHN1cHBvcnQgc3RhcnQgKi8KKyAgICAvL2thbF91aW50OCAgICAgICAgICAgICAgICAgICBvcGVuX21jY2hfbmJbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF07IC8vIGZvciAyIGZyZXEKKyAgICAvL2thbF91aW50OCAgICAgICAgICAgICAgICAgICBjbG9zZV9tY2NoX25iW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdOyAvLyBmb3IgMiBmcmVxCisgICAgLy9lcnJjX2VtYWNfb3Blbl9tY2NoX3N0cnVjdCAgb3Blbl9tY2NoW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NQ0NIX1NVUFBPUlRdOworICAgIC8vZXJyY19lbWFjX2Nsb3NlX21jY2hfc3RydWN0IGNsb3NlX21jY2hbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF1bTUFYX0VNQk1TX01DQ0hfU1VQUE9SVF07CisKKyAgICAvL2thbF91aW50OCAgICAgICAgICAgICAgICAgICBvcGVuX21yYl9uYltNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsgLy8gZm9yIDIgZnJlcQorICAgIC8va2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNsb3NlX21yYl9uYltNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsgLy8gZm9yIDIgZnJlcQorICAgIC8vZXJyY19lbWFjX29wZW5fbXJiX3N0cnVjdCAgIG9wZW5fbXJiW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NUkJfU1VQUE9SVF07CisgICAgLy9lcnJjX2VtYWNfY2xvc2VfbXJiX3N0cnVjdCAgY2xvc2VfbXJiW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NUkJfU1VQUE9SVF07CisvKiBDSE0gTUJNUyBzdXBwb3J0IGVuZCAqLworCisgICAgI2lmIGRlZmluZWQoX19YTDFTSU1fRUwxX18pCisgICAgLy8gb2xkIHN0cnVjdCBmb3IgWEwxU2ltIHRlc3QgY2FzZSB1c2UKKyAgICBlcnJjX2VtYWNfdGFfdGltZXJfZW51bSAgICAgc190YWdfdGFfdGltZXI7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgIHNfdGFnX3RhX3RpbWVyX2lzX3ZhbGlkOworICAgICNlbHNlCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgc190YWdfdGFfdGltZXJfdmFsaWRfbmI7ICAgIC8vbnVtYmVyIG9mIHZhbGlkIHN0YWcgdGltZXIgaW5mbyBuYgorICAgIGVycmNfZW1hY19zdGFnX3RpbWVyX2luZm9fc3RydWN0ICAgIHNfc3RhZ190YV90aW1lcl9pbmZvW0VSUkNfRU1BQ19NQVhfU1RBR19OQl07CisgICAgI2VuZGlmCisKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9jaGFubmVsX3NyX3Byb2hpYml0X3RpbWVyX2lzX3ZhbGlkOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfc3JfcHJvaGliaXRfdGltZXI7IC8qIFZhbHVlIGluIHN1YmZyYW1lcyAqLworCisgICAgZXJyY19lbDJfY2VsbF9ncm91cF9lbnVtICAgICBjZWxsX2dyb3VwOworI2lmZGVmIF9fRUwyX0FSQ0hfVjJfXworICAgIGVtYWNfdGRtX3BhdHRlcm5fY29uZmlnX2luZm9fc3RydWN0ICB0ZG1fcGF0dGVybl9pbmZvOworI2VuZGlmCisKK30gZXJyY19lbWFjX2NvbmZpZ19yZXFfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBlbWFjX2VycmNfcmFfZXJyb3JfY2F1c2VfZW51bSBjYXVzZTsgICAgICAKK30gZXJyY19lbWFjX3JhX2Vycm9yX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBlcnJjX2VtYWNfaGRhdGFfaW5kX2VudW0gdWxfaGRhdGE7CisgICAgZXJyY19lbWFjX2hkYXRhX2luZF9lbnVtIGRsX2hkYXRhOworfSBlcnJjX2VtYWNfaGRhdGFfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50MTYgIGNybnRpOworICAgIGthbF91aW50OCAgIHByZWFtYmxlX3R4X25iOworICAgIGthbF9ib29sICAgIGNvbnRlbnRpb25faW5kOworfSBlcnJjX2VtYWNfY29udGVudGlvbl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgcHJlYW1ibGVfdHhfbmI7CisgICAga2FsX2Jvb2wgICAgY29udGVudGlvbl9pbmQ7Cit9IGVycmNfZW1hY19yYV9pbmZvX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDgJcHJlYW1ibGVfdHhfbmI7CisgICAga2FsX2Jvb2wJY29udGVudGlvbl9pbmQ7CisgICAga2FsX2Jvb2wgICAgbWF4X3R4cG93ZXJfcmVhY2hlZDsKK30gZXJyY19lbWFjX2VzdGZhaWxfcmVwb3J0X2NuZl9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBlbWFjX2VycmNfdWxfcmVsX2NhdXNlX2VudW0gY2F1c2U7CisgICAga2FsX2Jvb2wgc190YWdfaXNfdmFsaWQ7CisgICAga2FsX3VpbnQ4IHNfdGFnOworfSBlcnJjX2VtYWNfbDFfdWxfcmVsX2luZF9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgY2NjaF9zaXplOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBjY2NoWzZdOworICAgIGVycmNfZW1hY19jY2NoX2NhdXNlX2VudW0gICBjYXVzZTsKK30gZXJyY19lbWFjX2NjY2hfZGF0YV9yZXFfc3RydWN0OworCisvKiBOZWVkIHRvIHJlbW92ZSBmb3IgVEs2MjkxIFU0RyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50MzIgcGFnaW5nX2N0cmxfaW5mbzsKKyAgICBxYm1fZ3BkKiAgIHBfcmdwZDsKKyAgICBBQlNfVElDS19USU1FIHByb2NfYWJzX3RpbWU7CisgICAgbHRlX2NlbGxfdGltZSAgIHByb2NfbHRlX3RpbWU7Cit9IGVycmNfZW1hY19wYWdpbmdfaW5kX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQzMiBzaV9jdHJsX2luZm87CisgICAgcWJtX2dwZCogICBwX3JncGQ7ICAgIAorICAgIEFCU19USUNLX1RJTUUgcHJvY19hYnNfdGltZTsKKyAgICBsdGVfY2VsbF90aW1lICAgcHJvY19sdGVfdGltZTsKKworICAgIGthbF91aW50OCAgIGNhcnJpZXJfaW5mbzsgLy9DYXJyaWVyIEluZGV4LCBvbmx5IHZhbGlkIGZvciAwIGFuZCAxCit9IGVycmNfZW1hY19zaV9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICB2b2lkKiAgICAgIHBfZGF0YTsgLy85Mywgc3RhcnQgYWRkcmVzcyBvZiBTUkIgZGF0YSBpbiBWUkIKKyAgICBrYWxfdWludDMyIGRhdGFfbGVuOyAvLzkzLCBsZW5ndGggb2YgU1JCIGRhdGEgaW4gVlJCCisgICAgCit9IGVycmNfZW1hY19jY2NoX2RhdGFfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGVycmNfZW1hY190YV9pbmZvX3JlcV90eXBlX2VudW0gcmVxX3R5cGU7Cit9IGVycmNfZW1hY190YV9pbmZvX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQzMiB0YTsgICAgCisgICAga2FsX3VpbnQ4IHNfdGFnX2lkOworfSBlcnJjX2VtYWNfc190YWdfdGFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgaXNfdmFsaWQ7CisgICAga2FsX3VpbnQzMiB0YTsKKyAgICBrYWxfYm9vbCBzX3RhZ190YV9pc192YWxpZDsKKyAgICBlcnJjX2VtYWNfc190YWdfdGFfc3RydWN0IHNfdGFnX3RhOworfSBlcnJjX2VtYWNfdGFfaW5mb19jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQzMiB0YTsKKyAgICBrYWxfdWludDggdGFnX2lkOworfSBlcnJjX2VtYWNfdGFfaW5mb19pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHRhZ19pZDsKK30gZXJyY19lbWFjX3RhX2luZm9faW52YWxpZF9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgZXJyY19lbWFjX2RyeF9pbmNfZ2FwX3JlcV90eXBlX2VudW0gcmVxX3R5cGU7CisgICAga2FsX3VpbnQzMiBtYXhfaW50ZXJ2YWw7Cit9IGVycmNfZW1hY19kcnhfaW5jX2dhcF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IHNjZWxsX2FjdGl2YXRlX2JtcF9kbDsKKyAgICBrYWxfdWludDggc2NlbGxfYWN0aXZhdGVfYm1wX3VsOworfSBlcnJjX2VtYWNfY2FfYWN0aXZhdGVfaW5kX3N0cnVjdDsKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUlJDX0VNQUNfU1VQUE9SVF9SRUxfUjksCisgICAgRVJSQ19FTUFDX1NVUFBPUlRfUkVMX1IxMCwKKyAgICBFUlJDX0VNQUNfU1VQUE9SVF9SRUxfUjExLAorICAgIEVSUkNfRU1BQ19TVVBQT1JUX1JFTF9SMTIsCisgICAgRVJSQ19FTUFDX1NVUFBPUlRfUkVMX1IxMywKKyAgICBFUlJDX0VNQUNfU1VQUE9SVF9SRUxfUjE0LAorICAgIEVSUkNfRU1BQ19TVVBQT1JUX1JFTF9SMTUsCisgICAgRVJSQ19FTUFDX1NVUFBPUlRfUkVMX0lOVkFMSUQKK30gZXJyY19lbWFjX3N1cHBvcnRfcmVsZWFzZV9lbnVtOworCisKK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfRU1BQ19ETF9RQU1fNjQgICAgID0gMCwKKyAgICBFUlJDX0VNQUNfRExfUUFNXzI1NiAgICA9IDEsCisgICAgRVJSQ19FTUFDX0RMX1FBTV9OVU0gICAgPSAyLAorICAgIEVSUkNfRU1BQ19ETF9RQU1fSU5WQUxJRAorfSBlcnJjX2VtYWNfZGxfbW9kdWxhdGlvbl9lbnVtOworCisKK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfRU1BQ19VTF9RQU1fMTYgICAgID0gMCwKKyAgICBFUlJDX0VNQUNfVUxfUUFNXzY0ICAgICA9IDEsCisgICAgRVJSQ19FTUFDX1VMX1FBTV8yNTYgICAgPSAyLAorICAgIEVSUkNfRU1BQ19VTF9RQU1fTlVNICAgID0gMywKKyAgICBFUlJDX0VNQUNfVUxfUUFNX0lOVkFMSUQKK30gZXJyY19lbWFjX3VsX21vZHVsYXRpb25fZW51bTsKKyAKK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfRU1BQ19ETF9DQVRfMSAgICAgID0gMCwKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzIgICAgICA9IDEsCisgICAgRVJSQ19FTUFDX0RMX0NBVF8zICAgICAgPSAyLAorICAgIEVSUkNfRU1BQ19ETF9DQVRfNCAgICAgID0gMywKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzUgICAgICA9IDQsCisgICAgRVJSQ19FTUFDX0RMX0NBVF82ICAgICAgPSA1LAorICAgIEVSUkNfRU1BQ19ETF9DQVRfNyAgICAgID0gNiwKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzggICAgICA9IDcsCisgICAgRVJSQ19FTUFDX0RMX0NBVF85ICAgICAgPSA4LAorICAgIEVSUkNfRU1BQ19ETF9DQVRfMTAgICAgID0gOSwKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzExICAgICA9IDEwLAorICAgIEVSUkNfRU1BQ19ETF9DQVRfMTIgICAgID0gMTEsCisgICAgRVJSQ19FTUFDX0RMX0NBVF8xMyAgICAgPSAxMiwKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzE0ICAgICA9IDEzLAorICAgIEVSUkNfRU1BQ19ETF9DQVRfMTUgICAgID0gMTQsCisgICAgRVJSQ19FTUFDX0RMX0NBVF8xNiAgICAgPSAxNSwKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzE3ICAgICA9IDE2LAorICAgIEVSUkNfRU1BQ19ETF9DQVRfMTggICAgID0gMTcsCisgICAgRVJSQ19FTUFDX0RMX0NBVF8xOSAgICAgPSAxOCwKKyAgICBFUlJDX0VNQUNfRExfQ0FUXzIwICAgICA9IDE5LAorICAgIEVSUkNfRU1BQ19ETF9DQVRfMjEgICAgID0gMjAsCisgICAgRVJSQ19FTUFDX0RMX0NBVF9OVU0gICAgPSAyMCwKKyAgICBFUlJDX0VNQUNfRExfQ0FUX0lOVkFMSUQKK30gZXJyY19lbWFjX2RsX2NhdGVnb3J5X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVSUkNfRU1BQ19VTF9DQVRfMSAgICAgID0gMCwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzIgICAgICA9IDEsCisgICAgRVJSQ19FTUFDX1VMX0NBVF8zICAgICAgPSAyLAorICAgIEVSUkNfRU1BQ19VTF9DQVRfNCAgICAgID0gMywKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzUgICAgICA9IDQsCisgICAgRVJSQ19FTUFDX1VMX0NBVF82ICAgICAgPSA1LAorICAgIEVSUkNfRU1BQ19VTF9DQVRfNyAgICAgID0gNiwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzggICAgICA9IDcsCisgICAgRVJSQ19FTUFDX1VMX0NBVF85ICAgICAgPSA4LAorICAgIEVSUkNfRU1BQ19VTF9DQVRfMTAgICAgID0gOSwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzExICAgICA9IDEwLAorICAgIEVSUkNfRU1BQ19VTF9DQVRfMTIgICAgID0gMTEsCisgICAgRVJSQ19FTUFDX1VMX0NBVF8xMyAgICAgPSAxMiwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzE0ICAgICA9IDEzLAorICAgIEVSUkNfRU1BQ19VTF9DQVRfMTUgICAgID0gMTQsCisgICAgRVJSQ19FTUFDX1VMX0NBVF8xNiAgICAgPSAxNSwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzE3ICAgICA9IDE2LAorICAgIEVSUkNfRU1BQ19VTF9DQVRfMTggICAgID0gMTcsCisgICAgRVJSQ19FTUFDX1VMX0NBVF8xOSAgICAgPSAxOCwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUXzIwICAgICA9IDE5LAorICAgIEVSUkNfRU1BQ19VTF9DQVRfMjEgICAgID0gMjAsCisgICAgRVJSQ19FTUFDX1VMX0NBVF9OVU0gICAgPSAyMCwKKyAgICBFUlJDX0VNQUNfVUxfQ0FUX0lOVkFMSUQKK30gZXJyY19lbWFjX3VsX2NhdGVnb3J5X2VudW07CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgLy8gU3VwcG9ydCBSZWxlYXNlCisgICAgZXJyY19lbWFjX3N1cHBvcnRfcmVsZWFzZV9lbnVtIHN1cHBvcnRfcmVsZWFzZTsKKworICAgIC8vIENhcGFiaWxpdHkKKyAgICAKKyAgICBlcnJjX2VtYWNfZGxfY2F0ZWdvcnlfZW51bSBkbF9jYXRlZ29yeTsKKyAgICBlcnJjX2VtYWNfdWxfY2F0ZWdvcnlfZW51bSB1bF9jYXRlZ29yeTsKKyAgICBlcnJjX2VtYWNfZGxfbW9kdWxhdGlvbl9lbnVtIGhpZ2hlc3RfZGxfbW9kdWxhdGlvbjsKKyAgICBlcnJjX2VtYWNfdWxfbW9kdWxhdGlvbl9lbnVtIGhpZ2hlc3RfdWxfbW9kdWxhdGlvbjsKKyAgICAKKyAgICAKKyAgICAvLyBGZWF0dXJlcworICAgIGthbF9ib29sIHJlY29tbWVuZEJpdFJhdGVfZW5hYmxlOworCit9IGVycmNfZW1hY19zdXBwb3J0X2NhcGFiaWxpdHlfaW5kX3N0cnVjdDsKKworCisjZW5kaWYgLypFUlJDX0VNQUNfSU5URVJGQUNFX0gqLwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lcnJjX2VtYWNtY2hfbXNnLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VycmNfZW1hY21jaF9tc2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjQ5MDY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lcnJjX2VtYWNtY2hfbXNnLmgKQEAgLTAsMCArMSwyODAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVycmNfZW1hY21jaF9tc2cuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRGVmaW5lIEVSUkMgRU1BQ01DSCBpbnRlcmZhY2UgZW51bXMsIHN0cnVjdHVyZXMgYW5kIGNvbnN0YW50cworICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBFUlJDX0VNQUNNQ0hfTVNHX0gKKyNkZWZpbmUgRVJSQ19FTUFDTUNIX01TR19ICisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorI2luY2x1ZGUgImVsMl9zYXBfY29tbW9uLmgiCisjaW5jbHVkZSAiY29tbW9uX2RlZi5oIgorI2luY2x1ZGUgImVsMV9lbnVtLmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggICBudW07IC8vZmRkOiAxLTYsIHRkZDogMS01CisgICAga2FsX3VpbnQ4ICAgc2ZbTUFYX1NGX0lOX09ORV9SRl07IC8vZmRkOiAxMjM2NzgsIHRkZDogMzQ3ODkKK31zZl9hbGxvY19tYXBfdDsgCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggICByZl9hbGxvY19wZXJpb2Q7IC8qMSwgMiwgNCwgOCwgMTYsIDMyICovCisgICAga2FsX3VpbnQ4ICAgcmZfYWxsb2Nfb2Zmc2V0OyAvKiAwLi4gNyovIC8vIFRPRE86IGlmIG9mZnNldCA+IHBlcmlvZD8KKyAgICBrYWxfYm9vbCAgICBpc19vbmVfZnJhbWVfYWxsb2M7CisgICAgc2ZfYWxsb2NfbWFwX3Qgc2ZfYWxsb2NfbWFwWzRdOworfXNmX2NvbmZpZ190OyAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgICAgIG51bV9zZl9jb25maWc7ICAvKiAwLi4uOCAqLworICAgIHNmX2NvbmZpZ190ICAgIHNmX2NvbmZpZ19saXN0W01BWF9NQlNGTl9BTExPQ0FUSU9OU107Cit9bWJzZm5fc2ZfY29uZmlnX2xpc3RfdDsgCisKKy8vIFNZTkNBUkVBX0NGRwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgIG1ic2ZuX2FyZWFfaWQ7IC8vIDAtMjU1CisgICAga2FsX3VpbnQ4ICAgbm9uX21ic2ZuX3JlZ2lvbl9sZW47IC8vIDEtMgorICAgIGthbF91aW50OCAgIHNpZ25hbE1DUzsgLy8gMiw3LDEzLDE5CisgICAga2FsX3VpbnQ4ICAgb2Zmc2V0OyAvLyAwLTEwCisgICAga2FsX3VpbnQxNiAgcmVwZXRpdGlvbl9wZXJpb2Q7IC8vIDMyLCA2NCwgMTI4LCAyNTYKKyAgICBrYWxfdWludDE2ICBtb2RpZmljYXRpb25fcGVyaW9kOyAvLyA1MTIsIDEwMjQKKyAgICBzZl9hbGxvY19tYXBfdCBzZl9hbGxvY19pbmZvOworICAgIGVsMV9jaF9tY2hfbWNjaF9yZWNlcHRpb25fbW9kZV9lbnVtICAgIHJlY3ZfbW9kZTsgLy8gRVZZX1JQLCBFVllfTVAsIENOR19EVFQKK31tY2NoX2NvbmZpZ190OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIC8va2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHN5bmNhcmVhX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBtY2NoX2NmZ19udW07IC8vIDAtOAorICAgIG1jY2hfY29uZmlnX3QgICAgICAgICAgICAgICBtY2NoX2NmZ1tNQVhfQVJFQV9OVU1fUEVSX0NFTExdOworICAgIG1ic2ZuX3NmX2NvbmZpZ19saXN0X3QgICAgICBzaWIyX3NmX2NvbmZpZ19saXN0OyAKKyAgICAKK30gZXJyY19lbWFjbWNoX3N5bmNhcmVhX2NmZ190OworCisvLyBBUkVBX0NGRwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgIHBtY2hfaWQ7CisgICAga2FsX2Jvb2wgICAgaXNfY2ZnX3BtY2hfaW5mb19saXN0X2V4dDsgLy9NVDYyOTMKKyAgICBrYWxfYm9vbCAgICBpc19oaWdoZXJfb3JkZXJfZGF0YV9tY3M7IC8vTVQ2MjkzCisgICAga2FsX3VpbnQ4ICAgZGF0YU1DUzsgLyogMCAuLjI4Ki8KKyAgICBrYWxfdWludDggICBzZXNzaW9uX251bV9pbl9wbWNoOyAvL01UNjI5MworICAgIGthbF91aW50MTYgIHNmX2FsbG9jX3N0YXJ0OworICAgIGthbF91aW50MTYgIHNmX2FsbG9jX2VuZDsKKyAgICBrYWxfdWludDE2ICBtY2hfc2NoZWRfcGVyaW9kOyAvKiA4LCAxNiwgMzIsIDY0LCAxMjgsIDI1NiwgNTEyLCAxMDI0ICovCisgICAgCit9cG1jaF9pbmZvX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggICBtYnNmbl9hcmVhX2lkOyAvKiAwIC4uIDI1NSAqLworICAgIGthbF91aW50MTYgIGNvbW1vbl9zZl9hbGxvY19wZXJpb2Q7IC8qIDQsIDgsIDE2LCAzMiwgNjQsIDEyOCwgMjU2ICovCisgICAgCisgICAga2FsX3VpbnQ4ICAgbnVtX3NmX2NvbmZpZzsgCisgICAgc2ZfY29uZmlnX3Qgc2ZfY29uZmlnX2xpc3RbTUFYX01CU0ZOX0FMTE9DQVRJT05TXTsKKyAgICAKKyAgICBrYWxfdWludDggICBudW1fcG1jaF9pbmZvOyAgLyogMCByZXByZXNlbnQgYWxsIFBNQ0ggY2xvc2UgKi8KKyAgICBwbWNoX2luZm9fdCBwbWNoX2luZm9fbGlzdFtNQVhfUE1DSF9QRVJfTUJTRk5dOworICAgIAorfW1ic2ZuX2FyZWFfY29uZmlnX3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgLy9rYWxfdWludDggICAgICAgICAgICAgICAgICAgc3luY2FyZWFfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGFyZWFfY2ZnX251bTsgCisgICAgbWJzZm5fYXJlYV9jb25maWdfdCAgICAgICAgIGFyZWFfY2ZnW01BWF9BUkVBX05VTV9QRVJfQ0VMTF07CisgICAgICAgIAorfSBlcnJjX2VtYWNtY2hfc3luY2FyZWFfYXJlYV9jZmdfdDsKKworLy8gTVhDSF9DRkcKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgYXJlYV9pZDsgICAgICAgIC8vIDB+MjU1CisgICAga2FsX3VpbnQ4ICAgbWNjaF9pZHg7ICAgICAgIC8vIG51bWJlcmVkIGJ5IEVSUkMKKyAgICAKK30gZXJyY19lbWFjbWNoX2VzdGFibGlzaF9tY2NoX3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgYXJlYV9pZDsgICAgICAgIC8vIDB+MjU1LCBjdXJyZW50bHkgZm9yIGRlYnVnIHB1cnBvc2Ugb25seQorICAgIGthbF91aW50OCAgIG1jY2hfaWR4OyAgICAgICAvLyBudW1iZXJlZCBieSBFUlJDCisgICAgCit9IGVycmNfZW1hY21jaF9yZWxlYXNlX21jY2hfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICBhcmVhX2lkOyAgICAgICAgLy8gMH4yNTUKKyAgICBrYWxfdWludDggICBwbWNoX2lkOyAgICAgICAgLy8gMH4xNSwgbnVtYmVyZWQgYnkgRVJSQyAoZGlyZWN0bHkgdXNlIHRoZSBpbmRleCBpbiBhc24gaWUpID0gcG1jaF9pZV9pZHgKKyAgICBrYWxfdWludDggICBsY2lkOyAgICAgICAgICAgLy8gMH4yOAorICAgIGthbF91aW50OCAgIG10Y2hfaWR4OyAgICAgICAvLyBudW1iZXJlZCBieSBFUlJDLCBUaGUgcmFuZ2Ugb2YgbXJiX2lkeCBkZXBlbmRzIG9uIEwyIEhXIGNhcGFiaWxpdHkKKyAgICBrYWxfdWludDggICB0bWdpWzZdOyAgICAgICAgLy8gdG1naSBpbmZvIHRvIGlkZW50aWZ5IE1CTVMgc2Vzc2lvbiwgcmVxdWlyZWQgYnkgVlpXIEVNCisgICAgCit9IGVycmNfZW1hY21jaF9lc3RhYmxpc2hfbXRjaF90OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCAgIGFyZWFfaWQ7ICAgICAgICAvLyAwfjI1NSwgY3VycmVudGx5IGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkKKyAgICBrYWxfdWludDggICBwbWNoX2lkOyAgICAgICAgLy8gMH4xNSwgY3VycmVudGx5IGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkKKyAgICBrYWxfdWludDggICBsY2lkOyAgICAgICAgICAgLy8gMH4yOCwgY3VycmVudGx5IGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkKKyAgICBrYWxfdWludDggICBtdGNoX2lkeDsgICAgICAgLy8gbnVtYmVyZWQgYnkgRVJSQywgVGhlIHJhbmdlIG9mIG1yYl9pZHggZGVwZW5kcyBvbiBMMiBIVyBjYXBhYmlsaXR5CisgICAga2FsX3VpbnQ4ICAgdG1naVs2XTsgICAgICAgIC8vIHRtZ2kgaW5mbyB0byBpZGVudGlmeSBNQk1TIHNlc3Npb24sIHJlcXVpcmVkIGJ5IFZaVyBFTQorICAgIAorfSBlcnJjX2VtYWNtY2hfcmVsZWFzZV9tdGNoX3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgLy9rYWxfdWludDggICAgICAgICAgICAgICAgICAgICBzeW5jYXJlYV9pZDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICByZWxlYXNlX21jY2hfbnVtOworICAgIGVycmNfZW1hY21jaF9yZWxlYXNlX21jY2hfdCAgIHJlbGVhc2VfbWNjaFtNQVhfRU1CTVNfTUNDSF9TVVBQT1JUXTsKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgIGVzdGFibGlzaF9tY2NoX251bTsgCisgICAgZXJyY19lbWFjbWNoX2VzdGFibGlzaF9tY2NoX3QgZXN0YWJsaXNoX21jY2hbTUFYX0VNQk1TX01DQ0hfU1VQUE9SVF07IAorICAgIAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRjaF9udW07CisgICAgZXJyY19lbWFjbWNoX3JlbGVhc2VfbXRjaF90ICAgcmVsZWFzZV9tdGNoW01BWF9FTUJNU19NVENIX1NVUFBPUlRdOworCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgZXN0YWJsaXNoX210Y2hfbnVtOworICAgIGVycmNfZW1hY21jaF9lc3RhYmxpc2hfbXRjaF90IGVzdGFibGlzaF9tdGNoW01BWF9FTUJNU19NVENIX1NVUFBPUlRdOworICAgICAgICAKK30gZXJyY19lbWFjbWNoX3N5bmNhcmVhX214Y2hfY2ZnX3Q7CisKKy8vIE1DQ0hfUkNWX01PREVfQ0hBTkdFCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICBrYWxfdWludDggICBtYnNmbl9hcmVhX2lkOworICAgIGVsMV9jaF9tY2hfbWNjaF9yZWNlcHRpb25fbW9kZV9lbnVtICAgIHJlY3ZfbW9kZTsKKyAgICAKK31tY2NoX3JlcHRfbW9kZV9jb25maWdfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICAvL2thbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgc3luY2FyZWFfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBtY2NoX3Jjdl9tb2RlX2NoYW5nZV9udW07CisgICAgbWNjaF9yZXB0X21vZGVfY29uZmlnX3QgICAgICAgICBtY2NoX3Jjdl9tb2RlX2NoYW5nZVtNQVhfQVJFQV9OVU1fUEVSX0NFTExdOyAKKyAgICAKK30gZXJyY19lbWFjbWNoX3N5bmNhcmVhX21jY2hfcmN2X21vZGVfY2hhbmdlX3Q7CisKKy8vIE1UQ0hfU1VTUEVORF9JTkQKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgbGNpZDsgICAgICAgICAgIC8vIDB+MjgKKyAgICBrYWxfdWludDggICBtdGNoX2lkeDsgICAgICAgLy8gbnVtYmVyZWQgYnkgRVJSQywgVGhlIHJhbmdlIG9mIG1yYl9pZHggZGVwZW5kcyBvbiBMMiBIVyBjYXBhYmlsaXR5CisgICAgICAgIAorfSBlcnJjX2VtYWNtY2hfbXRjaF90OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgRVJSQyAtPiBFTUFDTUNICisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLy8gTVNHX0lEX0VSUkNfRU1BQ01DSF9TWU5DQVJFQV9DRkdfUkVRCit0eXBlZGVmIHN0cnVjdAoreworCisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgdGlkOyAvLyAweDAwMDAwMDAwIC0gMHg3RkZGRkZGRgorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBzeW5jYXJlYV9jZmdfdmFsaWRbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF07CisgICAgZXJyY19lbWFjbWNoX3N5bmNhcmVhX2NmZ190IHN5bmNhcmVhX2NmZ1tNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsKKyAgICAgICAgICAgCit9IGVycmNfZW1hY21jaF9zeW5jYXJlYV9jZmdfcmVxX3N0cnVjdDsKKworLy8gTVNHX0lEX0VSUkNfRU1BQ01DSF9BUkVBX0NGR19SRVEKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgICB0aWQ7IC8vIDB4MDAwMDAwMDAgLSAweDdGRkZGRkZGCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgc3luY2FyZWFfYXJlYV9jZmdfdmFsaWRbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF07CisgICAgZXJyY19lbWFjbWNoX3N5bmNhcmVhX2FyZWFfY2ZnX3Qgc3luY2FyZWFfYXJlYV9jZmdbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF07CisgICAgICAgICAgIAorfSBlcnJjX2VtYWNtY2hfYXJlYV9jZmdfcmVxX3N0cnVjdDsKKworLy8gTVNHX0lEX0VSUkNfRU1BQ01DSF9NWENIX0NGR19SRVEKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBlcnJjX2VtYWNtY2hfc3luY2FyZWFfbXhjaF9jZmdfdCBzeW5jYXJlYV9teGNoX2NmZ1tNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsgLy8gZm9yIDIgZnJlcQorICAgIAorfSBlcnJjX2VtYWNtY2hfbXhjaF9jZmdfcmVxX3N0cnVjdDsKKworCisvKiBNU0dfSURfRVJSQ19FTUFDTUNIX01DQ0hfUkNWX01PREVfQ0hBTkdFX1JFUSAqLworLy8gUG9zc2libGUgbW9kZXMgdGhhdCBjb3VsZCBiZSBjaGFuZ2VkIGJ5IEVSUkMgaW5jbHVkZXM6CisvLyBFTDFfUkVDVl9FVkVSWV9SRVBFVElUSU9OX1BFUklPRCAgICA9IDAsCisvLyBFTDFfUkVDVl9FVkVSWV9NT0RJRklDQVRJT05fUEVSSU9EICA9IDEsCisvLyBFTDFfUkVDVl9DSEFOR0VfREVURUNUSU9OICAgICAgICAgICA9IDIsCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ7ICAvLyAweDAwMDAwMDAwIC0gMHg3RkZGRkZGRgorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNhcmVhX21jY2hfcmN2X21vZGVfY2hhbmdlX3ZhbGlkW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdOworICAgIGVycmNfZW1hY21jaF9zeW5jYXJlYV9tY2NoX3Jjdl9tb2RlX2NoYW5nZV90IHN5bmNhcmVhX21jY2hfcmN2X21vZGVfY2hhbmdlW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdOworCit9IGVycmNfZW1hY21jaF9tY2NoX3Jjdl9tb2RlX2NoYW5nZV9yZXFfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ01DSCAtPiBFUlJDCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvLyBNU0dfSURfRVJSQ19FTUFDTUNIX01UQ0hfU1VTUEVORF9JTkQKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggICAgICAgICAgIHN5bmNhcmVhX2lkOyAgICAgIC8vIDA6UENFTEwgMTpTQ0VMTCAgICAgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICBhcmVhX2lkOyAgICAgICAgICAvLyAwfjI1NQorICAgIGthbF91aW50OCAgICAgICAgICAgcG1jaF9pZDsgICAgICAgICAgLy8gMH4xNQorICAgIGthbF91aW50OCAgICAgICAgICAgc3VzcGVuZF9tdGNoX251bTsKKyAgICBlcnJjX2VtYWNtY2hfbXRjaF90IHN1c3BlbmRfbXRjaFtNQVhfTVRDSF9OVU1fUEVSX1BNQ0hfMjldOworICAgIAorfSBlcnJjX2VtYWNtY2hfbXRjaF9zdXNwZW5kX2luZF9zdHJ1Y3Q7CisKKworI2VuZGlmIC8qRVJSQ19FTUFDTUNIX01TR19IKi8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXJyY19lcGRjcF9tc2cuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXJyY19lcGRjcF9tc2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjJjYWNjCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lcnJjX2VwZGNwX21zZy5oCkBAIC0wLDAgKzEsNTUzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlcnJjX2VwZGNwX21zZy5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1PTFkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBlUlJDLWVQRENQIFNBUCBtZXNzYWdlIHN0cnVjdHVyZSBkZWZpbml0aW9uCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDEyIDE3IDIwMTggbWluZ3RzdW5nLnN1bgorICogW01PTFkwMDM3Mjc2OV0gW1ZNT0xZXSBlbmFibGUgRU5MMiBvbiBHZW45NSBIVyBwbGF0Zm9ybQorICogRU5MMiBtaWdyYXRpb24gLSBNUEQgKGVycmNfZW1hY19tc2cuaCBtb3ZlIHRvIE1BQyBDTCkKKyAqCisgKiAwOCAxNyAyMDE4IHlrLmxpdQorICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIG1lcmdlIEVNT0xZIENMcyB0byBWTU9MWQorICoKKyAqIDA2IDAxIDIwMTggeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogUlJDLUVOUERDUCBHZW1pbmkgVkMgaW50ZXJmYWNlIG5hbWluZyBjaGFuZ2UKKyAqCisgKiAwNSAzMCAyMDE4IHlpdGluZy5jaGVuZworICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIFJSQy1FTlBEQ1AgR2VtaW5pIFZDIGludGVyZmFjZSBuYW1pbmcgY2hhbmdlIC0gZml4CisgKgorICogMDUgMzAgMjAxOCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBSUkMtRU5QRENQIEdlbWluaSBWQyBpbnRlcmZhY2UgbmFtaW5nIGNoYW5nZQorICoKKyAqIDA1IDI4IDIwMTggc2hpaHl1LndhbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluIHByb3RvY29sIGludGVyZmFjZSBwYXRjaGJhY2sKKyAqCisgKiAwMyAyOCAyMDE4IHNoaW4uY2hlbgorICogW01PTFkwMDMxNjY5Ml0gWzYyOTddIEludGVyZmFjZSBidWlsZC11cCBmb3IgRVJSQy1OUlJDLCBFUlJDL05SUkMtRU5MMiwgRVJSQy1FTDIgU0FQCisgKiB1cGRhdGUgZWwyIGludGVyZmFjZXMuCisgKgorICogMDIgMDYgMjAxOCB5aS1zaGluZy5saW91CisgKiBbTU9MWTAwMjk5ODY2XSBbVU1PTFlFXVtFUlJDL0VsMl1bUjEzXUZlTURUIFVMIFBEQ1AgZGVsYXkgbWVhc3VyZW1lbnQgcmVwb3J0CisgKiBbRVBEQ1BdIFBEQ1AgcXVldWluZyBkZWxheSAoRU1EVCksIGNvbW1vbiBwYXJ0LgorICoKKyAqIDEwIDMxIDIwMTcgbWF6aS55dQorICogW01PTFkwMDI4NjQxMl0gW01UNjI5M10gQ2hhbmdlIEVQRENQIEVSUkMgUkIgYWRkL21vZCBpbnRlcmZhY2UKKyAqIENoYW5nZSBlcGRjcF9yYl9hZGRtb2Rfc3RydWN0IGludGVyZmFjZSBhbmQgc3VwcG9ydCBuZXcgcWNpIHZhbHVlCisgKgorICogMDkgMTggMjAxNyB0aW1vdGh5LnlhbworICogW01PTFkwMDI3NDkzOV0gcGF0Y2ggYmFjayBidWdmaXggb2YgUm9IQy1UQ1AgSU9UCisgKiBmb3IgVUwtUk9IQzoKKyAqIDEpIFJvSEMgVENQIGJ1Z2ZpeCBwYXRjaAorICogMikgVUwtUk9IQyBpbnRlcmZhY2UKKyAqCisgKiAwNyAxMyAyMDE3IHN0ZXZlLmthbworICogW01PTFkwMDI2NDAwNF0gWzYyOTNdIEVQRENQIFItU0lNIGNvZGUgY2hhbmdlcyBhbmQgVVQgd2l0aCBidWdmaXhlcworICogCQorICogCVtVTU9MWUFdW1RSVU5LXSBFUERDUCBjaGFuZ2VzIGZvciBMK0wsIFItU0lNLCBVVCwgYW5kIGJ1Z2ZpeGVzLgorICoKKyAqIDAyIDEwIDIwMTcgc3RldmUua2FvCisgKiBbTU9MWTAwMjI4OTcyXSBbVU1PTFlBXVtFUERDUF1bUi1TSU1dIEludGVyZmFjZSB3aXRoIEVSUkMgZm9yIFJlbW90ZSBTSU0KKyAqIFtFUERDUF1bUi1TSU1dIEludGVyZmFjZSB3aXRoIEVSUkMgZm9yIFJlbW90ZSBTSU0uCisgKgorICogMTEgMTUgMjAxNiBjYW1taWUueWFuZworICogW01PTFkwMDIxMTkzOF0gW1VNT0xZQV1bRU1dW0FUJlRdIEVVVFJBIGFpciBtZXNzYWdlCisgKiBbVFJVTktdW0VQRENQXQorICogMS4gTW9kaWZpY2F0aW9uIG9mIEVSUkMtRVBEQ1AgaW50ZXJmYWNlIGZvciBjaGFuZ2Ugb2YgUlJDIGJ1ZmZlciB0eXBlIChub24tY2FjaGFibGUgQUZNIHdpbGwgYmUgdXNlZCkKKyAqIDIuIEFkZCBoYW5kbGluZyBmb3IgTlVMTCBBbG9ncml0aG0gaW4gRVBEQ1AgVUwKKyAqCisgKiAxMSAxMCAyMDE2IHN0ZXZlLmthbworICogW01PTFkwMDE5NTU2M10gWzYyOTNdW0VMMl1bVVBDTV1bUkFURE1dW0VQRENQXSBJbml0aWFsIGZlYXR1cmUgaW50ZWdyYXRpb25zCisgKiBbVU1PTFlBX1RSVU5LXVtFUERDUF0gRml4IE1DQ0ggZGVsaXZlcnkgaW50ZXJmYWNlLgorICoKKyAqIDA5IDI2IDIwMTYgY2FtbWllLnlhbmcKKyAqIFtNT0xZMDAxOTU1NjNdIFs2MjkzXVtFTDJdW1VQQ01dW1JBVERNXVtFUERDUF0gSW5pdGlhbCBmZWF0dXJlIGludGVncmF0aW9ucworICogW1RSVU5LXSBVUENNL1JBVERNL0VQRENQIGZlYXR1cmUgaW50ZWdyYXRpb25zIGZyb20gUFMuREVWCisgKgorICogMDEgMjEgMjAxNiBtaW5ndHN1bmcuc3VuCisgKiBbTU9MWTAwMTYwNDIxXSBbTVQ2MjkyXSBlUERDUCBDRSBSQU0gT3B0aW1pemF0aW9uCisgKiBbRVBEQ1BdIENFIFJBTSBPUFQKKyAqCisgKiAwMSAwNCAyMDE2IHRlcm8ubWlldHRpbmVuCisgKiBbTU9MWTAwMTU1ODIwXSBFUlJDIFVNT0xZIHVwZGF0ZXMKKyAqIE5WUkFNIElGLCBFUlJDIC0gRUwyIElGIGFuZCBFUlJDIHVwZGF0ZSBmb3IgMTUgYml0IFJMQyBMSSBmaWVsZCBsZW5ndGguCisgKgorICogMDYgMDMgMjAxNSBtaW5ndHN1bmcuc3VuCisgKiBbTU9MWTAwMTE4MTYxXSBbTVQ2MjkxXSBFUERDUCBDUiBTeW5jIC0gRWFybHkgcmVlc3RhYmxpc2htZW50IHRvIHByZXZlbnQgY2VydGFpbiBraW5kIG9mIFZvTFRFIGNhbGwgZHJvcAorICogTFRFIGRvbWFpbgorICoKKyAqIDAyIDA1IDIwMTUgY29vcGVyLmxpbgorICogW01PTFkwMDA5MDUzMl0gW01UNjI5MV0gQ2hhbmdlIEZlYXR1cmUgQ2hlY2staW4KKyAqIENvZGUgc3luYyBmcm9tIE1PTFkgKFcxNS4wNikKKyAqIDEuIE5vdCBjaGVjayBpbiBDMksgcmVsYXRlZCBjb2RlIGJlY2F1c2UgOTEgQzJLIGlzIHVuZGVyIGltcGxlbWVudGF0aW9uIGFuZCBub3QgY2hlY2tlZCBpbiB5ZXQKKyAqIDIuIE5vdCBjaGVjayBpbiBWU0lNIHJlbGF0ZWQgY29kZSwgbmVlZCB0byBmdXJ0aGVyIGRpc2N1c3MKKyAqIDMuIENvbW1lbnQgc29tZSBERVRFQ1RJT05fVElNRVIgcmVsYXRlZCBjb2RlLCB3aWxsIGNvbmZpcm0gc29vbiBhbmQgcGF0Y2ggaXQKKyAqCisgKiAxMSAxMiAyMDE0IGNoaS1jaHVuZy5saW4KKyAqIFtNT0xZMDAwNjg3MTBdIFtNVDYyOTFfREVWXSBTeW5jIE1PTFkgdG8gTVQ2MjkxX0RFVgorICogW0NITV0gY29kZSBzeW5jIGZyb20gTVQ2MjkxX0RFViB0byBVTU9MWQorICoKKyAqIDExIDExIDIwMTQgYW5kcmV3Lnd1CisgKiBbTU9MWTAwMDg0MDk2XSBbVU1PTFldTVQ2MjkxX0RFViBzeW5jIHRvIFVNT0xZIFRSVU5LCisgKiBNVDYyOTFfREVWIHN5bmMgdG8gVU1PTFkKKyAqCisgKiAwMiAyNSAyMDEzIHRpbW90aHkueWFvCisgKiBbTU9MWTAwMDA3MTI3XSBbTVQ3MjA4XSBFTDIgZW5oYW5jZW1lbnQgaW4gTU9MWQorICogW21lcmdlZCBmcm9tIEwxU0wyUy1JVCBDQnJdCisgKiAxLiBtb2RpZnkgdGhlIE1BQ1JPcyBjaGVja2luZyBTSVQgaW5kZXggaW4gZVBEQ1AuCisgKiAyLiBbYnVnZml4XSB1cGRhdGUgQkQgY2hrc3VtIGFmdGVyIHJlbW92aW5nIFBEQ1AgaGVhZGVyLgorICogMy4gW2J1Z2ZpeF0gZml4IGFzc2VydCB3aGVuIGRlYWN0aXZhdGluZyBsb29wYmFjayB0ZXN0IG1vZGUKKyAqICAgLT4gYWxzbyBmaXggVVQgY2FzZXMuCisgKiA0LiBbYnVnZml4XSBjYWNoZSBmbHVzaCBmb3IgdGhlIHNjYWxlZCBkYXRhIAorICogNS4gW21vZGlmeV0gcGF0Y2ggdGhlIHJhbmRvbSBtZXRob2QgaW4gZnJlZXJ1bi4KKyAqIDYuIFttb2RpZnldIHNldCB0aGUgcGFkZGluZyBlbnVtcyBhcyAweDdmZmZmZmZmIGZvciBjZ2VuLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisqCW10azAyMzUzLCAyMDExLzA3LzI4CisqCisqICAgZVJSQy1lUERDUCBTQVAgbWVzc2FnZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgorKgorKiAgIC0gdGhlIGZpbGUgb25seSBkZWZpbmVzIHRoZSBtZXNzYWdlIHN0cnVjdHVyZS4KKyogICAgICAgLSBuYW1pbmcgcnVsZSA6IHNpbWlsYXIgdG8gbWVzc2FnZSBpZCAKKyogICAgICAgICAgIChhKSBleGNsdWRlIHRoZSBwcmVmaXggIk1TR19JRF8iCisqICAgICAgICAgICAoYikgYWRkIHRoZSBwb3N0Zml4ICJfc3RydWN0IgorKiAgIC0gbWVzc2FnZSBpZCBpcyBkZWZpbmVkIGluIGVwZGNwX3NhcC5oCisqICAgICAgIE1TR19JRF9FUlJDX0VQRENQX0RDQ0hfREFUQV9SRVEsCisqICAgICAgIE1TR19JRF9FUlJDX0VQRENQX0RDQ0hfREFUQV9DTkYsCisqICAgICAgIE1TR19JRF9FUlJDX0VQRENQX0RDQ0hfREFUQV9JTkQsCisqICAgICAgIE1TR19JRF9FUlJDX0VQRENQX0RDQ0hfREFUQV9SRVMsCisqICAgICAgIE1TR19JRF9FUlJDX0VQRENQX1RFU1RfUkVRLAorKiAgICAgICBNU0dfSURfRVJSQ19FUERDUF9URVNUX0NORiwKKyogICAgICAgTVNHX0lEX0VSUkNfRVBEQ1BfQ09ORklHX1JFUSwKKyogICAgICAgTVNHX0lEX0VSUkNfRVBEQ1BfQ09ORklHX0NORiwKKyogICAgICAgTVNHX0lEX0VSUkNfRVBEQ1BfQ05USU5GT19SRVEsCisqICAgICAgIE1TR19JRF9FUlJDX0VQRENQX0NOVElORk9fQ05GLAorKiAgICAgICBNU0dfSURfRVJSQ19FUERDUF9FWENFU1NfREVMQVlfSU5ECisqCisqICAgaGlzdG9yeToKKyogICAyMDExLzExLzE2IC0gdGltb3RoeQorKiAgICAgICBzZXBlcmF0ZSB0aGUgY29uZmlndXJhdGlvbiBhcnJheSBvZiBDT05GSUdfUkVRIGludG8gMiBhcnJheXMsCisqICAgICAgIG9uZSBpcyBmb3IgYWRkX2FuZF9tb2RpZnksIGFuZCB0aGUgb3RoZXIgaXMgZm9yIGRlbGV0aW9uLgorKi8KKyNpZm5kZWYgX0xURV9FUlJDX0VQRENQX1NBUF9TVFJVQ1RfREVGX0hfCisjZGVmaW5lIF9MVEVfRVJSQ19FUERDUF9TQVBfU1RSVUNUX0RFRl9IXworCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKworI2luY2x1ZGUgInFtdV9ibS5oIgorI2luY2x1ZGUgImVsMl9zYXBfY29tbW9uLmgiCisjaW5jbHVkZSAiY29tbW9uX2RlZi5oIgorCisjaWZkZWYgX19FTDJfQVJDSF9WMl9fCisjaW5jbHVkZSAicnJjX2VucGRjcF9tc2cuaCIKKyNlbmRpZiAvKiBfX0VMMl9BUkNIX1YyX18gKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgY29uc3RhbnRzIAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEVQRENQX1NBUF9NQVhfTlVNX1FVRVVJTkdfREVMQVlfUlNMVCAgICAoNikKKyNkZWZpbmUgRVBEQ1BfU0FQX01BWF9OVU1fRFJCICAgICAgICAgICAgICAgICAgICg4KQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBtZXNzYWdlIHN0cnVjdHVyZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfSU5UQ0hLX09LID0gMCwKKyAgICBFUERDUF9TQVBfSU5UQ0hLX0ZBSUxVUkUsICAgICAgICAgIC8vaW50ZWdyaXR5IGNoZWNrIGZhaWx1cmUKKyAgICBFUERDUF9TQVBfSU5UQ0hLX1NLSVBQRUQsICAgICAgICAgIC8vaW50ZWdyaXR5IGNoZWNrIGlzIG5vdCBhcHBsaWVkCisKKyAgICBFUERDUF9TQVBfSU5UQ0hLX1BBRCA9IDB4N2ZmZmZmZmYKK30gZXBkY3BfaW50Y2hrX3Jlc3VsdF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfRFJCX1RZUEVfTFRFID0gMCwKKyAgICBFUERDUF9TQVBfRFJCX1RZUEVfTFdBCit9IGVwZGNwX2RyYl90eXBlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVQRENQX1NBUF9TVFVTX1BEVV9PTl9QT0xMX1RZUEVfMSA9IDAsCisgICAgRVBEQ1BfU0FQX1NUVVNfUERVX09OX1BPTExfVFlQRV8yCit9IGVwZGNwX3N0dXNfcnB0X3R5cGVfb25fcG9sbF9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfTUVBU1VSRU1FTlRfT0ZGID0gMCwgCisgICAgRVBEQ1BfU0FQX01FQVNVUkVNRU5UX09OLCAKKyAgICBFUERDUF9TQVBfTUVBU1VSRU1FTlRfTU9ESUZZCit9IGVwZGNwX2RlbGF5X21lYXN1cmVtZW50X2VudW07CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgRVBEQ1BfU0FQX0RFTEFZX1RIUkVTSF9NU18zMCA9IDAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfNDAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfNTAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfNjAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfNzAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfODAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfOTAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfMTAwLCAKKyAgICBFUERDUF9TQVBfREVMQVlfVEhSRVNIX01TXzE1MCwgCisgICAgRVBEQ1BfU0FQX0RFTEFZX1RIUkVTSF9NU18zMDAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9USFJFU0hfTVNfNTAwLCAKKyAgICBFUERDUF9TQVBfREVMQVlfVEhSRVNIX01TXzc1MCwgCisgICAgRVBEQ1BfU0FQX0RFTEFZX1RIUkVTSF9NU19QQUQgPSAweDdmZmZmZmZmCit9IGVwZGNwX2RlbGF5X3RocmVzaF9lbnVtOyAKKworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfREVMQVlfUlBUX0lOVFZfTVNfMTAyNCA9IDAsIAorICAgIEVQRENQX1NBUF9ERUxBWV9SUFRfSU5UVl9NU18yMDQ4LCAKKyAgICBFUERDUF9TQVBfREVMQVlfUlBUX0lOVFZfTVNfNTEyMCwgCisgICAgRVBEQ1BfU0FQX0RFTEFZX1JQVF9JTlRWX01TXzEwMjQwLAorICAgIEVQRENQX1NBUF9ERUxBWV9SUFRfSU5UVl9QQUQgPSAweDdmZmZmZmZmCit9IGVwZGNwX2RlbGF5X3JwdF9pbnR2X2VudW07CisKKy8qIHF1ZXVpbmcgZGVsYXkgcmVzdWx0IHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBxY2k7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgZXhjZXNzX2RlbGF5X251bTsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICB0b3RhbF9udW07Cit9IGVwZGNwX2RlbGF5X3Jlc3VsdF9zdHJ1Y3Q7CisKKworLyogUERDUCBxdWV1aW5nIGRlbGF5IGNvbmZpZyBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0eworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQ7CisgICAgZXBkY3BfZGVsYXlfbWVhc3VyZW1lbnRfZW51bSAgICBtZWFzdXJlbWVudF9zdGF0dXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB2YWxpZD1mYWxzZSwgIGRlbGF5X3RoZXNob2xkIGFuZCBkZWxheV9yZXBvcnRfaW50ZXJ2YWwgc2hvdWxkIGJlIGlnbm9yZWQKKyAgICBlcGRjcF9kZWxheV90aHJlc2hfZW51bSAgICAgICAgIHRocmVzaG9sZDsKKyAgICBlcGRjcF9kZWxheV9ycHRfaW50dl9lbnVtICAgICAgIHJlcG9ydF9pbnRlcnZhbDsKK30gZXBkY3BfZGVsYXlfY2ZnX3N0cnVjdDsKKworLyoKKyAqICBNU0dfSURfRVJSQ19FUERDUF9FWENFU1NfREVMQVlfSU5ECisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9udW07CisgICAgZXBkY3BfZGVsYXlfcmVzdWx0X3N0cnVjdCAgICAgICByZXN1bHRfbGlzdFtFUERDUF9TQVBfTUFYX05VTV9RVUVVSU5HX0RFTEFZX1JTTFRdOworICAgIGVwZGNwX2RlbGF5X3RocmVzaF9lbnVtICAgICAgICAgdGhyZXNob2xkOworICAgIGVwZGNwX2RlbGF5X3JwdF9pbnR2X2VudW0gICAgICAgcmVwb3J0X2ludGVydmFsOworfSBlcnJjX2VwZGNwX2V4Y2Vzc19kZWxheV9pbmRfc3RydWN0OworCisvKgorKiAgIE1TR19JRF9FUlJDX0VQRENQX0RDQ0hfREFUQV9SRVEKKyoKKyogICBub3RlOiByZWFkIHBlZXJfYnVmZmVyX3BvaW50ZXIgdG8gZ2V0IHRncGQgcG9pbnRlci4KKyovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYl9pZHg7CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgIHRyYW5zX2lkOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICBmbGFnX2JtcDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAqcF9hZGRyOworICAgIGthbF91aW50MzIgICAgICAgICAgICAgICAgICBkYXRhX2xlbjsKKworICAgIC8vIHRoaXMgaXMgdXNlZCBkdXJpbmcgYnVmZmVyIHJlbGVhc2UKKyAgICBLQUxfQUZNX0lEICAgICAgICAgICAgICAgICAgYWZtX2lkOworICAgIAorfSBlcnJjX2VwZGNwX2RjY2hfZGF0YV9yZXFfc3RydWN0OworCisvKgorKiAgIE1TR19JRF9FUlJDX0VQRENQX0RDQ0hfREFUQV9JTkQsCisqCisqICAgbm90ZTogcmVhZCBwZWVyX2J1ZmZlcl9wb2ludGVyIHRvIGdldCByZ3BkIHBvaW50ZXIKKyovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYl9pZHg7CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgIHBhZDAyOworICAgIGVwZGNwX2ludGNoa19yZXN1bHRfZW51bSAgICByZXN1bHQ7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgIHBkY3BfY291bnQ7IC8vIFhYWDogbm90IG5lZWRlZCBpZiBETCBzZWN1cml0eSBpcyBhY3RpdmF0ZWQ/CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICpwX2RhdGE7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgIGRhdGFfbGVuOyAvLyBpbmNsdWRpbmcgUlJDIG1lc3NhZ2UgJiBNQUMtSQorCisgICAgcWJtX2dwZCAgICAgICAgICAgICAgICAgICAgICpwX3JncGQ7IC8vVE9ETzogdG8gYmUgcmVtb3ZlZAorfSBlcnJjX2VwZGNwX2RjY2hfZGF0YV9pbmRfc3RydWN0OworCisKKy8qIGNvbW1hbmQgZm9yIFJCICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfUkJfQ01EX0VTVEFCTElTSCA9IDAsCisgICAgRVBEQ1BfU0FQX1JCX0NNRF9FU1RfTl9TVVNQLAorICAgIEVQRENQX1NBUF9SQl9DTURfU1VTUEVORCwKKyAgICBFUERDUF9TQVBfUkJfQ01EX1JFQ09ORklHLAorICAgIEVQRENQX1NBUF9SQl9DTURfSE9fSU5ELAorICAgIEVQRENQX1NBUF9SQl9DTURfUkVTVU1FLAorICAgIEVQRENQX1NBUF9SQl9DTURfUkVMRUFTRSwKKyAgICBFUERDUF9TQVBfUkJfQ01EX1JFTEVBU0VfRlJPTV9MVEUsICAgICAgLy9pbnRlci1SQVQgKGZyb20gTFRFKQorCisgICAgRVBEQ1BfU0FQX1JCX0NNRF9OVU0sCisgICAgRVBEQ1BfU0FQX1JCX0NNRF9QQUQgPSAweDdmZmZmZmZmCit9IGVwZGNwX3JiX2NtZF9lbnVtOworCisvKiBkaXNjYXJkIHRpbWVyIGVudW0gKi8KK3R5cGVkZWYgZW51bQoreworICAgIEVQRENQX1NBUF9ESVNDX1RNUl9NU181MCA9IDAsCisgICAgRVBEQ1BfU0FQX0RJU0NfVE1SX01TXzEwMCwKKyAgICBFUERDUF9TQVBfRElTQ19UTVJfTVNfMTUwLAorICAgIEVQRENQX1NBUF9ESVNDX1RNUl9NU18zMDAsCisgICAgRVBEQ1BfU0FQX0RJU0NfVE1SX01TXzUwMCwKKyAgICBFUERDUF9TQVBfRElTQ19UTVJfTVNfNzUwLAorICAgIEVQRENQX1NBUF9ESVNDX1RNUl9NU18xNTAwLAorICAgIEVQRENQX1NBUF9ESVNDX1RNUl9NU19JTkZJTklUWSwKKyAgICAKKyAgICBFUERDUF9TQVBfRElTQ19UTVJfTVNfUEFEID0gMHg3ZmZmZmZmZgorfSBlcGRjcF9kaXNjX3Rtcl9lbnVtOworCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfUk9IQ19FTl9ESVNBQkxFRCA9IDAsCisgICAgRVBEQ1BfU0FQX1JPSENfRU5fRU5BQkxFRF9CSURJUiwKKyAgICBFUERDUF9TQVBfUk9IQ19FTl9FTkFCTEVEX1VMX09OTFkKK30gZXBkY3Bfcm9oY19lbl9lbnVtOworCit0eXBlZGVmIHN0cnVjdAoreworICAgIC8qIHBvbGxpbmcgcGFyYW0gKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlX29uX3BvbGxfdmFsaWQ7CisgICAgZXBkY3Bfc3R1c19ycHRfdHlwZV9vbl9wb2xsX2VudW0gICAgdHlwZV9vbl9wb2xsOworCisgICAgLyogcGVyaW9kaWMgcGFyYW0gKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMV9wZXJpb2RpY2l0eV92YWxpZDsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMl9wZXJpb2RpY2l0eV92YWxpZDsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfdmFsaWQ7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTFfcGVyaW9kaWNpdHlfcmVjZmc7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTJfcGVyaW9kaWNpdHlfcmVjZmc7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTFfcGVyaW9kaWNpdHk7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTJfcGVyaW9kaWNpdHk7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OworfSBlcGRjcF9zdHVzX3JwdF9wYXJhbV9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBlcGRjcF9kcmJfdHlwZV9lbnVtICAgICAgICAgICAgIGRyYl90eXBlOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19ybGNfdW07CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3VtX2xvbmdfc247ICAgIC8vIFVNIG9ubHkKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIGJtcF91bV9kaXI7ICAgICAgICAgLy8gVU0gb25seSA6IGJpdCMwOlVMLCBiaXQjMTpETAorCisKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICAgIGZsYWdfYW1fc3R1c19ycHQ7ICAgLy8gQU0gb25seQorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19hbV9sb25nX3NuOyAgICAvLyBBTSBvbmx5ICAgIAorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19hbV9ybGNfbGlfZmllbGRfMTVfYml0OyAvLyBBTSBvbmx5CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICBwYWQxOworCisgICAgZXBkY3Bfcm9oY19lbl9lbnVtICAgICAgICAgICAgICByb2hjX2VuYWJsZWQ7CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICAgICByb2hjX21heF9jaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICByb2hjX3Byb2ZzWzldOworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICByZW9yZGVyX3Rtcl9pc192YWxpZDsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgIHJlb3JkZXJfdG1yOworICAgIGVwZGNwX2Rpc2NfdG1yX2VudW0gICAgICAgICAgICAgZGlzY190bXI7ICAgICAgICAgICAvLyBzcGVjLWVudW0KKworICAgIGVwZGNwX3N0dXNfcnB0X3BhcmFtX3N0cnVjdCAgICAgc3R1c19ycHRfcGFyYW07Cit9IGVwZGNwX2RyYl9hdHRyX3N0cnVjdDsKKworCisvKiBSQiBhZGRpdGlvbi9tb2RpZmljYXRpb24gY29uZmlnIHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmJfaWR4OyAgICAgLy9wcmltYXJ5IGluZGV4CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBlcHNfYnJfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHFjaTsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgaXNfZ2JyX2JlYXJlcjsKKyAgICAKKyAgICBlcGRjcF9yYl9jbWRfZW51bSAgICAgICAgICAgY21kOworICAgIGVwZGNwX2RyYl9hdHRyX3N0cnVjdCAgICAgICBkcmJfYXR0cjsKK30gZXBkY3BfcmJfYWRkbW9kX3N0cnVjdDsKKworCisvKiBSQiBkZWxldGlvbiBjb25maWcgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiX2lkeDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmJfaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGhvX2ZhaWx1cmU7ICAgLy9pZiBmYWlsdXJlLCByZW1vdmUgdGhlIG5ldyBSQi4KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcGFkOworCisgICAgZXBkY3BfcmJfY21kX2VudW0gICAgICAgICAgIGNtZDsKK30gZXBkY3BfcmJfZGVsX3N0cnVjdDsKKworLyogaW50ZWdyaXR5IGFsZ29yaXRobSBlbnVtICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUERDUF9TQVBfSU5UX0FMR19FSUEwID0gMCwKKyAgICBFUERDUF9TQVBfSU5UX0FMR19FSUExLAorICAgIEVQRENQX1NBUF9JTlRfQUxHX0VJQTIsCisgICAgRVBEQ1BfU0FQX0lOVF9BTEdfRUlBMywgLy8gWlVDIGFsZ29yaXRobQorCisgICAgRVBEQ1BfU0FQX0lOVF9BTEdfTlVNLAorICAgIEVQRENQX1NBUF9JTlRfQUxHX1BBRCA9IDB4N2ZmZmZmZmYKK30gZXBkY3BfaW50X2FsZ19lbnVtOworCisKKy8qIGNpcGhlciBhbGdvcml0aG0gZW51bSAqLwordHlwZWRlZiBlbnVtCit7CisgICAgRVBEQ1BfU0FQX0NJUF9BTEdfRUVBMCA9IDAsCisgICAgRVBEQ1BfU0FQX0NJUF9BTEdfRUVBMSwgLy8gU05PVyAzRworICAgIEVQRENQX1NBUF9DSVBfQUxHX0VFQTIsIC8vIEFFUy1iYXNlZAorICAgIEVQRENQX1NBUF9DSVBfQUxHX0VFQTMsIC8vIFpVQyBhbGdvcml0aG0KKworICAgIEVQRENQX1NBUF9DSVBfQUxHX05VTSwKKyAgICBFUERDUF9TQVBfQ0lQX0FMR19QQUQgPSAweDdmZmZmZmZmCit9IGVwZGNwX2NpcF9hbGdfZW51bTsKKworCisvKiBQRENQIHNlY3VyaXR5IGNvbmZpZyBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgdmFsaWQ7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2lwX2tleV91cF9pZHg7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgY2lwX2tleV9jcF9pZHg7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgaW50X2tleV9pZHg7CisgICAgZXBkY3BfaW50X2FsZ19lbnVtICAgICAgaW50X2FsZzsgICAgICAgIC8vaW50ZWdyaXR5IGFsZ29yaXRobSAKKyAgICBlcGRjcF9jaXBfYWxnX2VudW0gICAgICBjaXBfYWxnOyAgICAgICAgLy9jaXBoZXIgYWxnb3JpdGhtCit9IGVwZGNwX3NlY19jZmdfc3RydWN0OworCisKKy8vTVNHX0lEX0VSUkNfRVBEQ1BfQ09ORklHX1JFUSwKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICAKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgYWRkX251bTsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbW9kX251bTsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgZGVsX251bTsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgZHJiX2NvbnRpbnVlX3JvaGM7CisKKyAgICBlcGRjcF9yYl9hZGRtb2Rfc3RydWN0ICAgICAgcmJfYWRkWzEwXTsKKyAgICBlcGRjcF9yYl9hZGRtb2Rfc3RydWN0ICAgICAgcmJfbW9kWzEwXTsKKyAgICBlcGRjcF9yYl9kZWxfc3RydWN0ICAgICAgICAgcmJfZGVsWzEwXTsKKworICAgIGVwZGNwX3NlY19jZmdfc3RydWN0ICAgICAgICBzZWNfY2ZnOworICAgIGVwZGNwX2RlbGF5X2NmZ19zdHJ1Y3QgICAgICBkZWxheV9jZmc7CisKKyAgICAvL2ZvciBlTUJNUyByZWxhdGVkCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIG1jY2hfYWRkX251bVsyXTsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbWNjaF9kZWxfbnVtWzJdOworICAgIGVwZGNwX21jY2hfYWRkX3N0cnVjdCAgICAgICBtY2NoX2FkZFsyXVs4XTsKKyAgICBlcGRjcF9tY2NoX2RlbF9zdHJ1Y3QgICAgICAgbWNjaF9kZWxbMl1bOF07CisKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbXJiX2FkZF9udW1bMl07CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIG1yYl9kZWxfbnVtWzJdOworICAgIGVwZGNwX21yYl9hZGRfc3RydWN0ICAgICAgICBtcmJfYWRkWzJdWzhdOworICAgIGVwZGNwX21yYl9kZWxfc3RydWN0ICAgICAgICBtcmJfZGVsWzJdWzhdOworfSBlcnJjX2VwZGNwX2NvbmZpZ19yZXFfc3RydWN0OworLyoKKyAqICAgTVNHX0lEX0VSUkNfRVBEQ1BfREVURUNUSU9OX1RJTUVSXzJfU1RBUlRfUkVRLAorICoKKyAqICAgbm90ZTogRVJSQyBjb25maWd1cmUgRVBEUEMgZGV0ZWN0aW9uIHRpbWVyIHZhbHVlCisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICAKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGRldGVjdGlvbl90aW1lX3ZhbHVlOyAvLyBpbiBzZWNvbmRzCit9IGVycmNfZXBkY3BfZGV0ZWN0aW9uX3RpbWVyXzJfc3RhcnRfcmVxX3N0cnVjdDsKKworLyogUkIgbG9vcGJhY2sgY29uZmlnIHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICByYl9pZHg7ICAgICAgICAgLy9SQiBpbmRleAorICAgIGthbF91aW50OCAgICAgICAgICAgICAgIHJiX2lkOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIHBhZDsKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIHNjYWxpbmc7ICAgICAgICAvL25lZWQgc2NhbGluZyBvciBub3Q/CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgc2l6ZTsgICAgICAgICAgIC8vc2NhbGluZyBzaXplCit9IGVwZGNwX3JiX2xiY2ZnX3N0cnVjdDsKKworLyogTEIgY29tbWFuZCBmb3IgUERDUCAqLwordHlwZWRlZiBlbnBkY3BfbGJfY21kX2VudW0gZXBkY3BfbGJfY21kX2VudW07CisKKy8vTVNHX0lEX0VSUkNfRVBEQ1BfVEVTVF9SRVEsCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiX251bTsgIC8vIG9ubHkgdmFsaWQgZm9yIG1vZGUgQQorICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBwYWQwOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICBwYWQxOworICAgIGVwZGNwX3JiX2xiY2ZnX3N0cnVjdCAgICAgICByYl9jZmdbOF07ICAvLyBvbmx5IHZhbGlkIGZvciBtb2RlIEEKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbWJzZm5fYXJlYV9pZDsgLy8wfjI1NSwgb25seSB2YWxpZCBmb3IgbW9kZSBDCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHBtY2hfaWQ7IC8vMH4xNSwgb25seSB2YWxpZCBmb3IgbW9kZSBDCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGxjaWQ7IC8vMH4yOCwgb25seSB2YWxpZCBmb3IgbW9kZSBDCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNpOyAvLzB+TUFYX0VNQk1TX0ZSRVFfU1VQUE9SVC0xLCBvbmx5IHZhbGlkIGZvciBtb2RlIEMKKyAgICBlcGRjcF9sYl9jbWRfZW51bSAgICAgICAgICAgY21kOworfSBlcnJjX2VwZGNwX3Rlc3RfcmVxX3N0cnVjdDsKKworCisjZW5kaWYgLy9fTFRFX0VSUkNfRVBEQ1BfU0FQX1NUUlVDVF9ERUZfSF8KZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXJyY19lcmxjZGxfbXNnLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VycmNfZXJsY2RsX21zZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4N2ZlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VycmNfZXJsY2RsX21zZy5oCkBAIC0wLDAgKzEsNDM5IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMTIKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4KKyoKKyogIFRIRSBUUkFOU0FDVElPTiBDT05URU1QTEFURUQgSEVSRVVOREVSIFNIQUxMIEJFIENPTlNUUlVFRCBJTiBBQ0NPUkRBTkNFCisqICBXSVRIIFRIRSBMQVdTIE9GIFRIRSBTVEFURSBPRiBDQUxJRk9STklBLCBVU0EsIEVYQ0xVRElORyBJVFMgQ09ORkxJQ1QgT0YKKyogIExBV1MgUFJJTkNJUExFUy4gIEFOWSBESVNQVVRFUywgQ09OVFJPVkVSU0lFUyBPUiBDTEFJTVMgQVJJU0lORyBUSEVSRU9GIEFORAorKiAgUkVMQVRFRCBUSEVSRVRPIFNIQUxMIEJFIFNFVFRMRUQgQlkgQVJCSVRSQVRJT04gSU4gU0FOIEZSQU5DSVNDTywgQ0EsIFVOREVSCisqICBUSEUgUlVMRVMgT0YgVEhFIElOVEVSTkFUSU9OQUwgQ0hBTUJFUiBPRiBDT01NRVJDRSAoSUNDKS4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBGaWxlbmFtZToKKyAqIC0tLS0tLS0tLQorICogICBlcnJjX2VybGNkbF9tc2cuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgRVJSQy1FUkxDREwgU0FQIGhlYWRlciBmaWxlLgorICogICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgc3RydWN0dXJlcyBhbmQgZW51bWVyYXRpb25zIGZvciB0aGUgU0FQIGJldHdlZW4gRVJSQyBhbmQgRVJMQ0RMCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDA5IDI1IDIwMTkgcGV0ZXIueXUKKyAqIFtNT0xZMDA0NDMzMTJdIFtNVDY4ODVdW1BldHJ1c11bU2FuaXR5XVtWTU9MWV1bVk1PTFldWzIwMTktMDktMjFfMTcwMF0gQVNTRVJUID0gWzFdW2NvcmUxLHZwZTAsdGMwKHZwZTMpXSBBc3NlcnQgZmFpbDogZXBkY3BfcmJtLmMgNjM5MiAtIEVMMiBfCisgKiBbRVJMQ10gQXBwbHkgbmV3IFZDIGNhdXNlLgorICoKKyAqIDEyIDE3IDIwMTggbWluZ3RzdW5nLnN1bgorICogW01PTFkwMDM3Mjc2OV0gW1ZNT0xZXSBlbmFibGUgRU5MMiBvbiBHZW45NSBIVyBwbGF0Zm9ybQorICogRU5MMiBtaWdyYXRpb24gLSBNUEQgKGVycmNfZW1hY19tc2cuaCBtb3ZlIHRvIE1BQyBDTCkKKyAqCisgKiAwNyAyNCAyMDE4IGNoaS1waW4ueWVoCisgKiBbTU9MWTAwMzQxNzY0XSBbR2VuOTddIHJlbW92ZSBlbnVtIGVycmNfZWwyX2NmZ19yZXN1bHRfZW51bQorICogUmVtb3ZlIGVudW0gZXJyY19lbDJfY2ZnX3Jlc3VsdF9lbnVtIHRoYXQgdXNlZCBmb3IgY29uZmlnIGNvbmZpcm0gcmVzdWx0CisgKiAJCisgKiAJW1Byb3RvY29sIGJ1aWxkIHRhZ10KKyAqIAlbSXMgQ0wgc2VsZiB0ZXN0YWJsZTogTk9dCisgKiAJW0dyb3VwIENMIGxpc3Q6IENMNjAyODE4NztDTDYwMjg0MzA7Q0w2MDA3ODc1O0NMNjAxNjczNV0KKyAqCisgKiAwNSAzMCAyMDE4IHBldGVyLmNoaWFuZworICogW01PTFkwMDMyNjY5MV0gW01UNjI5N10gR0VOOTcuREVWIEVOTDIgUGF0Y2ggYmFjaworICogW0VOTDJdW0ludGVyZmFjZV0gQlNSIGFuZCBpbnRlcmZhY2UgbW9kaWZpY2F0aW9uIHBhdGNoYmFjaworICoKKyAqIDAzIDI4IDIwMTggc2hpbi5jaGVuCisgKiBbTU9MWTAwMzE2NjkyXSBbNjI5N10gSW50ZXJmYWNlIGJ1aWxkLXVwIGZvciBFUlJDLU5SUkMsIEVSUkMvTlJSQy1FTkwyLCBFUlJDLUVMMiBTQVAKKyAqIHVwZGF0ZSBlbDIgaW50ZXJmYWNlcy4KKyAqCisgKiAwMiAwNiAyMDE3IHBldGVyLnl1CisgKiBbTU9MWTAwMjA3NzMzXSBbTVQ2MjkzXVtFTDJdIEVSTENETCBkZXZlbG9wbWVudAorICogW00tU0lNXSBTeW5jIFItU0lNIHJlbGF0ZWQgaW50ZXJmYWNlcywgcmVtb3ZlIHJlZHVuZGFudCBtZXNzYWdlIElEcyByZWxhdGVkIHRvIEVSTEMuCisgKgorICogMTAgMDcgMjAxNiBjaGloLWNoZW5nLnlhbmcKKyAqIFtNT0xZMDAyMDYzMDddIFtNVDYyOTNdW05XU0lNXVtSZWdyZXNzaW9uXVtGRERdW1RDXzE3XzRfMV0gZXJyb3IgaW4gQ09OTl9DSE1fTFBCS19DTkYKKyAqIGZpeCBsb29wIG1vZGUgQworICoKKyAqIDEwIDA2IDIwMTYgY2hpaC1jaGVuZy55YW5nCisgKiBbTU9MWTAwMjA2MzA3XSBbTVQ2MjkzXVtOV1NJTV1bUmVncmVzc2lvbl1bRkREXVtUQ18xN180XzFdIGVycm9yIGluIENPTk5fQ0hNX0xQQktfQ05GCisgKiBjaGFuZ2VzIGZvciBsb29wIG1vZGUgQworICoKKyAqIDA5IDI2IDIwMTYgc2xpZmVyLmhzdWVoCisgKiBbTU9MWTAwMjA1MDg1XSBbTVQ2MjkzXVtFTDJdIEVSTEMgc291cmNlIGNvZGVzIGludGVncmF0aW9uIGZyb20gREVWIHRvIFRSVU5LCisgKiBFUkxDIHNvdXJjZSBjb2RlcyBpbnRlZ3JhdGlvbiBmcm9tIERFViB0byBUUlVOSworICoKKyAqIDAxIDA0IDIwMTYgdGVyby5taWV0dGluZW4KKyAqIFtNT0xZMDAxNTU4MjBdIEVSUkMgVU1PTFkgdXBkYXRlcworICogTlZSQU0gSUYsIEVSUkMgLSBFTDIgSUYgYW5kIEVSUkMgdXBkYXRlIGZvciAxNSBiaXQgUkxDIExJIGZpZWxkIGxlbmd0aC4KKyAqCisgKiAwNyAwMyAyMDE1IGNoaS1jaHVuZy5saW4KKyAqIFtNT0xZMDAxMjM5MThdIFtNVDYyOTFdIE1vZGlmeSBDSE0gY29kZSB0byBwcm92aWRlIGVwc19icl9pZCBpbiBlcnJjX2VybGNkbF9yYl9jZmdfc3RydWN0L2VycmNfZXJsY3VsX3JiX2NmZ19zdHJ1Y3QgYW5kIGZpeCBjb21waWxlIHdhcm5pbmcKKyAqIAlbQ0hNXSBDb2RlIHN5bmMuIGZyb20gVEs2MjkxX0RFVgorICoKKyAqIDAyIDAyIDIwMTUgY2hpLWNodW5nLmxpbgorICogW01PTFkwMDA2ODcxMF0gW01UNjI5MV9ERVZdIFN5bmMgTU9MWSB0byBNVDYyOTFfREVWCisgKiBNT0xZLT5VTU9MWSBjb2RlIHN5bmMuCisgKgorICogMTEgMTEgMjAxNCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAwODQwNDJdIFtVTU9MWV0gbWVyZ2UgVU1PTFlfREVWIHRvIFVNT0xZIHRydW5rCisgKiAuCisgKgorICogMDkgMTkgMjAxNCBjaGktY2h1bmcubGluCisgKiBbTU9MWTAwMDczODM2XSBbTVQ2MjkxXVtFUlJDXVtDSE1dIExURS1BIENITSBkZXZlbG9wbWVudCBjb2RlIGNoZWNrLWluCisgKiBbQ0hNXSBNQk1TIGludGVyZmFjZSBjaGVjayBpbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8vLyBAYXV0aG9yIG10azAxNzMzCisvLy8gQGRhdGUgICAwOC8xMC8xMQorCisjaWZuZGVmIF9NVEtfTFRFX0VSUkNfRVJMQ0RMX1NBUF9IXworI2RlZmluZSBfTVRLX0xURV9FUlJDX0VSTENETF9TQVBfSF8KKworCisjaW5jbHVkZSAiZWwyX3NhcF9jb21tb24uaCIKKyNpbmNsdWRlICJjb21tb25fZGVmLmgiCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE1TR19JRF9FUkxDRExfRVJSQ19DQ0NIX0RBVEFfSU5ECisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8vIG5vIGxvY2FsIHBhcmFtZXRlcnMKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNU0dfSURfRVJSQ19FUkxDRExfQ09ORklHX1JFUSAoZW51bSkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvLyB0LVJlb3JkZXJpbmcKK3R5cGVkZWYgZW51bSAKK3sKKwlUX1JFT1JERVJfTVMwICAgID0gMHgwMCwKKwlUX1JFT1JERVJfTVM1ICAgID0gMHgwMSwKKwlUX1JFT1JERVJfTVMxMCAgID0gMHgwMiwKKwlUX1JFT1JERVJfTVMxNSAgID0gMHgwMywKKwlUX1JFT1JERVJfTVMyMCAgID0gMHgwNCwKKwlUX1JFT1JERVJfTVMyNSAgID0gMHgwNSwKKwlUX1JFT1JERVJfTVMzMCAgID0gMHgwNiwKKwlUX1JFT1JERVJfTVMzNSAgID0gMHgwNywKKwlUX1JFT1JERVJfTVM0MCAgID0gMHgwOCwKKwlUX1JFT1JERVJfTVM0NSAgID0gMHgwOSwKKwlUX1JFT1JERVJfTVM1MCAgID0gMHgwQSwKKwlUX1JFT1JERVJfTVM1NSAgID0gMHgwQiwKKwlUX1JFT1JERVJfTVM2MCAgID0gMHgwQywKKwlUX1JFT1JERVJfTVM2NSAgID0gMHgwRCwKKwlUX1JFT1JERVJfTVM3MCAgID0gMHgwRSwKKwlUX1JFT1JERVJfTVM3NSAgID0gMHgwRiwKKwlUX1JFT1JERVJfTVM4MCAgID0gMHgxMCwKKwlUX1JFT1JERVJfTVM4NSAgID0gMHgxMSwKKwlUX1JFT1JERVJfTVM5MCAgID0gMHgxMiwKKwlUX1JFT1JERVJfTVM5NSAgID0gMHgxMywKKwlUX1JFT1JERVJfTVMxMDAgID0gMHgxNCwKKwlUX1JFT1JERVJfTVMxMTAgID0gMHgxNSwKKwlUX1JFT1JERVJfTVMxMjAgID0gMHgxNiwKKwlUX1JFT1JERVJfTVMxMzAgID0gMHgxNywKKwlUX1JFT1JERVJfTVMxNDAgID0gMHgxOCwKKwlUX1JFT1JERVJfTVMxNTAgID0gMHgxOSwKKwlUX1JFT1JERVJfTVMxNjAgID0gMHgxQSwKKwlUX1JFT1JERVJfTVMxNzAgID0gMHgxQiwKKwlUX1JFT1JERVJfTVMxODAgID0gMHgxQywKKwlUX1JFT1JERVJfTVMxOTAgID0gMHgxRCwKKwlUX1JFT1JERVJfTVMyMDAgID0gMHgxRSwKKwlUX1JFT1JERVJfTVMxNjAwID0gMHgxRgorfSBlcnJjX2VybGNkbF90X3Jlb3JkZXJfZW51bTsKKworLy8gdC1TdGF0dXNQcm9oaWJpdAordHlwZWRlZiBlbnVtIAoreworCVRfU1RVU19QUk9IX01TMCAgICA9IDB4MDAsCisJVF9TVFVTX1BST0hfTVM1ICAgID0gMHgwMSwKKwlUX1NUVVNfUFJPSF9NUzEwICAgPSAweDAyLAorCVRfU1RVU19QUk9IX01TMTUgICA9IDB4MDMsCisJVF9TVFVTX1BST0hfTVMyMCAgID0gMHgwNCwKKwlUX1NUVVNfUFJPSF9NUzI1ICAgPSAweDA1LAorCVRfU1RVU19QUk9IX01TMzAgICA9IDB4MDYsCisJVF9TVFVTX1BST0hfTVMzNSAgID0gMHgwNywKKwlUX1NUVVNfUFJPSF9NUzQwICAgPSAweDA4LAorCVRfU1RVU19QUk9IX01TNDUgICA9IDB4MDksCisJVF9TVFVTX1BST0hfTVM1MCAgID0gMHgwQSwKKwlUX1NUVVNfUFJPSF9NUzU1ICAgPSAweDBCLAorCVRfU1RVU19QUk9IX01TNjAgICA9IDB4MEMsCisJVF9TVFVTX1BST0hfTVM2NSAgID0gMHgwRCwKKwlUX1NUVVNfUFJPSF9NUzcwICAgPSAweDBFLAorCVRfU1RVU19QUk9IX01TNzUgICA9IDB4MEYsCisJVF9TVFVTX1BST0hfTVM4MCAgID0gMHgxMCwKKwlUX1NUVVNfUFJPSF9NUzg1ICAgPSAweDExLAorCVRfU1RVU19QUk9IX01TOTAgICA9IDB4MTIsCisJVF9TVFVTX1BST0hfTVM5NSAgID0gMHgxMywKKwlUX1NUVVNfUFJPSF9NUzEwMCAgPSAweDE0LAorCVRfU1RVU19QUk9IX01TMTA1ICA9IDB4MTUsCisJVF9TVFVTX1BST0hfTVMxMTAgID0gMHgxNiwKKwlUX1NUVVNfUFJPSF9NUzExNSAgPSAweDE3LAorCVRfU1RVU19QUk9IX01TMTIwICA9IDB4MTgsCisJVF9TVFVTX1BST0hfTVMxMjUgID0gMHgxOSwKKwlUX1NUVVNfUFJPSF9NUzEzMCAgPSAweDFBLAorCVRfU1RVU19QUk9IX01TMTM1ICA9IDB4MUIsCisJVF9TVFVTX1BST0hfTVMxNDAgID0gMHgxQywKKwlUX1NUVVNfUFJPSF9NUzE0NSAgPSAweDFELAorCVRfU1RVU19QUk9IX01TMTUwICA9IDB4MUUsCisJVF9TVFVTX1BST0hfTVMxNTUgID0gMHgxRiwKKwlUX1NUVVNfUFJPSF9NUzE2MCAgPSAweDIwLAorCVRfU1RVU19QUk9IX01TMTY1ICA9IDB4MjEsCisJVF9TVFVTX1BST0hfTVMxNzAgID0gMHgyMiwKKwlUX1NUVVNfUFJPSF9NUzE3NSAgPSAweDIzLAorCVRfU1RVU19QUk9IX01TMTgwICA9IDB4MjQsCisJVF9TVFVTX1BST0hfTVMxODUgID0gMHgyNSwKKwlUX1NUVVNfUFJPSF9NUzE5MCAgPSAweDI2LAorCVRfU1RVU19QUk9IX01TMTk1ICA9IDB4MjcsCisJVF9TVFVTX1BST0hfTVMyMDAgID0gMHgyOCwKKwlUX1NUVVNfUFJPSF9NUzIwNSAgPSAweDI5LAorCVRfU1RVU19QUk9IX01TMjEwICA9IDB4MkEsCisJVF9TVFVTX1BST0hfTVMyMTUgID0gMHgyQiwKKwlUX1NUVVNfUFJPSF9NUzIyMCAgPSAweDJDLAorCVRfU1RVU19QUk9IX01TMjI1ICA9IDB4MkQsCisJVF9TVFVTX1BST0hfTVMyMzAgID0gMHgyRSwKKwlUX1NUVVNfUFJPSF9NUzIzNSAgPSAweDJGLAorCVRfU1RVU19QUk9IX01TMjQwICA9IDB4MzAsCisJVF9TVFVTX1BST0hfTVMyNDUgID0gMHgzMSwKKwlUX1NUVVNfUFJPSF9NUzI1MCAgPSAweDMyLAorCVRfU1RVU19QUk9IX01TMzAwICA9IDB4MzMsCisJVF9TVFVTX1BST0hfTVMzNTAgID0gMHgzNCwKKwlUX1NUVVNfUFJPSF9NUzQwMCAgPSAweDM1LAorCVRfU1RVU19QUk9IX01TNDUwICA9IDB4MzYsCisJVF9TVFVTX1BST0hfTVM1MDAgID0gMHgzNywKKwlUX1NUVVNfUFJPSF9NUzgwMCAgPSAweDM4LAorCVRfU1RVU19QUk9IX01TMTAwMCA9IDB4MzksCisJVF9TVFVTX1BST0hfTVMxMjAwID0gMHgzQSwKKwlUX1NUVVNfUFJPSF9NUzE2MDAgPSAweDNCLAorCVRfU1RVU19QUk9IX01TMjAwMCA9IDB4M0MsCisJVF9TVFVTX1BST0hfTVMyNDAwID0gMHgzRCwKKwkKK30gZXJyY19lcmxjZGxfdF9zdHVzX3Byb2hfZW51bTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNU0dfSURfRVJSQ19FUkxDRExfQ09ORklHX1JFUSAoc3RydWN0KQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8vLyBzdHJ1Y3R1cmUgZm9yIEFNIGVudGl0eSAocmVjZWl2aW5nIHNpZGUpCit0eXBlZGVmIHN0cnVjdAorewkKKyAgICBlcnJjX2VybGNkbF90X3Jlb3JkZXJfZW51bSAgIHRfcmVvcmRlcjsKKyAgICBlcnJjX2VybGNkbF90X3N0dXNfcHJvaF9lbnVtIHRfc3R1c19wcm9oOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgbGlfZmllbGRfbGVuXzE1X2JpdDsKK30gZXJyY19lcmxjZGxfYW1fc3RydWN0OworCisKKy8vLyBjb25maWd1cmF0aW9uIGZvciBETCBVTSBlbnRpdHkgCit0eXBlZGVmIHN0cnVjdAorewkKKwllcnJjX2VybGNfc25fZmllbGRfbGVuX2VudW0gICBzbmZfbGVuOworCWVycmNfZXJsY2RsX3RfcmVvcmRlcl9lbnVtICAgIHRfcmVvcmRlcjsKKwlrYWxfdWludDggICAgICAgICAgICAgICAgICAgICBmbGFnX3BkY3BfbG9uZ19zbjsKKwlrYWxfdWludDggICAgICAgICAgICAgICAgICAgICByc3ZkWzNdOworCit9IGVycmNfZXJsY2RsX3VtX3N0cnVjdDsKKworCisvLy8gREwgUkIgY29uZmlndXJhdGlvbiAoZm9yIFJCIGVzdGFibGlzaC9yZS1lc3RhYmxpc2gvcmUtY29uZmlndXJlKQordHlwZWRlZiBzdHJ1Y3QgCit7CisjaWZkZWYgX19FTDJfQVJDSF9WMl9fCisgICAgZXJyY19lbDJfcmJfdHlwZV9lbnVtICAgICAgIHJiX3R5cGU7ICAvKiBTUkIgb3IgRFJCICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiaWQ7ICAgICAvKiBSQiBJZGVudGl0eSwgdmFsdWUgcmFuZ2U6IDEtMzIsIFNSQjogMS0yLCBEUkI6IDEtMzIgKi8KKyNlbHNlCisJZXJyY19lbDJfcmJpZF9lbnVtICAgICAgICAgIHJiaWQ7CisjZW5kaWYgLyogX19FTDJfQVJDSF9WMl9fICovCisJa2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGxjaWQ7CisJa2FsX3VpbnQ4CQkJCQlyYl9pZHg7CisJa2FsX3VpbnQ4CQkJCQlyc3ZkOworCisJZXJyY19lcmxjX3JiX21vZGVfZW51bSAgICAgIG1vZGU7CisJZXJyY19lcmxjX3JiX3R5cGVfZW51bSAgICAgIHR5cGU7CisJCisJLy8vIFJMQyBjb25maWd1cmF0aW9uIAorCXVuaW9uIHsKKwkJZXJyY19lcmxjZGxfYW1fc3RydWN0CWFtX2NmZzsKKwkJZXJyY19lcmxjZGxfdW1fc3RydWN0CXVtX2NmZzsKKwl9IGFtX3VtX2NmZzsKKworICAgIC8vLyBlcHMgYmVhcmVyIGlkLCB2YWxpZCBvbmx5IHdoZW4gRFJCIGFuZCBFUkxDX01PREVfRVNUL1JFRVNUL1JFQ0ZHCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGVwc19icl9pZDsKKworfSBlcnJjX2VybGNkbF9yYl9jZmdfc3RydWN0OyAKKworCisvLy8gREwgUkIgY29uZmlndXJhdGlvbiAoZm9yIFJCIHJlbGVhc2UpCit0eXBlZGVmIHN0cnVjdAoreworCWthbF91aW50OAkJCSAgIHJiX2lkeDsJCQkvLy88IFJCIGluZGV4CisjaWZkZWYgX19FTDJfQVJDSF9WMl9fCisgICAgZXJyY19lbDJfcmJfdHlwZV9lbnVtICByYl90eXBlOyAgICAgICAgIC8qIFNSQiBvciBEUkIgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgIHJiaWQ7ICAgICAgICAgICAgLyogUkIgSWRlbnRpdHksIHZhbHVlIHJhbmdlOiAxLTMyLCBTUkI6IDEtMiwgRFJCOiAxLTMyICovCisjZWxzZQorICAgIGVycmNfZWwyX3JiaWRfZW51bSAgICAgcmJpZDsKKyNlbmRpZiAvKiBfX0VMMl9BUkNIX1YyX18gKi8KKyAgICBrYWxfYm9vbAkJCSAgIGhvX2ZhaWx1cmU7ICAgICAgLy8vPCBpZiBITyBmYWlsdXJlLCByZW1vdmUgdGhlIG5ldyBSQi4KKwlrYWxfdWludDgJCQkgICByc3ZkOworCit9IGVycmNfZXJsY2RsX3JiX3JlbF9zdHJ1Y3Q7IAorCisvKiBDSE0gTUJNUyBzdXBwb3J0IHN0YXJ0ICovCit0eXBlZGVmIHN0cnVjdAoreworCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgbWNjaF9pZHg7CisKK30gZXJyY19lcmxjZGxfbWNjaF9jZmdfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgbWNjaF9pZHg7CisJCit9IGVycmNfZXJsY2RsX21jY2hfcmVsX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKworICAgIC8vIG51bWJlcmVkIGJ5IGVSUkMgYW5kIG5vdCBmcm9tIE5XLCAKKyAgICAvLyBJZiBvbmUgY2FycmllciBpcyBzdXBwb3J0ZWQsIHJhbmdlIDB+NworICAgIC8vIElmIHR3byBjYXJyaWVycyBhcmUgc3VwcG9ydGVkLCByYW5nZSAwfjE1CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgbXJiX2lkeDsKKwlrYWxfdWludDggICAgICAgICAgICAgICBsb29wX21vZGVfYzsKKworfSBlcnJjX2VybGNkbF9tcmJfY2ZnX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKworCWthbF91aW50OCAgICAgICAgICAgICAgIG1yYl9pZHg7CisJCit9IGVycmNfZXJsY2RsX21yYl9yZWxfc3RydWN0OworCisvKiBDSE0gTUJNUyBzdXBwb3J0IGVuZCAqLworCisvLy8gTVNHX0lEX0VSUkNfRVJMQ0RMX0NPTkZJR19SRVEgc3RydWN0dXJlCit0eXBlZGVmIHN0cnVjdAoreworCUxPQ0FMX1BBUkFfSERSCisKKwlrYWxfdWludDgJbl9lc3RfcmI7CS8vIHRoZSBudW1iZXIgb2YgUkJzIHRvIGJlIGVzdGFibGlzaGVkCisJa2FsX3VpbnQ4CW5fbW9kX3JiOwkvLyB0aGUgbnVtYmVyIG9mIFJCcyB0byBiZSBtb2RpZmllZAorCWthbF91aW50OAluX3JlbF9yYjsJLy8gdGhlIG51bWJlciBvZiBSQnMgdG8gYmUgcmVsZWFzZWQKKwlrYWxfdWludDgJcnN2ZDsKKworCS8qKiBSQiBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFJCIHRvIGJlIGVzdGFibGlzaGVkICovCisJZXJyY19lcmxjZGxfcmJfY2ZnX3N0cnVjdAllc3RfcmJbTUFYX05VTV9STENfQ09ORklHX1JCXTsgCisKKwkvKiogUkIgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBSQiB0byBiZSBtb2RpZmllZCAqLworCWVycmNfZXJsY2RsX3JiX2NmZ19zdHJ1Y3QJbW9kX3JiW01BWF9OVU1fUkxDX0NPTkZJR19SQl07IAorCQorCS8qKiBSQiBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFJCIHRvIGJlIHJlbGVhc2VkICovCisJZXJyY19lcmxjZGxfcmJfcmVsX3N0cnVjdAlyZWxfcmJbTUFYX05VTV9STENfQ09ORklHX1JCXTsgCisKKyNpZmRlZiBfX0VMMl9BUkNIX1YyX18KKyAgICBlcnJjX2VsMl9jZWxsX2dyb3VwX2VudW0gICAgIGNlbGxfZ3JvdXA7ICAgICAgIC8qIGluZGljYXRlIHRoaXMgUkIgYmVsb25ncyB0byBNQ0cgb3IgU0NHLCBmb3IgRU4tREMsIExURSBSQiBpcyBhbHdheXMgTUNHICovCisjZW5kaWYgLyogX19FTDJfQVJDSF9WMl9fICovCisKKy8qIENITSBNQk1TIHN1cHBvcnQgc3RhcnQgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbl9lc3RfbWNjaFtNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbl9yZWxfbWNjaFtNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsKKyAgICBlcnJjX2VybGNkbF9tY2NoX2NmZ19zdHJ1Y3QgZXN0X21jY2hbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF1bTUFYX0VNQk1TX01DQ0hfU1VQUE9SVF07CisgICAgZXJyY19lcmxjZGxfbWNjaF9yZWxfc3RydWN0IHJlbF9tY2NoW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NQ0NIX1NVUFBPUlRdOworCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIG5fZXN0X21yYltNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXTsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbl9yZWxfbXJiW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdOworICAgIGVycmNfZXJsY2RsX21yYl9jZmdfc3RydWN0ICBlc3RfbXJiW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NUkJfU1VQUE9SVF07CisgICAgZXJyY19lcmxjZGxfbXJiX3JlbF9zdHJ1Y3QgIHJlbF9tcmJbTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF1bTUFYX0VNQk1TX01SQl9TVVBQT1JUXTsKKy8qIENITSBNQk1TIHN1cHBvcnQgZW5kICovCit9IGVycmNfZXJsY2RsX2NvbmZpZ19yZXFfc3RydWN0OworCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTVNHX0lEX0VSUkNfRVJMQ0RMX1NXSVRDSF9WSVJUVUFMX0NPTk5FQ1RFRF9SRVEKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHJyY19lbmwyX3N3aXRjaF92aXJ0dWFsX2Nvbm5lY3RlZF9lbnVtIHN0YXR1czsKKworfSBlcnJjX2VybGNkbF9zd2l0Y2hfdmlydHVhbF9jb25uZWN0ZWRfcmVxX3N0cnVjdDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTVNHX0lEX0VSUkNfRVJMQ0RMX1NXSVRDSF9WSVJUVUFMX0NPTk5FQ1RFRF9DTkYKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvL25vIGNvbnRlbnRzIGluIHRoaXMgQ05GLCBzdWNjZXNzIG9ubHkKKworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE1TR19JRF9FUlJDX0VSTENETF9URVNUR19SRVEgIChlbnVtKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFUkxDRExfU0FQX0xCX0NNRF9NT0RFX0NfREVBQ1RJVkFURSA9IDAsCisJRVJMQ0RMX1NBUF9MQl9DTURfTU9ERV9DX0FDVElWQVRFLAorCUVSTENETF9TQVBfTEJfQ01EX01PREVfTlVNLAorCUVSTENETF9TQVBfTEJfQ01EX1BBRCA9IDBYN0ZGRkZGRkYKK31lcmxjZGxfbGJfY21kX2VudW07CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE1TR19JRF9FUlJDX0VSTENETF9URVNUX1JFUSAoc3RydWN0KQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKwlrYWxfdWludDggY2k7CisJa2FsX3VpbnQ4IG1yYl9pZHg7CisJCisJZXJsY2RsX2xiX2NtZF9lbnVtIGNtZDsKK31lcnJjX2VybGNkbF90ZXN0X3JlcV9zdHJ1Y3Q7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTVNHX0lEX0VSUkNfRVJMQ0RMX01UQ0hfUENfQ05GIChzdHJ1Y3QpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICAKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgcGFja2V0X2NvdW50OworfSBlcnJjX2VybGNkbF9tdGNoX3BjX2NuZl9zdHJ1Y3Q7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2VycmNfZXJsY3VsX21zZy5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lcnJjX2VybGN1bF9tc2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjVkMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9lcnJjX2VybGN1bF9tc2cuaApAQCAtMCwwICsxLDQ3MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZXJyY19lcmxjdWxfbXNnLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIEVSUkMtRVJMQ1VMIFNBUCBmaWxlCisgKiAgIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmVzIGFuZCBlbnVtZXJhdGlvbnMgZm9yIHRoZSBTQVAgYmV0d2VlbiBFUlJDIGFuZCBFUkxDVUwKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDQgMTUgMjAyMCBuYW5jeS5jaGFuZworICogW01PTFkwMDUwNTI0MF0gWzYyOTddIEVOLURDIGdhbWluZyBITyBlbmhhbmNlbWVudAorICogLgorICoKKyAqIDEyIDA0IDIwMTkgc2gucGFuCisgKiBbTU9MWTAwNDYyOTc5XSBbR2VuOTddTU9CL01FQVMvTkwxTU9CIDEwMDFERVYgdG8gVk1PTFkgcGF0Y2ggYmFjaworICogCQorICogCS4KKyAqCisgKiAxMSAxMyAyMDE5IHRzdW5nLW1pbmcubGVlCisgKiBbTU9MWTAwNDQxMzg3XSBbR2VuOTddW0VSUkNdW01PQl0gTlNBJiBMVEUgR2FtaW5nIGNlbGwgbGlzdCBmb3IgbW9iaWxpdHkgZW5oYW5jZW1lbnQKKyAqIAkKKyAqIAktbmV3IGdhbWluZyBwcm9wb3NhbC4KKyAqCisgKiAwOSAyNSAyMDE5IHBldGVyLnl1CisgKiBbTU9MWTAwNDQzMzEyXSBbTVQ2ODg1XVtQZXRydXNdW1Nhbml0eV1bVk1PTFldW1ZNT0xZXVsyMDE5LTA5LTIxXzE3MDBdIEFTU0VSVCA9IFsxXVtjb3JlMSx2cGUwLHRjMCh2cGUzKV0gQXNzZXJ0IGZhaWw6IGVwZGNwX3JibS5jIDYzOTIgLSBFTDIgXworICogW0VSTENdIEFwcGx5IG5ldyBWQyBjYXVzZS4KKyAqCisgKiAwOSAxOCAyMDE5IG5hbmN5LmNoYW5nCisgKiBbTU9MWTAwNDQwMjg2XSBbNjI5N10gRU5STEMgZ2FtaW5nIGxhdGVuY3kgZGV0ZWN0aW9uCisgKiAoaW50ZXJmYWNlKQorICoKKyAqIDEyIDE3IDIwMTggbWluZ3RzdW5nLnN1bgorICogW01PTFkwMDM3Mjc2OV0gW1ZNT0xZXSBlbmFibGUgRU5MMiBvbiBHZW45NSBIVyBwbGF0Zm9ybQorICogRU5MMiBtaWdyYXRpb24gLSBNUEQgKGVycmNfZW1hY19tc2cuaCBtb3ZlIHRvIE1BQyBDTCkKKyAqCisgKiAwNyAyNCAyMDE4IGNoaS1waW4ueWVoCisgKiBbTU9MWTAwMzQxNzY0XSBbR2VuOTddIHJlbW92ZSBlbnVtIGVycmNfZWwyX2NmZ19yZXN1bHRfZW51bQorICogUmVtb3ZlIGVudW0gZXJyY19lbDJfY2ZnX3Jlc3VsdF9lbnVtIHRoYXQgdXNlZCBmb3IgY29uZmlnIGNvbmZpcm0gcmVzdWx0CisgKiAJCisgKiAJW1Byb3RvY29sIGJ1aWxkIHRhZ10KKyAqIAlbSXMgQ0wgc2VsZiB0ZXN0YWJsZTogTk9dCisgKiAJW0dyb3VwIENMIGxpc3Q6IENMNjAyODE4NztDTDYwMjg0MzA7Q0w2MDA3ODc1O0NMNjAxNjczNV0KKyAqCisgKiAwNSAzMCAyMDE4IHBldGVyLmNoaWFuZworICogW01PTFkwMDMyNjY5MV0gW01UNjI5N10gR0VOOTcuREVWIEVOTDIgUGF0Y2ggYmFjaworICogW0VOTDJdW0ludGVyZmFjZV0gQlNSIGFuZCBpbnRlcmZhY2UgbW9kaWZpY2F0aW9uIHBhdGNoYmFjaworICoKKyAqIDAzIDI4IDIwMTggc2hpbi5jaGVuCisgKiBbTU9MWTAwMzE2NjkyXSBbNjI5N10gSW50ZXJmYWNlIGJ1aWxkLXVwIGZvciBFUlJDLU5SUkMsIEVSUkMvTlJSQy1FTkwyLCBFUlJDLUVMMiBTQVAKKyAqIHVwZGF0ZSBlbDIgaW50ZXJmYWNlcy4KKyAqCisgKiAwMiAwNiAyMDE3IHBldGVyLnl1CisgKiBbTU9MWTAwMjA3NzMzXSBbTVQ2MjkzXVtFTDJdIEVSTENETCBkZXZlbG9wbWVudAorICogW00tU0lNXSBTeW5jIFItU0lNIHJlbGF0ZWQgaW50ZXJmYWNlcywgcmVtb3ZlIHJlZHVuZGFudCBtZXNzYWdlIElEcyByZWxhdGVkIHRvIEVSTEMuCisgKgorICogMDkgMjYgMjAxNiBzbGlmZXIuaHN1ZWgKKyAqIFtNT0xZMDAyMDUwODVdIFtNVDYyOTNdW0VMMl0gRVJMQyBzb3VyY2UgY29kZXMgaW50ZWdyYXRpb24gZnJvbSBERVYgdG8gVFJVTksKKyAqIEVSTEMgc291cmNlIGNvZGVzIGludGVncmF0aW9uIGZyb20gREVWIHRvIFRSVU5LCisgKgorICogMDggMDQgMjAxNiB3ZWkubGlhbworICogW01PTFkwMDE5NDk2OV0gW01UNjI5M11bRUwyXSBFUkxDLVVMIHNvdXJjZSBjb2RlcyBpbnRlZ3JhdGlvbiBmcm9tIExURSB0byBSRCBkb21haW4KKyAqIDEuQnVnIGZpeDogU2V0dXAgZnVuY3Rpb24gcHRyIGZvciByZXR4IHBvcnQuCisgKiAyLkJ1ZyBmaXg6IEZpeCBsc2YvcmYgaW5mbyByZWdpc3RlcmF0aW9uIGZvciBuYWNrLgorICogMy5BZGQgdGltZXIgZW51bSBhbmQgY29uZmlnIHNldHRpbmcgaW4gRVJMQ1VMIGZvciBSMTMKKyAqIDQuSW5pdCAgRF9BRERSPU5VTEwgdG8gcHJldmVudCB0aGUgY2FzZSBmaXJzdCBkZXNjIGlzIG5vcm1hbAorICogKG9yaWdpbmFsIHF1ZXVlIGVuY291bnRlciBDTERNQkEgYnVmZmVyIHNob3J0YWdlIGFuZCBzdG9wIHByb2Nlc3NpbmcpZworICoKKyAqIDA3IDI3IDIwMTYgamVyZW15LmNoZW4KKyAqIFtNT0xZMDAxOTA2ODNdIFtVTU9MWUFdWzYyOTNdIEVMMiBtZXJnZSBiYWNrIHRvIFVNT0xZQSBUUlVOSyAmIFBTIERFVgorICogW0VMMl1bUkQgZG9tYWluXSBTeW5jIGxhdGVzdCBFTDIgZnJvbSBMVEUgZG9tYWluCisgKgorICogMDEgMDQgMjAxNiB0ZXJvLm1pZXR0aW5lbgorICogW01PTFkwMDE1NTgyMF0gRVJSQyBVTU9MWSB1cGRhdGVzCisgKiBOVlJBTSBJRiwgRVJSQyAtIEVMMiBJRiBhbmQgRVJSQyB1cGRhdGUgZm9yIDE1IGJpdCBSTEMgTEkgZmllbGQgbGVuZ3RoLgorICoKKyAqIDA3IDAzIDIwMTUgY2hpLWNodW5nLmxpbgorICogW01PTFkwMDEyMzkxOF0gW01UNjI5MV0gTW9kaWZ5IENITSBjb2RlIHRvIHByb3ZpZGUgZXBzX2JyX2lkIGluIGVycmNfZXJsY2RsX3JiX2NmZ19zdHJ1Y3QvZXJyY19lcmxjdWxfcmJfY2ZnX3N0cnVjdCBhbmQgZml4IGNvbXBpbGUgd2FybmluZworICogCVtDSE1dIENvZGUgc3luYy4gZnJvbSBUSzYyOTFfREVWCisgKgorICogMDQgMDggMjAxNSBrYXRpZS50c2VuZworICogW01PTFkwMDEwNDE4Nl0gW1VNT0xZXSBVTU9MWSBjb2RlIG1haW50ZW5hbmNlLgorICogCTEuIE1hcmNoIDIwMTUgTU9MWSBDUiBzeW5jIG9uIEVSTEMtREw6ICgxKSBWb0xURSBlYXJseSBSTEYgKDIpIGxvZyByZWR1Y3Rpb24KKyAqIAkyLiBSTEMgZ3Rlc3QgVVQgZml4OiBzZXQvcmVzZXQgZ0VSTENfVHJhcF9Nc2dfRU4gYXQgc2V0dXAoKSBhbmQgdGVhcmRvd24oKQorICoKKyAqIDAxIDIyIDIwMTQgamVyZW15LmNoZW4KKyAqIFtNT0xZMDAwNTQ1ODldIFtNVDYyOTBFMl0gYWRkIFJMRiBpbmRpY2F0aW9uIGZyb20gRVJMQy1ETAorICogcmVuYW1lIEVSUkNfRVJMQ1VMX1NUQVRVU19JTkQgdG8gRVJSQ19FUkxDX1JMRl9JTkQgYW5kIG1vZGlmeSB0aGUgaW50ZXJmYWNlIGZvciBib3RoIEVSTEMtVUwgYW5kIEVSTEMtREwgdXNlCisgKgorICogMDIgMTggMjAxMyBqZXJlbXkuY2hlbgorICogW01PTFkwMDAwNzEyN10gW01UNzIwOF0gRUwyIGVuaGFuY2VtZW50IGluIE1PTFkKKyAqIHVwZGF0ZSB0aGUgY29tbWVudHMuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLy8vIEBhdXRob3IgbXRrMDE3MzMKKy8vLyBAZGF0ZSAgIDA4LzEwLzExCisKKyNpZm5kZWYgX01US19MVEVfRVJSQ19FUkxDVUxfU0FQX0hfCisjZGVmaW5lIF9NVEtfTFRFX0VSUkNfRVJMQ1VMX1NBUF9IXworCisKKyNpbmNsdWRlICJlbDJfc2FwX2NvbW1vbi5oIgorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE1TR19JRF9FUlJDX0VSTENVTF9DT05GSUdfUkVRIChlbnVtKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8vLyB0LVBvbGxSZXRyYW5zbWl0Cit0eXBlZGVmIGVudW0KK3sKKwlUX1BPTExfUkVUWF9NUzUgICAgPSAweDAwLAorCVRfUE9MTF9SRVRYX01TMTAgICA9IDB4MDEsCisJVF9QT0xMX1JFVFhfTVMxNSAgID0gMHgwMiwKKwlUX1BPTExfUkVUWF9NUzIwICAgPSAweDAzLAorCVRfUE9MTF9SRVRYX01TMjUgICA9IDB4MDQsCisJVF9QT0xMX1JFVFhfTVMzMCAgID0gMHgwNSwKKwlUX1BPTExfUkVUWF9NUzM1ICAgPSAweDA2LAorCVRfUE9MTF9SRVRYX01TNDAgICA9IDB4MDcsCisJVF9QT0xMX1JFVFhfTVM0NSAgID0gMHgwOCwKKwlUX1BPTExfUkVUWF9NUzUwICAgPSAweDA5LAorCVRfUE9MTF9SRVRYX01TNTUgICA9IDB4MEEsCisJVF9QT0xMX1JFVFhfTVM2MCAgID0gMHgwQiwKKwlUX1BPTExfUkVUWF9NUzY1ICAgPSAweDBDLAorCVRfUE9MTF9SRVRYX01TNzAgICA9IDB4MEQsCisJVF9QT0xMX1JFVFhfTVM3NSAgID0gMHgwRSwKKwlUX1BPTExfUkVUWF9NUzgwICAgPSAweDBGLAorCVRfUE9MTF9SRVRYX01TODUgICA9IDB4MTAsCisJVF9QT0xMX1JFVFhfTVM5MCAgID0gMHgxMSwKKwlUX1BPTExfUkVUWF9NUzk1ICAgPSAweDEyLAorCVRfUE9MTF9SRVRYX01TMTAwICA9IDB4MTMsCisJVF9QT0xMX1JFVFhfTVMxMDUgID0gMHgxNCwKKwlUX1BPTExfUkVUWF9NUzExMCAgPSAweDE1LAorCVRfUE9MTF9SRVRYX01TMTE1ICA9IDB4MTYsCisJVF9QT0xMX1JFVFhfTVMxMjAgID0gMHgxNywKKwlUX1BPTExfUkVUWF9NUzEyNSAgPSAweDE4LAorCVRfUE9MTF9SRVRYX01TMTMwICA9IDB4MTksCisJVF9QT0xMX1JFVFhfTVMxMzUgID0gMHgxQSwKKwlUX1BPTExfUkVUWF9NUzE0MCAgPSAweDFCLAorCVRfUE9MTF9SRVRYX01TMTQ1ICA9IDB4MUMsCisJVF9QT0xMX1JFVFhfTVMxNTAgID0gMHgxRCwKKwlUX1BPTExfUkVUWF9NUzE1NSAgPSAweDFFLAorCVRfUE9MTF9SRVRYX01TMTYwICA9IDB4MUYsCisJVF9QT0xMX1JFVFhfTVMxNjUgID0gMHgyMCwKKwlUX1BPTExfUkVUWF9NUzE3MCAgPSAweDIxLAorCVRfUE9MTF9SRVRYX01TMTc1ICA9IDB4MjIsCisJVF9QT0xMX1JFVFhfTVMxODAgID0gMHgyMywKKwlUX1BPTExfUkVUWF9NUzE4NSAgPSAweDI0LAorCVRfUE9MTF9SRVRYX01TMTkwICA9IDB4MjUsCisJVF9QT0xMX1JFVFhfTVMxOTUgID0gMHgyNiwKKwlUX1BPTExfUkVUWF9NUzIwMCAgPSAweDI3LAorCVRfUE9MTF9SRVRYX01TMjA1ICA9IDB4MjgsCisJVF9QT0xMX1JFVFhfTVMyMTAgID0gMHgyOSwKKwlUX1BPTExfUkVUWF9NUzIxNSAgPSAweDJBLAorCVRfUE9MTF9SRVRYX01TMjIwICA9IDB4MkIsCisJVF9QT0xMX1JFVFhfTVMyMjUgID0gMHgyQywKKwlUX1BPTExfUkVUWF9NUzIzMCAgPSAweDJELAorCVRfUE9MTF9SRVRYX01TMjM1ICA9IDB4MkUsCisJVF9QT0xMX1JFVFhfTVMyNDAgID0gMHgyRiwKKwlUX1BPTExfUkVUWF9NUzI0NSAgPSAweDMwLAorCVRfUE9MTF9SRVRYX01TMjUwICA9IDB4MzEsCisJVF9QT0xMX1JFVFhfTVMzMDAgID0gMHgzMiwKKwlUX1BPTExfUkVUWF9NUzM1MCAgPSAweDMzLAorCVRfUE9MTF9SRVRYX01TNDAwICA9IDB4MzQsCisJVF9QT0xMX1JFVFhfTVM0NTAgID0gMHgzNSwKKwlUX1BPTExfUkVUWF9NUzUwMCAgPSAweDM2LAorCVRfUE9MTF9SRVRYX01TODAwICA9IDB4MzcsCisgICAgVF9QT0xMX1JFVFhfTVMxMDAwID0gMHgzOCwKKyAgICBUX1BPTExfUkVUWF9NUzIwMDAgPSAweDM5LAorICAgIFRfUE9MTF9SRVRYX01TNDAwMCA9IDB4M0EKKworfSBlcnJjX2VybGN1bF90X3BvbGxyZXR4X2VudW07CisKKy8vLyBQb2xsIFBEVSBjb3VudGVyCit0eXBlZGVmIGVudW0KK3sKKwlQT0xMX1BEVV9QNCAgID0gMHgwMCwKKwlQT0xMX1BEVV9QOCAgID0gMHgwMSwKKwlQT0xMX1BEVV9QMTYgID0gMHgwMiwKKwlQT0xMX1BEVV9QMzIgID0gMHgwMywKKwlQT0xMX1BEVV9QNjQgID0gMHgwNCwKKwlQT0xMX1BEVV9QMTI4ID0gMHgwNSwKKwlQT0xMX1BEVV9QMjU2ID0gMHgwNiwKKwlQT0xMX1BEVV9QSU5GID0gMHgwNworfSBlcnJjX2VybGN1bF9wb2xsX3BkdV9lbnVtOworCisKKy8vLyBQb2xsIGJ5dGUgY291bnRlcgordHlwZWRlZiBlbnVtCit7CisJUE9MTF9CWVRFX0tCMjUgICA9IDB4MDAsCisJUE9MTF9CWVRFX0tCNTAgICA9IDB4MDEsCisJUE9MTF9CWVRFX0tCNzUgICA9IDB4MDIsCisJUE9MTF9CWVRFX0tCMTAwICA9IDB4MDMsCisJUE9MTF9CWVRFX0tCMTI1ICA9IDB4MDQsCisJUE9MTF9CWVRFX0tCMjUwICA9IDB4MDUsCisJUE9MTF9CWVRFX0tCMzc1ICA9IDB4MDYsCisJUE9MTF9CWVRFX0tCNTAwICA9IDB4MDcsCisJUE9MTF9CWVRFX0tCNzUwICA9IDB4MDgsCisJUE9MTF9CWVRFX0tCMTAwMCA9IDB4MDksCisJUE9MTF9CWVRFX0tCMTI1MCA9IDB4MEEsCisJUE9MTF9CWVRFX0tCMTUwMCA9IDB4MEIsCisJUE9MTF9CWVRFX0tCMjAwMCA9IDB4MEMsCisJUE9MTF9CWVRFX0tCMzAwMCA9IDB4MEQsCisJUE9MTF9CWVRFX0tCSU5GICA9IDB4MEUKKworfSBlcnJjX2VybGN1bF9wb2xsX2J5dGVfZW51bTsKKworCisvLy8gbWF4aW11bSByZXRyYW5tc2lzc2lvbiB0aHJlc2hvbGQKK3R5cGVkZWYgZW51bQoreworCU1BWF9SRVRYX1QxICA9IDB4MDAsCisJTUFYX1JFVFhfVDIgID0gMHgwMSwKKwlNQVhfUkVUWF9UMyAgPSAweDAyLAorCU1BWF9SRVRYX1Q0ICA9IDB4MDMsCisJTUFYX1JFVFhfVDYgID0gMHgwNCwKKwlNQVhfUkVUWF9UOCAgPSAweDA1LAorCU1BWF9SRVRYX1QxNiA9IDB4MDYsCisJTUFYX1JFVFhfVDMyID0gMHgwNworCit9IGVycmNfZXJsY3VsX21heF9yZXR4X2VudW07CisKKworCisvLy8gUERDUCBTTiBsZW5ndGgKK3R5cGVkZWYgZW51bQoreworICAgIFBEQ1BfU05fTEVOXzA1ID0gMDUsICAgIC8vIFBEQ1AgU04gbGVuZ3RoID0gMDUgYml0cyAoU1JCKQorICAgIFBEQ1BfU05fTEVOXzA3ID0gMDcsICAgIC8vIFBEQ1AgU04gbGVuZ3RoID0gMDcgYml0cyAoRFJCIFVNKQorICAgIFBEQ1BfU05fTEVOXzEyID0gMTIsICAgIC8vIFBEQ1AgU04gbGVuZ3RoID0gMTIgYml0cyAoRFJCIEFNIG9yIFVNKQorICAgIFBEQ1BfU05fTEVOXzE1ID0gMTUsICAgIC8vIFBEQ1AgU04gbGVuZ3RoID0gMTUgYml0cyAoRFJCIEFNKQorICAgIFBEQ1BfU05fTEVOXzE4ID0gMTgsICAgIC8vIFBEQ1AgU04gbGVuZ3RoID0gMTggYml0cyAoRFJCIEFNKQorCit9IGVycmNfZXJsY3VsX3BkY3Bfc25fbGVuX2VudW07CisKK3R5cGVkZWYgZW51bQoreyAgICAKKyAgICBDRUxMX1NUQVRVU19JTlZBTElEICAgICAgID0gMCwKKyAgICBDRUxMX1NUQVRVU19ORVcgICAgICAgICAgID0gMSwKKyAgICBDRUxMX1NUQVRVU19MT05HX0dPT0QgICAgID0gMiwKKyAgICBDRUxMX1NUQVRVU19HT09EICAgICAgICAgID0gMywKKyAgICBDRUxMX1NUQVRVU19CQUQgICAgICAgICAgID0gNCwKKyAgICBDRUxMX1NUQVRVU19WRVJZX0JBRCAgICAgID0gNSwKKyAgICBDRUxMX1NUQVRVU19MT05HX1ZFUllfQkFEID0gNiwKKyAgICBDRUxMX1NUQVRVU19OVU0KK30gZXJyY19lcmxjdWxfZ2FtaW5nX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0KK3sgICAgCisgICAgQ0VMTF9HUk9VUF9NQ0cgICAgICAgICAgICA9IDAsCisgICAgQ0VMTF9HUk9VUF9TQ0cgICAgICAgICAgICA9IDEsCisgICAgQ0VMTF9HUk9VUF9ISVNUT1JJQ0FMICAgICA9IDIKK30gZXJyY19lcmxjdWxfZ2FtaW5nX2NlbGxfZ3JvdXBfZW51bTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTVNHX0lEX0VSUkNfRVJMQ1VMX0NPTkZJR19SRVEgKHN0cnVjdCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvLy8gY29uZmlndXJhdGlvbiBBTSBlbnRpdHkgKHRyYW5zbWl0dGluZyBzaWRlKQordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBlcnJjX2VybGN1bF90X3BvbGxyZXR4X2VudW0gICAgdF9wb2xscmV0eDsKKyAgICBlcnJjX2VybGN1bF9wb2xsX3BkdV9lbnVtICAgICAgcG9sbF9wZHU7CisgICAgZXJyY19lcmxjdWxfcG9sbF9ieXRlX2VudW0gICAgIHBvbGxfYnl0ZTsKKyAgICBlcnJjX2VybGN1bF9tYXhfcmV0eF9lbnVtICAgICAgbWF4X3JldHg7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgIGxpX2ZpZWxkX2xlbl8xNV9iaXQ7Cit9IGVycmNfZXJsY3VsX2FtX3N0cnVjdDsKKworCisvLy8gY29uZmlndXJhdGlvbiBmb3IgVUwgVU0gZW50aXR5Cit0eXBlZGVmIHN0cnVjdAoreworCWVycmNfZXJsY19zbl9maWVsZF9sZW5fZW51bQlzbmZfbGVuOworCit9IGVycmNfZXJsY3VsX3VtX3N0cnVjdDsKKworCisvLy8gVUwgUkIgY29uZmlndXJhdGlvbiAoZm9yIFJCIGVzdGFibGlzaC9yZS1lc3RhYmxpc2gvcmUtY29uZmlndXJlKQordHlwZWRlZiBzdHJ1Y3QKK3sKKyNpZmRlZiBfX0VMMl9BUkNIX1YyX18KKyAgICBlcnJjX2VsMl9yYl90eXBlX2VudW0gICAgICAgcmJfdHlwZTsgIC8qIFNSQiBvciBEUkIgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmJpZDsgICAgIC8qIFJCIElkZW50aXR5LCB2YWx1ZSByYW5nZTogMS0zMiwgU1JCOiAxLTIsIERSQjogMS0zMiAqLworI2Vsc2UKKwllcnJjX2VsMl9yYmlkX2VudW0JICAgICAgICByYmlkOworI2VuZGlmIC8qIF9fRUwyX0FSQ0hfVjJfXyAqLworCWthbF91aW50OAkgICAgICAgICAgICAgICAgbGNpZDsKKwlrYWxfdWludDgJCQkJCXJiX2lkeDsKKworCWVycmNfZXJsY19yYl9tb2RlX2VudW0gICAgICBtb2RlOworCWVycmNfZXJsY19yYl90eXBlX2VudW0gICAgICB0eXBlOworCisJLy8vIFJMQyBjb25maWd1cmF0aW9uCisJdW5pb24geworCQllcnJjX2VybGN1bF9hbV9zdHJ1Y3QgICBhbV9jZmc7CisJCWVycmNfZXJsY3VsX3VtX3N0cnVjdCAgIHVtX2NmZzsKKwl9IGFtX3VtX2NmZzsKKworCS8vLyBsb2dpY2FsIGNoYW5uZWwgY29uZmlndXJhdGlvbgorCWVycmNfZWwyX2xjaF9jZmcJCQlsY2hfY2ZnOworCisgICAgLy8vIGVwcyBiZWFyZXIgaWQsIHZhbGlkIG9ubHkgd2hlbiBEUkIgYW5kIEVSTENfTU9ERV9FU1QvUkVFU1QvUkVDRkcKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgZXBzX2JyX2lkOworCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJzdmRfMTsKKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgcnN2ZF8yOworCit9IGVycmNfZXJsY3VsX3JiX2NmZ19zdHJ1Y3Q7CisKKworLy8vIFVMIFJCIGNvbmZpZ3VyYXRpb24gKGZvciBSQiByZWxlYXNlKQordHlwZWRlZiBzdHJ1Y3QKK3sKKwlrYWxfdWludDgJCQlyYl9pZHg7CQkJLy8vPCBSQiBpbmRleAorI2lmZGVmIF9fRUwyX0FSQ0hfVjJfXworICAgIGVycmNfZWwyX3JiX3R5cGVfZW51bSAgIHJiX3R5cGU7ICAgICAgICAvKiBTUkIgb3IgRFJCICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgcmJpZDsgICAgICAgICAgIC8qIFJCIElkZW50aXR5LCB2YWx1ZSByYW5nZTogMS0zMiwgU1JCOiAxLTIsIERSQjogMS0zMiAqLworI2Vsc2UKKwllcnJjX2VsMl9yYmlkX2VudW0JcmJpZDsJCQkvLy88IFJCSUQKKyNlbmRpZiAvKiBfX0VMMl9BUkNIX1YyX18gKi8KKyAgICBrYWxfYm9vbAkJCWhvX2ZhaWx1cmU7ICAgICAvLy88IGlmIEhPIGZhaWx1cmUsIHJlbW92ZSB0aGUgbmV3IFJCLgorCWthbF91aW50OAkJCXJzdmQ7CisKK30gZXJyY19lcmxjdWxfcmJfcmVsX3N0cnVjdDsKKworCisvLy8gTVNHX0lEX0VSUkNfRVJMQ0RMX0NPTkZJR19SRVEgc3RydWN0dXJlCit0eXBlZGVmIHN0cnVjdAoreworCUxPQ0FMX1BBUkFfSERSCisKKwlrYWxfdWludDgJbl9lc3RfcmI7CS8vIHRoZSBudW1iZXIgb2YgUkJzIHRvIGJlIGVzdGFibGlzaGVkCisJa2FsX3VpbnQ4CW5fbW9kX3JiOwkvLyB0aGUgbnVtYmVyIG9mIFJCcyB0byBiZSBtb2RpZmllZAorCWthbF91aW50OAluX3JlbF9yYjsJLy8gdGhlIG51bWJlciBvZiBSQnMgdG8gYmUgcmVsZWFzZWQKKwlrYWxfdWludDgJcnN2ZDsKKworCS8qKiBSQiBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFJCIHRvIGJlIGVzdGFibGlzaGVkICovCisJZXJyY19lcmxjdWxfcmJfY2ZnX3N0cnVjdAllc3RfcmJbTUFYX05VTV9STENfQ09ORklHX1JCXTsKKworCS8qKiBSQiBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFJCIHRvIGJlIG1vZGlmaWVkICovCisJZXJyY19lcmxjdWxfcmJfY2ZnX3N0cnVjdAltb2RfcmJbTUFYX05VTV9STENfQ09ORklHX1JCXTsKKworCS8qKiBSQiBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFJCIHRvIGJlIHJlbGVhc2VkICovCisJZXJyY19lcmxjdWxfcmJfcmVsX3N0cnVjdAlyZWxfcmJbTUFYX05VTV9STENfQ09ORklHX1JCXTsKKworI2lmZGVmIF9fRUwyX0FSQ0hfVjJfXworICAgIGVycmNfZWwyX2NlbGxfZ3JvdXBfZW51bSAgICAgY2VsbF9ncm91cDsgICAgICAgLyogaW5kaWNhdGUgdGhpcyBSQiBiZWxvbmdzIHRvIE1DRyBvciBTQ0csIGZvciBFTi1EQywgTFRFIFJCIGlzIGFsd2F5cyBNQ0cgKi8KKyNlbmRpZiAvKiBfX0VMMl9BUkNIX1YyX18gKi8KKworICAgIGthbF91aW50MTYgIHBjaTsKKyAgICBrYWxfdWludDMyICBlYXJmY247Cit9IGVycmNfZXJsY3VsX2NvbmZpZ19yZXFfc3RydWN0OworCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTVNHX0lEX0VSUkNfRVJMQ1VMX1NSQjFfQUNLX1JFUQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworCS8vLyByZXBvcnQgY29udHJvbCBmbGFnCisJLy8vIC0gS0FMX1RSVUU6ICBzdGFydCByZXBvcnQKKwkvLy8gLSBLQUxfRkFMU0U6IHN0b3AgcmVwb3J0CisJa2FsX2Jvb2wJcmVwb3J0OworCisJa2FsX3VpbnQ4CQkJcnN2ZF8xOworCWthbF91aW50MTYJCQlyc3ZkXzI7CisKK30gZXJyY19lcmxjdWxfc3JiMV9hY2tfcmVxX3N0cnVjdDsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNU0dfSURfRVJMQ1VMX0VSUkNfU1JCMV9BQ0tfQ05GCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8vIG5vIGxvY2FsIHBhcmFtZXRlcnMKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNU0dfSURfRVJSQ19FUkxDVUxfU1dJVENIX1ZJUlRVQUxfQ09OTkVDVEVEX1JFUQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAgcnJjX2VubDJfc3dpdGNoX3ZpcnR1YWxfY29ubmVjdGVkX2VudW0gc3RhdHVzOworCit9IGVycmNfZXJsY3VsX3N3aXRjaF92aXJ0dWFsX2Nvbm5lY3RlZF9yZXFfc3RydWN0OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNU0dfSURfRVJSQ19FUkxDVUxfU1dJVENIX1ZJUlRVQUxfQ09OTkVDVEVEX0NORgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8vbm8gY29udGVudHMgaW4gdGhpcyBDTkYsIHN1Y2Nlc3Mgb25seQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNU0dfSURfRVJSQ19FUkxDVUxfR0FNSU5HX0NFTExfSU5GT19OVEYKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lIE1BWF9SRVBPUlRFRF9DRUxMX05VTSAoMTApCisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQxNiBwY2k7CisgICAga2FsX3VpbnQxNiByc3ZkOworICAgIGthbF91aW50MzIgZWFyZmNuOworICAgIGVycmNfZXJsY3VsX2dhbWluZ19zdGF0dXNfZW51bSBjZWxsX3N0YXR1czsKKyAgICBlcnJjX2VybGN1bF9nYW1pbmdfY2VsbF9ncm91cF9lbnVtIGNlbGxfZ3JvdXA7Cit9IGVycmNfZXJsY3VsX2dhbWluZ19jZWxsX2luZm9fc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDE2IGNlbGxfbnVtOworICAgIGthbF91aW50MTYgcnN2ZDsKKyAgICBlcnJjX2VybGN1bF9nYW1pbmdfY2VsbF9pbmZvX3N0cnVjdCBjZWxsX2luZm9bTUFYX1JFUE9SVEVEX0NFTExfTlVNXTsKKworfSBlcnJjX2VybGN1bF9nYW1pbmdfY2VsbF9pbmZvX250Zl9zdHJ1Y3Q7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9ldGNfdXBjbV9zdHJ1Y3QuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXRjX3VwY21fc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY5MzJmOQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvZXRjX3VwY21fc3RydWN0LmgKQEAgLTAsMCArMSw5MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGV0Y191cGNtX3N0cnVjdC5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIFRBVEFLQQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIG1lc3NhZ2UgYW5kIGNvbW1vbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBiZXR3ZWVuIEVUQyBhbmQgVVBDTSBtb2R1bGUKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiAgRVRDX1VQQ01fU1RSVUNUX0lOQworI2RlZmluZSAgRVRDX1VQQ01fU1RSVUNUX0lOQworCisjaW5jbHVkZSAibDNfaW5jX2xvY2FsLmgiCisKKy8qKioqKiBtZXNzYWdlIHN0cnVjdHVyZSBkZWZpbml0aW9uICoqKioqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBpc19hY3RpdmF0ZTsgLyogS0FMX1RSVUU6IGFjdGl2YXRlLCBLQUxfRkFMU0U6IGRlYWN0aXZhdGUgKi8KK30gZXRjX3VwY21fdGVzdG1vZGVfcmVxX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICByZXN1bHQ7IC8qIDA6IHN1Y2Nlc3MsIDE6IHN0YXR1cyBlcnJvciAqLworfSBldGNfdXBjbV90ZXN0bW9kZV9jbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgIGlzX2Nsb3NlOyAvKiBLQUxfVFJVRTogY2xvc2UgbG9vcCwgS0FMX0ZBTFNFOiBvcGVuIGxvb3AgKi8KKwlrYWxfdWludDggICAgICAgICAgICAgICAgICAgZGVsYXlfdGltZTsKK30gZXRjX3VwY21fdGVzdGxvb3BfcmVxX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICByZXN1bHQ7IC8qIDA6IHN1Y2Nlc3MsIDE6IHN0YXR1cyBlcnJvciAqLworfSBldGNfdXBjbV90ZXN0bG9vcF9jbmZfc3RydWN0OworCisKKyNlbmRpZiAgIC8qIC0tLS0tICNpZm5kZWYgRVRDX1VQQ01fU1RSVUNUX0lOQyAtLS0tLSAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2x0bS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9sdG0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTk2YzcxCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi9sdG0uaApAQCAtMCwwICsxLDE1MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGx0bS5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1PTFkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICoKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKiAgIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDEyIDE3IDIwMTIgbW9qYS5oc3UKKyAqIFtNT0xZMDAwMDc2MjVdIE1haW50YWluIGNvZGUKKyAqIGFkanVzdCBpbnRlcmZhY2UgdXNhZ2UuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogICAgICAgRmlsZW5hbWU6ICBsdG0uaAorICoKKyAqICAgIERlc2NyaXB0aW9uOiAgTFRNIChMVEUgdHJhZmZpYyBtYW5hZ2VyIGV4cG9ydGVkIGhlYWRlciBmaWxlKQorICoKKyAqICAgICAgICBDcmVhdGVkOiAgMjAxMS8xMC8yOCCkVaTIIDA3OjAzOjU1CisgKiAgICAgICAgQXV0aG9yOiAgbXRrMDE2NDEgKG1vamEpCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKi8KKyNpZm5kZWYgIExUTV9JTkMKKyNkZWZpbmUgIExUTV9JTkMKKworI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisjaW5jbHVkZSAicmF0Y29tbW9uLmgiCisKKy8qCisgKiBsdGUgdGljayBzb3VyY2Ugbm90aWZ5IGNhbGxiYWNrIHByb3RvdHlwZS4KKyAqIGlzX2x0ZV90aWNrOiBLQUxfVFJVRSAtIGhhcyBMVEUgdGljay4KKyAqICAgICAgICAgICAgICBLQUxfRkxBRSAtIG1heSBubyBMVEUgdGljay4KKyAqLwordHlwZWRlZiB2b2lkICgqbHRtX211bHRpX25vdGlmeV9sdGVfdGlja19mKShrYWxfYm9vbCBpc19sdGVfdGljayk7CisKKy8qKgorICogQGJyaWVmIGx0bV9tdWx0aWluaXQKKyAqIEluaXQgTFRNIG1vZHVsZS4KKyAqCisgKiBAcmV0dXJuIFRSVUUgIAorICovCitrYWxfYm9vbCBsdG1fbXVsdGlfaW5pdCh2b2lkKTsKKworLyoqCisgKiBAYnJpZWYgbHRtX211bHRpaW5pdAorICogUmVzZXQgTFRNIG1vZHVsZS4KKyAqCisgKiBAcmV0dXJuIFRSVUUgIAorICovCitrYWxfYm9vbCBsdG1fbXVsdGlfcmVzZXQodm9pZCk7CisKKy8qKgorICogQGJyaWVmIGx0bV9tdWx0aW9uX2lsbSAKKyAqIFJlY2VpdmUgSUxNIG1lc3NhZ2UKKyAqCisgKiBAcGFyYW0gaWxtCisgKi8KK3ZvaWQgbHRtX211bHRpX29uX2lsbShpbG1fc3RydWN0ICpwX2lsbSk7CisKKy8qKgorICogQGJyaWVmIGx0bV9tdWx0aXJjdl91bF9zZHUgCisgKiBSZWNlaXZlIFVMIFNEVXMuIFVMIFNEVSBhcmUgR1BEIGxpc3QuCisgKgorICogQHBhcmFtIGViaSAgICBFUFNCIElECisgKiBAcGFyYW0gcF9oZWFkIFNEVSBsaXN0IGhlYWQuIChHUEQgYmFzZWQpCisgKiBAcGFyYW0gcF90YWlsIFNEVSBsaXN0IHRhaWwuIChHUEQgYmFzZWQpCisgKi8KK3ZvaWQgbHRtX211bHRpX3Jjdl91bF9zZHUoa2FsX3VpbnQzMiBlYmksIHJhdGNtbl91bF9zZHVfdCAqcF9zZHVzKTsKKworLyoqCisgKiBAYnJpZWYgbHRtX211bHRpcmVnX2Nia19ub3RpZnlfbHRlX3RpY2sKKyAqIFJlZ2lzdGVyIGNhbGxiYWNrIGZ1bmN0aW9uLgorICogRm9yIGdldCBpZiB0aGVyZSBpcyBhIExURSB0aWNrIHNvdXJjZS4KKyAqCisgKiBAcGFyYW0gcGZfbm90aWZ5IGNhbGxiYWNrIGZ1bmN0aW9uLgorICovCit2b2lkIGx0bV9tdWx0aV9yZWdfY2JrX25vdGlmeV9sdGVfdGljayhsdG1fbXVsdGlfbm90aWZ5X2x0ZV90aWNrX2YgcGZfbm90aWZ5KTsKKworLyoqCisgKiBAYnJpZWYgbHRtX211bHRpcmVnX2Nia19kbHZyX2RsX3NkdSAKKyAqIFJlZ2lzdGVyIGNhbGxiYWNrIGZvciBkZWxpdmVyIERMIFNEVXMuCisgKgorICogQHBhcmFtIHBmX2RsdnJfc2R1CisgKi8KK3ZvaWQgbHRtX211bHRpX3JlZ19jYmtfZGx2cl9kbF9zZHUocmF0Y21uX2RsdnJfZGxfc2R1X2YgcGZfZGx2cl9zZHUpOworCisvKioKKyAqIEBicmllZiBsdG1fbXVsdGlfcmVnX2Nia19ob29rX3VsIAorICogUmVnaXN0ZXIgY2FsbGJhY2sgZm9yIExURSBVTCB0cmFmZmljLgorICoKKyAqIEBwYXJhbSBwZl9ob29rCisgKi8KK3ZvaWQgbHRtX211bHRpX3JlZ19jYmtfaG9va191bChyYXRjbW5faG9va191bF9mIHBmX2hvb2spOworCisvKioKKyAqIEBicmllZiBsdG1fbXVsdGlfcmVnX2Nia19yb2xsYmFja191bF9zZHUKKyAqIFJlZ2lzdGVyIGNhbGxiYWNrIGZvciBMVEUgVUwgdHJhZmZpYyByb2xsYmFjay4KKyAqCisgKiBAcGFyYW0gcGZfaG9vaworICovCit2b2lkIGx0bV9tdWx0aV9yZWdfY2JrX3JvbGxiYWNrX3VsX3NkdShyYXRjbW5fcm9sbGJhY2tfc2R1X2YgcGZfcm9sbGJhY2spOworI2VuZGlmICAgLyogLS0tLS0gI2lmbmRlZiBMVE1fSU5DICAtLS0tLSAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2x0bV9lbDJfc3RydWN0LmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL2x0bV9lbDJfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1Mzc3NwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvbHRtX2VsMl9zdHJ1Y3QuaApAQCAtMCwwICsxLDEzMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGx0bV9lbDJfc3RydWN0LmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgTU9MWQorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIG1lc3NhZ2UgYW5kIGNvbW1vbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBiZXR3ZWVuIExUTSBhbmQgRUwyIG1vZHVsZXMuCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICogLS0tLS0tLQorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDEyIDEzIDIwMTMgc3RldmUua2FvCisgKiBbTU9MWTAwMDQ4Nzg5XSBbTVQ2MjkwRTJdW0VMMiBSVERdIFVFIG5vdCB0cmlnZ2VyaW5nIFVMIGRhdGEgdHJhbnNtaXNzaW9uCisgKiAJSW50ZWdyYXRlIGNoYW5nZSBmb3IgdXNpbmcgT1MgdGljayBpbiBPQSBkb21haW4KKyAqCisgKiAxMSAyMiAyMDEzIHRpbW90aHkueWFvCisgKiBbTU9MWTAwMDQ3MDUyXSBhZGQgdHJhY2UvY29kZSBmb3IgTFYKKyAqIG1vZGlmeSB1bHNkdV9pbmZvIHN0cnVjdHVyZSBmb3IgaXBpZAorICoKKyAqIDA2IDE3IDIwMTMgY2xhcmsucGVuZworICogW01PTFkwMDAyNTg4M10gW01UNjI5MF1bRUwyXSBNb3ZlIHNoYXJlZCBkZWZpbml0aW9ucyBpbiBST0hDIGFuZCBFTDIgdG8gT0EgZG9tYWluCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgTFRNX0VMMl9TVFJVQ1RfSU5DCisjZGVmaW5lICBMVE1fRUwyX1NUUlVDVF9JTkMKKworI2luY2x1ZGUgInFtdV9ibS5oIgorCisvKioKKyAqIEBicmllZiBEUkIgVUwtU0RVIGluZm8gSGVhZGVyCisgKgorICogbm90ZToKKyAqIC0gbG9jYXRpb24gOiBpbiBTVyBjb250cm9sIGZpZWxkIG9mIEJNLWhlYWRlcgorICovCit0eXBlZGVmIHN0cnVjdCAKK3sKKyAgICAvKioqIHRoaXMgNCBieXRlcyBpcyByZXNlcnZlZCBmb3IgVVBDTSwgRE8gTk9UIGNoYW5nZSB0aGUgbG9jYXRpb24gKioqLworCWthbF91aW50MTYgaXBpZDsKKwlrYWxfdWludDE2IHJzdmQ7CisKKyAgICAvKioqIERvbid0IGNoYW5nZSB0aGUgZm9sbG93aW5nIDQgYnl0ZXMgbGF5b3V0LCBiZWNhdXNlIGx0bSB3aWxsIHVzZSA0IGJ5dGVzIHdyaXRlIHRvIGNsZWFuIGl0KioqLworI2RlZmluZSBVTFNEVV9JTkZPX0hFQURfRkxBR19QUklPUklUWSAgIDB4MDEKKyNkZWZpbmUgVUxTRFVfSU5GT19IRUFEX0ZMQUdfQ1RSTF9QRFUgICAweDAyCisjZGVmaW5lIFVMU0RVX0lORk9fSEVBRF9GTEFHX1JFVFhfV0lfU04gMHgwNAorCWthbF91aW50OCAgZmxhZ19ibXA7CisJa2FsX3VpbnQ4ICByc3YxOworCWthbF91aW50MTYgb3JpX2hkcl9zejsKKyAgICAvKioqIERvbid0IGNoYW5nZSB0aGUgYWJvdmUgNCBieXRlcyBsYXlvdXQsIGJlY2F1c2UgbHRtIHdpbGwgdXNlIDQgYnl0ZXMgd3JpdGUgdG8gY2xlYW4gaXQqKiovCisgICAgLyogcGFkIGZvciBtYWludGFpbmluZyBvcmlnaW5hbCBzdHJ1Y3R1cmUgd2hlbiBBQlMgVElDSyB3YXMgdXNlZCAqLworICAgIGthbF91aW50MzIgcnN2MjsKKyAgICAvKiBlbnRyeSB0aWNrLCBpdCB3aWxsIGJlIGZpbGxlZCBieSBsdG0gdXNpbmcgMzItYml0IE9TIHRpY2sgKi8KKyAgICBrYWxfdWludDMyIHRpY2s7CisgICAgCisgICAgLyogVHggSEZOICYgU04gKi8KKyAgICBrYWxfdWludDMyIHBkY3BfY291bnQ7Cit9ZHJiX3Vsc2R1X2luZm9faGVhZF90OworI2RlZmluZSBHRVRfVUxTRFVfSU5GT19IRUFEKF9wKSAoKGRyYl91bHNkdV9pbmZvX2hlYWRfdCopUUJNX0RFU19HRVRfU1dfQ1RSTF9GSUVMRChfcCkpCisKKy8qIEdldCBNYWNyb3MgKi8KKyNkZWZpbmUgR0VUX0RSQl9VTFNEVV9QUklEQVRBKF9wKSBcCisgICAgICAgICAgIChHRVRfVUxTRFVfSU5GT19IRUFEKF9wKS0+ZmxhZ19ibXAgJiBVTFNEVV9JTkZPX0hFQURfRkxBR19QUklPUklUWSkgCisjZGVmaW5lIEdFVF9EUkJfVUxTRFVfQ1RSTFBEVShfcCkgXAorICAgICAgICAgICAoR0VUX1VMU0RVX0lORk9fSEVBRChfcCktPmZsYWdfYm1wICYgVUxTRFVfSU5GT19IRUFEX0ZMQUdfQ1RSTF9QRFUpIAorI2RlZmluZSBHRVRfRFJCX1VMU0RVX1JFVFgoX3ApIFwKKyAgICAgICAgICAgKEdFVF9VTFNEVV9JTkZPX0hFQUQoX3ApLT5mbGFnX2JtcCAmIFVMU0RVX0lORk9fSEVBRF9GTEFHX1JFVFhfV0lfU04pIAorCisvKiBTZXQgTWFjcm9zICovCisjZGVmaW5lIFNFVF9EUkJfVUxTRFVfUFJJREFUQShfcCkgXAorICAgICAgICAgICAoR0VUX1VMU0RVX0lORk9fSEVBRChfcCktPmZsYWdfYm1wIHw9IFVMU0RVX0lORk9fSEVBRF9GTEFHX1BSSU9SSVRZKSAKKyNkZWZpbmUgU0VUX0RSQl9VTFNEVV9DVFJMUERVKF9wKSBcCisgICAgICAgICAgIChHRVRfVUxTRFVfSU5GT19IRUFEKF9wKS0+ZmxhZ19ibXAgfD0gVUxTRFVfSU5GT19IRUFEX0ZMQUdfQ1RSTF9QRFUpIAorI2RlZmluZSBTRVRfRFJCX1VMU0RVX1JFVFgoX3ApIFwKKyAgICAgICAgICAgKEdFVF9VTFNEVV9JTkZPX0hFQUQoX3ApLT5mbGFnX2JtcCB8PSBVTFNEVV9JTkZPX0hFQURfRkxBR19SRVRYX1dJX1NOKSAKKworLyogQ2xlYXIgTWFjcm9zICovCisjZGVmaW5lIENMUl9EUkJfVUxTRFVfUFJJREFUQShfcCkgXAorICAgICAgICAgICAoR0VUX1VMU0RVX0lORk9fSEVBRChfcCktPmZsYWdfYm1wICY9IH5VTFNEVV9JTkZPX0hFQURfRkxBR19QUklPUklUWSkgCisjZGVmaW5lIENMUl9EUkJfVUxTRFVfQ1RSTFBEVShfcCkgXAorICAgICAgICAgICAoR0VUX1VMU0RVX0lORk9fSEVBRChfcCktPmZsYWdfYm1wICY9IH5VTFNEVV9JTkZPX0hFQURfRkxBR19DVFJMX1BEVSkgCisjZGVmaW5lIENMUl9EUkJfVUxTRFVfUkVUWChfcCkgXAorICAgICAgICAgICAoR0VUX1VMU0RVX0lORk9fSEVBRChfcCktPmZsYWdfYm1wICY9IH5VTFNEVV9JTkZPX0hFQURfRkxBR19SRVRYX1dJX1NOKSAKKyNkZWZpbmUgQ0xSX0RSQl9VTFNEVV9GTEFHX0JNUChfcCkgXAorICAgICAgICAgICAoR0VUX1VMU0RVX0lORk9fSEVBRChfcCktPmZsYWdfYm1wID0gMCkKKworCisjZW5kaWYgICAvKiAtLS0tLSAjaWZuZGVmIExUTV9FTDJfU1RSVUNUX0lOQyAtLS0tLSAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VsMl90cmMuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZWwyX3RyYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YmNmZmIKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VsMl90cmMuaApAQCAtMCwwICsxLDEzMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgZWwyX3RyYy5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKiAgIE1PTFkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBMVEUgTGF5ZXIgMiB0cmFjZSBkZWZpbml0aW9uLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAxMiAxNCAyMDE3IGktZmVuZy5jaGVuCisgKiBbTU9MWTAwMjk1NjI0XSBbRVBEQ1BdW1JKSUxdIFByaW50IFJPSEMgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gaW5mbyBvbiBQUyBpbnRlZ3JhdGVkCisgKiAJCisgKiAJW1IzXVtFUERDUF1bUkpJTF0gUHJpbnQgUk9IQyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBpbmZvIG9uIFBTIGludGVncmF0ZWQKKyAqCisgKiAwNiAyMiAyMDE3IG5pY29sZS5oc3UKKyAqIFtNT0xZMDAyNTkxMTldIFtNVDY3NjNdW0VMMl0gRU1BQy9FTDJFTS9FTDJQT1cgbWFpbnRlbmFuY2UKKyAqIFtUUlVOS10gYWRkIGVtYWNkbCB0cmFjZSBkdW1wCisgKgorICogMDMgMzAgMjAxNyBtZi5qaGFuZworICogW01PTFkwMDE5NDk4N10gW01UNjI5M11bVU1PTFlBL1BTIERFVl0gRU1BQyBtYWludGVuYW5jZQorICogLiBBZGQgUFMgdHJhY2Ugd2hpbGUgYXNzZXJ0CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0VMMl9UUkNfSAorI2RlZmluZSBfRUwyX1RSQ19ICisKKyNpZm5kZWYgR0VOX0ZPUl9QQworICAgICNpbmNsdWRlICJzdGFja19jb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAia2FsX3B1YmxpY19kZWZzLmgiCisjaW5jbHVkZSAiZGhsX3RyYWNlLmgiCisKKyNpZiAhZGVmaW5lZChHRU5fRk9SX1BDKQorI2lmIGRlZmluZWQoX19ESExfTU9EVUxFX18pIHx8IGRlZmluZWQoX19DVVNUT01fUkVMRUFTRV9fKQorICAgICNpbmNsdWRlICJlbDJfdHJjX2dlbi5oIgorI2VuZGlmCisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcmFjZSBGdW5jdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiNkZWZpbmUgRUwyX1BVQkxJQ19UUkFDRTAobXNnX2luZGV4KSBcCisgICAgICAgICBkaGxfaW50ZXJuYWxfdHJhY2UoVFJBQ0VfSU5GTywgMCwgREhMX0FDQ0VTU19MRVZFTF8xX0FMTF9VU0VSLCBtc2dfaW5kZXgpKi8KKy8qI2RlZmluZSBFTDJfUFVCTElDX1RSQUNFMShtc2dfaW5kZXgsIGExKSBcCisgICAgICAgICBkaGxfaW50ZXJuYWxfdHJhY2UoVFJBQ0VfSU5GTywgMCwgREhMX0FDQ0VTU19MRVZFTF8xX0FMTF9VU0VSLCBtc2dfaW5kZXgsIGExKSovCisvKiNkZWZpbmUgRUwyX1BVQkxJQ19UUkFDRTIobXNnX2luZGV4LCBhMSwgYTIpIFwKKyAgICAgICAgIGRobF9pbnRlcm5hbF90cmFjZShUUkFDRV9JTkZPLCAwLCBESExfQUNDRVNTX0xFVkVMXzFfQUxMX1VTRVIsIG1zZ19pbmRleCwgYTEsIGEyKSAgICAqLworLyojZGVmaW5lIEVMMl9QVUJMSUNfVFJBQ0UzKG1zZ19pbmRleCwgYTEsIGEyLCBhMykgXAorICAgICAgICAgZGhsX2ludGVybmFsX3RyYWNlKFRSQUNFX0lORk8sIDAsIERITF9BQ0NFU1NfTEVWRUxfMV9BTExfVVNFUiwgbXNnX2luZGV4LCBhMSwgYTIsIGEzKSAgICAqLworLyojZGVmaW5lIEVMMl9QVUJMSUNfVFJBQ0U0KG1zZ19pbmRleCwgYTEsIGEyLCBhMywgYTQpIFwKKyAgICAgICAgIGRobF9pbnRlcm5hbF90cmFjZShUUkFDRV9JTkZPLCAwLCBESExfQUNDRVNTX0xFVkVMXzFfQUxMX1VTRVIsIG1zZ19pbmRleCwgYTEsIGEyLCBhMywgYTQpKi8KKy8qI2RlZmluZSBFTDJfUFVCTElDX1RSQUNFNShtc2dfaW5kZXgsIGExLCBhMiwgYTMsIGE0LCBhNSkgXAorICAgICAgICAgZGhsX2ludGVybmFsX3RyYWNlKFRSQUNFX0lORk8sIDAsIERITF9BQ0NFU1NfTEVWRUxfMV9BTExfVVNFUiwgbXNnX2luZGV4LCBhMSwgYTIsIGEzLCBhNCwgYTUpKi8KKy8qI2RlZmluZSBFTDJfUFVCTElDX1RSQUNFNihtc2dfaW5kZXgsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIFwKKyAgICAgICAgIGRobF9pbnRlcm5hbF90cmFjZShUUkFDRV9JTkZPLCAwLCBESExfQUNDRVNTX0xFVkVMXzFfQUxMX1VTRVIsIG1zZ19pbmRleCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikqLworLyojZGVmaW5lIEVMMl9QVUJMSUNfVFJBQ0U3KG1zZ19pbmRleCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIFwKKyAgICAgICAgIGRobF9pbnRlcm5hbF90cmFjZShUUkFDRV9JTkZPLCAwLCBESExfQUNDRVNTX0xFVkVMXzFfQUxMX1VTRVIsIG1zZ19pbmRleCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKi8KKy8qI2RlZmluZSBFTDJfUFVCTElDX1RSQUNFOChtc2dfaW5kZXgsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgXAorICAgICAgICAgZGhsX2ludGVybmFsX3RyYWNlKFRSQUNFX0lORk8sIDAsIERITF9BQ0NFU1NfTEVWRUxfMV9BTExfVVNFUiwgbXNnX2luZGV4LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKi8KKy8qI2RlZmluZSBFTDJfUFVCTElDX1RSQUNFOShtc2dfaW5kZXgsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIFwKKyAgICAgICAgIGRobF9pbnRlcm5hbF90cmFjZShUUkFDRV9JTkZPLCAwLCBESExfQUNDRVNTX0xFVkVMXzFfQUxMX1VTRVIsIG1zZ19pbmRleCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkqLworCisKK0JFR0lOX1RSQUNFX01BUChNT0RfRUwyUE9SVEFMKQorCitUUkNfTVNHKEVMMl9BU1NFUlRfTE9HX0VOVEVSLCAiRW50ZXIgZWwyX2V4Y2VwdGlvbl9jdXN0b21fbG9nZ2luZyAiKQorVFJDX01TRyhFTDJfQVNTRVJUX0xPR19FWElULCAiRXhpdCBlbDJfZXhjZXB0aW9uX2N1c3RvbV9sb2dnaW5nIikKK1RSQ19NU0coRUwyX1RSQUNFX1RJTUUsICJhYnNfdGltZTogJXUsIGNlbGxfdGltZSAldSIpCitUUkNfTVNHKEVNQUNfVFJBQ0VfSU5QVVRfMDAwMSwgIltFTUFDXVtETC1IQVJRXSBcbjxjcmM6IGNjX2lkeD0ldSwgZGxfaGFycV9pZD0ldSwgdGJfdmFsaWQ9JXUldSwgcmx0PSV1JXU+IikKK1RSQ19NU0coRU1BQ19UUkFDRV9JTlBVVF8wMDEwLCAiW0VNQUNdW1VMLUhBUlFdIFxuPHBoaWNoOiB1bF9jY19pZHg9JXUsIGhhcnFfaWQ9JXUsIHJsdD0ldT4iKQorVFJDX01TRyhFTUFDX1RSQUNFX0lOUFVUXzAxMDAsICJbRU1BQ11bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXUsIGNjX2lkeD0ldSwgZGxfaGFycV9pZD0ldSwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXUldSwgbmV3PSV1JXU+IikKK1RSQ19NU0coRU1BQ19UUkFDRV9JTlBVVF8xMDAwLCAiW0VNQUNdW1VMLUhBUlFdIFxuPHVsZGNpOiB0LSV1LCB1bF9jY19pZHg9JXUsIHR5cGU9MCwgbmRpPSV1LCBydj0ldSwgdGJzPSV1LCBrPSV1PiIpCitUUkNfTVNHKEVNQUNfVFJBQ0VfVUxfSEFSUV9UTF9JTkZPLCAiW0VNQUNdW1VMLUhBUlFdIHVsX2NjX2lkeD0ldSA8dWwgc3RhdHVzPSVYLCB0eXBlPSV1LCBoYXJxX2lkPSV1LCBuZGk9JXUsIG1vZGU9JXUsIGFjaz0ldSwgdHg9JXUsIG11eD0ldT4iKQorVFJDX01TRyhFTUFDX1RSQUNFX1VMX0hBUlFfVFhfSU5GTywgIltFTUFDXVtVTC1IQVJRXSB1bF9jY19pZHg9JXUgPGhhcnEgc3RhdHVzPSVYLCBidWZmZXI9JXUsIGJ1bmRsZT0ldSwgcnY9JXUsIGNudD0ldSwgdGJzPSV1PiIpCitUUkNfTVNHKEVNQUNfVFJBQ0VfVUxfSEFSUV9SRVRYX0lORk8sICJbRU1BQ11bVUwtSEFSUV0gdWxfY2NfaWR4PSV1IDxyZXR4IHRpbWU9JXUsIHBoaWNoIHRpbWU9JXUsIHVsZGNpIG51bT0ldSwgdWxkY2kxPSV1LCB1bGRjaTI9JXU+IikKK1RSQ19NU0coRU1BQ19UUkFDRV9VTF9IQVJRX0NMT1NFLCAiW0VNQUNdW1VMLUhBUlFdIHVsX2NjX2lkeD0ldSA8aGFycV9pZD0ldSBjbG9zZT4iKQorVFJDX01TRyhFTUFDX1RSQUNFX1VMX0hBUlFfQUNUSVZBVEUsICJbRU1BQ11bVUwtSEFSUV0gdWxfY2NfaWR4PSV1IDxoYXJxX2lkPSV1IGFjdGl2YXRlPiIpCitUUkNfTVNHKEVNQUNfVFJBQ0VfRFJYX1NUQVRVUywiW0VNQUNdW1RUSV0gPGRjaV9kZWNvZGVfdGltZV9kaWZmPSV1PiA8ZHJ4X3N0YXR1czogbjE9JXUsIG4yPSV1PiA8c2xwX3N0YXR1czogcl9uMT0ldSwgcl9uMj0ldSwgY19uMT0ldSwgY19uMj0ldT4iKQorVFJDX01TRyhFTUFDX1RSQUNFX0RMX1RCX0lORk8sICJbRU1BQ11bRExdW1RCXSBcbjxUQiAldTogJVg+IikKKworVFJDX01TRyhFUERDUF9UUkFDRV9VTF9ST0hDX0NfSU5GTywgIltFUERDUF1bVUxdW1JPSENdIERSQiBSb0hDIGRhdGEgY29tcHJlc3NlZDogcmJfaWR4PSVkLCBvcmkgaGRyIHN6ID0ldSwgY29tcHIgaGRyIHN6PSV1IikKK1RSQ19NU0coRVBEQ1BfVFJBQ0VfRExfUk9IQ19JTl9PVVQsICJbRVBEQ1BdW0RMXVtST0hDXSBEUkIgUm9IQyBkYXRhIHByb2Nlc3NlZDogcmJfaWR4PSVkLCBpbnB1dCBudW09JXUsIG91dHB1dCBudW09JXUiKQorRU5EX1RSQUNFX01BUChNT0RfRUwyUE9SVEFMKQorCisKKyNlbmRpZiAvKiBfRUwyX1RSQ19IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfMS50bWQgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfMS50bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4NGVhYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZW1hY190cmFjZV8xLnRtZApAQCAtMCwwICsxLDQ4MSBAQAorW0RlZmF1bHRdCitFTUFDXzEKK09uCitMMl9CdWZmZXIKK1RDTUZPUkNFCitNQVhfQVJHIDE1CitMMl9CVUZGRVJfU0VUVElORyBMMl9CVUZGRVJfRUwyCisKK1tNb2RlbV9UeXBlXQorTFRFX0wyCisKK1tDbGFzc10KK0VNQUNfTFYxX0ggICAgT04gIC8vIEludGVybmFsIHVzZSAoYmFzaWMgaW5mb3JtYXRpb24pCitFTUFDX0xWMl9IICAgIE9OICAvLyBJbnRlcm5hbCB1c2UgKG1vcmUgaW5mb3JtYXRpb24pCitFTUFDX0xWM19IICAgIE9OICAvLyBJbnRlcm5hbCB1c2UgKGRldGFpbCkKK0VNQUNfV0FSTl9IICAgT04gIC8vIEludGVybmFsIHVzZQorRU1BQ19FUlJPUl9IICBPTiAgLy8gSW50ZXJuYWwgdXNlCitFTUFDX0RFQlVHX0ggIE9OICAvLyBGb3IgdGVtcCBsb2cKKworW1N0cmluZ10KKworW01lc3NhZ2VdCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQ09NTU9OCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gICAgICAgICAgICAgIEVNQUNfTE9HX0RVTU1ZXzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ10gRHVtbXkgTG9nICVsLCAlbCwgJWwsICVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ19MT0dfRFVNUF80ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXSBEdW1wOiAleGwgJXhsICV4bCAleGwiCitpbmZvICAgICAgICAgICAgICBFTUFDX0xPR19HUk9VUF9BU1NFUlQgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ10gZ3JvdXBfYXNzZXJ0X2lkPSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9BTExfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVFRJXSBcbjxkY2lfZGVjb2RlX3RpbWVfZGlmZj0ldWw6Mj4gXG48ZHJ4X3N0YXR1czogbjE9JXVsOjIsIG4yPSV1bDoyPiBcbjxzbHBfc3RhdHVzOiByX24xPSV1bDozLCByX24yPSV1bDozLCBjX24xPSV1bDozLCBjX24yPSV1bDozPiBcbjxkcnhfaW5hY3RfdG1yX3N0YXJ0OiBwMT0ldWw6MSwgcDI9JXVsOjElcGw6MTI+Igord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFhfUkVRX0NIQU5HRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtXQVJOXVtVTC1IQVJRXVtSQV1bU1JdIFRYIFJFUSBCTVAgJXhsIGNoYW5nZWQgYnkgTDEgdG8gJXhsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfUFJPVE9DT0xfSURYX0NIQU5HRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXSBvbGQgZWwxX3Byb3RvY29sX2lkeD0ldWIsIG5ldyBlbDFfcHJvdG9jb2xfaWR4PSV1YiIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfTE9HX1BST1RPQ09MX0lEWF9SUkNfRUwxX01JU01BVENIICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bV0FSTl0gcHJvdG9jb2xfaWR4IG1pc21hdGNoIGR1cmluZyBycmMgbm9uLXJlc2V0LCBlbDFfcHJvdG9jb2xfaWR4PSV1YiwgZXJyY19wcm90b2NvbF9pZHg9JXViIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfRVJUX1NGX1BST0NfT05HT0lORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtXQVJOXSBlcnQgc2YgcHJvYyBpcyBzdGlsbCBvbi1nb2luZywgYWJzX3RpbWU9JXVsIgord2FybiAgICAgICAgICAgICAgRU1BQ19MT0dfQ0hFQ0tTVU1fRVJST1JfQllQQVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtXQVJOXSB0eCBjaGVja3N1bSBlcnJvciBieXBhc3MsIHR4X2Fic190aW1lPSV1bCwgYnlwYXNzPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0hSVF9QUk9GSUxFX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bSFJUXSBzdGFydDogJU1lbWFjX3R4bGlzcl9mdW5jX2UsIGZyYz0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19IUlRfUFJPRklMRV9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0hSVF0gZW5kOiAgICVNZW1hY190eGxpc3JfZnVuY19lLCBmcmM9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ19FUlRfTE9HX09VVFBVVF9CTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFUlRdIFRYTElTUiBvdXRwdXQgYml0bWFwOiAleGw6NCAleGw6NCAleGw6NCAleGw6NCAleGw6NCAleGw6NCAleGw6NCAleGw6NCIKKworaW5mbyAgICAgICAgICAgICAgRU1BQ19MT0dfRUwyX1NCUF9GRUFUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTQlBdIGVsMiBTQlAgZmVhdHVyZTogcHJvdG9jb2xfaWR4XzA9JXhsLCBwcm90b2NvbF9pZHhfMT0leGwsIHByb3RvY29sX2lkeF8yPSV4bCwgcHJvdG9jb2xfaWR4XzM9JXhsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ19MT0dfRU1BQ19FRFlOX0ZFQVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtGRUFUXSBlbWFjIGR5bmFtaWMgZmVhdHVyZT0leGwiCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBQRENDSCBJbnB1dAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vIExldmVsIDEKKyAgICAgICAgICAKKy8vIExldmVsIDIKKworLy8gTGV2ZWwgMworCisvLyBPdGhlcnMKK3dhcm4gIChub25fc21wKSAgIEVNQUNfUERDQ0hfV0FSTl9fX1BISUNIX1RBUkdFVF9JTlZBTElEICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bUERDQ0hdW1BISUNIXSBpbnZhbGlkIHRhcmdldCBoYXJxIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19QRENDSF9XQVJOX19fRENJX1NMRUVQX0RST1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtQRENDSF0gZGNpIHNsZWVwIHN0YXRlIGRyb3AiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1BEQ0NIX1dBUk5fX19BU1lOQ19TWU5DX01PREVfRENJX0RST1AgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1BEQ0NIXSBhc3luYy1zeW5jIG1vZGUgZGNpIGRyb3A6IHJlYXNvbj0ldWIiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVUwgSEFSUQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vIExldmVsIDEKK2luZm8gICAgICAgICAgICAgIEVNQUNfVUxfSEFSUV9MT0dfX19JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gaW5pdGlhbGl6YXRpb24iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19HUkFOVF9SRVNPTFVUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bR1JBTlRdIHJlc29sdmUgd2l0aCB1bHNjaF9ncmFudF90eXBlPSV1YiwgZGlzY2FyZF9pbnB1dF9ncmFudD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fR1JBTlRfQ0xFQVJfUkFSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0dSQU5UXSBjbGVhciByYXIgZ3JhbnQ6IHVsX2NjX2lkeD0ldWIsIHR4X2Fic190aW1lXzMyPSV1bCIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfVFhfTUFYX1JFQUNIRUQgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGxhc3QgdHg6IHR4IG1heCByZWFjaGVkOiB1bF9jY19pZHg9JXViLCBoYXJxX2lkPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19IQVJRX1RYX01BWF9SRUFDSEVEX1NLSVBfUkVUWCAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gaGFycSBsYXN0IHR4OiB0eCBtYXggcmVhY2hlZCBhZnRlciBza2lwIHJldHg6IHVsX2NjX2lkeD0ldWIsIGhhcnFfaWQ9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfVFhfTUFYX1JFQUNIRURfUkVQRVRJVElPTiAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGxhc3QgdHg6IHR4IG1heCByZWFjaGVkIGZvciBhc3luYyBoYXJxIHJlcGV0aXRpb246IHVsX2NjX2lkeD0ldWIsIGhhcnFfaWQ9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfTVNHM19SRVRYX0NPTExJU0lPTiAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGxhc3QgdHg6IG1zZzMgaGFycSBjb2xsaXNpb246IHVsX2NjX2lkeD0ldWIsIGhhcnFfaWQ9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfUFJPTkVfVE9fVU5TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGxhc3QgdHg6IHByb25lIHRvIHVuc3VjY2VzczogdWxfY2NfaWR4PSV1YiwgaGFycV9pZD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fSEFSUV9MMl9MQVRFTkNZX1JFRFVDVElPTiAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIGhhcnEgbGFzdCB0eDogbDIgbGF0ZW5jeSByZWR1Y3Rpb246IHVsX2NjX2lkeD0ldWIsIGhhcnFfaWQ9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfRkxVU0hfTVNHMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGZsdXNoIG1zZzMiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fSEFSUV9DTE9TRV9BTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIGhhcnEgY2xvc2UgYWxsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfQ0xPU0VfU0NFTExfQUxMICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGNsb3NlIHNjZWxsIGFsbDogY2NfaWR4PSV1YiwgdWxfY2NfaWR4PSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19IQVJRX0NMT1NFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gdWxfY2NfaWR4PSV1YiA8aGFycV9pZD0ldWIgY2xvc2U+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0hBUlFfREVUQUNIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSB1bF9jY19pZHg9JXViIDxoYXJxX2lkPSV1YiBkZXRhY2g+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fVFRJX1BDRUxMX1RBX05PVF9SVU5OSU5HICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW1RUSV0gcGNlbGwgdGEgdGltZXIgbm90IHJ1bm5pbmciCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fVFRJX05PX1RYX09QUE9SVFVOSVRZICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW1RUSV0gdWxfY2NfaWR4PSV1YiwgY2VsbF9hY3RpdmU9JXViLCB0YV9ydW5uaW5nPSV1YiwgYl91bF9zZj0ldWIiCisKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX1RYX01PREVfR1JBTlRfVENSTlRJX0FTX05FV19DUk5USSAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gZ3JhbnQgb25seTogdGMtcm50aSBhcyBuZXcgYy1ybnRpIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX1RYX01PREVfQ1JOVElfR1JBTlRfQVNfVENSTlRJICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gYy1ybnRpIGdyYW50OiBhcyBmb3IgdGMtcm50aSBoYXJxIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX1RYX01PREVfVENSTlRJX0dSQU5UX0FTX0NSTlRJICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gdGMtcm50aSBncmFudDogYXMgYy1ybnRpIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX1RYX01PREVfUlYwX1RCU19NSVNNQVRDSEVEX1JFVFhfQVNfTkVXICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gcnYwIHRicyBtaXNtYXRjaGVkIHJldHggYXMgbmV3IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX1RYX01PREVfRFJPUF9HUkFOVF9GT1JfTk9OQURQX1JFVFggICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gZHJvcCBjb25maWd1cmVkIGdyYW50IGZvciBub24tYWRhcHRpdmUgcmV0eCIKKyAgICAgICAgICAgICAgICAgICAKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19TRVRUSU5HX05FV19NU0czICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bUkFdW1NFVFRJTkddIG5ldyBtc2czIgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fUkVUWF9JTkZPX0ZPUl9DQU5DRUxMRURfUkVUWCAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW1JFVFhdIGZvciBjYW5jZWxsZWQgcmV0eDogdGltZV90b19yZXR4PSV1YiwgcGRjY2hfbnVtPSV1YiwgdGltZV90b19waGljaD0ldWIsIHRpbWVfdG9fcGRjY2hbMF09JXViLCB0aW1lX3RvX3BkY2NoWzFdPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19SRVRYX05PTl9NU0czX0hBUlFfQ09MTElTSU9OICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bUkVUWF0gbm9uLW1zZzMgaGFycSBjb2xsaXNpb24gOiBjbG9zZSBjb2xsaWRlZCBoYXJxIgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fQUNLRURfSEFSUV9XSVRIX1JFVFhfR1JBTlQgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0tQSV0gYWNrZWQgaGFycSB3aXRoIHJldHggZ3JhbnQiCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19VTF9IQVJRX0dBUF9FTkRfU0tJUF9UWCAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gdHggbm90IGFsbG93ZWQ6IGhhcnEgaWQ9JXVkLCBydj0ldWQsIGFjdHVhbF90eF9jbnQ9JXVkLCB0eF9za2lwX3JlYXNvbj0ldWIiCisvLyBMZXZlbCAyCisKKy8vIExldmVsIDMKKworLy8gT3RoZXJzIAord2FybiAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX1dBUk5fX19UWF9NT0RFX0dSQU5UX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gZGlzY2FyZCBncmFudDogZ3JhbnQgb25seTogaW52YWxpZCBncmFudCIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9XQVJOX19fVFhfTU9ERV9DUk5USV9HUkFOVF9SRVRYX0lOVkFMSUQgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bVUwtSEFSUV1bVE1dIGRpc2NhcmQgZ3JhbnQ6IGMtcm50aSBncmFudDogcmV0eCBpbnZhbGlkIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX1dBUk5fX19UWF9NT0RFX0NSTlRJX0dSQU5UX0FTX1RDUk5USV9SRVRYX0lOVkFMSUQgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gZGlzY2FyZCBncmFudDogYy1ybnRpIGdyYW50OiBhcyBmb3IgdGMtcm50aSByZXR4IGludmFsaWQiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfV0FSTl9fX1RYX01PREVfQ1JOVElfR1JBTlRfRFJPUCAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1VMLUhBUlFdW1RNXSBkaXNjYXJkIGdyYW50OiBjLXJudGkgZ3JhbnQ6IGhhcnE6IHJudGlfdHlwZT0ldWIsIGJfc2FtZV9uZGk9JXViLCBiX2luZGV4PSV1YiIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9XQVJOX19fVFhfTU9ERV9UQ1JOVElfR1JBTlRfRFJPUCAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bVUwtSEFSUV1bVE1dIGRpc2NhcmQgZ3JhbnQ6IHRjLXJudGkgZ3JhbnQ6IGhhcnE6IHJudGlfdHlwZT0ldWIsIGJfc2FtZV9uZGk9JXViLCBncmFudDogcnY9JXViIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX1dBUk5fX19UWF9NT0RFX1NQU19SRVRYX1RBUkdFVF9JTlZBTElEICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gZGlzY2FyZCBncmFudDogc3BzIHJldHggZ3JhbnQ6IHRhcmdldCBpbnZhbGlkIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX1dBUk5fX19UWF9NT0RFX1NQU19SRVRYX0dSQU5UX0lOVkFMSUQgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtVTC1IQVJRXVtUTV0gZGlzY2FyZCBncmFudDogc3BzIHJldHggZ3JhbnQ6IHJ2PSV1YiwgYl90YnNfbWF0Y2hlZD0ldWIiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfV0FSTl9fX1RYX01PREVfU1BTX05FV1RYX0NPTExJU0lPTl9XSVRIX1RDUk5USSAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1VMLUhBUlFdW1RNXSBkaXNjYXJkIGdyYW50OiBzcHMgbmV3dHggZ3JhbnQ6IGNvbGxpc2lvbiB3aXRoIHRjLXJudGkiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfV0FSTl9fX1RYX01PREVfQVNZTkNfR1JBTlRfQ09MTElTSU9OX1dJVEhfSEFSUSAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1VMLUhBUlFdW1RNXSBkaXNjYXJkIGdyYW50OiBhc3luYyBncmFudDogY29sbGlzaW9uIHdpdGggb25saW5lIGhhcnEiCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBVTCBIQVJRIC0gSU0gQnVmZmVyIFtJTV0KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvLyBMZXZlbCAxCitpbmZvICAgICAgICAgICAgICBFTUFDX1VMX0hBUlFfTE9HX19fSU1fQlVGRkVSX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0lNXSByZXNldCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19JTV9CVUZGRVJfUkVORVcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bSU1dIHJlbmV3OiB1bF9jY19pZHg9JXViLCBoYXJxX2lkPSV1YiwgaW1fYnVmZmVyX2lkeD0ldWIsIGxvc3RfaW1fYnVmZmVyX3VzZXI9JXhsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX0xPR19fX0lNX0JVRkZFUl9HRVRfTVNHM19CVUZGRVIgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtJTV0gbXNnM19oYXJxX3VzZXI9JXhsLCBtc2czX3Ricz0ldWQsIGJfcmVjb25zdHJ1Y3RfbXNnMz0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19JTV9CVUZGRVJfR0VUX1NUQVJUX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0lNXSBHZXQgaW1fYnVmZmVyX2FkZHI6IGltX2J1ZmZlcl9pZHg9JXVsLCBtdXhfcmVxPSV1YiwgYmFzZV9hZGRyPSV4bCwgc2hpZnRfYWRkciA9ICV4bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0lNX0JVRkZFUl9ST0xMQkFDS19TVEFSVF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bSU1dIFJvbGxiYWNrIGltX2J1ZmZlcl9hZGRyOiBpbV9idWZmZXJfaWR4PSV1bCIKKyAgICAgICAgICAgICAgICAgICAgCisvLyBMZXZlbCAyCisKKy8vIExldmVsIDMKKworLy8gT3RoZXJzIAord2FybiAgKG5vbl9zbXApICAgRU1BQ19VTF9IQVJRX1dBUk5fX19JTV9CVUZGRVJfSU5WQUxJRF9NU0czX0hBUlFfVVNFUiAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtVTC1IQVJRXVtJTV0gaW52YWxpZCBtc2czIGhhcnEgdXNlciIKKworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEdlbWluaQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vIExldmVsIDEKK2luZm8gICAgICAgICAgICAgIEVNQUNfR0VNSU5JX0xPR19fX0dFTUlOSV9JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bR2VtaW5pXSBpbml0aWFsaXphdGlvbjogcmV0eF9tb2RlPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfR0VNSU5JX0xPR19fX0dFTUlOSV9SRVRYX01PREVfQ0hBTkdFICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bR2VtaW5pXSBjaGFuZ2UgcmV0eF9tb2RlPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfR0VNSU5JX0xPR19fX0dFTUlOSV9TS0lQX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bR2VtaW5pXSB0eCBub3QgYWxsb3dlZDogdHhfc2tpcF9yZWFzb249JXViIgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0dFTUlOSV9MT0dfX19HRU1JTklfRVhBQ1RfR0FQX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0dlbWluaV0gZXhhY3QgZ2FwIHN0YXJ0OiBnZW1pbmlfZ2FwX3J4X3N0YXJ0X3RpbWVfMzI9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19HRU1JTklfTE9HX19fR0VNSU5JX0VYQUNUX0dBUF9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtHZW1pbmldIGV4YWN0IGdhcCBlbmQ6IGdlbWluaV9nYXBfcnhfZW5kX3RpbWVfMzI9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19HRU1JTklfTE9HX19fR0VNSU5JX1BSRURJQ1RFRF9HQVBfSU5GTyAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtHZW1pbmldIHByZWRpY3RlZCBnYXAgaW5mbzogZ2FwMF9zdGFydF90aW1lXzMyPSV1bCwgZ2FwMF9sZW49JXViLCBnYXAxX3N0YXJ0X3RpbWVfMzI9JXVsLCBnYXAxX2xlbj0ldWIiCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0NGR19SUkNfUkVTRVRfVklSVFVBTF9DT05ORUNURURfRU5URVIgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bQ0ZHXSBFTUFDIHJlc2V0IGNhdXNlPVZJUlRVQUxfQ09OTkVDVEVEX0VOVEVSIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1JSQ19SRVNFVF9WSVJUVUFMX0NPTk5FQ1RFRF9MRUFWRV9GQUlMICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtDRkddIEVNQUMgcmVzZXQgY2F1c2U9VklSVFVBTF9DT05ORUNURURfTEVBVkVfRkFJTCIKKy8vIExldmVsIDIKKworLy8gTGV2ZWwgMworCisvLyBPdGhlcnMgCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBETCBIQVJRCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gTGV2ZWwgMQoraW5mbyAgICAgICAgICAgICAgRU1BQ19ETF9IQVJRX0xPR19fX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBpbml0aWFsaXphdGlvbiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19ETF9IQVJRX0xPR19fX0NSQ19UQVJHRVRfT1JJR0lOQUxfU1RBVEUgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETC1IQVJRXVtDUkNdIG9yaWdpbmFsIHN0YXRlOiBjY19pZHg9JXVkOjQsIGRsX2hhcnFfaWQ9JXVkOjQsIHN0YXR1cz0leGQ6MiwgdGJfY3JjXzA9JXVkOjIsIHRiX2NyY18xPSV1ZDoyJXBkOjIiCisgICAgICAgICAKK2luZm8gIChub25fc21wKSAgIEVNQUNfRExfSEFSUV9MT0dfX19EQ0lfVEFSR0VUX0hBUlFfT1JJR0lOQUxfU1RBVEUgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bREwtSEFSUV1bRENJXSBvcmlnaW5hbCBzdGF0ZTogY2NfaWR4PSV1ZDo0LCBkbF9oYXJxX2lkPSV1ZDo0LCBzdGF0dXM9JXhkOjIsIHRiX2NyY18wPSV1ZDoyLCB0Yl9jcmNfMT0ldWQ6MiVwZDoyIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19ETF9IQVJRX0xPR19fX0RDSV9UQl9GTFVTSF9SRVFVRVNURUQgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETC1IQVJRXVtEQ0ldIHRiIGZsdXNoIHJlcXVlc3RlZDogYl9kaWZmZXJlbnRfcm50aT0ldWIsIGJfc3BzY19ybnRpPSV1YiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19ETF9IQVJRX0xPR19fX0ZBTFNFX0FMQVJNX1RCX0RFVEVDVEVEICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBmYWxzZSBhbGFybSB0YiBkZXRlY3RlZDogY2NfaWR4PSV1YiwgaGFycV9pZD0ldWIsIHRiX2lkPSV1YiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19ETF9IQVJRX0xPR19fX0NMT1NFX1RCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBjbG9zZSB0YjogY2NfaWR4PSV1YiwgaGFycV9pZD0ldWIsIHRiX2lkPSV1YiIgICAgICAgICAKK2luZm8gIChub25fc21wKSAgIEVNQUNfRExfSEFSUV9MT0dfX19DTE9TRV9IQVJRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gY2xvc2UgaGFycTogY2NfaWR4PSV1YiwgaGFycV9pZD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RMX0hBUlFfTE9HX19fQ0xPU0VfSEFSUV9BTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIGNsb3NlIGhhcnEgYWxsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19ETF9IQVJRX0xPR19fX0NMT1NFX0hBUlFfU0NFTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBjbG9zZSBoYXJxIHNjZWxsOiBjY19pZHg9JXViIgorCisvLyBMZXZlbCAyCisKKy8vIExldmVsIDMKKworLy8gT3RoZXJzCit3YXJuICAobm9uX3NtcCkgICBFTUFDX0RMX0hBUlFfV0FSTl9fX0NSQ19UQVJHRVRfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW0RMLUhBUlFdW0NSQ10gaW52YWxpZCBmb3IgdGFyZ2V0IGRjaTogdGJfaWQ9JXViIgorCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU1BTCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gTGV2ZWwgMQoraW5mbyAgICAgICAgICAgICAgRU1BQ19TUFNfTE9HX19fSU5JVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdIGluaXRpYWxpemF0aW9uIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fREVBQ1RJVkFURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdIGRlYWN0aXZhdGUgdWwvZGwgc3BzIgorICAgICAgICAgIAoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fRExfUkVMRUFTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdW0RMLUhBUlFdIHJlbGVhc2UiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1NQU19MT0dfX19ETF9BQ1RJVkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NQU11bREwtSEFSUV0gYWN0aXZhdGlvbjogY3VycmVudF9kbF9zcHNfYWJzX3R4X3RpbWVfMzI9JXVsLCBuZXh0X2RsX3Nwc19hYnNfdHhfdGltZV8zMj0ldWwsIGRsX2hhcnFfaWQ9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fRExfVVBEQVRFX05FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdW0RMLUhBUlFdIHVwZGF0ZSBuZXh0OiBuZXh0X2RsX3Nwc19hYnNfdHhfdGltZV8zMj0ldWwsIGRsX2hhcnFfaWQ9JXViIgorICAgICAgICAKK2luZm8gIChub25fc21wKSAgIEVNQUNfU1BTX0xPR19fX1VMX1JFTEVBU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU1BTXVtVTC1IQVJRXSByZWxlYXNlIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fVUxfQUNUSVZBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdW1VMLUhBUlFdIGFjdGl2YXRpb246IG5leHRfdWxfc3BzX2Fic190eF90aW1lXzMyPSV1bCwgdWxfc3BzX3R3b19pbnRlcnZhbF9vZmZzZXQ9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fVUxfVVBEQVRFX05FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdW1VMLUhBUlFdIHVwZGF0ZSBuZXh0OiBuZXh0X3VsX3Nwc19hYnNfdHhfdGltZV8zMj0ldWwsIHVsX3Nwc19uX3RvZ2dsZT0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1NQU19MT0dfX19VTF9HUkFOVF9JTlBVVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NQU11bVUwtSEFSUV0gPHVsZGNpOiB0LTAsIHVsX2NjX2lkeD0wLCB0eXBlPSV1YiwgbmRpPSV1YiwgcnY9JXViLCB0YnM9JXVkLCBrPSV1bD4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfU1BTX0xPR19fX1VMX01PTklUT1JfTVVYX1JFUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU1BTXVtVTC1IQVJRXSBtb25pdG9yIG11eDogbmV3dHgiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1NQU19MT0dfX19VTF9NT05JVE9SX01VWF9SRVNVTFRTICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NQU11bVUwtSEFSUV0gbW9uaXRvciBtdXg6IHJlc3VsdDogYl91bF9zcHNfYWN0aXZlPSV1YiwgYl9tdXhfd2l0aF9zZHU9JXViIgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1NQU19MT0dfX19VTF9HUkFOVF9QSElDSF9SWF9USU1FX0lORk8gICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NQU11bVUwtSEFSUV0gZ3JhbnQgcGhpY2ggcnggaW5mbzogcGRjY2hfbnVtPSV1YiwgdGltZV90b19waGljaD0ldWIsIHRpbWVfdG9fcGRjY2hbMF09JXViLCB0aW1lX3RvX3BkY2NoWzFdPSV1YiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fVUxfSU1QTElDSVRfUkVMRUFTRV9SRUFDSEVEICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdW1VMLUhBUlFdIGltcGxpY2l0IHJlbGVhc2UgcmVhY2hlZCIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19TUFNfTE9HX19fVUxfQ09ORklSTUFUSU9OX1RSSUdHRVIgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUFNdW1VMLUhBUlFdIFNQUyBDb25maXJtYXRpb24gaXMgdHJpZ2dlcmVkIgorCisvLyBMZXZlbCAyCisKKy8vIExldmVsIDMKKworLy8gT3RoZXJzCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1NQU19XQVJOX19fRExfRFJPUF9DT01NQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1NQU11bREwtSEFSUV0gZHJvcCBkbCBzcHMgY29tbWFuZDogc3BzX2NtZD0leGIiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1NQU19XQVJOX19fVUxfRFJPUF9DT01NQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1NQU11bVUwtSEFSUV0gZHJvcCB1bCBzcHMgY29tbWFuZDogc3BzX2NtZD0leGIiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTEFUUkVECisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gTGV2ZWwgMQoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MQVRSRURfTE9HX19fU0tJUF9UWF9CVUZGRVJfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtMQVRSRURdW1NLSVBdIEJ1ZmZlciBJTkZPOiBCU1Jfc2l6ZT0ldWwsIFBIUl9zaXplPSV1bCwgQnVmZmVyX3NpemU9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MQVRSRURfTE9HX19fU0tJUF9UWF9DQ19JRFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtMQVRSRURdW1NLSVBdIHNraXAgY2NfaWR4OiAleGIiCisKKy8vIExldmVsIDIKKworLy8gTGV2ZWwgMworCisvLyBPdGhlcnMKKworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNDRUxMCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1NDRUxMX0VOUVVFVUVfRUwxQ01ECQkJCQkJCQkJICBFTUFDX0xWMV9ICSAgICJbRU1BQ11bU0NFTExdIGVucXVldWUgZWwxYyBjbWQgd19pZHggJWQsIHJfaWR4ICVkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfU0NFTExfREVRVUVVRV9FTDFDTUQJCQkJCQkJCQkgIEVNQUNfTFYxX0gJICAgIltFTUFDXVtTQ0VMTF0gZGVxdWV1ZSBlbDFjIGNtZCB3X2lkeCAlZCwgcl9pZHggJWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TQ0VMTF9EUk9QX0RVUF9FTDFDTUQJCQkJCQkJICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NDRUxMXSBkcm9wIGR1cGxpY2F0ZSBlbDFjIGNtZCB0eXBlICVkLCBjY19pZHggJWQiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU1IKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfU1JfTk9fVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTUl0gU1Igbm8gdHggZHVlIHRvIGdhcCwgcmVzZXQgY291bnQvdHhfdGltZSIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfTE9HX1NSX0NGR19UQV9FWElQSVJFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU1JdIFNSIHJlc291cmNlIGNmZyBkdXJpbmcgVEEgdGltZXIgZXhwaXJlZCEgYWN0aW9uPSV1YiAoMDogV2FpdCB1bnRpbCBTUiB0cmlnZ2VyLCAxOiBOb3RpZnkgRVJSQyBUQSBleHBpcmVkKSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1NSX05FWFRfU1JfT0NDQVNJT05fSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU1JdW1NMUF0gbmV4dCBzciBvY2Nhc2lvbiBpbmZvLCBuZXh0X3RpY2tfdGltZT0ldWwsICBuZXh0X3BkY2NoX3RpbWU9JXVsLCBzY2hlZF9yZXN1bHRfYm1wPSV1ZCIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfTE9HX1NSX1VORVhQRUNURURfU0xQX1RYX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU1JdW1NMUF0gdW5leHBlY3RlZCBzbHAgYW5kIHR4X3N0YXR1cz0ldWIgKDA6IHR4IGZvcmJpZGRlbiBpbiBzbGVlcCwgMTogcGRjY2ggb2ZmIGFmdGVyIHNyIHR4LCAyOiB0eCBmb3JiaWRkZW4gaW4gd2FraW5ndXApIgoraW5mbyAgICAgICAgICAgICAgRU1BQ19FUlRfTE9HX1NSX05FWFRfU1JfT0NDQVNJT05fSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFUlRdW1NSXVtTTFBdIG5leHQgc3Igb2NjYXNpb24gaW5mbywgZGVsYXlfdGltZT0ldWQsIG5leHRfdGlja190aW1lPSV1bCwgIG5leHRfcGRjY2hfdGltZT0ldWwiCitpbmZvICAJCSAgICAgIEVNQUNfRVJUX0xPR19TUl9NRUFTX0NPTkZMSUNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRVJUXVtTUl0gU1Igb2NjYXNpb24gaW4gbWVhcyBnYXAsIG1lYXNfcGF0dGVybj0ldWIsIG1lYXNfb2Zmc2V0PSV1YiwgU1JfcGVyaW9kPSV1YiwgU1Jfb2Zmc2V0PSV1YiIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBSQQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAgICAgICAgICAgICBFTUFDX1JBX0xPR19JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXSBpbml0IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtSQV1bQ0ZHXSA8c3RhdGUgPSBOT19SQT4gICBSQSByZXNldCIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfVFJJR19GQUlMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtSQV0gJU1lbWFjX3JhX2V2ZW50X2UgdHJpZ2dlciBmYWlsLCBjb2xsaWRlcyB3aXRoIElEQz0lYiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1RSSUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdICVNZW1hY19yYV9ldmVudF9lIHRyaWdnZXIsIGN1cnJlbnQgdHJpZ2dlciBldmVudD0lTWVtYWNfcmFfZXZlbnRfZSIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfR0FQX1NUT1BfU0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtSQV0gPHN0YXRlID0gV0FJVF9HQVBfU1RPUD4gICBzZW5kIEdBUF9TVE9QX1JFUSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX0dBUF9TVE9QX1JDViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdIDxzdGF0ZSA9IFdBSVRfUFJFQU1CTEVfVFg+ICAgcmN2IEdBUF9TVE9QX0NORiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX0dBUF9SRVNVTUVfUkNWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdIDxzdGF0ZSA9IE5PX1JBPiAgIHJjdiBHQVBfUkVTVU1FX0NORiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUFJFQU1fVFJJR19OT1RfUkVBRFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtSQV0gdHJpZ2dlciBldmVudCBub3QgcmVhZHkgeWV0IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUFJFQU1fVFhfTk9UX1JFQURZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtSQV0gVFggbm90IHJlYWR5IHlldCBkdWUgdG89JWQgKDA6IGVhcmxpZXN0X3R4X2F2YWlsX3RpbWUsIDE6IHNsZWVwX3N0YXR1cykiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19QUkVBTV9DQl9SQVBJRF9TRUxFQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXSBtc2czX3ZhbGlkPSVkLCBncm91cF9iPSVkLCBwYXRobG9zcz0lZCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BSRUFNX0dST1VQQl9TWl8wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bUkFdIHByZWFtYmxlIGdyb3VwIGIgc2l6ZSA9IDAsIHVzZSBncm91cCBhIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUFJFQU1fUE9XX0NIS19QQVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYzX0ggICAgICAgIltFTUFDXVtSQV0gcGF0aGxvc3MgKCVkKSA8IHBtYXggKCViKSAtIGluaXRfcG93ICglYikgLSBkZWx0YV9tc2czICglYikgLSBwb3dfb2Z0X2IgKCViKSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BSRUFNX1BPV19DSEtfRkFJTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bUkFdIHBhdGhsb3NzICglZCkgPj0gcG1heCAoJWIpIC0gaW5pdF9wb3cgKCViKSAtIGRlbHRhX21zZzMgKCViKSAtIHBvd19vZnRfYiAoJWIpLCB1c2UgZ3JvdXAgYSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BSRUFNX1BPVEVOVElBTF9NU0dfU1ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bUkFdIG1zZ19zel9ncm91cF9hPSViLCBwb3RlbnRpYWxfbXNnX3N6PSVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUFJFQU1fVkFMSURfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtSQV0gcHJlYW1ibGUgdmFsaWQ6IHJhcGlkPSViLCBwcmVmZXJfdHhfdGltZT0lbCwgcHJhY2hfdHhfdGltZT0lbCIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUkFSX1JDVl9EQ0kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtSQV0gcmN2ICV1YnRoIERDSSBmb3IgcmEtcm50aSwgdXBkYXRlIHJhcl9kZWxheV90aW1lPSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1JBUl9SQ1ZfRENJX09VVF9XTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdW1dBUk5dIHJjdiAldWJ0aCBEQ0kgZm9yIHJhLXJudGkgYXQgJXVsIG91dHNpZGUgUkFSIFdORCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1JBUl9NSVNNQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdIFJBUiBtaXNtYXRjaCwgbWlzYXRjaF9yYXBpZD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19SQVJfVEJfUkNWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW1JBXSByY3YgUkFSLCBtYXRjaD0lYiwgYXQgc3ViZnJhbWU9JXViLCBhYnNfdGltZT0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19DUl9SQ1ZfVENSTlRJX0RDSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXSByY3YgdGMtcm50aSBETCBEQ0ksIHVwZGF0ZSBjcl9kZWxheV90aW1lPSVsIgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19NQVhfUE9XX1JFQUNIRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXVtXQVJOXSBwcmVhbWJsZSBtYXggdHggcG93ZXIgcmVhY2hlZCIKK2Vycm9yIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1JBUl9USU1JTkdfRkFJTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdW0VSUk9SXSBSQVIgdG9vIGxhdGUgZm9yIGFjc2kgZWwxZCByeCB0aW1pbmciCitlcnJvciAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19UQ1JOVElfVElNSU5HX0ZBSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXVtFUlJPUl0gdGMtcm50aSB0b28gbGF0ZSBmb3IgYWNrIGFkZCBlbDFkIHR4IHRpbWluZyIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1JDVl9UQ1JOVElfQ1JfQ05GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bUkFdIHJjdiB0Yy1ybnRpIENSOiByZXN1bHQ9JWIgYXQgJWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19SQ1ZfUkFfUkVTVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXSA8c3RhdGUgPSBXQUlUX1BSRUFNQkxFX1RYPiAgIFJBIHJlc3RhcnQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19SQV9BQk9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXVtXQVJOXSA8c3RhdGUgPSBXQUlUX0dBUF9SRVNVTUU+ICAgUkEgYWJvcnQgKGRpcmVjdGx5IGNsZWFyIFJBIHN0YXR1cykiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19UQV9USU1FT1VUX1BDRUxMX1JFVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1JBXVtXQVJOXSA8c3RhdGUgPSBXQUlUX0NSPiAgIFRBIFRpbWVvdXQsIFJBIHJldHJ5IG9uIFBDZWxsIChsZWF2ZSBXQUlUX01TRzMgb3IgV0FJVF9DUikiCisKK3dhcm4gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BEQ0NIX09SREVSX0ZPUl9UQV9SVU5OSU5HICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUkFdW1dBUk5dIHJjdiBQRENDSCBvcmRlciBmb3IgVEEgdGltZXIgcnVubmluZywgdWxfY2NfaWR4PSV1YiIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBJREMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICAgRU1BQ19MT0dfSURDX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtJRENdIGluaXQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19JRENfSURDX1NUQVRFX1VQREFURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0lEQ10gSURDIHN0YXRlIHVwZGF0ZTogdWxfY2NfaWR4PSV1Yiwgc3RhdGU9JU1lbWFjX2lkY19zdGF0ZV9lbnVtIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfSURDX0ZPUkNFX1JFR1VMQVJfQlNSX1RSSUdHRVIgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtJRENdW0JTUl0gSURDIGZvcmNlcyByZWd1bGFyIEJTUiB0cmlnZ2VyIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfSURDX1RETV9JRENfSU5EX0lHTk9SRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtJRENdIGlnbm9yZSBJREMgaW5kIGluZm8gZHVlIHRvIGVtYWMgcmVzZXQgb3Igc2NoIGNsb3NlIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfSURDX1RETV9JRENfSU5EX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtJRENdIHJjdiBJREMgaW5kIGluZm8sIGNjX2lkeD0ldWIsIHN0YXJ0X3RpbWU9JXVsLCBsZWFkX3RpbWU9JXVsLCBkdXJhdGlvbj0ldWwiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVk9MVEUKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICAgRU1BQ19FUlRfTE9HX1NSX1ZPTFRFX01PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtWT0xURV1bU1JdIHZvbHRlIHByZWRpY3Rpb24gbW9kZTogbW9kZT0ldWIgKDA6IHNpbGVuY2UgbW9kZSwgMTogdGFsayBtb2RlLCAyOiBzaWQgZmlyc3QgbW9kZSwgMzogaW52YWxpZCBtb2RlKSIKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX0xPR19TUl9WT0xURV9SQl9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bVk9MVEVdW1NSXSB2b2x0ZSByYl9pZHg9JXViLCBjb25maWc9JXViICgwOiBhY3RpdmF0aW9uLCAxOiBkZWFjdGl2YXRpb24sIDI6IHJlYWN0aXZhdGlvbikiCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9MT0dfU1JfVk9MVEVfUFJFRElDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1ZPTFRFXVtTUl0gdm9sdGUgcHJlZGljdGlvbjogXG5wcmVkaWN0ZWQgYWlyX2Fic190aW1lPSV1bCwgXG5wcmVkaWN0ZWRfbmV4dF92b2x0ZV90aW1lPSV1bCwgXG50eXBlPSV1YjoxICgwOiBkYXRhLCAxOiBtb2RlIGNoYW5nZSBub3RpZnkpLCBcbmhpdD0ldWI6MSwgXG52b2x0ZV9tb2RlPSV1YjoyLCBcbmlzX3NlbnRfdG9fdHhsaXNyPSV1YjoxJXBiOjMiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gUEhSCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RSSUdHRVJEX0JZX0NPTkZJRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUEhSXSBQSFIgdHJpZ2dlcmVkIGJ5IHJlY29uZmlnIG9yIHNjZWxsIGFjdGl2YXRlIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFJJR0dFUkRfQllfUEVSSU9EX1RJTUVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtQSFJdIFBIUiB0cmlnZ2VyZWQgYnkgcGVyaW9kaWMgdGltZXIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UUklHR0VSRF9CWV9QQVRITE9TUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1BIUl0gUEhSIHRyaWdnZXJlZCBieSBwYXRobG9zcyB1bF9jY19pZHg9JXViLCBwcmV2aW91cyBwYXRobG9zcz0lYiwgY3VycmVudCBwYXRobG9zcz0lYiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RSSUdHRVJEX0JZX01QUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bUEhSXSBQSFIgdHJpZ2dlcmVkIGJ5IE1QUiB1bF9jY19pZHg9JXViLCBwcmV2aW91cyBNUFI9JWIsIGN1cnJlbnQgTVBSPSViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFJJR0dFUkRfSUZfUFVDQ0hfQllfTVBSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtQSFJdIFBIUiB0cmlnZ2VyZWQgYnkgTVBSIGlmIGhhcyBQVUNDSCB1bF9jY19pZHg9JXViLCBwcmV2aW91cyBNUFI9JWIsIGN1cnJlbnQgTVBSPSViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfUEhSX1JFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtQSFJdIFBIUiByZXNwb25zZTogbGVuZ3RoPSV1YiwgaGFzIHB1Y2NoPSV1YiIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEUlgKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICAgRU1BQ19EUlhfTE9HX0lOSVRfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHNpdHVhdGlvbjogaW5pdGlhbGl6YXRpb24gb3IgcmVzZXQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfTk9OX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gc2l0dWF0aW9uOiBub24gcmVzZXQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfVFRJX1JFVFhfVE1SX1NUQVRVU18xQ0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gdHRpIHJldHggc3RhdHVzOiBydHQwX3N0YXR1cz0leGQsIHJldHgwX3N0YXR1cz0leGQsIGVhcl9mdXRfcmV0eF9zdGFydF90aW1lPSV1bCwgbjFfcmV0eF90bXJfZmxhZz0ldWIsIG4yX3JldHhfdG1yX2ZsYWc9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX1RUSV9SRVRYX1RNUl9TVEFUVVNfMkNDICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHR0aSByZXR4IHN0YXR1czogcnR0MF9zdGF0dXM9JXhkLCByZXR4MF9zdGF0dXM9JXhkLCBydHQxX3N0YXR1cz0leGQsIHJldHgxX3N0YXR1cz0leGQsIGVhcl9mdXRfcmV0eF9zdGFydF90aW1lPSV1bCwgbjFfcmV0eF90bXJfZmxhZz0ldWIsIG4yX3JldHhfdG1yX2ZsYWc9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX1RUSV9SRVRYX1RNUl9TVEFUVVNfM0NDICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHR0aSByZXR4IHN0YXR1czogcnR0MF9zdGF0dXM9JXhkLCByZXR4MF9zdGF0dXM9JXhkLCBydHQxX3N0YXR1cz0leGQsIHJldHgxX3N0YXR1cz0leGQsIHJ0dDJfc3RhdHVzPSV4ZCwgcmV0eDJfc3RhdHVzPSV4ZCwgZWFyX2Z1dF9yZXR4X3N0YXJ0X3RpbWU9JXVsLCBuMV9yZXR4X3Rtcl9mbGFnPSV1YiwgbjJfcmV0eF90bXJfZmxhZz0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfVFRJX1JFVFhfVE1SX1NUQVRVU180Q0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gdHRpIHJldHggc3RhdHVzOiBydHQwX3N0YXR1cz0leGQsIHJldHgwX3N0YXR1cz0leGQsIHJ0dDFfc3RhdHVzPSV4ZCwgcmV0eDFfc3RhdHVzPSV4ZCwgcnR0Ml9zdGF0dXM9JXhkLCByZXR4Ml9zdGF0dXM9JXhkLCBydHQzX3N0YXR1cz0leGQsIHJldHgzX3N0YXR1cz0leGQsIGVhcl9mdXRfcmV0eF9zdGFydF90aW1lPSV1bCwgbjFfcmV0eF90bXJfZmxhZz0ldWIsIG4yX3JldHhfdG1yX2ZsYWc9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX1RUSV9SRVRYX1RNUl9TVEFUVVNfNUNDICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHR0aSByZXR4IHN0YXR1czogcnR0MF9zdGF0dXM9JXhkLCByZXR4MF9zdGF0dXM9JXhkLCBydHQxX3N0YXR1cz0leGQsIHJldHgxX3N0YXR1cz0leGQsIHJ0dDJfc3RhdHVzPSV4ZCwgcmV0eDJfc3RhdHVzPSV4ZCwgcnR0M19zdGF0dXM9JXhkLCByZXR4M19zdGF0dXM9JXhkLCBydHQ0X3N0YXR1cz0leGQsIHJldHg0X3N0YXR1cz0leGQsIGVhcl9mdXRfcmV0eF9zdGFydF90aW1lPSV1bCwgbjFfcmV0eF90bXJfZmxhZz0ldWIsIG4yX3JldHhfdG1yX2ZsYWc9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX1RUSV9SRVRYX1RNUl9TVEFUVVNfNkNDICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHR0aSByZXR4IHN0YXR1czogcnR0MF9zdGF0dXM9JXhkLCByZXR4MF9zdGF0dXM9JXhkLCBydHQxX3N0YXR1cz0leGQsIHJldHgxX3N0YXR1cz0leGQsIHJ0dDJfc3RhdHVzPSV4ZCwgcmV0eDJfc3RhdHVzPSV4ZCwgcnR0M19zdGF0dXM9JXhkLCByZXR4M19zdGF0dXM9JXhkLCBydHQ0X3N0YXR1cz0leGQsIHJldHg0X3N0YXR1cz0leGQsIHJ0dDVfc3RhdHVzPSV4ZCwgcmV0eDVfc3RhdHVzPSV4ZCwgZWFyX2Z1dF9yZXR4X3N0YXJ0X3RpbWU9JXVsLCBuMV9yZXR4X3Rtcl9mbGFnPSV1YiwgbjJfcmV0eF90bXJfZmxhZz0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfVFRJX1JFVFhfVE1SX1NUQVRVU183Q0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gdHRpIHJldHggc3RhdHVzOiBydHQwX3N0YXR1cz0leGQsIHJldHgwX3N0YXR1cz0leGQsIHJ0dDFfc3RhdHVzPSV4ZCwgcmV0eDFfc3RhdHVzPSV4ZCwgcnR0Ml9zdGF0dXM9JXhkLCByZXR4Ml9zdGF0dXM9JXhkLCBydHQzX3N0YXR1cz0leGQsIHJldHgzX3N0YXR1cz0leGQsIHJ0dDRfc3RhdHVzPSV4ZCwgcmV0eDRfc3RhdHVzPSV4ZCwgcnR0NV9zdGF0dXM9JXhkLCByZXR4NV9zdGF0dXM9JXhkLCBydHQ2X3N0YXR1cz0leGQsIHJldHg2X3N0YXR1cz0leGQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfVFRJX1JFVFhfVE1SX1NUQVRVU183Q0NfMiAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gZWFyX2Z1dF9yZXR4X3N0YXJ0X3RpbWU9JXVsLCBuMV9yZXR4X3Rtcl9mbGFnPSV1YiwgbjJfcmV0eF90bXJfZmxhZz0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfVFRJX1JFVFhfVE1SX1NUQVRVU184Q0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gdHRpIHJldHggc3RhdHVzOiBydHQwX3N0YXR1cz0leGQsIHJldHgwX3N0YXR1cz0leGQsIHJ0dDFfc3RhdHVzPSV4ZCwgcmV0eDFfc3RhdHVzPSV4ZCwgcnR0Ml9zdGF0dXM9JXhkLCByZXR4Ml9zdGF0dXM9JXhkLCBydHQzX3N0YXR1cz0leGQsIHJldHgzX3N0YXR1cz0leGQsIHJ0dDRfc3RhdHVzPSV4ZCwgcmV0eDRfc3RhdHVzPSV4ZCwgcnR0NV9zdGF0dXM9JXhkLCByZXR4NV9zdGF0dXM9JXhkLCBydHQ2X3N0YXR1cz0leGQsIHJldHg2X3N0YXR1cz0leGQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfVFRJX1JFVFhfVE1SX1NUQVRVU184Q0NfMiAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gcnR0N19zdGF0dXM9JXhkLCByZXR4N19zdGF0dXM9JXhkLCBlYXJfZnV0X3JldHhfc3RhcnRfdGltZT0ldWwsIG4xX3JldHhfdG1yX2ZsYWc9JXViLCBuMl9yZXR4X3Rtcl9mbGFnPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19VTF9SRVRYX1RNUl9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRFJYXSB1bCByZXR4IHRtciBpbmZvOiB1bF9jY19pZHg9JXViLCBoYXJxX2lkPSV1Yiwgc3RhcnRfdGltZT0ldWwsIGV4cGlyZWRfdGltZT0ldWwiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfTUlCX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gbWliIGludmFsaWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfQ1lDX0NIQU5HRV9ORVhUX09ORFVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gKGN5Y2xlIGNoYW5nZSlvbmR1IHRtcjogc3RhcnRfdGltZT0ldWwgYW5kIGV4cGlyZWRfdGltZT0ldWwsIG5leHQgb25kdSB0bXI6IHN0YXJ0X3RpbWU9JXVsIGFuZCBleHBpcmVkX3RpbWU9JXVsLCBjdXJfY3ljbGU9JU1lbWFjX2RyeF9jeWNsZV90eXBlX2UsIG5leHRfcHJlZGljdF9jeWNsZT0lTWVtYWNfZHJ4X2N5Y2xlX3R5cGVfZSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19TSE9SVF9DWUNfVE1SX1JFU0VUX1RNUl9FTkQgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRFJYXSBzaG9ydCBjeWNsZSB0bXIgcmVzZXQ6IHNob3J0IGN5Y2xlIHRtciBlbmQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfU0hPUlRfQ1lDX1RNUl9SRVNFVF9MT05HX0RSWF9DTUQgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gc2hvcnQgY3ljbGUgdG1yIHJlc2V0OiByY3YgbG9uZyBkcnggY21kIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX1RVUk5fT0ZGX1BBU1RfU0hPUlRfQ1lDTEVfT05EVV9UTVJfTE9OR19EUlhfQ01EICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHR1cm4gb2ZmIHBhc3Qgc2hvcnQgY3ljbGUgb25kdSB0bXI6IHJjdiBsb25nIGRyeCBjbWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfTjVfRFJYX1NUQVRVU19QUkVESUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gbjUgZHJ4IHN0YXR1cyBwcmVkaWN0aW9uOiBuNV90aW1lPSV1bCwgbjVfc3RhdHVzX2JtcD0ldWIsIHJlc3RfYWN0aXZlX2V2ZW50X2NvZGU9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX0RDSV9SQ1ZfTkVXX0NSTlRJX0RDSV9GT1JfQ0ZfUkFSICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIHJjdiBuZXcgYy1ybnRpIGRjaSBmb3IgY2YgcmFyOiBuZXcgYy1ybnRpIGRjaSByY3ZfdGltZT0ldWwsIGNmIHJhciByY3ZfdGltZT0ldWwiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfRENJX1JDVl9ORVdfQ1JOVElfRENJX0JFRk9SRV9DRl9SQVJfREVDT0RFRCAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gcmN2IG5ldyBjLXJudGkgZGNpIGJlZm9yZSBjZiByYXIgaXMgZGVjb2RlZDogbmV3IGMtcm50aSBkY2kgcmN2X3RpbWU9JXVsLCBjZiByYXIgcmN2X3RpbWU9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX041X0RSWF9TVEFUVVNfVVBEQVRFX0NGX1JBUiAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIG41IGRyeCBzdGF0dXMgdXBkYXRlIChjZiByYXIpOiBuNV90aW1lPSV1bCwgbjVfc3RhdHVzX2JtcD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfTjVfRFJYX1NUQVRVU19VUERBVEVfRFJYX0NNRCAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gbjUgZHJ4IHN0YXR1cyB1cGRhdGUgKGRyeC9sb25nIGRyeCBjbWQpOiBuNV90aW1lPSV1bCwgbjVfc3RhdHVzX2JtcD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfRFJYX0NNRF9PTkRVX1RNUl9TVE9QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gZHJ4L2xvbmcgZHJ4IGNtZCBzdG9wcyBvbmR1IHRtciIKK2luZm8gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19EUlhfQ01EX0RSWF9JTkFDVF9UTVJfU1RPUCAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRFJYXSBkcngvbG9uZyBkcnggY21kIHN0b3BzIGRyeCBpbmFjdCB0bXIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfRFJYX0NNRF9EUlhfU0hPUlRfQ1lDX1RNUl9TVEFSVCAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gZHJ4IGNtZCBzdGFydHMgc2hvcnQgY3ljbGUgdG1yOiBzdGFydF90aW1lPSV1bCwgZXhwaXJlZF90aW1lPSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19DUUlfU1JTX1RYX0FETUlOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRFJYXSB0eCB0aW1lPSV1bDogY3FpX3R4X2FkbWluPSV1YiwgdHlwZTAtc3JzX3R4X2FkbWluPSV1YiIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19ORVhUX09ORFVfQ09OU0lERVJJTkdfSU5BQ1RfU0hPUlRfVE1SX0VYUElSWSAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRFJYXSBuZXh0IG9uZHUgaW5mbyBjb25zaWRlcmluZyBkcnggaW5hY3Qvc2hvcnQgY3ljbGUgdG1yOiBuZXh0IG9uZHUgc3RhcnRfdGltZT0ldWwgYW5kIGV4cGlyZWRfdGltZT0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfRFJYX0RJU0FCTEVfUE9TVF9QUk9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RSWF0gZHJ4IGRpc2FibGUgcG9zdCBwcm9jOiBzdGF0dXM9JXViICgwOiBlbmFibGUsIDE6IGRpc2FibGUpIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX1BTRl9NQVBQSU5HX1RCTF9VUERBVEVfRFVNUCAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdIGR1bXAgcHNmIG1hcHBpbmcgdGFibGUgJXViICgwOiBvbmR1LCAxOiByZXR4LCAyOiBpbmFjdCwgMzogdWxfcmV0eCk9JTN1ZCAlM3VkICUzdWQgJTN1ZCAlM3VkICUzdWQgJTN1ZCAlM3VkICUzdWQgJTN1ZCIKKword2FybiAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX0RMX1dPX1BEQ0NIX0lORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtEUlhdW1dBUk5dIGRsIHdpdGhvdXQgcGRzY2ggaW5kOiByY3ZfYWJzX3RpbWU9JXVsIgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfQ0hLX0RSWF9DWUNMRV9OVEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW0RSWF0gRFJYX0NZQ0xFX05URjogc3RhcnRfdGltZT0ldWwsIG9uZHVfbGVuPSV1ZCwgY3ljbGVfbGVuPSV1ZCwgaXNfY3ljbGVfY2hhbmdlZD0ldWIiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU0xQCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gICAgICAgICAgICAgIEVNQUNfU0xQX0xPR19TSVRVQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU0xQXSBzaXR1YXRpb246ICV1YiAoMDogaW5pdGlhbGl6YXRpb24sIDE6IHJlc2V0LCAyOiBub24gcmVzZXQsIDM6IGRyeCBkaXNhYmxlKSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfU0xQX0xPR19TTFBfTEFTVF9QRENDSF9PTl9USU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU0xQXSBsYXN0IHBkY2NoX29uX3RpbWU9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1RJQ0tfT1BFUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdIHR4bGlzciB0aWNrIG9wZXJhdGlvbjogc3RhdHVzPSV1YiAoMDogbG9jaywgMTogdW5sb2NrKSwgZXJyY19wcm90b2NvbF9pZHg9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1NMUF9TVEFUVVNfQ0hBTkdFX1RPX0FXQUtFICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdIHNscCBzdGF0dXMgY2hhbmdlcyB0byBFTUFDX1NMUF9TVEFUVVNfQVdBS0U6IHJlYXNvbj0ldWIgKDA6IG5vcm1hbCB3YWtldXAsIDE6IGR5bmFtaWMgd2FrZXVwLCAyOiBmb3JjZSBhd2FrZSkiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1NMUF9MT0dfU0xQX1NUQVRVU19DSEFOR0VfVE9fVFhfUkVBRFkgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NMUF0gc2xwIHN0YXR1cyBjaGFuZ2VzIHRvIEVNQUNfU0xQX1NUQVRVU19UWF9SRUFEWSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfU0xQX0xPR19TTFBfU1RBVFVTX0NIQU5HRV9UT19XQUtJTkdVUCAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU0xQXSBzbHAgc3RhdHVzIGNoYW5nZXMgdG8gRU1BQ19TTFBfU1RBVFVTX1dBS0lOR1VQIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1NMUF9TVEFUVVNfUFJFRElDVF9SRVNVTFQgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdIHNscCBzdGF0dXMgY2hhbmdlcyB0byAlTWVtYWNfc2xwX3N0YXR1c19lIGZyb20gRU1BQ19TTFBfU1RBVFVTX1dBSVRJTkdfU0xFRVBfV0lUSF9QUkVESUNUX01TRyIKK2luZm8gIChub25fc21wKSAgIEVNQUNfU0xQX0xPR19ORVhUX1dBS0VVUF9USU1FX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU0xQXSBuZXh0IHdha2V1cCB0aW1lIGluZm86IFxudGlja191cGRhdGVkPSV1YjoxLCBcbnByZWRpY3RlZD0ldWI6MSwgXG5uZXh0Ml9vZmY9JXViOjEsIFxuY3ljbGVfdHlwZT0ldWI6MSVwYjo0LCBcbnRpY2tfYXdha2VfdHlwZT0lTWVtYWNfc2xwX2F3YWtlX3R5cGVfZSwgbmV4dF90aWNrX3RpbWU9JXVsLCBcbnBkY2NoX2F3YWtlX3R5cGU9JU1lbWFjX3NscF9hd2FrZV90eXBlX2UsIG5leHRfcGRjY2hfdGltZT0ldWwgXG4obm90ZTogPGRyeF90aWNrX2F3YWtlX3R5cGU9JU1lbWFjX3NscF9hd2FrZV90eXBlX2UsIGRyeF90aWNrX2F3YWtlX3RpbWU9JXVsLCBkcnhfcGRjY2hfYXdha2VfdHlwZT0lTWVtYWNfc2xwX2F3YWtlX3R5cGVfZSwgZHJ4X3BkY2NoX2F3YWtlX3RpbWU9JXVsPiA8dWxfaGFycV90aWNrX2F3YWtlX3R5cGU9JU1lbWFjX3NscF9hd2FrZV90eXBlX2UsIHVsX2hhcnFfdGlja19hd2FrZV90aW1lPSV1bCwgdWxfaGFycV9wZGNjaF9hd2FrZV90eXBlPSVNZW1hY19zbHBfYXdha2VfdHlwZV9lLCB1bF9oYXJxX3BkY2NoX2F3YWtlX3RpbWU9JXVsPiA8c3JfdGlja19hd2FrZV90aW1lPSV1bCwgc3JfcGRjY2hfYXdha2VfdGltZT0ldWw+KSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfU0xQX0xPR19ORVhUX1NQU19XQUtFVVBfVElNRV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU0xQXVtTUFNdIChub3RlOiA8c3BzX3RpY2tfYXdha2VfdGltZT0ldWwsIHNwc19wZGNjaF9hd2FrZV90aW1lPSV1bD4pIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1JDVl9EWU5BTUlDX1JFUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdIHJjdiBkeW5hbWljX3dha2V1cF9yZXEiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1NMUF9MT0dfUkNWX0RZTkFNSUNfVFhfUkVBRFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1NMUF0gcmN2IGR5bmFtaWNfd2FrZXVwX3R4X3JlYWR5OiBkeW5hbWljX3dha2V1cF90aWNrX3RpbWU9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1JDVl9EWU5BTUlDX0NORiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdIHJjdiBkeW5hbWljX3dha2V1cF9jbmY6IGR5bmFtaWNfd2FrZXVwX3BkY2NoX3RpbWU9JXVsIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1VORVhQRUNURURfU0xFRVBfU1RBVFVTX0RVUklOR19BV0FLRSAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdW1dBUk5dIHVuZXhwZWN0ZWQgRU1BQ19TTFBfU1RBVFVTX1NMRUVQIGR1cmluZyBhd2FrZSIKK3dhcm4gIChub25fc21wKSAgIEVNQUNfU0xQX0xPR19VTkVYUEVDVEVEX0RDSV9EVVJJTkdfU0xFRVAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bU0xQXVtXQVJOXSB1bmV4cGVjdGVkIGRjaSBkdXJpbmcgRU1BQ19TTFBfU1RBVFVTX1NMRUVQIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19TTFBfTE9HX1VMX0hBUlFfU1BTX0NIQU5HRV9QRENDSF9USU1FX0RVUl9TTEVFUCAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTTFBdW1dBUk5dIHBkY2NoIHRpbWUgaXMgY2hhbmdlZCBkdXJpbmcgc2xlZXA6IHNvdXJjZT0ldWIgKDA6IHVsIGhhcnEsIDE6IHNwcyksIG9yaWdpbmFsX3RpY2tfdGltZT0ldWwsIG9yaWdpbmFsX3BkY2NoX3RpbWU9JXVsIgorCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9TTFBfTE9HX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VSVF1bU0xQXSBpbml0aWFsaXphdGlvbiIKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX1NMUF9MT0dfU0xQX1NUQVRVU19DSEFOR0VfVE9fU0xFRVAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRVJUXVtTTFBdIHNscCBzdGF0dXMgY2hhbmdlcyB0byBFTUFDX0VSVF9TTFBfU1RBVFVTX1NMRUVQOiBjdXJfb3NfdGljaz0ldWwsIGFpcl9hYnNfdGltZT0ldWwsIGNlbGxfdGltZV9jbnQ9JXVkIgoraW5mbyAgICAgICAgICAgICAgRU1BQ19FUlRfU0xQX0xPR19SQ1ZfRFlOQU1JQ19XQUtFVVBfUkVRICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFUlRdW1NMUF0gcmN2IGR5bmFtaWMgd2FrZXVwIHJlcTogbW9kdWxlPSV1YiAoMDogd2l0aG91dCB3YWtldXAgdGltZSwgMTogd2l0aCB3YWtldXAgdGltZSkiCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9TTFBfTE9HX0NVUl9USU1FX0lORk9fUFJFRElDVCAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VSVF1bU0xQXSB0aW1lciBwcmVkaWN0aW9uOiBjdXJfb3NfdGljaz0ldWwsIHByZWRpY3RlZCBhaXJfYWJzX3RpbWU9JXVsLCBwcmVkaWN0ZWQgY2VsbF90aW1lX2NudD0ldWQiCit3YXJuICAgICAgICAgICAgICBFTUFDX0VSVF9TTFBfTE9HX0RZTkFNSUNfV0FLRVVQX0RST1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VSVF1bU0xQXSBkcm9wIGR5bmFtaWMgd2FrZXVwOiByZWFzb249JXViICgwOiBubyBuZWVkLCAxOiBub3QgaW4gRU1BQ19FUlRfU0xQX1NUQVRVU19TTEVFUCwgMjogY2xvc2UgdG8gbmV4dF9wZGNjaF90aW1lLCAzOiBzY2ggaXMgY2xvc2VkIG9yIG1hYyByZXNldCkiCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9TTFBfTE9HX1NMUF9TVEFUVVNfQ0hBTkdFX1RPX0FXQUtFICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VSVF1bU0xQXSBzbHAgc3RhdHVzIGNoYW5nZXMgdG8gRU1BQ19FUlRfU0xQX1NUQVRVU19BV0FLRSIKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX1NMUF9MT0dfVVBQRVJfTEFZRVJfRFlOQU1JQ19XQUtFVVBfQ1RSTCAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRVJUXVtTTFBdIHVwcGVyIGxheWVyIGR5bmFtaWMgd2FrZXVwIG9wZXJhdGlvbjogc3RhdHVzPSV1YiAoMDogZW5hYmxlLCAxOiBkaXNhYmxlKSIKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX1NMUF9MT0dfU0VORF9IT1NUX0RBVEFfUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRVJUXVtTTFBdIHNlbmQgaG9zdCBkYXRhIHJlcXVlc3Q6IGNudD0ldWIsIG1zZ19zZW50X3RpbWU9JXVsLCBkeW5hbWljX3dha2V1cF90aWNrX3RpbWU9JXVsLCBkeW5hbWljX3dha2V1cF9wZGNjaF90aW1lPSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX1NMUF9MT0dfUkNWX0hPU1RfREFUQV9SRUFEWSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRVJUXVtTTFBdIHJjdiBob3N0IGRhdGEgcmVhZHkiCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9TTFBfTE9HX1JDVl9IT1NUX0RBVEFfQ05GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VSVF1bU0xQXSByY3YgaG9zdCBkYXRhIGNuZiIKK3dhcm4gICAgICAgICAgICAgIEVNQUNfRVJUX1NMUF9MT0dfRU5RVUVVRV9IT1NUX0RBVEFfUkVRICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRVJUXVtTTFBdIGVucXVldWUgaG9zdCBkYXRhIHJlcSIKKworaW5mbyAgICAgICAgICAgICAgRU1BQ19FUlRfU0xQX0xPR19USUNLX09QRVJBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFUlRdW1NMUF0gZXJ0IHRpY2sgb3BlcmF0aW9uOiBzdGF0dXM9JXViICgwOiBsb2NrLCAxOiB1bmxvY2spIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVNVVgKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gV0FSTgord2FybiAgICAgICAgICAgICAgRU1VWF9XQVJfX19QUklOVF9FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtFTVVYXVtXQVJOXSAlTWVtdXhfbG9nX2UiCisKKy8vIEVycm9yCitlcnJvciAgICAgICAgICAgICBFTVVYX0VSUl9fX1BSSU5UX0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19FUlJPUl9IICAgICAiW0VNQUNdW0VNVVhdW0VSUk9SXSAlTWVtdXhfbG9nX2UiCisKKy8vIERlYnVnCitpbmZvICAgICAgICAgICAgICBFTVVYX0RCR19fX1BSSU5UX0UxX0k0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW0VNVVhdW0RCR10gJU1lbXV4X2xvZ19lICVsICVsICVsICVsIgorCisvLyBHZW5lcmFsCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX1BSSU5UX0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0xPR10gJU1lbXV4X2xvZ19lIgorCisvLyBSZWFkIE1VWCBSRVEKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fUFJPQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRU1BQ11bRU1VWF1bTVJdICBNVVhfUkVROiBjY19pZHg9JXViLCBuZWVkX2xjcD0lTWthbF9ib29sLCBuZWVkX2dlbl9mcm9udF90Yj0lTWthbF9ib29sLCBuZWVkX211eD0lTWthbF9ib29sIgorCisvLyBJbml0IExDUCAoU3luYyBCdWZmZXIgU3RhdHVzKQoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19TWU5DX0JVRkZfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtFTVVYXVtMQ1BdIFN5bmMgYnVmZiBzdGF0dXM6IFtJTl0gbGNnX2J1Zl9pbmNfb3B0PSVNZW11eF9yYl9ncm91cF9lLCBsY3Bfb3B0PSVNZW11eF9yYl9ncm91cF9lLCBbT1VUXSBsY2dfYnVmX251bT0ldWIiCisKKworCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0FGVEVSX01BQ19MQ1BfQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjJfSCAgICAgICAiW0VNQUNdW0VNVVhdW0xDUF0gQWZ0ZXIgbWFjIGxjcDogYy1ybnRpPSVNZW11eF9jcm50aV9zdGF0dXNfZSwgYnNyPSVNZW11eF9ic3Jfc3RhdHVzX2UoJU1lbXV4X2Jzcl9mb3JtYXRfZSksIHBocj0lTWVtdXhfcGhyX3N0YXR1c19lLCBjY2NoPSVNZW11eF9jY2NoX3N0YXR1c19lIgoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19BRlRFUl9NQUNfTENQX0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtFTVVYXVtMQ1BdIEFmdGVyIG1hYyBsY3A6IHJfdGJzPSV1ZCwgbGFzdF9zaGRyX3R5cGU9JU1lbXV4X2xhc3Rfc2hkcl90eXBlX2UsIGxhc3Rfc2hkcl9mb3JtYXQ9JU1lbXV4X2xhc3Rfc2hkcl9mb3JtYXRfZSIKKworaW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19BRlRFUl9STENfTENQX0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtFTVVYXVtMQ1BdIEFmdGVyIHJsYyBsY3A6IGJzcj0lTWVtdXhfYnNyX3N0YXR1c19lKCVNZW11eF9ic3JfZm9ybWF0X2UpLCBwYWQ9JU1lbXV4X3BhZF9zdGF0dXNfZSwgZHhjaD0lTWVtdXhfZHhjaF9zdGF0dXNfZSwgcG9zdF9wYWRfbGVuPSV1ZCIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fQUZURVJfUkxDX0xDUF9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRU1BQ11bRU1VWF1bTENQXSBBZnRlciBybGMgbGNwOiByX3Ricz0ldWQsIGxhc3Rfc2hkcl90eXBlPSVNZW11eF9sYXN0X3NoZHJfdHlwZV9lLCBsYXN0X3NoZHJfZm9ybWF0PSVNZW11eF9sYXN0X3NoZHJfZm9ybWF0X2UiCisKKword2FybiAgICAgICAgICAgICAgRU1VWF9XQVJfX19SQVJfR1JBTlRfVE9PX1NNQUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtFTVVYXVtMQ1BdW1dBUk5dIFJBUiBncmFudCBpcyB0b28gc21hbGwoPDdieXRlcykgZm9yIENDQ0g6IHJfdGJzPSV1ZCIKKworCisvLyBHZW4gZnJvbnQgVEIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fTVVYX0JVRl8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRU1BQ11bRU1VWF1bVEJdICAgICAgICAgICAgICAgICAgICAgICAgICAgJXhiICV4YiAleGIgJXhiIiAKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fTVVYX0JVRl8zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRU1VWF1bVEJdICAgICAgICAgICAgICAgICAgICAgICAgICAgJXhiICV4YiAleGIgJXhiIiAKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fTVVYX0JVRl80ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRU1VWF1bVEJdICAgICAgICAgICAgICAgICAgICAgICAgICAgJXhiICV4YiAleGIgJXhiIgoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19QQURfQlVGXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYzX0ggICAgICAgIltFTUFDXVtFTVVYXVtUQl0gICAgICAgICAgICAgICAgICAgICAgICAgICAleGIgJXhiICV4YiAleGIiCisKKworLy8gQ2xvc2UgVUwgSGFycQoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19JTklUX0hBUlFfSU5GT19RVUlDSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtFTVVYXVtVTC1IQVJRXSBJbml0IGhhcnFfaW5mbyhxdWljayk6IGNjX2lkeD0ldWIsIGhhcnFfaWQ9JXViIgorCisKKworLy8gTVVYIG9wdGlvbgoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19PUFRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFTVVYXVtJRl0gIE9wdGlvbjogcGlkeD0lYiwgbGNnX2J1Zl9pbmNfb3B0PSVNZW11eF9yYl9ncm91cF9lLCBsY3Bfb3B0PSVNZW11eF9yYl9ncm91cF9lIiAgCisKKy8vIEZvcmNlIGFsbCBwYWRkaW5nCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0ZPUkNFX0FMTF9QQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lGXSAgRm9yY2UgYWxsIHBhZDogcGlkeD0lYiwgdWxfY2NfaWR4PSV1YiwgaGFycV9pZD0ldWIiICAKKworLy8gRU1BQyByZXNldAoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19FTUFDX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFTVVYXVtJRl0gIEVNQUMgcmVzZXQ6IHBpZHg9JWIiICAKKworLy8gSW5pdCAvLyBUaW1lIGZvcm1hdDogX19EQVRFX189TW1tIGRkIHl5eXksIF9fVElNRV9fPWhoOm1tOnNzCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lGXSAgRU1VWCBpbml0IgoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19DTVBMX0RBVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFTVVYXVtJTkZPXSBjbXBsX2RhdGU9JWMlYyVjLyVjJWMiCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0NNUExfVElNRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lORk9dIGNtcGxfdGltZT0lYyVjOiVjJWM6JWMlYyIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fQ1VSUl9USU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRU1VWF1bSU5GT10gY3Vycl90aW1lPSV1bC8ldWwvJXVsICV1bDoldWw6JXVsIgorCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0ZFQVRVUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lORk9dIEZlYXR1cmU6IFVMX0NDX05VTT0ldWIsIFBOMzFfUEFEPSV1YiwgQlNSX0NPTlNJREVSX1NVU1BFTkRfUkI9JXViLCBHRU1JTkk9JXViLCBMK1c9JXViLCBNUFM9JXViLCBMK0w9JXViLCBSU0lNPSV1YiwgTFRFX05VTT0ldWIiCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0NPTlRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lORk9dIENvbnRleHQ6IGdfZW11eD0leGwsIGNjMChoYXJxMC0zLG11eGJ1Zik9KCV4bCwleGwpKCV4bCwleGwpKCV4bCwleGwpKCV4bCwleGwpLCBjb3RmcT0leGwsIGNvdGZxX251bT0ldWwsIGdfcGFkX2J1Zj0leGwiCisKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fSU5JVF9IQVJRX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRU1VWF1bVUwtSEFSUV0gSW5pdCBoYXJxX2luZm86IGNjX2lkeD0ldWIsIGhhcnFfaWQ9JXViIgorCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0dFTl9QQURfQlVGX1BOMzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW1BBRF0gR2VuZXJhdGUgcGFkX2J1ZjogUE4zMSIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fR0VOX1BBRF9CVUZfQUxMMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRU1VWF1bUEFEXSBHZW5lcmF0ZSBwYWRfYnVmOiBBTEwwIgorCisvLyBSZXNldAoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtFTVVYXVtJRl0gIEVNVVggcmVzZXQiCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBFTUFDREwKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bQ0ZHXSByZXNldCIKK2luZm8gICAgICAgICAgICAgIEVNQUNETF9MT0dfRFJCX0NGRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRExdW0NGR10gY2xvc2VfcmJfbnVtPSV1Yiwgb3Blbl9yYl9udW09JXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19TVVBQT1JUX1JFTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bQ0ZHXSBwcm90b2NvbCAldWIsIHN1cHBvcnQgcmVsZWFzZSAlTWVycmNfZW1hY19zdXBwb3J0X3JlbGVhc2VfZW51bSwgc3RhcnQgZml4IGxjaWQgJXViLCBSQlIgZW5hYmxlICV1YiIKKworaW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19IRFJfTEVOX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bVEJdW0VSUk9SXSBUQiAldWI6IGFjY3VfbGVuICV1ZCA+IHRiX2xlbj0ldWQiCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX0NFX0FGVEVSX1NEVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RMXVtUQl1bRVJST1JdIFRCICV1YjogQ0UgJXViIGFmdGVyIFNEVSIKK2luZm8gICAgICAgICAgICAgIEVNQUNETF9MT0dfSU5WQUxJRF9MQ0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRExdW1RCXVtFUlJPUl0gVEIgJXViOiBsb2dpY2FsIGNoYW5uZWwgJXViIG5vdCBvcGVuIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19VRUlEX0lOX0NfU1BTX1RCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bVEJdW0VSUk9SXSBUQiAldWI6IFVFSUQgZXhpc3RzIGluIEMvU1BTIFRCIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19TVUJIRFJfRVhDRUVEU19UQUJMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFRCICV1Yjogc3ViaGVhZGVyIG51bWJlcj0ldWQgZXhjZWVkcyBwcmUtcmVjb3JkIHRhYmxlIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19DRV9PVVRfUkVDT1JEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bVEJdW0VSUk9SXSBUQiAldWI6IENFICV1YiBmYWxscyBvdXQgb2YgcmVjb3JkIHRhYmxlIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19QQURESU5HX0JZVEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFRCICV1YjogcGFkZGluZyBsZW4gJXVsIGFmdGVyIGxhc3QgbGNpZCAldWIiCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1RPT19NQU5ZX1NVQkhEUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RMXVtUQl1bRVJST1JdIFRCICV1YjogdG9vIG1hbnkgc3ViaGVhZGVyLCBsYXN0IGxjaWQgJXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19SQ1ZfNEJZVEVfU0NFTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtETF1bV0FSTl0gVEIgJXViOiA0LWJ5dGUgU0NlbGwgTUFDIENFIGluc2lkZSwgd29uJ3QgaGFuZGxlIGl0IgorCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX0NSX1RJTUVSX05PVF9TVEFSVF9ZRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0RMXVtSQV1bV0FSTl0gUmN2IHRjLXJudGkgVEIgYmVmb3JlIENSIHRpbWVyIHN0YXJ0IGF0IGFicz0ldWwiCisKK2luZm8gICAgICAgICAgICAgIEVNQUNETF9MT0dfVUVJRF9FWElTVF9XSEVOX05PX1JBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bRExdW1JBXVtXQVJOXSBVRUlEIGV4aXN0cyB3aGVuIG5vdCBpbiBXQUlUX0NSIgorCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVEEKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICAgRU1BQ19UQV9MT0dfVEFfVkFMVUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtUQV0gUmVzdWx0OiB0YWdfaWQ9JXViLCB2YWx1ZT0lbCIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfMi50bWQgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfMi50bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3YWI1MwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZW1hY190cmFjZV8yLnRtZApAQCAtMCwwICsxLDI3NiBAQAorW0RlZmF1bHRdCitFTUFDXzIKK09uCitMMl9CdWZmZXIKK1RDTUZPUkNFCitNQVhfQVJHIDE1CitMMl9CVUZGRVJfU0VUVElORyBMMl9CVUZGRVJfRUwyCisKK1tNb2RlbV9UeXBlXQorTFRFX0wyCisKK1tDbGFzc10KK0VNQUNfTFYxX0ggICAgT04gIC8vIEludGVybmFsIHVzZSAoYmFzaWMgaW5mb3JtYXRpb24pCitFTUFDX0xWMl9IICAgIE9OICAvLyBJbnRlcm5hbCB1c2UgKG1vcmUgaW5mb3JtYXRpb24pCitFTUFDX0xWM19IICAgIE9OICAvLyBJbnRlcm5hbCB1c2UgKGRldGFpbCkKK0VNQUNfV0FSTl9IICAgT04gIC8vIEludGVybmFsIHVzZQorRU1BQ19FUlJPUl9IICBPTiAgLy8gSW50ZXJuYWwgdXNlCitFTUFDX0RFQlVHX0ggIE9OICAvLyBGb3IgdGVtcCBsb2cKKworW1N0cmluZ10KKworW01lc3NhZ2VdCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUNICisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRU1BQ0RMIFRBU0s6IExlZ2FjeSB0cmFjZSBmcm9tIDYyOTEKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1JFU0VUX1NZTkNfQVJFQV9JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIHJlc2V0X3N5bmNfYXJlYV9pbmZvIGNhbGxlZCwgcmVzZXQgc3luY19hcmVhX2lkOiAldWwsIGFyZWFfbnVtOiAldWwsIG9uZ2luZ19mbGFnOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfREVMRVRFX0FDVElWRV9BUkVBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gaWR4X21hcDogJXVkLCBhcmVhX251bTogJXVsLCBhcmVhX2lkeDogJXVsLCBhcmVhaW5mb192YWlsZDogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX01DQ0hfQ09ORklHX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIG1jY2hfY29uZmlnIGNhbGxlZCwgc3luY19hcmVhX2lkOiAldWwsIG51bV9tY2NoX2NmZzogJXVkLCBudW1fYWN0aXZlX2FyZWE6ICV1bCwgb25naW5nX2ZsYWc6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19FWElTVF9NQ0NIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBleGlzdGVkIG1jY2ggY29uZmlnIHdpdGggJXVkLmlkeF9tYXA6ICV1ZCwgYXJlYV9pZHg6ICV1bCwgYXJlYV9pZDogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX05FV19DRkdfTUNDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIG5ldyBtY2NoIGNvbmZpZyB3aXRoICV1ZC4gYXJlYV9pZDogJXVsLCBvZmZzZXQ6ICV1bCwgUlA6ICV1ZCwgTVA6ICV1ZCwgc2ZfbnVtOiAldWwsIHJlY3ZfbW9kZTogJU1lbDFfY2hfbWNoX21jY2hfcmVjZXB0aW9uX21vZGVfZW51bSIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19BRERfTUNDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBhZGQgbmV3IG1jY2gsIHN5bmNfYXJlYV9pZDogJXVsLCBpZHhfbWFwOiAldWQsIGFyZWFfaWR4OiAldWwsIGFyZWFfaWQ6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19VUERBVEVfTUNDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSB1cGRhdGUgY3VycmVudCBtY2NoLCBzeW5jX2FyZWFfaWQ6ICV1bCwgYXJlYV9pZDogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX0RFTEVURV9NQ0NIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIGRlbGV0ZSBjdXJyZW50IG1jY2gsIHN5bmNfYXJlYV9pZDogJXVsLCBhcmVhX2lkOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfTUNDSF9DRkdfSURYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gYXJlYV9pbmZvX2lkeDogJXVsLCBtY2NoX2NmZ19pZHg6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19QTUNIX0NPTkZJR19JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBwbWNoX2NvbmZpZyBjYWxsZWQsIHN5bmNfYXJlYV9pZDogJXVsLCBhcmVhX2lkOiAldWwsIENTQTogJXVkLCBzZl9udW06ICV1bCwgbnVtX3BtY2hfaW5mbzogJXVsLCBvbmdpbmdfZmxhZzogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1BNQ0hfQVJFQV9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIGFyZWFfaWR4OiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfUE1DSF9SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gcG1jaCBpbmZvIHJlc2V0LCBpc192YWlsZDogJXVsLCBhcmVhX2lkOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfQUREX1BNQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gYWRkIG5ldyBwbWNoLCBhcmVhX2lkOiAldWwsIHBtY2hfaWQ6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19QTUNIX1NGX0xJU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBwbWNoIHNmIGxpc3Q6ICV1bDogJXVsIgord2FybiAgICAgICAgICAgICAgRU1CTVNfTE9HX1BNQ0hfQ0ZHX0VSUl9BTExPQ19FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIGludmFsaWQgc2YtYWxsb2MgZW5kOiAldWwsIG51bV9jc2Ffc2Y6ICV1ZCwgcG1jaF9pZDogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1VQREFURV9NU0lfSU5JVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIHVwZGF0ZV9tc2kgY2FsbGVkLCBzeW5jX2FyZWFfaWQ6ICV1bCwgYXJlYV9pZDogJXVsLCBwbWNoX2lkOiAldWwsIHNmX25vICV1bCwgbnVtX21jaF9zY2hlZDogJXVkIgord2FybiAgICAgICAgICAgICAgRU1CTVNfTE9HX0lOVkFJTERfQVJFQV9JTkZPX0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIERvIG5vdCBoYXZlIHZhaWxkIGFyZWFfaW5mb19pZHghISEiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfUkVDRVBUSU9OX01PREVfSU5JVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gcmVjZXB0aW9uX21vZGVfY29uZmlnIGNhbGxlZCwgc3luY19hcmVhX2lkOiAldWwsIHNmX25vOiAldWQsIG9uZ2luZ19mbGFnOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfQ0ZHX1JFQ0VQVElPTl9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gZWwxIGNvbmZpZyBtYm1zIG1jY2ggcmVjZXB0aW9uIG1vZGUsIGN1cnJlbnQgbW9kZTogJXVsLCBhc3NpZ25lZCBtb2RlOiAldWwsIGFyZWFfaWQ6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19RVUVSWV9JRFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBxdWVyeV9pbmRleCBjYWxsZWQsIHN5bmNfYXJlYV9pZDogJXVsLCBhcmVhX2lkOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfVVBEQVRFX1NDSEVEX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXSB1cGRhdGVfc2NoZWR1bGUgY2FsbGVkLCBzeW5jX2FyZWFfaWQ6ICV1bCwgc2Zfbm86ICV1ZCwgZm9yY2U6ICV1bCwgb25naW5nX2ZsYWc6ICV1bCwgbnVtX2FjdGl2ZV9hcmVhOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfU0NIRURfTk9fVkFMSURfUkVTVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXVtSRVNVTFRdIHVwZGF0ZSBzY2hlZCBhdCBzZl9ubyAldWQgYnV0IG5vIHZhbGlkIHNjaGVkIHJlc3VsdCByZXR1cm5lZCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19VUERBVEVfU0NIRURfUkVTVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdW1JFU1VMVF0gdXBkYXRlIHNjaGVkIHJlc3VsdCwgc3luY19hcmVhX2lkOiAldWwsIGFyZWFfaWQ6ICV1bCwgc2Zfbm86ICV1ZCwgaXNfbWNjaDogJXVsLCBtY2NoX21wX2lkOiAldWwsIHBtY2hfaWQ6ICV1bCwgbWNzOiAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfVVBEQVRFX1NDSEVEX1JFU1VMVF9HRU1JTkkgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXVtSRVNVTFRdW0dlbWluaV0gdXBkYXRlIHNjaGVkIHJlc3VsdCwgc3luY19hcmVhX2lkOiAldWwsIGFyZWFfaWQ6ICV1bCwgc2Zfbm86ICV1ZCwgaXNfbWNjaDogJXVsLCBtY2NoX21wX2lkOiAldWwsIHBtY2hfaWQ6ICV1bCwgbWNzOiAldWwsIHByaW9yaXR5OiAlTWVsMV9lbWJtc19nZW1pbmlfcHJpb3JpdHlfZW51bSIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19NQ0NIX1VQREFURV9TQ0hFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdIHVwZGF0ZSBtY2NoIHNjaGVkLCBhcmVhX2lkOiAldWwsIHNmX25vOiAldWQsIGZvcmNlOiAldWwsIG1vZGUgY2hhbmdlOiAldWwsIHZhbGlkOiAldWwgb3IgcGFzc2VkIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX01DQ0hfU0NIRURfUkVTVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtTQ0hFRF0gbWNjaCBzY2hlZCwgYXJlYV9pZDogJXVsLCBzZl9ubzogJXVkLCByZWN2X21vZGU6ICV1bCwgdmFsaWQ6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19NQ0NIX1NDSEVEX05FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdIG1jY2ggZmluYWwgdXBkYXRlLCBhcmVhX2lkOiAldWwsIHNmX25vOiAldWQsIGFyZWFfaWR4OiAldWwsIG1jY2hfbXBfaWQ6ICV1bCIKK3dhcm4gICAgICAgICAgICAgIEVNQk1TX0xPR19NQ0NIX05PX1ZBSUxEX05FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdIG1jY2ggZmluYWwgdXBkYXRlLCBubyB2YWlsZCBuZXh0IG1jY2giCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfUlBJRF9NUElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXVtNUF9JRF0gc2Zfbm8gJXVkLCBycF9pZF9pbl9tcCAldWwsIG1wX2lkICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19GT1JDRV9SRUNWX01DQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdW01QX0lEXSBmb3JjZSB0byByZWN2IG1jY2ggd2hlbiBkZWxheSBhY3Jvc3MgbXAsIGN1cnJlbnQgc2Zfbm8gJXVkLCBsYXN0IG1jY2ggc2Zfbm8gJXVkLCBycF9pZF9pbl9tcCAldWwiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfUE1DSF9VUERBVEVfU0NIRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXSB1cGRhdGUgcG1jaCBzY2hlZCwgYXJlYV9pZDogJXVsLCBwbWNoX2lkOiAldWwsIHNmX25vOiAldWQsIGZvcmNlOiAldWwsIHZhbGlkOiAldWwgb3IgcGFzc2VkIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1BNQ0hfU0NIRURfUkVTVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtTQ0hFRF0gcG1jaCBzY2hlZCwgYXJlYV9pZDogJXVsLCBwbWNoX2lkOiAldWwsIHNmX25vOiAldWQsIGJfbXNpX2NoZWNrZWQ6ICV1ZCwgdmFsaWQ6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19NU0lfSEFORExFX0NTQV9JRFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdIE1TSSBoYW5kbGluZy4uLiBmaW5kX25leHRfcmVzOiAldWwsIENTQV9pZDogJXVkLCBDU0FfaWRfaW5fbXA6ICV1ZCwgc2ZfaWR4OiAldWQsIGN1cl9zZl9ubzogJXVkLCBzZl9pZHhfaW5fbXNwOiAldWQsIG51bV9jc2Ffc2ZfcmVzOiAldWQiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfUE1DSF9TQ0hFRF9ORVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXSBwbWNoIGZpbmFsIHVwZGF0ZSwgcG1jaF9pZHg6ICV1bCwgc2Zfbm86ICV1ZCwgY2FzX2lkeDogJXVkIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1NDSEVEX05FWFRfSU5JVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtTQ0hFRF0gc2NoZWR1bGVfbmV4dCBjYWxsZWQsIHN5bmNfYXJlYV9pZDogJXVsLCBvbmdpbmdfZmxhZzogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1JFRFVOREFOVF9TQ0hFRF9ORVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtTQ0hFRF0gcmVkdW5kYW50IHNjaGVkdWxlIG5leHQsIHN5bmNfYXJlYV9pZDogJXVsIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX1NDSEVEX05FWFRfUkVTVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQk1TXVtTQ0hFRF1bUkVTVUxUXSBzY2hlZCBuZXh0IHJlc3VsdCwgc3luY19hcmVhX2lkOiAldWwsIGFyZWFfaWQ6ICV1bCwgc2Zfbm86ICV1ZCwgaXNfbWNjaDogJXVsLCBtY2NoX21wX2lkICV1bCwgcG1jaF9pZDogJXVsLCBtY3M6ICV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19TQ0hFRF9ORVhUX1JFU1VMVF8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdW1JFU1VMVF0gaXNfcG1jaDogJU1rYWxfYm9vbCwgY3NhcF9pZDogJXVkLCBpc19tY2hfcmVsaWFibGU6ICVNa2FsX2Jvb2wiCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfU0NIRURfTkVYVF9SRVNVTFRfR0VNSU5JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01CTVNdW1NDSEVEXVtSRVNVTFRdW0dlbWluaV0gc2NoZWQgbmV4dCByZXN1bHQsIHN5bmNfYXJlYV9pZDogJXVsLCBhcmVhX2lkOiAldWwsIHNmX25vOiAldWQsIGlzX21jY2g6ICV1bCwgbWNjaF9tcF9pZCAldWwsIHBtY2hfaWQ6ICV1bCwgbWNzOiAldWwsIHByaW9yaXR5OiAlTWVsMV9lbWJtc19nZW1pbmlfcHJpb3JpdHlfZW51bSIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19OVU1fTVRDSF9SRVNPVVJDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bU0NIRURdW0dlbWluaV0gbnVtX210Y2hfcmVzb3VyY2U6ICV1bCwgdGhyZXNob2xkOiAldWwsIHByaW9yaXR5OiAlTWVsMV9lbWJtc19nZW1pbmlfcHJpb3JpdHlfZW51bSIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19TSUIyX01CU0ZOX0NGR19VUERBVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBBZnRlciBTSUIyIE1CU0ZOIFN1YmZyYW1lIENmZyB1cGRhdGUsIHN5bmNfYXJlYV9pZDogJXViLCBTSUIyIHZhbGlkOiAlTWthbF9ib29sLCBwZXJpb2Q6ICV1ZCwgbnVtX3NmX2luX2xpc3Q6ICV1ZCIKK3dhcm4gICAgICAgICAgICAgIEVNQk1TX0xPR19TRl9DRkdfSU5WQUxJRF9XSVRIX1NJQjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXVtXQVJOXSBkZXRlY3QgaW52YWxpZCBtYnNmbiBzZiBvY25maWcgd2l0aCBTSUIyLCBtYnNmbl9zeW5jX2FyZWFfaWQ6ICV1YiwgaXNfbWNjaDogJU1rYWxfYm9vbCIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19NQlNGTl9DRkdfVU5QQUNLX1NGX0xJU1RfUEVSSU9EX1JGICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBtYnNmbiBzZiBjb25maWcgdW5wYWNrLCBzZl9saXN0X3BlcmlvZF9yZjogJXVkIgorCitpbmZvICAgICAgICAgICAgICBFTUJNU19MT0dfTUJTRk5fU0ZfQ09ORklHX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjJfSCAgICAgICAiW0VNQUNdW01CTVNdW0NGR10gTUJTRk4gU0YgQ29uZmlnWyV1Yl0sIHJmX2FsbG9jX3BlcmlvZDogJXViLCByZl9hbGxvY19vZmZzZXQ6ICV1YiwgaXNfb25lX2ZyYW1lOiAlTWthbF9ib29sIgoraW5mbyAgICAgICAgICAgICAgRU1CTVNfTE9HX01CU0ZOX1NGX0NPTkZJR19TRl9MSVNUX0lORk8gICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtNQk1TXVtDRkddIE1CU0ZOIFNGIExJU1RbJXViXTogJXViLCAldWIsICV1YiwgJXViLCAldWIsICV1YiIKK2luZm8gICAgICAgICAgICAgIEVNQk1TX0xPR19NQ0NIX1NGX0xJU1RfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRU1BQ11bTUJNU11bQ0ZHXSBNQ0NIIFNGIG51bTogJXViLCBMSVNUOiAldWIsICV1YiwgJXViLCAldWIsICV1YiwgJXViIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVNQUNETCBUQVNLOiA2MjkzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gV0FSTgord2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX1dBUl9fX1BSSU5UX0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW1RdW1dBUk5dICVNZW1hY21jaF9sb2dfZSIKKworLy8gRXJyb3IKK2Vycm9yICAgICAgICAgICAgIEVNQUNNQ0hfVF9FUlJfX19QUklOVF9FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0VSUk9SX0ggICAgICJbRU1BQ11bTUNIXVtUXVtFUlJPUl0gJU1lbWFjbWNoX2xvZ19lIgorCisvLyBEZWJ1Zword2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX0RCR19fX1BSSU5UX0UxX0k0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0xPR10gICVNZW1hY21jaF9sb2dfZSAlbCwgJWwsICVsLCAlbCIKKworLy8gR2VuZXJhbAoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1BSSU5UX0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0xPR10gICVNZW1hY21jaF9sb2dfZSIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19QUklOVF9CWVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtMT0ddICAleGIiCisKKy8vIEluaXQKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJRl0gICBJbml0IgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0NNUExfREFURSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0lORk9dIGNtcGxfZGF0ZT0lYyVjJWMvJWMlYyIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19DTVBMX1RJTUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTkZPXSBjbXBsX3RpbWU9JWMlYzolYyVjOiVjJWMiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fQ1VSUl9USU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bSU5GT10gY3Vycl90aW1lPSV1bC8ldWwvJXVsICV1bDoldWw6JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0lOSVRfR19FTUFDTUNIX1RBU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0lOSVRdIEluaXQgZ19lbWFjbWNoX3Rhc2siCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fSU5JVF9HX0VNQUNNQ0hfQ01OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjJfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bSU5JVF0gSW5pdCBnX2VtYWNtY2hfY21uIgorCisKKy8vIFJlc2V0CitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bSUZdICAgUmVzZXQiCisKKy8vIFN1c3BlbmQKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TVVNQRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJRl0gICBTdXNwZW5kOiB0cmFuc19waWQ9JXViLCBhY3RpdmVfcGlkPSV1YiIKKworLy8gSUxNIFN5bmNhcmVhIGNmZyByZXEgKFJSQykKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SQ1ZfU0FfQ0ZHX1JFUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBSY3YgU0FfQ0ZHX1JFUTogYWN0aXZlX3BpZHg9JXViLCB0cmFuc19waWR4PSV1YiwgY2ZnX3ZhbGlkPVslTWthbF9ib29sLCAlTWthbF9ib29sXSwgdGlkPSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TTkRfU0FfQ0ZHX0NORiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBTbmQgU0FfQ0ZHX0NORjogcmVzdWx0PSVNZXJyY19lbDJfY2ZnX3Jlc3VsdF9lbnVtIgorCisvLyBJTE0gQXJlYSBjZmcgcmVxIChSUkMpCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fUkNWX0FfQ0ZHX1JFUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bSUxNXSAgUmN2IEFfQ0ZHX1JFUTogYWN0aXZlX3BpZHg9JXViLCB0cmFuc19waWR4PSV1YiwgY2ZnX3ZhbGlkPVslTWthbF9ib29sLCAlTWthbF9ib29sXSwgdGlkPSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TTkRfQV9DRkdfQ05GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBTbmQgQV9DRkdfQ05GOiByZXN1bHQ9JU1lcnJjX2VsMl9jZmdfcmVzdWx0X2VudW0iCisKKy8vIElMTSBNeGNoIGNmZyByZXEgKFJSQykKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SQ1ZfTVhDSF9DRkdfUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBSY3YgTVhDSF9DRkdfUkVROiBhY3RpdmVfcGlkeD0ldWIsIHRyYW5zX3BpZHg9JXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1NORF9NWENIX0NGR19DTkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0lMTV0gIFNuZCBNWENIX0NGR19DTkY6IHJlc3VsdD0lTWVycmNfZWwyX2NmZ19yZXN1bHRfZW51bSIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SRUxFQVNFX1RNR0kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtNWENIXSBSZWxlYXNlIE1UQ0g6ICAgdG1naT1bJXhiICV4YiAleGIgJXhiICV4YiAleGJdIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0VTVEFCTElTSF9UTUdJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW01YQ0hdIEVzdGFibGlzaCBNVENIOiB0bWdpPVsleGIgJXhiICV4YiAleGIgJXhiICV4Yl0iCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fQUNUSVZFX01DQ0hfTlVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bTVhDSF0gYWN0aXZlX21jY2hfbnVtPSV1YiIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19BQ1RJVkVfTVRDSF9OVU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtNWENIXSBhY3RpdmVfbXRjaF9udW09JXViIgorZXJyb3IgICAgICAgICAgICAgRU1BQ01DSF9UX0VSUl9fX01DQ0hfTk9UX0ZPVU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfRVJST1JfSCAgICAgIltFTUFDXVtNQ0hdW1RdW01YQ0hdW0VSUk9SXSBDYW5ub3QgZmluZCBtY2NoX2lkeCIKK2Vycm9yICAgICAgICAgICAgIEVNQUNNQ0hfVF9FUlJfX19NVENIX05PVF9GT1VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0VSUk9SX0ggICAgICJbRU1BQ11bTUNIXVtUXVtNWENIXVtFUlJPUl0gQ2Fubm90IGZpbmQgbXRjaF9pZHgiCisKKy8vIElMTSBNY2NoIHJjdiBtb2RlIGNoYW5nZSByZXEgKFJSQykKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SQ1ZfTUNDSF9STUNfUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBSY3YgTUNDSF9STUNfQ0ZHX1JFUShSUkMpOiBhY3RpdmVfcGlkeD0ldWIsIHRyYW5zX3BpZHg9JXViLCBjZmdfdmFsaWQ9WyVNa2FsX2Jvb2wsICVNa2FsX2Jvb2xdLCB0aWQ9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1NORF9NQ0NIX1JNQ19DTkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0lMTV0gIFNuZCBNQ0NIX1JNQ19DRkdfQ05GOiByZXN1bHQ9JU1lcnJjX2VsMl9jZmdfcmVzdWx0X2VudW0iCisKKy8vIElMTSBNY2NoIHJjdiBtb2RlIGNoYW5nZSBpbmQgKEVMMSkKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SQ1ZfTUNDSF9STUNfSU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBSY3YgTUNDSF9STUNfSU5EX1JFUShFTDEpOiBhY3RpdmVfcGlkeD0ldWIsIHRyYW5zX3BpZHg9JXViLCBzYWlkPSV1YiwgdGlkPSV1bCIKKworLy8gSUxNIFBvbGwgcmVxIChFTUFDREwpCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fUkNWX1BPTExfUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bSUxNXSAgUmN2IFBPTExfUkVROiBhY3RpdmVfcGlkeD0ldWIsIHRyYW5zX3BpZHg9JXViLCBjZWxsX3RpbWVfY250PSV1bCwgYWJzX3RpbWU9JXVsIgorCisvLyAtIERldGVjdCBNQ0ggbm90IHJlY2VpdmVkCit3YXJuICAgICAgICAgICAgICBFTUFDTUNIX1RfV0FSX19fTUNIX05PVF9SQ1YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bVF1bV0FSTl0gTUNIIG5vdCByZWNlaXZlZDogY2VsbF90aW1lPSV1bCwgYWJzX3RpbWU9JXVsLCBzYWlkPSV1YiwgYWlkPSV1YiwgcG1jaF9pZD0ldWIsIGlzX21jY2hfb2NjYXNpb249JU1rYWxfYm9vbCwgaW50cl9jaD0lTWVtYWNtY2hfY2hfZ3JvdXBfZSIKKworLy8gLSBQcmUtc2NoZWR1bGUKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TVEFSVF9QUkVfU0NIRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQUkVTXSBTdGFydCBwcmUtc2NoZWQgcHJvY2Vzczogc2FpZD0ldWIiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fQ09ORElUSU9OX0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjJfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUFJFU10gTWVldCBjb25kaXRpb24gQTogcG9sbCB0aW1lIDw9IGxhc3QgcHMgdGltZSIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19DT05ESVRJT05fQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQUkVTXSBNZWV0IGNvbmRpdGlvbiBCOiBsYXN0IHBzIHRpbWUgPCBwb2xsIHRpbWUgPCBsYXN0IHBzIHRpbWUgKyA1MTIwIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0NPTkRJVElPTl9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BSRVNdIE1lZXQgY29uZGl0aW9uIEM6IHBvbGwgdGltZSA+PSBsYXN0IHBzIHRpbWUgKyA1MTIwIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1VQREFURV9TQ0hFRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BSRVNdIFVwZGF0ZSBzY2hlZCgpIGlucHV0OiBzYWlkPSV1YiwgY2xlYXJfc3RvcmVkX2luZm89JU1rYWxfYm9vbCwgY2VsbF90aW1lPSV1bCwgYWJzX3RpbWU9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1NDSEVEVUxFX05FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BSRVNdIFNjaGVkdWxlIG5leHQoKSBpbnB1dDogc2FpZD0ldWIsIGFic190aW1lPSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19GSUxMX1BTUV9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQUkVTXSBGaWxsIFBTUTogc2FpZD0ldWIsIGFpZD0ldWIsIHBtY2hfaWQ9JXViLCBzZl9pZHhfaW5fbXNwPSV1ZCwgbWNjaF9tcF9pZD0ldWIiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fRklMTF9QU1FfQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUFJFU10gRmlsbCBQU1E6IGludHJfY2g9JU1lbWFjbWNoX2NoX2dyb3VwX2UsIGlzX21jY2hfb2NjYXNpb249JU1rYWxfYm9vbCwgbWNzPSV1Yiwgbm9uX21ic2ZuX3JlZ2lvbl9sZW49JXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0ZJTExfUFNRX0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BSRVNdIEZpbGwgUFNROiBnZW1pbmlfcHJpb3JpdHk9JU1lbDFfZW1ibXNfZ2VtaW5pX3ByaW9yaXR5X2VudW0sIGF0bV9maWx0ZXJvdXQ9JXVsLCBhdG1fbWNoX3JlbGlhYmxlPSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19GSUxMX1BTUV9EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQUkVTXSBGaWxsIFBTUTogY2VsbF90aW1lPSV1bCwgYWJzX3RpbWU9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0VOT1VHSF9WQUxJRF9QU19OVU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BSRVNdIEVub3VnaCB2YWxpZF9wc19udW0gb3IgbGFyZ2UgdGltZSBkaWZmIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1NUT1RfUFJFX1NDSEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BSRVNdIFN0b3AgcHJlLXNjaGVkIHByb2Nlc3MiCit3YXJuICAgICAgICAgICAgICBFTUFDTUNIX1RfV0FSX19fQ0FOTk9UX0ZJTkRfQ0FORElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bVF1bUFJFU11bV0FSTl0gQ2Fubm90IGZpbmQgYW55IGNhbmRpZGF0ZSIKKworCisvLyAtIEdldCBQRFUgaW5mbyBmcm9tIEhTUQoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1RSQVZFUlNFX0hTUV9CRUZPUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV0gIEJlZm9yZSB0cmF2ZXJzZSBIU1E6IGF0bV9oc3Ffcl9pZHg9JXVsLCBhdG1faHNxX3dfaWR4PSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19IU19GT1VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBIUyBmb3VuZDogaHNfaWR4PSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19QRFVfSU5GT19CWV9IU19BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBIUzogYWlkPSV1YiwgcG1jaF9pZD0ldWIsIG1jY2hfbXBfaWQ9JXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1BEVV9JTkZPX0JZX0hTX0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV0gIEhTOiBpbnRyX2NoPSVNZW1hY21jaF9jaF9ncm91cF9lLCBpc19tY2NoX29jY2FzaW9uPSVNa2FsX2Jvb2wiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fUERVX0lORk9fQllfSFNfQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUERVXSAgSFM6IHNlc3Npb25fbnVtX2luX3BtY2g9JXViLCBpc19jZmdfcG1jaF9pbmZvX2xpc3RfZXh0PSVNa2FsX2Jvb2wiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fVFJBVkVSU0VfSFNRX0FGVEVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUERVXSAgQWZ0ZXIgdHJhdmVyc2UgSFNROiBhdG1faHNxX3JfaWR4PSV1bCwgYXRtX2hzcV93X2lkeD0ldWwiCit3YXJuICAgICAgICAgICAgICBFTUFDTUNIX1RfV0FSX19fSFNfTk9UX0ZPVU5EX0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bVF1bUERVXVtXQVJOXSBIUyBub3QgZm91bmQ6IGhzIGFic190aW1lID4gcGR1IHJjdl9hYnNfdGltZSIKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19IU19OT1RfRk9VTkRfQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIEhTIG5vdCBmb3VuZDogbm8gaHMgbWF0Y2giCit3YXJuICAgICAgICAgICAgICBFTUFDTUNIX1RfV0FSX19fVU5LTk9XTl9QRFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bVF1bUERVXVtXQVJOXSBVbmtub3duIFBEVTogY2Fubm90IGZpbmQgdGhlIGFzc29jaWF0ZWQgSFMiCisKKworLy8gLSBQcm9jZXNzIE1TSSBDRQord2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX1dBUl9fX01TSV9JR05PUkVfQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV1bV0FSTl0gTVNJIGlzIGlnbm9yZWQgYmVjYXVzZSBpbnRyX2NoIGRvZXMgbm90IGluY2x1ZGUgTVRDSCIKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19NU0lfSUdOT1JFX0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIE1TSSBpcyBpZ25vcmVkIGJlY2F1c2UgaXQgbG9jYXRlcyBhZnRlciBNU0kgb3IgTUNDSCBvciBNVENIIgord2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX1dBUl9fX01TSV9JR05PUkVfQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV1bV0FSTl0gTVNJIGlzIGlnbm9yZWQgYmVjYXVzZSBtc2kgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHNlc3Npb24gbnVtOiBtc2lfbGVuPSV1Yiwgc2Vzc2lvbl9udW09JXViIgord2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX1dBUl9fX01TSV9JR05PUkVfUEFJUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV1bV0FSTl0gTVNJOiBzY2hlZHVsZSBwYWlyIGlzIGlnbm9yZWQgYmVjYXVzZSBNVENIIGlzIG5vdCBhY3RpdmF0ZWQgb3IgcmVzZXJ2ZWQgc3RvcF9tdGNoIgord2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX1dBUl9fX1VQREFURV9NU0lfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV1bV0FSTl0gVXBkYXRlIG1zaSgpIGZhaWxlZDogSWdub3JlIHRoaXMgTVNJIgorCisvLyAtIFByb2Nlc3MgTVNJIENFIGZvciBNVENIIHN1c3BlbmQKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TTkRfTVRDSF9TVVNfSU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBTbmQgTVRDSF9TVVNQRU5EX0lORDogc2FpZD0ldWIsIGFpZD0ldWIsIHBtY2hfaWQ9JXViLCBzdXNwZW5kX210Y2hfbnVtPSViIgorCisvLyAtIFByb2Nlc3MgTVNJIENFIGZvciBNQ0ggcmVsaWFiaWxpdHkgYW5kIFBTIGZpbHRlcm91dCAKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TRVRfTUNIX1JFTElBQkxFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBNU0k6IFNldCBtY2ggcmVsaWFibGUgdG8gcHNfaWR4PSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TRVRfUFNfRklMVEVST1VUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBNU0k6IFNldCBwcyBmaWx0ZXJvdXQgdG8gcHNfaWR4PSV1bCIKKworLy8gLSBQcm9jZXNzIE1DQ0gKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19NQ0NIX0lHTk9SRV9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIE1DQ0ggaXMgaWdub3JlZCBiZWNhdXNlIG1jY2hfaWR4IG5vdCBmb3VuZCIKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19NQ0NIX0lHTk9SRV9CICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIE1DQ0ggaXMgaWdub3JlZCBiZWNhdXNlIGludHJfY2ggbm90IGluY2x1ZGUgTUNDSCIKKworLy8gLSBQcm9jZXNzIE1UQ0gKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19NVENIX0lHTk9SRV9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIE1UQ0hzIGFyZSBhbGwgaWdub3JlZCBiZWNhdXNlIGludHJfY2ggbm90IGluY2x1ZGUgTVRDSCIKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19NVENIX0lHTk9SRV9CICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIE1UQ0ggaXMgaWdub3JlZCBiZWNhdXNlIG10Y2hfaWR4IG5vdCBmb3VuZCAobm90IGludGVyZXN0ZWQgbnkgVUUpIgord2FybiAgICAgICAgICAgICAgRU1BQ01DSF9UX1dBUl9fX01UQ0hfSUdOT1JFX0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV1bV0FSTl0gTVRDSCBpcyBpZ25vcmVkIGJlY2F1c2UgbGNpZD0zMShwYWQpIG9yIGxjaWQ9MjkocnN2KSIKK3dhcm4gICAgICAgICAgICAgIEVNQUNNQ0hfVF9XQVJfX19NVENIX0lHTk9SRV9EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdW1dBUk5dIE1UQ0ggaXMgaWdub3JlZCBiZWNhdXNlIGxjaWQgb3V0IG9mIHJhbmdlIgorCisKKy8vIFBTUQoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1BTUV9JRFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BTUV0gIFBTUTogYXRtX3BzcV9pZHg9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1BTUV9SV19JRFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BTUV0gIFBTUTogYXRtX3BzcV9yX2lkeD0ldWwsIGF0bV9wc3Ffd19pZHg9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0RJU0FCTEVfUFNRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BTUV0gIERpc2FibGUgUFNRIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1NXQVBfUFNRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BTUV0gIFN3YXAgUFNRIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1BTUV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BTUV0gIFBTUTogYXRtX3BzcV9pZHg9JXVsLCBhdG1fcHNxX3JfaWR4PSV1bCwgYXRtX3BzcV93X2lkeD0ldWwsIHZhbGlkX3BzX251bT0ldWwiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fUFNRX0VNUFRZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUFNRXSAgUFNRIGlzIGVtcHR5IgorZXJyb3IgICAgICAgICAgICAgRU1BQ01DSF9UX0VSUl9fX1BTUV9GVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfRVJST1JfSCAgICAgIltFTUFDXVtNQ0hdW1RdW1BTUV1bRVJST1JdIFBTUSBpcyBmdWxsIgorCisvLyBIU1EKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19IU1FfUldfSURYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtIU1FdICBIU1E6IGF0bV9oc3Ffcl9pZHg9JXVsLCBhdG1faHNxX3dfaWR4PSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19DTEVBUl9IU1EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtIU1FdICBDbGVhciBhbGwgSFNRIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0NMRUFSX0hTUV9CRUZPUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0hTUV0gIEJlZm9yZSBjbGVhciBIU1E6IHNhaWQ9JXViLCBhdG1faHNxX3JfaWR4PSV1bCwgYXRtX2hzcV93X2lkeD0ldWwiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fQ0xFQVJfSFNRX0FGVEVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bSFNRXSAgQWZ0ZXIgY2xlYXIgSFNROiAgc2FpZD0ldWIsIGF0bV9oc3Ffcl9pZHg9JXVsLCBhdG1faHNxX3dfaWR4PSV1bCIKKworLy8gVElECitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fVVBEQVRFX1JSQ19USUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bVElEXSAgVXBkYXRlIFJSQyBUSUQ6IGF0bV9ycmNfdGlkPSV1bCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19VUERBVEVfRUwxX1RJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtUSURdICBVcGRhdGUgRUwxIFRJRDogYXRtX2VsMV90aWQ9JXVsIgorCisvLyBNU0lNIChMK0wpCit3YXJuICAgICAgICAgICAgICBFTUFDTUNIX1RfV0FSX19fUElEWF9NSVNNQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bVF1bTCtMXVtXQVJOXSBwaWR4IG1pc21hdGNoOiBhY3RpdmVfcGlkeD0ldWIsIHRyYW5zX3BpZHg9JXViIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFJYTElTUjogNjI5MworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vIFdBUk4KK3dhcm4gIChub25fc21wKSAgIEVNQUNNQ0hfTF9XQVJfX19QUklOVF9FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtMXVtXQVJOXSAlTWVtYWNtY2hfbG9nX2UiCisKKy8vIFF1ZXJ5IG5leHQgbWNoCisKK2luZm8gIChub25fc21wKSAgIEVNQUNNQ0hfTF9MT0dfX19RVUVSWV9PVVRQVVRfQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtMXVtRVVJZXSBuZXh0IG1jaDogdGlkPSV1bCBlbDFfdGlkPSV1bCBycmNfdGlkPSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNNQ0hfTF9MT0dfX19RVUVSWV9PVVRQVVRfRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtMXVtRVVJZXSBuZXh0IG1jaDogZ2VtaW5pX3ByaW9yaXR5PSVNZWwxX2VtYm1zX2dlbWluaV9wcmlvcml0eV9lbnVtIgorCit3YXJuICAobm9uX3NtcCkgICBFTUFDTUNIX0xfV0FSX19fUVVFUllfRkFJTFVSRV9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bTF1bV0FSTl0gbmV4dCBtY2ggZmFpbCBkdWUgdG8gb25nb2luZyBjb25maWd1cmF0aW9uIGluIHRhc2soVC0+TCkuIHBzcV9pZHg9JXVsIgord2FybiAgKG5vbl9zbXApICAgRU1BQ01DSF9MX1dBUl9fX1FVRVJZX0ZBSUxVUkVfQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW0xdW1dBUk5dIG5leHQgbWNoIGZhaWwgZHVlIHRvIGVtcHR5IFBTUS4iCit3YXJuICAobm9uX3NtcCkgICBFTUFDTUNIX0xfV0FSX19fUVVFUllfRkFJTFVSRV9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bTF1bV0FSTl0gbmV4dCBtY2ggZmFpbCBkdWUgdG8gb25nb2luZyBjb25maWd1cmF0aW9uIGluIHRhc2soTC0+VCkuIgord2FybiAgKG5vbl9zbXApICAgRU1BQ01DSF9MX1dBUl9fX1FVRVJZX0ZBSUxVUkVfRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfV0FSTl9IICAgICAgIltFTUFDXVtNQ0hdW0xdW1dBUk5dIG5leHQgbWNoIGZhaWwgZHVlIHRvIG5vIHZhbGlkIFBTLiIKK3dhcm4gIChub25fc21wKSAgIEVNQUNNQ0hfTF9XQVJfX19RVUVSWV9GQUlMVVJFX0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX1dBUk5fSCAgICAgICJbRU1BQ11bTUNIXVtMXVtXQVJOXSBRVUVSWV9ORVhUX01DSCBpcyByZWNlaXZlZCBidXQgYWN0aXZlX3BpZHg9SU5WQUxJRC4iCit3YXJuICAobm9uX3NtcCkgICBFTUFDTUNIX0xfV0FSX19fUVVFUllfRkFJTFVSRV9GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW01DSF1bTF1bV0FSTl0gbmV4dCBtY2ggZmFpbCBkdWUgdG8gYWN0aXZlX3BpZHggYW5kIGlucHV0X3BpZHggbWlzbWF0Y2guIgorCisvLyBQU1EKK2luZm8gIChub25fc21wKSAgIEVNQUNNQ0hfTF9MT0dfX19QU1FfSURYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtMXVtQU1FdICBQU1E6IGF0bV9wc3FfaWR4PSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNNQ0hfTF9MT0dfX19QU1FfUldfSURYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtMXVtQU1FdICBQU1E6IGF0bV9wc3Ffcl9pZHg9JXVsIGF0bV9wc3Ffd19pZHg9JXVsIgorCisvLyBIU1EKK2luZm8gIChub25fc21wKSAgIEVNQUNNQ0hfTF9MT0dfX19IU1FfUldfSURYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtMXVtIU1FdICBIU1E6IGF0bV9oc3Ffcl9pZHg9JXVsIGF0bV9oc3Ffd19pZHg9JXVsIgorZXJyb3IgKG5vbl9zbXApICAgRU1BQ01DSF9MX0VSUl9fX0hTUV9GVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfRVJST1JfSCAgICAgIltFTUFDXVtNQ0hdW0xdW0hTUV1bRVJST1JdIEhTUSBpcyBmdWxsIgorCisvLyBGb3JtYXQ6CisvLyAlLTV1YyA9PiBjaGFyCisvLyAgICB4YiA9PiAxIGJ5dGVzCisvLyAgICAgZCA9PiAyIGJ5dGVzCisvLyAgICAgZiA9PiAzIGJ5dGVzCisvLyAgICAgbCA9PiA0IGJ5dGVzCisvLyAgICAgbSA9PiBlbnVtCisvLyAgICAgcyA9PiBzdHJpbmcKKy8vCisvLyAtICAgICA9PiBsZWZ0IGFsaWdubWVudCAKKy8vIDUgICAgID0+IHdpZHRoCisvLyB1fHggICA9PiB1bnNpZ25lZHxoZXggZGlzcGxheSBtb2RlCisKKy8vIEJpdCBkZWNvZGluZzoKKy8vICUtNXVjOjMgID0+IGNoYXIKKy8vICAgIHhiICAgID0+IDEgYnl0ZXMKKy8vICAgIHNkICAgID0+IDIgYnl0ZXMKKy8vICAgIHBsICAgID0+IDQgYnl0ZXMKKy8vCisvLyAtICAgICAgICA9PiBsZWZ0IGFsaWdubWVudCAKKy8vIDUgICAgICAgID0+IHdpZHRoCisvLyB1fHh8c3xwICA9PiB1bnNpZ25lZHxoZXh8c3RyaW5nfHBhYWRkaW5nCisvLyBjfGJ8ZHxsICA9PiBjaGFyfDFieXRlc3wyYnl0ZXN8NGJ5dGVzCisvLyA6MyAgICAgICA9PiBiaXQgbGVuZ3RoCisKKy8vIEV4YW1wbGU6IEJpdCBkZWNvZGluZworLy8gIlg9JXViOjIgJXBiOjMgWT0ldWI6MyIgICAgICAgICAgYjcgYjYgYjUgYjQgYjMgYjIgYjEgYjAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUjogfCAgIFkgICAgfCAgUlNWICAgfCAgWCAgfAorCisvLyBFeGFtcGxlOiBrYWxfYm9vbAorLy8gImlzX29uZV9mcmFtZSA9ICVNa2FsX2Jvb2wiCisKKy8vIEV4YW1wbGU6IGVudW0KKy8vICJsY2dfYnVmX2luY19vcHQgPSAlTWVtdXhfcmJfZ3JvdXBfZSIKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZW1hY190cmFjZV9pbnRlcm5hbC50bWQgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfaW50ZXJuYWwudG1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YmQ4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfaW50ZXJuYWwudG1kCkBAIC0wLDAgKzEsMTMyIEBACitbRGVmYXVsdF0KK0VNQUNfSU5URVJOQUwKK09uCitMMl9CdWZmZXIKK1RDTUZPUkNFCitNQVhfQVJHIDE1CitMMl9CVUZGRVJfU0VUVElORyBMMl9CVUZGRVJfRUwyCisKK1tNb2RlbV9UeXBlXQorTFRFX0wyCisKK1tDbGFzc10KK0VNQUNfTFYxX0ggICAgT04gIC8vIEludGVybmFsIHVzZSAoYmFzaWMgaW5mb3JtYXRpb24pCitFTUFDX0xWMl9IICAgIE9OICAvLyBJbnRlcm5hbCB1c2UgKG1vcmUgaW5mb3JtYXRpb24pCitFTUFDX0xWM19IICAgIE9OICAvLyBJbnRlcm5hbCB1c2UgKGRldGFpbCkKK0VNQUNfV0FSTl9IICAgT04gIC8vIEludGVybmFsIHVzZQorRU1BQ19FUlJPUl9IICBPTiAgLy8gSW50ZXJuYWwgdXNlCitFTUFDX0RFQlVHX0ggIE9OICAvLyBGb3IgdGVtcCBsb2cKKworW1N0cmluZ10KKworW01lc3NhZ2VdCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRU1VWAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0NBQ0hFX0ZMVVNIX01VWF9CVUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW0VNVVhdW1RCXSAgQ2FjaGUgZmx1c2ggZm9yIG11eF9idWYiCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0NBQ0hFX0ZMVVNIX1BBRF9CVUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW0VNVVhdW1BBRF0gQ2FjaGUgZmx1c2ggZm9yIHBhZF9idWYiCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX1NZU1RFTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lORk9dIFN5c3RlbTogIExWMV9DQUNIRT0ldWIsIExWMl9DQUNIRT0ldWIiICAKKworLy8gTVVYIChGaWxsIERTQykKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fRklMTF9JQl9DT1RGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRU1VWF1bRFNDXSBGaWxsIElCIENPVEYgICA9WyV4bCAleGwgJXhsXSIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fRklMTF9JQl9UTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRU1VWF1bRFNDXSBGaWxsIElCIFRNICAgICA9WyV4bCAleGxdIgoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19GSUxMX05NX01VWEJVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYzX0ggICAgICAgIltFTUFDXVtFTVVYXVtEU0NdIEZpbGwgTk0gTVVYQlVGID1bJXhsICV4bF0iCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0ZJTExfUkxDX0RTQ1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW0VNVVhdW0RTQ10gRmlsbCBSTEMgRFNDcyIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fRklMTF9OTV9QQURCVUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRU1VWF1bRFNDXSBGaWxsIE5NIFBBREJVRiA9WyV4bCAleGxdIgoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19RUF9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYzX0ggICAgICAgIltFTUFDXVtFTVVYXVtEU0NdIFFQIFN0YXJ0OiB3cml0ZV9pbmNfbnVtPSV1ZCIKKworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVNQUNETAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1JYX1BST0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW0RMXVtQb2xsXSByY3YgUG9sbCBhdCBhYnMgJXVsLCBjZWxsX2NudCAldWQsIERMIExNQUMgcl9pZHggJXVkLCB3X2lkeCAldWQiCisKK2luZm8gICAgICAgICAgICAgIEVNQUNETF9MT0dfUkNWX0xNQUNfUkFSX0lOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRExdW0lOVF0gcmN2IExNQUMgUkFSIGludGVycnVwdCwgbm90aWZ5IEVNQUNETCIKK2luZm8gICAgICAgICAgICAgIEVNQUNETF9MT0dfUkNWX0xNQUNfVENfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRU1BQ11bRExdW0lOVF0gcmN2IExNQUMgVEMtUk5USSBpbnRlcnJ1cHQsIG5vdGlmeSBFTUFDREwiCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1JDVl9MTUFDX0RBVEFfUkVBRFlfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjNfSCAgICAgICAiW0VNQUNdW0RMXVtJTlRdIHJjdiBMTUFDIERhdGEgUmVhZHkgaW50ZXJydXB0LCBub3RpZnkgRU1BQ0RMIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIE1DSAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBWUkIgKERMIFJMQykKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SRUxFQVNFX1ZSQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtWUkJdIFJlbGVhc2UgUkxDIERMIFZSQjogYWRkcj0leGwsIGxlbj0ldWwiCisKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBFTDJQT1cKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgICAgICAgICAgICBFTDJQT1dfTE9HX1JDVl9FTDFfUE9XRVJfT05fUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjJfSCAgICAgICAiW0VMMlBPV10gUmN2IG9uX3JlcSBmcm9tICBFTDEsICBjYXVzZSAlTWVsMV9wb3dlcl9vbl9jYXVzZV9lLCBvbGRfYm1wICV1bCIKK2luZm8gICAgICAgICAgICAgRUwyUE9XX0xPR19SQ1ZfUE9XRVJfT05fUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTDJQT1ddIFJjdiBvbl9yZXEgZnJvbSAgJU1lbDJwb3dfdXNlcl9ldmVudF9lLCAgb2xkX2JtcCAldWwiCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfUkNWX0VMMV9QT1dFUl9PRkZfUkVRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9ICSAgIltFTDJQT1ddIFJjdiBvZmZfcmVxIGZyb20gIEVMMSwgIGNhdXNlICVNZWwxX3Bvd2VyX29mZl9jYXVzZV9lLCBjdXJfYm1wICV1bCIKK2luZm8gICAgICAgICAgICAgRUwyUE9XX0xPR19SQ1ZfUE9XRVJfT0ZGX1JFUQkJCQkJIEVNQUNfTFYxX0gJICAiW0VMMlBPV10gUmN2IG9mZl9yZXEgZnJvbSAgJU1lbDJwb3dfdXNlcl9ldmVudF9lLCAgY3VyX2JtcCAldWwiCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfUE9XRVJfT04gICAgCQkJCQkgRU1BQ19MVjFfSAkgICJbRUwyUE9XXSA8Q29wcm8gb24+ICBieSAlTWVsMnBvd191c2VyX2V2ZW50X2UiCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfUE9XRVJfT0ZGX1BFTkRJTkcJCQkJCSBFTUFDX0xWMV9ICSAgIltFTDJQT1ddIDxDb3BybyBvZmYgcGVuZGluZz4gIGJ5ICVNZWwycG93X3BlbmRpbmdfY2hrX2UiCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfUE9XRVJfT0ZGX1BFTkRJTkdfT05FX01PUkVfVElDSwkJCSBFTUFDX0xWMV9ICSAgIltFTDJQT1ddIDxDb3BybyBvZmYgcGVuZGluZz4gIG9mZiByZWFkeSwgd2FpdCBmb3Igb25lIG1vcmUgdGljayIKK2luZm8gICAgICAgICAgICAgRUwyUE9XX0xPR19QT1dFUl9PRkYgICAgICAgIAkJCQkJIEVNQUNfTFYxX0gJICAiW0VMMlBPV10gPENvcHJvIG9mZj4iCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfVElDS19PRkZfUEVORElORwkJCQkgICAgICAgICBFTUFDX0xWMV9ICSAgIltFTDJQT1ddIDxUaWNrIG9mZiBwZW5kaW5nPiAgYnkgJU1lbDJwb3dfcGVuZGluZ19jaGtfZSIKK2luZm8gICAgICAgICAgICAgRUwyUE9XX0xPR19USUNLX09GRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTDJQT1ddIDxUaWNrIG9mZj4iCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfVElDS19PTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRUwyUE9XXSA8VGljayBvbj4iCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfUkNWX1RJQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWM19IICAgICAgICJbRUwyUE9XXSBSY3YgVGljayAldWIsIGV4cGVjdCAldWIiCitpbmZvICAgICAgICAgICAgIEVMMlBPV19MT0dfUkNWX0VMMV9TQ0hfQ0xPU0VfUlhCUlBfSURMRSAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMV9IICAgICAgICJbRUwyUE9XXSBFTDEgbm90aWZ5IFNDSCBjbG9zZSBhbmQgUlhCUlAgaWRsZSIKK2luZm8gICAgICAgICAgICAgRUwyUE9XX0xPR19SQ1ZfTE1BQ19IQVJRX1JFU0VUX1JFUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTDJQT1ddIFJjdiBMTUFDIEhBUlEgcmVzZXQgcmVxIGZyb20gRU1BQyIKK2luZm8JCQkgRUwyUE9XX0xPR19SQ1ZfVkFfU0hPUlRBR0VfTlRGICAgICAJCQkJCQkJIEVNQUNfTFYyX0gJCSJbRUwyUE9XXSBSY3YgREwgTUFDIFZSQiBWQSBzaG9ydGFnZSBudGYsIGFkZHI9JXhsIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVMMkVNCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gICAgICAgICAgICAgRUwyRU1fTE9HX1VQREFURV9QRVJfRU1fU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTDJFTV0gJU1lbDJlbV9lbV90eXBlX2Ugc3RhdHVzIHVwZGF0ZSB0byAlTWVtX2luZm9fc3RhdHVzX2VudW0iCitpbmZvICAgICAgICAgICAgIEVMMkVNX0xPR19DVVJfUEVSX0VNX1RZUEVfQk1QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRUwyRU1dICVNZWwyZW1fZW1fdHlwZV9lIGN1cnJlbnQgc3RhdHVzICV1YiIKK2luZm8gICAgICAgICAgICAgRUwyRU1fTE9HX0NVUl9QRVJfUkVHX1NSQ19CTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTDJFTV0gJU1lbDJlbV9yZWdfc3JjX2UgY3VycmVudCBibXAgJXVkLCBjdXJyZW50IHBlcmlvZGljIGJtcCAldWQiCitpbmZvICAgICAgICAgICAgIEVMMkVNX0xPR19EVU1NWTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRUwyRU1dIGR1bW15IGxvZyAldWwsICV1bCwgJXVsLCAldWwiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRUwySUNECisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gICAgICAgRUwySUNEX0xPR19DVFJMX05URiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYyX0ggICAgICAgIltFTDJJQ0RdIGN0cmwgY2F1c2UgJU1lbDJpY2RfY3RybF9jYXVzZV9lLCB0byB0YXNrICVNZWwyaWNkX3Rhc2tfZSIKK2luZm8JICAgRUwySUNEX0xPR19UTVJfTlRGCQkJCQkJICAgRU1BQ19MVjJfSAkJIltFTDJJQ0RdIHRtciBwZXJpb2QgJU1lbDJpY2RfcGVyaW9kX2UgZXhwaXJlLCB0byB0YXNrICVNZWwyaWNkX3Rhc2tfZSIKK2luZm8JICAgRUwySUNEX0xPR19EVU1NWTQJCQkJCQkgICBFTUFDX0xWMl9ICQkiW0VMMklDRF0gZHVtbXkgbG9nICV1bCwgJXVsLCAldWwsICV1bCIKK2luZm8JICAgRUwySUNEX0xPR19TUFNfRExfVEJfSU5GTwkJCQkgICAgICAgICAgIEVNQUNfTFYyX0gJCSJbRUwySUNEXSBTUFMgREwgSU5GTzogY2VsbF90aW1lX2NudD0ldWwsIGRsX2hhcnFfaWQ9JXViIgorZXJyb3IgICAgICBFTDJJQ0RfTE9HX1JFQ09SRF9MT0dHSU5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjJfSCAgICAgICAiW0VMMklDRF0gSUNEIHJlY29yZCAldWQ6IGxvZ2dpbmcgZXJyb3IgJXViLCBpY2RfcHJvdG9jb2xfaWQgJXViLCBwdHIgJXVsLCBsZW4vbnVtICV1ZCIKK2Vycm9yCSAgIEVMMklDRF9MT0dfRVZFTlRfTE9HR0lOR19FUlJPUgkJICAgICAJCSAgIEVNQUNfTFYyX0gJCSJbRUwySUNEXSBJQ0QgZXZlbnQgJXVkOiBsb2dnaW5nIGVycm9yICV1YiwgaWNkX3Byb3RvY29sX2lkICV1YiwgcHRyICV1bCwgbGVuL251bSAldWQiCitlcnJvciAgICAgIEVMMklDRF9MT0dfUkVHSVNURVJfQ0JfRkFJTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMl9IICAgICAgICJbRUwySUNEXSBTWVNURU1fTlRGIENCIHJlZ2lzdGVyIGZhaWwiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRU1BQyBjb25maWcKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVMMkRWRlMKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQord2FybiAgICAgICAgICAgICAgRUwyRFZGU19NQ1VfR0VBUl9OT1RfTUVFVF9SRVFVSVJFTUVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VMMkRWRlNdIE1DVSBnZWFyIG5vdCBtZWV0IGVsMiByZXF1aXJlbWVudCEgY3VycmVudF9tZF9nZWFyPSV1bCwgZWwyX2dlYXI9JXVsIgoraW5mbyAgICAgICAgICAgICAgRUwyRFZGU19NQ1VfR0VBUl9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VMMkRWRlNdIGVsMiBnZWFyIGNoYW5nZTogY3VycmVudF9tZF9nZWFyPSV1bCwgZWwyX2dlYXI9JXVsLCByZXF1aXJlZF9nZWFyPSV1bCwgcmVhc29uPSV1bCIKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRUwyIFNFQyBMaWJyYXJ5IChWT0xURSkKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbwkJICBFTUFDX0VSVF9MT0dfQ0ZHX1ZPTFRFX1RJTUlOR19SRVBPUlRfUkVRICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtWT0xURV1bQ0ZHXSB2b2x0ZV90aW1pbmdfcmVwb3J0X3JlcT0ldWIgKDA6IGRpc2FibGUsIDE6IGVuYWJsZSksIHBlcmlvZD0ldWwsIHJlcG9ydF9tb2RlPSV1YiIKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX0xPR19DRkdfVk9MVEVfVElNSU5HX1JFUE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1ZPTFRFXSB2b2x0ZSB0aW1pbmcgcmVwb3J0OiB0aW1lX3RvX3NyPSV1bCwgc3JfcGVyaW9kPSV1bCwgdGltZV90b19vbmR1PSV1bCwgZHJ4X2N5Y2xlPSV1bCwgdXNfdGltZT0ldWwiCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9MT0dfU1JfVlNSX0NPTkZJRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtWT0xURV1bU1JdIHZzciBjb25maWc6IGRyeF9jeWNsZT0ldWQsIGRyeF9vZmZzZXQ9JXVkLCBzcl9wZXJpb2Q9JXVkLCBzcl9vZmZzZXQ9JXVkLCB2c3JfcGVyaW9kPSV1ZCwgdnNyX29mZnNldD0ldWQsIHRpbWluZ19yZXBvcnRfdnNyX3BlcmlvZD0ldWQsIHRpbWluZ19yZXBvcnRfdnNyX29mZnNldD0ldWQiCitpbmZvICAgICAgICAgICAgICBFTUFDX0VSVF9MT0dfU1JfVlNSX0NPVkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtWT0xURV1bU1JdIHZzciBjb3ZlciBjb21wdXRhdGlvbjogdnNyX29mZnNldD0ldWQsIHZzcl9jb3Zlcj0ldWQiCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1ZPTFRFX1BPV19FTkhfRVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1ZPTFRFXVtQT1ddIHZvbHRlIHBvd2VyIGVuaGFuY2UgZXZlbnQ9JU1lbWFjX3ZvbHRlX3Bvd19lbmhfZXZlbnRfZSwgY29tYm9faW5fb25kdT0ldWwiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRUwyIFNFQyBMaWJyYXJ5IChVTC1IQVJRKQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fQ0ZHX0VBUkxZX0NMT1NFX1VMX0hBUlFfUkVRICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtDRkddIGVhcmx5IGNsb3NlIHVsIGhhcnEgcmVxLCB0eXBlPSVNZW1hY19lYXJseV9jbG9zZV91bF9oYXJxX3R5cGVfYml0X2UsIG9wZXJhdGlvbj0ldWIgKDA6IHN0b3AsIDE6IHN0YXJ0KSwgaW50ZXJ2YWw9JXVsLCBlYXJseV91bF9oYXJxX21heF9uYj0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX1VMX0hBUlFfTE9HX19fSEFSUV9FQVJMWV9DTE9TRV9SRUFDSEVEICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBoYXJxIGxhc3QgdHg6IGVhcmx5IGNsb3NlOiByZWFjaCBydWxlPSV1YiwgdWxfY2NfaWR4PSV1YiwgaGFycV9pZD0ldWIiCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19FQVJMWV9DTE9TRV9VTF9IQVJRX09QRVJBVElPTiAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIGVhcmx5IGNsb3NlIHVsIGhhcnEgb3BlcmF0aW9uPSV1YiAoMDogZGlzYWJsZSwgMTogZW5hYmxlKSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9MT0dfX19FQVJMWV9DTE9TRV9VTF9IQVJRX0VYUElSWSAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjFfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIGVhcmx5IGNsb3NlIHVsIGhhcnEgZXhwaXJ5OiB0eXBlPSVNZW1hY19lYXJseV9jbG9zZV91bF9oYXJxX3R5cGVfYml0X2UiCisKK3dhcm4gIChub25fc21wKSAgIEVNQUNfVUxfSEFSUV9XQVJOX19fQ0ZHX0VBUkxZX0NMT1NFX1VMX0hBUlFfV0FSTiAgICAgICAgICAgICAgICAgRU1BQ19XQVJOX0ggICAgICAiW0VNQUNdW1VMLUhBUlFdW0NGR10gZWFybHkgY2xvc2UgdWwgaGFycSBpcyBub3QgZW5hYmxlZCwgcmVhc29uPSV1YiAoMDogc2NoIGNsb3NlLCAxOiBkcnggaXMgbm90IGVuYWJsZWQgb3IgdHRpIGJ1bmRsaW5nIGlzIGVuYWJsZWQpIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVMMiBTRUMgTGlicmFyeSAoVE1DKQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cit3YXJuICAobm9uX3NtcCkgICBFTUFDX0xPR19UTUNfVEhFUk1BTF9DVFJMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTQ0VMTF1bVE1DXSByY3YgdGhlcm1hbF9jdHJsX3JlcT0ldWIiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX0xPR19UTUNfVEhFUk1BTF9DVFJMXzk1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTQ0VMTF1bVE1DXSByY3YgdGhlcm1hbF9jdHJsX3JlcSAlTXRtY19jdHJsX2NtZF9lbnVtLCBwYV9jdHJsPSVNdG1jX3BhX2N0cmxfZW51bSwgY2FfY3RybD0lTXRtY19jYV9jdHJsX2VudW0iCit3YXJuICAobm9uX3NtcCkgICBFTUFDX0xPR19UTUNfRFJPUF9DTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTQ0VMTF1bVE1DXSBkcm9wIHNjZWxsX2NtZCBkdWUgdG8gdGhlcm1hbCBjdHJsIGVuYWJsZSwgY21kPSV4YiwgcmN2X3RpbWU9JXVsIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfVE1DX0RST1BfQ01EX0lOVEVSQkFORCAJCSAgICAgICAgCQkJCUVNQUNfTFYxX0ggICAgICAgIltFTUFDXVtTQ0VMTF1bVE1DXSBkcm9wIGludGVyLWJhbmQgY2NfaWR4PSV4YiBkdWUgdG8gdGhlcm1hbCBjdHJsIGVuYWJsZSIKKworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfcHVibGljLnRtZCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZW1hY190cmFjZV9wdWJsaWMudG1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMzViNzgKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VtYWNfdHJhY2VfcHVibGljLnRtZApAQCAtMCwwICsxLDM0NiBAQAorW0RlZmF1bHRdCitFTUFDX1BVQkxJQworT24KK0wyX0J1ZmZlcgorVENNRk9SQ0UKK01BWF9BUkcgMTUKK0wyX0JVRkZFUl9TRVRUSU5HIEwyX0JVRkZFUl9FTDIKKworW01vZGVtX1R5cGVdCitMVEVfTDIKKworW0NsYXNzXQorRU1BQ19MVjBfSCAgICBPTiAgLy8gRm9yIEN1c3RvbWVyCisKK1tTdHJpbmddCisKK1tNZXNzYWdlXQorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIENPTU1PTgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19DUk5USV9ETF9BU1NJR05NRU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9JXVkOjQsIGRsX2hhcnFfaWQ9JXVkOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIG5ldz0ldWQ6MSV1ZDoxJXBkOjI+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfRExfQVNTSUdOTUVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PSV1bDo0LCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPSV1bDo0LCBzcHM9JXVsOjIsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxJXBsOjEyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1VMX0dSQU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0ldWw6MiwgdHlwZT0ldWw6OCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19BU1lOQ19VTF9HUkFOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9JXVsOjIsIHR5cGU9JXVsOjgsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMsIGFzeW5jX2hhcnFfaWQ9JXViLCByZXBldGl0aW9uPSV1Yj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19QSElDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHBoaWNoOiB1bF9jY19pZHg9JXVkOjIsIGhhcnFfaWQ9JXVkOjMsIHJsdD0ldWQ6MiVwZDoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0NSQ19SRVNVTFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gXG48Y3JjOiBjY19pZHg9JXVkOjQsIGRsX2hhcnFfaWQ9JXVkOjQsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIHJsdD0ldWQ6MSV1ZDoxJXBkOjQ+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTAsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTAsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0xLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MSwgZGxfaGFycV9pZF9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0xLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9MSwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MwXzAwMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGNyYzogY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMDAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTAsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMDAxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTAsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMDEwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiBcbjxjcmM6IGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MwXzAxMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9MCwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTAsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMDExMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0wLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MCwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMF8xMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTAsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6MyVwbDoxMD4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MwXzEwMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjI+IFxuPGNyYzogY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXVsOjQsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIHJsdD0ldWw6MSV1bDoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMTAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0wLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6Mj4gXG48cGhpY2g6JXBsOjEgdWxfY2NfaWR4PTAsIGhhcnFfaWQ9JXVsOjMsIHJsdD0ldWw6MiVwbDoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMTAxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0wLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6MTA+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0wLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9MCwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MwXzExMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMTEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0wLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MCwgZGxfaGFycV9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IFxuPGNyYzogY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzBfMTExMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0wLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MCwgZGxfaGFycV9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0wLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MwXzExMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MCwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTAsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMV8wMDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBcbjxjcmM6IGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzAwMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0xLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzAwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0xLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9MSwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzAxMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9MSwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9MSwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4gXG48Y3JjOiBjY19pZHg9MSwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMV8wMTEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjxkbGRjaTogdC0ldWQ6MiwgY2NfaWR4PTEsIGRsX2hhcnFfaWQ9JXVkOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIG5ldz0ldWQ6MSV1ZDoxJXBkOjY+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0xLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzAxMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9MSwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTEsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzFfMTAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0xLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6MTA+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMV8xMDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTEsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6MyVwbDoyPiBcbjxjcmM6IGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1bDo0LCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBybHQ9JXVsOjEldWw6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzEwMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MSwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjI+IFxuPHBoaWNoOiVwbDoxIHVsX2NjX2lkeD0xLCBoYXJxX2lkPSV1bDozLCBybHQ9JXVsOjIlcGw6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzEwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MSwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjEwPiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MSwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTEsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMV8xMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTEsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzExMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MSwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTEsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiBcbjxjcmM6IGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MxXzExMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MSwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTEsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MSwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMV8xMTExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTEsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTEsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD0xLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzJfMDAwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gXG48Y3JjOiBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8wMDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MiwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8wMDExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MiwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTIsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8wMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBcbjxkbGRjaTogdC0ldWQ6MiwgY2NfaWR4PTIsIGRsX2hhcnFfaWQ9JXVkOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIG5ldz0ldWQ6MSV1ZDoxJXBkOjY+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8wMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBcbjxkbGRjaTogdC0ldWQ6MiwgY2NfaWR4PTIsIGRsX2hhcnFfaWQ9JXVkOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIG5ldz0ldWQ6MSV1ZDoxJXBkOjY+IFxuPGNyYzogY2NfaWR4PTIsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzJfMDExMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0yLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MiwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8wMTExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjxkbGRjaTogdC0ldWQ6MiwgY2NfaWR4PTIsIGRsX2hhcnFfaWQ9JXVkOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIG5ldz0ldWQ6MSV1ZDoxJXBkOjY+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0yLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MyXzEwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MiwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjEwPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzJfMTAwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0yLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6Mj4gXG48Y3JjOiBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWw6NCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgcmx0PSV1bDoxJXVsOjE+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8xMDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTIsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6MyVwbDoyPiBcbjxwaGljaDolcGw6MSB1bF9jY19pZHg9MiwgaGFycV9pZD0ldWw6Mywgcmx0PSV1bDoyJXBsOjI+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8xMDExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTIsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6MyVwbDoxMD4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTIsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD0yLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzJfMTEwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0yLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8xMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTIsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD0yLCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4gXG48Y3JjOiBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDMl8xMTEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTIsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD0yLCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTIsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzJfMTExMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0yLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0yLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9MiwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MzXzAwMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGNyYzogY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMDAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTMsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMDAxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTMsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD0zLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMDEwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0zLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0zLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiBcbjxjcmM6IGNjX2lkeD0zLCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MzXzAxMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9MywgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTMsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMDExMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48ZGxkY2k6IHQtJXVkOjIsIGNjX2lkeD0zLCBkbF9oYXJxX2lkPSV1ZDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWQ6MSV1ZDoxLCBuZXc9JXVkOjEldWQ6MSVwZDo2PiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MywgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDM18xMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTMsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6MyVwbDoxMD4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MzXzEwMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MywgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjI+IFxuPGNyYzogY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXVsOjQsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIHJsdD0ldWw6MSV1bDoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMTAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0zLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6Mj4gXG48cGhpY2g6JXBsOjEgdWxfY2NfaWR4PTMsIGhhcnFfaWQ9JXVsOjMsIHJsdD0ldWw6MiVwbDoyPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMTAxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0zLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6MTA+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0zLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9MywgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MzXzExMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MywgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMTEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0zLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MywgZGxfaGFycV9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IFxuPGNyYzogY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzNfMTExMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV1bREwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD0zLCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjM+IFxuPGRsZGNpOiB0LSV1bDoyLCBjY19pZHg9MywgZGxfaGFycV9pZD0ldWw6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVsOjEldWw6MSwgbmV3PSV1bDoxJXVsOjE+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD0zLCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0MzXzExMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9MywgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MywgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTMsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDNF8wMDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETC1IQVJRXSBcbjxjcmM6IGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzAwMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD00LCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzAwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD00LCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4gXG48Y3JjOiBjY19pZHg9NCwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgorCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzAxMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9NCwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9NCwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4gXG48Y3JjOiBjY19pZHg9NCwgZGxfaGFycV9pZD0ldWI6NCwgdGJfdmFsaWQ9JXViOjEldWI6MSwgcmx0PSV1YjoxJXViOjE+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDNF8wMTEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjxkbGRjaTogdC0ldWQ6MiwgY2NfaWR4PTQsIGRsX2hhcnFfaWQ9JXVkOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1ZDoxJXVkOjEsIG5ldz0ldWQ6MSV1ZDoxJXBkOjY+IFxuPHBoaWNoOiVwYjoxIHVsX2NjX2lkeD00LCBoYXJxX2lkPSV1YjozLCBybHQ9JXViOjIlcGI6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzAxMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPGRsZGNpOiB0LSV1ZDoyLCBjY19pZHg9NCwgZGxfaGFycV9pZD0ldWQ6NCwgdHlwZT0xLCBzcHM9MCwgdGJfdmFsaWQ9JXVkOjEldWQ6MSwgbmV3PSV1ZDoxJXVkOjElcGQ6Nj4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTQsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9JTlBVVF9DQzRfMTAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gXG48dWxkY2k6IHQtJXVsOjIsIHVsX2NjX2lkeD00LCB0eXBlPTAsIG5kaT0ldWw6MSwgcnY9JXVsOjIsIHRicz0ldWw6MTQsIGs9JXVsOjMlcGw6MTA+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDNF8xMDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTQsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6MyVwbDoyPiBcbjxjcmM6IGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1bDo0LCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBybHQ9JXVsOjEldWw6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzEwMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9NCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjI+IFxuPHBoaWNoOiVwbDoxIHVsX2NjX2lkeD00LCBoYXJxX2lkPSV1bDozLCBybHQ9JXVsOjIlcGw6Mj4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzEwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9NCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozJXBsOjEwPiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9NCwgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IFxuPGNyYzogY2NfaWR4PTQsIGRsX2hhcnFfaWQ9JXViOjQsIHRiX3ZhbGlkPSV1YjoxJXViOjEsIHJsdD0ldWI6MSV1YjoxPiIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDNF8xMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTQsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzExMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9NCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTQsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiBcbjxjcmM6IGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfSU5QVVRfQ0M0XzExMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdW0RMLUhBUlFdIFxuPHVsZGNpOiB0LSV1bDoyLCB1bF9jY19pZHg9NCwgdHlwZT0wLCBuZGk9JXVsOjEsIHJ2PSV1bDoyLCB0YnM9JXVsOjE0LCBrPSV1bDozPiBcbjxkbGRjaTogdC0ldWw6MiwgY2NfaWR4PTQsIGRsX2hhcnFfaWQ9JXVsOjQsIHR5cGU9MSwgc3BzPTAsIHRiX3ZhbGlkPSV1bDoxJXVsOjEsIG5ldz0ldWw6MSV1bDoxPiBcbjxwaGljaDolcGI6MSB1bF9jY19pZHg9MywgaGFycV9pZD0ldWI6Mywgcmx0PSV1YjoyJXBiOjI+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX0lOUFVUX0NDNF8xMTExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtETC1IQVJRXSBcbjx1bGRjaTogdC0ldWw6MiwgdWxfY2NfaWR4PTQsIHR5cGU9MCwgbmRpPSV1bDoxLCBydj0ldWw6MiwgdGJzPSV1bDoxNCwgaz0ldWw6Mz4gXG48ZGxkY2k6IHQtJXVsOjIsIGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1bDo0LCB0eXBlPTEsIHNwcz0wLCB0Yl92YWxpZD0ldWw6MSV1bDoxLCBuZXc9JXVsOjEldWw6MT4gXG48cGhpY2g6JXBiOjEgdWxfY2NfaWR4PTMsIGhhcnFfaWQ9JXViOjMsIHJsdD0ldWI6MiVwYjoyPiBcbjxjcmM6IGNjX2lkeD00LCBkbF9oYXJxX2lkPSV1Yjo0LCB0Yl92YWxpZD0ldWI6MSV1YjoxLCBybHQ9JXViOjEldWI6MT4iCisKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9VTF9IQVJRX0lORk9fUkVBQ1RJVkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gdHhfcmVxOiB1bF9jY19pZHg9JXVkOjEgXG48dWwgc3RhdHVzPSV4ZDoyLCB0eXBlPSV1ZDo0LCBoYXJxX2lkPSV1ZDozLCBuZGk9JXVkOjEsIG1vZGU9JXVkOjIsIGFjaz0ldWQ6MSwgdHg9JXVkOjEsIG11eD0ldWQ6MT4gXG48aGFycSBzdGF0dXM9JXhsOjUsIGJ1ZmZlcj0ldWw6MywgYnVuZGxlPSV1bDozLCBydj0ldWw6MiwgY250PSV1bDo1LCB0YnM9JXVsOjE0PiBcbjxyZXR4IHRpbWU9JXVsOjUsIHBoaWNoIHRpbWU9JXVsOjUsIHVsZGNpIG51bT0ldWw6MiwgdWxkY2kxPSV1bDo1LCB1bGRjaTI9JXVsOjUlcGw6MTA+IFxuPGhhcnFfaWQ9JXViOjQgY2xvc2U+IFxuPGhhcnFfaWQ9JXViOjQgYWN0aXZhdGU+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX1VMX0hBUlFfSU5GT19ORVdfSEFSUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSB0eF9yZXE6IHVsX2NjX2lkeD0ldWQ6MSBcbjx1bCBzdGF0dXM9JXhkOjIsIHR5cGU9JXVkOjQsIGhhcnFfaWQ9JXVkOjMsIG5kaT0ldWQ6MSwgbW9kZT0ldWQ6MiwgYWNrPSV1ZDoxLCB0eD0ldWQ6MSwgbXV4PSV1ZDoxPiBcbjxoYXJxIHN0YXR1cz0leGw6NSwgYnVmZmVyPSV1bDozLCBidW5kbGU9JXVsOjMsIHJ2PSV1bDoyLCBjbnQ9JXVsOjUsIHRicz0ldWw6MTQ+IFxuPHJldHggdGltZT0ldWw6NSwgcGhpY2ggdGltZT0ldWw6NSwgdWxkY2kgbnVtPSV1bDoyLCB1bGRjaTE9JXVsOjUsIHVsZGNpMj0ldWw6NSVwbDoxMCVwYjo0PiBcbjxoYXJxX2lkPSV1Yjo0IGFjdGl2YXRlPiIgCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UVElfVUxfSEFSUV9JTkZPX1JFVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1VMLUhBUlFdIHR4X3JlcTogdWxfY2NfaWR4PSV1ZDoxIFxuPHVsIHN0YXR1cz0leGQ6MiwgdHlwZT0ldWQ6NCwgaGFycV9pZD0ldWQ6MywgbmRpPSV1ZDoxLCBtb2RlPSV1ZDoyLCBhY2s9JXVkOjEsIHR4PSV1ZDoxLCBtdXg9JXVkOjE+IFxuPGhhcnEgc3RhdHVzPSV4bDo1LCBidWZmZXI9JXVsOjMsIGJ1bmRsZT0ldWw6MywgcnY9JXVsOjIsIGNudD0ldWw6NSwgdGJzPSV1bDoxND4gXG48cmV0eCB0aW1lPSV1bDo1LCBwaGljaCB0aW1lPSV1bDo1LCB1bGRjaSBudW09JXVsOjIsIHVsZGNpMT0ldWw6NSwgdWxkY2kyPSV1bDo1JXBsOjEwPiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RUSV9VTF9IQVJRX0lORk9fRklOQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVUwtSEFSUV0gdHhfcmVxOiB1bF9jY19pZHg9JXVkOjEgXG48dWwgc3RhdHVzPSV4ZDoyLCB0eXBlPSV1ZDo0LCBoYXJxX2lkPSV1ZDozLCBuZGk9JXVkOjEsIG1vZGU9JXVkOjIsIGFjaz0ldWQ6MSwgdHg9JXVkOjEsIG11eD0ldWQ6MT4gXG48aGFycSBzdGF0dXM9JXhsOjUsIGJ1ZmZlcj0ldWw6MywgYnVuZGxlPSV1bDozLCBydj0ldWw6MiwgY250PSV1bDo1LCB0YnM9JXVsOjE0PiBcbjxoYXJxX2lkPSV1Yjo0IGNsb3NlJXBiOjQ+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX1VMX0hBUlFfSU5GT19ORVdfTEFTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSB0eF9yZXE6IHVsX2NjX2lkeD0ldWQ6MSBcbjx1bCBzdGF0dXM9JXhkOjIsIHR5cGU9JXVkOjQsIGhhcnFfaWQ9JXVkOjMsIG5kaT0ldWQ6MSwgbW9kZT0ldWQ6MiwgYWNrPSV1ZDoxLCB0eD0ldWQ6MSwgbXV4PSV1ZDoxPiBcbjxoYXJxIHN0YXR1cz0leGw6NSwgYnVmZmVyPSV1bDozLCBidW5kbGU9JXVsOjMsIHJ2PSV1bDoyLCBjbnQ9JXVsOjUsIHRicz0ldWw6MTQ+IFxuPGhhcnFfaWQ9JXViOjQgY2xvc2U+IFxuPGhhcnFfaWQ9JXViOjQgYWN0aXZhdGU+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX1VMX0hBUlFfSU5GT19SRVRYX05PVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSB0eF9yZXE6IHVsX2NjX2lkeD0ldWQ6MSBcbjx1bCBzdGF0dXM9JXhkOjIsIHR5cGU9JXVkOjQsIGhhcnFfaWQ9JXVkOjMsIG5kaT0ldWQ6MSwgbW9kZT0ldWQ6MiwgYWNrPSV1ZDoxLCB0eD0ldWQ6MSwgbXV4PSV1ZDoxPiBcbjxyZXR4IHRpbWU9JXVsOjUsIHBoaWNoIHRpbWU9JXVsOjUsIHVsZGNpIG51bT0ldWw6MiwgdWxkY2kxPSV1bDo1LCB1bGRjaTI9JXVsOjUlcGw6MTA+IgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX1VMX0hBUlFfSU5GT19GSU5BTF9OT1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXSB0eF9yZXE6IHVsX2NjX2lkeD0ldWQ6MSBcbjx1bCBzdGF0dXM9JXhkOjIsIHR5cGU9JXVkOjQsIGhhcnFfaWQ9JXVkOjMsIG5kaT0ldWQ6MSwgbW9kZT0ldWQ6MiwgYWNrPSV1ZDoxLCB0eD0ldWQ6MSwgbXV4PSV1ZDoxPiBcbjxoYXJxX2lkPSV1Yjo0IGNsb3NlPiVwYjo0Igord2FybiAgKG5vbl9zbXApICAgRU1BQ19MT0dfVFRJX1VMX0hBUlFfSU5GT19ERUZBVUxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtVTC1IQVJRXVtXQVJOXSB0eF9yZXE6IHVsX2NjX2lkeD0ldWQ6MiA8dWwgc3RhdHVzPSV4ZDoyLCB0eXBlPSV1ZDo0LCBoYXJxX2lkPSV1ZDozLCBtb2RlPSV1ZDoyLCB0eD0ldWQ6MSwgbXV4PSV1ZDoxJXBkOjE+IFxuPGhhcnEgc3RhdHVzPSV4bDo1LCBidWZmZXI9JXVsOjMsIGJ1bmRsZT0ldWw6MywgcnY9JXVsOjIsIGNudD0ldWw6NSwgdGJzPSV1bDoxND4gXG48cmV0eCB0aW1lPSV1bDo1LCBwaGljaCB0aW1lPSV1bDo1LCB1bGRjaSBudW09JXVsOjIsIHVsZGNpMT0ldWw6NSwgdWxkY2kyPSV1bDo1JXBsOjEwPiBcbjxoYXJxX2lkPSV1Yjo0IGNsb3NlPiBcbjxoYXJxX2lkPSV1Yjo0IGFjdGl2YXRlPiIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBDRkcKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1JSQ19SRVNFVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddIEVNQUMgcmVzZXQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19SQV9DRkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bUkFdIHByZWFtYmxlX25iPSV1YiwgZ3JvdXBfYV9zaXplPSV1YiwgZ3JvdXBfYl9zaXplPSV1YiwgbXNnX3N6X2dyb3VwX2E9JXViLCByYXJfd25kPSV1YiwgY3JfdGltZXI9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfUkFfQ0ZHMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1JBXSBtc2czX3R4X21heD0ldWIsIHBvd19vZmZzZXRfYj0ldWIsIHBtYXg9JWIsIGRlbHRhX21zZzM9JWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19SQV9DRkczICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bUkFdIGNjX2lkeD0ldWIsIHBvd19yYW1waW5nPSViLCBwcmVhbWJsZV90eF9tYXg9JXViLCBwcmVhbWJsZV9pbml0X3Bvdz0lYiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0NGR19TRVRfSE9fQ1JOVEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXVtIT10gSE8gc2V0IGMtcm50aT0ldWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19DRkdfU0VUX0NSTlRJICAgIAkJCQkJCQkJCSAgRU1BQ19MVjBfSAkJICJbRU1BQ11bQ0ZHXSBzZXQgYy1ybnRpPSV1ZCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0NGR19TVEFHX1RNUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXVtUQV0gQ29uZmlnIHN0YWcgVEEgdGltZXIgbGVuZ3RoPSV1ZCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1JSQ19DRkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXSBGdW5jdGlvbiBzdGF0dXM9JXhiLCBzcl9wcm9oaWJpdF9jbnQ9JXViLCBzcl9wcm9oaWJpdF90bXI9JXVsLCB0YV90aW1lcl9sZW49JXVkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1NSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1NSXSBTUiByZXNvdXJjZSBjb25maWc6IHNyX29mZnNldD0ldWIsIHNyX3BlcmlvZD0ldWIsIHNyX21heD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19DRkdfU1JfUkVMRUFTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bU1JdIFNSIHJlc291cmNlIHJlbGVhc2VkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1VMX1NQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1NQU10gVUwgU1BTIGVuYWJsZTogdWxfaW50ZXJ2YWw9JXVkLCBpbXBfcmVsPSV1YiwgdHdvX2ludGVydmFsPSV1Yiwgc2tpcF90eD0ldWIsIGZpeGVkX3J2PSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0NGR19VTF9TUFNfRElTQUJMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXVtTUFNdIFVMIFNQUyBkaXNhYmxlIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX0RMX1NQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1NQU10gREwgU1BTIGVuYWJsZTogZGxfaW50ZXJ2YWw9JXVkLCBkbF9oYXJxX251bT0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19DRkdfRExfU1BTX0RJU0FCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bU1BTXSBETCBTUFMgZGlzYWJsZSIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0NGR19TRVRfU1BTQ1JOVEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXVtTUFNdIFNldCBzcHNjLXJudGk9JXVkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX0NMUl9TUFNDUk5USSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1NQU10gQ2xlYXIgc3BzYy1ybnRpIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1BDRUxMX0NGRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddIFBjZWxsIHN1YmZyYW1lX2NmZz0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19DRkdfU0NFTExfVVBEQVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bU0NFTExdIFVwZGF0ZSBjY19pZHg9JXViLCBjb3Jzc19zY2hlZF9pZHg9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1BIUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1BIUl0gcGhyX2NvbmZpZz0ldWIgKDA6IGRpc2FibGUsIDE6IHBociwgMjogZXh0ZW5kX3BocikiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19DRkdfVUxfSEFSUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bVUwtSEFSUV0gbWF4X2hhcnFfdHg9JXViLCB0dGlfYnVuZGxpbmdfY29uZmlnPSV1YiAoMDogZGlzYWJsZSwgMTogbm9ybWFsIGJ1bmRsaW5nLCAyOiBlbmhhbmNlZCBmZGQpIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1VMX0hBUlFfUFVTQ0hfRU5IQU5DRU1FTlQgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1VMLUhBUlFdIHB1c2NoIGVuaGFuY2VtZW50IG1vZGU9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0ZHX1VMX0hBUlFfU0tJUF9EWU5BTUlDX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1VMLUhBUlFdIHNraXAgZHluYW1pYyB0eDogJXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQ0VMTF9JTkZPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddc2NoX29wZW49JXViLCBlYXJmY249JXVsLCBwY2k9JXVkIgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBVTCBIQVJRCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRBCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1JDVl9UQV9DTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVEFdIHRhX2NtZDogdGFfdmFsdWU9JXViOjYsIHRhZ19pZD0ldWI6MiwgcmN2X3RpbWU9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfUF9UQV9FWFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtUQV0gcHRhZyBUQSB0aW1lciBleHBpcmVkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfUkFSX1RBX0NNRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtUQV0gUkFSIHRhX2NtZDogdGFfdmFsdWU9JXViLCB0YWdfaWQ9JXViLCByY3ZfdGltZT0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UQV9TVE9QX0ZPUl9DUl9GQUlMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1RBXSBTdG9wIHB0YWcgVEEgdGltZXIgZm9yIFJBIENSIGZhaWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TX1RBX0VYUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1RBXSBzdGFnIFRBIHRpbWVyIGV4cGlyZTogdGFnX2lkPSV1YiwgY2NfaWR4X2JtcD0leGIsIGN1cl9jY19pZHhfYm1wPSV4YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RBX0FERF9TVEFHX0NDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXVtUQV0gQWRkIHN0YWcgQ0M6IHRhZ19pZD0ldWIsIGNjX2lkeD0ldWIsIHN0YWdfaWR4PSV1YiwgY2NfaWR4X2JtcD0leGIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UQV9BRERfUFRBR19DQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0NGR11bVEFdIEFkZCBwdGFnIENDOiBjY19pZHg9JXViLCBjY19pZHhfYm1wPSV4YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RBX0RFTF9QVEFHX0NDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQ0ZHXVtUQV0gRGVsIHB0YWcgQ0M6IGNjX2lkeD0ldWIsIGNjX2lkeF9ibXA9JXhiIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfVEFfREVMX1NUQUdfQ0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtDRkddW1RBXSBEZWwgc3RhZyBDQzogdGFnX2lkPSV1YiwgY2NfaWR4PSViLCBzdGFnX2lkeD0lYiwgY2NfaWR4X2JtcD0leGIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UQV9QX1RJTUVSX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1RBXSBwdGFnIFRBIHRpbWVyIHN0YXJ0PSV1bCwgbGVuZ3RoPSV1ZCwgY2NfaWR4X2JtcD0leGIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19UQV9TX1RJTUVSX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1RBXSBzdGFnIFRBIHRpbWVyIHRhZ19pZD0ldWIgc3RhcnQ9JXVsLCBsZW5ndGg9JXVkLCBjY19pZHhfYm1wPSV4YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1RBX1NfVEFfQUxMX0VYUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bVEFdIGFsbCBzdGFnIFRBIHRpbWVycyBleHBpcmUiCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNDRUxMCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1NDRUxMX0RFQUNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bU0NFTExdIFNjZWxsIGRlYWN0aXZhdGU6IGNjX2lkeD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TQ0VMTF9ERUFDVF9USU1FUl9FWFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1NDRUxMXSBTY2VsbCBkZWFjdGl2YXRpb24gdGltZXIgZXhwaXJlZDogY2NfaWR4PSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1NDRUxMX0FDVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bU0NFTExdIFNjZWxsIGFjdGl2YXRlOiBjY19pZHg9JXViLCBkZWFjdGl2YXRpb24gdGltZXIgc3RhcnQ9JXVsLCBsZW5ndGg9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfU0NFTExfUkNWX0NNRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtTQ0VMTF0gUmN2IHNjZWxsIGFjdF9jbWQ9JXhiOiByY3ZfdGltZT0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TQ0VMTF9BRERfQ0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1NDRUxMXVtDRkddIEFkZCBDQzogc2NlbGxfaWR4PSV1YiwgY2NfaWR4PSV1YiwgdGFnX2lkPSV1YiwgY29yc3Nfc2NoZWRfaWR4PSV1Yiwgc3ViZnJhbWVfY2ZnPSV1YiwgdWxfcmVmX2NmZz0ldWIsIHVsX3N1cHBvcnRlZD0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TQ0VMTF9SRUxfQ0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1NDRUxMXVtDRkddIFJlbCBDQzogY2NfaWR4PSV1YiIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBCU1IgJiBTUgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19CU1JfVFJJR0dFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0JTUl0gQlNSIHRyaWdnZXJlZDogcmVndWxhcj0ldWI6MSwgcmV0eF9yZWd1bGFyPSV1YjoxLCBwZXJpb2Q9JXViOjElcGI6NSwgdG9wX3JiPSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX0JTUl9DQU5DRUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bQlNSXSBCU1IgY2FuY2VsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfQlNSX0xDX1NSX1RNUl9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtCU1JdW1NSXSBMQyBTUiBwcm9oaWJpdCB0aW1lciBzdGFydD0ldWwsIGxlbmd0aD0ldWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19CU1JfTENfU1JfVE1SX1NUT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0JTUl1bU1JdIExDIFNSIHByb2hpYml0IHRpbWVyIHN0b3BwZWQiCitpbmZvICAobm9uX3NtcCkJICBFTUFDX0xPR19CU1JfTENfU1JfVE1SX0VYUElSRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0JTUl1bU1JdIExDIFNSIHByb2hpYml0IHRpbWVyIGV4cGlyZWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TUl9UUklHR0VSRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1NSXSBTUiB0cmlnZ2VyZWQiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19TUl9DQU5DRUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1NSXSBTUiBjYW5jZWw6IHNyX2NvdW50PSV1YiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1NSX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bU1JdIFNSIHR4X2NudD0ldWIsIHByb2hpYml0IHRpbWVyIHN0YXJ0PSV1bCwgbGVuZ3RoPSV1ZCAoMDogbm8gcHJvaGliaXQpIgord2FybiAgKG5vbl9zbXApICAgRU1BQ19TUl9MT0dfU1JfVFhfTUFYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtTUl1bV0FSTl0gU1IgdHggbWF4LCB0eF9jbnQ9JXViIgorCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFJBCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1RSSUdfUkVBRFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdIFJBIHRyaWdnZXIgcmVhZHk6IHJhX2V2ZW50PSVNZW1hY19yYV9ldmVudF9lLCByYV90eXBlPSVNZW1hY19yYV90eXBlX2UsIHByZWFtYmxlX3R4X21heD0lYiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BSRUFNX1NDSEVEX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdIHNjaGVkdWxlIHByZWFtYmxlIHR4OiB1bF9jY19pZHg9JWIsIHJhcGlkPSViLCBwcmVhbWJsZV90eF9jbnQ9JWwsIGZvcm1hdD0lYiwgdHhfcHJiPSViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUFJFQU1fVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV0gPHN0YXRlID0gV0FJVF9SQVI+ICAgcHJlYW1ibGUgdHgsIHJhLXJudGk9JWQsIFJBUiBXTkQgc3RhcnQ9JWwsIGVuZD0lbCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1JBUl9XTkRfRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdIFJBUiBXTkQgZW5kLCBSQVIgZmFpbCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1JBUl9NQVRDSF9JTkZPX0NGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdW1VMLUhBUlFdIFJBUiBtYXRjaGVkOiB0YV9jbWQ9JWwsIHRjLXJudGk9JWQsIHR4X3RpbWU9JXVsLCB0YnM9JXVkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUkFSX01BVENIX0lORk9fQ0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV1bVUwtSEFSUV0gPHN0YXRlID0gV0FJVF9NU0czX1RYPiAgIFJBUiBtYXRjaGVkOiB0YV9jbWQ9JXVsLCB0Yy1ybnRpPSV1ZCwgbXNnM190eF90aW1lPSV1bCwgdGJzPSV1ZCIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfTVNHM19UWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV0gPHN0YXRlID0gV0FJVF9DUj4gICBNU0czIFRYLCBDUiB0aW1lciBzdGFydD0lbCwgZW5kPSVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfTVNHM19SRVRYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV1bVUwtSEFSUV0gTVNHMyBSRVRYOiBDUiB0aW1lciByZXN0YXJ0IGVuZD0lbCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX0NSX0VYUElSRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdIENSIHRpbWVyIGV4cGlyZSIKKworaW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUkVUUlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV0gPHN0YXRlID0gV0FJVF9QUkVBTUJMRV9UWD4gICBSQSByZXRyeSwgcHJlYW1ibGVfdHhfY250PSVsLCByYV9lcnJvcl9jbnQ9JWwsIGJhY2tvZmZfdGltZT0lbCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX0NPTVBMRVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdIDxzdGF0ZSA9IFdBSVRfR0FQX1JFU1VNRT4gICBSQSBjb21wbGV0ZSwgaXNfc3VjY2Vzcz0lYiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BEQ0NIX09SREVSX0lOQUNUX0NDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdW1dBUk5dIHJjdiBQRENDSCBvcmRlciBmb3IgaW5hY3RpdmUgU2NlbGw6IHVsX2NjX2lkeD0lYiIKK2luZm8gIChub25fc21wKSAgIEVNQUNfUkFfTE9HX1BEQ0NIX09SREVSX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkFdW1dBUk5dIHJjdiBpbnZhbGlkIFBEQ0NIIG9yZGVyOiB1bF9jY19pZHg9JWIsIHJhcGlkPSViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUERDQ0hfT1JERVJfV0hFTl9SRVNFVAkJCQkJCQkgIEVNQUNfTFYwX0gJCSAiW0VNQUNdW1JBXVtXQVJOXSByY3YgUERDQ0ggb3JkZXIgaW4gTUFDIHJlc2V0OiB1bF9jY19pZHg9JWIsIHJhcGlkPSViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfUERDQ0hfT1JERVJfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV0gcmN2IFBEQ0NIIG9yZGVyOiB1bF9jY19pZHg9JWIsIHJhcGlkPSViLCBtYXNrPSViLCB0eF90aW1lPSVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19SQV9MT0dfSE9fQ0ZHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQV0gcmN2IEhPIFJBIGNmZzogcmFwaWQ9JWIsIG1hc2s9JWIiCit3YXJuICAobm9uX3NtcCkgICBFTUFDX1JBX0xPR19SQV9FUlJPUl9JTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1JBXVtXQVJOXSBSQSBlcnJvciBpbmQiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gUEhSCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2luZm8gIChub25fc21wKSAgIEVNQUNfTE9HX1BIUl9UUklHR0VSRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUEhSXSBQSFIgdHJpZ2dlcmVkIHR5cGU9JU1lbWFjX3Bocl90cmlnZ2VyZWRfZW51bSIKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBEUlgKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX05PUk1BTF9ORVhUX09ORFVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtEUlhdIChub3JtYWwpIG9uZHUgdG1yOiBzdGFydF90aW1lPSV1bCBhbmQgZXhwaXJlZF90aW1lPSV1bCwgbmV4dCBvbmR1IHRtcjogc3RhcnRfdGltZT0ldWwgYW5kIGV4cGlyZWRfdGltZT0ldWwsIGN1cl9wcmVkaWN0X2N5Y2xlPSVNZW1hY19kcnhfY3ljbGVfdHlwZV9lLCBuZXh0X3ByZWRpY3RfY3ljbGU9JU1lbWFjX2RyeF9jeWNsZV90eXBlX2UiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfRENJX1NUQVJUX0RSWF9JTkFDVF9UTVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RSWF0gZGNpIHN0YXJ0cyBkcnggaW5hY3QgdG1yOiBzdGFydF90aW1lPSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19EUlhfSU5BQ1RfVE1SX0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bRFJYXSBkcnggaW5hY3QgdG1yIGVuZHMsIGV4cGlyZWRfdGltZT0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfU0hPUlRfQ1lDX1RNUl9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RSWF0gc2hvcnQgY3ljbGUgdG1yOiBzdGFydF90aW1lPSV1bCwgZXhwaXJlZF90aW1lPSV1bCIKK2luZm8gIChub25fc21wKSAgIEVNQUNfRFJYX0xPR19EUlhfQ09ORklHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bRFJYXVtDRkddIGRyeF9jb25maWc9JXViICgwOiBlbmFibGUsIDE6IHJlY29uZmlnLCAyOiBkaXNhYmxlKTogXG5jcWlfbWFzaz0ldWIsIFxuc2hvcnRfY3ljbGVfdmFsaWQ9JXViLCBcbmRyeF91bF9yZXR4X3Rtcl92YWxpZD0ldWIsIFxuZHJ4X3VsX3JldHhfdG1yX3BzZl9sZW49JXVkLCBcbmRyeF9yZXR4X3Rtcl9wc2ZfbGVuPSV1ZCwgXG5kcnhfc2hvcnRfY3ljbGVfbnVtPSV1YiwgXG5vbmR1X3Rtcl9wc2ZfbGVuPSV1ZCwgXG5kcnhfc2hvcnRfY3ljbGVfdG1yX2xlbj0ldWQsIFxuZHJ4X2luYWN0X3Rtcl9wc2ZfbGVuPSV1ZCwgXG5kcnhfbG9uZ19jeWNsZT0ldWQsIFxuZHJ4X3Nob3J0X2N5Y2xlPSV1ZCwgXG5kcnhfbG9uZ19vZmZzZXQ9JXVkLCBcbmRyeF9zaG9ydF9vZmZzZXQ9JXVkIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX0NSQ19TRVRfUlRUX1JFVFhfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtEUlhdIHNldHMgcnR0L3JldHggc3RhdHVzOiBjY19pZHg9JXViLCBkbF9oYXJxX2lkPSV1YiwgcmV0eCB0bXIgc3RhcnRfdGltZT0ldWwsIHJldHggdG1yIGV4cGlyZWRfdGltZT0ldWwiCitpbmZvICAobm9uX3NtcCkgICBFTUFDX0RSWF9MT0dfQ0xSX1JFVFhfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RSWF0gY2xlYXJzIHJldHggc3RhdHVzOiBjY19pZHg9JXViLCBkbF9oYXJxX2lkPSV1Yiwgc291cmNlPSV1YiAoMDogZGNpLCAxOiBjcmMpIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19EUlhfTE9HX0NMUl9SVFRfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtEUlhdIGNsZWFycyBydHQgc3RhdHVzOiBjY19pZHg9JXViLCBkbF9oYXJxX2lkPSV1Yiwgc291cmNlPSV1YiAoMDogZGNpLCAxOiBjcmMpIgorCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gUkJSUQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAobm9uX3NtcCkgICBFTUFDX0xPR19SQlJRX1RSSUdHRVJFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW1JCUlFdIHJicnEgaXMgdHJpZ2dlcmVkOiByYl9pZHg9JXViLCBpc191bD0ldWIsIHJicnE9JXVsIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ19MT0dfUkJSUV9TQ0hFRFVMRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtSQlJRXSByYnJxIGlzIHNjaGVkOiByYl9pZHg9JXViLCBsY2lkPSV1YiwgaXNfdWw9JXViLCByYnJxPSV1bCwgcHJvaGliaXRfdGltZT0ldWwiCisKK2luZm8gICAgICAgICAgICAgIEVNQUNfRVJUX0xPR19SQlJRX1NVUFBPUlRfQklUTUFQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bUkJSUV0gcmJycSBzdXBwb3J0X3JiX2lkeF9iaXRtYXA9JXVsIgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBFTVVYCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLy8gUmVhZCBNVVggUkVRCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX01VWF9SRVEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0VNVVhdW0lGXSAgTVVYX1JFUTogcGlkeD0ldWIsIGNjX2lkeD0ldWIsIGhhcnFfaWQ9JXViLCB0YnM9JXVkLCBmaXJzdF9tdXg9JU1rYWxfYm9vbCIKKworLy8gR2VuIGZyb250IFRCCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX01VWF9CVUZfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0VNVVhdW1RCXSAgdGJzX2luX211eF9idWY9JXVsIG11eF9idWY9ICV4YiAleGIgJXhiICV4YiIgCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX1BBRF9CVUZfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0VNVVhdW1RCXSAgcG9zdF9wYWRfbGVuICA9JXVsIHBhZF9idWY9ICV4YiAleGIgJXhiICV4YiIKKworLy8gTENQCitpbmZvICAgICAgICAgICAgICBFTVVYX0xPR19fX0xDUF9SRVEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0VNVVhdW0xDUF0gTGNwIHJlcTogYy1ybnRpPSVNZW11eF9jcm50aV9zdGF0dXNfZSwgYnNyPSVNZW11eF9ic3Jfc3RhdHVzX2UsIHBocj0lTWVtdXhfcGhyX3N0YXR1c19lLCBwaHJfbGVuPSV1YiwgY2NjaD0lTWVtdXhfY2NjaF9zdGF0dXNfZSIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fTENHX0FGVEVSX0xDUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bRU1VWF1bTENQXSBBZnRlciBsY3A6IGxjZ19idWZfbnVtPSV1YiwgbGNnX2J1Zl9zaXplPVsldWwsICV1bCwgJXVsLCAldWxdLCB0b3BfbGNnX2lkPSV1YiwgdG9wX3ByaW9yaXR5PSV1YiIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fQUZURVJfTUFDX0xDUF9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bRU1VWF1bTENQXSBBZnRlciBtYWMgbGNwOiBjY19pZHg9JXViLCBoYXJxX2lkPSV1YiIKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fQUZURVJfUkxDX0xDUF9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bRU1VWF1bTENQXSBBZnRlciBybGMgbGNwOiBjY19pZHg9JXViLCBoYXJxX2lkPSV1YiIKKworLy8gV3JpdGUgTVVYX1JTUAoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19NVVhfUlNQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtFTVVYXVtNUl0gIE1VWF9SU1A6IGNjX2lkeD0ldWIsIGMtcm50aT0lTWVtdXhfY3JudGlfc3RhdHVzX2UsIGJzcj0lTWVtdXhfYnNyX3N0YXR1c19lKCVNZW11eF9ic3JfZm9ybWF0X2UpLCBwaHI9JU1lbXV4X3Bocl9zdGF0dXNfZSwgY2NjaD0lTWVtdXhfY2NjaF9zdGF0dXNfZSwgZHhjaD0lTWVtdXhfZHhjaF9zdGF0dXNfZSIKKworLy8gQ2xvc2UgVUwgSGFycQoraW5mbyAgICAgICAgICAgICAgRU1VWF9MT0dfX19DTE9TRV9VTF9IQVJRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtFTVVYXVtJRl0gIENsb3NlIFVMIGhhcnE6IHBpZHg9JXViLCB1bF9jY19pZHg9JXViLCBoYXJxX2lkPSV1YiIgIAorCisvLyBDb25maWcKK2luZm8gICAgICAgICAgICAgIEVNVVhfTE9HX19fQ0ZHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bRU1VWF1bSUZdICBDb25maWc6IHBpZHg9JXViLCBlYnNyPSVNa2FsX2Jvb2wiICAKKworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEVNQUNETAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1RCX1RZUEVfUkVGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMXVtJTkZPXSBUQiB0eXBlIG1hcHBpbmcgLSAwOkMvU1BTLCAxOk1DSCwgNDpSQVIsIDc6VEMiCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1RCX0lORk9fU0lOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMXVtUQl0gXG48VEIgJXViOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19UQl9JTkZPXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFxuPFRCIDE6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4iCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1RCX0lORk9fMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMXVtUQl0gXG48VEIgMTogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAyOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19UQl9JTkZPXzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFxuPFRCIDE6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgMjogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAzOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19UQl9JTkZPXzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFxuPFRCIDE6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgMjogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAzOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDQ6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4iCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1RCX0lORk9fNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMXVtUQl0gXG48VEIgMTogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAyOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDM6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgNDogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiA1OiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19UQl9JTkZPXzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFxuPFRCIDE6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgMjogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAzOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDQ6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgNTogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiA2OiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19UQl9JTkZPXzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bVEJdIFxuPFRCIDE6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgMjogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAzOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDQ6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgNTogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiA2OiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDc6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4iCitpbmZvICAgICAgICAgICAgICBFTUFDRExfTE9HX1RCX0lORk9fOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW0RMXVtUQl0gXG48VEIgMTogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiAyOiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDM6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgNDogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiA1OiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IFxuPFRCIDY6IGNyYz0ldWw6MSwlcGw6MyB0eXBlPSV1bDozLCVwbDoxIHRiPSV1bDoxLCBjYz0ldWw6MywgaGFycT0ldWw6NCwgbGVuPSV1bDoxNj4gXG48VEIgNzogY3JjPSV1bDoxLCVwbDozIHR5cGU9JXVsOjMsJXBsOjEgdGI9JXVsOjEsIGNjPSV1bDozLCBoYXJxPSV1bDo0LCBsZW49JXVsOjE2PiBcbjxUQiA4OiBjcmM9JXVsOjEsJXBsOjMgdHlwZT0ldWw6MywlcGw6MSB0Yj0ldWw6MSwgY2M9JXVsOjMsIGhhcnE9JXVsOjQsIGxlbj0ldWw6MTY+IgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19VRUlEX01JU01BVENIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bUkFdIFVFSUQgbWlzbWF0Y2ggYXQgYWJzX3RpbWU9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19VRUlEX01BVENIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bUkFdIFVFSUQgbWF0Y2ggYXQgYWJzX3RpbWU9JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ0RMX0xPR19SQ1ZfVENSTlRJX05PX1VFSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtETF1bUkFdW1dBUk5dIE5vIFVFSUQgYXQgYWJzX3RpbWU9JXVsIgoraW5mbwkJCSAgRU1BQ0RMX0xPR19SQ1ZfVENSTlRJX0lOVkFMSURfVEIgCQkJCQkJCQkgIEVNQUNfTFYwX0gJCSAiW0VNQUNdW0RMXVtSQV1bV0FSTl0gVEMtUk5USSBoZWFkZXIgcGFyc2UgZmFpbCBhdCBhYnNfdGltZT0ldWwiCisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUNICisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIElMTSBNeGNoIGNmZyByZXEgKFJSQykKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SRUxFQVNFX01DQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtNWENIXSBSZWxlYXNlIE1DQ0g6ICAgc2FpZD0ldWIsIGFpZD0ldWIsIG1jY2hfaWR4PSV1YiIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19SRUxFQVNFX01UQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtNWENIXSBSZWxlYXNlIE1UQ0g6ICAgc2FpZD0ldWIsIGFpZD0ldWIsIHBtY2hfaWQ9JXViLCBsY2lkPSV1YiwgbXRjaF9pZHg9JXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0VTVEFCTElTSF9NQ0NIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW01YQ0hdIEVzdGFibGlzaCBNQ0NIOiBzYWlkPSV1YiwgYWlkPSV1YiwgbWNjaF9pZHg9JXViIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX0VTVEFCTElTSF9NVENIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW01YQ0hdIEVzdGFibGlzaCBNVENIOiBzYWlkPSV1YiwgYWlkPSV1YiwgcG1jaF9pZD0ldWIsIGxjaWQ9JXViLCBtdGNoX2lkeD0ldWIiCisKKy8vIElMTSBEYXRhIGluZCAoRU1BQ0RMKQoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1JDVl9EQVRBX0lORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW0lMTV0gIFJjdiBEQVRBX0lORDogYWN0aXZlX3BpZHg9JXViLCB0cmFuc19waWR4PSV1YiwgdGJfcmN2X2Fic190aW1lPSV1bCIKKworLy8gLSBHZXQgUERVIGluZm8gZnJvbSBUQiBpbmZvCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fUERVX0lORk9fQllfVEJfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUERVXSAgVEJfSU5GTzogc2FpZD0ldWIsIHRicz0ldWwsIHJjdl9jZWxsX3RpbWU9JXVsIgorCisvLyAtIEdldCBQRFUgaW5mbyBmcm9tIE1BQyBzdWJoZWFkZXIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TSERSX1BSRV9QQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBTaGRyOiBwcmUtcGFkZGluZyBzaGRyPSV4YiIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TSERSXzNPQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBTaGRyICAgIDogbGNpZD0ldWIsIGxlbj0ldWwsIHBheWxvYWRfb2ZzPSV1bCwgc2hkcj0leGIgJXhiICV4YiIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TSERSXzJPQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBTaGRyICAgIDogbGNpZD0ldWIsIGxlbj0ldWwsIHBheWxvYWRfb2ZzPSV1bCwgc2hkcj0leGIgJXhiIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX1NIRFJfTEFTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV0gIFNoZHJMYXN0OiBsY2lkPSV1YiwgbGVuPSV1bCwgcGF5bG9hZF9vZnM9JXVsLCBzaGRyPSV4YiIKKworCisvLyAtIFByb2Nlc3MgTVNJIENFCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fTVNJX1BST0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUERVXSAgTVNJIHByb2Nlc3Npbmc6IG1zaV9sZW49JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX01TSV9TQ0hFRF9QQUlSX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV0gIE1TSTogc2NoZWR1bGVfcGFpcl9udW09JXVsIgoraW5mbyAgICAgICAgICAgICAgRU1BQ01DSF9UX0xPR19fX01TSV9TQ0hFRF9QQUlSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW1RdW1BEVV0gIE1TSTogbGNpZD0ldWIsIHN0b3BfbXRjaD0ldWQiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fVVBEQVRFX01TSV9JTlBVVF9CICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUERVXSAgVXBkYXRlIG1zaSgpOiBtaT0ldWwsIHN0YXJ0PSV1ZCwgZW5kPSV1ZCIKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19VUERBVEVfTVNJX0lOUFVUX0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBVcGRhdGUgbXNpKCk6IHNhaWQ9JXViLCBhaWQ9JXViLCBwbWNoX2lkPSV1Yiwgc2Zfbm89JXVsIgorCisvLyAtIFByb2Nlc3MgTVNJIENFIGZvciBNVENIIHN1c3BlbmQKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19NU0lfU1VTUEVORF9QQUlSX05VTSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBNU0k6IHN1c3BlbmRfcGFpcl9udW09JXVsLCBpc19jZmdfcG1jaF9pbmZvX2xpc3RfZXh0PSVNa2FsX2Jvb2wiCitpbmZvICAgICAgICAgICAgICBFTUFDTUNIX1RfTE9HX19fTVNJX1NVU1BFTkRfUEFJUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW01DSF1bVF1bUERVXSAgTVNJOiBsY2lkPSV1YiIKKworLy8gLSBQcm9jZXNzIE1DQ0gKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19NQ0NIX1BST0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBNQ0NIIHByb2Nlc3Npbmc6IG1jY2hfaWR4PSV1YiwgbXhjaF9pbmZvPSV1YiIKKworLy8gLSBQcm9jZXNzIE1UQ0gKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19NVENIX1BST0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtQRFVdICBNVENIIHByb2Nlc3Npbmc6IG10Y2hfaWR4PSV1YiwgbXhjaF9pbmZvPSV1YiIKKworLy8gLSBTZW5kIElMTSB0byBFUkxDREwKK2luZm8gICAgICAgICAgICAgIEVNQUNNQ0hfVF9MT0dfX19TTkRfTUNIX0RBVEFfSU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtUXVtJTE1dICBTbmQgTUNIX0RBVEFfSU5EOiBtYm1zX3BkdV9udW09JXViIgorCisKKy8vIFF1ZXJ5IG5leHQgbWNoCitpbmZvICAobm9uX3NtcCkgICBFTUFDTUNIX0xfTE9HX19fUVVFUllfTkVYVF9NQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW01DSF1bTF1bSUZdICAgUXVlcnkgbmV4dCBtY2g6IGFic190aW1lPSV1bCwgc2FfaWQ9JXViLCBhY3RpdmVfcGlkeD0ldWIsIGlucHV0X3BpZHg9JXViIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ01DSF9MX0xPR19fX0xPT0tfVVBfTkVYVF9QUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW0xdW1FVUlldIFNraXAgdGhpcyBwcyBkdWUgdG8gZmlsdGVyb3V0IG9yIG91dC1vZi1kYXRlIgoraW5mbyAgKG5vbl9zbXApICAgRU1BQ01DSF9MX0xPR19fX1FVRVJZX09VVFBVVF9CICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNQUNfTFYwX0ggICAgICAgIltFTUFDXVtNQ0hdW0xdW1FVUlldIE5leHQgbWNoOiBzYWlkPSV1YiBhaWQ9JXViLCBwbWNoX2lkPSV1Yiwgbm9uX21ic2ZuX3JlZ2lvbl9sZW49JXViLCBpc19tY2hfcmVsaWFibGU9JU1rYWxfYm9vbCIKK2luZm8gIChub25fc21wKSAgIEVNQUNNQ0hfTF9MT0dfX19RVUVSWV9PVVRQVVRfQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTUFDX0xWMF9IICAgICAgICJbRU1BQ11bTUNIXVtMXVtRVVJZXSBOZXh0IG1jaDogaXNfaGlnaGVyX29yZGVyX21jcz0lTWthbF9ib29sLCBpc19zaWduYWxfbWNzPSVNa2FsX2Jvb2wsIG1jcz0ldWIiCitpbmZvICAobm9uX3NtcCkgICBFTUFDTUNIX0xfTE9HX19fUVVFUllfT1VUUFVUX0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1BQ19MVjBfSCAgICAgICAiW0VNQUNdW01DSF1bTF1bUVVSWV0gTmV4dCBtY2g6IHNmX25vPSV1bCwgYWJzX3RpbWU9JXVsIgorCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZXJsY2RsX3RyYWNlX2ludGVybmFsLnRtZCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZXJsY2RsX3RyYWNlX2ludGVybmFsLnRtZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTMxM2RiCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjZGxfdHJhY2VfaW50ZXJuYWwudG1kCkBAIC0wLDAgKzEsNzUgQEAKK1tEZWZhdWx0XQorRVJMQ0RMX0lOVEVSTkFMCitPbgorTDJfQnVmZmVyCitUQ01GT1JDRQorTUFYX0FSRyAxNgorTDJfQlVGRkVSX1NFVFRJTkcgTDJfQlVGRkVSX0VMMgorCitbTW9kZW1fVHlwZV0KK0xURV9MMgorCitbQ2xhc3NdCitFUkxDRExfUkJfTSAgICAgT04KK0VSTENETF9SQl9MICAgICBPTgorRVJMQ0RMX1dBUk5fVUggICAgT04KK0VSTENETF9XQVJOX0ggICAgIE9OCitFUkxDRExfV0FSTl9NICAgICBPTgorRVJMQ0RMX0VSUk9SX1VIICAgT04KK0VSTENETF9FUlJPUl9IICAgIE9OCitFUkxDRExfQ09ORklHX0ggICBPTgorRVJMQ0RMX0NPTkZJR19NICAgT04KK0VSTENETF9USU1FUl9MICAgIE9OCitFUkxDRExfVElNRVJfVUwgICBPTgorRVJMQ0RMX0RFQlVHX1VIICAgT04KK0VSTENETF9ERUJVR19MICAgIE9OCitFUkxDRExfTUJNU19VSCAgICBPTgorRVJMQ0RMX01CTVNfTSAgICAgT04KKworW1N0cmluZ10KKworW01lc3NhZ2VdCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEZVTkMgTEVWRUwsIElOVEVSRkFDRSBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgIEVSTENETF9MT0dfSU5JVCAgICAgICAgICAgICAgICAgICAgRVJMQ0RMX0RFQlVHX0wgICAgICAiW0VSTENETF0gaW5pdGlhbGl6YXRpb24iCitpbmZvICAgRVJMQ0RMX0xPR19ETFNDSF9EQVRBX0lORCAgICAgICAgICBFUkxDRExfREVCVUdfTCAgICAgICJbRVJMQ0RMXSBETC1TQ0ggZGF0YSBpbmRpY2F0aW9uIChwZHVfbnVtPSV1YikiCitpbmZvICAgRVJMQ0RMX0xPR19NQ0hfREFUQV9JTkQgICAgICAgICAgICBFUkxDRExfREVCVUdfTCAgICAgICJbRVJMQ0RMXSBNQ0ggZGF0YSBpbmRpY2F0aW9uICAgIChwZHVfbnVtPSV1YikiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIENPTkZJR1VSQVRJT04gVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFJCIGNvbmZpZ3VyYXRpb24KK2luZm8gICBFUkxDRExfTE9HX1ZPTFRFX1JCX05URiAgICAgICAgICAgIEVSTENETF9DT05GSUdfTSAgICAgIltFUkxDRExdW1JCXSBWb0xURSBSQiBub3RpZmljYXRpb24gKGN1cl9waWQ9JXViLGN1cl92b2x0ZV9yYl9pZHg9JXViLHBpZD0ldWIsdm9sdGVfcmJfaWR4PSV1YikiCit3YXJuICAgRVJMQ0RMX0xPR19JTlZBTElEX1BJRCAgICAgICAgICAgICBFUkxDRExfV0FSTl9VSCAgICAgICJbRVJMQ0RMXVtSQl0gcmVjZWl2ZSBjb25maWd1cmF0aW9uIHdpdGggaW52YWxpZCBQSUQgKGN1cl9waWQ9JXViLHRyYW5zX3BpZD0ldWIpIgord2FybiAgIEVSTENETF9MT0dfRk9SQ0VfU0VUX1VNX1JFT0RSX1RNUiAgRVJMQ0RMX1dBUk5fVUggICAgICAiW0VSTENETF1bUkJdW1dBUk5dIEZvcmNlIHNldCBVTSB0LVJlb3JkZXJpbmcgdGltZXIgKHJiX2lkeD0ldWIsb2xkX3Rtcj0ldWQsbmV3X3Rtcj0ldWQsY2FzZT0ldWIpIgorCisvLyBNQk1TIFJCIGNvbmZpZ3VyYXRpb24KK2luZm8gICBFUkxDRExfTE9HX01CTVNfU1VTUEVORCAgICAgICAgICAgIEVSTENETF9NQk1TX1VIICAgICAgIltFUkxDRExdW1JCXVtNQk1TXSByZWxlYXNlIGFsbCBNQ0NIIGFuZCBNUkIgYnkgUlNWQVMgKG1ibXNfYm1wPSV1bCkiCitpbmZvICAgRVJMQ0RMX0xPR19NQk1TX1NVU1BFTkRfU0tJUCAgICAgICBFUkxDRExfTUJNU19VSCAgICAgICJbRVJMQ0RMXVtSQl1bTUJNU10gc2tpcCB0aGUgc2VydmljZSBzdXNwZW5kIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBSWCBEQVRBIFJPVVRJTkUgVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFJYIGRhdGEgZXJyb3IgdHJhY2UKK3dhcm4gICBFUkxDRExfTE9HX1NEVV9MRU5fT1ZFUkZMT1cgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXVtXQVJOXSBTRFUgbGVuIG92ZXJmbG93IChsZW49JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX1BEVV9TT19VTlJFQVNOICAgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXVtXQVJOXSB1bnJlYXNvbmFibGUgU08gKHJiX2lkeD0ldWIsbGVuPSV1ZCxzbj0ldWQsc289JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX01CTVNfSU5WQUxJRF9QSUQgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXVtXQVJOXSByeCBtYm1zIHdpdGggaW52YWxpZCBQSUQgKGN1cl9waWQ9JXViLHRyYW5zX3BpZD0ldWIpIgord2FybiAgIEVSTENETF9MT0dfRVhUX1BEVV9CVUZfU0hPUlRBR0UgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdW1dBUk5dIGV4dCBQRFUgYnVmZmVyIHNob3J0YWdlIgord2FybiAgIEVSTENETF9MT0dfRVhUX1NMSV9CVUZfT1ZFUkZMT1cgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdW1dBUk5dIGV4dCBTTEkgYnVmZmVyIG92ZXJmbG93Igord2FybiAgIEVSTENETF9MT0dfU0xJX09WRVJGTE9XICAgICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdW1dBUk5dIGRpc2NhcmQgU0RVIFNFR3MgKGhkcl9sZW49JXVkLGRhdGFfbGVuPSV1ZCxkaXNjX2xlbj0ldWQsZGlzY19zZHVfY250PSV1ZCkiCit3YXJuICAgRVJMQ0RMX0xPR19TTElfQlVGX09WRVJGTE9XICAgICAgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1BEVV1bV0FSTl0gU0xJIGJ1ZiBvdmVyZmxvdyIKK3dhcm4gICBFUkxDRExfTE9HX1NSQl9QRFVfQlVGX1NIT1JUQUdFICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXVtXQVJOXSBTUkIgUERVIGJ1ZmZlciBzaG9ydGFnZSwgdHJ5IERSQiBQRFUgcG9vbCAocmJfaWR4PSV1YikiCit3YXJuICAgRVJMQ0RMX0xPR19QRFVfQlVGX1dBUk5OSU5HXzEgICAgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1BEVV1bV0FSTl0gUERVIGJ1ZmZlciBhbGxvY2F0aW9uIGZhaWxlZCBidXQgdGhlcmUgYXJlIFBEVSBidWZmZXJzIChjdXJfdXNlZD0ldWQvJXVkKSIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogTVRLIFBST1BSSUVUQVJZIEZFQVRVUkUgVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIERMIFJMRiB3b3JrYXJvdW5kCitlcnJvciAgRVJMQ0RMX0xPR19SRVBFQVRfUERVX1JMRiAgICAgICAgICBFUkxDRExfRVJST1JfVUggICAgICAiW0VSTENETF1bUERVXVtFUlJPUl0gcmVwZWF0IFBEVSBSTEYgKHJiX2lkeD0ldWQ6Nixzbj0ldWQ6MTAsc289JXVkLHJlcGVhdF9jbnQ9JXViKSIKKworLy8gVU01IE9PVyBpbnNlcGN0aW9uCit3YXJuICBFUkxDRExfTE9HX1VNNV9QRFVfT0RSX1RTX0lOVkFMSUQgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1BEVV1bRVJST1JdIFVNNSBQRFUgb3JkZXIgaW5zcGVjdDogaW52YWxpZCB0aW1lc3RhbXAgKHJiX2lkeD0ldWIscmxjX3NuPSV1YixyZWFzbV90c19sYXN0PSV1bCxwZHVfdHM9JXVsKSIKK2luZm8gICBFUkxDRExfTE9HX1VNNV9QRFVfT0RSX1RTX1BEQ1BfU04gIEVSTENETF9XQVJOX00gICAgICAiW0VSTENETF1bUERVXSAgICAgICAgVU01IFBEVSBvcmRlciBpbnNwZWN0OiBkdW1wIGluZm9ybWF0aW9uICAocmJfaWR4PSV1YixybGNfc249JXViLHBkdV90cz0ldWwscGRjcF9zbl9maXJzdD0ldWQscGRjcF9zbl9sYXN0PSV1ZCkiCitpbmZvICAgRVJMQ0RMX0xPR19VTTVfUERVX09EUl9OT19QRENQX0hEUiBFUkxDRExfV0FSTl9NICAgICAgIltFUkxDRExdW1BEVV0gICAgICAgIFVNNSBQRFUgb3JkZXIgaW5zcGVjdDogbm8gUERDUCBoZWFkZXIgICAgKHJiX2lkeD0ldWIscmxjX3NuPSV1YixwZHVfdHM9JXVsKSIKK3dhcm4gICBFUkxDRExfTE9HX1VNNV9QRFVfT0RSX1BEQ1BfT09XICAgIEVSTENETF9XQVJOX00gICAgICAiW0VSTENETF1bUERVXVtXQVJOXSAgVU01IFBEVSBvcmRlciBpbnNwZWN0OiBQRENQIFNOIE9PVyAgICAgICAocmJfaWR4PSV1YixybGNfc249JXViLHBkY3Bfc25fbmV4dD0ldWQscGRjcF9zbl9maXJzdD0ldWQscGRjcF9zbl9sYXN0PSV1ZCkiCisKKy8vIEFnZ3JlZ2F0aW9uIHRyYWNlIHRpbWVyIGluamVjdAoraW5mbyAgIEVSTENETF9MT0dfQUdHX1RNUl9TRVQgICAgICAgICAgICAgRVJMQ0RMX0RFQlVHX1VIICAgICAiW0VSTENETF0gQWdncmVnYXRpb24gdHJhY2UgdGltZXIgcGVyaW9kIHVwZGF0ZSAodGltZXIgPSAldWQgbXMpIgorCisvLyBzdGF0dXMgcmUtdHJhbnNtaXNzaW9uCitpbmZvICAgRVJMQ0RMX0xPR19TVEFUVVNfUERVX1RYX0ZBSUwgICAgICBFUkxDRExfUkJfTSAgICAgIltFUkxDRExdW1JQVF0gU1RBVFVTIFBEVSB0eCBmYWlsdXJlIChyYl9pZHg9JXViKSIKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjZGxfdHJhY2VfcHJvdGVjdC50bWQgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VybGNkbF90cmFjZV9wcm90ZWN0LnRtZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTIzZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjZGxfdHJhY2VfcHJvdGVjdC50bWQKQEAgLTAsMCArMSw5NCBAQAorW0RlZmF1bHRdCitFUkxDRExfUFJPVEVDVAorT24KK0wyX0J1ZmZlcgorVENNRk9SQ0UKK01BWF9BUkcgMTYKK0wyX0JVRkZFUl9TRVRUSU5HIEwyX0JVRkZFUl9FTDIKKworW01vZGVtX1R5cGVdCitMVEVfTDIKKworW0NsYXNzXQorRVJMQ0RMX1NSQl9IICAgIE9OCitFUkxDRExfU1JCX00gICAgT04KK0VSTENETF9TUkJfTCAgICBPTgorRVJMQ0RMX1NSQl9VTCAgIE9OCitFUkxDRExfRFJCX0ggICAgT04KK0VSTENETF9EUkJfTSAgICBPTgorRVJMQ0RMX0RSQl9MICAgIE9OCitFUkxDRExfRFJCX1VMICAgT04KK0VSTENETF9SQl9NICAgIE9OCitFUkxDRExfUkJfTCAgICBPTgorRVJMQ0RMX1dBUk5fVUggICBPTgorRVJMQ0RMX1dBUk5fSCAgICBPTgorRVJMQ0RMX1dBUk5fTSAgICBPTgorRVJMQ0RMX0VSUk9SX1VIICAgT04KK0VSTENETF9FUlJPUl9IICAgIE9OCitFUkxDRExfQ09ORklHX0ggICAgT04KK0VSTENETF9DT05GSUdfTSAgICBPTgorRVJMQ0RMX1RJTUVSX0wgICAgT04KK0VSTENETF9USU1FUl9VTCAgIE9OCitFUkxDRExfREVCVUdfSCAgICBPTgorRVJMQ0RMX0RFQlVHX00gICAgT04KK0VSTENETF9ERUJVR19MICAgIE9OCitFUkxDRExfTUJNU19NICAgICBPTgorCisKK1tTdHJpbmddCisKK1tNZXNzYWdlXQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBMMiBDT1BSTyBSRUxBVEVEIFRSQUNFICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBSZWFzc2VtYmxlIHByb2Nlc3MKK2luZm8gICBFUkxDRExfTE9HX1BSU0JfVU5ETzEgICAgICAgICAgICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl1bRElTQ10gZGlzY2FyZCBpbmNvbXBsZXRlIFNEVSAobGVuPSV1ZCxuX3NlZz0ldWQpIGJlZm9yZSBQRFUoc249JXVkKSIKK2luZm8gICBFUkxDRExfTE9HX1BSU0JfRElTQ18xc3RfU0RVICAgICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl1bRElTQ10gZGlzY2FyZCB0aGUgZmlyc3QgU0RVIHNlZ21lbnQobGVuPSV1ZCkgb2YgUERVKHNuPSV1ZCkiCit3YXJuICAgRVJMQ0RMX0xPR19QUlNCX0RJU0NfSU5WQUxJRF9QRFUgICBFUkxDRExfV0FSTl9NICAgICAgICJbRVJMQ0RMXVtSU0JdW1dBUk5dIHNraXAgaW52YWxpZCBwZHUgKHNuPSV1ZCkiCit3YXJuICAgRVJMQ0RMX0xPR19QUlNCX0lOQ01QTFRfU0VHICAgICAgICBFUkxDRExfV0FSTl9NICAgICAgICJbRVJMQ0RMXVtSU0JdW1dBUk5dIHBkdSBzbygldWQpIGlzIG5vdCBleHBlY3RlZCBzbygldWQpIgoraW5mbyAgIEVSTENETF9MT0dfUFJTQl9GSUxMX1JTTVQgICAgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSB3cml0ZSBhIHJlYXNzZW1ibGUgZW50cnkgKGZsb3dfaWR4PSV1ZDo4LHJzYl9pZHg9JXVkOjgsc2R1X251bT0ldWw6MTYsc2VnX251bT0ldWw6MTYsc2R1X2xlbj0ldWwpKGluY21wbHQgc2VnPSV1bDoxNiwgbGVuPSV1bDoxNikiCitpbmZvICAgRVJMQ0RMX0xPR19QUlNCX0ZJTExfRkxVU0ggICAgICAgICBFUkxDRExfREVCVUdfTSAgICAgICJbRVJMQ0RMXVtSU0JdIHdyaXRlIGEgcmVhc3NlbWJsZSBlbnRyeSBmb3IgcmUtZXN0YWJsaXNoIChmbG93X2lkeD0ldWQ6OCwgcnNiX2lkeD0ldWQ6OCkiCit3YXJuICAgRVJMQ0RMX0xPR19QUlNCX1JTTVRfRlVMTCAgICAgICAgICBFUkxDRExfV0FSTl9NICAgICAgICJbRVJMQ0RMXVtSU0JdW1dBUk5dIFJTTVQgZnVsbCEhIChmbG93X2lkeD0ldWIsIHJzYl9uZXh0X2lkeD0ldWQpIgoraW5mbyAgIEVSTENETF9MT0dfUFJTQl9ESVNDX1JFQVNNX1BEVSAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSBkaXNjYXJkIGFsbCBwZW5kaW5nIFBEVXMgZHVyaW5nIGZsdXNoIHByb2NlZHVyZSAoZmxvd19pZHg9JXViLHNkdV9udW09JWQsIHNlZ19udW09JXVkLHNkdV9sZW49JXVsKShpbmNtcGx0IHNlZz0ldWQsIGxlbj0ldWQpIgoraW5mbyAgIEVSTENETF9MT0dfQ1JTQl9SRUxfUlNNVF9FTDIgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSByZWxlYXNlIHJlbWFpbmluZyByc210IGVudHJpZXMgKGZsb3dfaWR4PSV1YixyZWxlYXNlIHJhbmdlPVsldWIsJXViKSkiCitpbmZvICAgRVJMQ0RMX0xPR19DUlNCX1JFTF9SU01UX0VMMkggICAgICBFUkxDRExfREVCVUdfTSAgICAgICJbRVJMQ0RMXVtSU0JdIHJlbGVhc2UgcmVtYWluaW5nIHJzbXQgZW50cmllcyAoZmxvd19pZHg9JXViLHJlbGVhc2UgcmFuZ2U9WyV1YiwldWIpKSIKK2luZm8gICBFUkxDRExfTE9HX0NSU0JfTk1MX1JTQiAgICAgICAgICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl0gcmVhc3NlbWJsZSBSTEMgU0RVKGZsb3dfaWR4PSV1ZDo1LHY9JXVkOjEscnNiX25leHRfaWR4PSV1ZDoxMCxkY2l0X3dyaXRlX2lkeD0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfQ1JTQl9NQk1TX1JTQiAgICAgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bTUJNU11bUlNCXSByZWFzc2VtYmxlIE1CTVMgU0RVKGZsb3dfaWR4PSV1ZDo1LHY9JXVkOjEscnNiX25leHRfaWR4PSV1ZDoxMCxkY2l0X3dyaXRlX2lkeD0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfQ1JTQl9TUkJfUlNCICAgICAgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSByZWFzc2VtYmxlIG9uZSBTUkIgUkxDIFNEVShmbG93X2lkeD0ldWQ6NSx2PSV1ZDoxLHJzYl9uZXh0X2lkeD0ldWQ6MTAsZGNpdF93cml0ZV9pZHg9JXViKSIKK2luZm8gICBFUkxDRExfTE9HX0NSU0JfTFdBX1JTQiAgICAgICAgICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl0gcmVhc3NlbWJsZSBMV0EgU0RVKGZsb3dfaWR4PSV1ZDo1LGx3YV9uZXh0X2lkeD0ldWQ6MTEsZGNpdF93cml0ZV9pZHg9JXViKSIKK2luZm8gICBFUkxDRExfTE9HX0NSU0JfTk1MX0RFU0MxICAgICAgICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl0gc3RhcnQgZmlsbCBub3JtYWwgZGVzY3JpcHRvciBmb3IgcGR1IChuX3NraXA9JXViLG5fc2xpPSV1Yix2cmJfbGVuPSV1ZCx2cmJfYWRkcj0leGwpIgoraW5mbyAgIEVSTENETF9MT0dfQ1JTQl9OTUxfREVTQzIgICAgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSAgICAgICBmaWxsIG5vcm1hbCBkZXNjcmlwdG9yIChsZW49JXVsOjE1LGZyZWU9JXVsOjEsdnJiX29mc3Q9JXVsOjE0LGNvbnQ9JXVsOjIpIgoraW5mbyAgIEVSTENETF9MT0dfQ1JTQl9TVEFSVF9ERUNJUCAgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSBzdGFydCBjaXBoZXIgY29wcm8gKHdjPSV1ZCwgZGVjX3dyaXRlX2lkeD0ldWQpIgoraW5mbyAgIEVSTENETF9MT0dfQ1JTQl9OTUxfTElTVCAgICAgICAgICAgRVJMQ0RMX0RFQlVHX00gICAgICAiW0VSTENETF1bUlNCXSBzdGFydCB0byByZWFzc2VtYmxlIGEgcnNtdCAocnNtdF9pZHg9JXVkLGRlY193cml0ZV9pZHg9JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX0NSU0JfV0NfU0hPUlRBR0UxICAgICAgIEVSTENETF9XQVJOX00gICAgICAgIltFUkxDRExdW1JTQl1bV0FSTl0gY2Fubm90IGNvbXBsZXRlbHkgc2VydmUgdGhlIGVudHJ5IChmbGFncz0leGw6OCxmbG93X2lkeD0ldWw6OCxuX3NkdT0ldWw6MTYsbl9zZWc9JXVkLHNkdV9sZW49JXVsKSIKK3dhcm4gICBFUkxDRExfTE9HX0NSU0JfV0NfU0hPUlRBR0UyICAgICAgIEVSTENETF9XQVJOX00gICAgICAgIltFUkxDRExdW1JTQl1bV0FSTl0gdHJ1bmNhdGUgcmVzdWx0IChmbGFncz0leGw6OCxmbG93X2lkeD0ldWw6OCxuX3NkdT0ldWw6MTYsbl9zZWc9JXVkLHNkdV9sZW49JXVsKSIKK3dhcm4gICBFUkxDRExfTE9HX0NSU0JfV0NfU0hPUlRBR0UzICAgICAgIEVSTENETF9XQVJOX00gICAgICAgIltFUkxDRExdW1JTQl1bV0FSTl0gbm90IGVub3VnaCB3b3JkIGNvdW50KHJlbWFpbl93Yz0ldWQsIGRlY193cml0ZV9pZHg9JXVkLCBhbGxvd19sZW49JXVsKSIKK2luZm8gICBFUkxDRExfTE9HX0NSU0JfTUJNU19JTkZPICAgICAgICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl0gICAgICAgZmlsbCBtYm1zIGluZm8gKG1jY2hfbXBfaWQ9JXVsOjgsbWNjaF9pZHg9JXVsOjgsY2k9JXVsOjE2KSIKK2luZm8gICBFUkxDRExfTE9HX0NSU0JfTFdBX0NIR19SQl9JRFggICAgIEVSTENETF9ERUJVR19NICAgICAgIltFUkxDRExdW1JTQl0gY2hhbmdlIHJiX2lkeChmbGFncz0leGw6OCxyYl9pZHg9JXVsOjgsbl9zZHU9JXVsOjE2KSIKK3dhcm4gICBFUkxDRExfTE9HX0NMRE1BX05PVF9SRUFEWSAgICAgICAgIEVSTENETF9XQVJOX00gICAgICAgIltFUkxDRExdW1JTQl1bV0FSTl0gQ0xETUEgbm90IHJlYWR5ISIKK3dhcm4gICBFUkxDRExfTE9HX1BSU0JfTEFSR0VSX1NEVSAgICAgICAgIEVSTENETF9XQVJOX00gICAgICAgIltFUkxDRExdW1JTQl1bV0FSTl1bRElTQ10gU0RVIGxlbiBvdmVyZmxvdyAobGVuPSV1ZD4ldWQpIgorCisvLyBWQSBzaG9ydGFnZSBjaGVjayAmIGhhbmRsaW5nCitpbmZvICAgRVJMQ0RMX0xPR19WQV9DSEtfQ05UWF9JTiAgICAgICAgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1ZBXSBjaGVjayBzaG9ydGFnZSBWQSBpbiBjb250ZXh0ICh2cmJfaWQ9JXViLG5leHRfYWRkX2ZhaWxfYWRkcj0leGwpIgord2FybiAgIEVSTENETF9MT0dfVkFfQ0hLX0NOVFhfSElUX0xJU1RfMSAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtWQV1bV0FSTl0gaGl0IHNob3J0YWdlIFZBIGluIGNvbnRleHQgLSByZWFzc2VtYmxlIGxpc3QgKHJiX2lkeD0ldWIscF9wZHU9JXhsLHBfdnJiPSV4bCxsZW49JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX1ZBX0NIS19DTlRYX0hJVF9MSVNUXzIgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bVkFdW1dBUk5dIGhpdCBzaG9ydGFnZSBWQSBpbiBjb250ZXh0IC0gcmVhc3NlbWJsZSBsaXN0IChyYl9pZHg9JXViOjMsY2k9JXViOjEsbXJiPSV1YjoxLCVwYjozcF9wZHU9JXhsLHBfdnJiPSV4bCxsZW49JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX1ZBX0NIS19DTlRYX0hJVF9STyAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bVkFdW1dBUk5dIGhpdCBzaG9ydGFnZSBWQSBpbiBjb250ZXh0IC0gcmVvcmRlcmluZyB3aW5kb3cgKHJiX2lkeD0ldWIsc249JXVkLHBfcGR1PSV4bCxwX3ZyYj0leGwsbGVuPSV1ZCkiCitpbmZvICAgRVJMQ0RMX0xPR19WQV9DSEtfUlNNVF9JTiAgICAgICAgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1ZBXSBjaGVjayBzaG9ydGFnZSBWQSBpbiBSU01UICh2cmJfaWQ9JXViLG5leHRfYWRkX2ZhaWxfYWRkcj0leGwpIgord2FybiAgIEVSTENETF9MT0dfVkFfQ0hLX1JTTVRfSElUICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtWQV1bV0FSTl0gaGl0IHNob3J0YWdlIFZBIGluIFJTTVQgKGZsb3dfaWR4PSV1YixjdXJfaWR4PSV1YixwX3BkdT0leGwscF92cmI9JXhsLGxlbj0ldWQpIgord2FybiAgIEVSTENETF9MT0dfVkFfQ0hLX0lOVkFMX1ZSQl9JRCAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtWQV1bV0FSTl0gY2hlY2sgc2hvcnRhZ2UgVkEgLSBpbnZhbGlkIFZSQiBJRCAodnJiX2lkPSV1YixuZXh0X2FkZF9mYWlsX2FkZHI9JXhsKSIKK2luZm8gICBFUkxDRExfTE9HX1ZBX0NIS19SRUxfUkJfREFUQSAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bVkFdIFN0YXJ0IHRvIGNsZWFyIGRhdGEgKGZsb3dfaWR4PSV1YixyYl9pZHg9JXViLHNuX3I9JXVkLHNuX2g9JXVkKSIKK2luZm8gICBFUkxDRExfTE9HX1ZBX0NIS19SRUxfUERVX0RBVEEgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bVkFdIGZyZWUgUERVIChzbj0ldWQsc289JXVkKSIKKworLy8gVlJCIHNob3J0YWdlIGNoZWNrICYgaGFuZGxpbmcKK3dhcm4gICBFUkxDRExfTE9HX1ZSQl9TSE9SVEFHRSAgICAgICAgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAgIltFUkxDRExdW1ZSQl1bV0FSTl0gVlJCIHNob3J0YWdlIHN0YXR1cyAobW9kZT0ldWIscmVtYWluX3NpemU9JXVsKSIKK2luZm8gICBFUkxDRExfTE9HX1ZSQl9TSE9SVEFHRV9UTVJfU1RBUlQgICAgIEVSTENETF9XQVJOX1VICSAgICAgIltFUkxDRExdW1ZSQl1bVE1SXSBWUkIgc2hvcnRhZ2UgcHJvdGVjdCB0aW1lciBzdGFydCAobW9kZT0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfVlJCX1NIT1JUQUdFX1RNUl9FWFBJUkUgICAgRVJMQ0RMX1dBUk5fVUgJICAgICAiW0VSTENETF1bVlJCXVtUTVJdIFZSQiBzaG9ydGFnZSBwcm90ZWN0IHRpbWVyIGV4cGlyZSAobW9kZT0ldWIpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBNVEsgUFJPUFJJRVRBUlkgRkVBVFVSRSBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gVmlydHVhbCBjb25uZWN0ZWQKK2luZm8gICBFUkxDRExfTE9HX0VOVEVSX1ZfQ09OTiAgICAgICAgICAgRVJMQ0RMX0RFQlVHX0wJICAiW0VSTENETF1bUkJdW1ZDT05OXSBlbnRlciB2aXJ0dWFsLWNvbm5lY3RlZCBzdGF0ZSIKK2luZm8gICBFUkxDRExfTE9HX0xFQVZFX1ZfQ09OTiAgICAgICAgICAgRVJMQ0RMX0RFQlVHX0wJICAiW0VSTENETF1bUkJdW1ZDT05OXSBsZWF2ZSB2aXJ0dWFsLWNvbm5lY3RlZCBzdGF0ZSIKKworLy8gTUJNUyBFRlVTRQord2FybiAgIEVSTENETF9MT0dfTUJNU19BRERfTUNDSF9FRlVTRSAgICBFUkxDRExfREVCVUdfTCAgICAgICJbRVJMQ0RMXVtSQl1bTUJNU11bV0FSTl0gbm90IGFsbG93IGVzdGFibGlzaCBNQ0NIIChtY2NoX2lkeD0ldWI6MyxjaT0ldWI6MSkiCit3YXJuICAgRVJMQ0RMX0xPR19NQk1TX0FERF9NUkJfRUZVU0UgICAgIEVSTENETF9ERUJVR19MICAgICAgIltFUkxDRExdW1JCXVtNQk1TXVtXQVJOXSBub3QgYWxsb3cgZXN0YWJsaXNoIE1SQiAobXJiX2lkeD0ldWI6MyxjaT0ldWI6MSkiCisKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZXJsY2RsX3RyYWNlX3B1YmxpYy50bWQgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VybGNkbF90cmFjZV9wdWJsaWMudG1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYzE4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VybGNkbF90cmFjZV9wdWJsaWMudG1kCkBAIC0wLDAgKzEsMTY4IEBACitbRGVmYXVsdF0KK0VSTENETF9QVUJMSUMKK09uCitMMl9CdWZmZXIKK1RDTUZPUkNFCitNQVhfQVJHIDE2CitMMl9CVUZGRVJfU0VUVElORyBMMl9CVUZGRVJfRUwyCisKK1tNb2RlbV9UeXBlXQorTFRFX0wyCisKK1tDbGFzc10KK0VSTENETF9TUkJfVUggICAgT04KK0VSTENETF9TUkJfSCAgICBPTgorRVJMQ0RMX1NSQl9NICAgIE9OCitFUkxDRExfU1JCX0wgICAgT04KK0VSTENETF9TUkJfVUwgICBPTgorRVJMQ0RMX0RSQl9VSCAgICBPTgorRVJMQ0RMX0RSQl9IICAgIE9OCitFUkxDRExfRFJCX00gICAgT04KK0VSTENETF9EUkJfTCAgICBPTgorRVJMQ0RMX0RSQl9VTCAgIE9OCitFUkxDRExfUkJfTSAgICBPTgorRVJMQ0RMX1JCX0wgICAgT04KK0VSTENETF9XQVJOX1VIICAgT04KK0VSTENETF9XQVJOX0ggICAgT04KK0VSTENETF9FUlJPUl9VSCAgIE9OCitFUkxDRExfRVJST1JfSCAgICBPTgorRVJMQ0RMX0NPTkZJR19IICAgIE9OCitFUkxDRExfQ09ORklHX00gICAgT04KK0VSTENETF9USU1FUl9MICAgIE9OCitFUkxDRExfVElNRVJfVUwgICBPTgorRVJMQ0RMX0RFQlVHX0ggICAgT04KK0VSTENETF9ERUJVR19NICAgIE9OCitFUkxDRExfTUJNU19NICAgICBPTgorCitbU3RyaW5nXQorCitFUkxDRExfUkJfQ0ZHX1RZUEUKK3sKKwkicmVsZWFzZSIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vMAorCSJlc3RhYmxpc2giLCAgICAgICAgICAgICAgICAgICAgICAgLy8xCisJInJlLWVzdGFibGlzaCIsICAgICAgICAgICAgICAgICAgICAvLzIKKwkicmUtY29uZmlnIiwgICAgICAgICAgICAgICAgICAgICAgIC8vMworCSJyZS1lc3RhYmxpc2god2l0aG91dCBjb25maWcpIiAgICAgLy80Cit9CisKK0VSTENETF9SQl9NT0RFX1R5cGUKK3sKKyAgICAiQU0xMCB3aXRoIExJMTEiLCAgICAgICAgICAgICAgICAgIC8vNQorICAgICJBTTEwIHdpdGggTEkxNSIsICAgICAgICAgICAgICAgICAgLy82CisgICAgIlVNNSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLzcKKyAgICAiVU0xMCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vOAorfQorCitbTWVzc2FnZV0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIENPTkZJR1VSQVRJT04gVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFJCIGNvbmZpZ3VyYXRpb24KK2luZm8gICBFUkxDRExfTE9HX1JCX0NGRyAgICAgICAgICAgICAgICAgIEVSTENETF9DT05GSUdfTSAgICAgIltFUkxDRExdW1JCXSAlcyBSQiAocmJfaWR4PSV1YixyYmlkPSV1YikiCitpbmZvICAgRVJMQ0RMX0xPR19ERUxfT0xEX0RSQiAgICAgICAgICAgICBFUkxDRExfQ09ORklHX0ggICAgICJbRVJMQ0RMXVtSQl0gcmVsZWFzZSBvbGQgRFJCIChyYl9pZHg9JXVkLG5ld19yYmlkPSV1ZCxvbGRfcmJpZD0ldWQpIgoraW5mbyAgIEVSTENETF9MT0dfREVMX05FV19EUkIgICAgICAgICAgICAgRVJMQ0RMX0NPTkZJR19IICAgICAiW0VSTENETF1bUkJdIHJlbGVhc2UgbmV3IERSQiAocmJfaWR4PSV1ZCxuZXdfcmJpZD0ldWQsb2xkX3JiaWQ9JXVkKSIKK2luZm8gICBFUkxDRExfTE9HX0FERF8yTkRfRFJCICAgICAgICAgICAgIEVSTENETF9DT05GSUdfSCAgICAgIltFUkxDRExdW1JCXSBlc3RhYmxpc2ggRFJCIChyYl9pZHg9JXViLG9sZF9yYmlkPSV1YixuZXdfcmJpZD0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfU0VUVVBfQU1fVElNRVIgICAgICAgICAgRVJMQ0RMX0NPTkZJR19NICAgICAiW0VSTENETF1bUkJdW0NGR10gJXMgUkIgaW5mbyAocmJfaWR4PSV1Yix0LVJlb3JkZXJpbmc9JXVkLHQtU3RhdHVzUHJvaGliaXQ9JXVkKSIKK2luZm8gICBFUkxDRExfTE9HX1NFVFVQX1VNX1RJTUVSICAgICAgICAgIEVSTENETF9DT05GSUdfTSAgICAgIltFUkxDRExdW1JCXVtDRkddICVzIFJCIGluZm8gKHJiX2lkeD0ldWIsdC1SZW9yZGVyaW5nPSV1ZCkiCit3YXJuICAgRVJMQ0RMX0xPR19SQl9QQVJBTV9FUlIgICAgICAgICAgICBFUkxDRExfQ09ORklHX00gICAgICJbRVJMQ0RMXVtSQl1bV0FSTl0gUkIgcGFyYW1ldGVyIGVycm9yIgord2FybiAgIEVSTENETF9MT0dfUkJfU1RVU19FUlIgICAgICAgICAgICAgRVJMQ0RMX0NPTkZJR19NICAgICAiW0VSTENETF1bUkJdW1dBUk5dIFJCIHN0YXR1cyBlcnJvciIKKworLy8gTUJNUyBSQiBjb25maWd1cmF0aW9uCitpbmZvICAgRVJMQ0RMX0xPR19NQk1TX0FERF9NQ0NIICAgICAgICAgICBFUkxDRExfQ09ORklHX0ggICAgICJbRVJMQ0RMXVtSQl1bTUJNU10gZXN0YWJsaXNoIE1DQ0ggKG1jY2hfaWR4PSV1YjozLGNpPSV1YjoxKSIKK2luZm8gICBFUkxDRExfTE9HX01CTVNfREVMX01DQ0ggICAgICAgICAgIEVSTENETF9DT05GSUdfSCAgICAgIltFUkxDRExdW1JCXVtNQk1TXSByZWxlYXNlIE1DQ0ggKG1jY2hfaWR4PSV1YjozLGNpPSV1YjoxKSIKK2luZm8gICBFUkxDRExfTE9HX01CTVNfQUREX01SQiAgICAgICAgICAgIEVSTENETF9DT05GSUdfSCAgICAgIltFUkxDRExdW1JCXVtNQk1TXSBlc3RhYmxpc2ggTVJCIChtcmJfaWR4PSV1YjozLGNpPSV1YjoxKSIKK2luZm8gICBFUkxDRExfTE9HX01CTVNfREVMX01SQiAgICAgICAgICAgIEVSTENETF9DT05GSUdfSCAgICAgIltFUkxDRExdW1JCXVtNQk1TXSByZWxlYXNlIE1SQiAobXJiX2lkeD0ldWI6MyxjaT0ldWI6MSkiCitpbmZvICAgRVJMQ0RMX0xPR19NQk1TX1BDX1JFUSAgICAgICAgICAgICBFUkxDRExfQ09ORklHX00gICAgICJbRVJMQ0RMXVtMQkNdIHJlY2VpdmUgdG90YWwgJXVkIE1SQiBTRFVzIChtcmJfaWR4PSV1YjozLGNpPSV1YjoxJXBiOjQpIgoraW5mbyAgIEVSTENETF9MT0dfTUJNU19MQl9BQ1QgICAgICAgICAgICAgRVJMQ0RMX0NPTkZJR19NICAgICAiW0VSTENETF1bTEJDXSBhY3RpdmF0ZSBsb29wIG1vZGUgQyAobXJiX2lkeD0ldWI6MyxjaT0ldWI6MSkiCitpbmZvICAgRVJMQ0RMX0xPR19NQk1TX0xCX0RFQUNUICAgICAgICAgICBFUkxDRExfQ09ORklHX00gICAgICJbRVJMQ0RMXVtMQkNdIGRlYWN0aXZhdGUgbG9vcCBtb2RlIEMgKG1yYl9pZHg9JXViOjMsY2k9JXViOjEpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBSWCBEQVRBIFJPVVRJTkUgVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFJYIGRhdGEgZXhwbGljaXQgdHJhY2U6IFBEVSwgUERVIHNlZ21lbnQgaW5mbworaW5mbyAgIEVSTENETF9MT0dfU1JCX1JYX0FNX1BEVSAgICAgICAgICAgRVJMQ0RMX1NSQl9NICAgICAgICAiW0VSTENETF1bUERVXSByeCBBTSBQRFUgICAocmJfaWR4PSV1ZDo2LHNuPSV1ZDoxMCxsZW49JXVkLCVwYjoyZT0ldWI6MSxmaT0ldWI6MixwPSV1YjoxKSIKK2luZm8gICBFUkxDRExfTE9HX1NSQl9SWF9BTV9TRUcgICAgICAgICAgIEVSTENETF9TUkJfTSAgICAgICAgIltFUkxDRExdW1BEVV0gcnggQU0gU0VHICAgKHJiX2lkeD0ldWQ6Nixzbj0ldWQ6MTAsbGVuPSV1ZCxzbz0ldWQsJXBiOjFsc2Y9JXViOjEsZT0ldWI6MSxmaT0ldWI6MixwPSV1YjoxKSIKK2luZm8gICBFUkxDRExfTE9HX0RSQl9SWF9BTV9QRFUgICAgICAgICAgIEVSTENETF9EUkJfTSAgICAgICAgIltFUkxDRExdW1BEVV0gcnggQU0gUERVICAgKHJiX2lkeD0ldWQ6Nixzbj0ldWQ6MTAsbGVuPSV1ZCwlcGI6MmU9JXViOjEsZmk9JXViOjIscD0ldWI6MSkiCitpbmZvICAgRVJMQ0RMX0xPR19EUkJfUlhfQU1fU0VHICAgICAgICAgICBFUkxDRExfRFJCX00gICAgICAgICJbRVJMQ0RMXVtQRFVdIHJ4IEFNIFNFRyAgIChyYl9pZHg9JXVkOjYsc249JXVkOjEwLGxlbj0ldWQsc289JXVkLCVwYjoxbHNmPSV1YjoxLGU9JXViOjEsZmk9JXViOjIscD0ldWI6MSkiCitpbmZvICAgRVJMQ0RMX0xPR19EUkJfUlhfVU0xMF9QRFUgICAgICAgICBFUkxDRExfRFJCX00gICAgICAgICJbRVJMQ0RMXVtQRFVdIHJ4IFVNMTAgUERVIChyYl9pZHg9JXVkOjYsc249JXVkOjEwLGxlbj0ldWQsJXBiOjJlPSV1YjoxLGZpPSV1YjoyKSIKK2luZm8gICBFUkxDRExfTE9HX0RSQl9SWF9VTTVfUERVICAgICAgICAgIEVSTENETF9EUkJfTSAgICAgICAgIltFUkxDRExdW1BEVV0gcnggVU01IFBEVSAgKHJiX2lkeD0ldWQ6Nixzbj0ldWQ6MTAsbGVuPSV1ZCwlcGI6MmU9JXViOjEsZmk9JXViOjIsJXBiOjNwZHVfdHM9JWwpIgoraW5mbyAgIEVSTENETF9MT0dfRFJCX1JYX01CTVNfUERVICAgICAgICAgRVJMQ0RMX01CTVNfTSAgICAgICAiW0VSTENETF1bUERVXSByeCBNQk1TIFBEVSAocmJfaWR4PSV1ZDozLGNpPSV1ZDoxLG1yYj0ldWQ6Mixzbj0ldWQ6MTAsbGVuPSV1ZCwlcGI6MmU9JXViOjEsZmk9JXViOjIpIgorCisvLyBSWCBkYXRhIGV4cGxpY2l0IHRyYWNlOiBTRFUgaW5mbworLy8gTEkgPSAxMSBiaXRzCitpbmZvICAgRVJMQ0RMX0xPR19TUkJfU0xJX0xJMTFfMSAgICAgICAgICBFUkxDRExfU1JCX0wgICAgICAgICJbRVJMQ0RMXVtQRFVdIFNEVSBpbmZvOiAobGVuIHggbnVtKSAoJXVkOjExeCV1ZDo1KSIKK2luZm8gICBFUkxDRExfTE9HX1NSQl9TTElfTEkxMV8yICAgICAgICAgIEVSTENETF9TUkJfTCAgICAgICAgIltFUkxDRExdW1BEVV0gU0RVIGluZm86IChsZW4geCBudW0pICgldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1KSIKK2luZm8gICBFUkxDRExfTE9HX1NSQl9TTElfTEkxMV8zICAgICAgICAgIEVSTENETF9TUkJfTCAgICAgICAgIltFUkxDRExdW1BEVV0gU0RVIGluZm86IChsZW4geCBudW0pICgldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1LCV1ZDoxMXgldWQ6NSkiCitpbmZvICAgRVJMQ0RMX0xPR19TUkJfU0xJX0xJMTFfNCAgICAgICAgICBFUkxDRExfU1JCX0wgICAgICAgICJbRVJMQ0RMXVtQRFVdIFNEVSBpbmZvOiAobGVuIHggbnVtKSAoJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1KSIKK2luZm8gICBFUkxDRExfTE9HX0RSQl9TTElfTEkxMV8xICAgICAgICAgIEVSTENETF9EUkJfTCAgICAgICAgIltFUkxDRExdW1BEVV0gU0RVIGluZm86IChsZW4geCBudW0pICgldWQ6MTF4JXVkOjUpIgoraW5mbyAgIEVSTENETF9MT0dfRFJCX1NMSV9MSTExXzIgICAgICAgICAgRVJMQ0RMX0RSQl9MICAgICAgICAiW0VSTENETF1bUERVXSBTRFUgaW5mbzogKGxlbiB4IG51bSkgKCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUpIgoraW5mbyAgIEVSTENETF9MT0dfRFJCX1NMSV9MSTExXzMgICAgICAgICAgRVJMQ0RMX0RSQl9MICAgICAgICAiW0VSTENETF1bUERVXSBTRFUgaW5mbzogKGxlbiB4IG51bSkgKCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUsJXVkOjExeCV1ZDo1KSIKK2luZm8gICBFUkxDRExfTE9HX0RSQl9TTElfTEkxMV80ICAgICAgICAgIEVSTENETF9EUkJfTCAgICAgICAgIltFUkxDRExdW1BEVV0gU0RVIGluZm86IChsZW4geCBudW0pICgldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUpIgorLy8gTEkgPSAxNSBiaXRzCitpbmZvICAgRVJMQ0RMX0xPR19TUkJfU0xJX0xJMTVfMSAgICAgICAgICBFUkxDRExfU1JCX0wgICAgICAgICJbRVJMQ0RMXVtQRFVdIFNEVSBpbmZvOiAobGVuKXgobnVtKSAoJXVkKXgoJXViKSIKK2luZm8gICBFUkxDRExfTE9HX1NSQl9TTElfTEkxNV8yICAgICAgICAgIEVSTENETF9TUkJfTCAgICAgICAgIltFUkxDRExdW1BEVV0gU0RVIGluZm86IChsZW4peChudW0pICgldWw6MTYsJXVsOjE2KXgoJXVkOjgsJXVkOjgpIgoraW5mbyAgIEVSTENETF9MT0dfU1JCX1NMSV9MSTE1XzMgICAgICAgICAgRVJMQ0RMX1NSQl9MICAgICAgICAiW0VSTENETF1bUERVXSBTRFUgaW5mbzogKGxlbil4KG51bSkgKCV1bDoxNiwldWw6MTYsJXVkKXgoJXVmOjgsJXVmOjgsJXVmOjgpIgoraW5mbyAgIEVSTENETF9MT0dfU1JCX1NMSV9MSTE1XzQgICAgICAgICAgRVJMQ0RMX1NSQl9MICAgICAgICAiW0VSTENETF1bUERVXSBTRFUgaW5mbzogKGxlbil4KG51bSkgKCV1bDoxNiwldWw6MTYsJXVsOjE2LCV1bDoxNil4KCV1bDo4LCV1bDo4LCV1bDo4LCV1bDo4KSIKK2luZm8gICBFUkxDRExfTE9HX0RSQl9TTElfTEkxNV8xICAgICAgICAgIEVSTENETF9EUkJfTCAgICAgICAgIltFUkxDRExdW1BEVV0gU0RVIGluZm86IChsZW4peChudW0pICgldWQpeCgldWIpIgoraW5mbyAgIEVSTENETF9MT0dfRFJCX1NMSV9MSTE1XzIgICAgICAgICAgRVJMQ0RMX0RSQl9MICAgICAgICAiW0VSTENETF1bUERVXSBTRFUgaW5mbzogKGxlbil4KG51bSkgKCV1bDoxNiwldWw6MTYpeCgldWQ6OCwldWQ6OCkiCitpbmZvICAgRVJMQ0RMX0xPR19EUkJfU0xJX0xJMTVfMyAgICAgICAgICBFUkxDRExfRFJCX0wgICAgICAgICJbRVJMQ0RMXVtQRFVdIFNEVSBpbmZvOiAobGVuKXgobnVtKSAoJXVsOjE2LCV1bDoxNiwldWQpeCgldWY6OCwldWY6OCwldWY6OCkiCitpbmZvICAgRVJMQ0RMX0xPR19EUkJfU0xJX0xJMTVfNCAgICAgICAgICBFUkxDRExfRFJCX0wgICAgICAgICJbRVJMQ0RMXVtQRFVdIFNEVSBpbmZvOiAobGVuKXgobnVtKSAoJXVsOjE2LCV1bDoxNiwldWw6MTYsJXVsOjE2KXgoJXVsOjgsJXVsOjgsJXVsOjgsJXVsOjgpIgorCisvLyBSWCBkYXRhIGV4cGxpY2l0IHRyYWNlOiBQRFUgc2VnbWVudCB0cnVuY2F0ZSBpbmZvCitpbmZvICAgRVJMQ0RMX0xPR19ESVNDX09MRF9EVVBfU0VHICAgICAgICBFUkxDRExfREVCVUdfTSAgICAgICJbRVJMQ0RMXVtQRFVdIGRpc2NhcmQgb2xkIGR1cGxpY2F0ZSBTRUcgIChzbz0ldWQsbGVuPSV1ZCwlcGI6MWxzZj0ldWI6MSkiCitpbmZvICAgRVJMQ0RMX0xPR19UUlVOQ19PTERfRFVQX1NFRyAgICAgICBFUkxDRExfREVCVUdfTSAgICAgICJbRVJMQ0RMXVtQRFVdIHRydW5jYXRlIG9sZCBkdXBsaWNhdGUgU0VHIChzbz0ldWQsbGVuPSV1ZCkiCitpbmZvICAgRVJMQ0RMX0xPR19UUlVOQ19ORVdfRFVQX1NFRwkgICAgICBFUkxDRExfREVCVUdfTSAgICAgICJbRVJMQ0RMXVtQRFVdIHRydW5jYXRlIG5ldyBkdXBsaWNhdGUgU0VHIChzbz0ldWQsbGVuPSV1ZCkiCitpbmZvICAgRVJMQ0RMX0xPR19UUlVOQ19SRVNVTFQgICAgICAgICAgICBFUkxDRExfREVCVUdfTSAgICAgICJbRVJMQ0RMXVtQRFVdIHRydW5jYXRlIHJlc3VsdCAgICAgICAgICAgIChzbz0ldWQsbGVuPSV1ZCxuX3NraXA9JXViLGZpcnN0IFNEVSBwb3J0aW9uIGxlbj0ldWQpIgorCisvLyBSWCBkYXRhIGV4cGxpY2l0IHRyYWNlOiBTdGF0ZSB2YXJpYWJsZSB1cGRhdGUKK2luZm8gICBFUkxDRExfTE9HX1NSQl9BTV9TVEFURV9WQVJfMSAgICAgIEVSTENETF9TUkJfTSAgIltFUkxDRExdW1ZBUl0gQU0gc3RhdGUgdmFyaWFibGVzIChyYl9pZHg9JXVkOjYsdnJfcj0ldWQ6MTAsdnJfbXM9JXVmOjEwLHZyX2g9JXVmOjEwKSIKK2luZm8gICBFUkxDRExfTE9HX1NSQl9BTV9TVEFURV9WQVJfMiAgICAgIEVSTENETF9TUkJfTSAgIltFUkxDRExdW1ZBUl0gQU0gc3RhdGUgdmFyaWFibGVzIChyYl9pZHg9JXVkOjYsdnJfcj12cl9tcz12cl9oPSV1ZDoxMCkiCitpbmZvICAgRVJMQ0RMX0xPR19EUkJfQU1fU1RBVEVfVkFSXzEgICAgICBFUkxDRExfRFJCX00gICJbRVJMQ0RMXVtWQVJdIEFNIHN0YXRlIHZhcmlhYmxlcyAocmJfaWR4PSV1ZDo2LHZyX3I9JXVkOjEwLHZyX21zPSV1ZjoxMCx2cl9oPSV1ZjoxMCkiCitpbmZvICAgRVJMQ0RMX0xPR19EUkJfQU1fU1RBVEVfVkFSXzIgICAgICBFUkxDRExfRFJCX00gICJbRVJMQ0RMXVtWQVJdIEFNIHN0YXRlIHZhcmlhYmxlcyAocmJfaWR4PSV1ZDo2LHZyX3I9dnJfbXM9dnJfaD0ldWQ6MTApIgoraW5mbyAgIEVSTENETF9MT0dfRFJCX1VNX1NUQVRFX1ZBUl8xICAgICAgRVJMQ0RMX0RSQl9NICAiW0VSTENETF1bVkFSXSBVTSBzdGF0ZSB2YXJpYWJsZXMgKHJiX2lkeD0ldWQ6Nix2cl91cj0ldWQ6MTAsdnJfdWg9JXVkKSIKK2luZm8gICBFUkxDRExfTE9HX0RSQl9VTV9TVEFURV9WQVJfMiAgICAgIEVSTENETF9EUkJfTSAgIltFUkxDRExdW1ZBUl0gVU0gc3RhdGUgdmFyaWFibGVzIChyYl9pZHg9JXVkOjYsdnJfdXI9dnJfdWg9JXVkOjEwKSIKKworLy8gUlggZGF0YSBhZ2dyZWdhdGlvbiB0cmFjZQoraW5mbyAgIEVSTENETF9MT0dfQUdHX1NSQl9BTV8xICAgICAgICAgICAgRVJMQ0RMX1NSQl9VSCAgIltFUkxDRExdW0FHR10gQU0gUlggZGF0YSBzdW1tYXJ5IChyYl9pZHg9JXVkOjYsdnJfcj0ldWQ6MTAsdnJfbXM9JXVmOjEwLHZyX2g9JXVmOjEwLGNtcGx0X3BkdV9udW09JXViLHBkdV9zZWdfbnVtPSV1YikiCitpbmZvICAgRVJMQ0RMX0xPR19BR0dfU1JCX0FNXzIgICAgICAgICAgICBFUkxDRExfU1JCX1VIICAiW0VSTENETF1bQUdHXSBBTSBSWCBkYXRhIHN1bW1hcnkgKHJiX2lkeD0ldWQ6Nix2cl9yPXZyX21zPXZyX2g9JXVkOjEwLGNtcGx0X3BkdV9udW09JXViLHBkdV9zZWdfbnVtPSV1YikiCitpbmZvICAgRVJMQ0RMX0xPR19BR0dfRFJCX0FNXzEgICAgICAgICAgICBFUkxDRExfRFJCX1VIICAiW0VSTENETF1bQUdHXSBBTSBSWCBkYXRhIHN1bW1hcnkgKHJiX2lkeD0ldWQ6Nix2cl9yPSV1ZDoxMCx2cl9tcz0ldWY6MTAsdnJfaD0ldWY6MTAsY21wbHRfcGR1X251bT0ldWIscGR1X3NlZ19udW09JXViKSIKK2luZm8gICBFUkxDRExfTE9HX0FHR19EUkJfQU1fMiAgICAgICAgICAgIEVSTENETF9EUkJfVUggICJbRVJMQ0RMXVtBR0ddIEFNIFJYIGRhdGEgc3VtbWFyeSAocmJfaWR4PSV1ZDo2LHZyX3I9dnJfbXM9dnJfaD0ldWQ6MTAsY21wbHRfcGR1X251bT0ldWIscGR1X3NlZ19udW09JXViKSIKK2luZm8gICBFUkxDRExfTE9HX0FHR19EUkJfVU1fMSAgICAgICAgICAgIEVSTENETF9EUkJfVUggICJbRVJMQ0RMXVtBR0ddIFVNIFJYIGRhdGEgc3VtbWFyeSAocmJfaWR4PSV1ZDo2LHZyX3VyPSV1ZDoxMCx2cl91aD0ldWQscGR1X251bT0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfQUdHX0RSQl9VTV8yICAgICAgICAgICAgRVJMQ0RMX0RSQl9VSCAgIltFUkxDRExdW0FHR10gVU0gUlggZGF0YSBzdW1tYXJ5IChyYl9pZHg9JXVkOjYsdnJfdXI9dnJfdWg9JXVkOjEwLHBkdV9udW09JXViKSIKKworLy8gUlggZGF0YSBlcnJvciB0cmFjZQord2FybiAgIEVSTENETF9MT0dfRElTQ19PT1cgICAgICAgICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRpc2NhcmQgUERVIGR1ZSB0byBvdXQtb2Ytd2luZG93IChyYl9pZHg9JXViLFNOID49IFZSKE1SKSxzbj0ldWQsdnJfbXI9JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX0RJU0NfT09EICAgICAgICAgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXSBkaXNjYXJkIFBEVSBkdWUgdG8gb3V0LW9mLWRhdGUgICAocmJfaWR4PSV1YixTTiA8IFZSKFVSKSxzbj0ldWQsdnJfdXI9JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX0RJU0NfRFVQICAgICAgICAgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXSBkaXNjYXJkIFBEVSBkdWUgdG8gZHVwbGljYXRlICAgICAocmJfaWR4PSV1YixhbHJlYWR5IHJlY2VpdmVkLHNuPSV1ZCkiCit3YXJuICAgRVJMQ0RMX0xPR19VTV9QRFVfTE9TUyAgICAgICAgICAgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1BEVV0gVU0gUERVIGxvc3MgICAgICAgICAgICAgICAgICAgICAgKHJiX2lkeD0ldWQ6Nixsb3NzX251bT0ldWQ6MTApIgord2FybiAgIEVSTENETF9MT0dfUERVX0lOVkFMSURfUkIgICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRyb3AgUERVOiBpbnZhbGlkIFJCICAgICAgICAgICAgIChyYl9pZHg9JXViLGxlbj0ldWQpIgord2FybiAgIEVSTENETF9MT0dfUERVX0lOVkFMSURfTUJNU19SQiAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRyb3AgUERVOiBpbnZhbGlkIE1CTVMgUkIgICAgICAgIChyYl9pZHg9JXViLGxlbj0ldWQpIgord2FybiAgIEVSTENETF9MT0dfUERVX1pFUk9fTEVOICAgICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRyb3AgUERVOiB6ZXJvIGxlbmd0aCAgICAgICAgICAgIChyYl9pZHg9JXViKSIKK3dhcm4gICBFUkxDRExfTE9HX1BEVV9CVUZfU0hPUlRBR0UgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXSBkcm9wIFBEVTogUERVIGJ1ZmZlciBzaG9ydGFnZSAgICAocmJfaWR4PSV1YixsZW49JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX1BEVV9MRU5fRVJST1IgICAgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXSBkcm9wIFBEVTogbGVuZ3RoIGVycm9yICAgICAgICAgICAocmJfaWR4PSV1YixsZW49JXVkPD0ldWQpIgord2FybiAgIEVSTENETF9MT0dfUERVX1BBUlNFX0VSUk9SICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRyb3AgUERVOiBoZWFkZXIgcGFyc2luZyBlcnJvciAgIChyYl9pZHg9JXViLGxlbj0ldWQsc249JXVkKSIKK3dhcm4gICBFUkxDRExfTE9HX1BEVV9TT19FUlJPUiAgICAgICAgICAgIEVSTENETF9XQVJOX1VIICAgICAiW0VSTENETF1bUERVXSBkcm9wIFBEVTogaW52YWxpZCBTTyBlcnJvciAgICAgICAocmJfaWR4PSV1YixsZW49JXVkLHNuPSV1ZCxzbz0ldWQpIgord2FybiAgIEVSTENETF9MT0dfUERVX1NFR19FUlJPUiAgICAgICAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRyb3AgUERVOiBpbnZhbGlkIFBEVSBTRUcgICAgICAgIChyYl9pZHg9JXViLG9sZF9sc2YldWIsb2xkX3NvZT0ldWQsbmV3X2xzZiV1YixuZXdfc29lPSV1ZCkiCit3YXJuICAgRVJMQ0RMX0xPR19FWFRfUERVX0hEUl9FUlJPUl8xICAgICBFUkxDRExfV0FSTl9VSCAgICAgIltFUkxDRExdW1BEVV0gZHJvcCBQRFU6IHplcm8gTEkgICAgICAgICAgICAgICAgKHJiX2lkeD0ldWIpIgord2FybiAgIEVSTENETF9MT0dfRVhUX1BEVV9IRFJfRVJST1JfMiAgICAgRVJMQ0RMX1dBUk5fVUggICAgICJbRVJMQ0RMXVtQRFVdIGRyb3AgUERVOiBpbnZhbGlkIGxlbmd0aCBvZiBsYXN0IFNEVSBwb3J0aW9uIChyYl9pZHg9JXViKSIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogVElNRVIgVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFRpbWVyIGhhbmRsaW5nCitpbmZvICAgRVJMQ0RMX0xPR19BTV9ST19UTVJfU1RBUlQgICAgICAgICBFUkxDRExfVElNRVJfTCAgICAgICJbRVJMQ0RMXVtUTVJdW1ZBUl0gdC1SZW9yZGVyaW5nIHRpbWVyIHN0YXJ0ICAocmJfaWR4PSV1ZDo2LHZyX3g9JXVkOjEwKSIKK2luZm8gICBFUkxDRExfTE9HX0FNX1JPX1RNUl9FWFBJUkUgICAgICAgIEVSTENETF9USU1FUl9MICAgICAgIltFUkxDRExdW1RNUl1bVkFSXSB0LVJlb3JkZXJpbmcgdGltZXIgZXhwaXJlIChyYl9pZHg9JXVkOjYsdnJfbXM9JXVkOjEwKSIKK2luZm8gICBFUkxDRExfTE9HX1VNX1JPX1RNUl9TVEFSVCAgICAgICAgIEVSTENETF9USU1FUl9MICAgICAgIltFUkxDRExdW1RNUl1bVkFSXSB0LVJlb3JkZXJpbmcgdGltZXIgc3RhcnQgIChyYl9pZHg9JXVkOjYsdnJfdXg9JXVkOjEwKSIKK2luZm8gICBFUkxDRExfTE9HX1VNX1JPX1RNUl9FWFBJUkUgICAgICAgIEVSTENETF9USU1FUl9MICAgICAgIltFUkxDRExdW1RNUl1bVkFSXSB0LVJlb3JkZXJpbmcgdGltZXIgZXhwaXJlIChyYl9pZHg9JXVkOjYsdnJfdXI9JXVkOjEwKSIKK2luZm8gICBFUkxDRExfTE9HX1hNX1JPX1RNUl9TVE9QICAgICAgICAgIEVSTENETF9USU1FUl9MICAgICAgIltFUkxDRExdW1RNUl0gICAgICB0LVJlb3JkZXJpbmcgdGltZXIgc3RvcCAgIChyYl9pZHg9JXViKSIKK2luZm8gICBFUkxDRExfTE9HX1NUQVRVU19QUk9IX1RNUl9FWFBJUkUgIEVSTENETF9USU1FUl9MICAgICAgIltFUkxDRExdW1RNUl0gdC1TdGF0dXNQcm9oaWJpdCB0aW1lciBleHBpcmUgKHJiX2lkeD0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfU1RBVFVTX1BST0hfVE1SX1NUT1AgICAgRVJMQ0RMX1RJTUVSX0wgICAgICAiW0VSTENETF1bVE1SXSB0LVN0YXR1c1Byb2hpYml0IHRpbWVyIHN0b3AgKHJiX2lkeD0ldWIpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFUVVMgUERVIFRSQUNFICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCQorLy8gU1RBVFVTIFBEVQoraW5mbyAgIEVSTENETF9MT0dfR0VOX1NUQVRVU19QRFUJCSAgRVJMQ0RMX1JCX00JICAiW0VSTENETF1bUlBUXSBnZW5lcmF0ZSBTVEFUVVMgUERVCShyYl9pZHg9JXVkOjYsYWNrX3NuPSV1ZDoxMCxsZW49JXViKSIKK2luZm8gICBFUkxDRExfTE9HX1JFR0VOX1NUQVRVU19QRFUJCSAgRVJMQ0RMX1JCX00JICAiW0VSTENETF1bUlBUXSByZS1nZW5lcmF0ZSBTVEFUVVMgUERVIChyYl9pZHg9JXVkOjYsYWNrX3NuPSV1ZDoxMCxsZW49JXViKSIKK2luZm8gICBFUkxDRExfTE9HX1JFU0VHX1NUQVRVU19QRFUJCSAgRVJMQ0RMX1JCX00JICAiW0VSTENETF1bUlBUXSByZS1zZWdtZW50IFNUQVRVUyBQRFUJKHJiX2lkeD0ldWQ6NixhY2tfc249JXVkOjEwLGxlbj0ldWIpIgoraW5mbyAgIEVSTENETF9MT0dfUlBUX05BQ0tfUERVCQkJICBFUkxDRExfUkJfTAkgICJbRVJMQ0RMXVtSUFRdIHJlcG9ydCBOQUNLIFBEVSAocmJfaWR4PSV1ZDo2LHNuPSV1ZDoxMCkiCitpbmZvICAgRVJMQ0RMX0xPR19SUFRfTkFDS19TRUcJCQkgIEVSTENETF9SQl9MCSAgIltFUkxDRExdW1JQVF0gcmVwb3J0IE5BQ0sgU0VHIChyYl9pZHg9JXVkOjYsc249JXVkOjEwLHNvX3M9JXVkLHNvX2U9JXVkOjE1KSIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogT1RIRVIgU0NFTkFSSU8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFBEVSBmbHVzaCBmb3IgcmVlc3RhYmxpc2gKK2luZm8gICBFUkxDRExfTE9HX0FNX0ZMVVNIICAgICAgICAgICAgICAgIEVSTENETF9SQl9MICAgICAiW0VSTENETF1bUERVXSBmbHVzaCBBTSBQRFUgKHJiX2lkeD0ldWQ6Nix2cl9yPSV1ZDoxMCx2cl9oPSV1ZCkiCitpbmZvICAgRVJMQ0RMX0xPR19VTV9GTFVTSCAgICAgICAgICAgICAgICBFUkxDRExfUkJfTCAgICAgIltFUkxDRExdW1BEVV0gZmx1c2ggVU0gUERVIChyYl9pZHg9JXVkOjYsdnJfdXI9JXVkOjEwLHZyX3VoPSV1ZCkiCisKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjdWxfdHJhY2VfaW50ZXJuYWwudG1kIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjdWxfdHJhY2VfaW50ZXJuYWwudG1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0OGNkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VybGN1bF90cmFjZV9pbnRlcm5hbC50bWQKQEAgLTAsMCArMSw3MCBAQAorW0RlZmF1bHRdCitFUkxDVUxfSU5URVJOQUwKK09uCitMMl9CdWZmZXIKK1RDTUZPUkNFCitNQVhfQVJHIDUKK0wyX0JVRkZFUl9TRVRUSU5HIEwyX0JVRkZFUl9FUlQKKworW01vZGVtX1R5cGVdCitMVEVfTDIKKworW0NsYXNzXQorRVJMQ1VMX1NSQl9IICAgIE9OCitFUkxDVUxfUkJfSCAgICBPTgorRVJMQ1VMX1JCX00gICAgT04KK0VSTENVTF9SQl9MICAgIE9OCitFUkxDVUxfUkJfVUwgICBPTgorRVJMQ1VMX1dBUk5fVUggICBPTgorRVJMQ1VMX1dBUk5fSCAgICBPTgorRVJMQ1VMX0VSUk9SX1VIICAgT04KK0VSTENVTF9FUlJPUl9IICAgIE9OCitFUkxDVUxfQ09ORklHX1VIICAgT04KK0VSTENVTF9DT05GSUdfSCAgICBPTgorRVJMQ1VMX0NPTkZJR19NICAgIE9OCitFUkxDVUxfVElNRVJfVUggICAgT04KK0VSTENVTF9USU1FUl9MICAgIE9OCitFUkxDVUxfREVCVUdfVUggICBPTgorRVJMQ1VMX0RFQlVHX0ggICAgT04KK0VSTENVTF9ERUJVR19MICAgIE9OCisKK1tTdHJpbmddCisKK1tNZXNzYWdlXQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFUVVMgUERVIFRSQUNFICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCQorLy8gU1RBVFVTIFBEVQoraW5mbyAgRVJMQ1VMX0xPR19BRERfUE9MTF9OQUNLICAgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX0wgICAgICAgICAiW0VSTENVTF1bVE1SXSBhZGQgYSByZXR4IEFNRCBQRFUgZm9yIHBvbGwgcmV0cnkgKHJiX2lkeD0ldWw6Nixzbj0ldWw6MTAsbGVuPSV1bDoxNikiCitpbmZvICBFUkxDVUxfTE9HX0RFTF9QT0xMX05BQ0sgICAgICAgICAgICAgICAgICBFUkxDVUxfUkJfTCAgICAgICAgICJbRVJMQ1VMXVtSUFRdIHJlbW92ZSBwb2xsbmFjayBkdWUgdG8gYWxsIGFjayBvciBuZXcgU0RVIChyYl9pZHg9JXViKSIKK2luZm8gIEVSTENVTF9MT0dfTkFDS19UVVBMRSAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9ERUJVR19MICAgICAgIltFUkxDVUxdW1JQVF0gbmFjayB0dXBsZSBpbmZvIChpZHg9JXVsOjE2LHNzbz0ldWw6MTYsbGVuPSV1bDoxNixudW09JXVsOjE2KSIKK2luZm8gIEVSTENVTF9MT0dfRlJFRV9OQUNLICAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9ERUJVR19MICAgICAgIltFUkxDVUxdW1JQVF0gZGVyZWdpc3RlciBpbnZhbGlkIG9sZCBuYWNrIChzbj0ldWQpIgord2FybiAgRVJMQ1VMX0xPR19GQUlMX1RPX0FMTE9DX05BQ0sgICAgICAgICAgICAgRVJMQ1VMX1dBUk5fSCAgICAgICAiW0VSTENVTF1bUlBUXVtXQVJOXSBmYWlsIHRvIGFsbG9jYXRlIE5BQ0sgKHJiX2lkeD0ldWw6NixhY2tfc249JXVsOjEwLG5hY2tfc249JXVsOjE2LHNvX3M9JXVsOjE2LHNvX2U9JXVsOjE2KSIKK2luZm8gIEVSTENVTF9MT0dfUE9MTE5BQ0tfRVhJU1QgICAgICAgICAgICAgICAgIEVSTENVTF9ERUJVR19MICAgICAgIltFUkxDVUxdW1JQVF0gcG9sbG5hY2sgZXhpc3RzIGluIG9sZCBuYWNrbGlzdCAoc249JXVkKSIKK2luZm8gIEVSTENVTF9MT0dfU1JCX0RBVEFfQ05GICAgICAgICAgICAgICAgICAgIEVSTENVTF9TUkJfSCAgICAgICAgIltFUkxDVUxdW1JQVF0gU1JCIGRhdGEgY29uZmlybSAocmJfaWR4PSV1ZDo1LHNpdF9pZHg9JXVkOjExKSIKK2luZm8gIEVSTENVTF9MT0dfU1JCX0NORiAgICAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9ERUJVR19MICAgICAgIltFUkxDVUxdW1JQVF0gbl9hY2sgdXBkYXRlIGZvciBTUkIgKG5fYWNrPSV1Yjo0LG5ldyBuX2Fjaz0ldWI6NCkiCitpbmZvICBFUkxDVUxfTE9HX05PX1NSQl9DTkYgICAgICAgICAgICAgICAgICAgICBFUkxDVUxfREVCVUdfTCAgICAgICJbRVJMQ1VMXVtSUFRdIG5vdCBhbnkgbmV3IFNSQiBkYXRhIGNvbmZpcm1lZCAobl9hY2s9JXVkLG5ldyBuX2Fjaz0ldWQpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBQRENQIFJFRVNUQUJMSVNITUVOVCBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgRVJMQ1VMX0xPR19VUERBVEVfUERDUF9SRVRYICAgICAgICAgICAgICAgRVJMQ1VMX1JCX1VMICAgICAgIltFUkxDVUxdW1JCXVtQRENQXSB1cGRhdGUgUERDUCByZXR4IGxpc3QgaGVhZCAoaWR4PSV1bDoxNixudW09JXVsOjE2LGxlbj0ldWYpIgoraW5mbyAgRVJMQ1VMX0xPR19DT05TVFJVQ1RfUkVUWF9FTlRSWSAgICAgICAgICAgRVJMQ1VMX1JCX1VMICAgICAgIltFUkxDVUxdW1JCXVtQRENQXSBsaW5rIFBEQ1AgcmV0eCBlbnRyeSAoaWR4PSV1bDoxNixsZW49JXVsOjE2LHBkY3BfY250PSV1bCkiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFBEQ1AgRElTQ0FSRCBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgRVJMQ1VMX0xPR19DQU5DRUxfUE9MTF9UUkdSICAgICAgICAgICAgICAgRVJMQ1VMX1JCX0wgICAgICAgICAiW0VSTENVTF1bRElTQ11bUERDUF0gY2FuY2VsIHBvbGwgdHJpZ2dlciBkdWUgdG8gbm8gU0RVIgoraW5mbyAgRVJMQ1VMX0xPR19QRFVfQ1VSX0lEWCAgICAgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX1VMICAgICAgICAiW0VSTENVTF1bRElTQ11bUERDUF0gdXBkYXRlIGFfY3Vycl9pZHggZm9yIFBEVSAoc249JXVkKShzZHVfaWR4OiV1bCkiCitpbmZvICBFUkxDVUxfTE9HX0JMT0NLX0RJU0NBUkQgICAgICAgICAgICAgICAgICBFUkxDVUxfUkJfVUwgICAgICAgICJbRVJMQ1VMXVtESVNDXVtQRENQXSBibG9jayBwZGNwIGRpc2NhcmQgZHVlIHRvIFJCIHN1c3BlbmRlZCAocmJfaWR4PSV1YikiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFBEVS9TRFUgRlJFRSBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgRVJMQ1VMX0xPR19SRUxTTl9VUERBVEUgICAgICAgICAgICAgICAgICAgRVJMQ1VMX0RFQlVHX0ggICAgICAiW0VSTENVTF1bUE9MTF0gUERVIHJlbGVhc2UgKHJiX2lkeD0ldWQ6NixyZWxfc249JXVkOjEwKSIKK2luZm8gIEVSTENVTF9MT0dfRlJFRV9FTkRfSURYX1VQREFURSAgICAgICAgICAgIEVSTENVTF9ERUJVR19IICAgICAgIltFUkxDVUxdW1BPTExdIHVwZGF0ZSBmcmVlIGVuZCBpbmRleCB0byAxc3QgdW5yZWxlYXNlIFNJVCBlbnRyeSAocmJfaWR4PSV1Yiwgc2l0IGlkeD0ldWwpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBNVEsgUFJPUFJJRVRBUlkgRkVBVFVSRSBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gQWdncmVnYXRpb24gdHJhY2UgdGltZXIgaW5qZWN0CitpbmZvICBFUkxDVUxfTE9HX0FHR19UTVJfU0VUICAgICAgICAgICAgICAgICAgICBFUkxDVUxfREVCVUdfVUggICAgICJbRVJMQ1VMXSBBZ2dyZWdhdGlvbiB0cmFjZSB0aW1lciBwZXJpb2QgdXBkYXRlICh0aW1lciA9ICV1ZCBtcykiCisKKy8vIFNEVSByZXR1cm4gdGltZXIKK2luZm8gIEVSTENVTF9MT0dfU0RVX1JFVFVSTl9TVEFSVCAgICAgICAgICAgICAgIEVSTENVTF9USU1FUl9MICAgICAgIltFUkxDVUxdIFN0YXJ0IFNEVSByZXR1cm4gdGltZXIgKHJiX2lkeD0ldWIpIgoraW5mbyAgRVJMQ1VMX0xPR19TRFVfUkVUVVJOX1NUT1AgICAgICAgICAgICAgICAgRVJMQ1VMX1RJTUVSX0wgICAgICAiW0VSTENVTF0gU3RvcCBTRFUgcmV0dXJuIHRpbWVyIChyYl9pZHg9JXViKSIKK2luZm8gIEVSTENVTF9MT0dfU0RVX1JFVFVSTiAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9USU1FUl9VSCAgICAgIltFUkxDVUxdIChyYl9pZHg9JXViKVNEVSByZXR1cm4gWyV1bDoxNiwgJXVsOjE2KSIKKworLy8gRm9yY2UgUkxDIHRpbWVyIHZhbHVlCitpbmZvICBFUkxDVUxfTE9HX0ZPUkNFX1RJTUVSX0NGRyAgICAgICAgICAgICAgICBFUkxDVUxfREVCVUdfVUggICAgICJbRVJMQ1VMXVtDRkddW1RNUl0gc2V0IHQtUG9sbFJldHJhbnNtaXQgY29uZmlnIChyYl9pZHg9JXViLGxlbmd0aD0ldWQpIgpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjdWxfdHJhY2VfcHJvdGVjdC50bWQgYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZWwyL3RyYWNlL2VybGN1bF90cmFjZV9wcm90ZWN0LnRtZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzE3NGQyCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjdWxfdHJhY2VfcHJvdGVjdC50bWQKQEAgLTAsMCArMSw1MSBAQAorW0RlZmF1bHRdCitFUkxDVUxfUFJPVEVDVAorT24KK0wyX0J1ZmZlcgorVENNRk9SQ0UKK01BWF9BUkcgNQorTDJfQlVGRkVSX1NFVFRJTkcgTDJfQlVGRkVSX0VSVAorCitbTW9kZW1fVHlwZV0KK0xURV9MMgorCitbQ2xhc3NdCitFUkxDVUxfUkJfVUggICBPTgorRVJMQ1VMX1JCX0wgICAgT04KKworRVJMQ1VMX0VSUk9SX1VIICAgT04KKworRVJMQ1VMX0RFQlVHX0wgICAgT04KKworRVJMQ1VMX1RJTUVSX00gICAgT04KK0VSTENVTF9USU1FUl9MICAgIE9OCisKK1tTdHJpbmddCisKK1tNZXNzYWdlXQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBMMiBDT1BSTyBSRUxBVEVEIFRSQUNFICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBDT1RGIGRlc2NyaXB0b3IgdHJhY2UKKy8vIHRvIGJlIGFkZGVkCisKKy8vIFZBIHNob3J0YWdlIGNoZWNrICYgaGFuZGxpbmcKK2luZm8gIEVSTENVTF9MT0dfVUxfUkJfTE9DSyAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9SQl9VSCAgICAgIltFUkxDVUxdW1JCXSBsb2NrIFJCIChyYl9pZHg9JXViKSIKK2luZm8gIEVSTENVTF9MT0dfVUxfUkJfVU5MT0NLICAgICAgICAgICAgICAgICAgIEVSTENVTF9SQl9VSCAgICAgIltFUkxDVUxdW1JCXSB1bmxvY2sgUkIgKHJiX2lkeD0ldWIpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBNVEsgUFJPUFJJRVRBUlkgRkVBVFVSRSBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gU21hcnQgc2NoZWR1bGluZworaW5mbyAgRVJMQ1VMX0xPR19TTUFSVF9TQ0hFRFVMRSAgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX0wgICAgICJbRVJMQ1VMXVtMQ1BdIHNtYXJ0IHNjaGVkdWxlIChkb19zZWc9JXViKSIKKworLy8gVmlydHVhbCBjb25uZWN0ZWQKK2luZm8gIEVSTENVTF9MT0dfVUxfUkJfVkNPTl9FTlRFUl9QUkVQQVJFICAgICAgIEVSTENVTF9ERUJVR19MICAgICAgICAiW0VSTENVTF1bVkNdIHByZXBhcmUgZW50ZXIgdmlydHVhbC1jb25uZWN0ZWQgc3RhdGUiCitpbmZvICBFUkxDVUxfTE9HX1VMX1JCX1ZDT05fRU5URVIgICAgICAgICAgICAgICBFUkxDVUxfREVCVUdfTCAgICAgICAgIltFUkxDVUxdW1ZDXSBlbnRlciB2aXJ0dWFsLWNvbm5lY3RlZCBzdGF0ZSIKK2luZm8gIEVSTENVTF9MT0dfVUxfUkJfVkNPTl9MRUFWRSAgICAgICAgICAgICAgIEVSTENVTF9ERUJVR19MICAgICAgICAiW0VSTENVTF1bVkNdIGxlYXZlIHZpcnR1YWwtY29ubmVjdGVkIHN0YXRlIgoraW5mbyAgRVJMQ1VMX0xPR19TVEFUVVNfRkRCS19TVEFSVCAgICAgICAgICAgICAgRVJMQ1VMX1RJTUVSX0wgICAgICAgICJbRVJMQ1VMXVtWQ11bVE1SXSB0LVN0YXR1c0ZlZWRiYWNrIHRpbWVyIHN0YXJ0IgoraW5mbyAgRVJMQ1VMX0xPR19TVEFUVVNfRkRCS19TVE9QICAgICAgICAgICAgICAgRVJMQ1VMX1RJTUVSX0wgICAgICAgICJbRVJMQ1VMXVtWQ11bVE1SXSB0LVN0YXR1c0ZlZWRiYWNrIHRpbWVyIHN0b3AiCitpbmZvICBFUkxDVUxfTE9HX1NUQVRVU19GREJLX0VYUElSRSAgICAgICAgICAgICBFUkxDVUxfVElNRVJfTCAgICAgICAgIltFUkxDVUxdW1ZDXVtUTVJdIHQtU3RhdHVzRmVlZGJhY2sgdGltZXIgZXhwaXJlIgoraW5mbyAgRVJMQ1VMX0xPR19DUklUSUNBTF9TSVQgICAgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX0wgICAgICAgICAgICJbRVJMQ1VMXVtWQ11bQ1JJXSBjcml0aWNhbCBzaXQgKGluZGV4PSV1bCkiCitpbmZvICBFUkxDVUxfTE9HX0NSSVRJQ0FMX1NJVF9SQU5HRSAgICAgICAgICAgICBFUkxDVUxfUkJfTCAgICAgICAgICAgIltFUkxDVUxdW1ZDXVtDUkldIGNoZWNrIGNyaXRpY2FsIHNkdSByYW5nZSAocmJfaWR4PSV1bDo1KShzY2hlZCBpbmRleD0ldWw6MTIsIHRhaWwgaW5kZXg9JXVsOjE1KSkiCisKKy8vIEdlbWluaQord2FybiAgRVJMQ1VMX0xPR19VTF9BRERfTExfUkIgICAgICAgICAgICAgCQlFUkxDVUxfRVJST1JfVUggICAgIltFUkxDVUxdW1JCXVtXQVJOXSBMK0wgUkIgZXN0YWJsaXNoIGRldGVjdGVkIChwcm90b2NvbF9pZHg9JXViLGZlYXR1cmU9JXViKSIKKwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi90cmFjZS9lcmxjdWxfdHJhY2VfcHVibGljLnRtZCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZXJsY3VsX3RyYWNlX3B1YmxpYy50bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdlNjBjMwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdHJhY2UvZXJsY3VsX3RyYWNlX3B1YmxpYy50bWQKQEAgLTAsMCArMSwxNjYgQEAKK1tEZWZhdWx0XQorRVJMQ1VMX1BVQkxJQworT24KK0wyX0J1ZmZlcgorVENNRk9SQ0UKK01BWF9BUkcgNQorTDJfQlVGRkVSX1NFVFRJTkcgTDJfQlVGRkVSX0VSVAorCitbTW9kZW1fVHlwZV0KK0xURV9MMgorCitbQ2xhc3NdCitFUkxDVUxfU1JCX1VIICAgT04KK0VSTENVTF9TUkJfTSAgICBPTgorRVJMQ1VMX1NSQl9MICAgIE9OCitFUkxDVUxfU1JCX1VMICAgT04KK0VSTENVTF9EUkJfVUggICBPTgorRVJMQ1VMX0RSQl9NICAgIE9OCitFUkxDVUxfRFJCX0wgICAgT04KK0VSTENVTF9EUkJfVUwgICBPTgorRVJMQ1VMX1JCX1VIICAgT04KK0VSTENVTF9SQl9IICAgIE9OCitFUkxDVUxfUkJfTSAgICBPTgorRVJMQ1VMX1JCX0wgICAgT04KK0VSTENVTF9SQl9VTCAgIE9OCitFUkxDVUxfV0FSTl9VSCAgIE9OCitFUkxDVUxfV0FSTl9IICAgIE9OCitFUkxDVUxfRVJST1JfVUggICBPTgorRVJMQ1VMX0VSUk9SX0ggICAgT04KK0VSTENVTF9DT05GSUdfVUggICBPTgorRVJMQ1VMX0NPTkZJR19IICAgIE9OCitFUkxDVUxfQ09ORklHX00gICAgT04KK0VSTENVTF9USU1FUl9NICAgIE9OCitFUkxDVUxfVElNRVJfTCAgICBPTgorRVJMQ1VMX1RJTUVSX1VMICAgT04KKworW1N0cmluZ10KK0VSTENVTF9SQl9DRkdfU1RSSU5HCit7CisgICAgInJlbGVhc2UgUkIiLAorICAgICJlc3RhYmxpc2ggUkIiLAorICAgICJyZS1lc3RhYmxpc2ggUkIgd2l0aCBjb25maWciLAorICAgICJyZS1jb25maWcgUkIiLAorICAgICJyZS1lc3RhYmxpc2ggUkIgd2l0aG91dCBjb25maWciLAorICAgICJlc3RhYmxpc2ggYW5kIHN1c3BlbmQgUkIiLAorICAgICJzdXNwZW5kIFJCIiwKKyAgICAicmVzdW1lIFJCIgorfQorCitFUkxDVUxfTElfRk1UX1NUUklORworeworICAgICIxMSIsCisgICAgIjE1IgorfQorCitFUkxDVUxfU05fTEVOX1NUUklORworeworICAgICIwNSIsCisgICAgIjEwIgorfQorCitbTWVzc2FnZV0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogQ09ORklHVVJBVElPTiBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgRVJMQ1VMX0xPR19VTF9SQl9DRkcgICAgICAgICAgICAgICAgICAgICAgRVJMQ1VMX0NPTkZJR19NICAgICAiW0VSTENVTF1bUkJdICVzIChyYl9pZHg9JXVkOjgscmJpZD0ldWQ6OCkiCitpbmZvICBFUkxDVUxfTE9HX1VMX0FERF9ORVdfRFJCICAgICAgICAgICAgICAgICBFUkxDVUxfQ09ORklHX0ggICAgICJbRVJMQ1VMXVtSQl0gZXN0YWJsaXNoIGFuZCBzdXNwZW5kIG5ldyBEUkIgKHJiX2lkeD0ldWY6OCxvbGRfcmJpZD0ldWY6OCxuZXdfcmJpZD0ldWY6OCkiCitpbmZvICBFUkxDVUxfTE9HX1VMX0RFTF9PTERfRFJCICAgICAgICAgICAgICAgICBFUkxDVUxfQ09ORklHX0ggICAgICJbRVJMQ1VMXVtSQl0gcmVsZWFzZSBvbGQgRFJCIChyYl9pZHg9JXVmOjgsb2xkX3JiaWQ9JXVmOjgsbmV3X3JiaWQ9JXVmOjgpIgoraW5mbyAgRVJMQ1VMX0xPR19VTF9ERUxfTkVXX0RSQiAgICAgICAgICAgICAgICAgRVJMQ1VMX0NPTkZJR19IICAgICAiW0VSTENVTF1bUkJdIHJlbGVhc2UgbmV3IERSQiAocmJfaWR4PSV1Zjo4LG9sZF9yYmlkPSV1Zjo4LG5ld19yYmlkPSV1Zjo4KSIKK2luZm8gIEVSTENVTF9MT0dfVUxfQ0ZHX0FNICAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9DT05GSUdfTSAgICAgIltFUkxDVUxdW1JCXVtDRkddIEFNMTAgd2l0aCBMSSVzIFJCIGluZm8gKHQtUG9sbFJldHJhbnNtaXQ9JXVsOjE2LHBvbGxQRFU9JXVsOjE2LHBvbGxCeXRlPSV1bDoyNCxtYXhSZXR4VGhyZXNob2xkPSV1bDo4KSIKK2luZm8gIEVSTENVTF9MT0dfVUxfQ0ZHX1VNICAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9DT05GSUdfTSAgICAgIltFUkxDVUxdW1JCXVtDRkddIFVNJXMgd2l0aCBMSTExIFJCIGluZm8iCitpbmZvICBFUkxDVUxfTE9HX1VMX0NGR19MQ0cgICAgICAgICAgICAgICAgICAgICBFUkxDVUxfQ09ORklHX00gICAgICJbRVJMQ1VMXVtSQl1bQ0ZHXSBMQ0ggaW5mbyAocHJpb3JpdHk9JXViLHByaW9yaXRpc2VkQml0UmF0ZT0ldWw6MTYsYnVja2V0U2l6ZUR1cmF0aW9uPSV1bDoxMCxsb2dpY2FsQ2hhbm5lbEdyb3VwPSV1bDozKSIKK3dhcm4gIEVSTENVTF9MT0dfVUxfUkJfUEFSQU1fRVJSICAgICAgICAgICAgICAgIEVSTENVTF9DT05GSUdfTSAgICAgIltFUkxDVUxdW1JCXVtXQVJOXSBSQiBwYXJhbWV0ZXIgZXJyb3IiCit3YXJuICBFUkxDVUxfTE9HX1VMX1JCX1NUVVNfRVJSICAgICAgICAgICAgICAgICBFUkxDVUxfQ09ORklHX00gICAgICJbRVJMQ1VMXVtSQl1bV0FSTl0gUkIgc3RhdHVzIGVycm9yIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUWCBEQVRBIFJPVVRJTkUgVFJBQ0UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFRYIGRhdGEgZXhwbGljaXQgdHJhY2U6IE92ZXJhbGwgc2NoZWQgc3RhdHVzIHRyYWNlCitpbmZvICBFUkxDVUxfTE9HX1JCX1VMX1NOQVBTSE9UICAgICAgICAgICAgICAgICBFUkxDVUxfUkJfTSAgICAgICJbRVJMQ1VMXVtMQ1BdIFJCIFVMIHNuYXBzaG90IChyYl9pZHg9JXVsOjUscGVuZGluZ19zej0ldWw6MjQpKHBkdV9ibXA6Y3RybD0ldWw6MSxyZXR4PSV1bDoxLGRhdGE9JXVsOjEpKHNkdV9udW06bGVmdD0ldWQ6MSxzZHVfbGVuOmxlZnQ9JXVkOjE0LHNpdCBmdWxsPSV1ZDoxKSIKK2luZm8gIEVSTENVTF9MT0dfU1RBUlRfUkVTT1VSQ0UgICAgICAgICAgICAgICAgIEVSTENVTF9SQl9NICAgICAgIltFUkxDVUxdW0xDUF0gc3RhcnQgcmVzb3VyY2UgKHRiX2lkeD0ldWw6MixzdWJfaGRyX3N6PSV1bDo4LGJzcl9zej0ldWw6OCxyX3Ricz0ldWw6MTQpIgoraW5mbyAgRVJMQ1VMX0xPR19GSU5BTF9SRVNPVVJDRSAgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX00gICAgICAiW0VSTENVTF1bTENQXSBmaW5hbCByZXNvdXJjZSAodGJfaWR4PSV1bDoyLHN1Yl9oZHJfc3o9JXVsOjgsYnNyX3N6PSV1bDo4LHJfdGJzPSV1bDoxNCkiCisKKy8vIFRYIGRhdGEgZXhwbGljaXQgdHJhY2U6IFNlcnZlIFJCIHRyYWNlCitpbmZvICBFUkxDVUxfTE9HX0RSQl9TRVJWRV9SQl9VTV8wNSAgICAgICAgICAgICBFUkxDVUxfRFJCX00gICAgICJbRVJMQ1VMXVtMQ1BdIHNlcnZlIFVNMDUgTENIIChyYl9pZHg9JXViKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX1NFUlZFX1JCX1VNXzEwICAgICAgICAgICAgIEVSTENVTF9EUkJfTSAgICAgIltFUkxDVUxdW0xDUF0gc2VydmUgVU0xMCBMQ0ggKHJiX2lkeD0ldWIpIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfU0VSVkVfUkJfQU1fMTAgICAgICAgICAgICAgRVJMQ1VMX0RSQl9NICAgICAiW0VSTENVTF1bTENQXSBzZXJ2ZSBBTTEwIExDSCAocmJfaWR4PSV1YikiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9TRVJWRV9SQl9BTV8xMCAgICAgICAgICAgICBFUkxDVUxfU1JCX00gICAgICJbRVJMQ1VMXVtMQ1BdIHNlcnZlIEFNMTAgTENIIChyYl9pZHg9JXViKSIKKworLy8gVFggZGF0YSBleHBsaWNpdCB0cmFjZTogUERVIGluZm8KK2luZm8gIEVSTENVTF9MT0dfRFJCX0JVSUxEX0RBVEFfUERVICAgICAgICAgICAgIEVSTENVTF9EUkJfTSAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgZGF0YSBQRFUgKHJiX2lkeD0ldWw6Nix0Yl9pZHg9JXVsOjIsc3o9JXVsOjE0LHNuPSV1bDoxMCxlPSV1bDoxLGZpPSV1bDoyLGlkeD0ldWw6MTYsc3NvPSV1bDoxMykiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9CVUlMRF9EQVRBX1BEVSAgICAgICAgICAgICBFUkxDVUxfU1JCX00gICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgIGRhdGEgUERVIChyYl9pZHg9JXVsOjYsdGJfaWR4PSV1bDoyLHN6PSV1bDoxNCxzbj0ldWw6MTAsZT0ldWw6MSxmaT0ldWw6MixpZHg9JXVsOjE2LHNzbz0ldWw6MTMpIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfQlVJTERfUkVUWF9QRFUgICAgICAgICAgICAgRVJMQ1VMX0RSQl9NICAgICAiW0VSTENVTF1bTENQXSAgICAgICByZXR4IFBEVSAocmJfaWR4PSV1bDo2LHRiX2lkeD0ldWw6Mixzej0ldWw6MTQsc249JXVsOjEwLGU9JXVsOjEsZmk9JXVsOjIsaWR4PSV1bDoxNixzc289JXVsOjEzKSIKK2luZm8gIEVSTENVTF9MT0dfU1JCX0JVSUxEX1JFVFhfUERVICAgICAgICAgICAgIEVSTENVTF9TUkJfTSAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgcmV0eCBQRFUgKHJiX2lkeD0ldWw6Nix0Yl9pZHg9JXVsOjIsc3o9JXVsOjE0LHNuPSV1bDoxMCxlPSV1bDoxLGZpPSV1bDoyLGlkeD0ldWw6MTYsc3NvPSV1bDoxMykiCitpbmZvICBFUkxDVUxfTE9HX0RSQl9CVUlMRF9SRVRYX1NFRyAgICAgICAgICAgICBFUkxDVUxfRFJCX00gICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgIHJldHggU0VHIChyYl9pZHg9JXVsOjYsdGJfaWR4PSV1bDoyLHN6PSV1bDoxNCxzbj0ldWw6MTAsZT0ldWw6MSxmaT0ldWw6MixpZHg9JXVsOjE2LHNzbz0ldWw6MTMscHNvPSV1ZDoxNSxsc2Y9JXVkOjEpIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfQlVJTERfUkVUWF9TRUcgICAgICAgICAgICAgRVJMQ1VMX1NSQl9NICAgICAiW0VSTENVTF1bTENQXSAgICAgICByZXR4IFNFRyAocmJfaWR4PSV1bDo2LHRiX2lkeD0ldWw6Mixzej0ldWw6MTQsc249JXVsOjEwLGU9JXVsOjEsZmk9JXVsOjIsaWR4PSV1bDoxNixzc289JXVsOjEzLHBzbz0ldWQ6MTUsbHNmPSV1ZDoxKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX0JVSUxEX0NUUkxfUERVICAgICAgICAgICAgIEVSTENVTF9EUkJfTSAgICAgIltFUkxDVUxdW0xDUF1bUlBUXSAgY3RybCBQRFUgKHJiX2lkeD0ldWQ6Nix0Yl9pZHg9JXVkOjIsc3o9JXVkOjgpIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfQlVJTERfQ1RSTF9QRFUgICAgICAgICAgICAgRVJMQ1VMX1NSQl9NICAgICAiW0VSTENVTF1bTENQXVtSUFRdICBjdHJsIFBEVSAocmJfaWR4PSV1ZDo2LHRiX2lkeD0ldWQ6Mixzej0ldWQ6OCkiCitpbmZvICBFUkxDVUxfTE9HX0RSQl9IRFJfMTYgICAgICAgICAgICAgICAgICAgICBFUkxDVUxfRFJCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgSERSICgleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCkiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9IRFJfMTYgICAgICAgICAgICAgICAgICAgICBFUkxDVUxfU1JCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgSERSICgleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCwleGw6OCkiCisKKy8vIFRYIGRhdGEgZXhwbGljaXQgdHJhY2U6IFNEVSBpbmZvCitpbmZvICBFUkxDVUxfTE9HX0RSQl9TRFVfU1ogICAgICAgICAgICAgICAgICAgICBFUkxDVUxfRFJCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWR4MSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfU1JCX1NEVV9TWiAgICAgICAgICAgICAgICAgICAgIEVSTENVTF9TUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1ZHgxKShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfU0RVX1NaXzEyICAgICAgICAgICAgICAgICAgRVJMQ1VMX0RSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1KShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfU0RVX1NaXzEyICAgICAgICAgICAgICAgICAgRVJMQ1VMX1NSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1KShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfU0RVX1NaXzE2ICAgICAgICAgICAgICAgICAgRVJMQ1VMX0RSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVsOjE2LCV1bDoxNiwldWw6MTYsJXVsOjE2KXgoJXVmOjUsJXVmOjUsJXVmOjUsJXVmOjUpKGxlbiB4IG51bSkiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9TRFVfU1pfMTYgICAgICAgICAgICAgICAgICBFUkxDVUxfRFJCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWw6MTYsJXVsOjE2LCV1bDoxNiwldWw6MTYpeCgldWY6NSwldWY6NSwldWY6NSwldWY6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX1NEVV9TWl8xMl8xICAgICAgICAgICAgICAgIEVSTENVTF9EUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1ZDoxMXgldWQ6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfU1JCX1NEVV9TWl8xMl8xICAgICAgICAgICAgICAgIEVSTENVTF9TUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1ZDoxMXgldWQ6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX1NEVV9TWl8xMl8yICAgICAgICAgICAgICAgIEVSTENVTF9EUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUpKGxlbiB4IG51bSkiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9TRFVfU1pfMTJfMiAgICAgICAgICAgICAgICBFUkxDVUxfU1JCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1KShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfU0RVX1NaXzEyXzMgICAgICAgICAgICAgICAgRVJMQ1VMX0RSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSwldWQ6MTF4JXVkOjUpKGxlbiB4IG51bSkiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9TRFVfU1pfMTJfMyAgICAgICAgICAgICAgICBFUkxDVUxfU1JCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1LCV1ZDoxMXgldWQ6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX1NEVV9TWl8xMl80ICAgICAgICAgICAgICAgIEVSTENVTF9EUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfU1JCX1NEVV9TWl8xMl80ICAgICAgICAgICAgICAgIEVSTENVTF9TUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1bDoxMXgldWw6NSwldWw6MTF4JXVsOjUsJXVsOjExeCV1bDo1LCV1bDoxMXgldWw6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX1NEVV9TWl8xNl8xICAgICAgICAgICAgICAgIEVSTENVTF9EUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1ZCl4KCV1Yjo1KShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfU0RVX1NaXzE2XzEgICAgICAgICAgICAgICAgRVJMQ1VMX1NSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVkKXgoJXViOjUpKGxlbiB4IG51bSkiCitpbmZvICBFUkxDVUxfTE9HX0RSQl9TRFVfU1pfMTZfMiAgICAgICAgICAgICAgICBFUkxDVUxfRFJCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWw6MTYsJXVsOjE2KXgoJXVkOjUsJXVkOjUpKGxlbiB4IG51bSkiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9TRFVfU1pfMTZfMiAgICAgICAgICAgICAgICBFUkxDVUxfU1JCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWw6MTYsJXVsOjE2KXgoJXVkOjUsJXVkOjUpKGxlbiB4IG51bSkiCitpbmZvICBFUkxDVUxfTE9HX0RSQl9TRFVfU1pfMTZfMyAgICAgICAgICAgICAgICBFUkxDVUxfRFJCX0wgICAgICJbRVJMQ1VMXVtMQ1BdICAgICAgICAgICAgU0RVICgldWw6MTYsJXVsOjE2LCV1ZCl4KCV1ZDo1LCV1ZDo1LCV1ZDo1KShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfU0RVX1NaXzE2XzMgICAgICAgICAgICAgICAgRVJMQ1VMX1NSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVsOjE2LCV1bDoxNiwldWQpeCgldWQ6NSwldWQ6NSwldWQ6NSkobGVuIHggbnVtKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX1NEVV9TWl8xNl80ICAgICAgICAgICAgICAgIEVSTENVTF9EUkJfTCAgICAgIltFUkxDVUxdW0xDUF0gICAgICAgICAgICBTRFUgKCV1bDoxNiwldWw6MTYsJXVsOjE2LCV1bDoxNil4KCV1Zjo1LCV1Zjo1LCV1Zjo1LCV1Zjo1KShsZW4geCBudW0pIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfU0RVX1NaXzE2XzQgICAgICAgICAgICAgICAgRVJMQ1VMX1NSQl9MICAgICAiW0VSTENVTF1bTENQXSAgICAgICAgICAgIFNEVSAoJXVsOjE2LCV1bDoxNiwldWw6MTYsJXVsOjE2KXgoJXVmOjUsJXVmOjUsJXVmOjUsJXVmOjUpKGxlbiB4IG51bSkiCisKKy8vIFRYIGRhdGEgYWdncmVnYXRpb24gdHJhY2UKK2luZm8gIEVSTENVTF9MT0dfU0NIRURfT1ZFUkFMTF9SRVNVTFQgICAgICAgICAgIEVSTENVTF9SQl9VSCAgICAgIltFUkxDVUxdW0FHR10gc2NoZWQgcmVzdWx0IHN1bW1hcnkgKGdyYW50X251bT0ldWIsZ3JhbnRfYnl0ZV9zdW1fYmVmb3JlPSV1bCxncmFudF9ieXRlX3N1bV9hZnRlcj0ldWwpIgoraW5mbyAgRVJMQ1VMX0xPR19TUkJfU0NIRURfUkVTVUxUICAgICAgICAgICAgICAgRVJMQ1VMX1NSQl9VSCAgICAiW0VSTENVTF1bQUdHXSBzY2hlZCByZXN1bHQgQU0gUkIgKHJiX2lkeD0ldWw6Nixwb2xsX2JpdF9zZXQ9JXVsOjEsc3J2ZF9ieXRlOmN0cmw9JXVsOjEwLHJldHg9JXVsOjE1LG5ldz0ldWYpIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfQU1fU0NIRURfUkVTVUxUICAgICAgICAgICAgRVJMQ1VMX0RSQl9VSCAgICAiW0VSTENVTF1bQUdHXSBzY2hlZCByZXN1bHQgQU0gUkIgKHJiX2lkeD0ldWw6Nixwb2xsX2JpdF9zZXQ9JXVsOjEsc3J2ZF9ieXRlOmN0cmw9JXVsOjEwLHJldHg9JXVsOjE1LG5ldz0ldWYpIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfVU1fU0NIRURfUkVTVUxUICAgICAgICAgICAgRVJMQ1VMX0RSQl9VSCAgICAiW0VSTENVTF1bQUdHXSBzY2hlZCByZXN1bHQgVU0gUkIgKHJiX2lkeD0ldWY6NSxzcnZkX2J5dGU6bmV3PSV1ZjoxOSkiCitpbmZvICBFUkxDVUxfTE9HX1NSQl9TVEFURV9WQVIgICAgICAgICAgICAgICAgICBFUkxDVUxfU1JCX1VIICAgICJbRVJMQ1VMXVtBR0ddIFVMIEFNIHN0YXRlIHZhcmlhYmxlcyAocmJfaWR4PSV1bDo2LHZ0X2E9JXVsOjEwLHZ0X3M9JXVsOjEwLHBvbGxfc249JXVkKSIKK2luZm8gIEVSTENVTF9MT0dfRFJCX0FNX1NUQVRFX1ZBUiAgICAgICAgICAgICAgIEVSTENVTF9EUkJfVUggICAgIltFUkxDVUxdW0FHR10gVUwgQU0gc3RhdGUgdmFyaWFibGVzIChyYl9pZHg9JXVsOjYsdnRfYT0ldWw6MTAsdnRfcz0ldWw6MTAscG9sbF9zbj0ldWQpIgoraW5mbyAgRVJMQ1VMX0xPR19EUkJfVU1fU1RBVEVfVkFSICAgICAgICAgICAgICAgRVJMQ1VMX0RSQl9VSCAgICAiW0VSTENVTF1bQUdHXSBVTCBVTSBzdGF0ZSB2YXJpYWJsZXMgKHJiX2lkeD0ldWQ6Nix2dF91cz0ldWQ6MTApIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUSU1FUiBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gVGltZXIgaGFuZGxpbmcKK2luZm8gIEVSTENVTF9MT0dfUE9MTF9SRVRYX1NUQVJUICAgICAgICAgICAgICAgIEVSTENVTF9USU1FUl9MICAgICAgIltFUkxDVUxdW1RNUl0gdC1Qb2xsUmV0cmFuc21pdCB0aW1lciBzdGFydCAocmJfaWR4PSV1YikiCitpbmZvICBFUkxDVUxfTE9HX1BPTExfUkVUWF9TVE9QICAgICAgICAgICAgICAgICBFUkxDVUxfVElNRVJfTCAgICAgICJbRVJMQ1VMXVtUTVJdIHQtUG9sbFJldHJhbnNtaXQgdGltZXIgc3RvcCAocmJfaWR4PSV1YikiCitpbmZvICBFUkxDVUxfTE9HX1BPTExfUkVUWF9FWFBJUkUgICAgICAgICAgICAgICBFUkxDVUxfVElNRVJfTCAgICAgICJbRVJMQ1VMXVtUTVJdIHQtUG9sbFJldHJhbnNtaXQgdGltZXIgZXhwaXJlIChyYl9pZHg9JXViKSIKK2luZm8gIEVSTENVTF9MT0dfU1RBVFVTX1BST0hfU1RBUlQgICAgICAgICAgICAgIEVSTENVTF9USU1FUl9MICAgICAgIltFUkxDVUxdW1RNUl0gdC1TdGF0dXNQcm9oaWJpdCB0aW1lciBzdGFydCAocmJfaWR4PSV1YikiCitpbmZvICBFUkxDVUxfTE9HX1NUQVRVU19QUk9IX1NUT1AgICAgICAgICAgICAgICBFUkxDVUxfVElNRVJfTCAgICAgICJbRVJMQ1VMXVtUTVJdIHQtU3RhdHVzUHJvaGliaXQgdGltZXIgc3RvcCAocmJfaWR4PSV1YikiCitpbmZvICBFUkxDVUxfTE9HX1NUQVRVU19QUk9IX0VYUElSRSAgICAgICAgICAgICBFUkxDVUxfVElNRVJfTCAgICAgICJbRVJMQ1VMXVtUTVJdIHQtU3RhdHVzUHJvaGliaXQgdGltZXIgZXhwaXJlIChyYl9pZHg9JXViKSIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU1RBVFVTIFBEVSBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwkKKy8vIFNUQVRVUyBQRFUKK2luZm8gIEVSTENVTF9MT0dfUlhfU1RVU19QRFUgICAgICAgICAgICAgICAgICAgIEVSTENVTF9SQl9IICAgICAgICAgICJbRVJMQ1VMXVtSUFRdIHByZS1wcm9jZXNzOiByeCBVTCBTVEFUVVMgUERVIChyYl9pZHg9JXVsOjYscGR1X3N6PSV1bDoxMCxhY2tfc249JXVsOjEwKSIKK2luZm8gIEVSTENVTF9MT0dfUlhfU1RVU19QRFVfRFVQICAgICAgICAgICAgICAgIEVSTENVTF9SQl9IICAgICAgICAgICJbRVJMQ1VMXVtSUFRdIHByZS1wcm9jZXNzOiByeCBVTCBTVEFUVVMgUERVIGJ1dCBkdXBsaWNhdGUgKHJiX2lkeD0ldWw6NixwZHVfc3o9JXVsOjEwLGFja19zbj0ldWw6MTAsdnRfYT0ldWY6MTAsdnRfcz0ldWY6MTApIgoraW5mbyAgRVJMQ1VMX0xPR19TVFVTX1BEVV9JTkQgICAgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX00gICAgICAgICAgIltFUkxDVUxdW1JQVF1bVkFSXSBtYWluIHByb2Nlc3M6IHJ4IFVMIFNUQVRVUyBQRFUgKHJiX2lkeD0ldWw6Nix2dF9hPSV1bDoxMCx2dF9zPSV1bDoxMCxwb2xsX3NuPSV1ZCkiCitpbmZvICBFUkxDVUxfTE9HX1JYX05BQ0tfUERVICAgICAgICAgICAgICAgICAgICBFUkxDVUxfUkJfTCAgICAgICAgICAiW0VSTENVTF1bUlBUXSByeCBOQUNLIFBEVSAoc249JXVkOjEwKSIKK2luZm8gIEVSTENVTF9MT0dfUlhfTkFDS19TRUcgICAgICAgICAgICAgICAgICAgIEVSTENVTF9SQl9MICAgICAgICAgICJbRVJMQ1VMXVtSUFRdIHJ4IE5BQ0sgU0VHIChzbj0ldWQ6MTAscmY9JXVkOjEsbHNmPSV1ZDo1LHNvX3M9JXVsOjE2LHNvX2U9JXVsOjE2KSIKK2luZm8gIEVSTENVTF9MT0dfUERVX1JFVFhfQ05UUiAgICAgICAgICAgICAgICAgIEVSTENVTF9SQl9MICAgICAgICAgICJbRVJMQ1VMXVtSUFRdIFBEVSByZXR4IGNvdW50KysgKHJiX2lkeD0ldWY6Nixzbj0ldWY6MTAscmV0eF9jbnQ9JXVmOjYpIgord2FybiAgRVJMQ1VMX0xPR19NQVhfUkVUWF9DTlRSICAgICAgICAgICAgICAgICAgRVJMQ1VMX0VSUk9SX1VIICAgICAgIltFUkxDVUxdW1JQVF0gbWF4IHJldHggY291bnQgcmVhY2hlZCAocmJfaWR4PSV1ZDo2LHNuPSV1ZDoxMCkiCisKKy8vIFNUQVRVUyBQRFUgd2FybmluZyB0cmFjZQord2FybiAgRVJMQ1VMX0xPR19SWF9TVFVTX1BEVV9CQURfRSAgICAgICAgICAgICAgRVJMQ1VMX1dBUk5fSCAgICAgIltFUkxDVUxdW1JQVF1bV0FSTl0gcnggVUwgU1RBVFVTIFBEVSBidXQgc2l6ZSB1bm1hdGNoZWQgKHJiX2lkeD0ldWw6NixpbmRfc3o9JXVsOjEwLHRvdGFsX3N6PSV1bDoxMCkiCit3YXJuICBFUkxDVUxfTE9HX1JYX1NUVVNfUERVX0JBRF9TWiAgICAgICAgICAgICBFUkxDVUxfV0FSTl9IICAgICAiW0VSTENVTF1bUlBUXVtXQVJOXSByeCBVTCBTVEFUVVMgUERVIGJ1dCBiYWQgc2l6ZSAocmJfaWR4PSV1YixwZHVfc3o9MSkiCit3YXJuICBFUkxDVUxfTE9HX1JYX1NUVVNfUERVX0JBRF9DUFQgICAgICAgICAgICBFUkxDVUxfV0FSTl9IICAgICAiW0VSTENVTF1bUlBUXVtXQVJOXSByeCBVTCBTVEFUVVMgUERVIGJ1dCBiYWQgQ1BUIChyYl9pZHg9JXVsOjYscGR1X3N6PSV1bDoxMCxhY2tfc249JXVsOjEwLGNwdD0ldWw6MykiCit3YXJuICBFUkxDVUxfTE9HX1JYX1NUVVNfUERVX0lOQUNUSVZFICAgICAgICAgICBFUkxDVUxfV0FSTl9IICAgICAiW0VSTENVTF1bUlBUXVtXQVJOXSByeCBVTCBTVEFUVVMgUERVIGZvciBhbiBpbmFjdGl2ZSBSQiAocmJfaWR4PSV1bCkiCit3YXJuICBFUkxDVUxfTE9HX05BQ0tfSU5WQUxJRCAgICAgICAgICAgICAgICAgICBFUkxDVUxfV0FSTl9IICAgICAiW0VSTENVTF1bUlBUXVtXQVJOXSByeCBOQUNLIGJ1dCBpbnZhbGlkIFNOIChzbj0ldWw6MTAsdnRfYT0ldWw6MTAsdnRfcz0ldWw6MTApIgord2FybiAgRVJMQ1VMX0xPR19OQUNLX09VVF9PUkRFUiAgICAgICAgICAgICAgICAgRVJMQ1VMX1dBUk5fSCAgICAgIltFUkxDVUxdW1JQVF1bV0FSTl0gcnggTkFDSyBidXQgb3V0IG9mIG9yZGVyIChzbj0ldWQpIgord2FybiAgRVJMQ1VMX0xPR19OQUNLX0JBRF9TTyAgICAgICAgICAgICAgICAgICAgRVJMQ1VMX1dBUk5fSCAgICAgIltFUkxDVUxdW1JQVF1bV0FSTl0gcnggTkFDSyBTRUcgd2l0aCBpbnZhbGlkIFNPIChzbj0ldWY6MTAsZGF0YV9zej0ldWY6MTQsc29fcz0ldWw6MTYsc29fZT0ldWw6MTYpIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBQRENQIFJFRVNUQUJMSVNITUVOVCBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgRVJMQ1VMX0xPR19QRENQX1NUQVRVU19BQ0sgICAgICAgICAgICAgICAgRVJMQ1VMX1JCX1VMICAgICAiW0VSTENVTF1bUlBUXVtQRENQXSByeCBQRENQIHN0YXR1cyBhY2sgKHRpZD0ldWQ6MixpZHg9JXVkOjE0LGNvdW50PSV1bCkiCit3YXJuICBFUkxDVUxfTE9HX1BEQ1BfU1RBVFVTX0ZNUyAgICAgICAgICAgICAgICBFUkxDVUxfUkJfVUwgICAgICJbRVJMQ1VMXVtSUFRdW1BEQ1BdIHJ4IFBEQ1Agc3RhdHVzIHJlcG9ydCAoZm1zPSV1bDoyNCx2YWxpZD0ldWw6MSkiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFBEQ1AgRElTQ0FSRCBUUkFDRSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW5mbyAgRVJMQ1VMX0xPR19ESVNDQVJEX1NJVF9SQU5HRSAgICAgICAgICAgICAgRVJMQ1VMX1JCX1VIICAgICAiW0VSTENVTF1bRElTQ11bUERDUF0gU0RVIGRpc2NhcmQgY29uZmlybWVkIChyYl9pZHg9JXVsOjUpKHNjaGVkIGluZGV4PSV1bDoxMixkaXNjYXJkIHRhaWw9JXVsOjE1KSIKK2luZm8gIEVSTENVTF9MT0dfUERDUF9ESVNDQVJEX1NDSEVEX0lEWF9VUERBVEUgIEVSTENVTF9SQl9VSCAgICAgIltFUkxDVUxdW0RJU0NdW1BEQ1BdIHNjaGVkIGluZGV4IGFmdGVyIGRpc2NhcmQoc2NoZWQgaW5kZXg9JXVsKSIKZGlmZiAtLWdpdCBhL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdXBjbV9lbWFjX3N0cnVjdC5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VsMi91cGNtX2VtYWNfc3RydWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5Mjk0MgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbDIvdXBjbV9lbWFjX3N0cnVjdC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxMgorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIHVwY21fZW1hY19zdHJ1Y3QuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNT0xZCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgc3RydWN0IGJldHdlZW4gZW1hYyBhbmQgdXBjbS4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDUgMDkgMjAxOSB0Yy5jaGFuZworICogW01PTFkwMDQwNDc3MF0gW0dlbjk3XSBTeW5jIEdlbjk1IFVNT0xZRSBwYXRjaC4KKyAqIFJCUlEsIFVTSVIsIGZha2UgQTIsIGFuZCBzb21lIGJ1ZyBmaXgKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLy8vIEBkYXRlIDIwMTgvMy8xNQorCisjaWZuZGVmIF9fVVBDTV9FTUFDX1NUUlVDVF9fCisjZGVmaW5lIF9fVVBDTV9FTUFDX1NUUlVDVF9fCisKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIgorCisjZGVmaW5lIFVQQ01fRU1BQ19NQVhfUkJfTlVNICAoMTApICAgICAvL3RoaXMgdmFsdWUgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIE1BWF9SQl9OVU0KKyNkZWZpbmUgVVBDTV9FTUFDX0lOVkFMSURfUkJSICgweEZGRkZGRkZGKQorCit0eXBlZGVmIHN0cnVjdHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIGthbF91aW50OCByYl9pZHg7CisgICAga2FsX2Jvb2wgaXNfdWw7CisgICAga2FsX3VpbnQzMiByYnJxOworfXVwY21fZW1hY19yYnJxX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0eworICAgIExPQ0FMX1BBUkFfSERSCisgICAga2FsX3VpbnQ4IGluYWN0aXZlX251bTsKKyAgICBrYWxfdWludDggYWN0aXZlX251bTsKKworICAgIGthbF91aW50OCBpbmFjdGl2ZV9yYltVUENNX0VNQUNfTUFYX1JCX05VTV07CisgICAga2FsX3VpbnQ4IGFjdGl2ZV9yYltVUENNX0VNQUNfTUFYX1JCX05VTV07Cit9dXBjbV9lbWFjX3JicnFfc3VwcG9ydF9yZWxfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3R7CisgICAgTE9DQUxfUEFSQV9IRFIKKyAgICBrYWxfdWludDggcmJfaWR4OworICAgIGthbF9ib29sIGlzX3VsOworICAgIGthbF91aW50MzIgcmJyOworfXVwY21fZW1hY2RsX3Jicl9pbmRfc3RydWN0OworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VuX2NvbW1vbi9lbmwyX3NhcF9jb21tb24uaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbl9jb21tb24vZW5sMl9zYXBfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc1Mjc1MQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbl9jb21tb24vZW5sMl9zYXBfY29tbW9uLmgKQEAgLTAsMCArMSw2MzkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgQ29weXJpZ2h0IFN0YXRlbWVudDoKKyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisqICBUaGlzIHNvZnR3YXJlIGlzIHByb3RlY3RlZCBieSBDb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyogIGhlcmVpbiBpcyBjb25maWRlbnRpYWwuIFRoZSBzb2Z0d2FyZSBtYXkgbm90IGJlIGNvcGllZCBhbmQgdGhlIGluZm9ybWF0aW9uCisqICBjb250YWluZWQgaGVyZWluIG1heSBub3QgYmUgdXNlZCBvciBkaXNjbG9zZWQgZXhjZXB0IHdpdGggdGhlIHdyaXR0ZW4KKyogIHBlcm1pc3Npb24gb2YgTWVkaWFUZWsgSW5jLiAoQykgMjAxOAorKgorKiAgQlkgT1BFTklORyBUSElTIEZJTEUsIEJVWUVSIEhFUkVCWSBVTkVRVUlWT0NBTExZIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTCisqICBUSEFUIFRIRSBTT0ZUV0FSRS9GSVJNV0FSRSBBTkQgSVRTIERPQ1VNRU5UQVRJT05TICgiTUVESUFURUsgU09GVFdBUkUiKQorKiAgUkVDRUlWRUQgRlJPTSBNRURJQVRFSyBBTkQvT1IgSVRTIFJFUFJFU0VOVEFUSVZFUyBBUkUgUFJPVklERUQgVE8gQlVZRVIgT04KKyogIEFOICJBUy1JUyIgQkFTSVMgT05MWS4gTUVESUFURUsgRVhQUkVTU0xZIERJU0NMQUlNUyBBTlkgQU5EIEFMTCBXQVJSQU5USUVTLAorKiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyogIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OSU5GUklOR0VNRU5ULgorKiAgTkVJVEhFUiBET0VTIE1FRElBVEVLIFBST1ZJREUgQU5ZIFdBUlJBTlRZIFdIQVRTT0VWRVIgV0lUSCBSRVNQRUNUIFRPIFRIRQorKiAgU09GVFdBUkUgT0YgQU5ZIFRISVJEIFBBUlRZIFdISUNIIE1BWSBCRSBVU0VEIEJZLCBJTkNPUlBPUkFURUQgSU4sIE9SCisqICBTVVBQTElFRCBXSVRIIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSwgQU5EIEJVWUVSIEFHUkVFUyBUTyBMT09LIE9OTFkgVE8gU1VDSAorKiAgVEhJUkQgUEFSVFkgRk9SIEFOWSBXQVJSQU5UWSBDTEFJTSBSRUxBVElORyBUSEVSRVRPLiBNRURJQVRFSyBTSEFMTCBBTFNPCisqICBOT1QgQkUgUkVTUE9OU0lCTEUgRk9SIEFOWSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFUyBNQURFIFRPIEJVWUVSJ1MKKyogIFNQRUNJRklDQVRJT04gT1IgVE8gQ09ORk9STSBUTyBBIFBBUlRJQ1VMQVIgU1RBTkRBUkQgT1IgT1BFTiBGT1JVTS4KKyoKKyogIEJVWUVSJ1MgU09MRSBBTkQgRVhDTFVTSVZFIFJFTUVEWSBBTkQgTUVESUFURUsnUyBFTlRJUkUgQU5EIENVTVVMQVRJVkUKKyogIExJQUJJTElUWSBXSVRIIFJFU1BFQ1QgVE8gVEhFIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VEIEhFUkVVTkRFUiBXSUxMIEJFLAorKiAgQVQgTUVESUFURUsnUyBPUFRJT04sIFRPIFJFVklTRSBPUiBSRVBMQUNFIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRSwKKyogIE9SIFJFRlVORCBBTlkgU09GVFdBUkUgTElDRU5TRSBGRUVTIE9SIFNFUlZJQ0UgQ0hBUkdFIFBBSUQgQlkgQlVZRVIgVE8KKyogIE1FRElBVEVLIEZPUiBTVUNIIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLgorKgorKiAgVEhFIFRSQU5TQUNUSU9OIENPTlRFTVBMQVRFRCBIRVJFVU5ERVIgU0hBTEwgQkUgQ09OU1RSVUVEIElOIEFDQ09SREFOQ0UKKyogIFdJVEggVEhFIExBV1MgT0YgVEhFIFNUQVRFIE9GIENBTElGT1JOSUEsIFVTQSwgRVhDTFVESU5HIElUUyBDT05GTElDVCBPRgorKiAgTEFXUyBQUklOQ0lQTEVTLiAgQU5ZIERJU1BVVEVTLCBDT05UUk9WRVJTSUVTIE9SIENMQUlNUyBBUklTSU5HIFRIRVJFT0YgQU5ECisqICBSRUxBVEVEIFRIRVJFVE8gU0hBTEwgQkUgU0VUVExFRCBCWSBBUkJJVFJBVElPTiBJTiBTQU4gRlJBTkNJU0NPLCBDQSwgVU5ERVIKKyogIFRIRSBSVUxFUyBPRiBUSEUgSU5URVJOQVRJT05BTCBDSEFNQkVSIE9GIENPTU1FUkNFIChJQ0MpLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgIGVubDJfc2FwX2NvbW1vbi5oCisgKgorICogUHJvamVjdDoKKyAqIC0tLS0tLS0tCisgKgorICoKKyAqIERlc2NyaXB0aW9uOgorICogLS0tLS0tLS0tLS0tCisgKiAgIENvbW1vbiBoZWFkZXIgZmlsZSBmb3IgYWxsIEVOTDIgU0FQcy4KKyAqICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvbW1vbiBzdHJ1Y3R1cmVzIHVzZWQgYnkgYWxsIEVOTDIgU0FQcy4KKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKgorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqIDEwIDIyIDIwMjAgaGVhZC5oc3UKKyAqIFtNT0xZMDA1NzQ2MjRdIFtHZW45N10gW0dlbWluaV0gTlBEQ1AgSFcgYXJiaXRyYXRpb24KKyAqIFtJbnRlcmZhY2VdW0VOTDIgQ29tbW9uXQorICoKKyAqIDEyIDA5IDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwNDY0NjMyXSBbR0VOOTddIDVHNCBJUkFUIEhPIHdpdGggbnJfcmIgY29uZmlndXJhdGlvbgorICogLgorICoKKyAqIDEyIDAzIDIwMTkgc2FrYXJpLm5pZW1lbGEKKyAqIFtNT0xZMDA0NjIyMzhdIFtHZW45N11bVk1PTFldIFNtYXJ0IElkbGUgRmVhdHVyZSBTQSBwYXJ0KE1QRCkKKyAqIFZHTU0tTlJSQywgTlJSQy1FTlBEQ1AgYW5kIE5SUkMgSW50ZXJuYWwgU0FQIHVwZGF0ZXMgZm9yICdTbWFydCBJZGxlJworICoKKyAqIDEwIDE0IDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwNDQyODQ2XSBbR2VuOTddIE1vZGVtIGZlYXR1cmUgLSBOU0EgcGFydCAoaW1wbGVtZW50YXRpb24pCisgKiAuCisgKgorICogMDkgMjUgMjAxOSB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDA0NDMzMTJdIFtNVDY4ODVdW1BldHJ1c11bU2FuaXR5XVtWTU9MWV1bVk1PTFldWzIwMTktMDktMjFfMTcwMF0gQVNTRVJUID0gWzFdW2NvcmUxLHZwZTAsdGMwKHZwZTMpXSBBc3NlcnQgZmFpbDogZXBkY3BfcmJtLmMgNjM5MiAtIEVMMiBfCisgKiAuCisgKgorICogMDkgMDkgMjAxOSBqaWEtc2hpLmxpbgorICogW01PTFkwMDQzMDY3Ml0gW0dlbjk3XVtOV1NJTV1bNUddW1NBXVtHQ0YgVEVTVF0gVEMgOC4xLjQuMS42IEZhaWxzIGF0ZSB0ZXN0IHN0ZXAgNworICogW0VOUERDUF0gY2hhbmdlIGZvciBzZWN1cnR5IHN1c3BlbnNpb24uCisgKiAtIEVOUERDUF9GTEFHX0RMX1NFQ1VSSVRZX0VOIGFuZCBFTlBEQ1BfRkxBR19VTF9TRUNVUklUWV9FTiBvbmx5IGRlcGVuZHMgb24gU1JCMS4KKyAqICAgIFN1c3BlbmRpbmcgdGhlIHNlY3VyaXR5IG9mIFJCcyBleGNsdWRpbmcgU1JCMSBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlY3VyaXR5IGZsYWcuCisgKiAtIFRoaXMgY2hhbmdlIHN1cHBvcnRzIGZvciB0aGUgc3VzcGVuc2lvbiBvZiBpbmRpdmlzdWFsIFJCLgorICogICAgd2hlbiB0aGUgc2VjdXJpdHkgb2YgYSBSQiBpcyBzdXNwZW5kZWQsIGludGVncml0eSBhbmQgY2lwaGVyIG9mIGl0IGFyZSB0dXJuZWQgb2ZmICh1bDogemVybyBNQUNJL2RsOiBza2lwICYgbnVsbCBjaXBoZXIpLgorICoKKyAqIDA4IDAxIDIwMTkgaGVhZC5oc3UKKyAqIFtNT0xZMDA0MjcyODVdIFs2Mjk3XVtOUlJDXVtFTlBEQ1BdIDVHIGludGVyLVJBVCBkZXYKKyAqIHJlbGVhc2UgZnJvbSBOUiAoU0FQKQorICoKKyAqIDA1IDMwIDIwMTkgY2hhcmxleS1jYy5jaGVuZworICogW01PTFkwMDQwMjAwM10gW1ZNT0xZXSBHRU1JTkkgTitMIERTRFMKKyAqIAkKKyAqIAlbQ09ORklHXVtTQSBhbmQgTlNBIEdlbWluaV0gQ29uZmlnIGNvZGUgYW5kIGludGVyZmFjZQorICoKKyAqIDAxIDMxIDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzgyNTk5XSBbR0VOOTddW0VOUERDUF0gUERDUCBlbnRpdHkgc3VzcGVuZCBwcm9jZWR1cmUKKyAqIC4KKyAqCisgKiAwMSAyNSAyMDE5IHlpdGluZy5jaGVuZworICogW01PTFkwMDM4MTE3Nl0gW0dFTjk3XVtFTlBEQ1AvRVJSQy9FVENdIG5ldyBsb29wYmFjayBtb2RlIGludGVyZmFjZQorICogLgorICoKKyAqIDAxIDE4IDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogTW9kaWZ5IFJSQy1FTlBEQ1AgU0FQIGNvbnN0YW50CisgKgorICogMDEgMDggMjAxOSB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBJbnRlcmZhY2UgZm9yIExCTSAtIG5ldyBhbmQgb2xkIGludGVyZmFjZSBjby1leGlzdAorICoKKyAqIDExIDI5IDIwMTggbWluZ3RzdW5nLnN1bgorICogW01PTFkwMDM2MTkwMl0gW0dlbjk3XVtLUy1JT0RUXVs1R11bUjE1X0VORENfUkxDX0NPTVBMRVRFX1NFR19DaGFuZ2VfanVuZV1bMV0gQXNzZXJ0IGZhaWw6IHByb3RvY29sL2VubDIvZWwyX3NlYy9lbDJpdC9jb3Byby9zcmMvY2lwaGVyLmMgNTMzIC0gRUwxQl9VNEdfQURBUFRPUgorICogSW50ZWdyYXRlIEZQR0EgU0VQIERFVgorICoKKyAqIDEwIDE5IDIwMTggbmllbnRlaC5oc3UKKyAqIFtNT0xZMDAzNTIwMDddIFtNVDYyOTddIE5STEMgZGV2ZWxvcG1lbnQ6IE5STENVTCBHZW1pbmkgY29kZSBjaGVjay1pbgorICogCQorICogCS4KKyAqCisgKiAxMCAwNCAyMDE4IHNoaWh5dS53YW5nCisgKiBbTU9MWTAwMzU2NTk1XSBbR2VuOTddW0VOUERDUF0gRVBEQ1AgRmVNRFQgRmVhdHVyZQorICogCQorICogCXVwZ3JhZGUgRU5QRENQX1NBUF9NQVhfTlVNX1FVRVVJTkdfREVMQVlfRFNMVCB0byBhbGlnbiBtYXggRFJCIG51bWJlcgorICoKKyAqIDEwIDAyIDIwMTggc2hpaHl1LndhbmcKKyAqIFtNT0xZMDAzNTY1OTVdIFtHZW45N11bRU5QRENQXSBFUERDUCBGZU1EVCBGZWF0dXJlCisgKiAJCisgKiAJcm9sbGJhY2sgb2xkIGludGVyZmFjZQorICoKKyAqIDA5IDE0IDIwMTggeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogYWRkIHByaW1hcnlfY2dpZF92YWxpZCBhbmQgcHJpbWFyeV9sY2lkX3ZhbGlkCisgKgorICogMDggMjcgMjAxOCBhbnR0aS5rYWlzdG8KKyAqIFtNT0xZMDAzNDYwMTFdIFtHZW45N11bTlJSQ10gTWVyZ2UgdG8gVk1PTFkgVFJVTksKKyAqIE1lcmdlIGVubDJfc2FwX2NvbW1vbi5oIGZyb20gQ0wjNjE1OTc5OC4KKyAqCisgKiAwOCAxNyAyMDE4IHlrLmxpdQorICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIG1lcmdlIEVNT0xZIENMcyB0byBWTU9MWQorICoKKyAqIDA4IDA3IDIwMTggeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogU0RBUCBjb25maWd1cmF0aW9uIGFuZCA1UUkgdXBkYXRlCisgKgorICogMDcgMjQgMjAxOCBhbnR0aS5rYWlzdG8KKyAqIFtNT0xZMDAzMDk4NTldIFs2Mjk3XVtOUlJDXSBDT05GSUcgbW9kdWxlIEVOLURDIGltcGxlbWVudGF0aW9uCisgKiBOUlJDIENPTkZJRzogQ29ycmVjdGlvbnMgdG8gTDIgY29uZmlndXJhdGlvbiBoYW5kbGluZyAocHJpb3JpdGlzZWRCaXRSYXRlIGZvciBTUkJzIHZhbGlkYXRpb24sIHQtUmVvcmRlcmluZykuCisgKgorICogMDcgMTIgMjAxOCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBSZW1vdmUgZGNfYmVhcmVyX3R5cGUgYWNjb3JkaW5nIHRvIFNBUAorICogCisgKiBbUHJvdG9jb2wgYnVpbGQgdGFnXQorICogW0lzIENMIHNlbGYgdGVzdGFibGU6IFlFU10KKyAqIFtHcm91cCBDTCBsaXN0OiBOT10KKyAqCisgKiAwNyAwMiAyMDE4IHlpdGluZy5jaGVuZworICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIE5ldyBpbnRlcmZhY2UgZm9yIFBEQ1AgZHVwbGljYXRpb24KKyAqIAorICogW1Byb3RvY29sIGJ1aWxkIHRhZ10KKyAqIFtJcyBDTCBzZWxmIHRlc3RhYmxlOiBZRVNdCisgKiBbR3JvdXAgQ0wgbGlzdDogTk9dCisgKgorICogMDYgMjEgMjAxOCBkb3VnLnNoaWgKKyAqIFtNT0xZMDAzMjQ3OTddIFs2Mjk3XVtFUlJDXSBDSE0gZGV2ZWxvcG1lbnQKKyAqIG1vZGlmaWNhdGlvbiBmb3Igc3VzcGVuZF9zY2cgY21kIGludGVyZmFjZSBjaGFuZ2UuCisgKiAKKyAqIFtQcm90b2NvbCBidWlsZCB0YWddCisgKiBbSXMgQ0wgc2VsZiB0ZXN0YWJsZTogTk9dCisgKiBbR3JvdXAgQ0wgbGlzdDogV0FJVF0KKyAqIC4KKyAqCisgKiAwNSAzMCAyMDE4IHlpdGluZy5jaGVuZworICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIFJSQy1FTlBEQ1AgR2VtaW5pIFZDIGludGVyZmFjZSBuYW1pbmcgY2hhbmdlCisgKgorICogMDUgMTggMjAxOCBoZWFkLmhzdQorICogW01PTFkwMDMyNjY5MV0gW01UNjI5N10gR0VOOTcuREVWIEVOTDIgUGF0Y2ggYmFjaworICogCXBvcnQgbGF0ZXN0IGludGVyZmFjZSBhbmQgY29kZSBvbiBHZW45Ny5ERVYgKGludGVyZmFjZSkKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfRU5MMl9TQVBfQ09NTU9OX0hfCisjZGVmaW5lIF9FTkwyX1NBUF9DT01NT05fSF8KKworI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICBDT05TVEFOVFMgCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEVOUERDUF9TQVBfTUFYX05VTV9DRkdfUkIgICAzMiAgLyogU1JCOiAzIChTUkIxLCBTUkIyLCBTUkIzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIERSQjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIC0gTFRFOiA4ICgzNi4zMzEgc2VjdGlvbiAxMS4xIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIERSQnMgY29uc3RyYWludCBpcyA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgLSBOUjogMjkgKCgzOC4zMzEgc2VjdGlvbiA2LjQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgRFJCcyBjb25zdHJhaW50IGlzIDI5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworI2RlZmluZSBFTlBEQ1BfU0FQX01BWF9OVU1fUkJfSURYICAgIDggIC8qIEFsdGhvdWdoIFJCIEluZGV4IGFsbG9jYXRpb24gY2FuIGJlIDB+MzYsIGJ1dCB0aGUgYXNzb2NpYXRpb24gb2YgRUJJIChFQkkgdmFsdWUgcmFuZ2U6IDB+MTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIFJCIElEIG9uZS10by1vbmUgbWFwcGluZyBhdHRyaWJ1dGUgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBvZiBEUkJzICg4KSBtYWtlIHRoZSBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBvbmx5IGhhcyBhIG1heGltdW0gbnVtYmVyIDggKi8KKworI2RlZmluZSBFTlBEQ1BfU0FQX01BWF9ST0hDX1BST0YgICAgIDkKKworI2RlZmluZSBFTlBEQ1BfU0FQX01BWF9OVU1fUVVFVUlOR19ERUxBWV9SU0xUICAgICg4KSAvLy88IGFsaWduZWQgdG8gbWF4aW11bSBudW1iZXIgb2YgRFJCcyBpbiBMVEUKKworCisKKyNkZWZpbmUgTUFYX0VNQk1TX01UQ0hfU1VQUE9SVCAgICAgICAgICAgICA4CisjZGVmaW5lIE1BWF9FTUJNU19NUkJfU1VQUE9SVCAgICAgICAgICAgICAgTUFYX0VNQk1TX01UQ0hfU1VQUE9SVAorI2RlZmluZSBNQVhfRU1CTVNfTUNDSF9TVVBQT1JUICAgICAgICAgICAgIDgKKyNkZWZpbmUgTUFYX0FSRUFfTlVNX1BFUl9DRUxMICAgICAgICAgICAgICA4CisjZGVmaW5lIE1BWF9NVENIX05VTV9QRVJfUE1DSF8yOSAgICAgICAgICAgMjkKKyNkZWZpbmUgTUFYX1NGX0lOX09ORV9SRiAgICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIE1BWF9NQlNGTl9BTExPQ0FUSU9OUyAgICAgICAgICAgICAgOAorI2RlZmluZSBNQVhfUE1DSF9QRVJfTUJTRk4gICAgICAgICAgICAgICAgIDE1CisjZGVmaW5lIE1BWF9OVU1fTVRDSF9QRVJfUE1DSCAgICAgICAgICAgICAgMjkKKyNkZWZpbmUgTUFYX1FPU19GTE9XU19QRVJfUERVX1NFU1NJT04gIDY0CisjZGVmaW5lIE1BWF9OVU1fUERVX1NFU1NJT04gICAgICAxNgorI2RlZmluZSBFTlBEQ1BfVF9SRU9SREVSSU5HX1RJTUVSX0lORklOSVRZICAgICAgMHhGRkZGCisjZGVmaW5lIEVOUERDUF9ESVNDQVJEX1RJTUVSX0lORklOSVRZICAgICAgICAgICAweEZGRkYKKyNkZWZpbmUgRU5QRENQX1VMX0RBVEFfU1BMSVRfVEhSRVNIT0xEX0lORklOSVRZIDB4RkZGRkZGRkYKKyNkZWZpbmUgRU5QRENQX1NSQjNfUkJfSURYX1ZBTFVFICAgICAgICAgICAgICAgIDE2CisjZGVmaW5lIEVOUERDUF9TUkIyX1JCX0lEWF9WQUxVRSAgICAgICAgICAgICAgICAxNworI2RlZmluZSBFTlBEQ1BfU1JCMV9SQl9JRFhfVkFMVUUgICAgICAgICAgICAgICAgMTgKKyNkZWZpbmUgRU5QRENQX01UQ0hfUkJfSURYX1ZBTFVFICAgICAgICAgICAgICAgIDE1CisjZGVmaW5lIEVOUERDUF9NQ0NIX1JCX0lEWF9WQUxVRSAgICAgICAgICAgICAgICAxOQorI2RlZmluZSBFTlBEQ1BfTlJfRFJCX1JCX0lEWF9SQU5HRTFfTUlOX1ZBTFVFICAgMAorI2RlZmluZSBFTlBEQ1BfTlJfRFJCX1JCX0lEWF9SQU5HRTFfTUFYX1ZBTFVFICAgMTQKKyNkZWZpbmUgRU5QRENQX05SX0RSQl9SQl9JRFhfUkFOR0UyX01JTl9WQUxVRSAgIDIwCisjZGVmaW5lIEVOUERDUF9OUl9EUkJfUkJfSURYX1JBTkdFMl9NQVhfVkFMVUUgICAzNgorI2RlZmluZSBFTkwyX1JCX0lEWF9ERURJQ0FURURfTlVNIDE1CisjZGVmaW5lIEVOTDJfUkJfSURYX0RFRElDQVRFRF9NSU4gRU5QRENQX05SX0RSQl9SQl9JRFhfUkFOR0UxX01JTl9WQUxVRQorI2RlZmluZSBFTkwyX1JCX0lEWF9ERURJQ0FURURfTUFYIEVOUERDUF9OUl9EUkJfUkJfSURYX1JBTkdFMV9NQVhfVkFMVUUKKyNkZWZpbmUgRU5MMl9SQl9JRFhfU0hBUkVEX01JTiBFTlBEQ1BfTlJfRFJCX1JCX0lEWF9SQU5HRTJfTUlOX1ZBTFVFCisjZGVmaW5lIEVOTDJfUkJfSURYX1NIQVJFRF9NQVggRU5QRENQX05SX0RSQl9SQl9JRFhfUkFOR0UyX01BWF9WQUxVRQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgRU5VTSBUWVBFUyAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgZW51bSB7CisgICAgRU5QRENQX1JCX1RZUEVfU1JCLAorICAgIEVOUERDUF9SQl9UWVBFX0RSQgorfSBlbnBkY3BfcmJfdHlwZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEVOUERDUF9QRENQX1ZFUlNJT05fTFRFX1BEQ1AsCisgICAgRU5QRENQX1BEQ1BfVkVSU0lPTl9OUl9QRENQCit9IGVucGRjcF9wZGNwX3ZlcnNpb25fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBFTlBEQ1BfUkJfQ01EX0VTVF9OX1NVU1AsCisgICAgRU5QRENQX1JCX0NNRF9FU1RfTl9SRVNVTUUsCisgICAgRU5QRENQX1JCX0NNRF9TVVNQRU5ELAorICAgIEVOUERDUF9SQl9DTURfUkVDT05GSUcsCisgICAgRU5QRENQX1JCX0NNRF9SRV9FU1RBQkxJU0gsCisgICAgRU5QRENQX1JCX0NNRF9SRUNPVkVSWSwKKyAgICBFTlBEQ1BfUkJfQ01EX1JFU1VNRSwKKyAgICBFTlBEQ1BfUkJfQ01EX0RJU0NBUkQsCisgICAgRU5QRENQX1JCX0NNRF9SRUxFQVNFLAorICAgIEVOUERDUF9SQl9DTURfUkVMRUFTRV9GUk9NX0xURSwKKyAgICBFTlBEQ1BfUkJfQ01EX1JFTEVBU0VfRlJPTV9OUiwKK30gZW5wZGNwX3JiX2NtZF9lbnVtOworCisvKiBjYXVzZSBvZiBDT05GSUdfUkVRICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTlBEQ1BfU0FQX0NPTkZJR19SRVFfQ0FVU0VfT1RIRVJTID0gMCwgICAgICAgICAgICAgIC8vIHVzZWQgZm9yIHRob3NlIEVOUERDUCBkb2Vzbid0IGNhcmUKKyAgICBFTlBEQ1BfU0FQX0NPTkZJR19SRVFfQ0FVU0VfSEFORE9WRVIsCisgICAgRU5QRENQX1NBUF9DT05GSUdfUkVRX0NBVVNFX0hBTkRPVkVSX0ZST01fTFRFLCAgICAgICAvLyBpbnRlci1SQVQgKGZyb20gTFRFKQorICAgIEVOUERDUF9TQVBfQ09ORklHX1JFUV9DQVVTRV9IQU5ET1ZFUl9GUk9NX05SLCAgICAgICAgLy8gaW50ZXItUkFUIChmcm9tIE5SKQorCisgICAgRU5QRENQX1NBUF9DT05GSUdfUkVRX0NBVVNFX05VTSwKKyAgICBFTlBEQ1BfU0FQX0NPTkZJR19SRVFfQ0FVU0VfUEFEID0gMHg3ZmZmZmZmZgorfSBlbnBkY3BfY29uZmlnX3JlcV9jYXVzZV9lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEVOUERDUF9EUkJfVFlQRV9MVEUsCisgICAgRU5QRENQX0RSQl9UWVBFX0xXQQorfSBlbnBkY3BfZHJiX3R5cGVfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBFTlBEQ1BfQ05fR0VORVJBVElPTl9FUFMsCisgICAgRU5QRENQX0NOX0dFTkVSQVRJT05fNUcKK30gZW5wZGNwX2NuX2dlbmVyYXRpb25fZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBFTlBEQ1BfUk9IQ19TVEFUVVNfTk9UX0NPTkZJR1VSRUQsCisgICAgRU5QRENQX1JPSENfU1RBVFVTX0JJRElSLAorICAgIEVOUERDUF9ST0NIX1NUQVRVU19VTF9PTkxZCit9IGVucGRjcF9yb2hjX3N0YXR1c19lbnVtOworCit0eXBlZGVmIGVudW0geworICAgIEVOUERDUF9TVFVTX1JQVF9UWVBFX09OX1BPTExfVFlQRV8xLAorICAgIEVOUERDUF9TVFVTX1JQVF9UWVBFX09OX1BPTExfVFlQRV8yCit9IGVucGRjcF9zdHVzX3JwdF90eXBlX29uX3BvbGxfZW51bTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBFTlBEQ1BfUkxDX01PREVfQU0sCisgICAgRU5QRENQX1JMQ19NT0RFX1VNX0JJRElSLAorICAgIEVOUERDUF9STENfTU9ERV9VTV9VTCwKKyAgICBFTlBEQ1BfUkxDX01PREVfVU1fREwKK30gZW5wZGNwX3JsY19tb2RlX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVOUERDUF9MQl9DTURfREVBQ1RJVkFURSwKKyAgICBFTlBEQ1BfTEJfQ01EX0FDVElWQVRFX01PREVfQSwKKyAgICBFTlBEQ1BfTEJfQ01EX0FDVElWQVRFX01PREVfQgorfSBlbnBkY3BfbGJfY21kX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgRU5QRENQX0NJUEhFUklOR19BTEdfRUVBMF9ORUEwLAorICAgIEVOUERDUF9DSVBIRVJJTkdfQUxHX0VFQTFfTkVBMSwKKyAgICBFTlBEQ1BfQ0lQSEVSSU5HX0FMR19FRUEyX05FQTIsCisgICAgRU5QRENQX0NJUEhFUklOR19BTEdfRUVBM19ORUEzCit9IGVucGRjcF9jaXBoZXJpbmdfYWxnX2VudW07CisKK3R5cGVkZWYgZW51bSB7CisgICAgRU5QRENQX0lOVEVHUklUWV9BTEdfRUlBMF9OSUEwLAorICAgIEVOUERDUF9JTlRFR1JJVFlfQUxHX0VJQTFfTklBMSwKKyAgICBFTlBEQ1BfSU5URUdSSVRZX0FMR19FSUEyX05JQTIsCisgICAgRU5QRENQX0lOVEVHUklUWV9BTEdfRUlBM19OSUEzCit9IGVucGRjcF9pbnRlZ3JpdHlfYWxnX2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVOUERDUF9TQVBfTUVBU1VSRU1FTlRfT0ZGID0gMCwgCisgICAgRU5QRENQX1NBUF9NRUFTVVJFTUVOVF9PTiwgCisgICAgRU5QRENQX1NBUF9NRUFTVVJFTUVOVF9NT0RJRlkKK30gZW5wZGNwX2RlbGF5X21lYXN1cmVtZW50X2VudW07CisKKworLyogVURDIGVudW0gKi8KK3R5cGVkZWYgZW51bQoreworICAgIEVOUERDUF9TQVBfVURDX0JVRl9TWl9LQllURV8yID0gMCwKKyAgICBFTlBEQ1BfU0FQX1VEQ19CVUZfU1pfS0JZVEVfNCwKKyAgICBFTlBEQ1BfU0FQX1VEQ19CVUZfU1pfS0JZVEVfOCwKKworICAgIEVOUERDUF9TQVBfVURDX0JVRl9TWl9LQllURV9QQUQgPSAweDdmZmZmZmZmCit9IGVucGRjcF91ZGNfYnVmX3N6X2VudW07CisKK3R5cGVkZWYgZW51bQoreworICAgIEVOUERDUF9TQVBfVURDX0RJQ19JTlZBTElEID0gMCwKKyAgICBFTlBEQ1BfU0FQX1VEQ19ESUNfU1RBTkRBUkQsCisgICAgRU5QRENQX1NBUF9VRENfRElDX09QRVJBVE9SLAorCisgICAgRU5QRENQX1NBUF9VRENfRElDX1BBRCA9IDB4N2ZmZmZmZmYKK30gZW5wZGNwX3VkY19kaWNfZW51bTsKKwordHlwZWRlZiBlbnVtCit7CisgICAgRU5QRENQX1NFQ19DRkdfQ01EX0lOVkFMSUQgPSAwLAorICAgIEVOUERDUF9TRUNfQ0ZHX0NNRF9VUERBVEUsCisgICAgRU5QRENQX1NFQ19DRkdfQ01EX1NVU1BFTkQKK30gZW5wZGNwX3NlY19jZmdfY21kX2VudW07CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJSQyBjb25maWd1cmF0aW9uIHRvIGVudGVyL2xlYXZlIHZpcnR1YWwgY29ubmVjdGVkIHN0YXRlCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLy8vIGNvbW1hbmQgdG8gcGRjcCBhbmQgcmxjCisKK3R5cGVkZWYgZW51bQoreworICAgIFJSQ19FTkwyX1ZJUlRVQUxfQ09OTkVDVEVEX0VOVEVSX1BSRVBBUkUgICAgICAgICAgICAgICAgICAgICAgICA9ICAwLCAvLyBQRENQLCBSTEMtVUwKKyAgICBSUkNfRU5MMl9WSVJUVUFMX0NPTk5FQ1RFRF9FTlRFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgMSwgLy8gUERDUCwgUkxDLVVMLCBSTEMtREwKKyAgICBSUkNfRU5MMl9WSVJUVUFMX0NPTk5FQ1RFRF9FTlRFUl9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgMiwgLy8gUERDUCwgTlJMQy1VTAorICAgIFJSQ19FTkwyX1ZJUlRVQUxfQ09OTkVDVEVEX0xFQVZFX1BSRVBBUkUgICAgICAgICAgICAgICAgICAgICAgICA9ICAzLCAvLyBQRENQCisgICAgUlJDX0VOTDJfVklSVFVBTF9DT05ORUNURURfTEVBVkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDQsIC8vIFBEQ1AsIFJMQy1VTCwgUkxDLURMCisgICAgUlJDX0VOTDJfVklSVFVBTF9DT05ORUNURURfTEVBVkVfRkFJTF9UT19SRUxFQVNFICAgICAgICAgICAgICAgID0gIDUsIC8vIFBEQ1AsIFJMQy1VTCwgUkxDLURMCisgICAgUlJDX0VOTDJfVklSVFVBTF9DT05ORUNURURfTEVBVkVfRkFJTF9UT19SRUVTVEFCTElTSCAgICAgICAgICAgID0gIDYsIC8vIFBEQ1AsIFJMQy1VTCwgUkxDLURMCisgICAgUlJDX0VOTDJfVklSVFVBTF9DT05ORUNURURfRU5URVJfUFJFUEFSRV9GT1JfU1JMVEUgICAgICAgICAgICAgID0gIDcsIC8vIFJMQy1VTAorICAgIFJSQ19FTkwyX1ZJUlRVQUxfQ09OTkVDVEVEX0VOVEVSX0ZPUl9TUkxURSAgICAgICAgICAgICAgICAgICAgICA9ICA4LCAvLyBQRENQLCBSTEMtVUwsIFJMQy1ETAorICAgIFJSQ19FTkwyX1ZJUlRVQUxfQ09OTkVDVEVEX0VOVEVSX0VORF9GT1JfU1JMVEUgICAgICAgICAgICAgICAgICA9ICA5LCAvLyBQRENQCisgICAgUlJDX0VOTDJfVklSVFVBTF9DT05ORUNURURfTEVBVkVfUFJFUEFSRV9GT1JfU1JMVEUgICAgICAgICAgICAgID0gMTAsIC8vIFBEQ1AKKyAgICBSUkNfRU5MMl9WSVJUVUFMX0NPTk5FQ1RFRF9MRUFWRV9GT1JfU1JMVEUgICAgICAgICAgICAgICAgICAgICAgPSAxMSwgLy8gUERDUCwgUkxDLVVMLCBSTEMtREwKKyAgICBSUkNfRU5MMl9WSVJUVUFMX0NPTk5FQ1RFRF9MRUFWRV9GQUlMX1RPX1JFTEVBU0VfRk9SX1NSTFRFICAgICAgPSAxMiwgLy8gUERDUCwgUkxDLVVMLCBSTEMtREwKKyAgICBSUkNfRU5MMl9WSVJUVUFMX0NPTk5FQ1RFRF9MRUFWRV9GQUlMX1RPX1JFRVNUQUJMSVNIX0ZPUl9TUkxURSAgPSAxMywgLy8gUERDUCwgUkxDLVVMLCBSTEMtREwKKyAgICBSUkNfRU5MMl9WSVJUVUFMX0NPTk5FQ1RFRF9JTlZBTElEX0NBVVNFICAgICAgICAgICAgICAgICAgICAgICAgPSAxNCwKK30gcnJjX2VubDJfc3dpdGNoX3ZpcnR1YWxfY29ubmVjdGVkX2VudW07CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICBTVFJVQ1RVUkVTCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4ICAgcGR1X3Nlc3Npb25faWQ7ICAgICAgICAgICAgICAgICAvKiBQRFUgc2Vzc2lvbiBJRCAqLworICAgIGthbF9ib29sICAgIGlzX3NkYXBfaGVhZGVyX3ByZXNlbnRfaW5fZGw7ICAgLyogc3BlY2lmeSBpZiBTREFQIGhlYWRlciBpcyBwcmVzZW50IGluIERMIGluIHRoaXMgRFJCIG9yIG5vdCAqLworICAgIGthbF9ib29sICAgIGlzX3NkYXBfaGVhZGVyX3ByZXNlbnRfaW5fdWw7ICAgLyogc3BlY2lmeSBpZiBTREFQIGhlYWRlciBpcyBwcmVzZW50IGluIFVMIGluIHRoaXMgRFJCIG9yIG5vdCAqLworICAgIGthbF9ib29sICAgIGlzX2RlZmF1bHRfZHJiOyAgICAgICAgICAgICAgICAgLyogc3BlY2lmeSBpZiB0aGlzIERSQiBpcyB0aGUgZGVmYXVsdCBEUkIgZm9yIHRoZSBQRFUgc2Vzc2lvbiAqLworICAgIGthbF91aW50OCAgIG1hcHBlZF9xb3NfZmxvd3NfYWRkX251bTsgICAvKiBudW1iZXIgb2YgUW9TIGZsb3dzIG9mIHRoZSBQRFUgc2Vzc2lvbiBpbmRpY2F0ZWQgYnkgJ3BkdV9zZXNzaW9uX2lkJyB0byBiZSBhZGRlZCB0byBiZSBtYXBwZWQgdG8gdGhpcyBEUkIgKi8KKyAgICBrYWxfdWludDggICBtYXBwZWRfcW9zX2Zsb3dzX2FkZF9saXN0W01BWF9RT1NfRkxPV1NfUEVSX1BEVV9TRVNTSU9OXTsgICAgLyogQXJyYXkgb2YgUW9TIGZsb3dzIG9mIHRoZSBQRFUgc2Vzc2lvbiBpbmRpY2F0ZWQgYnkgJ3BkdV9zZXNzaW9uX2lkJyB0byBiZSBhZGRlZCB0byBiZSBtYXBwZWQgdG8gdGhpcyBEUkIgKi8KKyAgICBrYWxfdWludDggICBtYXBwZWRfcW9zX2Zsb3dzX3JlbF9udW07ICAgLyogbnVtYmVyIG9mIFFvUyBmbG93cyBvZiB0aGUgUERVIHNlc3Npb24gaW5kaWNhdGVkIGJ5ICdwZHVfc2Vzc2lvbl9pZCcgdG8gYmUgcmVsZWFzZWQgZnJvbSBiZWluZyBtYXBwZWQgdG8gdGhpcyBEUkIuICovCisgICAga2FsX3VpbnQ4ICAgbWFwcGVkX3Fvc19mbG93c19yZWxfbGlzdFtNQVhfUU9TX0ZMT1dTX1BFUl9QRFVfU0VTU0lPTl07ICAgIC8qIEFycmF5IG9mIFFvUyBmbG93cyBvZiB0aGUgUERVIHNlc3Npb24gaW5kaWNhdGVkIGJ5ICdwZHVfc2Vzc2lvbl9pZCcgdG8gYmUgcmVsZWFzZWQgZnJvbSBiZWluZyBtYXBwZWQgdG8gdGhpcyBEUkIuICovCit9IGVucGRjcF9zZGFwX2NvbmZpZ19zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9vbl9wb2xsX3ZhbGlkOyAgICAgICAvKiBzcGVjaWZ5IGlmICd0eXBlX29uX3BvbGwnIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGVucGRjcF9zdHVzX3JwdF90eXBlX29uX3BvbGxfZW51bSAgdHlwZV9vbl9wb2xsOyAgICAgICAgICAgICAvKiBpbmRpY2F0ZSB0aGUgUERDUCBDb250cm9sIFBEVSBvcHRpb24gd2hlbiBpdCBpcyB0cmlnZ2VyZWQgYnkgRS1VVFJBTiBwb2xsaW5nICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMV9wZXJpb2RpY2l0eV92YWxpZDsgIC8qIHNwZWNpZnkgaWYgJ3R5cGUxX3BlcmlvZGljaXR5JyBpcyB2YWxpZCBvciBub3QgKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUyX3BlcmlvZGljaXR5X3ZhbGlkOyAgLyogc3BlY2lmeSBpZiAndHlwZTJfcGVyaW9kaWNpdHknIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0X3ZhbGlkOyAgICAgICAgICAgICAvKiBzcGVjaWZ5IGlmICdvZmZzZXQnIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTFfcGVyaW9kaWNpdHlfcmVjZmc7ICAvKiBzcGVjaWZ5IGlmIHR5cGUxIHBlcmlvZGljaXR5IGNvbmZpZ3VyYXRpb24gaXMgcmVjb25maWd1cmVkICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMl9wZXJpb2RpY2l0eV9yZWNmZzsgIC8qIHNwZWNpZnkgaWYgdHlwZTIgcGVyaW9kaWNpdHkgY29uZmlndXJhdGlvbiBpcyByZWNvbmZpZ3VyZWQgKi8KKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUxX3BlcmlvZGljaXR5OyAgICAgICAgLyogaW5kaWNhdGUgdGhlIHZhbHVlIG9mIHRoZSBQRENQIFN0YXR1cyByZXBvcnRpbmcgcGVyaW9kaWNpdHkgZm9yIHR5cGUxIFN0YXR1cyBQRFUgKi8KKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUyX3BlcmlvZGljaXR5OyAgICAgICAgLyogaW5kaWNhdGUgdGhlIHZhbHVlIG9mIHRoZSBQRENQIFN0YXR1cyByZXBvcnRpbmcgcGVyaW9kaWNpdHkgZm9yIHR5cGUyIFN0YXR1cyBQRFUgKi8KKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDsgICAgICAgICAgICAgICAgICAgLyogaW5kaWNhdGUgdGhlIHZhbHVlIG9mIHRoZSBvZmZzZXQgZm9yIHR5cGUyIFN0YXR1cyBQRFUgcGVyaW9kaWNpdHkgKi8KK30gZW5wZGNwX3N0dXNfcnB0X3BhcmFtX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgZW5wZGNwX2RyYl90eXBlX2VudW0gICAgICAgICAgZHJiX3R5cGU7ICAgICAgIC8qIHNwZWNpZnkgdGhlIERSQiBUeXBlIGlzIExXQSBvciBMVEUsIG9ubHkgZm9yIExURSBQRENQICovCisgICAgZW5wZGNwX3NkYXBfY29uZmlnX3N0cnVjdCAgICAgc2RhcF9jb25maWc7ICAgIC8qIHZhbGlkIG9ubHkgd2hlbiBjbl9nZW5lcmF0aW9uIGluZGljYXRlIDVHICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgZXBzX2JlYXJlcl9pZDsgIC8qIHZhbHVlIHJhbmdlOiAwLTE1ICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgaXNfZ2JyX2JlYXJlcjsgIC8qIHNwZWNpZnkgaWYgRVBTIGJlYXJlciBpcyBndWFyYW50ZWVkIGJpdCByYXRlIGJlYXJlciAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgIHFjaV92YWxpZDsgICAgICAvKiBzcGVjaWZ5IGlmICdxY2knIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgIHFjaTsgICAgICAgICAgICAvKiBRb1MgQ2xhc3MgSWRlbnRmaWVyICovCisgICAgZW5wZGNwX3JvaGNfc3RhdHVzX2VudW0gICAgICAgcm9oY19zdGF0dXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3BlY2lmeSBpZiBSb0hDIGlzIGNvbmZpZ3VyZWQgb3Igbm90LCBhbmQgaWYgUm9IQyBpcyBiaS1kaXJlY3Rpb25hbCBvciBVTCBvbmx5ICovCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICAgcm9oY19tYXhfY2lkOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcGFyYW1ldGVyIE1BWF9DSUQsIHNlZSAzNi4zMjMgYW5kIDM4LjMyMyAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgIHJvaGNfcHJvZnNbRU5QRENQX1NBUF9NQVhfUk9IQ19QUk9GXTsgIC8qIHBhcmFtZXRlciBQUk9GSUxFUywgc2VlIDM2LjMyMyBhbmQgMzguMzIzICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgZHJiX2NvbnRpbnVlX3JvaGM7ICAgICAgICAgICAgICAgICAgICAgLyogc3BlY2lmeSBpZiB0aGUgaGVhZGVyIGNvbXByZXNzaW9uIHByb3RvY29sIGNvbnRleHQgY29udGludWVzIG9yIGlzIHJlc2V0ICovCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICAgZGlzY2FyZF90aW1lcjsgICAgICAgICAgIC8qIHRpbWVyIGRpc2NhcmRUaW1lciwgc2VlIDM2LjMyMyBhbmQgMzguMzIzLCBwbGVhc2UgdXNlIEVOUERDUF9ESVNDQVJEX1RJTUVSX0lORklOSVRZIGZvciAnaW5maW5pdHknICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3JlcG9ydF9yZXF1aXJlZDsgIC8qIHBhcmFtZXRlciBzdGF0dXNSZXBvcnRSZXF1aXJlZCwgc2VlIDM2LjMyMyBhbmQgMzguMzIzICovCisgICAgZW5wZGNwX3N0dXNfcnB0X3BhcmFtX3N0cnVjdCAgc3R1c19ycHRfcGFyYW07ICAgICAgICAgIC8qIHN0YXR1cyByZXBvcnQgcGFyYW1ldGVyIGZvciBMV0EgdHlwZSBEUkIgKi8KKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICBvdXRfb2Zfb3JkZXJfZGVsaXZlcnk7ICAgLyogcGFyYW1ldGVyIG91dE9mT3JkZXJEZWxpdmVyeSwgc2VlIDM4LjMyMyAqLworCisgICAgZW5wZGNwX3JsY19tb2RlX2VudW0gICAgICAgICAgcmxjX21vZGU7ICAgIC8qIHNwZWNpZnkgUkxDIG1vZGUsIGFuZCBmb3IgUkxDIFVNIGFsc28gZGlyZWN0aW9uLCBvZiBhc3NvY2lhdGVkIFJMQyBiZWFyZXIocykgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgICBzbl9zaXplX2RsOyAgLyogUERDUCBTTiBzaXplIGluIERMICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgc25fc2l6ZV91bDsgIC8qIFBEQ1AgU04gc2l6ZSBpbiBVTCAqLworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICB1ZGNfZW5hYmxlZDsKKyAgICBlbnBkY3BfdWRjX2J1Zl9zel9lbnVtICAgICAgICAgICB1ZGNfYnVmX3N6OworICAgIGVucGRjcF91ZGNfZGljX2VudW0gICAgICAgICAgICAgIHVkY19kaWM7Cit9IGVucGRjcF9kcmJfcGFyYW1zX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgZW5wZGNwX2NpcGhlcmluZ19hbGdfZW51bSAgY2lwaGVyaW5nX2FsZ29yaXRobTsgIC8qIGNpcGhlcmluZyBhbGdvcml0aG0gKi8KKyAgICBlbnBkY3BfaW50ZWdyaXR5X2FsZ19lbnVtICBpbnRlZ3JpdHlfYWxnb3JpdGhtOyAgLyogaW50ZWdyaXR5IGFsZ29yaXRobSAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgIGNpcGhlcmluZ19rZXlfaWR4OyAgICAvKiBpbmRleCBvZiBLUlJDZW5jIC8gS1VQZW5jIGNpcGhlcmluZyBrZXkgaW4gY2lwaGVyIEhXLCB2YWx1ZSByYW5nZTogMC0yNTUgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICBpbnRlZ3JpdHlfa2V5X2lkeDsgICAgLyogaW5kZXggb2YgS1JSQ2ludCAvIEtVUGludCBpbnRlZ3JpdHkga2V5IGluIGNpcGhlciBIVywgdmFsdWUgcmFuZ2U6IDAtMjU1ICovCit9IGVucGRjcF9zZWNfY2ZnX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX2Jvb2wgICAgcHJpbWFyeV9wYXRoX2NlbGxfZ3JvdXBfaWRfdmFsaWQ7ICAvKiBzcGVjaWZ5IGlmIHByaW1hcnlfcGF0aF9jZWxsX2dyb3VwX2lkIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGthbF91aW50OCAgIHByaW1hcnlfcGF0aF9jZWxsX2dyb3VwX2lkOyAgICAgLyogY2VsbCBncm91cCBJRCBvZiB0aGUgcHJpbWFyeSBSTEMgYmVhcmVyICovCisgICAga2FsX2Jvb2wgICAgcHJpbWFyeV9wYXRoX2xjaWRfdmFsaWQ7ICAgICAgICAvKiBzcGVjaWZ5IGlmIHByaW1hcnlfcGF0aF9sY2lkIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGthbF91aW50OCAgIHByaW1hcnlfcGF0aF9sY2lkOyAgICAgICAgICAgICAgLyogbG9naWNhbCBjaGFubmVsIGlkZW50aXR5IChMQ0lEKSBvZiB0aGUgcHJpbWFyeSBSTEMgYmVhcmVyICovCisgICAga2FsX2Jvb2wgICAgdWxfZGF0YV9zcGxpdF90aHJlc2hvbGRfdmFsaWQ7ICAvKiBzcGVjaWZ5IGlmICd1bF9kYXRhX3NwbGl0X3RocmVzaG9sZCcgaXMgdmFsaWQgb3Igbm90ICovCisgICAga2FsX3VpbnQzMiAgdWxfZGF0YV9zcGxpdF90aHJlc2hvbGQ7ICAgICAgICAvKiBwYXJhbWV0ZXIgdWwtRGF0YVNwbGl0VGhyZXNob2xkLCBzZWUgMzguMzIzLCBwbGVhc2UgdXNlIEVOUERDUF9VTF9EQVRBX1NQTElUX1RIUkVTSE9MRF9JTkZJTklUWSBmb3IgJ0luZmluaXR5JyAqLworICAgIGthbF9ib29sICAgIHVsX2R1cGxpY2F0aW9uOyAgICAgICAgICAgICAgICAgLyogcGFyYW1ldGVyICdwZGNwRHVwbGljYXRpb24nLCBzZWUgMzguMzIzICovCisgICAga2FsX2Jvb2wgICAgdWxfZHVwbGljYXRpb25fYWN0aXZhdGVkX3ZhbGlkOyAvKiBzcGVjaWZ5IGlmICd1bF9kdXBsaWNhdGlvbl9hY3RpdmF0ZWQnIGlzIHZhbGlkIG9yIG5vdCAqLworICAgIGthbF9ib29sICAgIHVsX2R1cGxpY2F0aW9uX2FjdGl2YXRlZDsKK30gZW5wZGNwX21vcmVfdGhhbl9vbmVfcmxjX2NvbmZpZ19zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGVucGRjcF9kcmJfcGFyYW1zX3N0cnVjdCAgICAgICAgICAgICAgICBkcmJfcGFyYW1zOyAgICAgICAgICAgICAgICAgICAgICAvKiBQYXJhbWV0ZXJzIHdoaWNoIGFwcGx5IG9ubHkgd2hlbiByYWRpbyBiZWFyZXIgaXMgRFJCLCB2YWxpZCBvbmx5IGZvciBEUkIgKi8KKyAgICBlbnBkY3Bfc2VjX2NmZ19jbWRfZW51bSAgICAgICAgICAgICAgICAgc2VjX2NmZ19jbWQ7ICAgICAgICAgICAgICAgICAgICAgLyogc3BlY2lmeSBpZiAnc2VjX2NmZycgaXMgdmFsaWQgb3Igbm90ICovCisgICAgZW5wZGNwX3NlY19jZmdfc3RydWN0ICAgICAgICAgICAgICAgICAgIHNlY19jZmc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3VyaXR5IHBhcmFtZXRlcnMgZm9yIGNpcGhlcmluZyBhbmQgaW50ZWdyaXR5ICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRfcmVvcmRlcmluZ192YWxpZDsgICAgICAgICAgICAgIC8qIHNwZWNpZnkgaWYgJ3RfcmVvcmRlcmluZycgaXMgdmFsaWQgb3Igbm90ICovCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRfcmVvcmRlcmluZzsgICAgICAgICAgICAgICAgICAgIC8qIHNwZWNpZnkgJ3RfcmVvcmRlcmluZycgdmFsdWUsIHBsZWFzZSB1c2UgRU5QRENQX1RfUkVPUkRFUklOR19USU1FUl9JTkZJTklUWSBmb3IgJ0luZmluaXR5JyAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX3RoYW5fb25lX3JsY19jb25maWdfdmFsaWQ7ICAvKiBzcGVjaWZ5IGlmICdtb3JlX3RoYW5fb25jZV9ybGNfY29uZmlnJyBpcyB2YWxpZCBvciBub3QgKi8KKyAgICBlbnBkY3BfbW9yZV90aGFuX29uZV9ybGNfY29uZmlnX3N0cnVjdCAgbW9yZV90aGFuX29uZV9ybGNfY29uZmlnOyAgICAgICAgLyogcGFyYW1ldGVycyBmb3IgdGhlIGNhc2Ugd2hlbiBtb3JlIHRoYW4gb25lIFJMQyBiZWFyZXJzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIFBEQ1AgZW50aXR5LCBvbmx5IGZvciBOUiBQRENQICovCit9IGVucGRjcF9yYl9wYXJhbXNfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmJfaWR4OyAgICAgICAgLyogUkIgSW5kZXggZm9yIHRoZSBhZGRlZCBvciBtb2RpZmllZCBSQiwgdmFsdWUgcmFuZ2U6IDAtMzYgKi8KKyAgICBlbnBkY3BfcmJfdHlwZV9lbnVtICAgICAgICAgcmJfdHlwZTsgICAgICAgLyogU1JCIG9yIERSQiAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYmlkOyAgICAgICAgICAvKiBSQiBJZGVudGl0eSwgdmFsdWUgcmFuZ2U6IDEtMzIsIFNSQjogMS0zLCBEUkI6IDEtMzIgKi8KKyAgICBlbnBkY3BfY25fZ2VuZXJhdGlvbl9lbnVtICAgY25fZ2VuZXJhdGlvbjsgIC8qIHNwZWNpZnkgY29yZSBuZXR3b3JrIGdlbmVyYXRpb24uIElkZW50aWZpZXMgdGhlIHJhZGlvIGJlYXJlciB0b2dldGhlciB3aXRoIHJiX3R5cGUgYW5kIHJiaWQuICovCisgICAgZW5wZGNwX3BkY3BfdmVyc2lvbl9lbnVtICAgIHBkY3BfdmVyc2lvbjsgIC8qIHNwZWNpZnkgaWYgUERDUCBlbnRpdHkgaXMgTFRFIFBEQ1Agb3IgTlIgUERDUCAqLworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBwZGNwX2VudGl0eV9zdXNwZW5kOyAvKiBzcGVjaWZ5IGlmIEVOUERDUCBzaG91bGQgcGVyZm9ybSBQRENQIGVudGl0eSBzdXNwZW5kIGFzIHBlciAzOC4zMjMgb3Igbm90ICovCisgICAgZW5wZGNwX3JiX2NtZF9lbnVtICAgICAgICAgIGNtZDsgICAgICAgICAgIC8qIG9wZXJhdGlvbiBjb21tYW5kIGZvciB0aGUgcmFkaW8gYmVhcmVyICovCisgICAgZW5wZGNwX3JiX3BhcmFtc19zdHJ1Y3QgICAgIHJiX3BhcmFtczsgICAgIC8qIHBhcmFtZXRlcnMgb2YgdGhlIHJhZGlvIGJlYXJlciAqLworfSBlbnBkY3BfcmJfYWRkbW9kX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgcmJfaWR4OyAgICAgIC8qIFJCIEluZGV4IGZvciB0aGUgcmVsZWFzZSBSQiwgdmFsdWUgcmFuZ2U6IDAtMzYgKi8KKyAgICBlbnBkY3BfcmJfdHlwZV9lbnVtICByYl90eXBlOyAgICAgLyogU1JCIG9yIERSQiAqLworICAgIGthbF91aW50OCAgICAgICAgICAgIHJiaWQ7ICAgICAgICAvKiBSQiBJZGVudGl0eSwgdmFsdWUgcmFuZ2U6IDEtMzIsIFNSQjogMS0zLCBEUkI6IDEtMzIgKi8KKyAgICBlbnBkY3BfY25fZ2VuZXJhdGlvbl9lbnVtICAgY25fZ2VuZXJhdGlvbjsgIC8qIHNwZWNpZnkgY29yZSBuZXR3b3JrIGdlbmVyYXRpb24uIElkZW50aWZpZXMgdGhlIHJhZGlvIGJlYXJlciB0b2dldGhlciB3aXRoIHJiX3R5cGUgYW5kIHJiaWQuICovCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgcmVsZWFzZV9zZWNvbmRfZW50aXR5OyAgLyogU3BlY2lmaWVzIHdob2ljaCBQRENQIGVudGl0eSB0byByZWxlYXNlLiAqLworICAgIGVucGRjcF9yYl9jbWRfZW51bSAgIGNtZDsgICAgICAgICAvKiBvcGVyYXRpb24gY29tbWFuZCBmb3IgdGhlIHJhZGlvIGJlYXJlciAqLworfSBlbnBkY3BfcmJfcmVsX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50NjQgbHRlX3JiX2JpdG1hcDsgLy8vIExURSB2ZXJzaW9uIFJCIGluZGV4IGJpdG1hcAorICAgIGthbF91aW50NjQgbnJfcmJfYml0bWFwOyAvLy8gTlIgdmVyc2lvbiBSQiBpbmRleCBiaXRtYXAKK30gZW5sMl9yYl9pZHhfYml0bWFwX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGVubDJfcmJfaWR4X2JpdG1hcF9zdHJ1Y3QgY29uZmlnX2xpc3Q7IC8vLyBjdXJyZW50IFJCIGluZGV4IENvbmZpZyBsaXN0CisgICAgZW5sMl9yYl9pZHhfYml0bWFwX3N0cnVjdCB0ZW1wX2xpc3Q7IC8vLyBSQiBpbmRleCBSZS1Db25maWcgbGlzdAorICAgIGthbF9ib29sIHRlbXBfbGlzdF9hY3RpdmU7IC8vLyBpZiBSUkMgYWxyZWFkeSBmb3JrIHRlbXBfbGlzdCBmcm9tIGNvbmZpZ19saXN0IChmb3IgZGVidWcgb25seSkKK30gZW5sMl9yYl9pZHhfcnJjX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGVubDJfcmJfaWR4X3JyY19zdHJ1Y3QgZXJyYzsgLy8vIEVSUkMgUkIgaW5kZXggYml0bWFwCisgICAgZW5sMl9yYl9pZHhfcnJjX3N0cnVjdCBucnJjOyAvLy8gTlJSQyBSQiBpbmRleCBiaXRtYXAKKyAgICBrYWxfYm9vbCB2Y19zdGF0ZTsgLy8vIGlzIHRoZSBwcm90b2NvbCBpbiBWQworfSBlbmwyX3JiX2lkeF9zdHJ1Y3Q7CisKKyNpZiBkZWZpbmVkKF9fR0VNSU5JX0xURV9fKQorI2RlZmluZSBFTkwyX1JCX0lEWF9DVFhUX05VTSAoMikKKyNlbGlmIGRlZmluZWQoX19HVEVTVF9FTkFCTEVfXykKKyNkZWZpbmUgRU5MMl9SQl9JRFhfQ1RYVF9OVU0gKDIpCisjZWxzZQorI2RlZmluZSBFTkwyX1JCX0lEWF9DVFhUX05VTSAoMSkKKyNlbmRpZgorCisjaWYgX19NVEtfVEFSR0VUX18KKyNkZWZpbmUgTDJfRkxBR19DSEtfNjQoYm1wLCBpKSAoKChrYWxfdWludDMyICopJihibXApKVsoKGthbF91aW50MzIpaSA+PiA1KSAmIDFdICYgKDF1IDw8ICgoa2FsX3VpbnQzMilpICYgMHgxRikpKQorI2RlZmluZSBMMl9GTEFHX1NFVF82NChibXAsIGkpICgoKGthbF91aW50MzIgKikmKGJtcCkpWygoa2FsX3VpbnQzMilpID4+IDUpICYgMV0gfD0gKDF1IDw8ICgoa2FsX3VpbnQzMilpICYgMHgxRikpKQorI2RlZmluZSBMMl9GTEFHX0NMUl82NChibXAsIGkpICgoKGthbF91aW50MzIgKikmKGJtcCkpWygoa2FsX3VpbnQzMilpID4+IDUpICYgMV0gJj0gfigxdSA8PCAoKGthbF91aW50MzIpaSAmIDB4MUYpKSkKKyNlbHNlCisjZGVmaW5lIEwyX0ZMQUdfQ0hLXzY0KHYsIG9mc3QpCSgodikgJiAxdWxsIDw8IChvZnN0KSkKKyNkZWZpbmUgTDJfRkxBR19TRVRfNjQodiwgb2ZzdCkJKCh2KSB8PSAxdWxsIDw8IChvZnN0KSkKKyNkZWZpbmUgTDJfRkxBR19DTFJfNjQodiwgb2ZzdCkJKCh2KSAmPSB+KDF1bGwgPDwgKG9mc3QpKSkKKyNlbmRpZgorCisvKioKKyAqIEBicmllZiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgZW5sMiByYiBpbmRleCBjb250ZXh5CisgKi8KK3ZvaWQgZW5sMl9yYl9pZHhfYXBpX2luaXQoKTsKKworLyoqCisgKiBAYnJpZWYgZm9yIGhhY2tpbmcgQVBJIHdvcmtpbmcKKyAqLwordm9pZCBlbmwyX3JiX2lkeF9oYWNrKGthbF91aW50OCBoYWNrKTsKKworLyoqCisgKiBAYnJpZWYKKyAqICBXaGVuIEVOLVJSQyByZWNlaXZlZCBSUkMtUmVjb25maWd1cmF0aW9uIGZyb20gbmV0d29yayBhbmQgc3RhcnQgSUUgY2hlY2sgcGhhc2UsIAorICogIHRoZSBFTi1SUkMgd2lsbCBpbnZva2UgdGhpcyBBUEkgdG8gZm9yayBjdXJyZW50IGNvbmZpZ3VyZSBSQiBpbmRleCBsaXN0IChjYWxsZWQgYXMgY29uZmlnX2xpc3QpIAorICogIGFzIHRlbXAgY29uZmlndXJlIFJCIGluZGV4IGxpc3Qgd2hpY2ggKGNhbGxlZCBhcyB0ZW1wX2xpc3QpIGltcGx5IAorICogIHRoZSBmdXR1cmUgUkIgaW5kZXggbGlzdCBpZiB0aGUgcmVjb25maWd1cmF0aW9uIHJlc3VsdCBpcyBzdWNjZXNzLgorICoKKyAqIEBwYXJhbSBzaW1faWR4IFRoZSBwcm90b2NvbCBpbmRleCB0byBidWlsZCB0ZW1wX2xpc3QKKyAqIEBwYXJhbSBzcmNfbW9kIFRoZSBzb3VyY2UgUlJDIHRvIGJ1aWxkIHRlbXBfbGlzdAorICovCit2b2lkIGwyX3JiX2lkeF9mb3JrX3RlbXBfbGlzdChrYWxfdWludDggc2ltX2lkeCwgbW9kdWxlX3R5cGUgc3JjX21vZCk7CisKKy8qKgorICogQGJyaWVmCisgKiAgVGhlIEFQSSB3aWxsIGFsbG9jYXRlIGEgbmV3IFJCIGluZGV4IGZvciB0aGUgc291cmNlIFJSQyBhbmQgcHJvdG9jb2wgaW5kZXguCisgKiAgSXQgd2lsbCBjb25zaWRlciB0aGUgTDIgY29wcm8gcmVzb3VyY2UgdXRpbGl6YXRpb24gYW5kIGJlc3QgZWZmb3J0IGVuc3VyZSBVRSBjYW4gc3RheSBEU0RBIG1vZGUuCisgKiAgVGhlIG5ldyBSQiBpbmRleCB3aWxsIHVwZGF0ZSB0byB0ZW1wX2xpc3QuCisgKgorICogQHBhcmFtIHNpbV9pZHggVGhlIHByb3RvY29sIGluZGV4IHRvIGFsbG9jYXRlIG5ldyBSQiBpbmRleCB0byB0ZW1wX2xpc3QKKyAqIEBwYXJhbSBzcmNfbW9kIFRoZSBzb3VyY2UgUlJDIHRvIGFsbG9jYXRlIG5ldyBSQiBpbmRleCB0byB0ZW1wX2xpc3QKKyAqIEBwYXJhbSBwZGNwX3ZlciBUaGUgUERDUCB2ZXJzaW9uIG9mIHRoZSBuZXcgUkIgaW5kZXggb2YgdGVtcF9saXN0CisgKgorICogQHJldHVybiBBIGF2YWlsYWJsZSBSQiBpbmRleCBmb3Igc3JjX21vZCB0byBiZSB1c2VkLiBSYW5nZSBpcyBbMCwgMTRdIGFuZCBbMjAsIDM2XQorICovCitrYWxfdWludDggbDJfcmJfaWR4X2FsbG9jX29uX3RlbXBfbGlzdChrYWxfdWludDggc2ltX2lkeCwgbW9kdWxlX3R5cGUgc3JjX21vZCwgZW5wZGNwX3BkY3BfdmVyc2lvbl9lbnVtIHBkY3BfdmVyKTsKKworLyoqCisgKiBAYnJpZWYKKyAqICBUaGUgQVBJIHdpbGwgdXBkYXRlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNwZWNpZmllZCBSQiBpbmRleCBmb3IgdGhlIHNvdXJjZSBSUkMgYW5kIHByb3RvY29sIGluZGV4LgorICogIFRoZSBjaGFuZ2Ugd2lsbCB1cGRhdGUgdG8gdGVtcF9saXN0LgorICoKKyAqIEBwYXJhbSBzaW1faWR4IFRoZSBwcm90b2NvbCBpbmRleCBvZiB0aGUgdXBkYXRlZCBSQiBpbmRleAorICogQHBhcmFtIHNyY19tb2QgVGhlIHNvdXJjZSBSUkMgb2YgdGhlIHVwZGF0ZWQgUkIgaW5kZXgKKyAqIEBwYXJhbSByYl9pZHggVGhlIFJCIGluZGV4IHRvIGJlIHVwZGF0ZWQKKyAqIEBwYXJhbSBwZGNwX3ZlciBUaGUgUERDUCB2ZXJzaW9uIG9mIHRoZSB1cGRhdGVkIFJCIGluZGV4CisgKi8KK3ZvaWQgbDJfcmJfaWR4X3VwZGF0ZV9vbl90ZW1wX2xpc3Qoa2FsX3VpbnQ4IHNpbV9pZHgsIG1vZHVsZV90eXBlIHNyY19tb2QsIGthbF91aW50OCByYl9pZHgsIGVucGRjcF9wZGNwX3ZlcnNpb25fZW51bSBwZGNwX3Zlcik7CisKKy8qKgorICogQGJyaWVmCisgKiAgVGhlIEFQSSB3aWxsIHJlbGVhc2UgY29uZmlndXJhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIFJCIGluZGV4IGZvciB0aGUgc291cmNlIFJSQyBhbmQgcHJvdG9jb2wgaW5kZXguCisgKiAgVGhlIGNoYW5nZSB3aWxsIHVwZGF0ZSB0byB0ZW1wX2xpc3QuCisgKgorICogQHBhcmFtIHNpbV9pZHggVGhlIHByb3RvY29sIGluZGV4IG9mIHRoZSByZWxlYXNlZCBSQiBpbmRleAorICogQHBhcmFtIHNyY19tb2QgVGhlIHNvdXJjZSBSUkMgb2YgdGhlIHJlbGVhc2VkIFJCIGluZGV4CisgKiBAcGFyYW0gcmJfaWR4IFRoZSBSQiBpbmRleCB0byBiZSByZWxlYXNlZAorICovCit2b2lkIGwyX3JiX2lkeF9yZWxfb25fdGVtcF9saXN0KGthbF91aW50OCBzaW1faWR4LCBtb2R1bGVfdHlwZSBzcmNfbW9kLCBrYWxfdWludDggcmJfaWR4KTsKKworLyoqCisgKiBAYnJpZWYKKyAqICBXaGVuIEVOLVJSQyBjb21wbGV0ZSBJRSBjaGVjayBwaGFzZSBhbmQgY29uZmlybSB0aGUgdGVtcF9saXN0IGNhbiBiZSBhcHBsaWVkIGFzIG5ldyBjb25maWd1cmF0aW9uLAorICogIGl0IGludm9rZSB0aGUgQVBJIHRvIGNvcHkgdGVtcF9saXN0IHRvIGNvbmZpZ19saXN0LgorICoKKyAqIEBwYXJhbSBzaW1faWR4IFRoZSBwcm90b2NvbCBpbmRleCB0byBhcHBseSB0aGUgdGVtcF9saXN0CisgKiBAcGFyYW0gc3JjX21vZCBUaGUgc291cmNlIFJSQyB0byBhcHBseSB0aGUgdGVtcF9saXN0CisgKi8KK3ZvaWQgbDJfcmJfaWR4X2FwcGx5X3RlbXBfbGlzdChrYWxfdWludDggc2ltX2lkeCwgbW9kdWxlX3R5cGUgc3JjX21vZCk7CisKKy8qKgorICogQGJyaWVmCisgKiAgV2hlbiBFTi1SUkMgZmFpbCB0aGUgSUUgY2hlY2sgcGhhc2Ugb3IganVkZ2UgdGhlIHRlbXBfbGlzdCBjYW5ub3QgYmUgYXBwbGllZCBhcyBuZXcgY29uZmlndXJhdGlvbiwKKyAqICBpdCBpbnZva2UgdGhlIEFQSSB0byBkaXNjYXJkIHRlbXBfbGlzdC4KKyAqICBUaGUgY29uZmlnX2xpc3QgaXMgc3RpbGwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyAqCisgKiBAcGFyYW0gc2ltX2lkeCBUaGUgcHJvdG9jb2wgaW5kZXggdG8gZGlzY2FyZCB0aGUgdGVtcF9saXN0CisgKiBAcGFyYW0gc3JjX21vZCBUaGUgc291cmNlIFJSQyB0byBkaXNjYXJkIHRoZSB0ZW1wX2xpc3QKKyAqLwordm9pZCBsMl9yYl9pZHhfZGlzY2FyZF90ZW1wX2xpc3Qoa2FsX3VpbnQ4IHNpbV9pZHgsIG1vZHVsZV90eXBlIHNyY19tb2QpOworCisvKioKKyAqIEBicmllZgorICogIFdoZW4gRU4tUlJDIGxhdW5jaCBjb25uZWN0aW9uIHJlbGVhc2UgZGlyZWN0bHkgZXZlbiBpZiB0aGUgY3VycmVudCBwcm9jZWR1cmUgaXMgbm90IElFIGNoZWNrIHBoYXNlLAorICogIGl0IHdpbGwgaW52b2tlIHRoZSBBUEkgdG8gcmVsZWFzZSBhbGwgUkIgaW5kZXggaW4gY29uZmlnX2xpc3QgYW5kIHRlbXBfbGlzdCBvZiB0aGUgc291cmNlIFJSQyBhbmQgcHJvdG9jb2wgaW5kZXguCisgKgorICogQHBhcmFtIHNpbV9pZHggVGhlIHByb3RvY29sIGluZGV4IHJlbGVhc2UgYWxsIFJCIGluZGV4CisgKiBAcGFyYW0gc3JjX21vZCBUaGUgc291cmNlIFJSQyByZWxlYXNlIGFsbCBSQiBpbmRleAorICovCit2b2lkIGwyX3JiX2lkeF9yZXNldChrYWxfdWludDggc2ltX2lkeCwgbW9kdWxlX3R5cGUgc3JjX21vZCk7CisKKy8qKgorICogQGJyaWVmCisgKiAgRU4tUlJDIHdpbGwgdXBkYXRlIHRoZSBWQyBzdGF0dXMgb2Ygc3BlY2lmaWVkIHByb3RvY29sIGluZGV4IHRvIG1ha2UgRU5MMiBSQiBpbmRleCBBUEkgbGVhcm4gdGhlIGluZm9ybWF0aW9uCisgKiAgZHVlIHRvIEwyIENvcHJvIHJlc291cmNlIGNhbiBiZSBzaGFyZWQgaWYgYSBwcm90b2NvbCBpcyBpbiBWaXJ0dWFsIENvbm5lY3RlZC4KKyAqCisgKiBAcGFyYW0gc2ltX2lkeCBUaGUgcHJvdG9jb2wgaW5kZXggdG8gZW50ZXIvbGVhdmUgVkMKKyAqIEBwYXJhbSBpc19lbnRlcl92YyBUaGUgc291cmNlIFJSQyB0byBlbnRlci9sZWF2ZSBWQworICovCit2b2lkIGwyX3JiX2lkeF9zZXRfdmMoa2FsX3VpbnQ4IHNpbV9pZHgsIGthbF9ib29sIGlzX2VudGVyX3ZjKTsKKworLyoqCisgKiBAYnJpZWYKKyAqICBNU1BNIGludm9rZSB0aGUgQVBJIHRvIHF1ZXJ5IGlmIHRoZSBMMiBDb3BybyByZXNvdXJjZSBpcyBjb25mbGljdC4KKyAqICBUaGUgY29tcGFyZWQgY29uZmlndXJhdGlvbiBhcmUgKGNvbmZpZ19saXN0ICsgdGVtcF9saXN0KSBvZiBhbnkgMiBTSU0gaW5kZXguCisgKgorICogQHJldHVybgorICogIFRydWUsIGlmIHRoZSBMMiBDb3BybyByZXNvdXJjZSBkbyBub3QgY29uZmxpY3QgYnkgYW55IDIgU0lNIGNvbWJpbmF0aW9uIHVuZGVyIGN1cnJlbnQgc3RhdGUKKyAqICBGYWxzZSwgaWYgdGhlIEwyIENvcHJvIHJlc291cmNlIGhhdmUgY29uZmxpY3QgYnkgb25lIG9mIDIgU0lNIGNvbWJpbmF0aW9uIHVuZGVyIGN1cnJlbnQgc3RhdGUKKyAqLwora2FsX2Jvb2wgbDJfcmJfaWR4X2R1YWxfYWN0aXZlX3N0YXR1c19jaGVjaygpOworCisjZW5kaWYgLyogX0VOTDJfU0FQX0NPTU1PTl9IXyAqLwpkaWZmIC0tZ2l0IGEvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VuX2NvbW1vbi9lcnJjX2VucGRjcF9tc2cuaCBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbl9jb21tb24vZXJyY19lbnBkY3BfbXNnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg2MmUwYgotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbl9jb21tb24vZXJyY19lbnBkY3BfbXNnLmgKQEAgLTAsMCArMSw2NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDE2CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgZXJyY19lbnBkY3BfbXNnLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICBVTU9MWUEKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogIE1lc3NhZ2VzIGFuZCBjb21tb24gZGVmaW5pdGlvbnMgZm9yIEVSUkMtRU5QRENQIGludGVyZmFjZQorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIAorICoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAkTG9nJAorICoKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisjaWZuZGVmICBfRVJSQ19FTlBEQ1BfTVNHX0gKKyNkZWZpbmUgIF9FUlJDX0VOUERDUF9NU0dfSAorCisjaW5jbHVkZSAia2FsX2dlbmVyYWxfdHlwZXMuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKworI2VuZGlmIC8qIF9FUlJDX0VOUERDUF9NU0dfSCAqLworCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZW5fY29tbW9uL3JyY19lbnBkY3BfbXNnLmggYi9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZW5fY29tbW9uL3JyY19lbnBkY3BfbXNnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmMmM4NwotLS0gL2Rldi9udWxsCisrKyBiL21jdS9wcm90b2NvbC9pbnRlcmZhY2UvZW5sMi9lbl9jb21tb24vcnJjX2VucGRjcF9tc2cuaApAQCAtMCwwICsxLDU3OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDE4CisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZpbGVuYW1lOgorICogLS0tLS0tLS0tCisgKiAgcnJjX2VucGRjcF9tc2cuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICoKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogIE1lc3NhZ2VzIGFuZCBjb21tb24gZGVmaW5pdGlvbnMgZm9yIFJSQy1FTlBEQ1AgaW50ZXJmYWNlCisgKgorICogQXV0aG9yOgorICogLS0tLS0tLQorICoKKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogJExvZyQKKyAqCisgKiAwNSAxOCAyMDIyIHBlbm55Lnd1CisgKiBbTU9MWTAwNzc1MzQzXSBTQ0cgZmFpbHVyZSBzdWRkZW5seSBhbmQgbm8gU0NHIHJlbGVhc2UgcmVjZWl2ZWQgd2hpY2ggY2F1c2VkIGxvbmcgdGltZSBQUyBzZXJ2aWNlIHN0dWNrCisgKiAJCisgKiAJU0NHIGZhaWwgMjAxNTc1NTgKKyAqCisgKiAxMCAyMSAyMDIxIGF0bGFzLnh1CisgKiBbTU9MWTAwNjU2NDkxXSChvjIxMDQxob8gob5FVlShv6G+vMPEz8mozfihv6G+NUctU0Ghv6G+1+m8/qG/ob7NqLuwob8xNLXjMzi31iAgMjEwNDFDVCtDVaOoy6s1R6Opv6i2/rixv6i2r8yswrey4k1Uyqew3DO0zqOoMy81MKOpCisgKiAJCisgKiAJLgorICoKKyAqIAkKKyAqIAkuCisgKgorICogMDQgMDYgMjAyMCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDA1MDkyOTldIFtNVDY4NzNdW01hcmdhdXhdW1EwXVtNUDNdW1NRQ11bTlNBXVs1R01NXVtOTE8gRlRdW0JlaWppbmddW6T9qsw/xKNdW0NUK0NNQ0NdW0J1c11NYXJnYXV4J3MgdG90YWwgZnJlZXplZCBsYXRlbmN5IGxvc2UgTWF0ZTMwKDgxcyB2cy4gNTFzKQorICogLgorICoKKyAqIDAzIDIzIDIwMjAgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwNTAyODQ0XSAyNzEzMzY4oUehaTE5MTY1oWqhaU1QoWqhaaRXykmharK+P6VkqmA/NUehQT+qa6RXykkKKyAqIC4KKyAqCisgKiAwMiAxMCAyMDIwIHlpdGluZy5jaGVuZworICogW01PTFkwMDQ5NTkzNF0gW01UNjg3M11bTWFyZ2F1eF1bUTBdW01QMl1bU1FDXVtDaGluYV1bU2hhbmdoYWldWzRHTU1dW0ludGVybmFsXVtGVF1bTURTVF1bQ0FUXVtNb3ZpbmddW0NUK0NNQ0NdbWQxOihNQ1VfY29yZTAudnBlMS50YzIoVlBFMSkpIFtBU1NFUlRdIGZpbGU6bWN1L2RyaXZlci9kcGNvcHJvL3NyYy9kcGNvcHJvX2hpc3IuYyBsaW5lOjc3NQorICogLgorICoKKyAqIDEyIDAzIDIwMTkgc2FrYXJpLm5pZW1lbGEKKyAqIFtNT0xZMDA0NjIyMzhdIFtHZW45N11bVk1PTFldIFNtYXJ0IElkbGUgRmVhdHVyZSBTQSBwYXJ0KE1QRCkKKyAqIFZHTU0tTlJSQywgTlJSQy1FTlBEQ1AgYW5kIE5SUkMgSW50ZXJuYWwgU0FQIHVwZGF0ZXMgZm9yICdTbWFydCBJZGxlJworICoKKyAqIDEwIDE0IDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwNDQyODQ2XSBbR2VuOTddIE1vZGVttLyv4KvdyfNmZWF0dXJlIC0gTlNBIHBhcnQgKGltcGxlbWVudGF0aW9uKQorICogLgorICoKKyAqIDA1IDMwIDIwMTkgY2hhcmxleS1jYy5jaGVuZworICogW01PTFkwMDQwMjAwM10gW1ZNT0xZXSBHRU1JTkkgTitMIERTRFMKKyAqIAkKKyAqIAlbQ09ORklHXVtTQSBhbmQgTlNBIEdlbWluaV0gQ29uZmlnIGNvZGUgYW5kIGludGVyZmFjZQorICoKKyAqIDA0IDI1IDIwMTkga2VuLmxpCisgKiBbTU9MWTAwMzgzNzExXSBbTVQ2Mjk3XVtBcG9sbG9dW1ByZVNRQ11bTVAwLjVdW05WSU9UXVtOb2tpYV1bT3VsdV1bNEddOiBBc3NlcnQgRmFpbDogZHBjb3Byb19oaXNyLmMgNzEzIC0gKExJU1IpbW1sMl9leGNlcF9saXNyCisgKiAJCisgKiAJRVBEQ1AgREwgT09CIGFuZCBIRk4gZGVzeW5jIGhhbmRsaW5nCisgKgorICogMDQgMjIgMjAxOSBrZW4ubGkKKyAqIFtNT0xZMDAzODM3MTFdIFtNVDYyOTddW0Fwb2xsb11bUHJlU1FDXVtNUDAuNV1bTlZJT1RdW05va2lhXVtPdWx1XVs0R106IEFzc2VydCBGYWlsOiBkcGNvcHJvX2hpc3IuYyA3MTMgLSAoTElTUiltbWwyX2V4Y2VwX2xpc3IKKyAqIAkKKyAqIAlFUERDUCBETCBPT0IgYW5kIEhGTiBkZXN5bmMgaGFuZGxpbmcKKyAqCisgKiAwMSAyNSAyMDE5IHlpdGluZy5jaGVuZworICogW01PTFkwMDM4MTE3Nl0gW0dFTjk3XVtFTlBEQ1AvRVJSQy9FVENdIG5ldyBsb29wYmFjayBtb2RlIGludGVyZmFjZQorICogLgorICoKKyAqIDAxIDIzIDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogQWRkIG1hY2lfbGVuIGluIERDQ0hfREFUQV9JTkQKKyAqCisgKiAwMSAxOCAyMDE5IHlpdGluZy5jaGVuZworICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIE1vZGlmeSBSUkMtRU5QRENQIFNBUCBjb25zdGFudAorICoKKyAqIDAxIDA4IDIwMTkgeWl0aW5nLmNoZW5nCisgKiBbTU9MWTAwMzI3OTI2XSBbR0VOOTddW0VOUERDUF0gYmFzZSBkZXZlbG9wbWVudCBjaGVjay1pbgorICogSW50ZXJmYWNlIGZvciBMQk0gLSBuZXcgYW5kIG9sZCBpbnRlcmZhY2UgY28tZXhpc3QKKyAqCisgKiAxMSAyOSAyMDE4IG1pbmd0c3VuZy5zdW4KKyAqIFtNT0xZMDAzNjE5MDJdIFtHZW45N11bS1MtSU9EVF1bNUddW1IxNV9FTkRDX1JMQ19DT01QTEVURV9TRUdfQ2hhbmdlX2p1bmVdWzFdIEFzc2VydCBmYWlsOiBwcm90b2NvbC9lbmwyL2VsMl9zZWMvZWwyaXQvY29wcm8vc3JjL2NpcGhlci5jIDUzMyAtIEVMMUJfVTRHX0FEQVBUT1IKKyAqIEludGVncmF0ZSBGUEdBIFNFUCBERVYKKyAqCisgKiAxMCAzMSAyMDE4IHNha2FyaS5uaWVtZWxhCisgKiBbTU9MWTAwMzQyMTM3XSBbNjI5N11bTlJSQ11bTkNPTk5dIFNBIGltcGxlbWVudGF0aW9uCisgKiBbTkNPTk5dIE1lcmdlIENCcjMgdG8gVk1PTFkuRlBHQS5TRVAuREVWIChwYXJ0IDMpCisgKgorICogMDggMTcgMjAxOCB5ay5saXUKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBtZXJnZSBFTU9MWSBDTHMgdG8gVk1PTFkKKyAqCisgKiAwNiAxNCAyMDE4IHlpdGluZy5jaGVuZworICogW01PTFkwMDMyNzkyNl0gW0dFTjk3XVtFTlBEQ1BdIGJhc2UgZGV2ZWxvcG1lbnQgY2hlY2staW4KKyAqIFN1c3BlbmQgU0NHIG5ldyBpbnRlcmZhY2UKKyAqIFVwZGF0ZSByZWFzc2VtYmxlIG9yZGVyIGZvciBmdWxsLWNvbmZpZ3VyYXRpb24gKyBQRENQIHZlcnNpb24gY2hhbmdlCisgKgorICogMDYgMDcgMjAxOCBuaWNreS5jaG91CisgKiBbTU9MWTAwMzIwNjI5XSBbNjI5N10gUFMuREVWIHBhdGNoIGJhY2sgdG8gR0VOOTcuREVWCisgKiBbRU5QRENQXSBMM19DUklUSUNBTF9EQVRBIGZvciBHZW1pbmkuCisgKgorICogMDUgMzAgMjAxOCB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluCisgKiBSUkMtRU5QRENQIEdlbWluaSBWQyBpbnRlcmZhY2UgbmFtaW5nIGNoYW5nZQorICoKKyAqIDA1IDI4IDIwMTggc2hpaHl1LndhbmcKKyAqIFtNT0xZMDAzMjc5MjZdIFtHRU45N11bRU5QRENQXSBiYXNlIGRldmVsb3BtZW50IGNoZWNrLWluIHByb3RvY29sIGludGVyZmFjZSBwYXRjaGJhY2sKKyAqCisgKiAwMyAyOCAyMDE4IGhhbm51Lmh1dXNrbworICogW01PTFkwMDMwODgxNV0gWzYyOTddW05SUkNdIE1BSU4gbW9kdWxlIGltcGxlbWVudGF0aW9uCisgKiAJTlJSQy1FTlBEQ1AgbWVzc2FnZSBJRCB1cGRhdGUKKyAqCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiAgX1JSQ19FTlBEQ1BfTVNHX0gKKyNkZWZpbmUgIF9SUkNfRU5QRENQX01TR19ICisKKyNpbmNsdWRlICJrYWxfZ2VuZXJhbF90eXBlcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfZGVmcy5oIgorI2luY2x1ZGUgImthbF9wdWJsaWNfYXBpLmgiCisKKyNpbmNsdWRlICJlbmwyX3NhcF9jb21tb24uaCIKKyNpbmNsdWRlICJlbDJfc2FwX2NvbW1vbi5oIgorI2luY2x1ZGUgImNvbW1vbl9kZWYuaCIKKyNpbmNsdWRlICJhc19pbnRlcl9jb3JlX3N0cnVjdC5oIgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgIENPTlNUQU5UUworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogbnVtYmVycyAqLworI2RlZmluZSBFTlBEQ1BfU0FQX01BWF9OVU1fRFJCICAgICAgICgyOSkgIC8vOCBEUkJzCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgIEVOVU0gVFlQRVMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGRjY2hfZGF0YV9yZXEgZmxhZ19ibXAgYml0IGluZGV4IGRlZmluaXRpb24gKi8KK3R5cGVkZWYgZW51bQoreworICAgIEVOUERDUF9EQVRBUkVRX0ZMQUdfU01DICAgICAgICAgICAgICA9IDAsCisgICAgRU5QRENQX0RBVEFSRVFfRkxBR19EUlhfTk9fV0FLRVVQICAgID0gMSwKKyAgICBFTlBEQ1BfREFUQVJFUV9GTEFHX1RJTUVfQk9VTkQgICAgICAgPSAyLAorICAgIEVOUERDUF9EQVRBUkVRX0ZMQUdfTDNfQ1JJVElDQUxfREFUQSA9IDMKK30gZW5wZGNwX2RhdGFyZXFfZmxhZ19lbnVtOworCisKKy8qIGRjY2hfZGF0YV9yZXEgcmVzdWx0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTlBEQ1BfREFUQVJFUV9PSyA9IDAsCisgICAgRU5QRENQX0RBVEFSRVFfRkFJTFVSRSA9IDEKK31lbnBkY3BfZGF0YXJlcV9yZXN1bHRfZW51bTsKKworCisvKiBpbnRlZ3JpdHkgY2hlY2sgcmVzdWx0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTlBEQ1BfSU5UQ0hLX09LID0gMCwKKyAgICBFTlBEQ1BfSU5UQ0hLX0ZBSUxVUkUgPSAxLCAgICAgICAgICAvKiBpbnRlZ3JpdHkgY2hlY2sgZmFpbHVyZSAqLworICAgIEVOUERDUF9JTlRDSEtfU0tJUFBFRCA9IDIgICAgICAgICAgIC8qIGludGVncml0eSBjaGVjayBpcyBub3QgYXBwbGllZCAqLworfSBlbnBkY3BfaW50Y2hrX3Jlc3VsdF9lbnVtOworCisvKiBIRk4gZGVzeW5jIFJMRiAqLwordHlwZWRlZiBlbnVtCit7CisgICAgRU5QRENQX0NVVF9DRUxMX1NNQUxMX0dSQU5UID0gMCwgCisgICAgRU5QRENQX0NVVF9DRUxMX1BPU1NJQkxFX0RDSV9JTl9NRUFTX0dBUCA9IDEsCisgICAgRU5QRENQX0NVVF9DRUxMX0lOVgorfSBlbnBkY3BfY3V0X2NlbGxfY2F1c2VfZW51bTsKKworLyogTDIgY3V0IGNlbGwgaW5kIGNhdXNlICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBFTlBEQ1BfU0FQX1JMRl9IRk5fREVTWU5DID0gMCwgCisgICAgRU5QRENQX1NBUF9STEZfUk9IQ19GQUlMVVJFID0gMSwgCisgICAgRU5QRENQX1NBUF9STEZfU0NHX09OTFlfVFhfRkFJTFVSRSA9IDIsCisgICAgRU5QRENQX1NBUF9STEZfSU5WCit9IGVucGRjcF9ybGZfY2F1c2VfZW51bTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgU1RSVUNUVVJFUworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIG1ic2ZuX2FyZWFfaWQ7ICAvKiB2YWx1ZSByYW5nZTogMC0yNTUgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBtY2NoX2lkeDsgICAgICAgLyogbnVtYmVyZWQgYnkgZVJSQyhub3QgZnJvbSBOVyksIHZhbHVlIHJhbmdlIDAtNyAqLworfSBlcGRjcF9tY2NoX2FkZF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBtYnNmbl9hcmVhX2lkOyAgLyogdmFsdWUgcmFuZ2U6IDAtMjU1LCBjdXJyZW50bHkgZm9yIGRlYnVnIHB1cnBvc2Ugb25seSAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIG1jY2hfaWR4OyAgICAgICAvKiBudW1iZXJlZCBieSBlUlJDKG5vdCBmcm9tIE5XKSwgdmFsdWUgcmFuZ2UgMC03ICovCit9IGVwZGNwX21jY2hfZGVsX3N0cnVjdDsKKworCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIG1ic2ZuX2FyZWFfaWQ7ICAvKiB2YWx1ZSByYW5nZTogMC0yNTUgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBwbWNoX2lkOyAgICAgICAgLyogdmFsdWUgcmFuZ2U6IDAtMTUgKi8KKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICBzZXNzaW9uSWQ7ICAgICAgLyogMHhGRkZGIG1lYW5zIG5vIGNvbmZpZ3VyZSBzZXNzaW9uIGlkICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgVE1HSVs2XTsgICAgICAgIC8qIFRlbXBvcmFyeSBNb2JpbGUgR3JvdXAgSWRlbnRpdHkgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBsY19pZDsgICAgICAgICAgLyogdmFsdWUgcmFuZ2U6IDAtMjggKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBtcmJfaWR4OyAgICAgICAgLyogdmFsdWUgcmFuZ2U6IDAtNywgbnVtYmVyZWQgYnkgZVJSQyhub3QgZnJvbSBOVykgKi8KK30gZXBkY3BfbXJiX2FkZF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBtYnNmbl9hcmVhX2lkOyAgLyogdmFsdWUgcmFuZ2U6IDAtMjU1LCBjdXJyZW50bHkgZm9yIGRlYnVnIHVzYWdlIG9ubHkgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBwbWNoX2lkOyAgICAgICAgLyogdmFsdWUgcmFuZ2U6IDAtMTUsIGN1cnJlbnRseSBmb3IgZGVidWcgdXNhZ2Ugb25seSAqLworICAgIGthbF91aW50MTYgICAgICAgICAgICAgIHNlc3Npb25JZDsgICAgICAvKiBjdXJyZW50bHkgZm9yIGRlYnVnIHVzYWdlIG9ubHkgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBUTUdJWzZdOyAgICAgICAgLyogY3VycmVudGx5IGZvciBkZWJ1ZyB1c2FnZSBvbmx5ICovCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgbGNfaWQ7ICAgICAgICAgIC8qIHZhbHVlIHJhbmdlOiAwLTI4LCBjdXJyZW50bHkgZm9yIGRlYnVnIHVzYWdlIG9ubHkgKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICBtcmJfaWR4OyAgICAgICAgLyogdmFsdWUgcmFuZ2U6IDAtNywgbnVtYmVyZWQgYnkgZVJSQyhub3QgZnJvbSBOVykgKi8KK30gZXBkY3BfbXJiX2RlbF9zdHJ1Y3Q7CisKKworLyogUkIgQ09VTlQgaW5mbyBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgcmJfaWR4OyAgICAgICAgIC8vUkIgaW5kZXgKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICByYl9pZDsKKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICBwYWQ7CisKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICByeF9jb3VudDsgICAgICAgLy9IRk4gKyBTTgorICAgIGthbF91aW50MzIgICAgICAgICAgICAgIHR4X2NvdW50OyAgICAgICAvL0hGTiArIFNOCit9IGVucGRjcF9yYl9jbnRpbmZvX3N0cnVjdDsKKworLyogcXVldWluZyBkZWxheSByZXN1bHQgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIGthbF91aW50OCAgICAgICAgICAgICAgIHFjaTsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICBleGNlc3NfZGVsYXlfbnVtOworICAgIGthbF91aW50MzIgICAgICAgICAgICAgIHRvdGFsX251bTsKK30gZW5wZGNwX2RlbGF5X3Jlc3VsdF9zdHJ1Y3Q7CisKKworLyogUERDUCBxdWV1aW5nIGRlbGF5IGNvbmZpZyBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0eworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQ7CisgICAgZW5wZGNwX2RlbGF5X21lYXN1cmVtZW50X2VudW0gICAgbWVhc3VyZW1lbnRfc3RhdHVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdmFsaWQ9ZmFsc2UsICBkZWxheV90aGVzaG9sZCBhbmQgZGVsYXlfcmVwb3J0X2ludGVydmFsIHNob3VsZCBiZSBpZ25vcmVkCisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkOworICAgIGthbF91aW50MzIgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydF9pbnRlcnZhbDsKK30gZW5wZGNwX2RlbGF5X2NmZ19zdHJ1Y3Q7CisKKworLyogUkIgbG9vcGJhY2sgY29uZmlnIHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICByYmlkOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgIHNpemU7ICAgICAgICAgICAvL3NjYWxpbmcgc2l6ZQorfSBlbnBkY3BfcmJfbGJjZmdfc3RydWN0OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICBNRVNTQUdFIFNUUlVDVFVSRQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogTVNHX0lEX0VSUkNfRU5QRENQX0NPTkZJR19SRVEgLyBNU0dfSURfTlJSQ19FTlBEQ1BfQ09ORklHX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisgICAgLyogY29tbW9uIGZvciBFUlJDIGFuZCBOUlJDICovCisgICAgZW5wZGNwX2NvbmZpZ19yZXFfY2F1c2VfZW51bSBjYXVzZTsKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICByZWxfbnVtOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICBtb2RfbnVtOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICBhZGRfbnVtOworICAgIGVucGRjcF9yYl9yZWxfc3RydWN0ICAgICByYl9yZWxfbGlzdFtFTlBEQ1BfU0FQX01BWF9OVU1fQ0ZHX1JCXTsKKyAgICBlbnBkY3BfcmJfYWRkbW9kX3N0cnVjdCAgcmJfbW9kX2xpc3RbRU5QRENQX1NBUF9NQVhfTlVNX0NGR19SQl07CisgICAgZW5wZGNwX3JiX2FkZG1vZF9zdHJ1Y3QgIHJiX2FkZF9saXN0W0VOUERDUF9TQVBfTUFYX05VTV9DRkdfUkJdOworCisgICAgLyogRVJSQyBvbmx5IC0gTFRFIGVNQk1TIGNvbmZpZ3VyYXRpb24gKi8KKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgbWNjaF9hZGRfbnVtW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICBtY2NoX2RlbF9udW1bTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF07CisgICAgZXBkY3BfbWNjaF9hZGRfc3RydWN0ICAgIG1jY2hfYWRkW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NQ0NIX1NVUFBPUlRdOworICAgIGVwZGNwX21jY2hfZGVsX3N0cnVjdCAgICBtY2NoX2RlbFtNQVhfRU1CTVNfRlJFUV9TVVBQT1JUXVtNQVhfRU1CTVNfTUNDSF9TVVBQT1JUXTsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgbXJiX2FkZF9udW1bTUFYX0VNQk1TX0ZSRVFfU1VQUE9SVF07CisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgIG1yYl9kZWxfbnVtW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdOworICAgIGVwZGNwX21yYl9hZGRfc3RydWN0ICAgICBtcmJfYWRkW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NQ0NIX1NVUFBPUlRdOworICAgIGVwZGNwX21yYl9kZWxfc3RydWN0ICAgICBtcmJfZGVsW01BWF9FTUJNU19GUkVRX1NVUFBPUlRdW01BWF9FTUJNU19NQ0NIX1NVUFBPUlRdOworCisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgIHN1c3BlbmRfc2NnX3ZhbGlkOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICBzdXNwZW5kX3NjZzsKKworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICB3YWl0X2Zvcl9rZXlfdXBkYXRlOyAgLy8gU3BlY2lmaWVzIGlmIEVOUERDUCBuZWVkcyB0byB3YWl0IEtFWV9VUERBVEVfRE9ORV9SRVEgYmVmb3JlIGFwcGx5aW5nIHNlY3VyaXR5IHByb2NlZHVyZXMgb24gUERDUCBQRFUncy4KKyAgICBlbnBkY3BfZGVsYXlfY2ZnX3N0cnVjdCAgICAgIGRlbGF5X2NmZzsKK30gZXJyY19lbnBkY3BfY29uZmlnX3JlcV9zdHJ1Y3QsIG5ycmNfZW5wZGNwX2NvbmZpZ19yZXFfc3RydWN0OworCisKKy8qCisgKiBNU0dfSURfRVJSQ19FTlBEQ1BfTUNDSF9EQVRBX0lORCwKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIGNpOyAJCQkvKiAwfk1BWF9FTUJNU19GUkVRX1NVUFBPUlQtMSAqLworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBtY2NoX2lkeDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgbWNjaF9tcF9pZDsKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmVzdjsgLy8gdGhpcyBmaWVsZCB3b3VsZCBiZSB1c2VkIGJ5IEVSUkM7IEVQRENQIHJlc2V0IGl0IHRvIDAgZm9yIEVSUkMKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgKnBfZGF0YTsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgZGF0YV9sZW47IC8qIGluY2x1ZGluZyBSUkMgbWVzc2FnZSAmIE1BQy1JICovCit9IGVycmNfZW5wZGNwX21jY2hfZGF0YV9pbmRfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9EQ0NIX0RBVEFfUkVRIC8gTVNHX0lEX05SUkNfRU5QRENQX0RDQ0hfREFUQV9SRVEgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYmlkOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICB0cmFuc19pZDsKKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgZmxhZ19ibXA7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhX3B0cjsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgZGF0YV9sZW47CisgICAgS0FMX0FGTV9JRCAgICAgICAgICAgICAgICAgIGFmbV9pZDsKK30gZXJyY19lbnBkY3BfZGNjaF9kYXRhX3JlcV9zdHJ1Y3QsIG5ycmNfZW5wZGNwX2RjY2hfZGF0YV9yZXFfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9EQ0NIX0RBVEFfQ05GIC8gTVNHX0lEX05SUkNfRU5QRENQX0RDQ0hfREFUQV9DTkYgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYmlkOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICB0cmFuc19pZDsKKyAgICBlbnBkY3BfZGF0YXJlcV9yZXN1bHRfZW51bSAgcmVzdWx0OworfSBlcnJjX2VucGRjcF9kY2NoX2RhdGFfY25mX3N0cnVjdCwgbnJyY19lbnBkY3BfZGNjaF9kYXRhX2NuZl9zdHJ1Y3Q7CisKKworLyogTVNHX0lEX0VSUkNfRU5QRENQX0RDQ0hfREFUQV9JTkQgLyBNU0dfSURfTlJSQ19FTlBEQ1BfRENDSF9EQVRBX0lORCAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgIHJiaWQ7CisgICAgZW5wZGNwX2ludGNoa19yZXN1bHRfZW51bSAgIGludGVncml0eV9jaGVja19yZXN1bHQ7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgIHBkY3BfY291bnQ7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgIG1hY2lfbGVuOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YV9wdHI7CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgIGRhdGFfbGVuOyAgIC8qIGluY2x1ZGluZyBSUkMgbWVzc2FnZSAmIE1BQy1JICovCit9IGVycmNfZW5wZGNwX2RjY2hfZGF0YV9pbmRfc3RydWN0LCBucnJjX2VucGRjcF9kY2NoX2RhdGFfaW5kX3N0cnVjdDsKKworCisvKiBNU0dfSURfRVJSQ19FTlBEQ1BfRENDSF9EQVRBX1JTUCAvIE1TR19JRF9OUlJDX0VOUERDUF9EQ0NIX0RBVEFfUlNQICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmJpZDsKK30gZXJyY19lbnBkY3BfZGNjaF9kYXRhX3JzcF9zdHJ1Y3QsIG5ycmNfZW5wZGNwX2RjY2hfZGF0YV9yc3Bfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9DT05GSUdfQ05GIC8gTVNHX0lEX05SUkNfRU5QRENQX0NPTkZJR19DTkYgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBlcnJjX2VucGRjcF9jb25maWdfY25mX3N0cnVjdCwgbnJyY19lbnBkY3BfY29uZmlnX2NuZl9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9LRVlfVVBEQVRFX0RPTkVfUkVRIC8gTVNHX0lEX05SUkNfRU5QRENQX0tFWV9VUERBVEVfRE9ORV9SRVEgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBlcnJjX2VucGRjcF9rZXlfdXBkYXRlX2RvbmVfcmVxX3N0cnVjdCwgbnJyY19lbnBkY3Bfa2V5X3VwZGF0ZV9kb25lX3JlcV9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9URVNUX1JFUSAvIE1TR19JRF9OUlJDX0VOUERDUF9URVNUX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBlbnBkY3BfbGJfY21kX2VudW0gICAgICAgICAgY21kOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICByYl9udW07ICAvLyBvbmx5IHZhbGlkIGZvciBtb2RlIEEKKyAgICBlbnBkY3BfcmJfbGJjZmdfc3RydWN0ICAgICAgcmJfY2ZnW0VOUERDUF9TQVBfTUFYX05VTV9EUkJdOyAgLy8gb25seSB2YWxpZCBmb3IgbW9kZSBBCit9IGVycmNfZW5wZGNwX3Rlc3RfcmVxX3N0cnVjdCwgbnJyY19lbnBkY3BfdGVzdF9yZXFfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9URVNUX0NORiAvIE1TR19JRF9OUlJDX0VOUERDUF9URVNUX0NORiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIExPQ0FMX1BBUkFfSERSCit9IGVycmNfZW5wZGNwX3Rlc3RfY25mX3N0cnVjdCwgbnJyY19lbnBkY3BfdGVzdF9jbmZfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9TV0lUQ0hfVklSVFVBTF9DT05ORUNURURfUkVRIC8gTVNHX0lEX05SUkNfRU5QRENQX1NXSVRDSF9WSVJUVUFMX0NPTk5FQ1RFRF9SRVEgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIHJyY19lbmwyX3N3aXRjaF92aXJ0dWFsX2Nvbm5lY3RlZF9lbnVtIHN0YXR1czsKK30gZXJyY19lbnBkY3Bfc3dpdGNoX3ZpcnR1YWxfY29ubmVjdGVkX3JlcV9zdHJ1Y3QsIG5ycmNfZW5wZGNwX3N3aXRjaF92aXJ0dWFsX2Nvbm5lY3RlZF9yZXFfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9TV0lUQ0hfVklSVFVBTF9DT05ORUNURURfQ05GIC8gTVNHX0lEX05SUkNfRU5QRENQX1NXSVRDSF9WSVJUVUFMX0NPTk5FQ1RFRF9DTkYgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBMT0NBTF9QQVJBX0hEUgorfSBlcnJjX2VucGRjcF9zd2l0Y2hfdmlydHVhbF9jb25uZWN0ZWRfY25mX3N0cnVjdCwgbnJyY19lbnBkY3Bfc3dpdGNoX3ZpcnR1YWxfY29ubmVjdGVkX2NuZl9zdHJ1Y3Q7CisKKworLyogTVNHX0lEX0VSUkNfRU5QRENQX0NOVElORk9fUkVRIC8gTVNHX0lEX05SUkNfRU5QRENQX0NOVElORk9fUkVRICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKK30gZXJyY19lbnBkY3BfY250aW5mb19yZXFfc3RydWN0LCBucnJjX2VucGRjcF9jbnRpbmZvX3JlcV9zdHJ1Y3Q7CisKKworLyogTVNHX0lEX0VSUkNfRU5QRENQX0NOVElORk9fQ05GIC8gTVNHX0lEX05SUkNfRU5QRENQX0NOVElORk9fQ05GICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDggICAgICAgICAgICAgICAgICAgcmJfbnVtOworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICBwYWQwMTsKKyAgICBrYWxfdWludDE2ICAgICAgICAgICAgICAgICAgcGFkMDI7CisgICAgZW5wZGNwX3JiX2NudGluZm9fc3RydWN0ICAgIHJiX2NudGluZm9bRU5QRENQX1NBUF9NQVhfTlVNX0RSQl07Cit9IGVycmNfZW5wZGNwX2NudGluZm9fY25mX3N0cnVjdCwgbnJyY19lbnBkY3BfY250aW5mb19jbmZfc3RydWN0OworCisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9ERVRFQ1RJT05fVElNRVJfU1RBUlRfUkVRICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGRldGVjdGlvbl90aW1lX3ZhbHVlOworfSBlcnJjX2VucGRjcF9kZXRlY3Rpb25fdGltZXJfc3RhcnRfcmVxX3N0cnVjdDsKKworLyoKKyAqICAgTVNHX0lEX0VSUkNfRU5QRENQX0RFVEVDVElPTl9USU1FUl8yX1NUQVJUX1JFUSwKKyAqCisgKiAgIG5vdGU6IEVSUkMgY29uZmlndXJlIEVOUERQQyBkZXRlY3Rpb24gdGltZXIgdmFsdWUKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb25fdGltZV92YWx1ZTsgLy8gaW4gc2Vjb25kcworfSBlcnJjX2VucGRjcF9kZXRlY3Rpb25fdGltZXJfMl9zdGFydF9yZXFfc3RydWN0OworCisvKgorICogICBNU0dfSURfRVJSQ19FTlBEQ1BfREVURUNUSU9OX1RJTUVSXzNfU1RBUlRfUkVRLAorICoKKyAqICAgbm90ZTogRVJSQyBjb25maWd1cmUgRVBEUEMgZGV0ZWN0aW9uIHRpbWVyIHZhbHVlIChUMykKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorICAgIAorICAgIGthbF91aW50MzIgICAgICAgICAgICAgICAgICAgZGV0ZWN0aW9uX3RpbWVfdmFsdWU7IC8vIGluIHNlY29uZHMKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgIHJlc3RhcnRfdGltZXI7IC8vIFBEQ1AgbmVlZCB0byByZXN0YXJ0IHRpbWVyIGlmIFRydWUKK30gZXJyY19lbnBkY3BfZGV0ZWN0aW9uX3RpbWVyXzNfc3RhcnRfcmVxX3N0cnVjdDsKKworLyoKKyAqICAgTVNHX0lEX0VSUkNfRU5QRENQX0RFVEVDVElPTl9USU1FUl8zX1RJTUVPVVRfSU5ELAorICoKKyAqICAgbm90ZTogRVJSQyBjb25maWd1cmUgRVBEUEMgZGV0ZWN0aW9uIHRpbWVyIChUMykgVElNRU9VVAorICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGV4cF90aW1lcl92YWx1ZTsgLy8gaW4gc2Vjb25kcworfSBlcnJjX2VucGRjcF9kZXRlY3Rpb25fdGltZXJfM190aW1lb3V0X2luZF9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9OUlJDX0VOUERDUF9ERVRFQ1RJT05fVElNRVJfM19TVEFSVF9SRVEgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICAgZGV0ZWN0aW9uX3RpbWVfdmFsdWU7CisgICAga2FsX2Jvb2wgICAgICAgICAgICAgICAgICAgICByZXN0YXJ0X3RpbWVyOworfSBucnJjX2VucGRjcF9kZXRlY3Rpb25fdGltZXJfM19zdGFydF9yZXFfc3RydWN0OworCisvKiBNU0dfSURfTlJSQ19FTlBEQ1BfREVURUNUSU9OX1RJTUVSXzNfVElNRU9VVF9JTkQgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICAgbG9jYWxfcmVsZWFzZV9uZWVkZWQ7Cit9IG5ycmNfZW5wZGNwX2RldGVjdGlvbl90aW1lcl8zX3RpbWVvdXRfaW5kX3N0cnVjdDsKKworLyogTVNHX0lEX05SUkNfRU5QRENQX0RFVEVDVElPTl9USU1FUl80X1NUQVJUX1JFUSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb25fdGltZV92YWx1ZTsgLy8gaW4gbWlsbGlzZWNvbmRzCit9IG5ycmNfZW5wZGNwX2RldGVjdGlvbl90aW1lcl80X3N0YXJ0X3JlcV9zdHJ1Y3Q7CisKKy8qIE1TR19JRF9FUlJDX0VOUERDUF9QU19EQVRBX0lOQUNUSVZFX1RJTUVfSU5EICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIExPQ0FMX1BBUkFfSERSCisKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgIGluYWN0aXZlX3RpbWU7Cit9IGVycmNfZW5wZGNwX3BzX2RhdGFfaW5hY3RpdmVfdGltZV9pbmRfc3RydWN0OworCisvKgorICogIE1TR19JRF9FUlJDX0VOUERDUF9FWENFU1NfREVMQVlfSU5ECisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGthbF91aW50OCAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9udW07CisgICAgZW5wZGNwX2RlbGF5X3Jlc3VsdF9zdHJ1Y3QgICAgICAgcmVzdWx0X2xpc3RbRU5QRENQX1NBUF9NQVhfTlVNX1FVRVVJTkdfREVMQVlfUlNMVF07CisgICAga2FsX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkOworICAgIGthbF91aW50MzIgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydF9pbnRlcnZhbDsKK30gZXJyY19lbnBkY3BfZXhjZXNzX2RlbGF5X2luZF9zdHJ1Y3Q7CisKKy8qCisgKiAgTVNHX0lEX0VSUkNfRU5QRENQX1JMRl9JTkQKKyAqICBpc19vbGRfcmI6IGluZGljYXRlIHRoZSBSTEYgZW50aXR5IGlzIHRoZSBmaXJzdCBvbmUgb3Igc2Vjb25kIG9uZSB0aGF0IGVzdGFibGlzaGVkIGZvciBmdWxsY29uZmlnIGhhbmRvdmVyCisgKiAgICAgICAgICAgICB0cnVlIHN0YW5kcyBmb3IgdGhlIGZpcnN0IGVudGl0eSAKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAga2FsX3VpbnQ4ICAgICAgICAgICAgICAgICAgICAgICByYl9pZDsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIGlzX29sZF9yYjsKKyAgICBlbnBkY3BfcmxmX2NhdXNlX2VudW0gICAgICAgICAgICBjYXVzZTsKK30gZXJyY19lbnBkY3BfcmxmX2luZF9zdHJ1Y3Q7CisKKworLyogTVNHX0lEX0VSUkNfRU5QRENQX0NVVF9DRUxMX0lORCAvIE1TR19JRF9OUlJDX0VOUERDUF9DVVRfQ0VMTF9JTkQgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGVucGRjcF9jdXRfY2VsbF9jYXVzZV9lbnVtICBjYXVzZTsKKyAgICBrYWxfYm9vbCAgICAgICAgICAgICAgICAgICAgaXNfY2VsbF92YWxpZDsKKyAgICBrYWxfdWludDMyICAgICAgICAgICAgICAgICAgZWFyZmNuOworICAgIGthbF91aW50MTYgICAgICAgICAgICAgICAgICBwY2k7CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgIGJhcl90aW1lOyAvLyBpbiBzZWNvbmQKK30gZXJyY19lbnBkY3BfY3V0X2NlbGxfaW5kX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICBMT0NBTF9QQVJBX0hEUgorCisgICAgZW5wZGNwX2N1dF9jZWxsX2NhdXNlX2VudW0gIGNhdXNlOworICAgIGthbF9ib29sICAgICAgICAgICAgICAgICAgICBpc19jZWxsX3ZhbGlkOworICAgIG5yX2NlbGxfaW5mbyAgICAgICAgICAgICAgICBucl9jZWxsX2luZm87CisgICAga2FsX3VpbnQxNiAgICAgICAgICAgICAgICAgIGJhcl90aW1lOyAvLyBpbiBzZWNvbmQKK30gbnJyY19lbnBkY3BfY3V0X2NlbGxfaW5kX3N0cnVjdDsKKworI2VuZGlmIC8qIF9SUkNfRU5QRENQX01TR19IICovCmRpZmYgLS1naXQgYS9tY3UvcHJvdG9jb2wvaW50ZXJmYWNlL2VubDIvZW5fY29tbW9uL3VwY21fZW5wZGNwX2ludGVyZmFjZS5oIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VuX2NvbW1vbi91cGNtX2VucGRjcF9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzM3OTBhCi0tLSAvZGV2L251bGwKKysrIGIvbWN1L3Byb3RvY29sL2ludGVyZmFjZS9lbmwyL2VuX2NvbW1vbi91cGNtX2VucGRjcF9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDEyOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICBDb3B5cmlnaHQgU3RhdGVtZW50OgorKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogIFRoaXMgc29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IENvcHlyaWdodCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorKiAgaGVyZWluIGlzIGNvbmZpZGVudGlhbC4gVGhlIHNvZnR3YXJlIG1heSBub3QgYmUgY29waWVkIGFuZCB0aGUgaW5mb3JtYXRpb24KKyogIGNvbnRhaW5lZCBoZXJlaW4gbWF5IG5vdCBiZSB1c2VkIG9yIGRpc2Nsb3NlZCBleGNlcHQgd2l0aCB0aGUgd3JpdHRlbgorKiAgcGVybWlzc2lvbiBvZiBNZWRpYVRlayBJbmMuIChDKSAyMDEyCisqCisqICBCWSBPUEVOSU5HIFRISVMgRklMRSwgQlVZRVIgSEVSRUJZIFVORVFVSVZPQ0FMTFkgQUNLTk9XTEVER0VTIEFORCBBR1JFRVMKKyogIFRIQVQgVEhFIFNPRlRXQVJFL0ZJUk1XQVJFIEFORCBJVFMgRE9DVU1FTlRBVElPTlMgKCJNRURJQVRFSyBTT0ZUV0FSRSIpCisqICBSRUNFSVZFRCBGUk9NIE1FRElBVEVLIEFORC9PUiBJVFMgUkVQUkVTRU5UQVRJVkVTIEFSRSBQUk9WSURFRCBUTyBCVVlFUiBPTgorKiAgQU4gIkFTLUlTIiBCQVNJUyBPTkxZLiBNRURJQVRFSyBFWFBSRVNTTFkgRElTQ0xBSU1TIEFOWSBBTkQgQUxMIFdBUlJBTlRJRVMsCisqICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorKiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT05JTkZSSU5HRU1FTlQuCisqICBORUlUSEVSIERPRVMgTUVESUFURUsgUFJPVklERSBBTlkgV0FSUkFOVFkgV0hBVFNPRVZFUiBXSVRIIFJFU1BFQ1QgVE8gVEhFCisqICBTT0ZUV0FSRSBPRiBBTlkgVEhJUkQgUEFSVFkgV0hJQ0ggTUFZIEJFIFVTRUQgQlksIElOQ09SUE9SQVRFRCBJTiwgT1IKKyogIFNVUFBMSUVEIFdJVEggVEhFIE1FRElBVEVLIFNPRlRXQVJFLCBBTkQgQlVZRVIgQUdSRUVTIFRPIExPT0sgT05MWSBUTyBTVUNICisqICBUSElSRCBQQVJUWSBGT1IgQU5ZIFdBUlJBTlRZIENMQUlNIFJFTEFUSU5HIFRIRVJFVE8uIE1FRElBVEVLIFNIQUxMIEFMU08KKyogIE5PVCBCRSBSRVNQT05TSUJMRSBGT1IgQU5ZIE1FRElBVEVLIFNPRlRXQVJFIFJFTEVBU0VTIE1BREUgVE8gQlVZRVInUworKiAgU1BFQ0lGSUNBVElPTiBPUiBUTyBDT05GT1JNIFRPIEEgUEFSVElDVUxBUiBTVEFOREFSRCBPUiBPUEVOIEZPUlVNLgorKgorKiAgQlVZRVInUyBTT0xFIEFORCBFWENMVVNJVkUgUkVNRURZIEFORCBNRURJQVRFSydTIEVOVElSRSBBTkQgQ1VNVUxBVElWRQorKiAgTElBQklMSVRZIFdJVEggUkVTUEVDVCBUTyBUSEUgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRUQgSEVSRVVOREVSIFdJTEwgQkUsCisqICBBVCBNRURJQVRFSydTIE9QVElPTiwgVE8gUkVWSVNFIE9SIFJFUExBQ0UgVEhFIE1FRElBVEVLIFNPRlRXQVJFIEFUIElTU1VFLAorKiAgT1IgUkVGVU5EIEFOWSBTT0ZUV0FSRSBMSUNFTlNFIEZFRVMgT1IgU0VSVklDRSBDSEFSR0UgUEFJRCBCWSBCVVlFUiBUTworKiAgTUVESUFURUsgRk9SIFNVQ0ggTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUuCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgdXBjbV9lbnBkY3BfaW50ZXJmYWNlLmgKKyAqCisgKiBQcm9qZWN0OgorICogLS0tLS0tLS0KKyAqICAgVk1PTFkKKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAqIC0tLS0tLS0tLS0tLQorICogICBVUENNLUVOUERDUCBpbnRlcmZhY2UKKyAqCisgKiBBdXRob3I6CisgKiAtLS0tLS0tCisgKiAtLS0tLS0tCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICRMb2ckCisgKgorICogMDcgMTIgMjAxOSB5aXRpbmcuY2hlbmcKKyAqIFtNT0xZMDA0MjEwNjFdIFtHZW45N10gQU5CUiAoUkJSLFJCUlEpIG92ZXIgTlIKKyAqIC4KKyAqCisgKiAwNSAxNyAyMDE5IHRjLmNoYW5nCisgKiBbTU9MWTAwNDA0NzcwXSBbR2VuOTddIFN5bmMgR2VuOTUgVU1PTFlFIHBhdGNoCisgKiBCRUFSRVJfQVBQX1JFUSB1cGRhdGUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19VUENNX0VOUERDUF9JTlRFUkZBQ0VfSF9fCisjZGVmaW5lIF9fVVBDTV9FTlBEQ1BfSU5URVJGQUNFX0hfXworCisjaW5jbHVkZSAia2FsX3B1YmxpY19hcGkuaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2RlZnMuaCIKKworI2luY2x1ZGUgInBzX3B1YmxpY19lbnVtX3B1YmxpYy5oIgorI2luY2x1ZGUgImVubDJfc2FwX2NvbW1vbi5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgTE9DQUxfUEFSQV9IRFIKKworICAgIGVucGRjcF9jbl9nZW5lcmF0aW9uX2VudW0gY25fZ2VuZXJhdGlvbjsKKworICAgIC8qIEJpdCBzZXQgdG8gMSBpZmYgdGhlIGNvcnJlc3BvbmRpbmcgRVBTQiBvciBQRFUgc2Vzc2lvbiBpcyBJbnRlcm5ldC4KKyAgICAgKiAoRERNX0FQTl9UWVBFX0RFRkFVTFQpCisgICAgICogTFNCOiBmb3IgRUJJIC8gUFNJIDAKKyAgICAgKiBNU0I6IGZvciBFQkkgLyBQU0kgMTUKKyAgICAgKi8KKyAgICBrYWxfdWludDE2IGludGVybmV0X2JlYXJlcl9ibXA7CisKKyAgICAvKiBCaXQgc2V0IHRvIDEgaWZmIHRoZSBjb3JyZXNwb25kaW5nIEVQU0Igb3IgUERVIHNlc3Npb24gaXMgSU1TLgorICAgICAqIChERE1fQVBOX1RZUEVfSU1TKQorICAgICAqIExTQjogZm9yIEVCSSAvIFBTSSAwCisgICAgICogTVNCOiBmb3IgRUJJIC8gUFNJIDE1CisgICAgICovCisgICAga2FsX3VpbnQxNiBpbXNfYmVhcmVyX2JtcDsKKworICAgIC8qIFZhbGlkIHdoZW4gY25fZ2VuZXJhdGlvbiBpcyA1Ry4KKyAgICAgKiBpbXNfc2lnbmFsbGluZ181Z19xZmlbMV0gPSAyOyAvLyBQU0kgMSBRRkkgMiBpcyBJTVMgc2lnbmFsbGluZyBiZWFyZXIuCisgICAgICovCisgICAga2FsX3VpbnQ4IGltc19zaWduYWxsaW5nXzVnX3FmaVtNQVhfTlVNX09GX1NVUFBPUlRFRF9QRFVTICsgMV07CisKK30gdXBjbV9lbnBkY3BfYmVhcmVyX2FwcF9yZXFfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAga2FsX3VpbnQ4IHBzaTsKKyAgICBrYWxfdWludDggbnVtX3FmaTsKKyAgICBrYWxfdWludDggcWZpW01BWF9RT1NfRkxPV1NfUEVSX1BEVV9TRVNTSU9OXTsKK30gdXBjbV9lbnBkY3BfcmJfcHNpX3FmaV9zdHJ1Y3Q7CisKKy8qKgorICogQGJyaWVmIGdldCBwc2kgYW5kIHFmaSBieSByYl9pZHgKKyAqCisgKiBAcGFyYW0gcmJfaWR4CisgKiBAcGFyYW0gcHNpX3FmaSB0aGUgcHNpL251bV9xZmkvcWZpW10gbWFwcGVkIGJ5IHJiX2lkeCwgdGhlIEFQSSB3aWxsIHVwZGF0ZSBpdAorICogCisgKiBAcmV0dXJuIHZvaWQKKyAqLwordm9pZCB1cGNtX2VucGRjcF9yYl90b19wc2lfcWZpKGthbF91aW50OCByYl9pZHgsIHVwY21fZW5wZGNwX3JiX3BzaV9xZmlfc3RydWN0ICpwc2lfcWZpLCBrYWxfdWludDggcHJvdG9jb2xfaWR4KTsKKworLyoqCisgKiBAYnJpZWYgZ2V0IHJiX2lkeCBieSBwc2kgYW5kIHFmaQorICoKKyAqIEBwYXJhbSBwc2kKKyAqIEBwYXJhbSBxZmkKKyAqIAorICogQHJldHVybiByYl9pZHggbWFwcGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBzaS9xZmksIDB4RkYgbWVhbnMgbm8gbWFwcGVkIFJCCisgKi8KK2thbF91aW50OCB1cGNtX2VucGRjcF9wc2lfcWZpX3RvX3JiKGthbF91aW50OCBwc2ksIGthbF91aW50OCBxZmksIGthbF91aW50OCBwcm90b2NvbF9pZHgpOworCisKKyNlbmRpZiAvLyBfX1VQQ01fRU5QRENQX0lOVEVSRkFDRV9IX18K