From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Diego Herrera To: git-commits@fedoraproject.org Subject: [rpms/onnx] test-1.21.0: Disable tests that depend on python-parameterized Date: Mon, 08 Jun 2026 15:18:27 GMT Message-ID: <178093190724.1.1640843290736511251.rpms-onnx-8f9af18ab5ad@fedoraproject.org> List-ID: X-Git-Repo: rpms/onnx X-Git-Branch: test-1.21.0 X-Git-Rev: 8f9af18ab5adc738cb55ab43512e8c94bcc7e16f QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb25ueApCcmFuY2gg OiB0ZXN0LTEuMjEuMApDb21taXQgOiA4ZjlhZjE4YWI1YWRjNzM4Y2I1NWFiNDM1MTJlOGM5NGJj YzdlMTZmCkF1dGhvciA6IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+CkRhdGUg ICA6IDIwMjYtMDEtMTVUMjA6MTc6MDEtMDM6MDAKU3RhdHMgIDogKzU4MjMvLTIwNyBpbiAxMSBm aWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb25ueC9j LzhmOWFmMThhYjVhZGM3MzhjYjU1YWI0MzUxMmU4Yzk0YmNjN2UxNmY/YnJhbmNoPXRlc3QtMS4y MS4wCgpMb2c6CkRpc2FibGUgdGVzdHMgdGhhdCBkZXBlbmQgb24gcHl0aG9uLXBhcmFtZXRlcml6 ZWQKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggN2EyMTlk ZC4uNzEwMjIzNSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0x LDMgKzEsNSBAQAorcmVzdWx0c18qCisqLnJwbQogL29ubngtMS4xMy4wLnRhci5negogL29ubngt MS4xNC4wLnRhci5negogL29ubngtMS4xNC4xLnRhci5negoKZGlmZiAtLWdpdCBhLzAwMDAtQnVp bGQtc2hhcmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2ggYi8wMDAw LUJ1aWxkLXNoYXJlZC1saWJyYXJpZXMtYW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCmlu ZGV4IDZiYTg5NjcuLjM5NTExZDEgMTAwNjQ0Ci0tLSBhLzAwMDAtQnVpbGQtc2hhcmVkLWxpYnJh cmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKKysrIGIvMDAwMC1CdWlsZC1zaGFy ZWQtbGlicmFyaWVzLWFuZC1maXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaApAQCAtOCwxMCArOCwx MCBAQCBTdWJqZWN0OiBbUEFUQ0ggMC82XSBCdWlsZCBzaGFyZWQgbGlicmFyaWVzIGFuZCBmaXgg aW5zdGFsbCBsb2NhdGlvbgogIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4 dAotaW5kZXggNGRkNTZiNmUuLjdmNzljYzlhIDEwMDY0NAoraW5kZXggZDE1ZDk3ZWRjLi5kNmUw NGQyZTkgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQK LUBAIC0zNjcsNyArMzY3LDcgQEAgbGlzdChSRU1PVkVfSVRFTSBfX3RtcF9zcmNzICIke09OTlhf Uk9PVH0vb25ueC9jcHAycHlfZXhwb3J0LmNjIikKK0BAIC00NjYsNyArNDY2LDcgQEAgbGlzdChS RU1PVkVfSVRFTSBfX3RtcF9zcmNzICIke09OTlhfUk9PVH0vb25ueC9jcHAycHlfZXhwb3J0LmNj IikKICBsaXN0KFJFTU9WRV9JVEVNIF9fdG1wX3NyY3MgJHtvbm54X2d0ZXN0c19zcmN9KQogIGxp c3QoQVBQRU5EIE9OTlhfU1JDUyAke19fdG1wX3NyY3N9KQogIApAQCAtMjAsNyArMjAsNyBAQCBp bmRleCA0ZGQ1NmI2ZS4uN2Y3OWNjOWEgMTAwNjQ0CiAgYWRkX2RlcGVuZGVuY2llcyhvbm54X3By b3RvIGdlbl9vbm54X29wZXJhdG9yc19wcm90byBnZW5fb25ueF9kYXRhX3Byb3RvKQogIHRhcmdl dF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9ubnhfcHJvdG8gUFVCTElDCiAgICAkPEJVSUxEX0lOVEVS RkFDRToke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0+Ci1AQCAtNDAwLDYgKzQwMCw4IEBAIGVs c2UoKQorQEAgLTQ5OSw2ICs0OTksOCBAQCBlbHNlKCkKICAgIHNldChPTk5YX0FQSV9ERUZJTkUg Ii1ET05OWF9BUEk9X19hdHRyaWJ1dGVfX1woXChfX3Zpc2liaWxpdHlfX1woXCJkZWZhdWx0XCJc KVwpXCkiKQogICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG9ubnhfcHJvdG8gUFJPUEVSVElFUyBD WFhfVklTSUJJTElUWV9QUkVTRVQgaGlkZGVuKQogICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG9u bnhfcHJvdG8gUFJPUEVSVElFUyBWSVNJQklMSVRZX0lOTElORVNfSElEREVOIDEpCkBAIC0yOSw3 ICsyOSw3IEBAIGluZGV4IDRkZDU2YjZlLi43Zjc5Y2M5YSAxMDA2NDQKICBlbmRpZigpCiAgdGFy Z2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMob25ueF9wcm90byBQUklWQVRFICR7T05OWF9BUElfREVG SU5FfSkKICAKLUBAIC00MjMsNyArNDI1LDkgQEAgaWYoQ01BS0VfU1lTVEVNX05BTUUgU1RSRVFV QUwgIkFJWCIpCitAQCAtNTIyLDcgKzUyNCw5IEBAIGlmKENNQUtFX1NZU1RFTV9OQU1FIFNUUkVR VUFMICJBSVgiKQogICAgIyBTbywgY3JlYXRlIGEgb2JqZWN0IGxpYnJhcnkKICAgIGFkZF9saWJy YXJ5KG9ubnggT0JKRUNUICR7T05OWF9TUkNTfSkKICBlbHNlKCkKQEAgLTQwLDcgKzQwLDcgQEAg aW5kZXggNGRkNTZiNmUuLjdmNzljYzlhIDEwMDY0NAogIGVuZGlmKCkKICAKICB0YXJnZXRfaW5j bHVkZV9kaXJlY3Rvcmllcyhvbm54IFBVQkxJQwotQEAgLTYwNiw2ICs2MTAsMTcgQEAgaW5zdGFs bChESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L29ubngKK0BAIC02ODksNiAr NjkzLDE3IEBAIGluc3RhbGwoRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9v bm54CiAgICAgICAgICBGSUxFU19NQVRDSElORwogICAgICAgICAgUEFUVEVSTiAiKi5oIikKICAK QEAgLTU4LDcgKzU4LDcgQEAgaW5kZXggNGRkNTZiNmUuLjdmNzljYzlhIDEwMDY0NAogIGNvbmZp Z3VyZV9maWxlKAogICAgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlL09OTlhDb25maWdWZXJz aW9uLmNtYWtlLmluCiAgICAke1BST0pFQ1RfQklOQVJZX0RJUn0vT05OWENvbmZpZ1ZlcnNpb24u Y21ha2UKLUBAIC02MjMsNiArNjM4LDkgQEAgaW5zdGFsbChFWFBPUlQgT05OWFRhcmdldHMgREVT VElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L2NtYWtlL09OTlgiKQorQEAgLTc0Nyw2 ICs3NjIsOSBAQCBlbmRpZigpCiAgaW5zdGFsbChUQVJHRVRTCiAgICBvbm54IG9ubnhfcHJvdG8K ICAgIEVYUE9SVCBPTk5YVGFyZ2V0cyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElS fSkKQEAgLTY5LDUgKzY5LDUgQEAgaW5kZXggNGRkNTZiNmUuLjdmNzljYzlhIDEwMDY0NAogIGlm KE9OTlhfQlVJTERfVEVTVFMpCiAgICBpbmNsdWRlKCR7T05OWF9ST09UfS9jbWFrZS91bml0dGVz dC5jbWFrZSkKIC0tIAotMi40My4wCisyLjUyLjAKIAoKZGlmZiAtLWdpdCBhLzAwMDEtVXNlLXN5 c3RlbS1wcm90b2J1Zi1hbmQtcmVxdWlyZS1wYXJhbWV0ZXJpemVkLnBhdGNoIGIvMDAwMS1Vc2Ut c3lzdGVtLXByb3RvYnVmLWFuZC1yZXF1aXJlLXBhcmFtZXRlcml6ZWQucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZkNTAwNwotLS0gL2Rldi9udWxsCisrKyBiLzAw MDEtVXNlLXN5c3RlbS1wcm90b2J1Zi1hbmQtcmVxdWlyZS1wYXJhbWV0ZXJpemVkLnBhdGNoCkBA IC0wLDAgKzEsMjEgQEAKK0Zyb20gMzA3NDVlZTYyM2ZiMWZlNzUzMWQ2Mzk5ZTU0YjVmZmU0MTE0 NDZmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZWphbmRybyBBbHZhcmV6IEF5 bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjQgRmViIDIwMjQg MTQ6NTI6MjUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIFVzZSBzeXN0ZW0gcHJvdG9idWYg YW5kIHJlcXVpcmUgcGFyYW1ldGVyaXplZAorCistLS0KKyByZXF1aXJlbWVudHMudHh0IHwgMyAr Ky0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2Rp ZmYgLS1naXQgYS9yZXF1aXJlbWVudHMudHh0IGIvcmVxdWlyZW1lbnRzLnR4dAoraW5kZXggN2Yz YTlhZDAzLi40NmRkN2Y3ZmQgMTAwNjQ0CistLS0gYS9yZXF1aXJlbWVudHMudHh0CisrKysgYi9y ZXF1aXJlbWVudHMudHh0CitAQCAtMSwyICsxLDMgQEAKKyBudW1weT49MS4yMAorLXByb3RvYnVm Pj0zLjIwLjIKKytwcm90b2J1ZiA+PSAzLjE0LjAsIDwgNAorK3BhcmFtZXRlcml6ZWQgPj0gMC44 LjEsIDwgMQorLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhLzAwMDItQnVpbGQtc2hhcmVkLWxp YnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2ggYi8wMDAyLUJ1aWxkLXNoYXJl ZC1saWJyYXJpZXMtYW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwZDE0MGJmLi4wMDAwMDAwCi0tLSBhLzAwMDItQnVpbGQtc2hhcmVk LWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw3MyArMCwwIEBACi1Gcm9tIDA1NzA4MGM3NzViMmRlZGNiYzYzMDhiMDRlZmU4YmVkOGNk ZDI3YzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVqYW5kcm8gQWx2YXJleiBB eWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI0IEZlYiAyMDI0 IDE0OjQ4OjQ1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBCdWlsZCBzaGFyZWQgbGlicmFy aWVzIGFuZCBmaXggaW5zdGFsbCBsb2NhdGlvbgotCi0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDIy ICsrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VM aXN0cy50eHQKLWluZGV4IGQxNWQ5N2VkLi5kNmUwNGQyZSAxMDA2NDQKLS0tLSBhL0NNYWtlTGlz dHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTQ2Niw3ICs0NjYsNyBAQCBsaXN0KFJF TU9WRV9JVEVNIF9fdG1wX3NyY3MgIiR7T05OWF9ST09UfS9vbm54L2NwcDJweV9leHBvcnQuY2Mi KQotIGxpc3QoUkVNT1ZFX0lURU0gX190bXBfc3JjcyAke29ubnhfZ3Rlc3RzX3NyY30pCi0gbGlz dChBUFBFTkQgT05OWF9TUkNTICR7X190bXBfc3Jjc30pCi0gCi0tYWRkX2xpYnJhcnkob25ueF9w cm90byAke09OTlhfUFJPVE9fU1JDU30gJHtPTk5YX1BST1RPX0hEUlN9KQotK2FkZF9saWJyYXJ5 KG9ubnhfcHJvdG8gU0hBUkVEICR7T05OWF9QUk9UT19TUkNTfSAke09OTlhfUFJPVE9fSERSU30p Ci0gYWRkX2RlcGVuZGVuY2llcyhvbm54X3Byb3RvIGdlbl9vbm54X29wZXJhdG9yc19wcm90byBn ZW5fb25ueF9kYXRhX3Byb3RvKQotIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKG9ubnhfcHJv dG8gUFVCTElDCi0gICAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJ Un0+Ci1AQCAtNDk5LDYgKzQ5OSw4IEBAIGVsc2UoKQotICAgc2V0KE9OTlhfQVBJX0RFRklORSAi LURPTk5YX0FQST1fX2F0dHJpYnV0ZV9fXChcKF9fdmlzaWJpbGl0eV9fXChcImRlZmF1bHRcIlwp XClcKSIpCi0gICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25ueF9wcm90byBQUk9QRVJUSUVTIENY WF9WSVNJQklMSVRZX1BSRVNFVCBoaWRkZW4pCi0gICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25u eF9wcm90byBQUk9QRVJUSUVTIFZJU0lCSUxJVFlfSU5MSU5FU19ISURERU4gMSkKLSsgIHNldF90 YXJnZXRfcHJvcGVydGllcyhvbm54X3Byb3RvIFBST1BFUlRJRVMgVkVSU0lPTiAke09OTlhfVkVS U0lPTn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVkVS U0lPTiAke09OTlhfVkVSU0lPTn0pCi0gZW5kaWYoKQotIHRhcmdldF9jb21waWxlX2RlZmluaXRp b25zKG9ubnhfcHJvdG8gUFJJVkFURSAke09OTlhfQVBJX0RFRklORX0pCi0gCi1AQCAtNTIyLDcg KzUyNCw5IEBAIGlmKENNQUtFX1NZU1RFTV9OQU1FIFNUUkVRVUFMICJBSVgiKQotICAgIyBTbywg Y3JlYXRlIGEgb2JqZWN0IGxpYnJhcnkKLSAgIGFkZF9saWJyYXJ5KG9ubnggT0JKRUNUICR7T05O WF9TUkNTfSkKLSBlbHNlKCkKLS0gIGFkZF9saWJyYXJ5KG9ubnggJHtPTk5YX1NSQ1N9KQotKyAg YWRkX2xpYnJhcnkob25ueCBTSEFSRUQgJHtPTk5YX1NSQ1N9KQotKyAgc2V0X3RhcmdldF9wcm9w ZXJ0aWVzKG9ubnggUFJPUEVSVElFUyBWRVJTSU9OICR7T05OWF9WRVJTSU9OfQotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1ZFUlNJT04gJHtPTk5YX1ZFUlNJT059 KQotIGVuZGlmKCkKLSAKLSB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcyhvbm54IFBVQkxJQwot QEAgLTY4OSw2ICs2OTMsMTcgQEAgaW5zdGFsbChESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJ TkFSWV9ESVJ9L29ubngKLSAgICAgICAgIEZJTEVTX01BVENISU5HCi0gICAgICAgICBQQVRURVJO ICIqLmgiKQotIAotK2luc3RhbGwoRElSRUNUT1JZICR7T05OWF9ST09UfS9vbm54Ci0rICAgICAg ICBERVNUSU5BVElPTiAiJHtQWV9TSVRFQVJDSH0iCi0rICAgICAgICBGSUxFU19NQVRDSElORwot KyAgICAgICAgUEFUVEVSTiAiKi5weSIKLSsgICAgICAgIFBBVFRFUk4gInRlc3QvKiIgRVhDTFVE RSApCi0raW5zdGFsbChESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L29ubngK LSsgICAgICAgIERFU1RJTkFUSU9OICAiJHtQWV9TSVRFQVJDSH0iCi0rICAgICAgICBGSUxFU19N QVRDSElORwotKyAgICAgICAgUEFUVEVSTiAiKi5weSIKLSsgICAgICAgIFBBVFRFUk4gInRlc3Qv KiIgRVhDTFVERSApCi0rCi0gY29uZmlndXJlX2ZpbGUoCi0gICAke1BST0pFQ1RfU09VUkNFX0RJ Un0vY21ha2UvT05OWENvbmZpZ1ZlcnNpb24uY21ha2UuaW4KLSAgICR7UFJPSkVDVF9CSU5BUllf RElSfS9PTk5YQ29uZmlnVmVyc2lvbi5jbWFrZQotQEAgLTc0Nyw2ICs3NjIsOSBAQCBlbmRpZigp Ci0gaW5zdGFsbChUQVJHRVRTCi0gICBvbm54IG9ubnhfcHJvdG8KLSAgIEVYUE9SVCBPTk5YVGFy Z2V0cyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKLStpbnN0YWxsKFRBUkdF VFMKLSsgIG9ubnhfY3BwMnB5X2V4cG9ydAotKyAgREVTVElOQVRJT04gIiR7UFlfU0lURUFSQ0h9 L29ubngiKQotIAotIGlmKE9OTlhfQlVJTERfVEVTVFMpCi0gICBpbmNsdWRlKCR7T05OWF9ST09U fS9jbWFrZS91bml0dGVzdC5jbWFrZSkKLS0tIAotMi40Ni4yCi0KCmRpZmYgLS1naXQgYS8wMDAy LUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQucGF0Y2gg Yi8wMDAyLUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEyNTMyMAotLS0gL2Rl di9udWxsCisrKyBiLzAwMDItTGV0LXB5cHJvamVjdF93aGVlbC11c2UtYmluYXJpZXMtZnJvbS1j bWFrZV9idWlsZC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDc1ZTEwODJmMmQxN2MyYzJj Y2IzYzM4YjQyOWZhMjRhNGI0NWJiZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBB bGVqYW5kcm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+CitEYXRl OiBTYXQsIDI0IEZlYiAyMDI0IDE0OjUzOjEwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBM ZXQgcHlwcm9qZWN0X3doZWVsIHVzZSBiaW5hcmllcyBmcm9tIGNtYWtlX2J1aWxkCisKKy0tLQor IHNldHVwLnB5IHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA3ZDJj YjllNTAuLmFmOTA0OWExZSAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQor QEAgLTI3LDcgKzI3LDcgQEAgaW1wb3J0IHNldHVwdG9vbHMuY29tbWFuZC5idWlsZF9weQorIGlt cG9ydCBzZXR1cHRvb2xzLmNvbW1hbmQuZGV2ZWxvcAorIAorIFRPUF9ESVIgPSBvcy5wYXRoLnJl YWxwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCistQ01BS0VfQlVJTERfRElSID0gb3Mu cGF0aC5qb2luKFRPUF9ESVIsICIuc2V0dXB0b29scy1jbWFrZS1idWlsZCIpCisrQ01BS0VfQlVJ TERfRElSID0gb3MucGF0aC5qb2luKFRPUF9ESVIsICJyZWRoYXQtbGludXgtYnVpbGQiKQorIAor IFdJTkRPV1MgPSBvcy5uYW1lID09ICJudCIKKyAKK0BAIC0xNTEsNiArMTUxLDcgQEAgY2xhc3Mg Q21ha2VCdWlsZChzZXR1cHRvb2xzLkNvbW1hbmQpOgorICAgICAgICAgc2VsZi5qb2JzID0gbXVs dGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpIGlmIHNlbGYuam9icyBpcyBOb25lIGVsc2UgaW50KHNl bGYuam9icykKKyAKKyAgICAgZGVmIHJ1bihzZWxmKToKKysgICAgICAgIHJldHVybgorICAgICAg ICAgb3MubWFrZWRpcnMoQ01BS0VfQlVJTERfRElSLCBleGlzdF9vaz1UcnVlKQorIAorICAgICAg ICAgd2l0aCBjZChDTUFLRV9CVUlMRF9ESVIpOgorLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBh LzAwMDItVXNlLXN5c3RlbS1wcm90b2J1Zi1hbmQtcmVxdWlyZS1wYXJhbWV0ZXJpemVkLnBhdGNo IGIvMDAwMi1Vc2Utc3lzdGVtLXByb3RvYnVmLWFuZC1yZXF1aXJlLXBhcmFtZXRlcml6ZWQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZTc3MWYuLjAwMDAwMDAKLS0tIGEv MDAwMi1Vc2Utc3lzdGVtLXByb3RvYnVmLWFuZC1yZXF1aXJlLXBhcmFtZXRlcml6ZWQucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1Gcm9tIDMwNzQ1ZWU2MjNmYjFmZTc1MzFk NjM5OWU1NGI1ZmZlNDExNDQ2ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVq YW5kcm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+Ci1EYXRlOiBT YXQsIDI0IEZlYiAyMDI0IDE0OjUyOjI1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBVc2Ug c3lzdGVtIHByb3RvYnVmIGFuZCByZXF1aXJlIHBhcmFtZXRlcml6ZWQKLQotLS0tCi0gcmVxdWly ZW1lbnRzLnR4dCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRzLnR4dCBiL3JlcXVpcmVtZW50 cy50eHQKLWluZGV4IDdmM2E5YWQwLi40NmRkN2Y3ZiAxMDA2NDQKLS0tLSBhL3JlcXVpcmVtZW50 cy50eHQKLSsrKyBiL3JlcXVpcmVtZW50cy50eHQKLUBAIC0xLDIgKzEsMyBAQAotIG51bXB5Pj0x LjIwCi0tcHJvdG9idWY+PTMuMjAuMgotK3Byb3RvYnVmID49IDMuMTQuMCwgPCA0Ci0rcGFyYW1l dGVyaXplZCA+PSAwLjguMSwgPCAxCi0tLSAKLTIuNDYuMgotCgpkaWZmIC0tZ2l0IGEvMDAwMy1B ZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50aW1lLnBhdGNoIGIvMDAwMy1BZGQtZml4ZXMt Zm9yLXVzZS13aXRoLW9ubnhydW50aW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjQxYmM2OGUKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAzLUFkZC1maXhlcy1mb3It dXNlLXdpdGgtb25ueHJ1bnRpbWUucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSA5ODA5Zjc3 NzkyNTE3ZDBhY2UyODc0YTg0YTE4MWU4ZmUzNzY2ZDhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxsb25AZ21haWwu Y29tPgorRGF0ZTogU2F0LCAyNCBGZWIgMjAyNCAxNDo1MzozMyArMDEwMAorU3ViamVjdDogW1BB VENIIDQvNF0gQWRkIGZpeGVzIGZvciB1c2Ugd2l0aCBvbm54cnVudGltZQorCistLS0KKyBvbm54 L2RlZnMvc2NoZW1hLmNjICAgIHwgMTQgKysrKysrKysrKysrKysKKyBvbm54L29ubnhydW50aW1l X2ZpeC5oIHwgMTQgKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlv bnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgb25ueC9vbm54cnVudGltZV9maXguaAorCitkaWZm IC0tZ2l0IGEvb25ueC9kZWZzL3NjaGVtYS5jYyBiL29ubngvZGVmcy9zY2hlbWEuY2MKK2luZGV4 IDc0YmQwYTYzMC4uNTczZDA5MDE4IDEwMDY0NAorLS0tIGEvb25ueC9kZWZzL3NjaGVtYS5jYwor KysrIGIvb25ueC9kZWZzL3NjaGVtYS5jYworQEAgLTIxLDggKzIxLDE5IEBACisgCisgI2luY2x1 ZGUgIm9ubngvY29tbW9uL2Fzc2VydGlvbnMuaCIKKyAjaW5jbHVkZSAib25ueC9kZWZzL3BhcnNl ci5oIgorKyNpbmNsdWRlICJvbm54L29ubnhydW50aW1lX2ZpeC5oIgorIAorIG5hbWVzcGFjZSBP Tk5YX05BTUVTUEFDRSB7CisrCisrYm9vbCBPTk5YUnVudGltZUZpeDo6X3N0YXRpY19yZWdpc3Ry YXRpb25fZGlzYWJsZWQgPSBmYWxzZTsKKytib29sIE9OTlhSdW50aW1lRml4Ojppc1N0YXRpY1Jl Z2lzdHJhdGlvbkRpc2FibGVkKCkgeworKyAgcmV0dXJuIF9zdGF0aWNfcmVnaXN0cmF0aW9uX2Rp c2FibGVkOworK30KKysKKyt2b2lkIE9OTlhSdW50aW1lRml4OjpkaXNhYmxlU3RhdGljUmVnaXN0 cmF0aW9uKCkgeworKyAgX3N0YXRpY19yZWdpc3RyYXRpb25fZGlzYWJsZWQgPSB0cnVlOworK30K KysKKyAvLyAtMSBtZWFucyBPTk5YIHNjaGVtYSBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0CisgLy8g MCBtZWFucyBhbGwgdmVyc2lvbnMgb2YgT05OWCBzY2hlbWEgaGF2ZSBiZWVuIGxvYWRlZAorIC8v IE90aGVyIHBvc2l0aXZlIGludGVnZXIgbWVhbnMgdGhlIE9OTlggc2NoZW1hcyBmb3IgdGhlIHNw ZWNpZmllZCB2ZXJzaW9uIGhhdmUgYmVlbiBsb2FkZWQKK0BAIC0xMDkxLDYgKzExMDIsOSBAQCBP cE5hbWVfRG9tYWluX1ZlcnNpb25fU2NoZW1hX01hcCYgT3BTY2hlbWFSZWdpc3RyeTo6bWFwKCkg eworICAgY2xhc3MgU2NoZW1hc1JlZ2lzdGVyZXIgeworICAgIHB1YmxpYzoKKyAgICAgU2NoZW1h c1JlZ2lzdGVyZXIoKSB7CisrICAgICAgLy8gQ2hlY2sgaWYgc3RhdGljIHJlZ2lzdHJhdGlvbiBp cyBhY3R1YWxseSBkaXNhYmxlZAorKyAgICAgIGlmKE9OTlhSdW50aW1lRml4Ojppc1N0YXRpY1Jl Z2lzdHJhdGlvbkRpc2FibGVkKCkpIHJldHVybjsKKysKKyAgICAgICAvLyBJbiBkZWJ1ZyBidWls ZHMsIHRoZSBudW1iZXIgb2Ygc2NoZW1hIHJlZ2lzdGVyZWQgaW4gdGhpcyBjb25zdHJ1Y3Rvcgor ICAgICAgIC8vIGlzIGNvbXBhcmVkIGFnYWluc3QgdGhlIG51bWJlciBvZiBjYWxscyB0byBzY2hl bWEgcmVnaXN0cmF0aW9uIG1hY3Jvcy4KKyAjaWZuZGVmIE5ERUJVRworZGlmZiAtLWdpdCBhL29u bngvb25ueHJ1bnRpbWVfZml4LmggYi9vbm54L29ubnhydW50aW1lX2ZpeC5oCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi4yNDk1YjkzMTAKKy0tLSAvZGV2L251bGwKKysr KyBiL29ubngvb25ueHJ1bnRpbWVfZml4LmgKK0BAIC0wLDAgKzEsMTQgQEAKKysjcHJhZ21hIG9u Y2UKKysKKytuYW1lc3BhY2UgT05OWF9OQU1FU1BBQ0UgeworKworK2NsYXNzIE9OTlhSdW50aW1l Rml4IHsKKytwdWJsaWM6CisrICBzdGF0aWMgYm9vbCBpc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2Fi bGVkKCk7CisrICBzdGF0aWMgdm9pZCBkaXNhYmxlU3RhdGljUmVnaXN0cmF0aW9uKCk7CisrCisr cHJpdmF0ZToKKysgIHN0YXRpYyBib29sIF9zdGF0aWNfcmVnaXN0cmF0aW9uX2Rpc2FibGVkOwor K307CisrCisrfSAvLyBuYW1lc3BhY2UgT05OWF9OQU1FU1BBQ0UKKy0tIAorMi41Mi4wCisKCmRp ZmYgLS1naXQgYS8wMDAzLUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZyb20tY21h a2VfYnVpbGQucGF0Y2ggYi8wMDAzLUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZy b20tY21ha2VfYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2OTE2 OWIuLjAwMDAwMDAKLS0tIGEvMDAwMy1MZXQtcHlwcm9qZWN0X3doZWVsLXVzZS1iaW5hcmllcy1m cm9tLWNtYWtlX2J1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJv bSA3NWUxMDgyZjJkMTdjMmMyY2NiM2MzOGI0MjlmYTI0YTRiNDViYmVhIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxs b25AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyNCBGZWIgMjAyNCAxNDo1MzoxMCArMDEwMAotU3Vi amVjdDogW1BBVENIIDMvNF0gTGV0IHB5cHJvamVjdF93aGVlbCB1c2UgYmluYXJpZXMgZnJvbSBj bWFrZV9idWlsZAotCi0tLS0KLSBzZXR1cC5weSB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9z ZXR1cC5weQotaW5kZXggN2QyY2I5ZTUuLmFmOTA0OWExIDEwMDY0NAotLS0tIGEvc2V0dXAucHkK LSsrKyBiL3NldHVwLnB5Ci1AQCAtMjcsNyArMjcsNyBAQCBpbXBvcnQgc2V0dXB0b29scy5jb21t YW5kLmJ1aWxkX3B5Ci0gaW1wb3J0IHNldHVwdG9vbHMuY29tbWFuZC5kZXZlbG9wCi0gCi0gVE9Q X0RJUiA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLS1DTUFL RV9CVUlMRF9ESVIgPSBvcy5wYXRoLmpvaW4oVE9QX0RJUiwgIi5zZXR1cHRvb2xzLWNtYWtlLWJ1 aWxkIikKLStDTUFLRV9CVUlMRF9ESVIgPSBvcy5wYXRoLmpvaW4oVE9QX0RJUiwgInJlZGhhdC1s aW51eC1idWlsZCIpCi0gCi0gV0lORE9XUyA9IG9zLm5hbWUgPT0gIm50IgotIAotQEAgLTE1MSw2 ICsxNTEsNyBAQCBjbGFzcyBDbWFrZUJ1aWxkKHNldHVwdG9vbHMuQ29tbWFuZCk6Ci0gICAgICAg ICBzZWxmLmpvYnMgPSBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkgaWYgc2VsZi5qb2JzIGlz IE5vbmUgZWxzZSBpbnQoc2VsZi5qb2JzKQotIAotICAgICBkZWYgcnVuKHNlbGYpOgotKyAgICAg ICAgcmV0dXJuCi0gICAgICAgICBvcy5tYWtlZGlycyhDTUFLRV9CVUlMRF9ESVIsIGV4aXN0X29r PVRydWUpCi0gCi0gICAgICAgICB3aXRoIGNkKENNQUtFX0JVSUxEX0RJUik6Ci0tLSAKLTIuNDYu MgotCgpkaWZmIC0tZ2l0IGEvMDAwNC1BZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50aW1l LnBhdGNoIGIvMDAwNC1BZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50aW1lLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGI0YzZkLi4wMDAwMDAwCi0tLSBhLzAwMDQt QWRkLWZpeGVzLWZvci11c2Utd2l0aC1vbm54cnVudGltZS5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDY4ICswLDAgQEAKLUZyb20gOTgwOWY3Nzc5MjUxN2QwYWNlMjg3NGE4NGExODFlOGZlMzc2 NmQ4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZWphbmRybyBBbHZhcmV6IEF5 bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjQgRmViIDIwMjQg MTQ6NTM6MzMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBmaXhlcyBmb3IgdXNlIHdp dGggb25ueHJ1bnRpbWUKLQotLS0tCi0gb25ueC9kZWZzL3NjaGVtYS5jYyAgICB8IDE0ICsrKysr KysrKysrKysrCi0gb25ueC9vbm54cnVudGltZV9maXguaCB8IDE0ICsrKysrKysrKysrKysrCi0g MiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IG9u bngvb25ueHJ1bnRpbWVfZml4LmgKLQotZGlmZiAtLWdpdCBhL29ubngvZGVmcy9zY2hlbWEuY2Mg Yi9vbm54L2RlZnMvc2NoZW1hLmNjCi1pbmRleCA3NGJkMGE2My4uNTczZDA5MDEgMTAwNjQ0Ci0t LS0gYS9vbm54L2RlZnMvc2NoZW1hLmNjCi0rKysgYi9vbm54L2RlZnMvc2NoZW1hLmNjCi1AQCAt MjEsOCArMjEsMTkgQEAKLSAKLSAjaW5jbHVkZSAib25ueC9jb21tb24vYXNzZXJ0aW9ucy5oIgot ICNpbmNsdWRlICJvbm54L2RlZnMvcGFyc2VyLmgiCi0rI2luY2x1ZGUgIm9ubngvb25ueHJ1bnRp bWVfZml4LmgiCi0gCi0gbmFtZXNwYWNlIE9OTlhfTkFNRVNQQUNFIHsKLSsKLStib29sIE9OTlhS dW50aW1lRml4Ojpfc3RhdGljX3JlZ2lzdHJhdGlvbl9kaXNhYmxlZCA9IGZhbHNlOwotK2Jvb2wg T05OWFJ1bnRpbWVGaXg6OmlzU3RhdGljUmVnaXN0cmF0aW9uRGlzYWJsZWQoKSB7Ci0rICByZXR1 cm4gX3N0YXRpY19yZWdpc3RyYXRpb25fZGlzYWJsZWQ7Ci0rfQotKwotK3ZvaWQgT05OWFJ1bnRp bWVGaXg6OmRpc2FibGVTdGF0aWNSZWdpc3RyYXRpb24oKSB7Ci0rICBfc3RhdGljX3JlZ2lzdHJh dGlvbl9kaXNhYmxlZCA9IHRydWU7Ci0rfQotKwotIC8vIC0xIG1lYW5zIE9OTlggc2NoZW1hIGhh c24ndCBiZWVuIGxvYWRlZCB5ZXQKLSAvLyAwIG1lYW5zIGFsbCB2ZXJzaW9ucyBvZiBPTk5YIHNj aGVtYSBoYXZlIGJlZW4gbG9hZGVkCi0gLy8gT3RoZXIgcG9zaXRpdmUgaW50ZWdlciBtZWFucyB0 aGUgT05OWCBzY2hlbWFzIGZvciB0aGUgc3BlY2lmaWVkIHZlcnNpb24gaGF2ZSBiZWVuIGxvYWRl ZAotQEAgLTEwOTEsNiArMTEwMiw5IEBAIE9wTmFtZV9Eb21haW5fVmVyc2lvbl9TY2hlbWFfTWFw JiBPcFNjaGVtYVJlZ2lzdHJ5OjptYXAoKSB7Ci0gICBjbGFzcyBTY2hlbWFzUmVnaXN0ZXJlciB7 Ci0gICAgcHVibGljOgotICAgICBTY2hlbWFzUmVnaXN0ZXJlcigpIHsKLSsgICAgICAvLyBDaGVj ayBpZiBzdGF0aWMgcmVnaXN0cmF0aW9uIGlzIGFjdHVhbGx5IGRpc2FibGVkCi0rICAgICAgaWYo T05OWFJ1bnRpbWVGaXg6OmlzU3RhdGljUmVnaXN0cmF0aW9uRGlzYWJsZWQoKSkgcmV0dXJuOwot KwotICAgICAgIC8vIEluIGRlYnVnIGJ1aWxkcywgdGhlIG51bWJlciBvZiBzY2hlbWEgcmVnaXN0 ZXJlZCBpbiB0aGlzIGNvbnN0cnVjdG9yCi0gICAgICAgLy8gaXMgY29tcGFyZWQgYWdhaW5zdCB0 aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHNjaGVtYSByZWdpc3RyYXRpb24gbWFjcm9zLgotICNpZm5k ZWYgTkRFQlVHCi1kaWZmIC0tZ2l0IGEvb25ueC9vbm54cnVudGltZV9maXguaCBiL29ubngvb25u eHJ1bnRpbWVfZml4LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uMjQ5 NWI5MzEKLS0tLSAvZGV2L251bGwKLSsrKyBiL29ubngvb25ueHJ1bnRpbWVfZml4LmgKLUBAIC0w LDAgKzEsMTQgQEAKLSsjcHJhZ21hIG9uY2UKLSsKLStuYW1lc3BhY2UgT05OWF9OQU1FU1BBQ0Ug ewotKwotK2NsYXNzIE9OTlhSdW50aW1lRml4IHsKLStwdWJsaWM6Ci0rICBzdGF0aWMgYm9vbCBp c1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVkKCk7Ci0rICBzdGF0aWMgdm9pZCBkaXNhYmxlU3Rh dGljUmVnaXN0cmF0aW9uKCk7Ci0rCi0rcHJpdmF0ZToKLSsgIHN0YXRpYyBib29sIF9zdGF0aWNf cmVnaXN0cmF0aW9uX2Rpc2FibGVkOwotK307Ci0rCi0rfSAvLyBuYW1lc3BhY2UgT05OWF9OQU1F U1BBQ0UKLS0tIAotMi40Ni4yCi0KCmRpZmYgLS1naXQgYS8wMDA0LVJlbW92ZS1weXRob24tcGFy YW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoIGIvMDAwNC1SZW1vdmUtcHl0aG9uLXBhcmFtZXRl cml6ZWQtZGVwZW5kZW5jeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li40MGUyYzg1Ci0tLSAvZGV2L251bGwKKysrIGIvMDAwNC1SZW1vdmUtcHl0aG9uLXBhcmFtZXRl cml6ZWQtZGVwZW5kZW5jeS5wYXRjaApAQCAtMCwwICsxLDU2ODEgQEAKK0Zyb20gMzE1NjBlYTlm NTBkNmNjYjgxNmU1ZmVmNTM3YmEzZTQ3NzIwMWFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTog VGh1LCAxNSBKYW4gMjAyNiAxNzozMjo1OCAtMDMwMAorU3ViamVjdDogW1BBVENIIDQvNF0gUmVt b3ZlIHB5dGhvbi1wYXJhbWV0ZXJpemVkIGRlcGVuZGVuY3kKKworLS0tCisgb25ueC90ZXN0L2Jh c2ljX3Rlc3QucHkgICAgICAgICAgICAgICAgICAgICAgIHwgICA5MiAtCisgb25ueC90ZXN0L2hl bHBlcl90ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAgIHwgIDEwMCAtCisgb25ueC90ZXN0L251 bXB5X2hlbHBlcl90ZXN0LnB5ICAgICAgICAgICAgICAgIHwgICA2MyAtCisgb25ueC90ZXN0L3Bh cnNlcl90ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAgIHwgIDE4MiAtLQorIG9ubngvdGVzdC9y ZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkgICAgICB8ICAxMzAgLQorIG9ubngvdGVzdC9y ZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkgICAgICAgICB8ICA3NzEgLS0tLS0KKyBvbm54L3Rl c3Qvc2NoZW1hX3Rlc3QucHkgICAgICAgICAgICAgICAgICAgICAgfCAgMTk0IC0tCisgb25ueC90 ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5ICAgICAgICAgICAgIHwgMjU4OSArLS0tLS0tLS0t LS0tLS0tLQorIG9ubngvdGVzdC90ZXN0X2JhY2tlbmRfcmVmZXJlbmNlLnB5ICAgICAgICAgICB8 ICAgIDkgKworIG9ubngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkgICAgICAgICAgICAgICB8 ICA2MjcgLS0tLQorIG9ubngvdGVzdC90b29sc190ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMTcgLQorIC4uLi9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkgICAgICAgICAgICAg ICB8ICAgMzAgLQorIG9ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5ICAgICAgICAg ICB8ICAxNjQgLS0KKyByZXF1aXJlbWVudHMtZGV2LnR4dCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxIC0KKyByZXF1aXJlbWVudHMtcmVsZWFzZS50eHQgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxIC0KKyByZXF1aXJlbWVudHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxIC0KKyAxNiBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgNDk0MSBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29ubngvdGVzdC9iYXNpY190ZXN0LnB5IGIvb25u eC90ZXN0L2Jhc2ljX3Rlc3QucHkKK2luZGV4IDNkZThhOTFkNi4uY2E1NzE5YmE2IDEwMDY0NAor LS0tIGEvb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9iYXNpY190ZXN0 LnB5CitAQCAtMTEsNyArMTEsNiBAQCBpbXBvcnQgdW5pdHRlc3QKKyAKKyBpbXBvcnQgZ29vZ2xl LnByb3RvYnVmLm1lc3NhZ2UKKyBpbXBvcnQgZ29vZ2xlLnByb3RvYnVmLnRleHRfZm9ybWF0Cist aW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBvcnQg c2VyaWFsaXphdGlvbgorQEAgLTM1LDk3ICszNCw2IEBAIGRlZiBfc2ltcGxlX3RlbnNvcigpIC0+ IG9ubnguVGVuc29yUHJvdG86CisgICAgIHJldHVybiB0ZW5zb3IKKyAKKyAKKy1AcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBbCistICAgICAgICB7ImZvcm1hdCI6ICJw cm90b2J1ZiJ9LAorLSAgICAgICAgeyJmb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgICAgICB7 ImZvcm1hdCI6ICJqc29uIn0sCistICAgICAgICB7ImZvcm1hdCI6ICJvbm54dHh0In0sCistICAg IF0KKy0pCistY2xhc3MgVGVzdElPKHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgZm9ybWF0OiBz dHIKKy0KKy0gICAgZGVmIHRlc3RfbG9hZF9tb2RlbF93aGVuX2lucHV0X2lzX2J5dGVzKHNlbGYp IC0+IE5vbmU6CistICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQorLSAgICAgICAgcHJv dG9fc3RyaW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoc2VsZi5mb3JtYXQpLnNlcmlh bGl6ZV9wcm90byhwcm90bykKKy0gICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2Rl bF9mcm9tX3N0cmluZyhwcm90b19zdHJpbmcsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rf c2F2ZV9hbmRfbG9hZF9tb2RlbF93aGVuX2lucHV0X2hhc19yZWFkX2Z1bmN0aW9uKHNlbGYpIC0+ IE5vbmU6CistICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQorLSAgICAgICAgIyBXaGVu IHRoZSBwcm90byBpcyBhIGJ5dGVzIHJlcHJlc2VudGF0aW9uIHByb3ZpZGVkIHRvIGBzYXZlX21v ZGVsYCwKKy0gICAgICAgICMgaXQgc2hvdWxkIGFsd2F5cyBiZSBhIHNlcmlhbGl6ZWQgYmluYXJ5 IHByb3RvYnVmIHJlcHJlc2VudGF0aW9uLiBBa2EuIGZvcm1hdD0icHJvdG9idWYiCistICAgICAg ICAjIFRoZSBzYXZlZCBmaWxlIGZvcm1hdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGBmb3JtYXRgIGFy Z3VtZW50LgorLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5n ZXQoInByb3RvYnVmIikuc2VyaWFsaXplX3Byb3RvKHByb3RvKQorLSAgICAgICAgZiA9IGlvLkJ5 dGVzSU8oKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHByb3RvX3N0cmluZywgZiwgZm9ybWF0 PXNlbGYuZm9ybWF0KQorLSAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKGlv LkJ5dGVzSU8oZi5nZXR2YWx1ZSgpKSwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLSAgICBkZWYgdGVzdF9zYXZl X2FuZF9sb2FkX21vZGVsX3doZW5faW5wdXRfaXNfZmlsZV9uYW1lKHNlbGYpIC0+IE5vbmU6Cist ICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQorLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5U ZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKy0gICAgICAgICAgICBtb2RlbF9wYXRo ID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAgICAgICAgb25u eC5zYXZlX21vZGVsKHByb3RvLCBtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAg ICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX3BhdGgsIGZvcm1h dD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2Fk ZWRfcHJvdG8pCistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1 dF9pc19wYXRobGlrZShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21v ZGVsKCkKKy0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVt cF9kaXI6CistICAgICAgICAgICAgbW9kZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2Rpciwg Im1vZGVsLm9ubngiKQorLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChwcm90bywgbW9kZWxf cGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9u bngubG9hZF9tb2RlbChtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLQorLUBwYXJhbWV0 ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCistICAgIFsKKy0gICAgICAgIHsiZm9ybWF0Ijog InByb3RvYnVmIn0sCistICAgICAgICB7ImZvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgICAg IHsiZm9ybWF0IjogImpzb24ifSwKKy0gICAgICAgICMgVGhlIG9ubnh0eHQgZm9ybWF0IGRvZXMg bm90IHN1cHBvcnQgc2F2aW5nL2xvYWRpbmcgdGVuc29ycyB5ZXQKKy0gICAgXQorLSkKKy1jbGFz cyBUZXN0SU9UZW5zb3IodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICAiIiJUZXN0IGxvYWRpbmcg YW5kIHNhdmluZyBvZiBUZW5zb3JQcm90by4iIiIKKy0KKy0gICAgZm9ybWF0OiBzdHIKKy0KKy0g ICAgZGVmIHRlc3RfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25l OgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCistICAgICAgICBwcm90b19zdHJp bmcgPSBzZXJpYWxpemF0aW9uLnJlZ2lzdHJ5LmdldChzZWxmLmZvcm1hdCkuc2VyaWFsaXplX3By b3RvKHByb3RvKQorLSAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcl9mcm9t X3N0cmluZyhwcm90b19zdHJpbmcsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9h bmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9oYXNfcmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25l OgorLSAgICAgICAgIyBUZXN0IGlmIGlucHV0IGhhcyBhIHJlYWQgZnVuY3Rpb24KKy0gICAgICAg IHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQorLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorLSAg ICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90bywgZiwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAg ICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcihpby5CeXRlc0lPKGYuZ2V0dmFs dWUoKSksIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJv dG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jf d2hlbl9pbnB1dF9pc19maWxlX25hbWUoc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBp ZiBpbnB1dCBpcyBhIGZpbGUgbmFtZQorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigp CistICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGly OgorLSAgICAgICAgICAgIG1vZGVsX3BhdGggPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2Rl bC5vbm54IikKKy0gICAgICAgICAgICBvbm54LnNhdmVfdGVuc29yKHByb3RvLCBtb2RlbF9wYXRo LCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5s b2FkX3RlbnNvcihtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLSAgICBkZWYgdGVzdF9z YXZlX2FuZF9sb2FkX3RlbnNvcl93aGVuX2lucHV0X2lzX3BhdGhsaWtlKHNlbGYpIC0+IE5vbmU6 CistICAgICAgICAjIFRlc3QgaWYgaW5wdXQgaXMgYSBmaWxlIG5hbWUKKy0gICAgICAgIHByb3Rv ID0gX3NpbXBsZV90ZW5zb3IoKQorLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJl Y3RvcnkoKSBhcyB0ZW1wX2RpcjoKKy0gICAgICAgICAgICBtb2RlbF9wYXRoID0gcGF0aGxpYi5Q YXRoKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAgICAgICAgb25ueC5zYXZlX3RlbnNv cihwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIGxv YWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3IobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9y bWF0KQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykK Ky0KKy0KKyBjbGFzcyBUZXN0U2F2ZUFuZExvYWRGaWxlRXh0ZW5zaW9ucyh1bml0dGVzdC5UZXN0 Q2FzZSk6CisgICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxfcGlja3NfY29ycmVjdF9mb3JtYXRfZnJv bV9leHRlbnNpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2Rl bCgpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5IGIvb25ueC90ZXN0L2hl bHBlcl90ZXN0LnB5CitpbmRleCAyYjM4ZTUyYzcuLmVjYjNkMzRlNyAxMDA2NDQKKy0tLSBhL29u bngvdGVzdC9oZWxwZXJfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5CitA QCAtMTEsNyArMTEsNiBAQCBpbXBvcnQgdW5pdHRlc3QKKyBmcm9tIHR5cGluZyBpbXBvcnQgQW55 CisgCisgaW1wb3J0IG51bXB5IGFzIG5wCistaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyBpbXBvcnQg cHl0ZXN0CisgaW1wb3J0IHZlcnNpb25fdXRpbHMKKyAKK0BAIC02NTYsODMgKzY1NSw2IEBAIGNs YXNzIFRlc3RIZWxwZXJUZW5zb3JGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAg ICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkpCisgICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9lcXVhbChDYXN0LmV2YWwoZXhwZWN0ZWQsIHRvPVRlbnNvclByb3RvLkZMT0FUOEU1TTJG TlVaKSwgeW5wKSAgIyB0eXBlOiBpZ25vcmVbYXJnLXR5cGVdCisgCistICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCist ICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwKKy0gICAg ICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkpLAor LSAgICAgICAgKQorLSAgICApCistICAgIEB1bml0dGVzdC5za2lwSWYoCistICAgICAgICB2ZXJz aW9uX3V0aWxzLm51bXB5X29sZGVyX3RoYW4oIjEuMjIuMCIpLAorLSAgICAgICAgIlRoZSB0ZXN0 IHJlcXVpcmVzIG51bXB5IDEuMjIuMCBvciBsYXRlciIsCistICAgICkKKy0gICAgZGVmIHRlc3Rf bWFrZV80Yml0X3RlbnNvcihzZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKKy0gICAgICAgIHR5 cGVfcmFuZ2UgPSB7CistICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDQ6ICgwLCAxNSksCist ICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNDogKC04LCA3KSwKKy0gICAgICAgIH0KKy0gICAg ICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgKKy0gICAgICAgICAgICB0eXBlX3JhbmdlW2R0 eXBlXVswXSwgaGlnaD10eXBlX3JhbmdlW2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcworLSAgICAg ICAgKQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIGR0eXBlLCBkYXRhLnNo YXBlLCBkYXRhKQorLQorLSAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBpbnQz Ml9kYXRhIGluIGJ5dGVzCistICAgICAgICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNlaWwo bnAucHJvZChkYXRhLnNoYXBlKSAvIDIuMCkKKy0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBs ZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFs KGFjdHVhbF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKKy0KKy0gICAgICAgICMgQ2hl Y2sgdGhlIGV4cGVjdGVkIGRhdGEgdmFsdWVzLgorLSAgICAgICAgeW5wID0gdG9fYXJyYXlfZXh0 ZW5kZWQoeSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGRhdGEsIHlucCkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVy dG9vbHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAz KSwgKDEsKSwgKDIqKjEwLCkpLAorLSAgICAgICAgKQorLSAgICApCistICAgIEB1bml0dGVzdC5z a2lwSWYoCistICAgICAgICB2ZXJzaW9uX3V0aWxzLm51bXB5X29sZGVyX3RoYW4oIjEuMjIuMCIp LAorLSAgICAgICAgIlRoZSB0ZXN0IHJlcXVpcmVzIG51bXB5IDEuMjIuMCBvciBsYXRlciIsCist ICAgICkKKy0gICAgZGVmIHRlc3RfNGJpdF90ZW5zb3Jfc2l6ZShzZWxmLCBkaW1zKSAtPiBOb25l OgorLSAgICAgICAgIyBBIGJ1ZyBjYXVzZWQgbmVnYXRpdmUgaW50NCB2YWx1ZXMgdG8gaW5mbGF0 ZSB0ZW5zb3Igc2l6ZS4KKy0gICAgICAgICMgU28sIHRlc3QgbmVnYXRpdmUgdmFsdWVzIGhlcmUu CistICAgICAgICBudW1fZWxlbXMgPSBucC5wcm9kKGRpbXMpCistICAgICAgICBkYXRhID0gbnAu YXJyYXkoWy00XSAqIG51bV9lbGVtcywgZHR5cGU9bnAuaW50OCkucmVzaGFwZShkaW1zKQorLSAg ICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIFRlbnNvclByb3RvLklOVDQsIGRhdGEu c2hhcGUsIGRhdGEpCistCistICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGlu dDMyX2RhdGEgaW4gYnl0ZXMKKy0gICAgICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2Vp bChudW1fZWxlbXMgLyAyLjApCistICAgICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVz KHkuaW50MzJfZGF0YSkpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxf ZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3NpemUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAg ICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwgKCg1LCA0LCA2KSwg KDQsIDYsIDUpLCAoMywgMyksICgxLCkpCistICAgICAgICApCistICAgICkKKy0gICAgQHVuaXR0 ZXN0LnNraXBJZigKKy0gICAgICAgIHZlcnNpb25fdXRpbHMubnVtcHlfb2xkZXJfdGhhbigiMS4y Ni4wIiksCistICAgICAgICAiVGhlIHRlc3QgcmVxdWlyZXMgbnVtcHkgMS4yNi4wIG9yIGxhdGVy IiwKKy0gICAgKQorLSAgICBkZWYgdGVzdF9tYWtlXzRiaXRfcmF3X3RlbnNvcihzZWxmLCBkdHlw ZSwgZGltcykgLT4gTm9uZToKKy0gICAgICAgIHR5cGVfcmFuZ2UgPSB7CistICAgICAgICAgICAg VGVuc29yUHJvdG8uVUlOVDQ6ICgwLCAxNSksCistICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5U NDogKC04LCA3KSwKKy0gICAgICAgIH0KKy0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGlu dCgKKy0gICAgICAgICAgICB0eXBlX3JhbmdlW2R0eXBlXVswXSwgaGlnaD10eXBlX3JhbmdlW2R0 eXBlXVsxXSArIDEsIHNpemU9ZGltcworLSAgICAgICAgKS5hc3R5cGUobnAuZmxvYXQzMikKKy0g ICAgICAgIHBhY2tlZF9kYXRhID0gaGVscGVyLnBhY2tfZmxvYXQzMl90b180Yml0KAorLSAgICAg ICAgICAgIGRhdGEsIHNpZ25lZD0oZHR5cGUgPT0gVGVuc29yUHJvdG8uSU5UNCkKKy0gICAgICAg ICkKKy0KKy0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCistICAgICAgICAgICAgInBh Y2tlZF9pbnQ0IiwgZHR5cGUsIGRpbXMsIHBhY2tlZF9kYXRhLnRvYnl0ZXMoKSwgcmF3PVRydWUK Ky0gICAgICAgICkKKy0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQorLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoZGF0YSwgeW5wKQorLQorICAgICBkZWYgdGVz dF9tYWtlX3NwYXJzZV90ZW5zb3Ioc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHZhbHVlcyA9IFsx LjEsIDIuMiwgMy4zLCA0LjQsIDUuNV0KKyAgICAgICAgIHZhbHVlc190ZW5zb3IgPSBoZWxwZXIu bWFrZV90ZW5zb3IoCitAQCAtMTAxOCwyOCArOTQwLDYgQEAgY2xhc3MgVGVzdEhlbHBlck1hcHBp bmdGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorIAorIAorIGNsYXNzIFRlc3RBdHRyVHlw ZVRvU3RyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0 dHJpYnV0ZVR5cGUuRkxPQVQsICJGTE9BVCIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVk XQorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLklOVCwgIklOVCIp LCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQ cm90by5BdHRyaWJ1dGVUeXBlLlNUUklORywgIlNUUklORyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0 ci1kZWZpbmVkXQorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRF TlNPUiwgIlRFTlNPUiIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorLSAgICAgICAg ICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLkdSQVBILCAiR1JBUEgiKSwgICMgdHlw ZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0 cmlidXRlVHlwZS5TUEFSU0VfVEVOU09SLCAiU1BBUlNFX1RFTlNPUiIpLCAgIyB0eXBlOiBpZ25v cmVbYXR0ci1kZWZpbmVkXQorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVU eXBlLlRZUEVfUFJPVE8sICJUWVBFX1BST1RPIiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmlu ZWRdCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuRkxPQVRTLCAi RkxPQVRTIiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCistICAgICAgICAgICAgKEF0 dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuSU5UUywgIklOVFMiKSwgICMgdHlwZTogaWdub3Jl W2F0dHItZGVmaW5lZF0KKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlw ZS5TVFJJTkdTLCAiU1RSSU5HUyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQorLSAg ICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRFTlNPUlMsICJURU5TT1JT IiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCistICAgICAgICAgICAgKEF0dHJpYnV0 ZVByb3RvLkF0dHJpYnV0ZVR5cGUuR1JBUEhTLCAiR1JBUEhTIiksICAjIHR5cGU6IGlnbm9yZVth dHRyLWRlZmluZWRdCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUu U1BBUlNFX1RFTlNPUlMsICJTUEFSU0VfVEVOU09SUyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1k ZWZpbmVkXQorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRZUEVf UFJPVE9TLCAiVFlQRV9QUk9UT1MiKSwgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKy0g ICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9hdHRyX3R5cGVfdG9fc3RyKHNlbGYsIGF0 dHJfdHlwZSwgZXhwZWN0ZWRfc3RyKToKKy0gICAgICAgIHJlc3VsdCA9IGhlbHBlci5fYXR0cl90 eXBlX3RvX3N0cihhdHRyX3R5cGUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwg ZXhwZWN0ZWRfc3RyKQorLQorICAgICBkZWYgdGVzdF9hdHRyX3R5cGVfdG9fc3RyX3VuZGVmaW5l ZChzZWxmKToKKyAgICAgICAgIHJlc3VsdCA9IGhlbHBlci5fYXR0cl90eXBlX3RvX3N0cig5OTk5 KQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICJVTkRFRklORUQiKQorZGlmZiAt LWdpdCBhL29ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5weSBiL29ubngvdGVzdC9udW1weV9o ZWxwZXJfdGVzdC5weQoraW5kZXggZjY0MmNjODdmLi42MjFhOGI4YTIgMTAwNjQ0CistLS0gYS9v bm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9udW1weV9oZWxw ZXJfdGVzdC5weQorQEAgLTcsNyArNyw2IEBAIGltcG9ydCB1bml0dGVzdAorIGZyb20gdHlwaW5n IGltcG9ydCBBbnkKKyAKKyBpbXBvcnQgbnVtcHkgYXMgbnAKKy1pbXBvcnQgcGFyYW1ldGVyaXpl ZAorIAorIGltcG9ydCBvbm54CisgaW1wb3J0IG9ubngucmVmZXJlbmNlCitAQCAtMTQ3LDI5ICsx NDYsNiBAQCBjbGFzcyBUZXN0TnVtcHlIZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBk ZWYgdGVzdF9jb21wbGV4MTI4KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBzZWxmLl90ZXN0X251 bXB5X2hlbHBlcl9mbG9hdF90eXBlKG5wLmNvbXBsZXgxMjgpCisgCistICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgxLCks CistICAgICAgICAgICAgKDAuMTAwMDk3NjU2LCksCistICAgICAgICAgICAgKDEzMDA0OCwpLAor LSAgICAgICAgICAgICgxLjI5OTM4MTNlLTUsKSwKKy0gICAgICAgICAgICAobnAubmFuLCksCist ICAgICAgICAgICAgKG5wLmluZiwpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0 X2JmbG9hdDE2X3RvX2Zsb2F0MzIoc2VsZiwgZik6CistICAgICAgICBmMzIgPSBucC5mbG9hdDMy KGYpCistICAgICAgICBiZjE2ID0gaGVscGVyLmZsb2F0MzJfdG9fYmZsb2F0MTYoZjMyKQorLSAg ICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYmYxNiwgaW50KQorLSAgICAgICAgZjMyXzEgPSBudW1w eV9oZWxwZXIuYmZsb2F0MTZfdG9fZmxvYXQzMihucC5hcnJheShbYmYxNl0pKVswXQorLSAgICAg ICAgZjMyXzIgPSBiZmxvYXQxNl90b19mbG9hdDMyKGJmMTYpCistICAgICAgICBpZiBucC5pc25h bihmMzIpOgorLSAgICAgICAgICAgIGFzc2VydCBucC5pc25hbihmMzJfMSkKKy0gICAgICAgICAg ICBhc3NlcnQgbnAuaXNuYW4oZjMyXzIpCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoZjMyLCBmMzJfMSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs KGYzMiwgZjMyXzIpCistCisgICAgIGRlZiB0ZXN0X2Zsb2F0OGU0bTNfdG9fZmxvYXQzMihzZWxm KToKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtcHlfaGVscGVyLmZsb2F0OGU0bTNfdG9f ZmxvYXQzMihpbnQoIjExMTExMTAiLCAyKSksIDQ0OCkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwobnVtcHlfaGVscGVyLmZsb2F0OGU0bTNfdG9fZmxvYXQzMihpbnQoIjEwMDAiLCAyKSksIDIg KiogKC02KSkKK0BAIC0yMDgsMjYgKzE4NCw2IEBAIGNsYXNzIFRlc3ROdW1weUhlbHBlcih1bml0 dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYz MiwgZjMyXzEpCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYzMiwgZjMy XzIpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgWworLSAgICAgICAgICAgICgwLjAwNDM5NDUzMTI1LCAwLjAwMzkwNjI1KSwKKy0gICAgICAg ICAgICAoMC4wMDU4NTkzNzUsIDAuMDA1ODU5Mzc1KSwKKy0gICAgICAgICAgICAoMC4wMDU3NTkz NzUsIDAuMDA1ODU5Mzc1KSwKKy0gICAgICAgICAgICAoMC4wMDQ2ODc1LCAwLjAwMzkwNjI1KSwK Ky0gICAgICAgICAgICAoMC4wMDE5NTMxMjUsIDAuMDAxOTUzMTI1KSwKKy0gICAgICAgICAgICAo MC4wMDI5Mjk2ODc1LCAwLjAwMzkwNjI1KSwKKy0gICAgICAgICAgICAoMC4wMDIwNTMxMjUsIDAu MDAxOTUzMTI1KSwKKy0gICAgICAgICAgICAoMC4wMDIzNDM3NSwgMC4wMDE5NTMxMjUpLAorLSAg ICAgICAgICAgICgwLjAwODc4OTA2MjUsIDAuMDA3ODEyNSksCistICAgICAgICAgICAgKDAuMDAx MTcxODc1LCAwLjAwMTk1MzEyNSksCistICAgICAgICAgICAgKDEuODEzMTYwNSwgMS44NzUpLAor LSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2Zsb2F0OGU0bTNfdG9fZmxvYXQzMl9y b3VuZChzZWxmLCB2YWwsIGV4cGVjdGVkKToKKy0gICAgICAgIGY4ID0gaGVscGVyLmZsb2F0MzJf dG9fZmxvYXQ4ZTRtMyh2YWwpCistICAgICAgICBmMzIgPSBudW1weV9oZWxwZXIuZmxvYXQ4ZTRt M190b19mbG9hdDMyKGY4KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMzIsIGV4cGVjdGVk KQorLQorICAgICBkZWYgdGVzdF9mbG9hdDhlNW0yX3RvX2Zsb2F0MzIoc2VsZik6CisgICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKG51bXB5X2hlbHBlci5mbG9hdDhlNW0yX3RvX2Zsb2F0MzIoaW50 KCIxMTExMDExIiwgMikpLCA1NzM0NCkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtcHlf aGVscGVyLmZsb2F0OGU1bTJfdG9fZmxvYXQzMihpbnQoIjEwMCIsIDIpKSwgMiAqKiAoLTE0KSkK K0BAIC02MjUsMjUgKzU4MSw2IEBAIGNsYXNzIFRlc3ROdW1weUhlbHBlcih1bml0dGVzdC5UZXN0 Q2FzZSk6CisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLlNlcmlhbGl6ZVRvU3RyaW5nKCks IGFnYWluLlNlcmlhbGl6ZVRvU3RyaW5nKCkpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRw LmRhdGFfdHlwZSwgaGVscGVyLm5wX2R0eXBlX3RvX3RlbnNvcl9kdHlwZShiYWNrLmR0eXBlKSkK KyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoWyhhdHQsKSBmb3Ig YXR0IGluIGRpcihvbm54LlRlbnNvclByb3RvKV0pCistICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zy b21fYXJyYXkoc2VsZiwgYXR0KToKKy0gICAgICAgIGlmIGF0dCBpbiB7CistICAgICAgICAgICAg IklOVDQiLAorLSAgICAgICAgICAgICJVSU5UNCIsCistICAgICAgICAgICAgIlNUUklORyIsCist ICAgICAgICAgICAgIlVOREVGSU5FRCIsCistICAgICAgICAgICAgIkRFRkFVTFQiLAorLSAgICAg ICAgICAgICJOQU1FX0ZJRUxEX05VTUJFUiIsCistICAgICAgICB9OgorLSAgICAgICAgICAgIHJl dHVybgorLSAgICAgICAgaWYgYXR0WzBdIDwgIkEiIG9yIGF0dFswXSA+ICJaIjoKKy0gICAgICAg ICAgICByZXR1cm4KKy0gICAgICAgIHZhbHVlID0gZ2V0YXR0cihvbm54LlRlbnNvclByb3RvLCBh dHQpCistICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKy0gICAgICAgICAg ICByZXR1cm4KKy0KKy0gICAgICAgIHNlbGYuX3RvX2FycmF5X2Zyb21fYXJyYXkodmFsdWUpCist CisgICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zyb21fYXJyYXlfc3VidHlwZShzZWxmKToKKyAgICAg ICAgIHNlbGYuX3RvX2FycmF5X2Zyb21fYXJyYXkob25ueC5UZW5zb3JQcm90by5JTlQ0KQorICAg ICAgICAgc2VsZi5fdG9fYXJyYXlfZnJvbV9hcnJheShvbm54LlRlbnNvclByb3RvLlVJTlQ0KQor ZGlmZiAtLWdpdCBhL29ubngvdGVzdC9wYXJzZXJfdGVzdC5weSBiL29ubngvdGVzdC9wYXJzZXJf dGVzdC5weQoraW5kZXggYzExN2QzNzliLi45NjdkMjkzOTAgMTAwNjQ0CistLS0gYS9vbm54L3Rl c3QvcGFyc2VyX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9wYXJzZXJfdGVzdC5weQorQEAgLTUs OCArNSw2IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3RhdGlvbnMKKyAKKyBpbXBvcnQg dW5pdHRlc3QKKyAKKy1mcm9tIHBhcmFtZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKKy0K KyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBvcnQgR3JhcGhQcm90bywgT3BlcmF0b3JTZXRJ ZFByb3RvLCBUZW5zb3JQcm90bywgY2hlY2tlcgorIAorQEAgLTEyMCw5NCArMTE4LDYgQEAgY2xh c3MgVGVzdEJhc2ljRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIG1vZGVs ID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwoaW5wdXQpCisgICAgICAgICBjaGVja2VyLmNoZWNr X21vZGVsKG1vZGVsKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBb CistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9 PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21haW4uU2VsdSh4KSB9IiwKKy0gICAg ICAgICAgICAgICAge30sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAg ICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0g Y3VzdG9tX2RvbWFpbi5TZWx1PGFscGhhPTIuMD4oeCkgfSIsCistICAgICAgICAgICAgICAgIHsi YWxwaGEiOiAyLjB9LAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9IGN1 c3RvbV9kb21haW4uU2VsdTxnYW1tYT0zLjA+KHgpIH0iLAorLSAgICAgICAgICAgICAgICB7Imdh bW1hIjogMy4wfSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAg ICAgICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0 b21fZG9tYWluLlNlbHU8YWxwaGE9Mi4wLCBnYW1tYT0zLjA+KHgpIH0iLAorLSAgICAgICAgICAg ICAgICB7ImFscGhhIjogMi4wLCAiZ2FtbWEiOiAzLjB9LAorLSAgICAgICAgICAgICksCistICAg ICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfY29tcG9zaXRlX3BhcnNlX2Z1bmN0aW9uX3dp dGhfYXR0cmlidXRlcygKKy0gICAgICAgIHNlbGYsIGdyYXBoX3RleHQ6IHN0ciwgZXhwZWN0ZWRf YXR0cmlidXRlOiBkaWN0CistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGRlZmF1bHRfYWxwaGEg PSAxLjY3MzI2MzE5MjE3NjgxODg0NzY1NjI1CistICAgICAgICBkZWZhdWx0X2dhbW1hID0gMS4w NTA3MDEwMjIxNDgxMzIzMjQyMTg3NQorLQorLSAgICAgICAgZGVmIGV4cGVjdF9jdXN0b21fbm9k ZV9hdHRyaWJ1dGUobm9kZSwgYXR0cmlidXRlcyk6CistICAgICAgICAgICAgZm9yIGtleSBpbiBh dHRyaWJ1dGVzOgorLSAgICAgICAgICAgICAgICBtYXRjaF9hdHRyID0gW2F0dHIgZm9yIGF0dHIg aW4gbm9kZS5hdHRyaWJ1dGUgaWYgYXR0ci5uYW1lID09IGtleV0KKy0gICAgICAgICAgICAgICAg YXNzZXJ0IGxlbihtYXRjaF9hdHRyKSA9PSAxCistICAgICAgICAgICAgICAgIGFzc2VydCBtYXRj aF9hdHRyWzBdLmYgPT0gYXR0cmlidXRlc1trZXldCistCistICAgICAgICBkZWYgZXhwZWN0X21v ZGVsX2Z1bmN0aW9uX2F0dHJpYnV0ZShtb2RlbCk6CistICAgICAgICAgICAgYXNzZXJ0IGxlbiht b2RlbC5mdW5jdGlvbnNbMF0uYXR0cmlidXRlX3Byb3RvKSA9PSAyCistICAgICAgICAgICAgYXR0 cl9wcm90b19hbHBoYSA9IFsKKy0gICAgICAgICAgICAgICAgYXR0cl9wcm90bworLSAgICAgICAg ICAgICAgICBmb3IgYXR0cl9wcm90byBpbiBtb2RlbC5mdW5jdGlvbnNbMF0uYXR0cmlidXRlX3By b3RvCistICAgICAgICAgICAgICAgIGlmIGF0dHJfcHJvdG8ubmFtZSA9PSAiYWxwaGEiCistICAg ICAgICAgICAgXQorLSAgICAgICAgICAgIGFzc2VydCBsZW4oYXR0cl9wcm90b19hbHBoYSkgPT0g MSBhbmQgYXR0cl9wcm90b19hbHBoYVswXS5mID09IGRlZmF1bHRfYWxwaGEKKy0gICAgICAgICAg ICBhdHRyX3Byb3RvX2dhbW1hID0gWworLSAgICAgICAgICAgICAgICBhdHRyX3Byb3RvCistICAg ICAgICAgICAgICAgIGZvciBhdHRyX3Byb3RvIGluIG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1 dGVfcHJvdG8KKy0gICAgICAgICAgICAgICAgaWYgYXR0cl9wcm90by5uYW1lID09ICJnYW1tYSIK Ky0gICAgICAgICAgICBdCistICAgICAgICAgICAgYXNzZXJ0IGxlbihhdHRyX3Byb3RvX2dhbW1h KSA9PSAxIGFuZCBhdHRyX3Byb3RvX2dhbW1hWzBdLmYgPT0gZGVmYXVsdF9nYW1tYQorLQorLSAg ICAgICAgZnVuY3Rpb25fdGV4dCA9IGYiIiIKKy0gICAgICAgICA8CistICAgICAgICAgZG9tYWlu OiAiY3VzdG9tX2RvbWFpbiIsCistICAgICAgICAgb3BzZXRfaW1wb3J0OiBbICIiIDogMTVdLAor LSAgICAgICAgIGRvY19zdHJpbmc6ICJUZXN0IGZ1bmN0aW9uIHByb3RvIgorLSAgICAgICAgID4K Ky0gICAgICAgICAgIFNlbHUKKy0gICAgICAgICAgIDxhbHBoYTogZmxvYXQ9e2RlZmF1bHRfYWxw aGF9LCBnYW1tYTogZmxvYXQ9e2RlZmF1bHRfZ2FtbWF9PgorLSAgICAgICAgICAgKFgpID0+IChD KQorLSAgICAgICAgICAge3sKKy0gICAgICAgICAgICAgICBjb25zdGFudF9hbHBoYSA9IENvbnN0 YW50PHZhbHVlX2Zsb2F0OiBmbG9hdD1AYWxwaGE+KCkKKy0gICAgICAgICAgICAgICBjb25zdGFu dF9nYW1tYSA9IENvbnN0YW50PHZhbHVlX2Zsb2F0OiBmbG9hdD1AZ2FtbWE+KCkKKy0gICAgICAg ICAgICAgICBhbHBoYV94ID0gQ2FzdExpa2UoY29uc3RhbnRfYWxwaGEsIFgpCistICAgICAgICAg ICAgICAgZ2FtbWFfeCA9IENhc3RMaWtlKGNvbnN0YW50X2dhbW1hLCBYKQorLSAgICAgICAgICAg ICAgIGV4cF94ID0gRXhwKFgpCistICAgICAgICAgICAgICAgYWxwaGFfeF9leHBfeCA9IE11bChh bHBoYV94LCBleHBfeCkKKy0gICAgICAgICAgICAgICBhbHBoYV94X2V4cF94XyA9IFN1YihhbHBo YV94X2V4cF94LCBhbHBoYV94KQorLSAgICAgICAgICAgICAgIG5lZyA9IE11bChnYW1tYV94LCBh bHBoYV94X2V4cF94XykKKy0gICAgICAgICAgICAgICBwb3MgPSBNdWwoZ2FtbWFfeCwgWCkKKy0g ICAgICAgICAgICAgICBfemVybyA9IENvbnN0YW50PHZhbHVlX2Zsb2F0PTAuMD4oKQorLSAgICAg ICAgICAgICAgIHplcm8gPSBDYXN0TGlrZShfemVybywgWCkKKy0gICAgICAgICAgICAgICBsZXNz X2VxID0gTGVzc09yRXF1YWwoWCwgemVybykKKy0gICAgICAgICAgICAgICBDID0gV2hlcmUobGVz c19lcSwgbmVnLCBwb3MpCistICAgICAgICAgICB9fQorLSAgICAgICAgIiIiCistCistICAgICAg ICBmdW5jdGlvbnMgPSBbb25ueC5wYXJzZXIucGFyc2VfZnVuY3Rpb24oZnVuY3Rpb25fdGV4dCld CistICAgICAgICBncmFwaCA9IG9ubngucGFyc2VyLnBhcnNlX2dyYXBoKGdyYXBoX3RleHQpCist ICAgICAgICBvcHNldF9pbXBvcnRzID0gWworLSAgICAgICAgICAgIE9wZXJhdG9yU2V0SWRQcm90 byhkb21haW49IiIsIHZlcnNpb249MTUpLAorLSAgICAgICAgICAgIE9wZXJhdG9yU2V0SWRQcm90 byhkb21haW49ImN1c3RvbV9kb21haW4iLCB2ZXJzaW9uPTEpLAorLSAgICAgICAgXQorLQorLSAg ICAgICAgbW9kZWwgPSBvbm54LmhlbHBlci5tYWtlX21vZGVsKAorLSAgICAgICAgICAgIGdyYXBo LCBmdW5jdGlvbnM9ZnVuY3Rpb25zLCBvcHNldF9pbXBvcnRzPW9wc2V0X2ltcG9ydHMKKy0gICAg ICAgICkKKy0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwpCistCistICAgICAgICBl eHBlY3RfbW9kZWxfZnVuY3Rpb25fYXR0cmlidXRlKG1vZGVsKQorLSAgICAgICAgZXhwZWN0X2N1 c3RvbV9ub2RlX2F0dHJpYnV0ZShtb2RlbC5ncmFwaC5ub2RlWzBdLCBleHBlY3RlZF9hdHRyaWJ1 dGUpCistCisgICAgIGRlZiB0ZXN0X3BhcnNlX25vZGUoc2VsZik6CisgICAgICAgICBub2RlID0g b25ueC5wYXJzZXIucGFyc2Vfbm9kZSgKKyAgICAgICAgICAgICAib3V0MSwgb3V0MiA9IFNvbWVE b21haW4uU29tZU9wIDxhdHRyMSA9IDE+IChpbjEsIGluMikiCitAQCAtMjIwLDk4ICsxMzAsNiBA QCBjbGFzcyBUZXN0QmFzaWNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChub2RlLmRvbWFpbiwgIlNvbWVEb21haW4iKQorICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChub2RlLm9wX3R5cGUsICJTb21lT3AiKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJub3RfYV9nb29kX2Zsb2F0 IiwgVHJ1ZSksCistICAgICAgICAgICAgKCJpbmYxIiwgVHJ1ZSksCistICAgICAgICAgICAgKCIt aW5mMSIsIFRydWUpLAorLSAgICAgICAgICAgICgibmFuMCIsIFRydWUpLAorLSAgICAgICAgICAg ICgiLW5hbjAiLCBUcnVlKSwKKy0gICAgICAgICAgICAoIm5hbmluZiIsIFRydWUpLAorLSAgICAg ICAgICAgICgiaW5mIiwgRmFsc2UpLAorLSAgICAgICAgICAgICgiLWluZiIsIEZhbHNlKSwKKy0g ICAgICAgICAgICAoImluZmluaXR5IiwgRmFsc2UpLAorLSAgICAgICAgICAgICgiLWluZmluaXR5 IiwgRmFsc2UpLAorLSAgICAgICAgICAgICgibmFuIiwgRmFsc2UpLAorLSAgICAgICAgICAgICgi LU5hTiIsIEZhbHNlKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9wYXJzZV92 YXJpb3VzX2Zsb2F0X3ZhbHVlcyhzZWxmLCB0ZXN0X2xpdGVyYWwsIGV4cGVjdF9leGNlcHRpb24p OgorLSAgICAgICAgbW9kZWxfdGV4dCA9IGYiIiIKKy0gICAgICAgIDwKKy0gICAgICAgIGlyX3Zl cnNpb246IDgsCistICAgICAgICBvcHNldF9pbXBvcnQ6IFsiIiA6IDE4LCAidGhpcyIgOiAxXSwK Ky0gICAgICAgIHByb2R1Y2VyX25hbWU6ICJGdW5jdGlvblByb3RvVGVzdCIsCistICAgICAgICBw cm9kdWNlcl92ZXJzaW9uOiAiMS4wIgorLSAgICAgICAgPgorLSAgICAgICAgX2Z1bmMgKCkgPT4g KCkKKy0gICAgICAgIHt7CistICAgICAgICB0bXAgPSBDb25zdGFudCA8dmFsdWVfZmxvYXQgPSB7 dGVzdF9saXRlcmFsfT4oKQorLSAgICAgICAgfX0KKy0gICAgICAgICIiIgorLSAgICAgICAgaWYg ZXhwZWN0X2V4Y2VwdGlvbjoKKy0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAg ICAgICAgICAgICAgb25ueC5wYXJzZXIuUGFyc2VFcnJvciwgbGFtYmRhOiBvbm54LnBhcnNlci5w YXJzZV9tb2RlbChtb2RlbF90ZXh0KQorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVsc2U6Cist ICAgICAgICAgICAgbW9kZWwgPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChtb2RlbF90ZXh0KQor LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwuaXJfdmVyc2lvbiwgOCkKKy0gICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsLnByb2R1Y2VyX25hbWUsICJGdW5jdGlvblBy b3RvVGVzdCIpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5wcm9kdWNlcl92 ZXJzaW9uLCAiMS4wIikKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbC5n cmFwaC5ub2RlKSwgMSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbC5n cmFwaC5ub2RlWzBdLmF0dHJpYnV0ZSksIDEpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS5uYW1lLCAidmFsdWVfZmxvYXQiKQor LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgICAgIG1vZGVsLmdy YXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnR5cGUsIG9ubnguQXR0cmlidXRlUHJvdG8uRkxPQVQK Ky0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAg ICAgICAgICAgc3RyKG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLmYpLCBzdHIoZmxv YXQodGVzdF9saXRlcmFsKSkKKy0gICAgICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoImJmbG9hdDE2IiwgVGVuc29yUHJv dG8uQkZMT0FUMTYpLAorLSAgICAgICAgICAgICgiYm9vbCIsIFRlbnNvclByb3RvLkJPT0wpLAor LSAgICAgICAgICAgICgiY29tcGxleDY0IiwgVGVuc29yUHJvdG8uQ09NUExFWDY0KSwKKy0gICAg ICAgICAgICAoImNvbXBsZXgxMjgiLCBUZW5zb3JQcm90by5DT01QTEVYMTI4KSwKKy0gICAgICAg ICAgICAoImRvdWJsZSIsIFRlbnNvclByb3RvLkRPVUJMRSksCistICAgICAgICAgICAgKCJmbG9h dDE2IiwgVGVuc29yUHJvdG8uRkxPQVQxNiksCistICAgICAgICAgICAgKCJmbG9hdCIsIFRlbnNv clByb3RvLkZMT0FUKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU0bTNmbiIsIFRlbnNvclByb3Rv LkZMT0FUOEU0TTNGTiksCistICAgICAgICAgICAgKCJmbG9hdDhlNG0zZm51eiIsIFRlbnNvclBy b3RvLkZMT0FUOEU0TTNGTlVaKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU1bTIiLCBUZW5zb3JQ cm90by5GTE9BVDhFNU0yKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU1bTJmbnV6IiwgVGVuc29y UHJvdG8uRkxPQVQ4RTVNMkZOVVopLAorLSAgICAgICAgICAgICgiaW50NCIsIFRlbnNvclByb3Rv LklOVDQpLAorLSAgICAgICAgICAgICgiaW50OCIsIFRlbnNvclByb3RvLklOVDgpLAorLSAgICAg ICAgICAgICgiaW50MTYiLCBUZW5zb3JQcm90by5JTlQxNiksCistICAgICAgICAgICAgKCJpbnQz MiIsIFRlbnNvclByb3RvLklOVDMyKSwKKy0gICAgICAgICAgICAoImludDY0IiwgVGVuc29yUHJv dG8uSU5UNjQpLAorLSAgICAgICAgICAgICgic3RyaW5nIiwgVGVuc29yUHJvdG8uU1RSSU5HKSwK Ky0gICAgICAgICAgICAoInVpbnQ0IiwgVGVuc29yUHJvdG8uVUlOVDQpLAorLSAgICAgICAgICAg ICgidWludDgiLCBUZW5zb3JQcm90by5VSU5UOCksCistICAgICAgICAgICAgKCJ1aW50MTYiLCBU ZW5zb3JQcm90by5VSU5UMTYpLAorLSAgICAgICAgICAgICgidWludDMyIiwgVGVuc29yUHJvdG8u VUlOVDMyKSwKKy0gICAgICAgICAgICAoInVpbnQ2NCIsIFRlbnNvclByb3RvLlVJTlQ2NCksCist ICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfcGFyc2VfZ3JhcGhfdHlwZXMoc2VsZiwg bmFtZSwgaXR5cGUpIC0+IE5vbmU6CistICAgICAgICB3ID0gJ3siMCJ9JyBpZiBpdHlwZSA9PSBU ZW5zb3JQcm90by5TVFJJTkcgZWxzZSAiezB9IgorLSAgICAgICAgdGV4dF9ncmFwaCA9IGYiIiIK Ky0gICAgICAgICAgIDwKKy0gICAgICAgICAgICAgaXJfdmVyc2lvbjogMTAsCistICAgICAgICAg ICAgIG9wc2V0X2ltcG9ydDogWyAiIiA6IDE5XQorLSAgICAgICAgICAgPgorLSAgICAgICAgICAg YWdyYXBoIChmbG9hdFtOXSBYKSA9PiAoe25hbWV9W05dIEMpCistICAgICAgICAgICA8CistICAg ICAgICAgICAgIHtuYW1lfVsxXSB3ZWlnaHQgPSB7d30KKy0gICAgICAgICAgID4KKy0gICAgICAg ICAgIHt7CistICAgICAgICAgICAgICBDID0gQ2FzdDx0bz17aXR5cGV9PihYKQorLSAgICAgICAg ICAgfX0KKy0gICAgICAgICAgICIiIgorLSAgICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJz ZV9tb2RlbCh0ZXh0X2dyYXBoKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JhcGgu Z3JhcGgubm9kZSksIDEpCistCisgCisgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAg dW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvcmVmZXJl bmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5IGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3Jf bWxfdGVzdC5weQoraW5kZXggM2IwNWRhMzAzLi4xMDA1OGY5ZTcgMTAwNjQ0CistLS0gYS9vbm54 L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvcmVm ZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5CitAQCAtMTEsNyArMTEsNiBAQCBmcm9tIG9zIGlt cG9ydCBnZXRlbnYKKyAKKyBpbXBvcnQgbnVtcHkgYXMgbnAgICMgdHlwZTogaWdub3JlCisgZnJv bSBudW1weS50ZXN0aW5nIGltcG9ydCBhc3NlcnRfYWxsY2xvc2UgICMgdHlwZTogaWdub3JlCist ZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9ubngK KyBmcm9tIG9ubnggaW1wb3J0IE9OTlhfTUwsIFRlbnNvclByb3RvLCBUeXBlUHJvdG8sIFZhbHVl SW5mb1Byb3RvCitAQCAtOTA3LDExOCArOTA2LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1 YXRvckFpT25ueE1sKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGNoZWNrX21vZGVsKG9u eCkKKyAgICAgICAgIHJldHVybiBvbngKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAor LSAgICAgICAgdHVwbGUoCistICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFi bGUoCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAg ICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLlNVTSBpZiBvcHNldDUgZWxzZSAi U1VNIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgW1swLjU3NjkyM10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlw ZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24u QVZFUkFHRSBpZiBvcHNldDUgZWxzZSAiQVZFUkFHRSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4yODg0NjJdLCBb MC4yODg0NjJdLCBbMC4yODg0NjJdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAg ICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLk1JTiBpZiBvcHNldDUgZWxzZSAiTUlOIiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgW1swLjA3NjkyM10sIFswLjA3NjkyM10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9h dDMyCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uTUFYIGlmIG9w c2V0NSBlbHNlICJNQVgiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMC41 XSwgWzAuNV0sIFswLjVdXSwgZHR5cGU9bnAuZmxvYXQzMiksCistICAgICAgICAgICAgICAgICAg ICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAg KQorLSAgICAgICAgICAgICAgICBmb3Igb3BzZXQ1IGluIFtUcnVlLCBGYWxzZV0KKy0gICAgICAg ICAgICApCistICAgICAgICApCistICAgICkKKy0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05O WF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwiKQorLSAgICBk ZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl9hZ2dyZWdhdGlvbl9mdW5jdGlvbnMoCist ICAgICAgICBzZWxmLCBhZ2dyZWdhdGVfZnVuY3Rpb24sIGV4cGVjdGVkX3Jlc3VsdCwgb3BzZXQ1 CistICAgICk6CistICAgICAgICB4ID0gbnAuYXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0 eXBlKG5wLmZsb2F0MzIpIC8gMTAgLSAwLjUKKy0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCist ICAgICAgICAgICAgc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKKy0g ICAgICAgICAgICBpZiBvcHNldDUKKy0gICAgICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3Ry ZWVfZW5zZW1ibGVfcmVncmVzc29yCistICAgICAgICApCistICAgICAgICBtb2RlbF9wcm90byA9 IG1vZGVsX2ZhY3RvcnkoCistICAgICAgICAgICAgYWdncmVnYXRlX2Z1bmN0aW9uLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90bykKKy0g ICAgICAgIChhY3R1YWwsKSA9IHNlc3MucnVuKE5vbmUsIHsiWCI6IHh9KQorLSAgICAgICAgYXNz ZXJ0X2FsbGNsb3NlKGV4cGVjdGVkX3Jlc3VsdCwgYWN0dWFsLCBhdG9sPTFlLTYpCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIHR1cGxlKAorLSAgICAgICAgICAgIGl0 ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAorLSAgICAgICAgICAgICAgICAoCistICAgICAg ICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5MRVEgaWYgb3Bz ZXQ1IGVsc2UgIkJSQU5DSF9MRVEiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5 KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzAuNTc2OTIzXSwgWzAuNTc2OTIzXSwg WzAuNTc2OTIzXV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgTW9k ZS5HVCBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0dUIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5MVCBp ZiBvcHNldDUgZWxzZSAiQlJBTkNIX0xUIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5h cnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3NjkyM10sIFswLjU3Njky M10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAg IE1vZGUuR1RFIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfR1RFIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIp LAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgTW9k ZS5FUSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0VRIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBucC5hcnJheShbWzEuMF0sIFsxLjBdLCBbMS4wXV0sIGR0eXBlPW5wLmZsb2F0MzIpLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5ORVEg aWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9ORVEiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5w LmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzAuMDc2OTIzXSwgWzAuMDc2 OTIzXSwgWzAuMDc2OTIzXV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAg ICAgICAgICksCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICAgICAgZm9yIG9wc2V0 NSBpbiBbVHJ1ZSwgRmFsc2VdCistICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICApCist ICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGls ZWQgd2l0aCBhaS5vbm54Lm1sIikKKy0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNz b3JfcnVsZShzZWxmLCBydWxlLCBleHBlY3RlZCwgb3BzZXQ1KToKKy0gICAgICAgIHggPSBucC5h cmFuZ2UoOSkucmVzaGFwZSgoLTEsIDMpKS5hc3R5cGUobnAuZmxvYXQzMikgLyAxMCAtIDAuNQor LSAgICAgICAgbW9kZWxfZmFjdG9yeSA9ICgKKy0gICAgICAgICAgICBzZWxmLl9nZXRfdGVzdF90 cmVlX2Vuc2VtYmxlX29wc2V0X2xhdGVzdAorLSAgICAgICAgICAgIGlmIG9wc2V0NQorLSAgICAg ICAgICAgIGVsc2Ugc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3IKKy0gICAg ICAgICkKKy0gICAgICAgIGFnZ3JlZ2F0ZV9mdW5jdGlvbiA9IEFnZ3JlZ2F0aW9uRnVuY3Rpb24u U1VNIGlmIG9wc2V0NSBlbHNlICJTVU0iCistCistICAgICAgICBtb2RlbF9wcm90byA9IG1vZGVs X2ZhY3RvcnkoYWdncmVnYXRlX2Z1bmN0aW9uLCBydWxlKQorLSAgICAgICAgc2VzcyA9IFJlZmVy ZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90bykKKy0gICAgICAgIChhY3R1YWwsKSA9IHNlc3MucnVu KE5vbmUsIHsiWCI6IHh9KQorLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBhY3R1 YWwsIGF0b2w9MWUtNikKKy0KKyAgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVh c29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwiKQorICAgICBkZWYgdGVzdF90 cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl8yX3RhcmdldHNfb3BzZXQzKHNlbGYpOgorICAgICAgICAg WCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUs IE5vbmVdKQorQEAgLTExMzIsMjMgKzEwMTksNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVh dG9yQWlPbm54TWwodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgYXNzZXJ0X2FsbGNsb3Nl KGV4cGVjdGVkLCBnb3RbMF0sIGF0b2w9MWUtNikKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm9w X3R5cGU9VHJlZUVuc2VtYmxlUmVncmVzc29yIiwgc3RyKHNlc3MucnRfbm9kZXNfWzBdKSkKKyAK Ky0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21w aWxlZCB3aXRoIGFpLm9ubngubWwiKQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBbKGlucHV0X3R5cGUsKSBmb3IgaW5wdXRfdHlwZSBpbiBbVGVuc29yUHJvdG8uRkxPQVQs IFRlbnNvclByb3RvLkRPVUJMRV1dCistICAgICkKKy0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJs ZV9taXNzaW5nX29wc2V0NShzZWxmLCBpbnB1dF90eXBlKToKKy0gICAgICAgIG1vZGVsID0gc2Vs Zi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QoCistICAgICAgICAgICAgQWdn cmVnYXRpb25GdW5jdGlvbi5TVU0sIE1vZGUuTEVRLCBUcnVlLCBpbnB1dF90eXBlCistICAgICAg ICApCistICAgICAgICBucF9kdHlwZSA9IG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9k dHlwZShpbnB1dF90eXBlKQorLSAgICAgICAgeCA9IG5wLmFyYW5nZSg5KS5yZXNoYXBlKCgtMSwg MykpLmFzdHlwZShucF9kdHlwZSkgLyAxMCAtIDAuNQorLSAgICAgICAgeFsyLCAwXSA9IDUKKy0g ICAgICAgIHhbMSwgOl0gPSBucC5uYW4KKy0gICAgICAgIGV4cGVjdGVkID0gbnAuYXJyYXkoW1sx MDAwMDEuMF0sIFsxMDAxMDAuMF0sIFsxMDAxMDAuMF1dLCBkdHlwZT1ucF9kdHlwZSkKKy0gICAg ICAgIHNlc3Npb24gPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICAoYWN0dWFs LCkgPSBzZXNzaW9uLnJ1bihOb25lLCB7IlgiOiB4fSkKKy0gICAgICAgIGFzc2VydF9hbGxjbG9z ZShleHBlY3RlZCwgYWN0dWFsLCBhdG9sPTFlLTYpCistCisgICAgIEB1bml0dGVzdC5za2lwSWYo bm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikK KyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfbWlzc2luZ19vcHNldDVfZmxv YXQxNihzZWxmKToKKyAgICAgICAgIG1vZGVsID0gc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJs ZV9vcHNldF9sYXRlc3QoCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0 b3JfdGVzdC5weSBiL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKK2luZGV4 IGM4MDVlMWQ3Yi4uNDJhMmZiZWFlIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5jZV9l dmFsdWF0b3JfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVz dC5weQorQEAgLTI0LDcgKzI0LDYgQEAgZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CisgZnJv bSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCisgCisgaW1wb3J0IG51bXB5IGFzIG5wCistaW1wb3J0 IHBhcmFtZXRlcml6ZWQKKyBpbXBvcnQgdmVyc2lvbl91dGlscworIGZyb20gbnVtcHkudGVzdGlu ZyBpbXBvcnQgYXNzZXJ0X2FsbGNsb3NlLCBhc3NlcnRfYWxtb3N0X2VxdWFsCisgCitAQCAtMjk2 MiwxNjMgKzI5NjEsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRl c3RDYXNlKToKKyAgICAgICAgIG9ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9p bXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIG9wc2V0KV0pCisgICAgICAgICByZXR1cm4gb25ueF9t b2RlbAorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAg ICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZU1pbiIsCistICAgICAgICAgICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFtbbnAubmFuLCBucC5uYW5dLCBbMTQuNDIyNzA2LCAxOC44MDUyN11dLCBk dHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBucC5hcnJheShbWzIsIDE1XSwgWzEwLCA0XV0sIGR0eXBlPW5wLmludDY0 KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMMSIsCistICAgICAgICAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFtbMi4yMzY3MDUzLCAyLjM1MTY2MTJdLCBbNC4wNzYyOTIs IDQuMjk3MDYzNF1dLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9h dDMyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoW1sxOCwgNl0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAg ICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAo CistICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTDIiLAorLSAgICAgICAgICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBbWzEuODAxNTUsIDEuODE2OTk0OF0sIFsyLjk5MjgwNzYsIDMuMTIwNTg4M11d LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXko W1sxMSwgMThdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICAgICAgIlJlZHVjZUxvZ1N1bSIsCistICAgICAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFtbMC45NDk3ODQ4LCAxLjE4NzI2NDNdLCBbMS42NzY0MTc1LCAxLjcwNzU5XV0sCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzYsIDE4 XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAg ICAgICJSZWR1Y2VMb2dTdW1FeHAiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBb WzEuNjAwNTk3MywgMS43NDQ1OTM1XSwgWzIuNTYxNjIyOSwgMi42NTM5Nzk1XV0sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzEzLCA2XSwg WzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAg ICJSZWR1Y2VNYXgiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuNDIxNzEw OCwgMS41MDY5NTM2XSwgWzIuNDUzODI2LCAyLjUwNDE3ODNdXSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTMsIDExXSwgWzEzLCAxMV1d LCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAiUmVkdWNl TWVhbiIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAg bnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4zOTI0NzkwMywgMC43 ODQ5NzYzNl0sIFsyLjAzODE0NiwgMi4xNDg1MzE3XV0sCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBl PW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICks CistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VTdW1TcXVh cmUiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5w LmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzMuMjQ1NTgyOCwgMy4zMDE0 Njk2XSwgWzguOTU2ODk2LCA5LjczODA3MDVdXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAg ICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTEsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5w LmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VQcm9kIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tucC5uYW4sIG5wLm5hbl0sIFsxNC40MjI3 MDYsIDE4LjgwNTI3XV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAgICAgICAg ICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMiwgMTVdLCBbMTMsIDZd XSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsxNywgMThdLAorLSAgICAg ICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X29wX3JlZHVjZShzZWxmLCByZWR1Y2Vfb3BfZXhw ZWN0ZWQsIG9wc2V0OiBpbnQpOgorLSAgICAgICAgcmVkdWNlX29wLCBleHBlY3RlZCA9IHJlZHVj ZV9vcF9leHBlY3RlZAorLSAgICAgICAgWCA9IG5wLmFyYW5nZSg4KS5yZXNoYXBlKCgtMSwgNCkp LmFzdHlwZShucC5mbG9hdDMyKQorLQorLSAgICAgICAgcmVzdWx0cyA9IHt9CistCistICAgICAg ICBtb2RlbCA9IHNlbGYuX2NkaXN0X21vZGVsKG9wc2V0LCByZWR1Y2Vfb3ApCistICAgICAgICBz ZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZ290ID0gc2Vzcy5ydW4o Tm9uZSwgeyJpbnB1dCI6IFh9KQorLSAgICAgICAgcmVzdWx0c1sicmVmIiwgb3BzZXRdID0gZ290 CistCistICAgICAgICBjbCA9IFsKKy0gICAgICAgICAgICBuCistICAgICAgICAgICAgZm9yIG4g aW4gc2Vzcy5ydF9ub2Rlc19bMF0uYm9keS5ydF9ub2Rlc18KKy0gICAgICAgICAgICBpZiBuLl9f Y2xhc3NfXy5fX25hbWVfXy5zdGFydHN3aXRoKHJlZHVjZV9vcCkKKy0gICAgICAgIF0KKy0gICAg ICAgIHNjaGVtYSA9IGNsWzBdLl9zY2hlbWEKKy0gICAgICAgIG5ld19jbCA9IHR5cGUocmVkdWNl X29wLCAoY2xbMF0uX19jbGFzc19fLCksIHsib3Bfc2NoZW1hIjogc2NoZW1hfSkKKy0gICAgICAg IHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwsIG5ld19vcHM9W25ld19jbF0pCistICAg ICAgICBnb3QgPSBzZXNzLnJ1bihOb25lLCB7ImlucHV0IjogWH0pCistICAgICAgICByZXN1bHRz WyJyZWZfY2wiLCBvcHNldF0gPSBnb3QKKy0KKy0gICAgICAgIGJhc2VsaW5lID0gImNvbnN0YW50 IgorLSAgICAgICAgZm9yIGssIHYgaW4gcmVzdWx0cy5pdGVtcygpOgorLSAgICAgICAgICAgIGZv ciBhLCBiIGluIHppcChyZXZlcnNlZChleHBlY3RlZCksIHJldmVyc2VkKHYpKToKKy0gICAgICAg ICAgICAgICAgaWYgYS5zaGFwZSAhPSBiLnNoYXBlOgorLSAgICAgICAgICAgICAgICAgICAgcmFp c2UgQXNzZXJ0aW9uRXJyb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgZiJTaGFwZSBtaXNt YXRjaCBmb3Ige3JlZHVjZV9vcCFyfSwge2Jhc2VsaW5lfTp7YS5zaGFwZX0gIT0ge2t9OntiLnNo YXBlfS4iCistICAgICAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgICAgIGRpZmYgPSBu cC5hYnMoYSAtIGIpLm1heCgpCistICAgICAgICAgICAgICAgIGlmIGRpZmYgPiAxZS02OgorLSAg ICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCistICAgICAgICAgICAgICAg ICAgICAgICAgZiJEaXNjcmVwYW5jaWVzIChtYXg9e2RpZmZ9KSBmb3Ige3JlZHVjZV9vcCFyfSwg e2Jhc2VsaW5lfSAhPSB7a31cbnthfVxuIT1cbntifSIKKy0gICAgICAgICAgICAgICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBb CistICAgICAgICAgICAgKDEzLCksCistICAgICAgICAgICAgKDE3LCksCistICAgICAgICAgICAg KDE4LCksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfbXZuKHNlbGYsIG9wc2V0 OiBpbnQsIHJlZl9vcHNldDogaW50ID0gMTMpOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmUsIE5vbmVd KQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5G TE9BVCwgW05vbmUsIE5vbmUsIE5vbmUsIE5vbmVdKQorLSAgICAgICAgbm9kZXMgPSBbCistICAg ICAgICAgICAgbWFrZV9ub2RlKCJNZWFuVmFyaWFuY2VOb3JtYWxpemF0aW9uIiwgWyJYIl0sIFsi WSJdKSwKKy0gICAgICAgIF0KKy0gICAgICAgIGdyYXBoID0gbWFrZV9ncmFwaChub2RlcywgImci LCBbWF0sIFtZXSkKKy0gICAgICAgIHggPSBucC5yYW5kb20ucmFuZCgzLCAzLCAzLCAxKS5hc3R5 cGUobnAuZmxvYXQzMikKKy0KKy0gICAgICAgIG9ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBo LCBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIG9wc2V0KV0pCistICAgICAgICByZWYg PSBSZWZlcmVuY2VFdmFsdWF0b3Iob25ueF9tb2RlbCkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4o Tm9uZSwgeyJYIjogeH0pWzBdCistCistICAgICAgICByZWZfb25ueF9tb2RlbCA9IG1ha2VfbW9k ZWwoZ3JhcGgsIG9wc2V0X2ltcG9ydHM9W21ha2Vfb3BzZXRpZCgiIiwgcmVmX29wc2V0KV0pCist ICAgICAgICByZWZfZXhwZWN0ZWQgPSBSZWZlcmVuY2VFdmFsdWF0b3IocmVmX29ubnhfbW9kZWwp CistICAgICAgICBleHBlY3RlZCA9IHJlZl9leHBlY3RlZC5ydW4oTm9uZSwgeyJYIjogeH0pWzBd CistCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLnNoYXBlLCBnb3Quc2hhcGUp CistICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZXhwZWN0ZWQsIGdvdCkKKy0KKyAgICAgZGVmIHRl c3RfY29uY2F0X2luX2FfZnVuY3Rpb24oc2VsZik6CisgICAgICAgICBkZWYgY3JlYXRlX21vZGVs KCk6CisgICAgICAgICAgICAgbm9kZXMgPSBbXQorQEAgLTM4MDAsMjExICszNjQyLDYgQEAgY2xh c3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBn b3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorICAgICAgICAgYXNzZXJ0X2FsbGNsb3Nl KGV4cGVjdGVkLCBnb3RbMF0pCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgNCAq IG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdl KDEsIDcpLnJlc2hhcGUoMywgMiksCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAyKSks CistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAg ICAgIFtbMCwgNCwgNCwgNl0sIFs1LCA3LCA2LCA3XSwgWzYsIDcsIDcsIDddXSwKKy0gICAgICAg ICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgNCAqIG5wLmFyYW5nZSgx MikucmVzaGFwZSgzLCA0KSwKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hh cGUoMywgMiksCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDIpKSwKKy0gICAgICAgICAg ICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgW1sxLCA1LCA1 LCA3XSwgWzYsIDgsIDcsIDhdLCBbNywgOCwgOCwgOF1dLAorLSAgICAgICAgICAgICksCistICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMjQpLnJlc2hhcGUoMywgOCks CistICAgICAgICAgICAgICAgIFtbMC4yNSwgMC41LCAxXSwgWzAuMjUsIDAuNSwgMV0sIFswLjI1 LCAwLjUsIDFdXSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDMpKSwKKy0gICAgICAg ICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAgICAgWzAsIDQsIDgsIDYsIDgsIDEwLCA2LCA3XSwKKy0gICAgICAgICAg ICAgICAgICAgIFszMiwgMzYsIDQwLCAyMiwgMjQsIDI2LCAxNCwgMTVdLAorLSAgICAgICAgICAg ICAgICAgICAgWzY0LCA2OCwgNzIsIDM4LCA0MCwgNDIsIDIyLCAyM10sCistICAgICAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAg IG5wLmFyYW5nZSg2KSwKKy0gICAgICAgICAgICAgICAgWzAuMjUsIDAuNV0sCistICAgICAgICAg ICAgICAgIFstMSwgLTJdLAorLSAgICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICAz LAorLSAgICAgICAgICAgICAgICBbLTEsIDMsIDcsIDQsIDYsIDhdLAorLSAgICAgICAgICAgICks CistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCg5LCAxMikpLAorLSAg ICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSksCistICAgICAgICAgICAgICAgIG5wLnplcm9z KCgzLCA0KSksCistICAgICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgIDMsCistICAg ICAgICAgICAgICAgIE5vbmUsICAjIEJsb2NrZWQgcXVhbnRpemF0aW9uIGlzIGRlZmluZWQgZm9y IDEtRCBibG9ja3Mgb25seQorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICBucC5vbmVzKCgzLCA0LCA1LCA2KSksCistICAgICAgICAgICAgICAgIG5wLm9u ZXMoKDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKKy0gICAgICAg ICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgTm9uZSwg ICMgU2NhbGUgYW5kIFpQIG11c3QgaGF2ZSB0aGUgc2FtZSByYW5rIGFzIHRoZSBpbnB1dAorLSAg ICAgICAgICAgICksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfYmxvY2tlZF9x dWFudGl6ZV9saW5lYXIoCistICAgICAgICBzZWxmLCB4LCBzY2FsZSwgemVyb19wb2ludCwgYXhp cywgYmxvY2tfc2l6ZSwgZXhwZWN0ZWQKKy0gICAgKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIFkg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQor LQorLSAgICAgICAgc2NhbGVfZGF0YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlwZT1ucC5mbG9hdDMy KQorLSAgICAgICAgenBfZGF0YSA9IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0eXBlPW5wLmludDgp CistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJRdWFudGl6ZUxpbmVhciIsCistICAgICAgICAgICAgICAg ICAgICAgICAgWyJYIiwgInNjYWxlIiwgInplcm8iXSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBbIlkiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCistICAgICAgICAg ICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAorLSAgICAgICAgICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAgICAg ICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAg ICAgICAgInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNjYWxl X2RhdGEKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigiemVybyIsIFRlbnNvclByb3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpwX2Rh dGEpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0g ICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0KKy0gICAgICAgIGRhdGEg PSBucC5hcnJheSh4LCBkdHlwZT1ucC5mbG9hdDMyKQorLQorLSAgICAgICAgaWYgZXhwZWN0ZWQg aXMgbm90IE5vbmU6CistICAgICAgICAgICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwg ZHR5cGU9bnAuaW50OCkKKy0gICAgICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRh dGF9KQorLSAgICAgICAgICAgIGFzc2VydF9hbGxjbG9zZShleHBlY3RlZCwgZ290WzBdKQorLSAg ICAgICAgZWxzZToKKy0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy b3IpOgorLSAgICAgICAgICAgICAgICByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAg ICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwK Ky0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCistICAgICAg ICAgICAgICAgIG5wLnplcm9zKCgzLCAyKSksCistICAgICAgICAgICAgICAgIDEsCistICAgICAg ICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIFtbMCwgMSwgNCwgNl0sIFsxMiwgMTUsIDI0 LCAyOF0sIFs0MCwgNDUsIDYwLCA2Nl1dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCistICAgICAg ICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAorLSAgICAgICAgICAgICAg ICBucC5vbmVzKCgzLCAyKSksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAg IDIsCistICAgICAgICAgICAgICAgIFtbLTEsIDAsIDIsIDRdLCBbOSwgMTIsIDIwLCAyNF0sIFsz NSwgNDAsIDU0LCA2MF1dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICBucC5kc3RhY2soW25wLmFyYW5nZSg0KS5yZXNoYXBlKDIsIDIpXSAqIDQpLAor LSAgICAgICAgICAgICAgICBucC5kc3RhY2soW25wLmFycmF5KFtbMSwgMV0sIFsyLCAzXV0pLCBu cC5hcnJheShbWzQsIDVdLCBbNiwgN11dKV0pLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygo MiwgMiwgMikpLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICAyLAorLSAg ICAgICAgICAgICAgICBbW1swLCAwLCAwLCAwXSwgWzEsIDEsIDUsIDVdXSwgW1s0LCA0LCAxMiwg MTJdLCBbOSwgOSwgMjEsIDIxXV1dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAor LSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMjQpLnJlc2hhcGUoMywgOCksCistICAgICAgICAg ICAgICAgIFtbMiwgMSwgM10sIFsyLCAxLCAzXSwgWzIsIDEsIDNdXSwKKy0gICAgICAgICAgICAg ICAgbnAuemVyb3MoKDMsIDMpKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAg ICAgMywKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgWzAsIDIsIDQs IDMsIDQsIDUsIDE4LCAyMV0sCistICAgICAgICAgICAgICAgICAgICBbMTYsIDE4LCAyMCwgMTEs IDEyLCAxMywgNDIsIDQ1XSwKKy0gICAgICAgICAgICAgICAgICAgIFszMiwgMzQsIDM2LCAxOSwg MjAsIDIxLCA2NiwgNjldLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICksCist ICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoCistICAgICAgICAgICAg ICAgICAgICA2LAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBbMiwgM10s CistICAgICAgICAgICAgICAgIFsxLCAyXSwKKy0gICAgICAgICAgICAgICAgMCwKKy0gICAgICAg ICAgICAgICAgMywKKy0gICAgICAgICAgICAgICAgWy0yLCAwLCAyLCAzLCA2LCA5XSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbnAub25lcygoOSwg MTIpKSwKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkpLAorLSAgICAgICAgICAgICAg ICBucC56ZXJvcygoMywgNCkpLAorLSAgICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAg ICAzLAorLSAgICAgICAgICAgICAgICBOb25lLCAgIyBCbG9ja2VkIHF1YW50aXphdGlvbiBpcyBk ZWZpbmVkIGZvciAxLUQgYmxvY2tzIG9ubHkKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCwgNSwgNikpLAorLSAgICAgICAgICAg ICAgICBucC5vbmVzKCgzLCA0KSksCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSks CistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAg ICAgIE5vbmUsICAjIFNjYWxlIGFuZCBaUCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFuayBhcyB0aGUg aW5wdXQKKy0gICAgICAgICAgICApLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0 X2Jsb2NrZWRfZGVxdWFudGl6ZV9saW5lYXIoCistICAgICAgICBzZWxmLCB4LCBzY2FsZSwgemVy b19wb2ludCwgYXhpcywgYmxvY2tfc2l6ZSwgZXhwZWN0ZWQKKy0gICAgKToKKy0gICAgICAgIFgg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQor LSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9B VCwgW05vbmVdKQorLQorLSAgICAgICAgc2NhbGVfZGF0YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlw ZT1ucC5mbG9hdDMyKQorLSAgICAgICAgenBfZGF0YSA9IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0 eXBlPW5wLmludDgpCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAg bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJEZXF1YW50aXplTGluZWFyIiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBbIlgiLCAic2NhbGUiLCAiemVybyJdLAorLSAgICAgICAg ICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM9YXhp cywKKy0gICAgICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCistICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAg ICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAg ICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAg ICAgICAgICAgICAgICAgICAgICAic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfZGF0 YS5zaGFwZSwgc2NhbGVfZGF0YQorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKCJ6ZXJvIiwgVGVuc29yUHJvdG8uSU5UOCwgc2NhbGVfZGF0 YS5zaGFwZSwgenBfZGF0YSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgKQor LSAgICAgICAgKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAg ICAgICAgZGF0YSA9IG5wLmFycmF5KHgsIGR0eXBlPW5wLmludDgpCistCistICAgICAgICBpZiBl eHBlY3RlZCBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICBleHBlY3RlZCA9IG5wLmFycmF5KGV4 cGVjdGVkLCBkdHlwZT1ucC5mbG9hdDMyKQorLSAgICAgICAgICAgIGdvdCA9IHJlZi5ydW4oTm9u ZSwgeyJYIjogZGF0YX0pCistICAgICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBn b3RbMF0pCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz ZXMoVmFsdWVFcnJvcik6CistICAgICAgICAgICAgICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0 YX0pCistCisgICAgIGRlZiB0ZXN0X2xybihzZWxmKToKKyAgICAgICAgIGRlZiBfZXhwZWN0ZWQo eCwgYWxwaGEsIGJldGEsIGJpYXMsIHNpemUpOgorICAgICAgICAgICAgIHNxdWFyZV9zdW0gPSBu cC56ZXJvcygoNSwgNSwgNSwgNSkpLmFzdHlwZShucC5mbG9hdDMyKQorQEAgLTQxODksNTIgKzM4 MjYsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToK KyAgICAgICAgIGdvdCA9IF9jb252X2ltcGxlbWVudGF0aW9uX2ltMmNvbCgqKmZlZWRzLCAqKmt3 YXJncykKKyAgICAgICAgIGFzc2VydF9hbGxjbG9zZShleHBlY3RlZCwgZ290KQorIAorLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAg ICAgICAoIlJlZHVjZVN1bSIsKSwKKy0gICAgICAgICAgICAoIlJlZHVjZUwxIiwpLAorLSAgICAg ICAgICAgICgiUmVkdWNlTDIiLCksCistICAgICAgICAgICAgKCJSZWR1Y2VNaW4iLCksCistICAg ICAgICAgICAgKCJSZWR1Y2VNYXgiLCksCistICAgICAgICAgICAgKCJSZWR1Y2VQcm9kIiwpLAor LSAgICAgICAgICAgICgiUmVkdWNlU3VtU3F1YXJlIiwpLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X3JlZHVjZV9vcF9ub19heGlzKHNlbGYsIG9wKToKKy0gICAgICAgIFggPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCistICAg ICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBO b25lKQorLSAgICAgICAgZGF0YSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKCgxLCAzLCAyKSkuYXN0 eXBlKG5wLmZsb2F0MzIpCistICAgICAgICBub2RlcyA9IFttYWtlX25vZGUob3AsIFsiWCJdLCBb IlkiXSwga2VlcGRpbXM9MCldCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFw aChub2RlcywgImciLCBbWF0sIFtZXSkpCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWwpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAg ICAgICAgciA9IGdvdFswXQorLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIG5wLm5k YXJyYXkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuc2hhcGUsICgpKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChbKDEsKSwgKDIsKSwgKDMsKSwgKDQs KSwgKDUsKSwgKDYsKV0pCistICAgIGRlZiB0ZXN0X3BhZChzZWxmLCBkaW0pOgorLSAgICAgICAg WCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkK Ky0gICAgICAgIFAgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJQIiwgVGVuc29yUHJvdG8uSU5U NjQsIE5vbmUpCistICAgICAgICBWID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiViIsIFRlbnNv clByb3RvLkZMT0FULCBOb25lKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKy0gICAgICAgIHZhbHVlID0gbnAuYXJyYXko Wy01XSwgZHR5cGU9bnAuZmxvYXQzMikKKy0KKy0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlBh ZCIsIGlucHV0cz1bIlgiLCAiUCIsICJWIl0sIG91dHB1dHM9WyJZIl0sIG1vZGU9ImNvbnN0YW50 IikKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBb WCwgUCwgVl0sIFtZXSkpCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwp CistICAgICAgICB4ID0gbnAuYXJyYXkoWzFdLCBkdHlwZT1ucC5mbG9hdDMyKS5yZXNoYXBlKCgx LCkgKiBkaW0pCistCistICAgICAgICBwID0gbnAuYXJyYXkoWzEsIDFdICogZGltLCBkdHlwZT1u cC5pbnQ2NCkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogeCwgIlAiOiBwLCAi ViI6IHZhbHVlfSlbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LnNoYXBlLCAoMywp ICogZGltKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QuZHR5cGUsIG5wLmZsb2F0MzIp CistCistICAgICAgICBwID0gbnAucmVwZWF0KFs3LCAzXSwgZGltKS5hc3R5cGUobnAuaW50NjQp CistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1 ZX0pWzBdCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgKDExLCkgKiBkaW0p CistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5kdHlwZSwgbnAuZmxvYXQzMikKKy0KKyAg ICAgZGVmIHRlc3RfY29uc3RhbnRfb2Zfc2hhcGUoc2VsZik6CisgICAgICAgICBYID0gbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQorICAgICAgICAg WSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkK K0BAIC01MzQ1LDEyNCArNDkzNiw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5p dHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgLTEsIC0xKToKKyAg ICAgICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZXhwZWN0ZWRbaV0sIGdvdFtpXSkKKyAKKy0gICAg QHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAg ICAgICAgKFsiYWJjIiwgImRlZiJdLCBbIi5jb20iLCAiLm5ldCJdLCBbImFiYy5jb20iLCAiZGVm Lm5ldCJdLCAoMiwpKSwKKy0gICAgICAgICAgICAoWyJjYXQiLCAiZG9nIiwgInNuYWtlIl0sIFsi cyJdLCBbImNhdHMiLCAiZG9ncyIsICJzbmFrZXMiXSwgKDMsKSksCistICAgICAgICAgICAgKCJj YXQiLCAicyIsICJjYXRzIiwgKCkpLAorLSAgICAgICAgICAgIChbImEiLCAiw58iLCAieSJdLCBb ImEiLCAiw58iLCAieSJdLCBbImFhIiwgIsOfw58iLCAieXkiXSwgKDMsKSksCistICAgICAgICBd CistICAgICkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nX2NvbmNhdChzZWxmLCBhLCBiLCBleHBlY3Rl ZCwgZXhwZWN0ZWRfc2hhcGUpOgorLSAgICAgICAgQSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IkEiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCistICAgICAgICBCID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiQiIsIFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKKy0gICAgICAgIFkgPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQorLSAg ICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgiU3RyaW5nQ29uY2F0IiwgaW5wdXRzPVsiQSIsICJCIl0s IG91dHB1dHM9WyJZIl0pCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChb bm9kZV0sICJnIiwgW0EsIEJdLCBbWV0pKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVh dG9yKG1vZGVsKQorLSAgICAgICAgcmVzdWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJBIjogbnAu YXJyYXkoYSksICJCIjogbnAuYXJyYXkoYil9KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRf YXJyYXlfZXF1YWwocmVzdWx0LCBleHBlY3RlZCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVz dWx0LmR0eXBlLmtpbmQsIHsiTyIsICJVIn0pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl c3VsdC5zaGFwZSwgZXhwZWN0ZWRfc2hhcGUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAg ICAgICAgWyIxLDIsMyIsICI0LDUsNiJdLAorLSAgICAgICAgICAgICAgICAiLCIsCistICAgICAg ICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFtbIjEiLCAiMiIsICIzIl0sIFsiNCIs ICI1IiwgIjYiXV0sCistICAgICAgICAgICAgICAgIFszLCAzXSwKKy0gICAgICAgICAgICApLAor LSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyIxLCIsICI0LDYiLCAiIl0sCistICAg ICAgICAgICAgICAgICIsIiwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAg ICAgW1siMSIsICIiXSwgWyI0IiwgIjYiXSwgWyIiLCAiIl1dLAorLSAgICAgICAgICAgICAgICBb MiwgMiwgMV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgIFsiMSIsICI0LDYiLCAiNCw1LDYiXSwKKy0gICAgICAgICAgICAgICAgIiwiLAorLSAgICAg ICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICBbWyIxIiwgIiJdLCBbIjQiLCAiNiJdLCBb IjQiLCAiNSw2Il1dLAorLSAgICAgICAgICAgICAgICBbMSwgMiwgMl0sCistICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFtbIjEsIiwgIjQsNiIsICI0LDUs NiJdLCBbIjEsIiwgIjQsNiIsICI0LDUsNiJdXSwKKy0gICAgICAgICAgICAgICAgIiwiLAorLSAg ICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAg ICAgICBbWyIxIiwgIiIsICIiXSwgWyI0IiwgIjYiLCAiIl0sIFsiNCIsICI1IiwgIjYiXV0sCist ICAgICAgICAgICAgICAgICAgICBbWyIxIiwgIiIsICIiXSwgWyI0IiwgIjYiLCAiIl0sIFsiNCIs ICI1IiwgIjYiXV0sCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFtbMiwg MiwgM10sIFsyLCAyLCAzXV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgIFsiaGVsbG8gd29ybGQgISIsICIgIGhlbGxvICAgd29ybGQgISIsICIgaGVs bG8gd29ybGQgICAhICJdLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAg ICBOb25lLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBbImhlbGxv IiwgIndvcmxkIiwgIiEiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQi LCAiISJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCist ICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFszLCAzLCAzXSwKKy0gICAgICAg ICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyJoZWxsbyB3b3JsZCAh IiwgIiAgaGVsbG8gICB3b3JsZCAhIiwgIiBoZWxsbyB3b3JsZCAgICEgIl0sCistICAgICAgICAg ICAgICAgICIiLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0gICAgICAgICAg ICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAorLSAgICAgICAgICAgICAgICAgICAg WyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgICAgIFszLCAzLCAzXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgWyJvLW4tbi0teC0iLCAiby1uLS0tLW54Il0sCistICAgICAgICAgICAgICAg ICItIiwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgW1sibyIsICJu IiwgIm4iLCAiIiwgIngiLCAiIl0sIFsibyIsICJuIiwgIiIsICIiLCAiIiwgIm54Il1dLAorLSAg ICAgICAgICAgICAgICBbNiwgNl0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCist ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAiICIsCistICAgICAgICAgICAg ICAgIDIsCistICAgICAgICAgICAgICAgIG5wLmFycmF5KFtdKS5yZXNoYXBlKCgwLCAwKSksCist ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICksCistICAgICAgICBdCistICAgICkK Ky0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0KAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIHgs CistICAgICAgICBkZWxpbWl0ZXIsCistICAgICAgICBtYXhzcGxpdCwKKy0gICAgICAgIGV4cGVj dGVkX3NwbGl0LAorLSAgICAgICAgZXhwZWN0ZWRfbnVtX3NwbGl0cywKKy0gICAgKToKKy0gICAg ICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAo Tm9uZSkpCistICAgICAgICBTcGxpdHMgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTcGxpdHMi LCBUZW5zb3JQcm90by5TVFJJTkcsIChOb25lKSkKKy0gICAgICAgIE1heFNwbGl0cyA9IG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIk1heFNwbGl0cyIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSkp CistICAgICAgICBub2RlID0gbWFrZV9ub2RlKAorLSAgICAgICAgICAgICJTdHJpbmdTcGxpdCIs CistICAgICAgICAgICAgaW5wdXRzPVsiWCJdLAorLSAgICAgICAgICAgIG91dHB1dHM9WyJTcGxp dHMiLCAiTWF4U3BsaXRzIl0sCistICAgICAgICAgICAgZGVsaW1pdGVyPWRlbGltaXRlciwKKy0g ICAgICAgICAgICBtYXhzcGxpdD1tYXhzcGxpdCwKKy0gICAgICAgICkKKy0gICAgICAgIG1vZGVs ID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBbWF0sIFtTcGxpdHMsIE1heFNw bGl0c10pKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAg ICAgeCA9IG5wLmFycmF5KHgsIGR0eXBlPW9iamVjdCkKKy0gICAgICAgIHJlc3VsdCwgbnVtX3Nw bGl0cywgKl8gPSByZWYucnVuKE5vbmUsIHsiWCI6IHh9KQorLSAgICAgICAgbnAudGVzdGluZy5h c3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBucC5hcnJheShleHBlY3RlZF9zcGxpdCwgZHR5cGU9 b2JqZWN0KSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKAorLSAgICAg ICAgICAgIG51bV9zcGxpdHMsIG5wLmFycmF5KGV4cGVjdGVkX251bV9zcGxpdHMsIGR0eXBlPW5w LmludDY0KQorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9xbGluZWFyY29udl9pbnQ4KHNl bGYpOgorICAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgKKyAgICAgICAgICAgICAiUUxpbmVhck1h dE11bCIsCitAQCAtNTUzMyw0NyArNTAwNiw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0 b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIG5wLmFycmF5KFtbNDEsIC0xMiwg LTldLCBbMSwgLTc1LCAyMF1dLCBkdHlwZT1ucC5pbnQ4KSwgZ290WzBdCisgICAgICAgICApCisg CistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWwor LSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyJ3d3cuZ29vZ2xlLmNvbSIsICJ3d3cu ZmFjZWJvb2suY29tIiwgInd3dy5iYmMuY28udWsiXSwKKy0gICAgICAgICAgICAgICAgciJ3d3dc Lltcdy4tXStcLlxiY29tXGIiLAorLSAgICAgICAgICAgICAgICBbVHJ1ZSwgVHJ1ZSwgRmFsc2Vd LAorLSAgICAgICAgICAgICAgICAoMywpLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICBbWyJPbm54IiwgInRlbnNvcmZsb3ciLCAiTnVtcHkiXSwgWyJQ eXRvcmNoIiwgIkN5dGhvbiIsICJudW1iYSJdXSwKKy0gICAgICAgICAgICAgICAgciJeW0EtWl1b YS16XSokIiwKKy0gICAgICAgICAgICAgICAgW1tUcnVlLCBGYWxzZSwgVHJ1ZV0sIFtUcnVlLCBU cnVlLCBGYWxzZV1dLAorLSAgICAgICAgICAgICAgICAoMiwgMyksCistICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAg ICJhY2NvdW50QGdtYWlsLmNvbSIsCistICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBob3Rt YWlsLmNvbSIsCistICAgICAgICAgICAgICAgICAgICAibm90IGVtYWlsIiwKKy0gICAgICAgICAg ICAgICAgICAgICJhY2NvdW50MkB5YWhvby5jb20iLAorLSAgICAgICAgICAgICAgICBdLAorLSAg ICAgICAgICAgICAgICByIihcV3xeKVtcdy5cLV17MCwyNX1AKHlhaG9vfGdtYWlsKVwuY29tKFxX fCQpIiwKKy0gICAgICAgICAgICAgICAgW1RydWUsIEZhbHNlLCBGYWxzZSwgVHJ1ZV0sCistICAg ICAgICAgICAgICAgICg0LCksCistICAgICAgICAgICAgKSwKKy0gICAgICAgIF0KKy0gICAgKQor LSAgICBAdW5pdHRlc3Quc2tpcElmKAorLSAgICAgICAgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIs ICJnb29nbGUtcmUyIHBhY2thZ2UgaXMgbm90IGJ1aWx0IGZvciB3aW4zMiIKKy0gICAgKQorLSAg ICBkZWYgdGVzdF9yZWdleF9mdWxsX21hdGNoKHNlbGYsIHgsIHBhdHRlcm4sIGV4cGVjdGVkLCBl eHBlY3RlZF9zaGFwZSk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIs IFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uQk9PTCwgTm9uZSkKKy0gICAgICAgIG5vZGUgPSBtYWtl X25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwgaW5wdXRzPVsiWCJdLCBvdXRwdXRzPVsiWSJdLCBwYXR0 ZXJuPXBhdHRlcm4pCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9k ZV0sICJnIiwgW1hdLCBbWV0pKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1v ZGVsKQorLSAgICAgICAgcmVzdWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJyYXko eCl9KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBleHBl Y3RlZCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmR0eXBlLmtpbmQsICJiIikK Ky0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCBleHBlY3RlZF9zaGFwZSkK Ky0KKyAgICAgQHVuaXR0ZXN0LnNraXBJZigKKyAgICAgICAgIHN5cy5wbGF0Zm9ybSA9PSAid2lu MzIiLCAiZ29vZ2xlLXJlMiBwYWNrYWdlIGlzIG5vdCBidWlsdCBmb3Igd2luMzIiCisgICAgICkK K0BAIC01NTg2LDExOCArNTAxOCw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5p dHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy cm9yKToKKyAgICAgICAgICAgICByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFycmF5KFsieCJdKX0p CisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAg WworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDQsCist ICAgICAgICAgICAgICAgIFstMSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMCwgNDBdLAorLSAgICAg ICAgICAgICAgICBbMCwgMCwgMiwgMiwgNCwgMTAsIDIwLCAzMF0sCistICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQsIFstMSwgMCwgMS41LCAyLCAzLjMsIDEw LCA0MF0sIFswLCAwLCAyLCAyLCA0LCAxMCwgMzBdKSwKKy0gICAgICAgICAgICAoVGVuc29yUHJv dG8uVUlOVDQsIFswXSwgWzBdKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLklOVDQsCistICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIs IDMuMywgMTAsIDIwXSwKKy0gICAgICAgICAgICAgICAgWy0xNiwgLTE0LCAwLCAyLCAyLCA0LCAx MCwgMTRdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICBUZW5zb3JQcm90by5JTlQ0LAorLSAgICAgICAgICAgICAgICBbLTIwLCAtMTQuNSwgMCwgMS41 LCAyLCAzLjMsIDEwXSwKKy0gICAgICAgICAgICAgICAgWy0xNiwgLTE0LCAwLCAyLCAyLCA0LCAx MF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uSU5UNCwgWzBd LCBbMF0pLAorLSAgICAgICAgXQorLSAgICApCistICAgIEB1bml0dGVzdC5za2lwSWYoCistICAg ICAgICB2ZXJzaW9uX3V0aWxzLm51bXB5X29sZGVyX3RoYW4oIjEuMjIuMCIpLAorLSAgICAgICAg IlRoZSB0ZXN0IHJlcXVpcmVzIG51bXB5IDEuMjIuMCBvciBsYXRlciIsCistICAgICkKKy0gICAg ZGVmIHRlc3RfcXVhbnRpemVfbGluZWFyX2ludDQoc2VsZiwgcXR5cGUsIGRhdGEsIGV4cGVjdGVk KToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8u RkxPQVQsIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgK Ky0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50 IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBbInNjYWxlIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io InNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsxXSwgWzIuMF0pLAorLSAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIFsiemVybyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJvIiwgcXR5cGUsIFsxXSwgWzBdKSwKKy0gICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlF1YW50aXplTGlu ZWFyIiwgWyJYIiwgInNjYWxlIiwgInplcm8iXSwgWyJUIl0pLAorLSAgICAgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJEZXF1YW50aXplTGluZWFyIiwgWyJUIiwgInNjYWxlIl0sIFsiWSJdLCBh eGlzPTApLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAg ICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkK Ky0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0g ICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXNhcnJheShkYXRhKX0pCistICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoZXhwZWN0ZWQsIGdvdFswXSkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgK Ky0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCistICAg ICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfY2FzdF9pbnQ0X291dHB1dChzZWxmLCBjYXN0 X2Zyb20sIGNhc3RfdG8pOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgi LCBjYXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAg ICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89Y2FzdF90byksCistICAg ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAg W1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgKQor LSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZGF0YSA9 IG5wLmFycmF5KFswLCAxLCAyLjQsIDIuNiwgNCwgMTBdLCBkdHlwZT1ucC5mbG9hdDMyKQorLSAg ICAgICAgc2lnbmVkID0gY2FzdF90byA9PSBUZW5zb3JQcm90by5JTlQ0CistICAgICAgICBleHBl Y3RlZDEgPSBucC5hcnJheSgKKy0gICAgICAgICAgICBbc3ViYnl0ZS5mbG9hdDMyX3RvXzRiaXRf dW5wYWNrZWQoeCwgc2lnbmVkPXNpZ25lZCkgZm9yIHggaW4gZGF0YV0KKy0gICAgICAgICkKKy0g ICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistICAgICAgICBzZWxmLmFz c2VydEVxdWFsKGV4cGVjdGVkMS50b2xpc3QoKSwgZ290WzBdLnRvbGlzdCgpKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5w cm9kdWN0KAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5U NCksCistICAgICAgICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5GTE9BVDE2 KSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9jYXN0X2ludDRfaW5wdXQoc2Vs ZiwgY2FzdF9mcm9tLCBjYXN0X3RvKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJYIiwgY2FzdF9mcm9tLCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWSIsIGNhc3RfdG8sIFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2Rl bCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJZIl0sIHRvPVRlbnNvclBy b3RvLkZMT0FUKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAor LSAgICAgICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAg ICApCistICAgICAgICApCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwp CistICAgICAgICBkYXRhID0gbnAuYXJyYXkocmFuZ2UoNyksIGR0eXBlPW5wLmZsb2F0MzIpCist ICAgICAgICBjYXN0X2Zyb21fbnAgPSBjdXN0b20udWludDQgaWYgY2FzdF9mcm9tID09IFRlbnNv clByb3RvLlVJTlQ0IGVsc2UgY3VzdG9tLmludDQKKy0gICAgICAgIGV4cGVjdGVkMSA9IG5wLmFy cmF5KAorLSAgICAgICAgICAgIFtzdWJieXRlLmZsb2F0MzJfdG9fNGJpdF91bnBhY2tlZCh4LCBj YXN0X2Zyb21fbnApIGZvciB4IGluIGRhdGFdCistICAgICAgICApCistICAgICAgICBnb3QgPSBy ZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl Y3RlZDEudG9saXN0KCksIGdvdFswXS50b2xpc3QoKSkKKy0KKyAgICAgZGVmIHRlc3RfYV9mdW5j dGlvbl9jYWxsaW5nX2FfZnVuY3Rpb25fb25jZShzZWxmKToKKyAgICAgICAgIFggPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsiTiJdKQorICAgICAgICAg b3V0cHV0ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsIFsiTiJdKQorQEAgLTU5MzAsOTcgKzUyNTAsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZh bHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGZvciB2IGluIG9pbmYuZnVuY3Rp b25zXy52YWx1ZXMoKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgTXlS ZWZlcmVuY2VFdmFsdWF0b3IpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiVUlOVDQiLCAwLjg0KSwKKy0gICAg ICAgICAgICAoIklOVDQiLCAwLjg0KSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTiIsIDAu MjMpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOVVoiLCAwLjIzKSwKKy0gICAgICAgICAg ICAoIkZMT0FUOEU1TTIiLCAwLjg1KSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1TTJGTlVaIiwg MC44NSksCistICAgICAgICAgICAgKCJET1VCTEUiLCAwKSwKKy0gICAgICAgICAgICAoIkZMT0FU IiwgMCksCistICAgICAgICAgICAgKCJGTE9BVDE2IiwgMmUtMyksCistICAgICAgICAgICAgKCJC RkxPQVQxNiIsIDJlLTIpLAorLSAgICAgICAgXQorLSAgICApCistICAgIEBza2lwX2lmX25vX21s X2R0eXBlcworLSAgICBkZWYgdGVzdF9hZGRfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlLCBhdG9s KToKKy0gICAgICAgIGl0eXBlID0gZ2V0YXR0cihUZW5zb3JQcm90bywgc3R5cGUpCistICAgICAg ICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0s IFsiWGMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0 IiwgWyJZIl0sIFsiWWMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKCJBZGQiLCBbIlhjIiwgIlljIl0sIFsiWmMiXSksCistICAgICAgICAgICAgICAgICAgICBt YWtlX25vZGUoIkNhc3QiLCBbIlpjIl0sIFsiWiJdLCB0bz1UZW5zb3JQcm90by5GTE9BVCksCist ICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJuZCIsCistICAgICAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBU ZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKKy0gICAgICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUs IE5vbmUsIE5vbmVdKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oIloiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUs IE5vbmVdKV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtt YWtlX29wc2V0aWQoIiIsIDE4KV0sCistICAgICAgICAgICAgaXJfdmVyc2lvbj05LAorLSAgICAg ICAgKQorLQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsLCB2ZXJib3Nl PTApCistCistICAgICAgICB4ID0gKG5wLmFyYW5nZSgxOCkgLyA2KS5yZXNoYXBlKCgyLCAzLCAz KSkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAgICAgICB5ID0gKG5wLmFyYW5nZSgxOCkgLyA5KS5y ZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAgICAgICBmZWVkcyA9IGRp Y3QoWD14LCBZPXkpCistICAgICAgICBleHBlY3RlZCA9IHggKyB5CistICAgICAgICBnb3QgPSBy ZWYucnVuKE5vbmUsIGZlZWRzKVswXQorLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVk LCBnb3QsIGF0b2w9YXRvbCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5l eHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJET1VCTEUiLCksCistICAgICAgICAg ICAgKCJGTE9BVCIsKSwKKy0gICAgICAgICAgICAoIkZMT0FUMTYiLCksCistICAgICAgICAgICAg KCJCRkxPQVQxNiIsKSwKKy0gICAgICAgICAgICAjIENvbXBhcmlzb24gZmFpbHMgd2l0aCBtbF9k dHlwZXMKKy0gICAgICAgICAgICAjICgiRkxPQVQ4RTRNM0ZOIiwgKSwKKy0gICAgICAgICAgICAj ICgiRkxPQVQ4RTRNM0ZOVVoiLCApLAorLSAgICAgICAgICAgICMgKCJGTE9BVDhFNU0yIiwgKSwK Ky0gICAgICAgICAgICAjICgiRkxPQVQ4RTVNMkZOVVoiLCApLAorLSAgICAgICAgICAgICMgKCJJ TlQ0IiwgKSwKKy0gICAgICAgICAgICAjICgiVUlOVDQiLCApLAorLSAgICAgICAgXQorLSAgICAp CistICAgIEBza2lwX2lmX25vX21sX2R0eXBlcworLSAgICBkZWYgdGVzdF9jbXBfY3VzdG9tX2R0 eXBlKHNlbGYsIHN0eXBlKToKKy0gICAgICAgIGl0eXBlID0gZ2V0YXR0cihUZW5zb3JQcm90bywg c3R5cGUpCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAgICAgICAgICAg bWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0sIFsiWWMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJHcmVhdGVyIiwgWyJYYyIsICJZYyJdLCBbIlpjIl0pLAorLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJaYyJdLCBbIloiXSwgdG89VGVu c29yUHJvdG8uQk9PTCksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJu ZCIsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwK Ky0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQ cm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0g ICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIloiLCBUZW5zb3JQcm90by5G TE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIDE4KV0sCistICAgICAgICAgICAgaXJf dmVyc2lvbj05LAorLSAgICAgICAgKQorLQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVh dG9yKG1vZGVsKQorLQorLSAgICAgICAgeCA9IChucC5hcmFuZ2UoMTgpIC8gMTgpLnJlc2hhcGUo KDIsIDMsIDMpKS5hc3R5cGUobnAuZmxvYXQzMikKKy0gICAgICAgIHkgPSAoKG5wLmFyYW5nZSgx OCkgLSA5KSAvIDE4KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAg ICAgICBmZWVkcyA9IGRpY3QoWD14LCBZPXkpCistICAgICAgICBleHBlY3RlZCA9IHggPj0geQor LSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCBmZWVkcylbMF0KKy0gICAgICAgIGFzc2VydF9h bG1vc3RfZXF1YWwoZXhwZWN0ZWQsIGdvdCkKKy0KKyAgICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVt ZW50c180ZChzZWxmKToKKyAgICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKKyAgICAgICAgICAg ICBtYWtlX2dyYXBoKAorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9zY2hlbWFfdGVzdC5weSBiL29u bngvdGVzdC9zY2hlbWFfdGVzdC5weQoraW5kZXggYjQwZjkzM2Y3Li4xZDc0ZmNkYTQgMTAwNjQ0 CistLS0gYS9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9zY2hlbWFf dGVzdC5weQorQEAgLTcsOCArNyw2IEBAIGltcG9ydCBjb250ZXh0bGliCisgaW1wb3J0IHVuaXR0 ZXN0CisgZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCisgCistaW1wb3J0IHBhcmFtZXRlcml6 ZWQKKy0KKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBvcnQgZGVmcworIAorQEAgLTIxMSwz NCArMjA5LDYgQEAgY2xhc3MgVGVzdEZvcm1hbFBhcmFtZXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6 CisgICAgICAgICApCisgCisgCistY2xhc3MgVGVzdFR5cGVDb25zdHJhaW50UGFyYW0odW5pdHRl c3QuVGVzdENhc2UpOgorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgK Ky0gICAgICAgIFsKKy0gICAgICAgICAgICAoInNpbmdsZV90eXBlIiwgIlQiLCBbInRlbnNvcihm bG9hdCkiXSwgIlRlc3QgZGVzY3JpcHRpb24iKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAg ICAgICAgICJkb3VibGVfdHlwZXMiLAorLSAgICAgICAgICAgICAgICAiVCIsCistICAgICAgICAg ICAgICAgIFsidGVuc29yKGZsb2F0KSIsICJ0ZW5zb3IoaW50NjQpIl0sCistICAgICAgICAgICAg ICAgICJUZXN0IGRlc2NyaXB0aW9uIiwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgi dHVwbGUiLCAiVCIsICgidGVuc29yKGZsb2F0KSIsICJ0ZW5zb3IoaW50NjQpIiksICJUZXN0IGRl c2NyaXB0aW9uIiksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfaW5pdCgKKy0g ICAgICAgIHNlbGYsCistICAgICAgICBfOiBzdHIsCistICAgICAgICB0eXBlX3BhcmFtX3N0cjog c3RyLAorLSAgICAgICAgYWxsb3dlZF90eXBlczogU2VxdWVuY2Vbc3RyXSwKKy0gICAgICAgIGRl c2NyaXB0aW9uOiBzdHIsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIHR5cGVfY29uc3RyYWlu dCA9IGRlZnMuT3BTY2hlbWEuVHlwZUNvbnN0cmFpbnRQYXJhbSgKKy0gICAgICAgICAgICB0eXBl X3BhcmFtX3N0ciwgYWxsb3dlZF90eXBlcywgZGVzY3JpcHRpb24KKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LmRlc2NyaXB0aW9uLCBkZXNjcmlw dGlvbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LmFsbG93ZWRf dHlwZV9zdHJzLCBsaXN0KGFsbG93ZWRfdHlwZXMpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh bCh0eXBlX2NvbnN0cmFpbnQudHlwZV9wYXJhbV9zdHIsIHR5cGVfcGFyYW1fc3RyKQorLQorLQor IGNsYXNzIFRlc3RBdHRyaWJ1dGUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9p bml0KHNlbGYpOgorICAgICAgICAgbmFtZSA9ICJ0ZXN0X2F0dHIiCitAQCAtMjYxLDE2OSArMjMx LDUgQEAgY2xhc3MgVGVzdEF0dHJpYnV0ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKCJhdHRyMSBkZXNjcmlwdGlvbiIsIGF0dHJpYnV0ZS5kZXNjcmlwdGlv bikKKyAKKyAKKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBbCist ICAgICAgICAjIHJlZ2lzdGVyIHRvIGV4aXN0IGRvbWFpbgorLSAgICAgICAgeworLSAgICAgICAg ICAgICJvcF90eXBlIjogIkN1c3RvbU9wIiwKKy0gICAgICAgICAgICAib3BfdmVyc2lvbiI6IDUs CistICAgICAgICAgICAgIm9wX2RvbWFpbiI6ICIiLAorLSAgICAgICAgICAgICJ0cmFwX29wX3Zl cnNpb24iOiBbMSwgMiwgNiwgN10sCistICAgICAgICB9LAorLSAgICAgICAgIyByZWdpc3RlciB0 byBuZXcgZG9tYWluCistICAgICAgICB7CistICAgICAgICAgICAgIm9wX3R5cGUiOiAiQ3VzdG9t T3AiLAorLSAgICAgICAgICAgICJvcF92ZXJzaW9uIjogNSwKKy0gICAgICAgICAgICAib3BfZG9t YWluIjogInRlc3QiLAorLSAgICAgICAgICAgICJ0cmFwX29wX3ZlcnNpb24iOiBbMSwgMiwgNiwg N10sCistICAgICAgICB9LAorLSAgICBdCistKQorLWNsYXNzIFRlc3RPcFNjaGVtYVJlZ2lzdGVy KHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgb3BfdHlwZTogc3RyCistICAgIG9wX3ZlcnNpb246 IGludAorLSAgICBvcF9kb21haW46IHN0cgorLSAgICAjIHJlZ2lzdGVyIHNvbWUgZmFrZSBzY2hl bWEgdG8gY2hlY2sgYmVoYXZpb3IKKy0gICAgdHJhcF9vcF92ZXJzaW9uOiBsaXN0W2ludF0KKy0K Ky0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6CistICAgICAgICAjIEVuc3VyZSB0aGUgc2No ZW1hIGlzIHVucmVnaXN0ZXJlZAorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvbm54LmRlZnMu aGFzKHNlbGYub3BfdHlwZSwgc2VsZi5vcF9kb21haW4pKQorLQorLSAgICBkZWYgdGVhckRvd24o c2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgQ2xlYW4gdXAgdGhlIHJlZ2lzdGVyZWQgc2NoZW1h CistICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9w X3ZlcnNpb25dOgorLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5zdXBwcmVzcyhvbm54LmRl ZnMuU2NoZW1hRXJyb3IpOgorLSAgICAgICAgICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9z Y2hlbWEoc2VsZi5vcF90eXBlLCB2ZXJzaW9uLCBzZWxmLm9wX2RvbWFpbikKKy0KKy0gICAgZGVm IHRlc3RfcmVnaXN0ZXJfbXVsdGlfc2NoZW1hKHNlbGYpOgorLSAgICAgICAgZm9yIHZlcnNpb24g aW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKKy0gICAgICAgICAg ICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAorLSAgICAgICAgICAgICAgICBzZWxmLm9wX3R5 cGUsCistICAgICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAgICAgICB2 ZXJzaW9uLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJf c2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZz LmhhcyhzZWxmLm9wX3R5cGUsIHZlcnNpb24sIHNlbGYub3BfZG9tYWluKSkKKy0gICAgICAgIGZv ciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbl06Cist ICAgICAgICAgICAgIyBBbHNvIG1ha2Ugc3VyZSB0aGUgYG9wX3NjaGVtYWAgaXMgYWNjZXNzaWJs ZSBhZnRlciByZWdpc3RlcgorLSAgICAgICAgICAgIHJlZ2lzdGVyZWRfb3AgPSBvbm54LmRlZnMu Z2V0X3NjaGVtYSgKKy0gICAgICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9w X3NjaGVtYS5kb21haW4KKy0gICAgICAgICAgICApCistICAgICAgICAgICAgb3Bfc2NoZW1hID0g ZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAg ICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICAgICAgdmVyc2lvbiwKKy0gICAg ICAgICAgICApCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmVnaXN0ZXJlZF9v cCksIHN0cihvcF9zY2hlbWEpKQorLQorLSAgICBkZWYgdGVzdF91c2luZ190aGVfc3BlY2lmaWVk X3ZlcnNpb25faW5fb25ueF9jaGVjayhzZWxmKToKKy0gICAgICAgIGlucHV0ID0gZiIiIgorLSAg ICAgICAgICAgIDwKKy0gICAgICAgICAgICAgICAgaXJfdmVyc2lvbjogNywKKy0gICAgICAgICAg ICAgICAgb3BzZXRfaW1wb3J0OiBbCistICAgICAgICAgICAgICAgICAgICAie3NlbGYub3BfZG9t YWlufSIgOiB7c2VsZi5vcF92ZXJzaW9ufQorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAg ICAgPgorLSAgICAgICAgICAgIGFncmFwaCAoZmxvYXRbTiwgMTI4XSBYLCBpbnQzMiBZKSA9PiAo ZmxvYXRbTl0gWikKKy0gICAgICAgICAgICB7eworLSAgICAgICAgICAgICAgICBaID0ge3NlbGYu b3BfZG9tYWlufS57c2VsZi5vcF90eXBlfTxhdHRyMT1bMSwyXT4oWCwgWSkKKy0gICAgICAgICAg ICB9fQorLSAgICAgICAgICAgIiIiCistICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNl X21vZGVsKGlucHV0KQorLSAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAg ICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCistICAg ICAgICAgICAgc2VsZi5vcF92ZXJzaW9uLAorLSAgICAgICAgICAgIGlucHV0cz1bCistICAgICAg ICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVyKCJpbnB1dDEiLCAiVCIpLAor LSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFtZXRlcigiaW5wdXQyIiwg ImludDMyIiksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBvdXRwdXRzPVsKKy0gICAg ICAgICAgICAgICAgZGVmcy5PcFNjaGVtYS5Gb3JtYWxQYXJhbWV0ZXIoIm91dHB1dDEiLCAiVCIp LAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgdHlwZV9jb25zdHJhaW50cz1bKCJUIiwg WyJ0ZW5zb3IoZmxvYXQpIl0sICIiKV0sCistICAgICAgICAgICAgYXR0cmlidXRlcz1bCistICAg ICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuQXR0cmlidXRlKAorLSAgICAgICAgICAgICAgICAg ICAgImF0dHIxIiwgZGVmcy5PcFNjaGVtYS5BdHRyVHlwZS5JTlRTLCAiYXR0cjEgZGVzY3JpcHRp b24iCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAg ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9y KToKKy0gICAgICAgICAgICBvbm54LmNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwsIGNoZWNrX2N1 c3RvbV9kb21haW49VHJ1ZSkKKy0gICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bf c2NoZW1hKQorLSAgICAgICAgIyBUaGUgZmFrZSBzY2hlbWEgd2lsbCByYWlzZSBjaGVjayBleGNl cHRpb24gaWYgc2VsZWN0ZWQgaW4gY2hlY2tlcgorLSAgICAgICAgZm9yIHZlcnNpb24gaW4gc2Vs Zi50cmFwX29wX3ZlcnNpb246CistICAgICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVt YSgKKy0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICAgICAgICAg IHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAg ICAgICAgICAgICAgICAgICAgdmVyc2lvbiwKKy0gICAgICAgICAgICAgICAgICAgIG91dHB1dHM9 WworLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVy KCJvdXRwdXQxIiwgImludDMyIiksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAg ICAgICAgICApCistICAgICAgICAgICAgKQorLSAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21v ZGVsKG1vZGVsLCBjaGVja19jdXN0b21fZG9tYWluPVRydWUpCistCistICAgIGRlZiB0ZXN0X3Jl Z2lzdGVyX3NjaGVtYV9yYWlzZXNfZXJyb3Jfd2hlbl9yZWdpc3RlcmluZ19hX3NjaGVtYV90d2lj ZShzZWxmKToKKy0gICAgICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAgICAg ICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAg ICAgIHNlbGYub3BfdmVyc2lvbiwKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguZGVmcy5yZWdp c3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhv bm54LmRlZnMuU2NoZW1hRXJyb3IpOgorLSAgICAgICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9z Y2hlbWEob3Bfc2NoZW1hKQorLQorLSAgICBkZWYgdGVzdF9kZXJlZ2lzdGVyX3RoZV9zcGVjaWZp ZWRfc2NoZW1hKHNlbGYpOgorLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3Bf dmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKKy0gICAgICAgICAgICBvcF9zY2hlbWEgPSBkZWZz Lk9wU2NoZW1hKAorLSAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAgICAgICAg ICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAorLSAgICAgICAg ICAgICkKKy0gICAgICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkK Ky0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFt ZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikpCistICAgICAgICBvbm54LmRlZnMuZGVyZWdp c3Rlcl9zY2hlbWEob3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRv bWFpbikKKy0gICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgorLSAg ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvbm54LmRlZnMuaGFzKG9wX3NjaGVtYS5uYW1lLCB2 ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluKSkKKy0gICAgICAgICMgTWF5YmUgaGFzIGxlc3NlciBv cCB2ZXJzaW9uIGluIHRyYXAgbGlzdAorLSAgICAgICAgaWYgb25ueC5kZWZzLmhhcyhvcF9zY2hl bWEubmFtZSwgc2VsZi5vcF92ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluKToKKy0gICAgICAgICAg ICBzY2hlbWEgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYSgKKy0gICAgICAgICAgICAgICAgb3Bfc2No ZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbgorLSAgICAgICAgICAg ICkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3Moc2NoZW1hLnNpbmNlX3ZlcnNpb24sIHNl bGYub3BfdmVyc2lvbikKKy0KKy0gICAgZGVmIHRlc3RfZGVyZWdpc3Rlcl9zY2hlbWFfcmFpc2Vz X2Vycm9yX3doZW5fb3BzY2hlbWFfZG9lc19ub3RfZXhpc3Qoc2VsZik6CistICAgICAgICB3aXRo IHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguZGVmcy5TY2hlbWFFcnJvcik6CistICAgICAgICAgICAg b25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKHNlbGYub3BfdHlwZSwgc2VsZi5vcF92ZXJzaW9u LCBzZWxmLm9wX2RvbWFpbikKKy0KKy0gICAgZGVmIHRlc3RfbGVnYWN5X3NjaGVtYV9hY2Nlc3Np YmxlX2FmdGVyX2RlcmVnaXN0ZXIoc2VsZik6CistICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9w U2NoZW1hKAorLSAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICBzZWxmLm9w X2RvbWFpbiwKKy0gICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24sCistICAgICAgICApCistICAg ICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgIHNjaGVt YV9hID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCistICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUs IG9wX3NjaGVtYS5zaW5jZV92ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluCistICAgICAgICApCist ICAgICAgICBzY2hlbWFfYiA9IG9ubnguZGVmcy5nZXRfc2NoZW1hKG9wX3NjaGVtYS5uYW1lLCBv cF9zY2hlbWEuZG9tYWluKQorLQorLSAgICAgICAgZGVmIGZpbHRlcl9zY2hlbWEoc2NoZW1hcyk6 CistICAgICAgICAgICAgcmV0dXJuIFtvcCBmb3Igb3AgaW4gc2NoZW1hcyBpZiBvcC5uYW1lID09 IG9wX3NjaGVtYS5uYW1lXQorLQorLSAgICAgICAgc2NoZW1hX2MgPSBmaWx0ZXJfc2NoZW1hKG9u bnguZGVmcy5nZXRfYWxsX3NjaGVtYXMoKSkKKy0gICAgICAgIHNjaGVtYV9kID0gZmlsdGVyX3Nj aGVtYShvbm54LmRlZnMuZ2V0X2FsbF9zY2hlbWFzX3dpdGhfaGlzdG9yeSgpKQorLSAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChsZW4oc2NoZW1hX2MpLCAxKQorLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChsZW4oc2NoZW1hX2QpLCAxKQorLSAgICAgICAgIyBBdm9pZCBtZW1vcnkgcmVzaWR1ZSBh bmQgYWNjZXNzIHN0b3JhZ2UgYXMgbXVjaCBhcyBwb3NzaWJsZQorLSAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChzdHIoc2NoZW1hX2EpLCBzdHIob3Bfc2NoZW1hKSkKKy0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwoc3RyKHNjaGVtYV9iKSwgc3RyKG9wX3NjaGVtYSkpCistICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHN0cihzY2hlbWFfY1swXSksIHN0cihvcF9zY2hlbWEpKQorLSAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2RbMF0pLCBzdHIob3Bfc2NoZW1hKSkKKy0KKy0KKyBp ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICB1bml0dGVzdC5tYWluKCkKK2RpZmYgLS1n aXQgYS9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkgYi9vbm54L3Rlc3Qvc2hhcGVf aW5mZXJlbmNlX3Rlc3QucHkKK2luZGV4IDllNmI5NmI1Yi4uMjQyNWJjMzM5IDEwMDY0NAorLS0t IGEvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3Qvc2hh cGVfaW5mZXJlbmNlX3Rlc3QucHkKK0BAIC0xMCw3ICsxMCw2IEBAIGZyb20gdHlwaW5nIGltcG9y dCBBbnksIFNlcXVlbmNlCisgCisgaW1wb3J0IG51bXB5IGFzIG5wCisgaW1wb3J0IHB5dGVzdAor LWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9ydCBvbm54 LnNoYXBlX2luZmVyZW5jZQorIGZyb20gb25ueCBpbXBvcnQgKAorQEAgLTIzOCw4NiArMjM3LDYg QEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Cisg ICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICgzMCwgNCwgNSkpXQorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCistICAgIGRlZiB0ZXN0X3Ry YW5zcG9zZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsi WSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgz LCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYgdGVz dF90cmFuc3Bvc2VfcHJlZXhpc3Rpbmcoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5z cG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKV0sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDMsIDIsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCist ICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9zY2FsYXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwg VGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNw b3NlIiwgWyJYIl0sIFsiWSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwg KCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJh bnNwb3NlX3BhcnRpYWwoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsi WCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlVOREVGSU5FRCwgKDMsICJhIiwgImIiKSldLAor LSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMiwgNCkpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s CistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5nX2lu Y29ycmVjdF9zaGFwZShzZWxmLCAqXykgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAz LCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlki XSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoNSwgNSwgNSkpXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9y LCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3By ZWV4aXN0aW5nX2luY29ycmVjdF90eXBlKHNlbGYsICpfKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5G TE9BVCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwg WyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMywgMiwgNCkpXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLklu ZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3Rf dHJhbnNwb3NlX2luY29ycmVjdF9yZXBlYXRlZF9wZXJtKHNlbGYsICpfKSAtPiBOb25lOgorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJh bnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAxXSldLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZl cmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKyAgICAgZGVm IF9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKAorICAgICAgICAgc2VsZiwgdmVyc2lv biwgc2hhcGUxOiBTZXF1ZW5jZVtpbnRdLCBzaGFwZTI6IFNlcXVlbmNlW2ludF0KKyAgICAgKSAt PiBOb25lOgorQEAgLTMyNywxMzQzICsyNDYsNTkgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNl KFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICApLnNoYXBlCisgICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LkZMT0FULCBzaGFwZTEpLCAoInkiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUyKV0sCistICAg ICAgICAgICAgW21ha2Vfbm9kZSgiTWF0TXVsIiwgWyJ4IiwgInkiXSwgWyJ6Il0pXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieiIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJNYXRNdWwiKSkKKy0gICAgZGVmIHRlc3RfbWF0bXVsX2FsbF9kaW1zX2tub3du KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90 ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgyLCksICgyLCkpCistCistICAgICAgICBzZWxm Ll9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIsIDQp KQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9u LCAoNSwgMiksICgyLCA0KSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2Rp bXNfa25vd24odmVyc2lvbiwgKDUsIDIpLCAoMiwgMSkpCistICAgICAgICBzZWxmLl9tYWtlX21h dG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgxLCAyKSwgKDIsIDMpKQorLSAgICAg ICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMiwpLCAo MiwgMykpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZl cnNpb24sICg0LCAyKSwgKDIsKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxs X2RpbXNfa25vd24odmVyc2lvbiwgKDEsIDQsIDIpLCAoMywgMiwgMykpCistICAgICAgICBzZWxm Ll9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgzLCA0LCAyKSwgKDMs IDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2 ZXJzaW9uLCAoNSwgMSwgNCwgMiksICgxLCAzLCAyLCAzKSkKKy0gICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDQsIDIpLCAoMywgMiwgMykpCist CistICAgIGRlZiBfbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKAorLSAgICAgICAgc2Vs ZiwgdmVyc2lvbiwgc2hhcGUxOiBBbnksIHNoYXBlMjogQW55LCBleHBlY3RlZF9vdXRfc2hhcGU6 IEFueQorLSAgICApIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZTEpLCAoInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgc2hhcGUyKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiTWF0 TXVsIiwgWyJ4IiwgInkiXSwgWyJ6Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FU LCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwiKSkKKy0g ICAgZGVmIHRlc3RfbWF0bXVsX2FsbG93X3Vua25vd24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9u LCAoTm9uZSwpLCAoTm9uZSwpLCAoKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3Rf YWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoMywpLCAoTm9uZSwpLCAoKSkKKy0gICAgICAgIHNlbGYu X21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgImEiKSwg KCJhIiwpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZl cnNpb24sICg0LCAyKSwgKDIsICJhIiksICg0LCAiYSIpKQorLSAgICAgICAgc2VsZi5fbWFrZV9t YXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCBOb25lKSwgKDIsICJhIiksICg0 LCAiYSIpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZl cnNpb24sICg0LCBOb25lKSwgKE5vbmUsICJhIiksICg0LCAiYSIpKQorLSAgICAgICAgc2VsZi5f bWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKAorLSAgICAgICAgICAgIHZlcnNpb24sICgx LCA0LCAyKSwgKCJhIiwgMiwgNSksICgiYSIsIDQsIDUpCistICAgICAgICApCistICAgICAgICBz ZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24oCistICAgICAgICAgICAgdmVyc2lv biwgKDEsIDMsIDQsIDIpLCAoImEiLCAyLCA1KSwgKDEsIDMsIDQsIDUpCistICAgICAgICApCist ICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDMs KSwgTm9uZSwgTm9uZSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5r bm93bih2ZXJzaW9uLCBOb25lLCBOb25lLCBOb25lKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ2FzdCIpKQorLSAgICBkZWYgdGVzdF9jYXN0KHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90 by5VSU5UOCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIkNhc3QiKSkKKy0gICAgQHVuaXR0ZXN0LnNraXAoCistICAgICAg ICAiSXNzdWUgIzU5NjAiCistICAgICkgICMgRklYTUUoIzU5NjApIHByb3BhZ2F0ZUVsZW1UeXBl RnJvbUF0dHJpYnV0ZVRvT3V0cHV0IGRvZXMgbm90IHZhbGlkYXRlIGFnYWluc3Qgb3V0cHV0IHR5 cGUgY29uc3RyYWludHMKKy0gICAgZGVmIHRlc3RfY2FzdF90b19jb21wbGV4KHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6ICAjIG5vcWE6IEFSRzAwMgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQs IDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdCIsIFsieCJdLCBbInkiXSwgdG89 VGVuc29yUHJvdG8uQ09NUExFWDEyOCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQor LQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJl bmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNhc3RMaWtlIikpCistICAgIGRlZiB0ZXN0X2Nhc3Rf bGlrZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQs IDMpKSwgKCJ0IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKCJOIiwpKV0sCistICAgICAgICAgICAg W21ha2Vfbm9kZSgiQ2FzdExpa2UiLCBbIngiLCAidCJdLCBbInkiXSldLAorLSAgICAgICAgICAg IFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uRkxPQVQxNiwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29s MkltIikpCistICAgIGRlZiB0ZXN0X2NvbDJpbShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAg ICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSwgNSkpLAorLSAg ICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwK Ky0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIs KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb2wySW0iLCBbImlucHV0IiwgIm91dHB1 dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwgWyJvdXRwdXQiXQorLSAgICAgICAgICAgICAgICAp CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFs aXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSwgKDUsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMSwgNSkpLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJDb2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltX3N0cmlkZXMoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5G TE9BVCwgKDEsIDksIDQpKSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29s MkltIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtl cm5lbF9zaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0gICAgICAg ICAgICAgICAgICAgIHN0cmlkZXM9WzIsIDJdLAorLSAgICAgICAgICAgICAgICApCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bCist ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsKSwgKDUsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImtlcm5l bF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMywgMykpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1 dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJDb2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltX3BhZHMoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUs IDE1KSksCistICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCkpLAorLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIsCistICAg ICAgICAgICAgICAgICAgICBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUi XSwKKy0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0sCistICAgICAgICAgICAgICAgICAg ICBwYWRzPVswLCAxLCAwLCAxXSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0s CistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCksICg1LCA1KSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDEsIDUpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5z b3JQcm90by5GTE9BVCwgKDEsIDEsIDUsIDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMklt IikpCistICAgIGRlZiB0ZXN0X2NvbDJpbV9kaWxhdGlvbnMoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDQsIDUp KSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwKKy0gICAgICAg ICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLAor LSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRp bGF0aW9ucz1bMSwgNV0sCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAo NiwgNikpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCksICgyLCAyKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCAxLCA2LCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQor LSAgICBkZWYgdGVzdF9jb2wyaW1fNWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEwLCAxMikpLAorLSAgICAg ICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKKy0g ICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb2wySW0iLCBbImlucHV0IiwgIm91dHB1dF9z aGFwZSIsICJrZXJuZWxfc2hhcGUiXSwgWyJvdXRwdXQiXQorLSAgICAgICAgICAgICAgICApCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXpl cj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDMsKSwgKDMsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMSwgMSwgNSkpLAor LSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMiwgMywgNCwgNSkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKKy0gICAgZGVmIHRlc3RfY29uY2F0KHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpLCAoInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDcsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgi Q29uY2F0IiwgWyJ4IiwgInkiXSwgWyJ6Il0sIGF4aXM9MCldLAorLSAgICAgICAgICAgIFtdLAor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAg IGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29y UHJvdG8uRkxPQVQsICg5LCA0LCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQor LSAgICBkZWYgdGVzdF9jb25jYXRfbWlzc2luZ19zaGFwZShzZWxmLCAqXykgLT4gTm9uZToKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpLAorLSAgICAgICAg ICAgICAgICAieSIsCistICAgICAgICAgICAgICAgICgieiIsIFRlbnNvclByb3RvLkZMT0FULCAo Tm9uZSwgTm9uZSwgTm9uZSkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiLCAieiJdLCBbIm91dCJdLCBheGlzPTApXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubngu c2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkK Ky0gICAgZGVmIHRlc3RfY29uY2F0XzNkX2F4aXNfMihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIsIDIpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgyLCAyLCAyKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5 Il0sIFsieiJdLCBheGlzPTIpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwg MiwgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKKy0gICAgZGVmIHRlc3RfY29u Y2F0X3BhcmFtKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAo ImEiLCAyKSksICgieSIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAzKSldLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Il0sIFsieiJdLCBheGlzPTEpXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCA1KSldLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK Ky0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkNvbmNhdCIpKQorLSAgICBkZWYgdGVzdF9jb25jYXRfcGFyYW1fc2luZ2xlX2lucHV0KHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAyKSldLAor LSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCJdLCBbInoiXSwgYXhpcz0wKV0s CistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgMikpXSwKKy0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY19zaGFwZV9r bm93bl9yYW5rKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJ Zih2ZXJzaW9uIDwgMTQsICJSYW5rIGluZmVyZW5jZSBpcyBhZGRlZCBmcm9tIFZlcnNpb24gMTQi KQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklO VDY0LCAoMiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJz aGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsIChOb25lLCBO b25lKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVz aGFwZV9keW5hbWljX3NoYXBlX3N5bWJvbGljKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgiTSIsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hh cGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCBOb25lKV0sCist ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX2R5bmFt aWNfdW5rbm93bl9zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5V SU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCBOb25lKV0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSld LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsIE5vbmUpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s CistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpLCAoMywgOCkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMywgOCkpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBl X2luZmVycmVkKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAo MiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKKy0gICAgICAg ICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAg ICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwgMywgLTEpKV0sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwg KDIsIDMsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVz dF9yZXNoYXBlX3N0YXRpY19zaGFwZV96ZXJvKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLlVJTlQ4LCAoMSwgMSwgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgzLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBl Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9 W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwgMSwgMSkp XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLlVJTlQ4LCAoMSwgMSwgMSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAp CistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBl IikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX2FsbG93emVybyhzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE0LCAi YWxsb3d6ZXJvIGlzIGFkZGVkIGZyb20gVmVyc2lvbiAxNCIpCistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBU ZW5zb3JQcm90by5VSU5UOCwgKDEsIDAsIDApKSwKKy0gICAgICAgICAgICAgICAgKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAg IFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0sIGFsbG93emVybz0x KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVu c29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwgMSwgMSkpXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LlVJTlQ4LCAoMCwgMSwgMSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAg IGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX2NvbnN0YW50KHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25z dGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsi c2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMywgOCkpLAorLSAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5 Il0pLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMywgOCkpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVXBzYW1wbGUiKSkKKy0gICAgZGVmIHRlc3RfdXBzYW1w bGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24gPT0gNzoK Ky0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKV0sCistICAgICAgICAgICAg ICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4Il0sIFsieSJdLCBzY2FsZXM9WzEuMCwgMS4x LCAxLjMsIDEuOV0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgKQorLSAg ICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAg ICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNv clByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJzY2Fs ZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4IiwgInNjYWxlcyJdLCBbInki XSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9 WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3Rv LkZMT0FULCAoNCwpLCAoMS4wLCAxLjEsIDEuMywgMS45KSkKKy0gICAgICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICApCistCistICAgICAgICAgICAgZGVmIGNhbGxfaW5mZXJlbmNlKCk6Cist ICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICAgICAgICAgICkKKy0KKy0gICAgICAgICAgICBpZiB2ZXJzaW9uID09 IDk6CistICAgICAgICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKKy0gICAgICAgICAgICBlbHNl OgorLSAgICAgICAgICAgICAgICAjIFVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQgc2luY2UgVmVyc2lv biAxMC4KKy0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNr ZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKKy0gICAgICAgICAgICAgICAgICAgIGNhbGxfaW5m ZXJlbmNlKCkKKy0gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCistICAg ICAgICAgICAgICAgIGFzc2VydCAiVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2Vw dGlvbikKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlVw c2FtcGxlIikpCistICAgIGRlZiB0ZXN0X3Vwc2FtcGxlX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9uID09IDc6CistICAgICAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uSU5UMzIsICgxLCAzLCA0LCA1KSldLAorLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJV cHNhbXBsZSIsIFsieCJdLCBbInkiXSwgc2NhbGVzPVsyLjAsIDEuMSwgMi4zLCAxLjldKV0sCist ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywg OSwgOSkpXSwKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVs c2U6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8u RkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbbWFr ZV9ub2RlKCJVcHNhbXBsZSIsIFsieCIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJzY2FsZXMiLAor LSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAg ICAgICAgICAgICAgICg0LCksCistICAgICAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJh eShbMS4wLCAxLjEsIDEuMywgMS45XSwgZHR5cGU9IjxmNCIpLnRvYnl0ZXMoKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0gICAgICAgICAgICAgICAgICAgICkKKy0gICAg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApICAjIEZlZWQgcmF3IGJ5dGVzIChmb3JjZSBs aXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxpa2Ugb25ueCBzdGFuZGFyZCkgZm9yIHRlc3QgcHVycG9z ZQorLQorLSAgICAgICAgICAgIGRlZiBjYWxsX2luZmVyZW5jZSgpOgorLSAgICAgICAgICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgICAgICAgICApCistCistICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSA5OgorLSAgICAgICAg ICAgICAgICBjYWxsX2luZmVyZW5jZSgpCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAg ICAgICAgIyBVcHNhbXBsZSBpcyBkZXByZWNhdGVkIHNpbmNlIFZlcnNpb24gMTAuCistICAgICAg ICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25F cnJvcikgYXMgY206CistICAgICAgICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgpCistICAg ICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgorLSAgICAgICAgICAgICAgICBh c3NlcnQgIlVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQiIGluIHN0cihleGNlcHRpb24pCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKKy0gICAg ZGVmIHRlc3RfZXhwYW5kKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklO VDMyLCAoMywgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKKy0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgyLCAxLCA2KSldLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIs ICgyLCAzLCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIpKQorLSAgICBkZWYgdGVz dF9leHBhbmRfc2NhbGFyX2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclBy b3RvLklOVDMyLCAoKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAor LSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigi c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDQsIDgpKV0sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwg KDQsIDgpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCistICAgIGRlZiB0ZXN0X2V4 cGFuZF9yYXdfZGF0YShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQz MiwgKDMsIDEpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCistICAgICAg ICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAg ICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJzaGFwZSIsCistICAgICAgICAg ICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICAgICAgICAgICgyLCks CistICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFszLCA0XSwgZHR5cGU9IjxpOCIp LnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAg ICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkgICMgRmVlZCByYXcgYnl0ZXMgKGZv cmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3IgdGVzdCBw dXJwb3NlCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5JTlQzMiwgKDMsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCistICAgIGRl ZiB0ZXN0X2V4cGFuZF9keW5hbWljX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDIsIE5vbmUpKSwKKy0gICAg ICAgICAgICAgICAgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJd LCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UMzIsIChOb25lLCAyLCBOb25lKSldLAorLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAg ICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4 cGFuZCIpKQorLSAgICBkZWYgdGVzdF9leHBhbmRfc3ltYm9saWNfc2hhcGUoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwg MiwgTm9uZSkpLAorLSAgICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgidW5rX18wIiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUo IkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgIGluaXRpYWxpemVyPVtdLAorLSAgICAgICAgKQorLSAgICAgICAgIyBpZiBnaXZp bmcgYSBzeW1ib2xpYyBzaGFwZSwgRXhwYW5kIHNob3VsZCBub3QgaW5mZXIgYW55IHNoYXBlIG9y IHJhbmsgaW5mZXJlbmNlCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5JTlQzMiwgTm9uZSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQor LSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAg ICAgICAgaWYgdmVyc2lvbiA9PSAxMDoKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJz Y2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJzY2FsZXMiXSwgWyJ5 Il0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRpYWxpemVy PVsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAxLjMsIDEuOSkpCistICAgICAgICAgICAgICAgIF0s CistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgZWxpZiB2ZXJzaW9uID09IDExOgor LSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAz LCA1KSksCistICAgICAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAo OCwpKSwKKy0gICAgICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9k ZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKKy0g ICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAg ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAo NCwpLCAoMywgNSwgNiwgNykpCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgKQor LSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uSU5UMzIsICgzLCA1LCA2LCA3KSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJy b2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICAgICAoInNp emVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBdLAorLSAg ICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIsICJzaXpl cyJdLCBbInkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5p dGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNpemVzIiwgVGVu c29yUHJvdG8uSU5UNjQsICg0LCksICgzLCA1LCA2LCA3KSkKKy0gICAgICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUsIDYsIDcpKV0sCistICAgICAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhl c18yXzMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZl cnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJzaW9uIDE4IikKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJv aSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAg IFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sIFsieSJdLCBh eGVzPSgyLCAzKSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVy PVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDcpKV0s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQzMiwgKDIsIDQsIDYsIDcpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXpl IikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX2F4ZXNfM18yKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZy b20gVmVyc2lvbiAxOCIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwg KDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIs KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBb IngiLCAicm9pIiwgIiIsICJzaXplcyJdLCBbInkiXSwgYXhlcz0oMywgMikpXSwKKy0gICAgICAg ICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA3KSldLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA3 LCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNp emVfc2l6ZV9ub3RfbGFyZ2VyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBz ZWxmLnNraXBJZigKKy0gICAgICAgICAgICB2ZXJzaW9uIDwgMTgsCistICAgICAgICAgICAgImtl ZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBpcyBmcm9tIFZlcnNpb24gMTgiLAorLSAgICAgICAgKQor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA1KSksCistICAgICAgICAg ICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAg ICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAg ICAgICAgICAiUmVzaXplIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwg InNpemVzIl0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAg ICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0ibm90X2xhcmdlciIsCistICAgICAgICAgICAg ICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwg KDYsIDYpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDQsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVz aXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX2F4ZXNfMl8zX25vdF9sYXJnZXIoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAg ICAgIHZlcnNpb24gPCAxOCwKKy0gICAgICAgICAgICAiYXhlcyAmIGtlZXBfYXNwZWN0X3JhdGlv X3BvbGljeSBhcmUgZnJvbSBWZXJzaW9uIDE4IiwKKy0gICAgICAgICkKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAo InJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXpl cyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAg IlJlc2l6ZSIsCistICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJd LAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBheGVz PSgyLCAzKSwKKy0gICAgICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0i bm90X2xhcmdlciIsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKV0sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQs IDQsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jl c2l6ZV9zaXplX25vdF9zbWFsbGVyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICBzZWxmLnNraXBJZigKKy0gICAgICAgICAgICB2ZXJzaW9uIDwgMTgsCistICAgICAgICAgICAg ImtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBpcyBmcm9tIFZlcnNpb24gMTgiLAorLSAgICAgICAg KQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA1KSksCistICAgICAg ICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAg ICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0s CistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAg ICAgICAgICAgICAiUmVzaXplIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAi IiwgInNpemVzIl0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAg ICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0ibm90X3NtYWxsZXIiLAorLSAgICAgICAg ICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAg ICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCksICg2LCA2KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICg2LCAxMCkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18yXzNfbm90X3NtYWxs ZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAg ICAgICAgICAgIHZlcnNpb24gPCAxOCwKKy0gICAgICAgICAgICAiYXhlcyAmIGtlZXBfYXNwZWN0 X3JhdGlvX3BvbGljeSBhcmUgZnJvbSBWZXJzaW9uIDE4IiwKKy0gICAgICAgICkKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAg ICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAg KCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgIlJlc2l6ZSIsCistICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJz aXplcyJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAg ICBheGVzPSgyLCAzKSwKKy0gICAgICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3Bv bGljeT0ibm90X3NtYWxsZXIiLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3Io InNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIs ICgyLCA0LCA2LCAxMCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVm IHRlc3RfcmVzaXplX3NjYWxlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBz ZWxmLnNraXBJZih2ZXJzaW9uIDwgMTEsICJyb2kgaW5wdXQgaXMgZnJvbSBWZXJzaW9uIDExIikK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAg ICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAg ICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNj YWxlcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxp emVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3Rv LkZMT0FULCAoNCwpLCAoMS4wLCAxLjEsIDEuMywgMS45KSkKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQor LSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfYXhlc18yXzMoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBW ZXJzaW9uIDE4IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwp KSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngi LCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSwgYXhlcz0oMiwgMykpXSwKKy0gICAgICAgICAgICBb XSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwpLCAoMS4zLCAxLjkpKV0sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMs IDkpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6 ZV9zY2FsZV9heGVzXzNfMihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2Vs Zi5za2lwSWYodmVyc2lvbiA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAg ICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAg ICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpKSwKKy0gICAgICAgICAgICBdLAor LSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0s IFsieSJdLCBheGVzPSgzLCAyKSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVttYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCks ICgxLjksIDEuMykpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlX3Jhd19kYXRhKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwg MTEsICJyb2kgaW5wdXQgaXMgZnJvbSBWZXJzaW9uIDExIikKKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIs IFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb bWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAic2NhbGVzIiwKKy0gICAgICAg ICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgKDQs KSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoWzIuMCwgMS4xLCAyLjMsIDEu OV0sIGR0eXBlPSI8ZjQiKS50b2J5dGVzKCksCistICAgICAgICAgICAgICAgICAgICByYXc9VHJ1 ZSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDMsIDksIDkpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0 X3Jlc2l6ZV9zY2FsZV9hbmRfc2l6ZV9idXRfb25lX2lzX2VtcHR5KHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTEsICJyb2kgaW5wdXQg aXMgZnJvbSBWZXJzaW9uIDExIikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMy LCAoMSwgMywgNCwgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZM T0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9B VCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDAsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUi LCBbIngiLCAicm9pIiwgInNjYWxlcyIsICJzaXplcyJdLCBbInkiXSldLAorLSAgICAgICAgICAg IFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAic2NhbGVzIiwKKy0gICAgICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgKDQsKSwKKy0gICAg ICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoWzIuMCwgMS4xLCAyLjMsIDEuOV0sIGR0eXBl PSI8ZjQiKS50b2J5dGVzKCksCistICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0gICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAg ICAgICAgICAgICAic2l6ZXMiLAorLSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5U NjQsCistICAgICAgICAgICAgICAgICAgICAoMCwpLAorLSAgICAgICAgICAgICAgICAgICAgdmFs cz1ucC5hcnJheShbXSwgZHR5cGU9IjxpOCIpLnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICAgICAg ICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5JTlQzMiwgKDIsIDMsIDksIDkpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCist ICAgIGRlZiB0ZXN0X3Jlc2l6ZV9vcHNldDExX3NjYWxlc19pc19lbXB0eShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiAhPSAxMSwgIlRoaXMg dGVzdCBvbmx5IHdvcmtzIGZvciBWZXJzaW9uIDExIikKKy0gICAgICAgICMgInNjYWxlcyIgaW5w dXQgaW4gUmVzaXplIGluIG9wc2V0MTEgaXMgbm90IG9wdGlvbmFsLiBJdCBtdXN0IGJlIGFuIGVt cHR5IHRlbnNvcgorLSAgICAgICAgIyBpZiBzaXplcyBpcyBuZWVkZWQuIFNoYXBlIGluZmVyZW5j ZSBmb3IgUmVzaXplIHNoYWxsIGhhbmRsZSB0aGlzIGNhc2UuCistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBU ZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2ki LCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICgic2NhbGVzIiwg VGVuc29yUHJvdG8uRkxPQVQsICgwLCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVu c29yUHJvdG8uSU5UNjQsICg0LCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21h a2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0p XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgInNpemVzIiwKKy0g ICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAgICAgICAg ICAgKDQsKSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoCistICAgICAgICAg ICAgICAgICAgICAgICAgWzIsIDYsIDgsIDEwXSwgZHR5cGU9IjxpOCIKKy0gICAgICAgICAgICAg ICAgICAgICkudG9ieXRlcygpLCAgIyBkb3VibGUgaW4gYWxsIGRpbWVuc2lvbnMKKy0gICAgICAg ICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg IF0sCistICAgICAgICApCistCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDYsIDgsIDEwKSldLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoIiIsIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikp CistICAgIGRlZiB0ZXN0X3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIs IFsieCJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9zdGFydF8x KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9u IDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUiKQorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngi XSwgWyJ5Il0sIHN0YXJ0PTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwp KV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfZW5k XzEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNp b24gPCAxNSwgInN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsi eCJdLCBbInkiXSwgZW5kPTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwp KV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfbmVn YXRpdmVfc3RhcnQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tp cElmKHZlcnNpb24gPCAxNSwgInN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJT aGFwZSIsIFsieCJdLCBbInkiXSwgc3RhcnQ9LTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMSwpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVmIHRl c3Rfc2hhcGVfY2xpcDEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYu c2tpcElmKHZlcnNpb24gPCAxNSwgInN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIp CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJTaGFwZSIsIFsieCJdLCBbInkiXSwgc3RhcnQ9LTUpXSwKKy0gICAgICAgICAgICBbXSwKKy0g ICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDY0LCAoMywpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVm IHRlc3Rfc2hhcGVfY2xpcDIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNl bGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAx NSIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwgZW5kPTEwKV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDMsKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNpemUiKSkKKy0gICAgZGVm IHRlc3Rfc2l6ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDQsIDMpKV0sIFttYWtlX25vZGUoIlNpemUiLCBbIngiXSwgWyJ5Il0pXSwgW10KKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlciIpKQorLSAgICBkZWYgdGVz dF9nYXRoZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0 LCAzKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCistICAgICAgICAgICAgW21h a2Vfbm9kZSgiR2F0aGVyIiwgWyJ4IiwgImkiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwgMykpXSwgICMgdHlwZTogaWdub3JlCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiR2F0aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhlcl9heGlzMShzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDMsIDUpKSwgKCJpIiwgVGVuc29yUHJv dG8uSU5UNjQsICgxLCAyKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIsIFsi eCIsICJpIl0sIFsieSJdLCBheGlzPTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FU LCAoNCwgMSwgMiwgNSkpXSwgICMgdHlwZTogaWdub3JlCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0 aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhlcl9pbnRvX3NjYWxhcihzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsKSksICgiaSIsIFRlbnNvclByb3RvLklO VDY0LCAoKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0s IFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50cyIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXJfZWxlbWVu dHMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyKSks ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMikpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJHYXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsieSJdLCBheGlzPTEpXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMikpXSwgICMgdHlwZTogaWdub3JlCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiR2F0aGVyRWxlbWVudHMiKSkKKy0gICAgZGVmIHRlc3RfZ2F0aGVyX2Vs ZW1lbnRzX2F4aXMwKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMywgMykpLCAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKV0sCistICAgICAgICAg ICAgW21ha2Vfbm9kZSgiR2F0aGVyRWxlbWVudHMiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0w KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKV0sICAjIHR5cGU6IGln bm9yZQorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXIiKSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRl cihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgaWYgdmVyc2lvbiA+PSAxMToK Ky0gICAgICAgICAgICAjIFNjYXR0ZXIgaXMgZGVwcmVjYXRlZCBpbiBkb21haW5fdmVyc2lvbiBv ZiAxMS4KKy0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5W YWxpZGF0aW9uRXJyb3IpIGFzIGNtOgorLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3NjYXR0 ZXIodmVyc2lvbikKKy0gICAgICAgICAgICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KKy0gICAg ICAgICAgICBhc3NlcnQgIlNjYXR0ZXIgaXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikK Ky0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24p CistCistICAgIGRlZiBfdGVzdF9zY2F0dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6CistICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKKy0gICAgICAgICAgICAg ICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSksCistICAgICAgICAgICAgICAgICgi dSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApICAjIHR5cGU6IGlnbm9yZQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlciIpKQorLSAgICBkZWYgdGVzdF9zY2F0dGVyX2F4aXMx KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9uID49IDExOgor LSAgICAgICAgICAgICMgU2NhdHRlciBpcyBkZXByZWNhdGVkIGluIGRvbWFpbl92ZXJzaW9uIG9m IDExLgorLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZh bGlkYXRpb25FcnJvcikgYXMgY206CistICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRl cl9heGlzMSh2ZXJzaW9uKQorLSAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgor LSAgICAgICAgICAgIGFzc2VydCAiU2NhdHRlciBpcyBkZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0 aW9uKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBzZWxmLl90ZXN0X3NjYXR0ZXJfYXhp czEodmVyc2lvbikKKy0KKy0gICAgZGVmIF90ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkp LAorLSAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKKy0g ICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSksCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAi dSJdLCBbInkiXSwgYXhpcz0xKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEs IDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJFbGVtZW50 cyIpKQorLSAgICBkZWYgdGVzdF9zY2F0dGVyX2VsZW1lbnRzKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKKy0g ICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSksCistICAgICAg ICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlckVsZW1lbnRzIiwgWyJ4IiwgImki LCAidSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSld LCAgIyB0eXBlOiBpZ25vcmUKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyRWxlbWVudHMiKSkK Ky0gICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVtZW50c19heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSksCist ICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpLAorLSAgICAg ICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKSwKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXJFbGVtZW50cyIsIFsieCIsICJp IiwgInUiXSwgWyJ5Il0sIGF4aXM9MSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgxLCA1KSldLCAgIyB0eXBlOiBpZ25vcmUKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyTkQi KSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcm5kKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwKKy0gICAgICAg ICAgICAgICAgKCJpbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCistICAg ICAgICAgICAgICAgICgidXBkYXRlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAor LSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlck5EIiwgWyJ4 IiwgImluZGljZXMiLCAidXBkYXRlcyJdLCBbInkiXSldLAorKyAgICAgICAgICAgIFttYWtlX25v ZGUoIk1hdE11bCIsIFsieCIsICJ5Il0sIFsieiJdKV0sCisgICAgICAgICAgICAgW10sCisgICAg ICAgICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsIDUsIDYpKV0sICAjIHR5cGU6IGlnbm9yZQorKyAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX291dF9z aGFwZSldLAorICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJORCIpKQorLSAgICBkZWYgdGVzdF9z Y2F0dGVybmRfbm9zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgIyBU aGUgc2hhcGUgb2YgJ3hfcmVzaGFwZWQnIGNhbm5vdCBiZSBpbmZlcnJlZCwgc2luY2UgaXQgaXMg dGhlIG91dHB1dCBvZiBhIGR5bmFtaWMgcmVzaGFwZS4KKy0gICAgICAgICMgVGh1cyB0aGUgc2hh cGUgb2YgJ3knIGlzIGFsc28gTm9uZS4KKysgICAgZGVmIF9tYWtlX21hdG11bF90ZXN0X2FsbG93 X3Vua25vd24oCisrICAgICAgICBzZWxmLCB2ZXJzaW9uLCBzaGFwZTE6IEFueSwgc2hhcGUyOiBB bnksIGV4cGVjdGVkX291dF9zaGFwZTogQW55CisrICAgICkgLT4gTm9uZToKKyAgICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAg ICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSwgNikpLAorLSAgICAgICAgICAgICAgICAo ImluZGljZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsIDMsIDIpKSwKKy0gICAgICAgICAgICAg ICAgKCJ1cGRhdGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzLCA2KSksCistICAgICAgICAg ICAgICAgICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJNIiwpKSwKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJSZXNoYXBl IiwgWyJ4IiwgInNoYXBlIl0sIFsieF9yZXNoYXBlZCJdKSwKKy0gICAgICAgICAgICAgICAgbWFr ZV9ub2RlKCJTY2F0dGVyTkQiLCBbInhfcmVzaGFwZWQiLCAiaW5kaWNlcyIsICJ1cGRhdGVzIl0s IFsieSJdKSwKKy0gICAgICAgICAgICBdLAorKyAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgc2hhcGUxKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlMildLAorKyAg ICAgICAgICAgIFttYWtlX25vZGUoIk1hdE11bCIsIFsieCIsICJ5Il0sIFsieiJdKV0sCisgICAg ICAgICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CisgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ4X3Jlc2hhcGVkIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5v bmUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uRkxPQVQsIE5vbmUpLAorLSAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfb3V0X3No YXBlKV0sCisgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNxdWVlemUiKSkKKy0g ICAgZGVmIHRlc3Rfc3F1ZWV6ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg aWYgdmVyc2lvbiA9PSAxMToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDMsIDEsIDEs IDIsIDEpKV0sCistICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlNxdWVlemUiLCAieCIsICJ5 IiwgYXhlcz1bMCwgMiwgMywgNV0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAg ICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgzLCAyKSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgMywgMSwgMSwgMiwgMSkpLAorLSAgICAgICAgICAgICAgICAg ICAgKCJheGVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJTcXVlZXplIiwgWyJ4IiwgImF4ZXMiXSwg InkiKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICBpbml0aWFsaXpl cj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigiYXhlcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoNCwpLCAoMCwgMiwgMywgNSkpCistICAgICAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyKSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICAgICAgKQorKyAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiU3RyaW5nQ29uY2F0IikpCistICAgIGRlZiB0ZXN0X3N0cmluZ2NvbmNh dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorKyAgICBkZWYgX3Rlc3Rfc2NhdHRlcihzZWxm LCB2ZXJzaW9uKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor ICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5H LCAoMiwgMywgNCkpLAorLSAgICAgICAgICAgICAgICAoInkiLCBUZW5zb3JQcm90by5TVFJJTkcs ICgyLCAzLCA0KSksCisrICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAo MywgMykpLAorKyAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMp KSwKKysgICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSksCisg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdDb25jYXQiLCBb IngiLCAieSJdLCAieiIpXSwKKysgICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4 IiwgImkiLCAidSJdLCBbInkiXSldLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAo MiwgMywgNCkpXSwKKysgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLkZMT0FULCAoMywgMykpXSwKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25j YXQiKSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nY29uY2F0X2Jyb2FkY2FzdGluZyhzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgorKyAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKysgICAgZGVmIF90 ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwgdmVyc2lvbikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgKCJ5 IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMSwgMywgMSkpLAorKyAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKSwKKysgICAgICAgICAgICAgICAgKCJpIiwgVGVu c29yUHJvdG8uSU5UNjQsICgxLCAyKSksCisrICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMSwgMikpLAorICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiU3RyaW5nQ29uY2F0IiwgWyJ4IiwgInkiXSwgInoiKV0sCistICAgICAgICAgICAgW10s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5z b3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlZ2V4RnVs bE1hdGNoIikpCistICAgIGRlZiB0ZXN0X3JlZ2V4X2Z1bGxfbWF0Y2goc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAg ICAgICBbbWFrZV9ub2RlKCJSZWdleEZ1bGxNYXRjaCIsIFsieCJdLCBbInkiXSwgcGF0dGVybj1y Il5bQS1aXVthLXpdKiQiKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5CT09MLCAoMiwgNCwg MywgOSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZWdleEZ1bGxNYXRjaCIpKQorLSAgICBkZWYg dGVzdF9yZWdleF9mdWxsX21hdGNoX2VtcHR5X3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLlNUUklORywgKCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJS ZWdleEZ1bGxNYXRjaCIsIFsieCJdLCBbInkiXSwgcGF0dGVybj1yIl5bQS1aXVthLXpdKiQiKV0s CisrICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5 Il0sIGF4aXM9MSldLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uQk9PTCwgKCkpXSwKKysgICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAo MSwgNSkpXSwKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCisrICAgICAgICApICAjIHR5cGU6 IGlnbm9yZQorIAorICAgICBkZWYgdGVzdF9zcXVlZXplX25vX2F4ZXNfb3BzZXQxMShzZWxmKSAt PiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorQEAgLTUzMDQsMjMg KzM5MzksNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVs cGVyKToKKyAgICAgICAgIHNlbGYuX21ha2VfbWF0bXVsaW50ZWdlcl90ZXN0KCg1LCAxLCA0LCAy KSwgKDEsIDMsIDIsIDMpKQorICAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxpbnRlZ2VyX3Rlc3Qo KDQsIDIpLCAoMywgMiwgMykpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAg ICAgIFtvbm54LlRlbnNvclByb3RvLkZMT0FULCBvbm54LlRlbnNvclByb3RvLkZMT0FUMTYsIG9u bnguVGVuc29yUHJvdG8uQkZMT0FUMTZdCistICAgICkKKy0gICAgZGVmIHRlc3RfcXVhbnRpemVs aW5lYXIoc2VsZiwgZWxlbV90eXBlKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgZWxlbV90 eXBlLCAoMzAsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJ5X3NjYWxlIiwgZWxlbV90eXBl LCAoKSksCistICAgICAgICAgICAgICAgICgieV96ZXJvX3BvaW50IiwgVGVuc29yUHJvdG8uVUlO VDgsICgpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlF1YW50 aXplTGluZWFyIiwgWyJ4IiwgInlfc2NhbGUiLCAieV96ZXJvX3BvaW50Il0sIFsieSJdKV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uVUlOVDgsICgzMCwgNCwgNSkpXQorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVz dF9xdWFudGl6ZWxpbmVhcl9kZWZhdWx0X3pwKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZM T0FULCAoMzAsIDQsIDUpKSwgKCJ5X3NjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCitA QCAtNTQyNiwyMyArNDA0NCw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJ bmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgIGdyYXBoLAorICAgICAgICAgKQorIAorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbb25ueC5UZW5zb3JQcm90by5GTE9B VCwgb25ueC5UZW5zb3JQcm90by5GTE9BVDE2LCBvbm54LlRlbnNvclByb3RvLkJGTE9BVDE2XQor LSAgICApCistICAgIGRlZiB0ZXN0X2RlcXVhbnRpemVsaW5lYXIoc2VsZiwgZWxlbV90eXBlKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzMCwgNCwgNSkp LAorLSAgICAgICAgICAgICAgICAoInhfc2NhbGUiLCBlbGVtX3R5cGUsICgpKSwKKy0gICAgICAg ICAgICAgICAgKCJ4X3plcm9fcG9pbnQiLCBUZW5zb3JQcm90by5VSU5UOCwgKCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiRGVxdWFudGl6ZUxpbmVhciIsIFsi eCIsICJ4X3NjYWxlIiwgInhfemVyb19wb2ludCJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIGVsZW1fdHlwZSwgKDMwLCA0 LCA1KSldCistICAgICAgICApCistCisgICAgIGRlZiB0ZXN0X2R5bmFtaWNxdWFudGl6ZWxpbmVh cihzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSldLAorQEAgLTU1 NTEsMzgzICs0MTUyLDEyNSBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5m ZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCisgICAgICAgICAg ICAgICAgICAgICAicmVwZWF0cyIsCisgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5J TlQ2NCwKKy0gICAgICAgICAgICAgICAgICAgICgzLCksCistICAgICAgICAgICAgICAgICAgICB2 YWxzPW5wLmFycmF5KFsxLCAyLCAzXSwgZHR5cGU9IjxpOCIpLnRvYnl0ZXMoKSwKKy0gICAgICAg ICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAg XSwKKy0gICAgICAgICkgICMgRmVlZCByYXcgYnl0ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3Jk ZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3IgdGVzdCBwdXJwb3NlCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAxMCwgMTgpKV0KKy0gICAgICAgICkK Ky0KKy0gICAgZGVmIHRlc3RfdGlsZV9yYW5rX2luZmVyZW5jZShzZWxmKSAtPiBOb25lOgorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwgKCJyZXBlYXRzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgzLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUaWxlIiwgWyJ4IiwgInJlcGVhdHMi XSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUpKV0pICAjIHR5cGU6IGlnbm9yZQorLQor LSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0 ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKy0gICAgZGVmIHRlc3RfbGluZWFyY2xhc3NpZmll cl8xRF9pbnB1dChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDUsKSldLAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgIkxpbmVhckNsYXNzaWZpZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCist ICAgICAgICAgICAgICAgICAgICBbInkiLCAieiJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9t YWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRzPVsw LjAwMDgsIC0wLjAwMDhdLAorLSAgICAgICAgICAgICAgICAgICAgaW50ZXJjZXB0cz1bMi4wLCAy LjBdLAorLSAgICAgICAgICAgICAgICAgICAgY2xhc3NsYWJlbHNfaW50cz1bMSwgMl0sCistICAg ICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgMSksCistICAgICAgICAgICAgICAgIG1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCist CistICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRv IHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF9saW5lYXJjbGFzc2lm aWVyXzJEX2lucHV0KHNlbGYpIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSkpXSwK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAg ICAgICAgICAgICJMaW5lYXJDbGFzc2lmaWVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJd LAorLSAgICAgICAgICAgICAgICAgICAgWyJ5IiwgInoiXSwKKy0gICAgICAgICAgICAgICAgICAg IGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50 cz1bMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNl0sCistICAgICAgICAgICAgICAgICAgICBp bnRlcmNlcHRzPVsyLjAsIDIuMCwgMy4wXSwKKy0gICAgICAgICAgICAgICAgICAgIGNsYXNzbGFi ZWxzX2ludHM9WzEsIDIsIDNdLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSks CistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsIDMpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEp LAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAg ICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBkZWYgdGVzdF9yb2lhbGlnbl9zeW1ib2xp YyhzZWxmKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgi TiIsICJDIiwgIkgiLCAiVyIpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2lzIiwgVGVuc29yUHJv dG8uRkxPQVQsICgibnVtX3JvaXMiLCA0KSksCistICAgICAgICAgICAgICAgICgiYmF0Y2hfaW5k aWNlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIm51bV9yb2lzIiwpKSwKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAg ICAgICAgICAgICAgIlJvaUFsaWduIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2lz IiwgImJhdGNoX2luZGljZXMiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAg ICAgICAgICAgICAgICAgb3V0cHV0X2hlaWdodD0xMCwKKy0gICAgICAgICAgICAgICAgICAgIG91 dHB1dF93aWR0aD01LAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChn cmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJu dW1fcm9pcyIsICJDIiwgMTAsIDUpKV0pICAjIHR5cGU6IGlnbm9yZQorLQorLSAgICBkZWYgdGVz dF9yb2lhbGlnbl9zeW1ib2xpY19kZWZhdWx0cyhzZWxmKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg KCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKSwKKy0gICAgICAg ICAgICAgICAgKCJyb2lzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCA0KSksCist ICAgICAgICAgICAgICAgICgiYmF0Y2hfaW5kaWNlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIm51 bV9yb2lzIiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJv aUFsaWduIiwgWyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5kaWNlcyJdLCBbInkiXSldLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKGdy YXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm51 bV9yb2lzIiwgIkMiLCAxLCAxKSldKSAgIyB0eXBlOiBpZ25vcmUKKy0KKy0gICAgZGVmIHRlc3Rf cm9pYWxpZ25fbnVtX3JvaXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNv clByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJIIiwgIlciKSksCistICAgICAgICAgICAgICAgICgi cm9pcyIsIFRlbnNvclByb3RvLkZMT0FULCAoIm51bV9yb2lzIiwgNCkpLAorLSAgICAgICAgICAg ICAgICAoImJhdGNoX2luZGljZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDE1LCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUm9pQWxpZ24iLCBbIngiLCAicm9p cyIsICJiYXRjaF9pbmRpY2VzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxNSwgIkMiLCAxLCAxKSldKSAgIyB0 eXBlOiBpZ25vcmUKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgYWxs X3ZlcnNpb25zX2ZvcigiTGFiZWxFbmNvZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29u X2VtcHR5PVRydWUKKy0gICAgKQorLSAgICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3N0cmluZ19p bnQ2NChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCist ICAgICAgICAgICAgdmVyc2lvbiA8IDIsICJrZXlzXyogYXR0cmlidXRlcyB3ZXJlIGludHJvZHVj ZWQgaW4gYWkub25ueC5tbCBvcHNldCAyIgorLSAgICAgICAgKQorLSAgICAgICAgc3RyaW5nX2xp c3QgPSBbIkEiLCAibSIsICJ5Il0KKy0gICAgICAgIGZsb2F0X2xpc3QgPSBbOTQuMTcsIDM2LjAw LCAtOTkuMF0KKy0gICAgICAgIGludDY0X2xpc3QgPSBbMTIsIDI4LCA4Nl0KKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u U1RSSU5HLCAoNiwgMSkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAg ICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAg ICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtl eXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19pbnQ2 NHM9aW50NjRfbGlzdCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDYsIDEpKV0sCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwg dmVyc2lvbiksCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEp LAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwg MykpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAg ICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4 Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRv bWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfaW50NjRzPWlu dDY0X2xpc3QsCistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlz dCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5TVFJJTkcsICgyLCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9Wwor LSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAor LSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSldLAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAg ICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAg ICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxf RE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c19mbG9hdHM9ZmxvYXRfbGlzdCwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50NjRfbGlzdCwKKy0gICAgICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKysgICAgICAgICAgICAgICAgICAgICgzLCks CisrICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFsxLCAyLCAzXSwgZHR5cGU9Ijxp OCIpLnRvYnl0ZXMoKSwKKysgICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorKyAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgXSwKKysgICAgICAgICkgICMgRmVlZCByYXcgYnl0ZXMg KGZvcmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3IgdGVz dCBwdXJwb3NlCisrICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisrICAgICAgICAgICAg Z3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0 LCAxMCwgMTgpKV0KKyAgICAgICAgICkKKyAKKysgICAgZGVmIHRlc3RfdGlsZV9yYW5rX2luZmVy ZW5jZShzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDgsKSldLAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAg IkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAg ICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9N QUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c19pbnQ2NHM9aW50NjRfbGlzdCwKKy0gICAg ICAgICAgICAgICAgICAgIHZhbHVlc19mbG9hdHM9ZmxvYXRfbGlzdCwKKy0gICAgICAgICAgICAg ICAgKQorLSAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZM T0FULCAoNCwgNSwgNikpLCAoInJlcGVhdHMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAor KyAgICAgICAgICAgIFttYWtlX25vZGUoIlRpbGUiLCBbIngiLCAicmVwZWF0cyJdLCBbInkiXSld LAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9N QUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKysgICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUpKV0pICAjIHR5cGU6IGlnbm9yZQorIAorKyAgICBA dW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFp Lm9ubngubWwgb3BlcmF0b3JzIikKKysgICAgZGVmIHRlc3RfbGluZWFyY2xhc3NpZmllcl8xRF9p bnB1dChzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKysgICAgICAgICAg ICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg1LCkpXSwKKyAgICAgICAgICAgICBbCisgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29k ZXIiLAorKyAgICAgICAgICAgICAgICAgICAgIkxpbmVhckNsYXNzaWZpZXIiLAorICAgICAgICAg ICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKysgICAgICAg ICAgICAgICAgICAgIFsieSIsICJ6Il0sCisgICAgICAgICAgICAgICAgICAgICBkb21haW49T05O WF9NTF9ET01BSU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX2Zsb2F0cz1mbG9hdF9saXN0 LAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCisrICAg ICAgICAgICAgICAgICAgICBjb2VmZmljaWVudHM9WzAuMDAwOCwgLTAuMDAwOF0sCisrICAgICAg ICAgICAgICAgICAgICBpbnRlcmNlcHRzPVsyLjAsIDIuMF0sCisrICAgICAgICAgICAgICAgICAg ICBjbGFzc2xhYmVsc19pbnRzPVsxLCAyXSwKKyAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgIF0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgpKV0sCisrICAgICAgICAg ICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uSU5UNjQsICgxLCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSksCisrICAgICAgICAgICAgXSwKKyAg ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlk KE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKysgICAgICAgICAgICAgICAgbWFrZV9vcHNldGlk KE9OTlhfTUxfRE9NQUlOLCAxKSwKKyAgICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCAxMSksCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICkKKyAKKysgICAgQHVuaXR0 ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54 Lm1sIG9wZXJhdG9ycyIpCisrICAgIGRlZiB0ZXN0X2xpbmVhcmNsYXNzaWZpZXJfMkRfaW5wdXQo c2VsZikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMSwgMikpXSwKKysgICAgICAgICAg ICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCA1KSldLAorICAgICAgICAgICAgIFsKKyAg ICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5j b2RlciIsCisrICAgICAgICAgICAgICAgICAgICAiTGluZWFyQ2xhc3NpZmllciIsCisgICAgICAg ICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorKyAgICAg ICAgICAgICAgICAgICAgWyJ5IiwgInoiXSwKKyAgICAgICAgICAgICAgICAgICAgIGRvbWFpbj1P Tk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfc3RyaW5ncz1zdHJpbmdf bGlzdCwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19mbG9hdHM9ZmxvYXRfbGlzdCwKKysg ICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50cz1bMC4xLCAwLjIsIDAuMywgMC40LCAwLjUs IDAuNl0sCisrICAgICAgICAgICAgICAgICAgICBpbnRlcmNlcHRzPVsyLjAsIDIuMCwgMy4wXSwK KysgICAgICAgICAgICAgICAgICAgIGNsYXNzbGFiZWxzX2ludHM9WzEsIDIsIDNdLAorICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAg ICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMSwgMikpXSwKKysgICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCisrICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQs IDMpKSwKKysgICAgICAgICAgICBdLAorICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAg ICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorKyAg ICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEpLAorICAgICAgICAg ICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKyAgICAgICAgICAgICBdLAor ICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBhbGxf dmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25f ZW1wdHk9VHJ1ZQorLSAgICApCistICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0 dHJpYnV0ZXMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElm KAorLSAgICAgICAgICAgIHZlcnNpb24gPCA0LCAidGVuc29yIGF0dHJpYnV0ZXMgd2VyZSBpbnRy b2R1Y2VkIGluIGFpLm9ubngubWwgb3BzZXQgNCIKKy0gICAgICAgICkKKy0gICAgICAgIGtleV90 ZW5zb3IgPSBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAia2V5c190ZW5zb3IiLCBUZW5zb3JQ cm90by5TVFJJTkcsIFs0XSwgWyJhIiwgImIiLCAiY2MiLCAiZGRkIl0KKy0gICAgICAgICkKKy0g ICAgICAgIHZhbHVlc190ZW5zb3IgPSBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAidmFsdWVz X3RlbnNvciIsIFRlbnNvclByb3RvLklOVDY0LCBbNF0sIFsxLCAyLCAzLCA0XQorLSAgICAgICAg KQorKyAgICBkZWYgdGVzdF9yb2lhbGlnbl9zeW1ib2xpYyhzZWxmKSAtPiBOb25lOgorICAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorKyAgICAgICAgICAgIFsKKysgICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIp KSwKKysgICAgICAgICAgICAgICAgKCJyb2lzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibnVtX3Jv aXMiLCA0KSksCisrICAgICAgICAgICAgICAgICgiYmF0Y2hfaW5kaWNlcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoIm51bV9yb2lzIiwpKSwKKysgICAgICAgICAgICBdLAorICAgICAgICAgICAgIFsK KyAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVs RW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKysgICAgICAgICAgICAgICAg ICAgICJSb2lBbGlnbiIsCisrICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9pcyIsICJiYXRj aF9pbmRpY2VzIl0sCisgICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAg ICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNf dGVuc29yPWtleV90ZW5zb3IsCistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdGVuc29yPXZh bHVlc190ZW5zb3IsCistICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3RlbnNvcj1tYWtlX3Rl bnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdF90ZW5zb3IiLCBUZW5zb3JQ cm90by5JTlQ2NCwgWzFdLCBbMF0KKy0gICAgICAgICAgICAgICAgICAgICksCisrICAgICAgICAg ICAgICAgICAgICBvdXRwdXRfaGVpZ2h0PTEwLAorKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0 X3dpZHRoPTUsCisgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICBdLAorICAgICAgICAg ICAgIFtdLAorICAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uSU5UNjQsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9E T01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBp ZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1ZQorLSAgICApCistICAgIGRlZiB0 ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0ZXNfaW52YWxpZF9jb25maWd1cmF0aW9u cygKKy0gICAgICAgIHNlbGYsIF8sIHZlcnNpb24KKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAg c2VsZi5za2lwSWYodmVyc2lvbiA8IDQsICJ0ZW5zb3IgYXR0cmlidXRlcyBpbnRyb2R1Y2VkIGlu IGFpLm9ubngubWwgb3BzZXQgNCIpCistICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3Io CistICAgICAgICAgICAgImtleXNfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsi YSIsICJiIiwgImNjIiwgImRkZCJdCistICAgICAgICApCistICAgICAgICB2YWx1ZXNfdGVuc29y ID0gbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90 by5JTlQ2NCwgWzRdLCBbMSwgMiwgMywgNF0KKy0gICAgICAgICkKKy0KKy0gICAgICAgIG9wc2V0 X2ltcG9ydHMgPSBbCistICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2 ZXJzaW9uKSwKKy0gICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0g ICAgICAgIF0KKysgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIsICJDIiwg MTAsIDUpKV0pICAjIHR5cGU6IGlnbm9yZQorIAorLSAgICAgICAgIyBkZWZhdWx0X3RlbnNvciBz aG91bGQgYmUgSU5UNjQsIHNhbWUgdHlwZSBhcyB2YWx1ZXNfdGVuc29yCisrICAgIGRlZiB0ZXN0 X3JvaWFsaWduX3N5bWJvbGljX2RlZmF1bHRzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNU UklORywgKCJNIiwgTm9uZSwgMywgMTIpKV0sCisgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCist ICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAg ICAgICAgICBrZXlzX3RlbnNvcj1rZXlfdGVuc29yLAorLSAgICAgICAgICAgICAgICAgICAgdmFs dWVzX3RlbnNvcj12YWx1ZXNfdGVuc29yLAorLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90 ZW5zb3I9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVu c29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbMV0sIFswXQorLSAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgKQorKyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKCJOIiwgIkMiLCAiSCIsICJXIikpLAorKyAgICAgICAgICAgICAgICAoInJvaXMi LCBUZW5zb3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIsIDQpKSwKKysgICAgICAgICAgICAgICAg KCJiYXRjaF9pbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgibnVtX3JvaXMiLCkpLAorICAg ICAgICAgICAgIF0sCisrICAgICAgICAgICAgW21ha2Vfbm9kZSgiUm9pQWxpZ24iLCBbIngiLCAi cm9pcyIsICJiYXRjaF9pbmRpY2VzIl0sIFsieSJdKV0sCisgICAgICAgICAgICAgW10sCisgICAg ICAgICApCisrICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCAiQyIsIDEs IDEpKV0pICAjIHR5cGU6IGlnbm9yZQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCist ICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAg ICAgICAgc2VsZi5faW5mZXJyZWQsCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzLAorLSAgICAgICAgKQorLQorLSAgICAgICAgIyBk ZWZhdWx0X3RlbnNvciBzaG91bGQgYmUgYSBzaW5nbGV0b24gb2Ygc2hhcGUgKDEsKQorKyAgICBk ZWYgdGVzdF9yb2lhbGlnbl9udW1fcm9pcyhzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJ TkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCistICAg ICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAg ICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAg ICAgICAga2V5c190ZW5zb3I9a2V5X3RlbnNvciwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVl c19zdHJpbmdzPVsiYSIsICJiIiwgImNjIiwgImRkZCJdLAorLSAgICAgICAgICAgICAgICAgICAg ZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImRl ZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbMSwgMl0sIFswLCAwXQorLSAgICAg ICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKQorKyAgICAgICAgICAgICAgICAo IngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJOIiwgIkMiLCAiSCIsICJXIikpLAorKyAgICAgICAg ICAgICAgICAoInJvaXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIsIDQpKSwKKysg ICAgICAgICAgICAgICAgKCJiYXRjaF9pbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxNSwp KSwKKyAgICAgICAgICAgICBdLAorKyAgICAgICAgICAgIFttYWtlX25vZGUoIlJvaUFsaWduIiwg WyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5kaWNlcyJdLCBbInkiXSldLAorICAgICAgICAgICAgIFtd LAorICAgICAgICAgKQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAgICAg ICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAgc2Vs Zi5faW5mZXJyZWQsCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1vcHNldF9pbXBvcnRzLAorLSAgICAgICAgKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMTUsICJDIiwgMSwgMSkpXSkgICMgdHlwZTogaWdub3JlCisgCisgICAgIGRlZiBtYWtl X3NwYXJzZSgKKyAgICAgICAgIHNlbGYsCitAQCAtODEzNiwxMDUgKzY0NzksNiBAQCBjbGFzcyBU ZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICkK KyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW291dHB1dF90ZW5zb3JfdmFs X2luZm9dKSAgIyB0eXBlOiBpZ25vcmUKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCistICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxp dF9iYXNpYyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vic3RyaW5ncyA9 IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInN1YnN0cmluZ3MiLAorLSAg ICAgICAgICAgIFRlbnNvclByb3RvLlNUUklORywKKy0gICAgICAgICAgICAoMiwgTm9uZSksCist ICAgICAgICApCistICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5n dGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclBy b3RvLlNUUklORywgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0pXSwKKy0g ICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb c3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQor LSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRfc3ltYm9saWMoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAg ICAgICAgICAgICJzdWJzdHJpbmdzIiwKKy0gICAgICAgICAgICBUZW5zb3JQcm90by5TVFJJTkcs CistICAgICAgICAgICAgKCJBIiwgTm9uZSksCistICAgICAgICApCistICAgICAgICBsZW5ndGgg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJB IiwpKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIkEiLCkpLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngi XSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdKV0sCistICAgICAgICAgICAgW3N1YnN0cmluZ3Ms IGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCist ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nX3Nw bGl0X25lc3RlZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vic3RyaW5n cyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInN1YnN0cmluZ3MiLCBU ZW5zb3JQcm90by5TVFJJTkcsICgyLCA0LCAzLCBOb25lKQorLSAgICAgICAgKQorLSAgICAgICAg bGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCA0LCAzKSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIs IDQsIDMpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmlu Z1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwgbWF4c3BsaXQ9MildLAor LSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0Iikp CistICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF96ZXJvX2RpbWVuc2lvbmFsX2lucHV0KHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKE5vbmUsKSkKKy0g ICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSkKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywg KCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3Bs aXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCistICAg ICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1 YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0g ICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X2VtcHR5X2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0g ICAgICAgICAgICAic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCwg Tm9uZSkKKy0gICAgICAgICkKKy0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCAzLCAwKSkKKy0KKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCkpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJz dHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCistICAgICAgICAgICAgW3N1YnN0cmlu Z3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9vcHRpb25hbF90 ZW5zb3JfZ2V0X2VsZW1lbnQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHRlbnNvcl90eXBlX3By b3RvID0gaGVscGVyLm1ha2VfdGVuc29yX3R5cGVfcHJvdG8oCisgICAgICAgICAgICAgZWxlbV90 eXBlPVRlbnNvclByb3RvLkRPVUJMRSwgc2hhcGU9WzIsIDEsIDRdCitAQCAtODc1OSwxMTQgKzcw MDMsMjggQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBl cik6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgWwor ICAgICAgICAgICAgICAgICAoImlucHV0MSIsIFRlbnNvclByb3RvLkZMT0FULCAoMjIwLCAzMTAs IDMpKSwKKy0gICAgICAgICAgICAgICAgKCJpbnB1dDIiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEx MCwgMjEwLCAzKSksCistICAgICAgICAgICAgICAgICgiaW5wdXQzIiwgVGVuc29yUHJvdG8uRkxP QVQsICg5MCwgMTEwLCAzKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJTZXF1ZW5jZUNv bnN0cnVjdCIsIFsiaW5wdXQxIiwgImlucHV0MiIsICJpbnB1dDMiXSwgWyJpbl9zZXF1ZW5jZSJd CistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiU2VxdWVu Y2VNYXAiLCBbImluX3NlcXVlbmNlIl0sIFsic2hhcGVzIl0sIGJvZHk9Ym9keV9ncmFwaCksCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3NlcXVlbmNlX3ZhbHVlX2luZm8oCistICAg ICAgICAgICAgICAgICAgICAiaW5fc2VxdWVuY2UiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUs IE5vbmUsIDMpCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3NlcXVlbmNlX3ZhbHVlX2luZm8oInNoYXBlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMywp KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKy0KKy0gICAg ZGVmIHRlc3RfaGFtbWluZ3dpbmRvdyhzZWxmKToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAg ICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKy0gICAg ICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklO VDY0LCAoKSwgKDEwLCkpLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBt YWtlX25vZGUoIkhhbW1pbmdXaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdKSwKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKSAgIyB0 eXBlOiBpZ25vcmUKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK Ky0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBb XSwKKy0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkp LAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbW1p bmdXaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0wKSwKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uRkxPQVQsICgxMCwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKSAgIyB0eXBl OiBpZ25vcmUKKy0KKy0gICAgZGVmIHRlc3RfaGFubndpbmRvdyhzZWxmKToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25z dGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsi c2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorLSAgICAgICAgICAgICAgICApLAorLSAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbm5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbXSwKKysgICAgICAgICAgICAgICAgKCJpbnB1dDIiLCBUZW5z b3JQcm90by5GTE9BVCwgKDExMCwgMjEwLCAzKSksCisrICAgICAgICAgICAgICAgICgiaW5wdXQz IiwgVGVuc29yUHJvdG8uRkxPQVQsICg5MCwgMTEwLCAzKSksCisrICAgICAgICAgICAgXSwKKyAg ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAg ICAgICAgICAgIFsic2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVu c29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorKyAgICAgICAgICAg ICAgICAgICAgIlNlcXVlbmNlQ29uc3RydWN0IiwgWyJpbnB1dDEiLCAiaW5wdXQyIiwgImlucHV0 MyJdLCBbImluX3NlcXVlbmNlIl0KKyAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCks CisrICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiU2VxdWVuY2VNYXAiLCBbImluX3NlcXVlbmNl Il0sIFsic2hhcGVzIl0sIGJvZHk9Ym9keV9ncmFwaCksCisgICAgICAgICAgICAgXSwKKyAgICAg ICAgICAgICBbXSwKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK KyAgICAgICAgICAgICBncmFwaCwKKyAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0g ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMTAsKSksCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3NlcXVlbmNlX3ZhbHVl X2luZm8oCisrICAgICAgICAgICAgICAgICAgICAiaW5fc2VxdWVuY2UiLCBUZW5zb3JQcm90by5G TE9BVCwgKE5vbmUsIE5vbmUsIDMpCisrICAgICAgICAgICAgICAgICksCisrICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3NlcXVlbmNlX3ZhbHVlX2luZm8oInNoYXBlcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoMywpKSwKKyAgICAgICAgICAgICBdLAorICAgICAgICAgKSAgIyB0eXBlOiBpZ25v cmUKKyAKKy0gICAgZGVmIHRlc3RfYmxhY2ttYW53aW5kb3coc2VsZik6CisrICAgIGRlZiB0ZXN0 X2hhbW1pbmd3aW5kb3coc2VsZik6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgWworQEAgLTg4NzYsNyArNzAzNCw3IEBA IGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAg ICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorICAgICAgICAgICAgICAgICAgICAgdmFsdWU9 bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCisgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5k b3ciLCBbInNoYXBlIl0sIFsieSJdKSwKKysgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW1t aW5nV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCisgICAgICAgICAgICAgXSwKKyAgICAgICAg ICAgICBbXSwKKyAgICAgICAgICkKK0BAIC04ODk3LDcgKzcwNTUsNyBAQCBjbGFzcyBUZXN0U2hh cGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICAgICAg ICAgIFsic2hhcGUiXSwKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJz aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorICAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJzaGFwZSJd LCBbInkiXSwgcGVyaW9kaWM9MCksCisrICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFtbWlu Z1dpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0sIHBlcmlvZGljPTApLAorICAgICAgICAgICAgIF0s CisgICAgICAgICAgICAgW10sCisgICAgICAgICApCitAQCAtODkwOSw0NjMgKzcwNjcsOTEgQEAg Y2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAg ICAgICAgICAgXSwKKyAgICAgICAgICkgICMgdHlwZTogaWdub3JlCisgCistICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgIG5hbWUsCistICAgICAgICAgICAgICAgIHZlcnNpb24sCistICAgICAgICAgICAgICAgIHRl c3RfYXNwZWN0LAorLSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAg ICAgYXhpcywKKy0gICAgICAgICAgICAgICAgb25lc2lkZWQsCistICAgICAgICAgICAgICAgIGlu dmVyc2UsCistICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAorLSAgICAgICAgICAgICkK Ky0gICAgICAgICAgICBmb3IgKG5hbWUsIHZlcnNpb24pLCAoCistICAgICAgICAgICAgICAgIHRl c3RfYXNwZWN0LAorLSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAg ICAgYXhpcywKKy0gICAgICAgICAgICAgICAgb25lc2lkZWQsCistICAgICAgICAgICAgICAgIGlu dmVyc2UsCistICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAorLSAgICAgICAgICAgICkg aW4gaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3Io IkRGVCIpLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAoInJlYWxz X2RlZmF1bHRfYXhpcyIsICgyLCA1LCAxKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDUsIDIpKSwK Ky0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwg MCwgMCwgKDMsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNf MSIsICgzLCA1LCAxMCwgMSksIDEsIDAsIDAsICgzLCA1LCAxMCwgMikpLAorLSAgICAgICAgICAg ICAgICAgICAgKCJyZWFsc19heGlzXzIiLCAoMywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwg MTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwg MTAsIDEpLCAtMiwgMCwgMCwgKDMsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAo InJlYWxzX2F4aXNfMF9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDAsIDEsIDAsICgyLCA1LCAx MCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQiLCAo MywgNSwgMTAsIDEpLCAxLCAxLCAwLCAoMywgMywgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAg ICAgICgicmVhbHNfYXhpc18yX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMs IDUsIDYsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lk ZWQiLCAoMywgNSwgMTAsIDEpLCAtMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwKKy0gICAgICAgICAg ICAgICAgICAgICgiY29tcGxleF9kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUsIE5vbmUs IE5vbmUsICgyLCA1LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfb25lc2lk ZWQiLCAoMiwgNSwgMiksIDEsIDEsIE5vbmUsICgyLCAzLCAyKSksCistICAgICAgICAgICAgICAg ICAgICAoInJlYWxfaW52ZXJzZSIsICgyLCA1LCAxKSwgMSwgTm9uZSwgMSwgKDIsIDUsIDIpKSwK Ky0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9pbnZlcnNlIiwgKDIsIDUsIDIpLCAxLCBO b25lLCAxLCAoMiwgNSwgMikpLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICkK Ky0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnQoCistICAgICAgICBzZWxmLAor LSAgICAgICAgXzogc3RyLAorLSAgICAgICAgdmVyc2lvbjogaW50LAorLSAgICAgICAgX3Rlc3Rf YXNwZWN0OiBzdHIsCistICAgICAgICBpbnB1dF9zaGFwZTogdHVwbGVbaW50XSwKKy0gICAgICAg IGF4aXM6IGludCB8IE5vbmUsCistICAgICAgICBvbmVzaWRlZDogaW50IHwgTm9uZSwKKy0gICAg ICAgIGludmVyc2U6IGludCB8IE5vbmUsCistICAgICAgICBleHBlY3RlZF9zaGFwZTogdHVwbGVb aW50XSwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgIyBCdWlsZCB0aGUgYXR0cmlidXRlcyBm b3IgZGlmZmVyZW50IG9wc2V0IHZlcnNpb25zCistICAgICAgICBhdHRyaWJ1dGVzID0ge30KKy0g ICAgICAgIGlmIG9uZXNpZGVkIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJpYnV0ZXNb Im9uZXNpZGVkIl0gPSBvbmVzaWRlZAorLSAgICAgICAgaWYgaW52ZXJzZSBpcyBub3QgTm9uZToK Ky0gICAgICAgICAgICBhdHRyaWJ1dGVzWyJpbnZlcnNlIl0gPSBpbnZlcnNlCistCistICAgICAg ICBpZiB2ZXJzaW9uIDwgMjA6CistICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKKy0g ICAgICAgICAgICAgICAgYXR0cmlidXRlc1siYXhpcyJdID0gYXhpcworLSAgICAgICAgICAgIG5v ZGVzID0gW21ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiXSwgWyJvdXRwdXQiXSwgKiphdHRy aWJ1dGVzKV0gICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorLSAgICAgICAgICAgIHZhbHVlX2lu Zm9zID0gW10KKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPj0g MjAKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBu b2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoYXhpcywp KSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVz KSwgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorLSAgICAgICAgICAgICAgICBdCistICAgICAg ICAgICAgICAgIHZhbHVlX2luZm9zID0gW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oImF4aXMiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKCkpXQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAg ICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlu cHV0IiwgIiIsICIiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwgICMgdHlwZTogaWdub3Jl W2FyZy10eXBlXQorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgICAgIHZhbHVlX2lu Zm9zID0gW10KKy0KKy0gICAgICAgICMgQ29uc3RydWN0IHRoZSBncmFwaAorKyAgICBkZWYgdGVz dF9oYW5ud2luZG93KHNlbGYpOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor ICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKAorICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKyAgICAgICAgICAgICAgICAg ICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAgICAg ICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0 IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAg ICAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBu cC5vbmVzKGlucHV0X3NoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAg ICAgICAgICAgICAgICApLAorKyAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorKyAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpLCAoMTAsKSksCisgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICpu b2RlcywKKysgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJd LCBbInkiXSksCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkK KyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKyAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlu cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAgICAg KnZhbHVlX2luZm9zLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJv dXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfc2hhcGUpLAorKyAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo KSksCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEwLCkpLAorICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAg ICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBuYW1lLAorLSAgICAgICAgICAgICAgICB2ZXJz aW9uLAorLSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKKy0gICAgICAgICAgICAgICAgaW5w dXRfc2hhcGUsCistICAgICAgICAgICAgICAgIGF4aXMsCistICAgICAgICAgICAgICAgIG9uZXNp ZGVkLAorLSAgICAgICAgICAgICAgICBpbnZlcnNlLAorLSAgICAgICAgICAgICAgICBleHBlY3Rl ZF9zaGFwZSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgZm9yIChuYW1lLCB2ZXJzaW9u KSwgKAorLSAgICAgICAgICAgICAgICB0ZXN0X2FzcGVjdCwKKy0gICAgICAgICAgICAgICAgaW5w dXRfc2hhcGUsCistICAgICAgICAgICAgICAgIGF4aXMsCistICAgICAgICAgICAgICAgIG9uZXNp ZGVkLAorLSAgICAgICAgICAgICAgICBpbnZlcnNlLAorLSAgICAgICAgICAgICAgICBleHBlY3Rl ZF9zaGFwZSwKKy0gICAgICAgICAgICApIGluIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAg ICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJERlQiKSwKKy0gICAgICAgICAgICAgICAgKAorLSAg ICAgICAgICAgICAgICAgICAgKCJyZWFsc19kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMSksIE5vbmUs IE5vbmUsIE5vbmUsICgyLCA0MiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19h eGlzXzAiLCAoMywgNSwgMTAsIDEpLCAwLCAwLCAwLCAoNDIsIDUsIDEwLCAyKSksCistICAgICAg ICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMSIsICgzLCA1LCAxMCwgMSksIDEsIDAsIDAsICgz LCA0MiwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yIiwgKDMs IDUsIDEwLCAxKSwgMiwgMCwgMCwgKDMsIDUsIDQyLCAyKSksCistICAgICAgICAgICAgICAgICAg ICAoInJlYWxzX2F4aXNfbmVnIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDAsIDAsICgzLCA1LCA0Miwg MikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzBfb25lc2lkZWQiLCAoMywg NSwgMTAsIDEpLCAwLCAxLCAwLCAoMjIsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAg ICAoInJlYWxzX2F4aXNfMV9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDEsIDEsIDAsICgzLCAy MiwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yX29uZXNpZGVk IiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMsIDUsIDIyLCAyKSksCistICAgICAgICAgICAg ICAgICAgICAoInJlYWxzX2F4aXNfbmVnX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDEs IDAsICgzLCA1LCAyMiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X2RlZmF1 bHRfYXhpcyIsICgyLCA1LCAyKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDQyLCAyKSksCistICAg ICAgICAgICAgICAgICAgICAoImNvbXBsZXhfb25lc2lkZWQiLCAoMiwgNSwgMiksIDEsIDEsIE5v bmUsICgyLCAyMiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsX2ludmVyc2UiLCAo MiwgNSwgMSksIDEsIE5vbmUsIDEsICgyLCA0MiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAg KCJjb21wbGV4X2ludmVyc2UiLCAoMiwgNSwgMiksIDEsIE5vbmUsIDEsICgyLCA0MiwgMikpLAor LSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICkKKy0gICAgICAgIF0KKy0gICAgKQor LSAgICBkZWYgdGVzdF9kZnRfZGZ0X2xlbmd0aCgKKy0gICAgICAgIHNlbGYsCistICAgICAgICBf OiBzdHIsCistICAgICAgICB2ZXJzaW9uOiBpbnQsCistICAgICAgICBfdGVzdF9hc3BlY3Q6IHN0 ciwKKy0gICAgICAgIGlucHV0X3NoYXBlOiB0dXBsZVtpbnRdLAorLSAgICAgICAgYXhpczogaW50 IHwgTm9uZSwKKy0gICAgICAgIG9uZXNpZGVkOiBpbnQgfCBOb25lLAorLSAgICAgICAgaW52ZXJz ZTogaW50IHwgTm9uZSwKKy0gICAgICAgIGV4cGVjdGVkX3NoYXBlOiB0dXBsZVtpbnRdLAorLSAg ICApIC0+IE5vbmU6CistICAgICAgICAjIEJ1aWxkIHRoZSBhdHRyaWJ1dGVzIGZvciBkaWZmZXJl bnQgb3BzZXQgdmVyc2lvbnMKKy0gICAgICAgIGF0dHJpYnV0ZXMgPSB7fQorLSAgICAgICAgaWYg b25lc2lkZWQgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgYXR0cmlidXRlc1sib25lc2lkZWQi XSA9IG9uZXNpZGVkCistICAgICAgICBpZiBpbnZlcnNlIGlzIG5vdCBOb25lOgorLSAgICAgICAg ICAgIGF0dHJpYnV0ZXNbImludmVyc2UiXSA9IGludmVyc2UKKy0KKy0gICAgICAgIGRmdF9sZW5n dGggPSA0MgorLQorLSAgICAgICAgaWYgdmVyc2lvbiA8IDIwOgorLSAgICAgICAgICAgIGlmIGF4 aXMgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbImF4aXMiXSA9IGF4 aXMKKy0gICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAor LSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtd LAorLSAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVuZ3RoIl0sCistICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xl bmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGRmdF9sZW5ndGgsKQorLSAgICAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9u b2RlKCJERlQiLCBbImlucHV0IiwgImRmdF9sZW5ndGgiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1 dGVzKSwgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorLSAgICAgICAgICAgIF0KKy0gICAgICAg ICAgICB2YWx1ZV9pbmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKV0KKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgYXNz ZXJ0IHZlcnNpb24gPj0gMjAKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAg ICAgICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK Ky0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAorLSAgICAgICAg ICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpLCAoYXhpcywpKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwK Ky0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBb ImRmdF9sZW5ndGgiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNv cigKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCksIChkZnRfbGVuZ3RoLCkKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi REZUIiwgWyJpbnB1dCIsICJkZnRfbGVuZ3RoIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgKiphdHRy aWJ1dGVzKSwgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQorLSAgICAgICAgICAgICAgICBdCist ICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSks CistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwgVGVu c29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIGVs c2U6CistICAgICAgICAgICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAg ICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVuZ3Ro Il0sCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgp LCAoZGZ0X2xlbmd0aCwpCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5w dXQiLCAiZGZ0X2xlbmd0aCIsICIiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwgICMgdHlw ZTogaWdub3JlW2FyZy10eXBlXQorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgICAg IHZhbHVlX2luZm9zID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSkKKy0gICAgICAgICAgICAg ICAgXQorKyAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKKyAKKy0gICAgICAgICMgQ29uc3RydWN0 IHRoZSBncmFwaAorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAg ICAgIFtdLAorICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorICAg ICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKyAgICAgICAgICAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFs dWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKGlu cHV0X3NoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAgICAgICAgICAg ICAgICApLAorKyAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorKyAgICAgICAgICAgICAg ICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAo MTAsKSksCisgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICpub2RlcywKKysg ICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwg cGVyaW9kaWM9MCksCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAg ICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwK KyAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o ImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAg ICAgKnZhbHVlX2luZm9zLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfc2hhcGUpLAorLSAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJsYXN0IiwgMyksCistICAgICAg ICAgICAgKCJsYXN0X25lZ2F0aXZlIiwgLTEpLAorLSAgICAgICAgICAgICgib3V0X29mX3Jhbmdl IiwgNCksCistICAgICAgICAgICAgKCJvdXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCistICAg ICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDE3KHNl bGYsIF86IHN0ciwgYXhpczogaW50KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAg ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAg ICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAg ICAgICAgImlucHV0IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9B VCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAoMiwgNSwgNSwgMiksCistICAgICAgICAgICAg ICAgICAgICAgICAgbnAub25lcygoMiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0 ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiXSwgWyJvdXRwdXQiXSwg b25lc2lkZWQ9MSwgYXhpcz1heGlzKSwKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwK KyAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJv cik6CistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIp KSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNSwgMikpLAorLSAgICAgICAgICAgICAgICBdLAor LSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCAxNyldLAorLSAgICAgICAgICAgICkKKysgICAgICAgICkgICMgdHlwZTogaWdub3Jl CisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAg ICAoImxhc3QiLCAzKSwKKy0gICAgICAgICAgICAoImxhc3RfbmVnYXRpdmUiLCAtMSksCistICAg ICAgICAgICAgKCJvdXRfb2ZfcmFuZ2UiLCA0KSwKKy0gICAgICAgICAgICAoIm91dF9vZl9yYW5n ZV9uZWdhdGl2ZSIsIC01KSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRf aW52YWxpZF9heGlzX29wc2V0MjAoc2VsZiwgXzogc3RyLCBheGlzOiBpbnQpIC0+IE5vbmU6Cisr ICAgIGRlZiB0ZXN0X2JsYWNrbWFud2luZG93KHNlbGYpOgorICAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIFsKKyAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKAorICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKyAg ICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAor LSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAg ICAgICAgICAgImlucHV0IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5G TE9BVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAoMiwgNSwgNSwgMiksCistICAgICAgICAg ICAgICAgICAgICAgICAgbnAub25lcygoMiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZs YXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFu dCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiYXhp cyJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCksIChheGlzLCkpLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRw dXQiXSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0g ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJl bmNlRXJyb3IpOgorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA1 LCA1LCAyKSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJh eGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNSwg MikpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAorLSAgICAgICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAg ICgicmVhbCIsICgyLCA1LCA1LCAxKSksCistICAgICAgICAgICAgKCJjb21wbGV4IiwgKDIsIDUs IDUsIDIpKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19h eGlzX29wc2V0MjAoc2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dKSAtPiBOb25l OgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoImF4 aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAg ICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAg ICAgICAgICJpbnB1dCIsCistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxP QVQsCistICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCistICAgICAgICAgICAgICAgICAg ICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAg ICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKysgICAg ICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklO VDY0LCAoKSwgKDEwLCkpLAorICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBt YWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSksCisrICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJd KSwKKyAgICAgICAgICAgICBdLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorICAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBU ZW5zb3JQcm90by5GTE9BVCwgc2hhcGUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIpKSwKKysg ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKyAgICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0s CistICAgICAgICApCisrICAgICAgICApICAjIHR5cGU6IGlnbm9yZQorIAorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJyZWFsIiwgKDIsIDUs IDUsIDEpKSwKKy0gICAgICAgICAgICAoImNvbXBsZXgiLCAoMiwgNSwgNSwgMikpLAorLSAgICAg ICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RmdF9keW5hbWljX2F4aXNfb25lc2lkZWRfZGZ0 X2xlbmd0aF9vcHNldDIwKAorLSAgICAgICAgc2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50 LCAuLi5dCistICAgICkgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAg ICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAg ICAgICAgICBbImlucHV0Il0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNv cigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQiLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBl LAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoc2hhcGUsIGR0eXBlPW5wLmZsb2F0 MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJD b25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAg IFsiZGZ0X2xlbmd0aCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io CistICAgICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIFRlbnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICgp LAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFs0Ml0sIGR0eXBlPW5wLmludDY0 KSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJERlQiLCBbImlucHV0 IiwgImRmdF9sZW5ndGgiLCAiYXhpcyJdLCBbIm91dHB1dCJdLCBvbmVzaWRlZD0xCistICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o ImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlKSwKKy0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSks CistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAg ICAgICAgICAib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lLCAy KQorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKKy0gICAg ICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAg ICAgICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSksCistICAgICAgICAgICAgKCJjb21wbGV4Iiwg KDIsIDUsIDUsIDIpKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfZHlu YW1pY19heGlzX29uZXNpZGVkX29wc2V0MjAoCistICAgICAgICBzZWxmLCBfOiBzdHIsIHNoYXBl OiB0dXBsZVtpbnQsIC4uLl0KKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCkpXSwKKyAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKyAgICAg ICAgICAgICAgICAgICAgICJDb25zdGFudCIsCisgICAgICAgICAgICAgICAgICAgICBbXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVl PW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCistICAgICAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAg ICAgICAgc2hhcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5 cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAg ICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKysgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorICAgICAg ICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQi LCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgb25lc2lkZWQ9MSksCisrICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0w KSwKKyAgICAgICAgICAgICBdLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorICAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBU ZW5zb3JQcm90by5GTE9BVCwgc2hhcGUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICAgICAgICAgIm91dHB1dCIsIFRlbnNvclByb3RvLkZM T0FULCAoTm9uZSwgTm9uZSwgTm9uZSwgMikKKy0gICAgICAgICAgICAgICAgKSwKKysgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKyAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCistICAg ICAgICApCisrICAgICAgICApICAjIHR5cGU6IGlnbm9yZQorIAorICAgICBkZWYgdGVzdF9kZnRf b25lc2lkZWRfZGVmYXVsdF9heGlzX29wc2V0MTcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgICMg T3BzZXQgMTcgc2V0cyBkZWZhdWx0IGF4aXMgdG8gYmUgMS4KK0BAIC05ODQ2LDEzOSArNzYzMiw2 IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgor ICAgICAgICAgICAgIF0sCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChbVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkRPVUJMRSwgVGVuc29yUHJvdG8uRkxP QVQxNl0pCistICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVp cmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF90cmVlX2Vu c2VtYmxlKHNlbGYsIGR0eXBlKSAtPiBOb25lOgorLSAgICAgICAgaW50ZXJpb3Jfbm9kZXMgPSA1 CistICAgICAgICBsZWF2ZXMgPSA5CistICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorLSAgICAg ICAgICAgICJUcmVlRW5zZW1ibGUiLAorLSAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAg IFsieSJdLAorLSAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAg ICBuX3RhcmdldHM9NSwKKy0gICAgICAgICAgICBub2Rlc19mZWF0dXJlaWRzPVswXSAqIGludGVy aW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX3NwbGl0cz1tYWtlX3RlbnNvcigKKy0gICAg ICAgICAgICAgICAgIm5vZGVzX3NwbGl0cyIsCistICAgICAgICAgICAgICAgIGR0eXBlLAorLSAg ICAgICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKKy0gICAgICAgICAgICAgICAgbGlzdChy YW5nZShpbnRlcmlvcl9ub2RlcykpLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgbm9k ZXNfbW9kZXM9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCist ICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ4LAorLSAgICAgICAgICAgICAgICAoaW50 ZXJpb3Jfbm9kZXMsKSwKKy0gICAgICAgICAgICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCist ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBub2Rlc190cnVlbm9kZWlkcz1bMF0gKiBpbnRl cmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJp b3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfdHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25v ZGVzLAorLSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMs CistICAgICAgICAgICAgbWVtYmVyc2hpcF92YWx1ZXM9bWFrZV90ZW5zb3IoCistICAgICAgICAg ICAgICAgICJtZW1iZXJzaGlwX3ZhbHVlcyIsCistICAgICAgICAgICAgICAgIGR0eXBlLAorLSAg ICAgICAgICAgICAgICAoNywpLAorLSAgICAgICAgICAgICAgICBbMC4wLCAwLjEsIDAuMiwgbnAu bmFuLCAwLjQsIDAuNSwgMS4wXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIGxlYWZf dGFyZ2V0aWRzPVswXSAqIGxlYXZlcywKKy0gICAgICAgICAgICBsZWFmX3dlaWdodHM9bWFrZV90 ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIGR0eXBlLCAobGVhdmVzLCksIFsxXSAqIGxlYXZlcyksCist ICAgICAgICAgICAgdHJlZV9yb290cz1bMF0sCistICAgICAgICApCistCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIGR0eXBlLCAoIkJhdGNo IFNpemUiLCAiRmVhdHVyZXMiKSldLAorLSAgICAgICAgICAgIFt0cmVlXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIGR0eXBlLCAoIkJhdGNoIFNpemUiLCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDUpLAor LSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBbCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAibm9kZXNfdHJ1ZW5vZGVp ZHMiOiBbMF0gKiA2LAorLSAgICAgICAgICAgICAgICAibGVhZl93ZWlnaHRzIjogbWFrZV90ZW5z b3IoCistICAgICAgICAgICAgICAgICAgICAibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRE9V QkxFLCAoOSwpLCBbMV0gKiA5CistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAg ICJub2Rlc19zcGxpdHMiOiBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJub2Rl c19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUKKy0gICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICB9LAorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgIm5vZGVzX3RydWVub2RlaWRzIjogWzBdICogNSwKKy0gICAgICAgICAgICAgICAgImxlYWZf d2VpZ2h0cyI6IG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0 cyIsIFRlbnNvclByb3RvLkZMT0FULCAoOSwpLCBbMV0gKiA5CistICAgICAgICAgICAgICAgICks CistICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiOiBtYWtlX3RlbnNvcigKKy0gICAgICAg ICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsx XSAqIDUKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICB9LAorLSAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgIm5vZGVzX3RydWVub2RlaWRzIjogWzBdICogNSwKKy0gICAg ICAgICAgICAgICAgImxlYWZfd2VpZ2h0cyI6IG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAg ICAgICAgImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDE4LCksIFsxXSAqIDE4 CistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiOiBt YWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiLCBUZW5zb3JQ cm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICB9LAorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgIm5vZGVzX3RydWVub2Rl aWRzIjogWzBdICogNSwKKy0gICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0cyI6IG1ha2VfdGVu c29yKAorLSAgICAgICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkRP VUJMRSwgKDksKSwgWzFdICogOQorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAg ICAibm9kZXNfc3BsaXRzIjogbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAibm9k ZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg1LCksIFsxXSAqIDUKKy0gICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICB9LAorLSAgICAgICAgXQorLSAgICApCistICAgIEB1bml0 dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25u eC5tbCBvcGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX2ZhaWxzX2lmX2lu dmFsaWRfYXR0cmlidXRlcygKKy0gICAgICAgIHNlbGYsCistICAgICAgICBub2Rlc190cnVlbm9k ZWlkcywKKy0gICAgICAgIGxlYWZfd2VpZ2h0cywKKy0gICAgICAgIG5vZGVzX3NwbGl0cywKKy0g ICAgKSAtPiBOb25lOgorLSAgICAgICAgaW50ZXJpb3Jfbm9kZXMgPSA1CistICAgICAgICBsZWF2 ZXMgPSA5CistICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorLSAgICAgICAgICAgICJUcmVlRW5z ZW1ibGUiLAorLSAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgIFsieSJdLAorLSAgICAg ICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICBuX3RhcmdldHM9NSwK Ky0gICAgICAgICAgICBub2Rlc19mZWF0dXJlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAorLSAg ICAgICAgICAgIG5vZGVzX3NwbGl0cz1ub2Rlc19zcGxpdHMsCistICAgICAgICAgICAgbm9kZXNf bW9kZXM9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCistICAg ICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ4LAorLSAgICAgICAgICAgICAgICAoaW50ZXJp b3Jfbm9kZXMsKSwKKy0gICAgICAgICAgICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICBub2Rlc190cnVlbm9kZWlkcz1ub2Rlc190cnVlbm9k ZWlkcywKKy0gICAgICAgICAgICBub2Rlc19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9k ZXMsCistICAgICAgICAgICAgbm9kZXNfdHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25vZGVzLAor LSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAg ICAgICAgICAgbGVhZl90YXJnZXRpZHM9WzBdICogbGVhdmVzLAorLSAgICAgICAgICAgIGxlYWZf d2VpZ2h0cz1sZWFmX3dlaWdodHMsCistICAgICAgICAgICAgdHJlZV9yb290cz1bMF0sCistICAg ICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLkRPVUJMRSwgKCJCYXRjaCBTaXplIiwgIkZlYXR1cmVzIikp XSwKKy0gICAgICAgICAgICBbdHJlZV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VF cnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQorLQorICAgICBAdW5pdHRlc3Quc2tpcFVubGVz cyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3Jz IikKKyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9jbGFzc2lmaWVyKHNlbGYpIC0+IE5vbmU6 CisgICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorZGlmZiAtLWdpdCBhL29ubngvdGVzdC90ZXN0 X2JhY2tlbmRfcmVmZXJlbmNlLnB5IGIvb25ueC90ZXN0L3Rlc3RfYmFja2VuZF9yZWZlcmVuY2Uu cHkKK2luZGV4IDcxY2U3NjUxZS4uYjQ4MmYyNzc4IDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3Rl c3RfYmFja2VuZF9yZWZlcmVuY2UucHkKKysrKyBiL29ubngvdGVzdC90ZXN0X2JhY2tlbmRfcmVm ZXJlbmNlLnB5CitAQCAtMTkzLDYgKzE5MywxNSBAQCBiYWNrZW5kX3Rlc3QuZXhjbHVkZSgiKHRl c3RfZXllbGlrZV93aXRob3V0X2R0eXBlKSIpCisgIyBUaGUgZm9sbG93aW5nIHRlc3RzIGZhaWwg ZHVlIHRvIGRpc2NyZXBhbmNpZXMgKHNtYWxsIGJ1dCBzdGlsbCBoaWdoZXIgdGhhbiAxZS03KS4K KyBiYWNrZW5kX3Rlc3QuZXhjbHVkZSgidGVzdF9hZGFtX211bHRpcGxlIikgICMgMWUtMgorIAor K2JhY2tlbmRfdGVzdC5leGNsdWRlKAorKyAgICAiKCIKKysgICAgInRlc3RfYWZmaW5lX2dyaWRf MmRfYWxpZ25fY29ybmVyc19leHBhbmRlZF9jcHUiCisrICAgICJ8dGVzdF9hZmZpbmVfZ3JpZF8y ZF9leHBhbmRlZF9jcHUiCisrICAgICJ8dGVzdF9hZmZpbmVfZ3JpZF8zZF9hbGlnbl9jb3JuZXJz X2V4cGFuZGVkX2NwdSIKKysgICAgInx0ZXN0X2FmZmluZV9ncmlkXzNkX2V4cGFuZGVkX2NwdSIK KysgICAgIikiCisrKQorKworICMgQ3VycmVudGx5IGdvb2dsZS1yZTIvUGlsbG93IGlzIG5vdCBz dXBwb3J0ZWQgb24gV2luMzIgYW5kIGlzIHJlcXVpcmVkIGZvciB0aGUgcmVmZXJlbmNlIGltcGxl bWVudGF0aW9uIG9mIFJlZ2V4RnVsbE1hdGNoLgorIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi OgorICAgICBiYWNrZW5kX3Rlc3QuZXhjbHVkZSgidGVzdF9yZWdleF9mdWxsX21hdGNoX2Jhc2lj X2NwdSIpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weSBiL29u bngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkKK2luZGV4IGZjNGIyZjgwMi4uZDc1NWMwNGNj IDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weQorKysrIGIvb25u eC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weQorQEAgLTEyLDcgKzEyLDYgQEAgaW1wb3J0IHV1 aWQKKyBmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBTZXF1ZW5jZQorIAorIGltcG9ydCBudW1weSBh cyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubngg aW1wb3J0ICgKK0BAIC0xMTIsNjIxICsxMTEsNiBAQCBjbGFzcyBUZXN0TG9hZEV4dGVybmFsRGF0 YUJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChz ZWxmLm1vZGVsX2ZpbGVuYW1lKQorIAorIAorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRf Y2xhc3MoCistICAgIFsKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9i dWYifSwKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCist ICAgIF0KKy0pCistY2xhc3MgVGVzdExvYWRFeHRlcm5hbERhdGEoVGVzdExvYWRFeHRlcm5hbERh dGFCYXNlKToKKy0gICAgZGVmIHRlc3RfbG9hZF9leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6 CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0g bW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2Fs bGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFs dWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5h dHRyaWJ1dGVbMF0udAorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJy YXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYg dGVzdF9sb2FkX2V4dGVybmFsX2RhdGFfZm9yX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAg ICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVu YW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UK Ky0gICAgICAgICkKKy0gICAgICAgIGxvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfbW9kZWwobW9kZWws IHNlbGYudGVtcF9kaXIpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFw aC5pbml0aWFsaXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9f YXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0g ICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVsw XS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1 dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X3NhdmVf ZXh0ZXJuYWxfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0K Ky0gICAgICAgIHRlbXBfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2Nv cHkiKQorLSAgICAgICAgb3MubWtkaXIodGVtcF9kaXIpCistICAgICAgICBuZXdfbW9kZWxfZmls ZW5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAgICAgIG9u bnguc2F2ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0KQorLQorLSAgICAgICAgbmV3X21vZGVsID0gb25ueC5sb2FkX21vZGVsKG5ld19t b2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRp YWxpemVyX3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwg c2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBu ZXdfbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgbnAudGVzdGlu Zy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmli dXRlX3ZhbHVlKQorLQorLQorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCist ICAgIFsKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKKy0g ICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgIF0KKy0p CistY2xhc3MgVGVzdExvYWRFeHRlcm5hbERhdGFTaW5nbGVGaWxlKFRlc3RMb2FkRXh0ZXJuYWxE YXRhQmFzZSk6CistICAgIGRlZiBjcmVhdGVfZXh0ZXJuYWxfZGF0YV90ZW5zb3JzKAorLSAgICAg ICAgc2VsZiwgdGVuc29yc19kYXRhOiBsaXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KKy0gICAg KSAtPiBsaXN0W1RlbnNvclByb3RvXToKKy0gICAgICAgIHRlbnNvcl9maWxlbmFtZSA9ICJ0ZW5z b3JzLmJpbiIKKy0gICAgICAgIHRlbnNvcnMgPSBbXQorLQorLSAgICAgICAgd2l0aCBvcGVuKG9z LnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCB0ZW5zb3JfZmlsZW5hbWUpLCAiYWIiKSBhcyBkYXRh X2ZpbGU6CistICAgICAgICAgICAgZm9yIHZhbHVlLCB0ZW5zb3JfbmFtZSBpbiB0ZW5zb3JzX2Rh dGE6CistICAgICAgICAgICAgICAgIHRlbnNvciA9IGZyb21fYXJyYXkobnAuYXJyYXkodmFsdWUp KQorLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBkYXRhX2ZpbGUudGVsbCgpCistICAgICAgICAg ICAgICAgIGlmIG9mZnNldCAlIDQwOTYgIT0gMDoKKy0gICAgICAgICAgICAgICAgICAgIGRhdGFf ZmlsZS53cml0ZShiIlwwIiAqICg0MDk2IC0gb2Zmc2V0ICUgNDA5NikpCistICAgICAgICAgICAg ICAgICAgICBvZmZzZXQgPSBvZmZzZXQgKyA0MDk2IC0gb2Zmc2V0ICUgNDA5NgorLQorLSAgICAg ICAgICAgICAgICBkYXRhX2ZpbGUud3JpdGUodGVuc29yLnJhd19kYXRhKQorLSAgICAgICAgICAg ICAgICBzZXRfZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICAgICAgICAgIHRlbnNvciwKKy0g ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uPXRlbnNvcl9maWxlbmFtZSwKKy0gICAgICAgICAg ICAgICAgICAgIG9mZnNldD1vZmZzZXQsCistICAgICAgICAgICAgICAgICAgICBsZW5ndGg9ZGF0 YV9maWxlLnRlbGwoKSAtIG9mZnNldCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAg ICAgICB0ZW5zb3IubmFtZSA9IHRlbnNvcl9uYW1lCistICAgICAgICAgICAgICAgIHRlbnNvci5D bGVhckZpZWxkKCJyYXdfZGF0YSIpCistICAgICAgICAgICAgICAgIHRlbnNvci5kYXRhX2xvY2F0 aW9uID0gb25ueC5UZW5zb3JQcm90by5FWFRFUk5BTAorLSAgICAgICAgICAgICAgICB0ZW5zb3Jz LmFwcGVuZCh0ZW5zb3IpCistCistICAgICAgICByZXR1cm4gdGVuc29ycworLQorLSAgICBkZWYg dGVzdF9sb2FkX2V4dGVybmFsX3NpbmdsZV9maWxlX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAg ICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2Rl bC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkK Ky0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShh dHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0 X3NhdmVfZXh0ZXJuYWxfc2luZ2xlX2ZpbGVfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAg bW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIHRlbXBfZGlyID0gb3MucGF0aC5qb2luKHNlbGYu dGVtcF9kaXIsICJzYXZlX2NvcHkiKQorLSAgICAgICAgb3MubWtkaXIodGVtcF9kaXIpCistICAg ICAgICBuZXdfbW9kZWxfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5v bm54IikKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2ZpbGVuYW1l LCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgbmV3X21vZGVsID0gb25u eC5sb2FkX21vZGVsKG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1h dCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5pbml0aWFs aXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5p dGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0 dHJpYnV0ZV90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAor LSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3Rl bnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZChpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCAoVHJ1ZSwg RmFsc2UpKSkKKy0gICAgZGVmIHRlc3Rfc2F2ZV9leHRlcm5hbF9pbnZhbGlkX3NpbmdsZV9maWxl X2RhdGFfYW5kX2NoZWNrKAorLSAgICAgICAgc2VsZiwgdXNlX2Fic29sdXRlX3BhdGg6IGJvb2ws IHVzZV9tb2RlbF9wYXRoOiBib29sCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0g b25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQpCistCistICAgICAgICBtb2RlbF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rp ciwgInNhdmVfY29weSIpCistICAgICAgICBvcy5ta2Rpcihtb2RlbF9kaXIpCistCistICAgICAg ICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIgPSBvcy5wYXRoLmpvaW4oCistICAgICAgICAg ICAgc2VsZi50ZW1wX2RpciwgImludmxpZF9leHRlcm5hbF9kYXRhIgorLSAgICAgICAgKQorLSAg ICAgICAgb3MubWtkaXIodHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfZGlyKQorLQorLSAgICAgICAg aWYgdXNlX2Fic29sdXRlX3BhdGg6CistICAgICAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2Rh dGFfbG9jYXRpb24gPSBvcy5wYXRoLmpvaW4oCistICAgICAgICAgICAgICAgIHRyYXZlcnNhbF9l eHRlcm5hbF9kYXRhX2RpciwgInRlbnNvcnMuYmluIgorLSAgICAgICAgICAgICkKKy0gICAgICAg IGVsc2U6CistICAgICAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24gPSAi Li4vaW52bGlkX2V4dGVybmFsX2RhdGEvdGVuc29ycy5iaW4iCistCistICAgICAgICBleHRlcm5h bF9kYXRhX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiZXh0ZXJuYWxfZGF0YSIp CistICAgICAgICBvcy5ta2RpcihleHRlcm5hbF9kYXRhX2RpcikKKy0gICAgICAgIG5ld19tb2Rl bF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihtb2RlbF9kaXIsICJtb2RlbC5vbm54IikKKy0KKy0g ICAgICAgIGRlZiBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2sobW9kZWw6 IE1vZGVsUHJvdG8sIGxvY2F0aW9uOiBzdHIpOgorLSAgICAgICAgICAgIGZvciB0ZW5zb3IgaW4g bW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXI6CistICAgICAgICAgICAgICAgIGlmIHRlbnNvci5IYXNG aWVsZCgicmF3X2RhdGEiKToKKy0gICAgICAgICAgICAgICAgICAgIHNldF9leHRlcm5hbF9kYXRh KHRlbnNvciwgbG9jYXRpb24pCistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFs X2RhdGFfbm9fY2hlY2soCistICAgICAgICAgICAgbW9kZWwsCistICAgICAgICAgICAgbG9jYXRp b249dHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24sCistICAgICAgICApCistCistICAg ICAgICBvbm54LnNhdmVfbW9kZWwobW9kZWwsIG5ld19tb2RlbF9maWxlcGF0aCwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGlmIHVzZV9tb2RlbF9wYXRoOgorLSAgICAgICAg ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcik6 CistICAgICAgICAgICAgICAgIF8gPSBvbm54LmxvYWRfbW9kZWwobmV3X21vZGVsX2ZpbGVwYXRo LCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAg ICBvbm54X21vZGVsID0gb25ueC5sb2FkX21vZGVsKAorLSAgICAgICAgICAgICAgICBuZXdfbW9k ZWxfZmlsZXBhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0 YT1GYWxzZQorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp c2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpOgorLSAgICAgICAgICAgICAgICBsb2Fk X2V4dGVybmFsX2RhdGFfZm9yX21vZGVsKG9ubnhfbW9kZWwsIGV4dGVybmFsX2RhdGFfZGlyKQor LQorLQorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCistICAgIFsKKy0gICAg ICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsic2Vy aWFsaXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgIF0KKy0pCistY2xhc3MgVGVz dFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5hbERhdGEodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBz ZXJpYWxpemF0aW9uX2Zvcm1hdDogc3RyID0gInByb3RvYnVmIgorLQorLSAgICBkZWYgc2V0VXAo c2VsZikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRl bXBvcmFyeURpcmVjdG9yeSgpCistICAgICAgICBzZWxmLnRlbXBfZGlyOiBzdHIgPSBzZWxmLl90 ZW1wX2Rpcl9vYmoubmFtZQorLSAgICAgICAgc2VsZi5pbml0aWFsaXplcl92YWx1ZSA9IG5wLmFy YW5nZSg2KS5yZXNoYXBlKDMsIDIpLmFzdHlwZShucC5mbG9hdDMyKSArIDUxMgorLSAgICAgICAg c2VsZi5hdHRyaWJ1dGVfdmFsdWUgPSBucC5hcmFuZ2UoNikucmVzaGFwZSgyLCAzKS5hc3R5cGUo bnAuZmxvYXQzMikgKyAyNTYKKy0gICAgICAgIHNlbGYubW9kZWwgPSBzZWxmLmNyZWF0ZV90ZXN0 X21vZGVsX3Byb3RvKCkKKy0KKy0gICAgZGVmIGdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKHNlbGYp OgorLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCBzdHIodXVpZC51 dWlkNCgpKSArICIub25ueCIpCistCistICAgIGRlZiBjcmVhdGVfZGF0YV90ZW5zb3JzKAorLSAg ICAgICAgc2VsZiwgdGVuc29yc19kYXRhOiBsaXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KKy0g ICAgKSAtPiBsaXN0W1RlbnNvclByb3RvXToKKy0gICAgICAgIHRlbnNvcnMgPSBbXQorLSAgICAg ICAgZm9yIHZhbHVlLCB0ZW5zb3JfbmFtZSBpbiB0ZW5zb3JzX2RhdGE6CistICAgICAgICAgICAg dGVuc29yID0gZnJvbV9hcnJheShucC5hcnJheSh2YWx1ZSkpCistICAgICAgICAgICAgdGVuc29y Lm5hbWUgPSB0ZW5zb3JfbmFtZQorLSAgICAgICAgICAgIHRlbnNvcnMuYXBwZW5kKHRlbnNvcikK Ky0KKy0gICAgICAgIHJldHVybiB0ZW5zb3JzCistCistICAgIGRlZiBjcmVhdGVfdGVzdF9tb2Rl bF9wcm90byhzZWxmKSAtPiBNb2RlbFByb3RvOgorLSAgICAgICAgdGVuc29ycyA9IHNlbGYuY3Jl YXRlX2RhdGFfdGVuc29ycygKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIChzZWxm LmF0dHJpYnV0ZV92YWx1ZSwgImF0dHJpYnV0ZV92YWx1ZSIpLCAgIyB0eXBlOiBpZ25vcmVbbGlz dC1pdGVtXQorLSAgICAgICAgICAgICAgICAoc2VsZi5pbml0aWFsaXplcl92YWx1ZSwgImlucHV0 X3ZhbHVlIiksICAjIHR5cGU6IGlnbm9yZVtsaXN0LWl0ZW1dCistICAgICAgICAgICAgXQorLSAg ICAgICAgKQorLQorLSAgICAgICAgY29uc3RhbnRfbm9kZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9k ZSgKKy0gICAgICAgICAgICAiQ29uc3RhbnQiLCBpbnB1dHM9W10sIG91dHB1dHM9WyJ2YWx1ZXMi XSwgdmFsdWU9dGVuc29yc1swXQorLSAgICAgICAgKQorLQorLSAgICAgICAgaW5wdXRzID0gWwor LSAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAg ICAgICAiaW5wdXRfdmFsdWUiLCBvbm54LlRlbnNvclByb3RvLkZMT0FULCBzZWxmLmluaXRpYWxp emVyX3ZhbHVlLnNoYXBlCistICAgICAgICAgICAgKQorLSAgICAgICAgXQorLQorLSAgICAgICAg Z3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbY29uc3RhbnRfbm9kZV0s CistICAgICAgICAgICAgInRlc3RfZ3JhcGgiLAorLSAgICAgICAgICAgIGlucHV0cz1pbnB1dHMs CistICAgICAgICAgICAgb3V0cHV0cz1bXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bdGVu c29yc1sxXV0sCistICAgICAgICApCistICAgICAgICByZXR1cm4gaGVscGVyLm1ha2VfbW9kZWwo Z3JhcGgpCistCistICAgIEB1bml0dGVzdC5za2lwSWYoCistICAgICAgICBzZXJpYWxpemF0aW9u X2Zvcm1hdCAhPSAicHJvdG9idWYiLAorLSAgICAgICAgImNoZWNrX21vZGVsIHN1cHBvcnRzIHBy b3RvYnVmIG9ubHkgd2hlbiBwcm92aWRlZCBhcyBhIHBhdGgiLAorLSAgICApCistICAgIGRlZiB0 ZXN0X2NoZWNrX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBjaGVja2VyLmNoZWNrX21v ZGVsKHNlbGYubW9kZWwpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJu YWxfZGF0YV93aXRoX3NpemVfdGhyZXNob2xkKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2Rl bF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAgICAg IGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YShzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9s ZD0xMDI0KQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVf cGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIG1vZGVsID0gb25u eC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkK Ky0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBd CistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgi ZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVy bmFsX2RhdGFfd2l0aG91dF9zaXplX3RocmVzaG9sZChzZWxmKSAtPiBOb25lOgorLSAgICAgICAg bW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAg ICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hv bGQ9MCkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3Bh dGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBtb2RlbCA9IG9ubngu bG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist ICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQor LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0 YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJy YXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAg ZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX2Zyb21fb25lX2ZpbGVfd2l0 aF9sb2NhdGlvbihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2Vs Zi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBleHRlcm5hbF9kYXRhX2ZpbGUg PSBzdHIodXVpZC51dWlkNCgpKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5h bF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2l6ZV90aHJl c2hvbGQ9MCwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1UcnVlLAorLSAg ICAgICAgICAgIGxvY2F0aW9uPWV4dGVybmFsX2RhdGFfZmlsZSwKKy0gICAgICAgICkKKy0gICAg ICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5p c2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsIGV4dGVybmFsX2RhdGFfZmlsZSkpKQor LQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgIyB0ZXN0IGNvbnZlcnQgbW9kZWwg ZnJvbSBleHRlcm5hbCBkYXRhCistICAgICAgICBjb252ZXJ0X21vZGVsX2Zyb21fZXh0ZXJuYWxf ZGF0YShtb2RlbCkKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9k ZWxfZmlsZW5hbWUoKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBtb2RlbF9maWxl X3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBtb2RlbCA9IG9ubngu bG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist ICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQor LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oaW5pdGlhbGl6ZXJfdGVuc29yLmV4dGVybmFs X2RhdGEpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbml0aWFsaXplcl90ZW5zb3IuZGF0 YV9sb2NhdGlvbiwgVGVuc29yUHJvdG8uREVGQVVMVCkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNz ZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6 ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9k ZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oYXR0cmli dXRlX3RlbnNvci5leHRlcm5hbF9kYXRhKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0 cmlidXRlX3RlbnNvci5kYXRhX2xvY2F0aW9uLCBUZW5zb3JQcm90by5ERUZBVUxUKQorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciks IHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3Rv X2V4dGVybmFsX2RhdGFfZnJvbV9vbmVfZmlsZV93aXRob3V0X2xvY2F0aW9uX3VzZXNfbW9kZWxf bmFtZSgKKy0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2Zp bGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAgY29u dmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsIHNp emVfdGhyZXNob2xkPTAsIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPVRydWUKKy0gICAgICAgICkK Ky0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3Mu cGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShv cy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgbW9kZWxfZmlsZV9wYXRo KSkpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9vbmVf ZmlsZV9wZXJfdGVuc29yX3dpdGhvdXRfYXR0cmlidXRlKAorLSAgICAgICAgc2VsZiwKKy0gICAg KSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2Rl bF9maWxlbmFtZSgpCistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEo CistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0w LAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAg ICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5z YXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9u X2Zvcm1hdCkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2Rl bF9maWxlX3BhdGgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9z LnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCistICAgICAgICBzZWxm LmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAi YXR0cmlidXRlX3ZhbHVlIikpKQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4 dGVybmFsX2RhdGFfb25lX2ZpbGVfcGVyX3RlbnNvcl93aXRoX2F0dHJpYnV0ZSgKKy0gICAgICAg IHNlbGYsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYu Z2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19l eHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2l6 ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxz ZSwKKy0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAorLSAgICAgICAgKQorLSAg ICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5z ZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRo LmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBh dGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCist ICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYu dGVtcF9kaXIsICJhdHRyaWJ1dGVfdmFsdWUiKSkpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRf bW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9kb2VzX25vdF9jb252ZXJ0X2F0dHJpYnV0ZV92YWx1ZXMo CistICAgICAgICBzZWxmLAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBtb2RlbF9maWxlX3Bh dGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAgICAgIGNvbnZlcnRf bW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAg ICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9 RmFsc2UsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAg ICAgICApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9w YXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRU cnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFs dWUiKSkpCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGgu am9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikpKQorLQorLSAgICAgICAgbW9k ZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlh bGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFz RmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBt b2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBzZWxmLmFzc2VydEZh bHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAg ZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX2NvbnZlcnRzX2F0dHJpYnV0 ZV92YWx1ZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYu Z2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19l eHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAs IGNvbnZlcnRfYXR0cmlidXRlPVRydWUKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9t b2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgs IHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBpbml0aWFsaXplcl90ZW5z b3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3Nl cnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXpl cl92YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFz RmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBt b2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVf dmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVs ZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNfbm90 X2NvbnZlcnRfdG9fZXh0ZXJuYWxfZGF0YV9hbmRfc2F2ZXNfdGhlX21vZGVsKAorLSAgICAgICAg c2VsZiwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5n ZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAg ICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCistICAg ICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2Fz X2V4dGVybmFsX2RhdGE9RmFsc2UsCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFRy dWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0KKy0gICAgICAgIG1vZGVsID0g b25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1h dCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVy WzBdCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVs ZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVs LmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo YXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYg dGVzdF9zYXZlX21vZGVsX2RvZXNfY29udmVydF9hbmRfc2F2ZXNfdGhlX21vZGVsKHNlbGYpIC0+ IE5vbmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2Zp bGVuYW1lKCkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1v ZGVsLAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNl cmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1U cnVlLAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPVRydWUsCistICAgICAg ICAgICAgbG9jYXRpb249Tm9uZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAg ICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAgKQorLQorLSAgICAg ICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3Jh cGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90 ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNz ZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6 ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9k ZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVf dGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVf dmFsdWUpCistCistICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVy bmFsX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYu Z2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAg ICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAorLSAg ICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAgICAgICAgICAgc2F2ZV9h c19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKKy0gICAg ICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRl PUZhbHNlLAorLSAgICAgICAgKQorLSAgICAgICAgIyBTYXZlIHdpdGhvdXQgbG9hZF9leHRlcm5h bF9kYXRhCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbCgKKy0gICAgICAgICAgICBt b2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxf ZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAg ICAgICAgIG1vZGVsLAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAg ICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJu YWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCistICAgICAgICAgICAg c2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwK Ky0gICAgICAgICkKKy0gICAgICAgICMgTG9hZCB0aGUgc2F2ZWQgbW9kZWwgYWdhaW47IE9ubHkg d29ya3MgaWYgdGhlIHNhdmVkIHBhdGggaXMgdW5kZXIgdGhlIHNhbWUgZGlyZWN0b3J5CistICAg ICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5n cmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVy X3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5h c3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFs aXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5u b2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0 ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0 ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF93aXRoX2V4aXN0aW5nX3Jhd19k YXRhX3Nob3VsZF9vdmVycmlkZShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9w YXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBvcmlnaW5hbF9y YXdfZGF0YSA9IHNlbGYubW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0ucmF3X2RhdGEKKy0gICAg ICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAg ICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAg ICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFRy dWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0KKy0gICAgICAgIG1vZGVsID0g b25ueC5sb2FkX21vZGVsKAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCist ICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQor LSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yLnJhd19kYXRhID0gYiJkdW1tcHlfcmF3X2RhdGEi CistICAgICAgICAjIElmIHJhd19kYXRhIGFuZCBleHRlcm5hbCB0ZW5zb3IgZXhpc3QgYXQgdGhl IHNhbWUgdGltZSwgb3ZlcnJpZGUgZXhpc3RpbmcgcmF3X2RhdGEKKy0gICAgICAgIGxvYWRfZXh0 ZXJuYWxfZGF0YV9mb3JfdGVuc29yKGluaXRpYWxpemVyX3RlbnNvciwgc2VsZi50ZW1wX2RpcikK Ky0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5pdGlhbGl6ZXJfdGVuc29yLnJhd19kYXRhLCBv cmlnaW5hbF9yYXdfZGF0YSkKKy0KKy0KKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2Ns YXNzKAorLSAgICBbCistICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVm In0sCistICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAorLSAg ICBdCistKQorLWNsYXNzIFRlc3RFeHRlcm5hbERhdGFUb0FycmF5KHVuaXR0ZXN0LlRlc3RDYXNl KToKKy0gICAgc2VyaWFsaXphdGlvbl9mb3JtYXQ6IHN0ciA9ICJwcm90b2J1ZiIKKy0KKy0gICAg ZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBzZWxmLl90ZW1wX2Rpcl9vYmogPSB0 ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorLSAgICAgICAgc2VsZi50ZW1wX2Rpcjogc3Ry ID0gc2VsZi5fdGVtcF9kaXJfb2JqLm5hbWUKKy0gICAgICAgIHNlbGYuX21vZGVsX2ZpbGVfcGF0 aDogc3RyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAg ICAgIHNlbGYubGFyZ2VfZGF0YSA9IG5wLnJhbmRvbS5yYW5kKDEwLCA2MCwgMTAwKS5hc3R5cGUo bnAuZmxvYXQzMikKKy0gICAgICAgIHNlbGYuc21hbGxfZGF0YSA9ICgyMDAsIDMwMCkKKy0gICAg ICAgIHNlbGYubW9kZWwgPSBzZWxmLmNyZWF0ZV90ZXN0X21vZGVsKCkKKy0KKy0gICAgQHByb3Bl cnR5CistICAgIGRlZiBtb2RlbF9maWxlX3BhdGgoc2VsZik6CistICAgICAgICByZXR1cm4gc2Vs Zi5fbW9kZWxfZmlsZV9wYXRoCistCistICAgIGRlZiB0ZWFyRG93bihzZWxmKSAtPiBOb25lOgor LSAgICAgICAgc2VsZi5fdGVtcF9kaXJfb2JqLmNsZWFudXAoKQorLQorLSAgICBkZWYgY3JlYXRl X3Rlc3RfbW9kZWwoc2VsZikgLT4gTW9kZWxQcm90bzoKKy0gICAgICAgIFggPSBoZWxwZXIubWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBzZWxmLmxhcmdlX2Rh dGEuc2hhcGUpCistICAgICAgICBpbnB1dF9pbml0ID0gaGVscGVyLm1ha2VfdGVuc29yKAorLSAg ICAgICAgICAgIG5hbWU9IlgiLAorLSAgICAgICAgICAgIGRhdGFfdHlwZT1UZW5zb3JQcm90by5G TE9BVCwKKy0gICAgICAgICAgICBkaW1zPXNlbGYubGFyZ2VfZGF0YS5zaGFwZSwKKy0gICAgICAg ICAgICB2YWxzPXNlbGYubGFyZ2VfZGF0YS50b2J5dGVzKCksCistICAgICAgICAgICAgcmF3PVRy dWUsCistICAgICAgICApCistCistICAgICAgICBzaGFwZV9kYXRhID0gbnAuYXJyYXkoc2VsZi5z bWFsbF9kYXRhLCBucC5pbnQ2NCkKKy0gICAgICAgIHNoYXBlX2luaXQgPSBoZWxwZXIubWFrZV90 ZW5zb3IoCistICAgICAgICAgICAgbmFtZT0iU2hhcGUiLAorLSAgICAgICAgICAgIGRhdGFfdHlw ZT1UZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICBkaW1zPXNoYXBlX2RhdGEuc2hhcGUs CistICAgICAgICAgICAgdmFscz1zaGFwZV9kYXRhLnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICBy YXc9VHJ1ZSwKKy0gICAgICAgICkKKy0gICAgICAgIEMgPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiQyIsIFRlbnNvclByb3RvLklOVDY0LCBzZWxmLnNtYWxsX2RhdGEpCistCistICAg ICAgICByZXNoYXBlID0gb25ueC5oZWxwZXIubWFrZV9ub2RlKAorLSAgICAgICAgICAgICJSZXNo YXBlIiwKKy0gICAgICAgICAgICBpbnB1dHM9WyJYIiwgIlNoYXBlIl0sCistICAgICAgICAgICAg b3V0cHV0cz1bIlkiXSwKKy0gICAgICAgICkKKy0gICAgICAgIGNhc3QgPSBvbm54LmhlbHBlci5t YWtlX25vZGUoCistICAgICAgICAgICAgIkNhc3QiLCBpbnB1dHM9WyJZIl0sIG91dHB1dHM9WyJD Il0sIHRvPVRlbnNvclByb3RvLklOVDY0CistICAgICAgICApCistCistICAgICAgICBncmFwaF9k ZWYgPSBoZWxwZXIubWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbcmVzaGFwZSwgY2FzdF0sCist ICAgICAgICAgICAgInRlc3QtbW9kZWwiLAorLSAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAg ICBbQ10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W2lucHV0X2luaXQsIHNoYXBlX2luaXRd LAorLSAgICAgICAgKQorLSAgICAgICAgbW9kZWwgPSBoZWxwZXIubWFrZV9tb2RlbChncmFwaF9k ZWYsIHByb2R1Y2VyX25hbWU9Im9ubngtZXhhbXBsZSIpCistICAgICAgICByZXR1cm4gbW9kZWwK Ky0KKy0gICAgQHVuaXR0ZXN0LnNraXBJZigKKy0gICAgICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0 ICE9ICJwcm90b2J1ZiIsCistICAgICAgICAiY2hlY2tfbW9kZWwgc3VwcG9ydHMgcHJvdG9idWYg b25seSB3aGVuIHByb3ZpZGVkIGFzIGEgcGF0aCIsCistICAgICkKKy0gICAgZGVmIHRlc3RfY2hl Y2tfbW9kZWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2Vs Zi5tb2RlbCkKKy0KKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9pbmZlcmVuY2Vfd2l0aF9leHRlcm5h bF9kYXRhX2ZhaWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0g ICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRo LAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAgICAgICAgICAg c2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9f b25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAg ICkKKy0gICAgICAgIG1vZGVsX3dpdGhvdXRfZXh0ZXJuYWxfZGF0YSA9IG9ubngubG9hZCgKKy0g ICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1h dCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICAjIFNoYXBl IGluZmVyZW5jZSBvZiBSZXNoYXBlIHVzZXMgUGFyc2VEYXRhCistICAgICAgICAjIFBhcnNlRGF0 YSBjYW5ub3QgaGFuZGxlIGV4dGVybmFsIGRhdGEgYW5kIHNob3VsZCB0aHJvdyB0aGUgZXJyb3Ig YXMgZm9sbG93czoKKy0gICAgICAgICMgQ2Fubm90IHBhcnNlIGRhdGEgZnJvbSBleHRlcm5hbCB0 ZW5zb3JzLiBQbGVhc2UgbG9hZCBleHRlcm5hbCBkYXRhIGludG8gcmF3IGRhdGEgZm9yIHRlbnNv cjogU2hhcGUKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIHNoYXBl X2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzaGFwZV9pbmZlcmVuY2Uu aW5mZXJfc2hhcGVzLAorLSAgICAgICAgICAgIG1vZGVsX3dpdGhvdXRfZXh0ZXJuYWxfZGF0YSwK Ky0gICAgICAgICAgICBzdHJpY3RfbW9kZT1UcnVlLAorLSAgICAgICAgKQorLQorLSAgICBkZWYg dGVzdF90b19hcnJheV93aXRoX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAgICAg IG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAg IHNlbGYubW9kZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQsCistICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAg ICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgc2l6ZV90 aHJlc2hvbGQ9MCwKKy0gICAgICAgICkKKy0gICAgICAgICMgcmF3X2RhdGEgb2YgZXh0ZXJuYWwg dGVuc29yIGlzIG5vdCBsb2FkZWQKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkKAorLSAgICAg ICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBs b2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAgICMgU3BlY2lmeSBz ZWxmLnRlbXBfZGlyIHRvIGxvYWQgZXh0ZXJuYWwgdGVuc29yCistICAgICAgICBsb2FkZWRfbGFy Z2VfZGF0YSA9IHRvX2FycmF5KG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdLCBzZWxmLnRlbXBf ZGlyKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UobG9hZGVkX2xhcmdlX2Rh dGEsIHNlbGYubGFyZ2VfZGF0YSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF93aXRoX2V4 dGVybmFsX2RhdGFfbXVsdGlwbGVfdGltZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgVGVz dCBvbm54LnNhdmUgc2hvdWxkIHJlc3BlY3RpdmVseSBoYW5kbGUgdHlwaWNhbCB0ZW5zb3IgYW5k IGV4dGVybmFsIHRlbnNvciBwcm9wZXJseQorLSAgICAgICAgIyAxc3Qgc2F2ZTogc2F2ZSB0d28g dGVuc29ycyB3aGljaCBoYXZlIHJhd19kYXRhCistICAgICAgICAjIE9ubHkgd19sYXJnZSB3aWxs IGJlIHN0b3JlZCBhcyBleHRlcm5hbCB0ZW5zb3JzIHNpbmNlIGl0J3MgbGFyZ2VyIHRoYW4gMTAy NAorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCist ICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1 ZSwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAg ICAgICBsb2NhdGlvbj1Ob25lLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTEwMjQsCist ICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9VHJ1ZSwKKy0gICAgICAgICkKKy0gICAgICAg IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbCA9IG9ubngubG9hZCgKKy0gICAgICAgICAg ICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9l eHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICBsYXJnZV9pbnB1dF90ZW5z b3IgPSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0K Ky0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsYXJnZV9pbnB1dF90ZW5zb3IuSGFzRmllbGQoImRh dGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAorLSAg ICAgICAgICAgIHRvX2FycmF5KGxhcmdlX2lucHV0X3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNl bGYubGFyZ2VfZGF0YQorLSAgICAgICAgKQorLQorLSAgICAgICAgc21hbGxfc2hhcGVfdGVuc29y ID0gbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzFdCist ICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNtYWxsX3NoYXBlX3RlbnNvci5IYXNGaWVsZCgi ZGF0YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9f YXJyYXkoc21hbGxfc2hhcGVfdGVuc29yKSwgc2VsZi5zbWFsbF9kYXRhKQorLQorLSAgICAgICAg IyAybmQgc2F2ZTogb25lIHRlbnNvciBoYXMgcmF3X2RhdGEgKHNtYWxsKTsgb25lIGV4dGVybmFs IHRlbnNvciAobGFyZ2UpCistICAgICAgICAjIFNhdmUgdGhlbSBib3RoIGFzIGV4dGVybmFsIHRl bnNvcnMgdGhpcyB0aW1lCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAg bW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLAorLSAgICAgICAgICAgIHNlbGYubW9kZWxf ZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAg ICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgYWxsX3Rl bnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKKy0g ICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmli dXRlPVRydWUsCistICAgICAgICApCistCistICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdf ZXh0ZXJuYWwgPSBvbm54LmxvYWQoCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgs IHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAg ICAgICAgKQorLSAgICAgICAgbGFyZ2VfaW5wdXRfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2Fk aW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2VydFRy dWUobGFyZ2VfaW5wdXRfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAgICAg ICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSgKKy0gICAgICAgICAgICB0b19hcnJheShsYXJn ZV9pbnB1dF90ZW5zb3IsIHNlbGYudGVtcF9kaXIpLCBzZWxmLmxhcmdlX2RhdGEKKy0gICAgICAg ICkKKy0KKy0gICAgICAgIHNtYWxsX3NoYXBlX3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGlu Z19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXplclsxXQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl KHNtYWxsX3NoYXBlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UoCistICAgICAgICAgICAgdG9fYXJyYXkoc21hbGxf c2hhcGVfdGVuc29yLCBzZWxmLnRlbXBfZGlyKSwgc2VsZi5zbWFsbF9kYXRhCistICAgICAgICAp CistCistCisgY2xhc3MgVGVzdE5vdEFsbG93VG9Mb2FkRXh0ZXJuYWxEYXRhT3V0c2lkZU1vZGVs RGlyZWN0b3J5KFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSk6CisgICAgICIiIkVzc2VudGlhbCB0 ZXN0IHRvIGNoZWNrIHRoYXQgb25ueCAodmFsaWRhdGUpIEMrKyBjb2RlIHdpbGwgbm90IGFsbG93 IHRvIGxvYWQgZXh0ZXJuYWxfZGF0YSBvdXRzaWRlIHRoZSBtb2RlbAorICAgICBkaXJlY3Rvcnku CitAQCAtNzkxLDE3ICsxNzUsNiBAQCBjbGFzcyBUZXN0Tm90QWxsb3dUb0xvYWRFeHRlcm5hbERh dGFPdXRzaWRlTW9kZWxEaXJlY3RvcnlPbldpbmRvd3MoCisgICAgICAgICAgICAgY2hlY2tlci5j aGVja19tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lKQorIAorIAorLWNsYXNzIFRlc3RTYXZlQWxs VGVuc29yc0FzRXh0ZXJuYWxEYXRhV2l0aFBhdGgoVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5h bERhdGEpOgorLSAgICBkZWYgZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoc2VsZikgLT4gcGF0aGxp Yi5QYXRoOgorLSAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzdXBlcigpLmdldF90ZW1wX21v ZGVsX2ZpbGVuYW1lKCkpCistCistCistY2xhc3MgVGVzdEV4dGVybmFsRGF0YVRvQXJyYXlXaXRo UGF0aChUZXN0RXh0ZXJuYWxEYXRhVG9BcnJheSk6CistICAgIEBwcm9wZXJ0eQorLSAgICBkZWYg bW9kZWxfZmlsZV9wYXRoKHNlbGYpIC0+IHBhdGhsaWIuUGF0aDoKKy0gICAgICAgIHJldHVybiBw YXRobGliLlBhdGgoc2VsZi5fbW9kZWxfZmlsZV9wYXRoKQorLQorLQorIGNsYXNzIFRlc3RGdW5j dGlvbnNBbmRTdWJHcmFwaHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgc2V0VXAoc2Vs ZikgLT4gTm9uZToKKyAgICAgICAgIHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRlbXBv cmFyeURpcmVjdG9yeSgpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3Rvb2xzX3Rlc3QucHkgYi9v bm54L3Rlc3QvdG9vbHNfdGVzdC5weQoraW5kZXggZmQ0NDEzNzg2Li5mODQzYzFmYmMgMTAwNjQ0 CistLS0gYS9vbm54L3Rlc3QvdG9vbHNfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3Rvb2xzX3Rl c3QucHkKK0BAIC0xMTIsMzIgKzExMiw2IEBAIGNsYXNzIFRlc3RUb29sc0Z1bmN0aW9ucyh1bml0 dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICB5MiA9IG9pbmYyLnJ1bihOb25lLCB7IlgiOiB4fSlb MF0gICMgdHlwZTogaWdub3JlW2luZGV4XQorICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKHkxLCB5 MikKKyAKKy0gICAgZGVmIHRlc3RfcmVwbGFjZV9yYW5nZShzZWxmKToKKy0gICAgICAgIGR0eXBl ID0gbnAuZmxvYXQzMgorLSAgICAgICAgdmFsdWUgPSBucC5yYW5kb20ucmFuZG4oMiwgMTAwKS5h c3R5cGUoZHR5cGUpCistICAgICAgICBBID0gbnVtcHlfaGVscGVyLmZyb21fYXJyYXkodmFsdWUs IG5hbWU9IkEiKQorLSAgICAgICAgdmFsdWUgPSBucC5hcnJheShbMV0sIGR0eXBlPWR0eXBlKQor LSAgICAgICAgQyA9IG51bXB5X2hlbHBlci5mcm9tX2FycmF5KHZhbHVlLCBuYW1lPSJDIikKKy0K Ky0gICAgICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclBy b3RvLkZMT0FULCBbTm9uZSwgTm9uZV0pCistICAgICAgICBZID0gaGVscGVyLm1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQorLSAgICAgICAgbm9k ZTAgPSBoZWxwZXIubWFrZV9ub2RlKCJDb25zdGFudCIsIFtdLCBbIkEiXSwgdmFsdWU9QSkKKy0g ICAgICAgIG5vZGUxID0gaGVscGVyLm1ha2Vfbm9kZSgiTWF0TXVsIiwgWyJYIiwgIkEiXSwgWyJB WCJdKQorLSAgICAgICAgbm9kZTIgPSBoZWxwZXIubWFrZV9ub2RlKCJTdWIiLCBbIkFYIiwgIkMi XSwgWyJZIl0pCistICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBoKFtub2RlMCwgbm9k ZTEsIG5vZGUyXSwgImxyIiwgW1hdLCBbWV0sIFtDXSkKKy0gICAgICAgIG1vZGVsX2RlZiA9IGhl bHBlci5tYWtlX21vZGVsKGdyYXBoKQorLQorLSAgICAgICAgeCA9IG5wLmFycmF5KFsxLCAyLCA0 LCA1LCA1LCA0XSkuYXN0eXBlKG5wLmZsb2F0MzIpLnJlc2hhcGUoKDMsIDIpKQorLSAgICAgICAg b2luZjEgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWxfZGVmKQorLSAgICAgICAgeTEgPSBvaW5m MS5ydW4oTm9uZSwgeyJYIjogeH0pWzBdICAjIHR5cGU6IGlnbm9yZVtpbmRleF0KKy0gICAgICAg IHJlcGwgPSByZXBsYWNlX2luaXRpYWxpemVyX2J5X2NvbnN0YW50X29mX3NoYXBlKG1vZGVsX2Rl ZiwgdXNlX3JhbmdlPVRydWUpCistICAgICAgICBub2RlX3R5cGVzID0ge24ub3BfdHlwZSBmb3Ig biBpbiByZXBsLmdyYXBoLm5vZGV9CistICAgICAgICBzZWxmLmFzc2VydEluKCJSYW5nZSIsIG5v ZGVfdHlwZXMpCistICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJDb25zdGFudE9mU2hhcGUiLCBu b2RlX3R5cGVzKQorLSAgICAgICAgb2luZjIgPSBSZWZlcmVuY2VFdmFsdWF0b3IocmVwbCkKKy0g ICAgICAgIHkyID0gb2luZjIucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25vcmVb aW5kZXhdCistICAgICAgICBhc3NlcnRfYWxsY2xvc2UoeTEuc2hhcGUsIHkyLnNoYXBlKQorLQor ICAgICBkZWYgdGVzdF9yZXBsYWNlX2NvbnN0YW50X2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAg ZHR5cGUgPSBucC5mbG9hdDMyCisgICAgICAgICB2YWx1ZSA9IG5wLnJhbmRvbS5yYW5kbigyLCAx MDApLmFzdHlwZShkdHlwZSkKK0BAIC0xODIsNDkgKzE1Niw2IEBAIGNsYXNzIFRlc3RUb29sc0Z1 bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICB5MiA9IG9pbmYyLnJ1bihOb25l LCB7IlgiOiB4fSlbMF0gICMgdHlwZTogaWdub3JlW2luZGV4XQorICAgICAgICAgYXNzZXJ0X2Fs bGNsb3NlKHkxLCB5MikKKyAKKy0gICAgZGVmIHRlc3RfcmVwbGFjZV9yYW5nZV9mdW5jdGlvbihz ZWxmKToKKy0gICAgICAgIGR0eXBlID0gbnAuZmxvYXQzMgorLSAgICAgICAgdmFsdWUgPSBucC5y YW5kb20ucmFuZG4oMiwgMTAwKS5hc3R5cGUoZHR5cGUpCistICAgICAgICBBID0gbnVtcHlfaGVs cGVyLmZyb21fYXJyYXkodmFsdWUsIG5hbWU9IkEiKQorLSAgICAgICAgdmFsdWUgPSBucC5hcnJh eShbMV0sIGR0eXBlPWR0eXBlKQorLSAgICAgICAgQyA9IG51bXB5X2hlbHBlci5mcm9tX2FycmF5 KHZhbHVlLCBuYW1lPSJDIikKKy0KKy0gICAgICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZV0pCistICAgICAgICBZ ID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwg W05vbmVdKQorLSAgICAgICAgbm9kZUMgPSBoZWxwZXIubWFrZV9ub2RlKCJDb25zdGFudCIsIFtd LCBbIkMiXSwgdmFsdWU9QykKKy0gICAgICAgIG5vZGUwID0gaGVscGVyLm1ha2Vfbm9kZSgiQ29u c3RhbnQiLCBbXSwgWyJBIl0sIHZhbHVlPUEpCistICAgICAgICBub2RlMSA9IGhlbHBlci5tYWtl X25vZGUoIk1hdE11bCIsIFsiWCIsICJBIl0sIFsiQVgiXSkKKy0gICAgICAgIG5vZGUyID0gaGVs cGVyLm1ha2Vfbm9kZSgiU3ViIiwgWyJBWCIsICJDIl0sIFsiWSJdKQorLSAgICAgICAgb3BzZXRf aW1wb3J0cyA9IFsKKy0gICAgICAgICAgICBoZWxwZXIubWFrZV9vcHNldGlkKCIiLCBvbm54X29w c2V0X3ZlcnNpb24oKSksCistICAgICAgICAgICAgaGVscGVyLm1ha2Vfb3BzZXRpZCgiY3VzdG9t IiwgMSksCistICAgICAgICBdCistICAgICAgICBmY3QgPSBoZWxwZXIubWFrZV9mdW5jdGlvbigK Ky0gICAgICAgICAgICAiY3VzdG9tIiwKKy0gICAgICAgICAgICAidW5pdHRlc3QiLAorLSAgICAg ICAgICAgIFsiWCJdLAorLSAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgIFtub2RlQywg bm9kZTAsIG5vZGUxLCBub2RlMl0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cywKKy0gICAg ICAgICkKKy0KKy0gICAgICAgIG5vZGUgPSBoZWxwZXIubWFrZV9ub2RlKCJ1bml0dGVzdCIsIFsi WCJdLCBbIlkiXSwgZG9tYWluPSJjdXN0b20iKQorLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFr ZV9ncmFwaChbbm9kZV0sICJsciIsIFtYXSwgW1ldLCBbQ10pCistICAgICAgICBtb2RlbF9kZWYg PSBoZWxwZXIubWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBncmFwaCwgZnVuY3Rpb25zPVtmY3Rd LCBvcHNldF9pbXBvcnRzPW9wc2V0X2ltcG9ydHMKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHgg PSBucC5hcnJheShbMSwgMiwgNCwgNSwgNSwgNF0pLmFzdHlwZShucC5mbG9hdDMyKS5yZXNoYXBl KCgzLCAyKSkKKy0gICAgICAgIG9pbmYxID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsX2RlZikK Ky0gICAgICAgIHkxID0gb2luZjEucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25v cmVbaW5kZXhdCistICAgICAgICByZXBsID0gcmVwbGFjZV9pbml0aWFsaXplcl9ieV9jb25zdGFu dF9vZl9zaGFwZShtb2RlbF9kZWYsIHVzZV9yYW5nZT1UcnVlKQorLSAgICAgICAgbm9kZV90eXBl cyA9IHtuLm9wX3R5cGUgZm9yIG4gaW4gcmVwbC5mdW5jdGlvbnNbMF0ubm9kZX0KKy0gICAgICAg IHNlbGYuYXNzZXJ0SW4oIlJhbmdlIiwgbm9kZV90eXBlcykKKy0gICAgICAgIHNlbGYuYXNzZXJ0 Tm90SW4oIkNvbnN0YW50T2ZTaGFwZSIsIG5vZGVfdHlwZXMpCistICAgICAgICBvaW5mMiA9IFJl ZmVyZW5jZUV2YWx1YXRvcihyZXBsKQorLSAgICAgICAgeTIgPSBvaW5mMi5ydW4oTm9uZSwgeyJY IjogeH0pWzBdICAjIHR5cGU6IGlnbm9yZVtpbmRleF0KKy0gICAgICAgIGFzc2VydF9hbGxjbG9z ZSh5MS5zaGFwZSwgeTIuc2hhcGUpCistCisgICAgIGRlZiB0ZXN0X3JlcGxhY2VfY29uc3RhbnRf Z3JhcGgoc2VsZik6CisgICAgICAgICB2YWx1ZSA9IG5wLmFycmF5KFswXSwgZHR5cGU9bnAuZmxv YXQzMikKKyAgICAgICAgIHplcm8gPSBudW1weV9oZWxwZXIuZnJvbV9hcnJheSh2YWx1ZSwgbmFt ZT0iemVybyIpCitAQCAtMjc0LDU0ICsyMDUsNiBAQCBjbGFzcyBUZXN0VG9vbHNGdW5jdGlvbnMo dW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgeTFbOl0gPSAwLjUKKyAgICAgICAgIGFzc2Vy dF9hbGxjbG9zZSh5MSwgeTIpCisgCistICAgIGRlZiB0ZXN0X3JlcGxhY2VfcmFuZ2VfZ3JhcGgo c2VsZik6CistICAgICAgICB2YWx1ZSA9IG5wLmFycmF5KFswXSwgZHR5cGU9bnAuZmxvYXQzMikK Ky0gICAgICAgIHplcm8gPSBudW1weV9oZWxwZXIuZnJvbV9hcnJheSh2YWx1ZSwgbmFtZT0iemVy byIpCistCistICAgICAgICBYID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBv bm54LlRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZV0pCistICAgICAgICBZID0gaGVscGVy Lm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBvbm54LlRlbnNvclByb3RvLkZMT0FULCBbTm9u ZV0pCistCistICAgICAgICByc3VtID0gaGVscGVyLm1ha2Vfbm9kZSgiUmVkdWNlU3VtIiwgWyJY Il0sIFsicnN1bSJdKQorLSAgICAgICAgY29uZCA9IGhlbHBlci5tYWtlX25vZGUoIkdyZWF0ZXIi LCBbInJzdW0iLCAiemVybyJdLCBbImNvbmQiXSkKKy0KKy0gICAgICAgIHRoZW5fb3V0ID0gaGVs cGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInRoZW5fb3V0Iiwgb25u eC5UZW5zb3JQcm90by5GTE9BVCwgTm9uZQorLSAgICAgICAgKQorLSAgICAgICAgdGhlbl9jc3Qg PSBudW1weV9oZWxwZXIuZnJvbV9hcnJheShucC5hcnJheShbMV0gKiAxMjkpLmFzdHlwZShucC5m bG9hdDMyKSkKKy0KKy0gICAgICAgIHRoZW5fY29uc3Rfbm9kZSA9IGhlbHBlci5tYWtlX25vZGUo CistICAgICAgICAgICAgIkNvbnN0YW50IiwgaW5wdXRzPVtdLCBvdXRwdXRzPVsidGhlbl9vdXQi XSwgdmFsdWU9dGhlbl9jc3QsIG5hbWU9ImNzdDEiCistICAgICAgICApCistICAgICAgICB0aGVu X2JvZHkgPSBoZWxwZXIubWFrZV9ncmFwaChbdGhlbl9jb25zdF9ub2RlXSwgInRoZW5fYm9keSIs IFtdLCBbdGhlbl9vdXRdKQorLQorLSAgICAgICAgZWxzZV9vdXQgPSBoZWxwZXIubWFrZV90ZW5z b3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAiZWxzZV9vdXQiLCBvbm54LlRlbnNvclByb3Rv LkZMT0FULCBOb25lCistICAgICAgICApCistICAgICAgICBlbHNlX2NzdCA9IG51bXB5X2hlbHBl ci5mcm9tX2FycmF5KG5wLmFycmF5KFstMV0gKiAxMjkpLmFzdHlwZShucC5mbG9hdDMyKSkKKy0g ICAgICAgIGVsc2VfY29uc3Rfbm9kZSA9IGhlbHBlci5tYWtlX25vZGUoCistICAgICAgICAgICAg IkNvbnN0YW50IiwgaW5wdXRzPVtdLCBvdXRwdXRzPVsiZWxzZV9vdXQiXSwgdmFsdWU9ZWxzZV9j c3QsIG5hbWU9ImNzdDIiCistICAgICAgICApCistICAgICAgICBlbHNlX2JvZHkgPSBoZWxwZXIu bWFrZV9ncmFwaChbZWxzZV9jb25zdF9ub2RlXSwgImVsc2VfYm9keSIsIFtdLCBbZWxzZV9vdXRd KQorLQorLSAgICAgICAgaWZfbm9kZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKKy0gICAgICAg ICAgICAiSWYiLCBbImNvbmQiXSwgWyJZIl0sIHRoZW5fYnJhbmNoPXRoZW5fYm9keSwgZWxzZV9i cmFuY2g9ZWxzZV9ib2R5CistICAgICAgICApCistICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtl X2dyYXBoKFtyc3VtLCBjb25kLCBpZl9ub2RlXSwgImlmIiwgW1hdLCBbWV0sIFt6ZXJvXSkKKy0g ICAgICAgIG9ubnhfbW9kZWwgPSBoZWxwZXIubWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBncmFw aCwgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZCgiIiwgb25ueF9vcHNldF92ZXJz aW9uKCkpXQorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29uc3RhbnRP ZlNoYXBlIiwgc3RyKG9ubnhfbW9kZWwpKQorLQorLSAgICAgICAgeCA9IG5wLm9uZXMoKDMsIDIp LCBkdHlwZT1ucC5mbG9hdDMyKQorLSAgICAgICAgb2luZjEgPSBSZWZlcmVuY2VFdmFsdWF0b3Io b25ueF9tb2RlbCkKKy0gICAgICAgIHkxID0gb2luZjEucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAg IyB0eXBlOiBpZ25vcmVbaW5kZXhdCistICAgICAgICByZXBsID0gcmVwbGFjZV9pbml0aWFsaXpl cl9ieV9jb25zdGFudF9vZl9zaGFwZShvbm54X21vZGVsLCB1c2VfcmFuZ2U9VHJ1ZSkKKy0gICAg ICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkNvbnN0YW50T2ZTaGFwZSIsIHN0cihyZXBsKSkKKy0gICAg ICAgIHNlbGYuYXNzZXJ0SW4oIlJhbmdlIiwgc3RyKHJlcGwpKQorLSAgICAgICAgb2luZjIgPSBS ZWZlcmVuY2VFdmFsdWF0b3IocmVwbCkKKy0gICAgICAgIHkyID0gb2luZjIucnVuKE5vbmUsIHsi WCI6IHh9KVswXSAgIyB0eXBlOiBpZ25vcmVbaW5kZXhdCistICAgICAgICBhc3NlcnRfYWxsY2xv c2UoeTEuc2hhcGUsIHkyLnNoYXBlKQorLQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6 CisgICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0 L3ZlcnNpb25fY29udmVydGVyL2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weSBiL29ubngvdGVz dC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKK2luZGV4IGE5 NGFlYTFhOS4uZjYzOWQ0NGY4IDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVy dGVyL2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3ZlcnNpb25f Y29udmVydGVyL2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weQorQEAgLTcsNyArNyw2IEBAIGlt cG9ydCB1bml0dGVzdAorIAorIGltcG9ydCBhdXRvbWF0aWNfY29udmVyc2lvbl90ZXN0X2Jhc2UK KyBpbXBvcnQgbnVtcHkgYXMgbnAKKy1pbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9ydCBv bm54CisgZnJvbSBvbm54IGltcG9ydCBoZWxwZXIKK0BAIC0yMiwzNSArMjEsNiBAQCBjbGFzcyBU ZXN0QXV0b21hdGljRG93bmdyYWRlKGF1dG9tYXRpY19jb252ZXJzaW9uX3Rlc3RfYmFzZS5UZXN0 QXV0b21hdGljQ29udmVycworICAgICBkZWYgX3Rlc3Rfb3BfZG93bmdyYWRlKHNlbGYsIG9wOiBz dHIsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICBzZWxmLl90ZXN0X29wX2NvbnZlcnNpb24o b3AsICphcmdzLCAqKmt3YXJncywgaXNfdXBncmFkZT1GYWxzZSkKKyAKKy0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgIlJl ZHVjZUwxIiwKKy0gICAgICAgICAgICAiUmVkdWNlTDIiLAorLSAgICAgICAgICAgICJSZWR1Y2VM b2dTdW0iLAorLSAgICAgICAgICAgICJSZWR1Y2VMb2dTdW1FeHAiLAorLSAgICAgICAgICAgICJS ZWR1Y2VNZWFuIiwKKy0gICAgICAgICAgICAiUmVkdWNlTWF4IiwKKy0gICAgICAgICAgICAiUmVk dWNlTWluIiwKKy0gICAgICAgICAgICAiUmVkdWNlUHJvZCIsCistICAgICAgICAgICAgIlJlZHVj ZVN1bSIsCistICAgICAgICAgICAgIlJlZHVjZVN1bVNxdWFyZSIsCistICAgICAgICBdCistICAg ICkKKy0gICAgZGVmIHRlc3RfcmVkdWNlX29wcyhzZWxmLCBvcCkgLT4gTm9uZToKKy0gICAgICAg ICMgVE9ETzogbmVlZCB0byBhZGQgdGVzdCBjYXNlcyBmb3IgbWlzc2luZyBheGVzIGlucHV0IHdo aWNoIGRlcGVuZHMgb24gdGhpcyBwcjoKKy0gICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL29u bngvb25ueC9wdWxsLzU2MTMKKy0gICAgICAgIGF4ZXMgPSBoZWxwZXIubWFrZV90ZW5zb3IoCist ICAgICAgICAgICAgImIiLCBvbm54LlRlbnNvclByb3RvLklOVDY0LCBkaW1zPVszXSwgdmFscz1u cC5hcnJheShbMCwgMSwgMl0pCistICAgICAgICApCistICAgICAgICBzZWxmLl90ZXN0X29wX2Rv d25ncmFkZSgKKy0gICAgICAgICAgICBvcCwKKy0gICAgICAgICAgICBmcm9tX29wc2V0PTEzLAor LSAgICAgICAgICAgIGlucHV0X3NoYXBlcz1bWzMsIDQsIDVdLCBbM11dLAorLSAgICAgICAgICAg IG91dHB1dF9zaGFwZXM9W1sxLCAxLCAxXV0sCistICAgICAgICAgICAgaW5wdXRfdHlwZXM9W29u bnguVGVuc29yUHJvdG8uRkxPQVQsIG9ubnguVGVuc29yUHJvdG8uSU5UNjRdLAorLSAgICAgICAg ICAgIGluaXRpYWxpemVyPVtheGVzXSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3RfZGZ0 MjBfbm9fYXhpcyhzZWxmKSAtPiBOb25lOgorICAgICAgICAgc2VsZi5fdGVzdF9tb2RlbF9jb252 ZXJzaW9uKAorICAgICAgICAgICAgIHRvX29wc2V0PTE5LAorZGlmZiAtLWdpdCBhL29ubngvdGVz dC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5IGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVy X3Rlc3QucHkKK2luZGV4IDE3OTBlNTk5Ny4uNGE0YzI3NzY2IDEwMDY0NAorLS0tIGEvb25ueC90 ZXN0L3ZlcnNpb25fY29udmVydGVyX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC92ZXJzaW9uX2Nv bnZlcnRlcl90ZXN0LnB5CitAQCAtOCw3ICs4LDYgQEAgaW1wb3J0IHN0cnVjdAorIGltcG9ydCB1 bml0dGVzdAorIAorIGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisg CisgaW1wb3J0IG9ubngudmVyc2lvbl9jb252ZXJ0ZXIKKyBmcm9tIG9ubnggaW1wb3J0ICgKK0BA IC0yMDA2LDE2OSArMjAwNSw2IEBAIGNsYXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0ZXN0 LlRlc3RDYXNlKToKKyAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfbW9kZWwuZ3JhcGgubm9kZVsz XS5vcF90eXBlID09ICJSZXNoYXBlIgorICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9tb2RlbC5v cHNldF9pbXBvcnRbMF0udmVyc2lvbiA9PSAxMworIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoInBlcl90ZW5zb3Ii LCAoMTYsIDMpLCAoMSwpLCBOb25lLCBOb25lLCBOb25lLCBUZW5zb3JQcm90by5JTlQ4LCBUcnVl KSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJwZXJfYXhpc19ub25lX2Jsb2Nr X3NoYXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDE2 LCksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAg ICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDgsCistICAg ICAgICAgICAgICAgIFRydWUsCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgICJwZXJfYXhpc196ZXJvX2Jsb2NrX3NoYXBlIiwKKy0gICAgICAgICAgICAg ICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDE2LCksCistICAgICAgICAgICAgICAgIDEs CistICAgICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAg ICAgICAgIFRlbnNvclByb3RvLklOVDgsCistICAgICAgICAgICAgICAgIFRydWUsCistICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJwZXJfdGVuc29yX3Bv c2l0aXZlX2Jsb2NrX3NoYXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAg ICAgICAgICAgKDEsKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMiwK Ky0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5U OCwKKy0gICAgICAgICAgICAgICAgRmFsc2UsCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAoCistICAgICAgICAgICAgICAgICJwZXJfYXhpc19wb3NpdGl2ZV9ibG9ja19zaGFwZSIsCist ICAgICAgICAgICAgICAgICgxNiwgMyksCistICAgICAgICAgICAgICAgICgxNiwpLAorLSAgICAg ICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBOb25l LAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ4LAorLSAgICAgICAgICAgICAgICBG YWxzZSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgiYmxvY2tlZF8yZCIsICgxNiwg MyksICg0LCAzKSwgMCwgNCwgTm9uZSwgVGVuc29yUHJvdG8uSU5UOCwgRmFsc2UpLAorLSAgICAg ICAgICAgICgiYmxvY2tlZF8zZCIsICg0LCAzLCAzMiksICg0LCAzLCA4KSwgMiwgNCwgTm9uZSwg VGVuc29yUHJvdG8uSU5UOCwgRmFsc2UpLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAg ICAgInBlcl9heGlzX291dHB1dF9kdHlwZSIsCistICAgICAgICAgICAgICAgICgxNiwgMyksCist ICAgICAgICAgICAgICAgICgxNiwpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAg ICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk4sCist ICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIEZhbHNlLAorLSAgICAgICAg ICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfdW5zdXBw b3J0ZWRfdHlwZSIsCistICAgICAgICAgICAgICAgICgxNiwgMyksCistICAgICAgICAgICAgICAg ICgxNiwpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAg ICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UMTYs CistICAgICAgICAgICAgICAgIEZhbHNlLAorLSAgICAgICAgICAgICksCistICAgICAgICBdCist ICAgICkKKy0gICAgZGVmIHRlc3RfcXVhbnRpemVfMjFfMjAoCistICAgICAgICBzZWxmLAorLSAg ICAgICAgXzogc3RyLAorLSAgICAgICAgeF9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAorLSAgICAg ICAgc2NhbGVfc2hhcGU6IHR1cGxlW2ludCwgLi4uXSwKKy0gICAgICAgIGF4aXM6IGludCwKKy0g ICAgICAgIGJsb2NrX3NpemU6IGludCwKKy0gICAgICAgIG91dHB1dF9kdHlwZTogaW50IHwgTm9u ZSwKKy0gICAgICAgIHplcm9fcG9pbnRfZHR5cGU6IGludCB8IE5vbmUsCistICAgICAgICBjb21w YXRpYmxlOiBib29sLAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBkZWYgdGVzdCgKKy0gICAg ICAgICAgICBpbnB1dF9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUsIG91dHB1 dF9kdHlwZSwgemVyb19wb2ludF9kdHlwZQorLSAgICAgICAgKSAtPiBOb25lOgorLSAgICAgICAg ICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV9ub2RlKAorLSAgICAg ICAgICAgICAgICAgICAgIlF1YW50aXplTGluZWFyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsi WCIsICJTIl0sCistICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKy0gICAgICAgICAgICAgICAg ICAgIGF4aXM9YXhpcywKKy0gICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6 ZSwKKy0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9kdHlwZT1vdXRwdXRfZHR5cGUsCistICAg ICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdCistICAgICAgICAgICAgaW5wdXRzID0gWwor LSAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNv clByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSksCistICAgICAgICAgICAgICAgIGhlbHBlci5tYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJTIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX3NoYXBlKSwK Ky0gICAgICAgICAgICBdCistICAgICAgICAgICAgaWYgemVyb19wb2ludF9kdHlwZToKKy0gICAg ICAgICAgICAgICAgaW5wdXRzLmFwcGVuZCgKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5t YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJaUCIsIHplcm9fcG9pbnRfZHR5cGUsIHNjYWxlX3NoYXBl KQorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgICAgIG5vZGVzWzBdLmlucHV0LmFw cGVuZCgiWlAiKQorLSAgICAgICAgICAgIG91dHB1dF90eXBlXyA9IG91dHB1dF9kdHlwZSBvciB6 ZXJvX3BvaW50X2R0eXBlCistICAgICAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICAgICAgbm9kZXMsCistICAgICAgICAgICAgICAgICJ0ZXN0IiwKKy0gICAg ICAgICAgICAgICAgaW5wdXRzLAorLSAgICAgICAgICAgICAgICBbaGVscGVyLm1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlkiLCBvdXRwdXRfdHlwZV8sIGlucHV0X3NoYXBlKV0sCistICAgICAgICAg ICAgKQorLSAgICAgICAgICAgIF8gPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtl X29wZXJhdG9yc2V0aWQoIiIsIDIxKSwgMjApCistCistICAgICAgICBjb250ZXh0X21hbmFnZXIg PSAoCistICAgICAgICAgICAgY29udGV4dGxpYi5udWxsY29udGV4dCgpIGlmIGNvbXBhdGlibGUg ZWxzZSBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpCistICAgICAgICApCistICAgICAg ICB3aXRoIGNvbnRleHRfbWFuYWdlcjogICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKy0g ICAgICAgICAgICB0ZXN0KHhfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlzLCBibG9ja19zaXplLCBv dXRwdXRfZHR5cGUsIHplcm9fcG9pbnRfZHR5cGUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgicGVyX3RlbnNv ciIsICgxNiwgMyksICgxLCksIE5vbmUsIE5vbmUsIFRydWUpLAorLSAgICAgICAgICAgICgicGVy X2F4aXNfbm9uZV9ibG9ja19zaGFwZSIsICgxNiwgMyksICgxNiwpLCAxLCBOb25lLCBUcnVlKSwK Ky0gICAgICAgICAgICAoInBlcl9heGlzX3plcm9fYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMTYs KSwgMSwgMCwgVHJ1ZSksCistICAgICAgICAgICAgKCJwZXJfdGVuc29yX3Bvc2l0aXZlX2Jsb2Nr X3NoYXBlIiwgKDE2LCAzKSwgKDEsKSwgMSwgMiwgRmFsc2UpLAorLSAgICAgICAgICAgICgicGVy X2F4aXNfcG9zaXRpdmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMTYsKSwgMSwgMiwgRmFsc2Up LAorLSAgICAgICAgICAgICgiYmxvY2tlZF8yZCIsICgxNiwgMyksICg0LCAzKSwgMCwgNCwgRmFs c2UpLAorLSAgICAgICAgICAgICgiYmxvY2tlZF8zZCIsICg0LCAzLCAzMiksICg0LCAzLCA4KSwg MiwgNCwgRmFsc2UpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RlcXVhbnRp emVfMjFfMjAoCistICAgICAgICBzZWxmLAorLSAgICAgICAgXzogc3RyLAorLSAgICAgICAgeV9z aGFwZTogdHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgc2NhbGVfc2hhcGU6IHR1cGxlW2ludCwg Li4uXSwKKy0gICAgICAgIGF4aXM6IGludCwKKy0gICAgICAgIGJsb2NrX3NpemU6IGludCwKKy0g ICAgICAgIGNvbXBhdGlibGU6IGJvb2wsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGRlZiB0 ZXN0KGlucHV0X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSkgLT4gTm9uZToK Ky0gICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2Vfbm9k ZSgKKy0gICAgICAgICAgICAgICAgICAgICJEZXF1YW50aXplTGluZWFyIiwKKy0gICAgICAgICAg ICAgICAgICAgIFsiWCIsICJTIiwgIlpQIl0sCistICAgICAgICAgICAgICAgICAgICBbIlkiXSwK Ky0gICAgICAgICAgICAgICAgICAgIGF4aXM9YXhpcywKKy0gICAgICAgICAgICAgICAgICAgIGJs b2NrX3NpemU9YmxvY2tfc2l6ZSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0K Ky0gICAgICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAg ICBub2RlcywKKy0gICAgICAgICAgICAgICAgInRlc3QiLAorLSAgICAgICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRl bnNvclByb3RvLklOVDgsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBl ci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX3No YXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJaUCIsIFRlbnNvclByb3RvLklOVDgsIHNjYWxlX3NoYXBlKSwKKy0gICAgICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICAgICAgW2hlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKV0sCistICAgICAgICAgICAgKQorLSAgICAg ICAgICAgIF8gPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0 aWQoIiIsIDIxKSwgMjApCistCistICAgICAgICBjb250ZXh0X21hbmFnZXIgPSAoCistICAgICAg ICAgICAgY29udGV4dGxpYi5udWxsY29udGV4dCgpIGlmIGNvbXBhdGlibGUgZWxzZSBzZWxmLmFz c2VydFJhaXNlcyhSdW50aW1lRXJyb3IpCistICAgICAgICApCistICAgICAgICB3aXRoIGNvbnRl eHRfbWFuYWdlcjogICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KKy0gICAgICAgICAgICB0 ZXN0KHlfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlzLCBibG9ja19zaXplKQorLQorIAorIGlmIF9f bmFtZV9fID09ICJfX21haW5fXyI6CisgICAgIHVuaXR0ZXN0Lm1haW4oKQorZGlmZiAtLWdpdCBh L3JlcXVpcmVtZW50cy1kZXYudHh0IGIvcmVxdWlyZW1lbnRzLWRldi50eHQKK2luZGV4IGVhMzg3 MTJkOC4uMTY1YjNmN2Y0IDEwMDY0NAorLS0tIGEvcmVxdWlyZW1lbnRzLWRldi50eHQKKysrKyBi L3JlcXVpcmVtZW50cy1kZXYudHh0CitAQCAtMiw3ICsyLDYgQEAgYnVpbGQKKyBqdXB5dGVyCisg bmJ2YWwKKyBudW1weQorLXBhcmFtZXRlcml6ZWQKKyBwcm90b2J1ZgorIHB5dGVzdAorIHB5dGVz dC1jb3YKK2RpZmYgLS1naXQgYS9yZXF1aXJlbWVudHMtcmVsZWFzZS50eHQgYi9yZXF1aXJlbWVu dHMtcmVsZWFzZS50eHQKK2luZGV4IDlhOWQ4NTM1MS4uMGMxOWViZGI1IDEwMDY0NAorLS0tIGEv cmVxdWlyZW1lbnRzLXJlbGVhc2UudHh0CisrKysgYi9yZXF1aXJlbWVudHMtcmVsZWFzZS50eHQK K0BAIC0zLDcgKzMsNiBAQCBpcHl0aG9uCisgbmJ2YWwKKyBudW1weT09MS4yNC4zOyBweXRob25f dmVyc2lvbjwiMy45IgorIG51bXB5PT0yLjAuMDsgcHl0aG9uX3ZlcnNpb24+PSIzLjkiCistcGFy YW1ldGVyaXplZAorIHByb3RvYnVmPT00LjIxLjEyOyBweXRob25fdmVyc2lvbjwiMy4xMiIKKyBw cm90b2J1Zj09NC4yNS4xOyBweXRob25fdmVyc2lvbj49IjMuMTIiCisgcHl0ZXN0CitkaWZmIC0t Z2l0IGEvcmVxdWlyZW1lbnRzLnR4dCBiL3JlcXVpcmVtZW50cy50eHQKK2luZGV4IDQ2ZGQ3Zjdm ZC4uNjJkYWM4YTNiIDEwMDY0NAorLS0tIGEvcmVxdWlyZW1lbnRzLnR4dAorKysrIGIvcmVxdWly ZW1lbnRzLnR4dAorQEAgLTEsMyArMSwyIEBACisgbnVtcHk+PTEuMjAKKyBwcm90b2J1ZiA+PSAz LjE0LjAsIDwgNAorLXBhcmFtZXRlcml6ZWQgPj0gMC44LjEsIDwgMQorLS0gCisyLjUyLjAKKwoK ZGlmZiAtLWdpdCBhL29ubnguc3BlYyBiL29ubnguc3BlYwppbmRleCA5YjQxNzQxLi41NGYyMTY3 IDEwMDY0NAotLS0gYS9vbm54LnNwZWMKKysrIGIvb25ueC5zcGVjCkBAIC0xLDE5ICsxLDIxIEBA CiBOYW1lOiAgICAgICBvbm54CiBWZXJzaW9uOiAgICAxLjE3LjAKLVJlbGVhc2U6ICAgIDglez9k aXN0fQorUmVsZWFzZTogICAgOSV7P2Rpc3R9CiBTdW1tYXJ5OiAgICBPcGVuIHN0YW5kYXJkIGZv ciBtYWNoaW5lIGxlYXJuaW5nIGludGVyb3BlcmFiaWxpdHkKIExpY2Vuc2U6ICAgIEFwYWNoZS0y LjAKIAogVVJMOiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueAogU291cmNlMDog ICAgaHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueC9hcmNoaXZlL3Yle3ZlcnNpb259LyV7bmFt ZX0tJXt2ZXJzaW9ufS50YXIuZ3oKICMgQnVpbGQgc2hhcmVkIGxpYnJhcmllcyBhbmQgZml4IGlu c3RhbGwgbG9jYXRpb24gCi1QYXRjaDA6ICAgICAwMDAwLUJ1aWxkLXNoYXJlZC1saWJyYXJpZXMt YW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCitQYXRjaDogICAgIDAwMDAtQnVpbGQtc2hh cmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKICMgVXNlIHN5c3Rl bSBwcm90b2J1ZiBhbmQgcmVxdWlyZSBwYXJhbWV0ZXJpemVkCi1QYXRjaDI6ICAgICAwMDAyLVVz ZS1zeXN0ZW0tcHJvdG9idWYtYW5kLXJlcXVpcmUtcGFyYW1ldGVyaXplZC5wYXRjaAorUGF0Y2g6 ICAgICAwMDAxLVVzZS1zeXN0ZW0tcHJvdG9idWYtYW5kLXJlcXVpcmUtcGFyYW1ldGVyaXplZC5w YXRjaAogIyBMZXQgcHlwcm9qZWN0X3doZWVsIHVzZSBiaW5hcmllcyBmcm9tIGNtYWtlX2J1aWxk Ci1QYXRjaDM6ICAgICAwMDAzLUxldC1weXByb2plY3Rfd2hlZWwtdXNlLWJpbmFyaWVzLWZyb20t Y21ha2VfYnVpbGQucGF0Y2gKK1BhdGNoOiAgICAgMDAwMi1MZXQtcHlwcm9qZWN0X3doZWVsLXVz ZS1iaW5hcmllcy1mcm9tLWNtYWtlX2J1aWxkLnBhdGNoCiAjIEFkZCBmaXhlcyBmb3IgdXNlIHdp dGggb25ueHJ1bnRpbWUKLVBhdGNoNDogICAgIDAwMDQtQWRkLWZpeGVzLWZvci11c2Utd2l0aC1v bm54cnVudGltZS5wYXRjaAorUGF0Y2g6ICAgICAwMDAzLUFkZC1maXhlcy1mb3ItdXNlLXdpdGgt b25ueHJ1bnRpbWUucGF0Y2gKKyMgQWRkIGZpeGVzIGZvciB1c2Ugd2l0aCBvbm54cnVudGltZQor UGF0Y2g6ICAgICAwMDA0LVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBh dGNoCiAKICMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0yMjEy MDk2CiBFeGNsdWRlQXJjaDogICAgczM5MHgKQEAgLTEyMiw2ICsxMjQsMTAgQEAgZXhwb3J0IExE X0xJQlJBUllfUEFUSD0le2J1aWxkcm9vdH0vJXtfbGliZGlyfQogJXtfYmluZGlyfS9jaGVjay1u b2RlCiAKICVjaGFuZ2Vsb2cKKyogVGh1IEphbiAxNSAyMDI2IERpZWdvIEhlcnJlcmEgPGRoZXJy ZXJhQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTcuMC05CistIERpc2FibGUgdGVzdHMgdGhhdCBk ZXBlbmQgb24gcHl0aG9uLXBhcmFtZXRlcml6ZWQKKy0gQ2xlYW4gdXAgcGF0Y2hlcworCiAqIEZy aSBTZXAgMTkgMjAyNSBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEu MTcuMC04CiAtIFJlYnVpbHQgZm9yIFB5dGhvbiAzLjE0LjByYzMgYnl0ZWNvZGUKIAo=