ZGlmZiAtLWdpdCBhL0xpYi90ZXN0L291dHB1dC90ZXN0X3VuaWNvZGUgYi9MaWIvdGVzdC9vdXRwdXQvdGVzdF91bmljb2RlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYzkwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9vdXRwdXQvdGVzdF91bmljb2RlCkBAIC0wLDAgKzEsNCBAQAordGVzdF91bmljb2RlCitUZXN0aW5nIFVuaWNvZGUgY29tcGFyaXNvbnMuLi4gZG9uZS4KK1Rlc3RpbmcgVW5pY29kZSBmb3JtYXR0aW5nIHN0cmluZ3MuLi4gZG9uZS4KK1Rlc3RpbmcgdW5pY29kZWRhdGEgbW9kdWxlLi4uIGRvbmUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CmluZGV4IGYyOTFiM2YuLmJiNmQwMzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CkBAIC0xMSwxMiArMTEsMTMgQEAKICAgICBpZiB2ZXJib3NlOgogICAgICAgICBwcmludCAnc3RyaW5nLiVzJXMgPT8gJXMuLi4gJyAlIChuYW1lLCAoaW5wdXQsKSArIGFyZ3MsIG91dHB1dCksCiAgICAgdHJ5OgorICAgICAgICAjIFByZWZlciBzdHJpbmcgbWV0aG9kcyBvdmVyIHN0cmluZyBtb2R1bGUgZnVuY3Rpb25zCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBnZXRhdHRyKHN0cmluZywgbmFtZSkKLSAgICAgICAgICAgIHZhbHVlID0gYXBwbHkoZiwgKGlucHV0LCkgKyBhcmdzKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBmID0gZ2V0YXR0cihpbnB1dCwgbmFtZSkKICAgICAgICAgICAgIHZhbHVlID0gYXBwbHkoZiwgYXJncykKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZiA9IGdldGF0dHIoc3RyaW5nLCBuYW1lKQorICAgICAgICAgICAgdmFsdWUgPSBhcHBseShmLCAoaW5wdXQsKSArIGFyZ3MpCiAgICAgZXhjZXB0OgogICAgICAgICAgdmFsdWUgPSBzeXMuZXhjX3R5cGUKICAgICBpZiB2YWx1ZSAhPSBvdXRwdXQ6CkBAIC00OCw2ICs0OSw1MCBAQAogdGVzdCgndXBwZXInLCAnSGVMTG8nLCAnSEVMTE8nKQogdGVzdCgndXBwZXInLCAnSEVMTE8nLCAnSEVMTE8nKQogCit0ZXN0KCd0aXRsZScsICcgaGVsbG8gJywgJyBIZWxsbyAnKQordGVzdCgndGl0bGUnLCAnaGVsbG8gJywgJ0hlbGxvICcpCit0ZXN0KCd0aXRsZScsICJmT3JNYVQgdGhJcyBhUyB0aXRMZSBTdHJpbmciLCAnRm9ybWF0IFRoaXMgQXMgVGl0bGUgU3RyaW5nJykKK3Rlc3QoJ3RpdGxlJywgImZPck1hVCx0aElzLWFTKnRpdExlO1N0cmluZyIsICdGb3JtYXQsVGhpcy1BcypUaXRsZTtTdHJpbmcnKQordGVzdCgndGl0bGUnLCAiZ2V0SW50IiwgJ0dldGludCcpCisKK3Rlc3QoJ2V4cGFuZHRhYnMnLCAnYWJjXHJhYlx0ZGVmXG5nXHRoaScsICdhYmNccmFiICAgICAgZGVmXG5nICAgICAgIGhpJykKK3Rlc3QoJ2V4cGFuZHRhYnMnLCAnYWJjXHJhYlx0ZGVmXG5nXHRoaScsICdhYmNccmFiICAgICAgZGVmXG5nICAgICAgIGhpJywgOCkKK3Rlc3QoJ2V4cGFuZHRhYnMnLCAnYWJjXHJhYlx0ZGVmXG5nXHRoaScsICdhYmNccmFiICBkZWZcbmcgICBoaScsIDQpCit0ZXN0KCdleHBhbmR0YWJzJywgJ2FiY1xyXG5hYlx0ZGVmXG5nXHRoaScsICdhYmNcclxuYWIgIGRlZlxuZyAgIGhpJywgNCkKKwordGVzdCgnaXNsb3dlcicsICdhJywgMSkKK3Rlc3QoJ2lzbG93ZXInLCAnQScsIDApCit0ZXN0KCdpc2xvd2VyJywgJ1xuJywgMCkKK3Rlc3QoJ2lzbG93ZXInLCAnYWJjJywgMSkKK3Rlc3QoJ2lzbG93ZXInLCAnYUJjJywgMCkKK3Rlc3QoJ2lzbG93ZXInLCAnYWJjXG4nLCAxKQorCit0ZXN0KCdpc3VwcGVyJywgJ2EnLCAwKQordGVzdCgnaXN1cHBlcicsICdBJywgMSkKK3Rlc3QoJ2lzdXBwZXInLCAnXG4nLCAwKQordGVzdCgnaXN1cHBlcicsICdBQkMnLCAxKQordGVzdCgnaXN1cHBlcicsICdBYkMnLCAwKQordGVzdCgnaXN1cHBlcicsICdBQkNcbicsIDEpCisKK3Rlc3QoJ2lzdGl0bGUnLCAnYScsIDApCit0ZXN0KCdpc3RpdGxlJywgJ0EnLCAxKQordGVzdCgnaXN0aXRsZScsICdcbicsIDApCit0ZXN0KCdpc3RpdGxlJywgJ0EgVGl0bGVjYXNlZCBMaW5lJywgMSkKK3Rlc3QoJ2lzdGl0bGUnLCAnQVxuVGl0bGVjYXNlZCBMaW5lJywgMSkKK3Rlc3QoJ2lzdGl0bGUnLCAnQSBUaXRsZWNhc2VkLCBMaW5lJywgMSkKK3Rlc3QoJ2lzdGl0bGUnLCAnTm90IGEgY2FwaXRhbGl6ZWQgU3RyaW5nJywgMCkKK3Rlc3QoJ2lzdGl0bGUnLCAnTm90XHRhIFRpdGxlY2FzZSBTdHJpbmcnLCAwKQordGVzdCgnaXN0aXRsZScsICdOb3QtLWEgVGl0bGVjYXNlIFN0cmluZycsIDApCisKK3Rlc3QoJ3NwbGl0bGluZXMnLCAiYWJjXG5kZWZcblxyZ2hpIiwgWydhYmMnLCAnZGVmJywgJycsICdnaGknXSkKK3Rlc3QoJ3NwbGl0bGluZXMnLCAiYWJjXG5kZWZcblxyXG5naGkiLCBbJ2FiYycsICdkZWYnLCAnJywgJ2doaSddKQordGVzdCgnc3BsaXRsaW5lcycsICJhYmNcbmRlZlxyXG5naGkiLCBbJ2FiYycsICdkZWYnLCAnZ2hpJ10pCit0ZXN0KCdzcGxpdGxpbmVzJywgImFiY1xuZGVmXHJcbmdoaVxuIiwgWydhYmMnLCAnZGVmJywgJ2doaSddKQordGVzdCgnc3BsaXRsaW5lcycsICJhYmNcbmRlZlxyXG5naGlcblxyIiwgWydhYmMnLCAnZGVmJywgJ2doaScsICcnXSkKK3Rlc3QoJ3NwbGl0bGluZXMnLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10pCit0ZXN0KCdzcGxpdGxpbmVzJywgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsIFsnJywgJ2FiY1wwMTJkZWZcMDE1XDAxMmdoaVwwMTJcMDE1J10sIDEpCit0ZXN0KCdzcGxpdGxpbmVzJywgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsIFsnJywgJ2FiYycsICdkZWZcMDE1XDAxMmdoaVwwMTJcMDE1J10sIDIpCisKIHRyYW5zdGFibGUgPSAnXDAwMFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzcgISIjJCUmXCcoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9geHl6ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XDE3N1wyMDBcMjAxXDIwMlwyMDNcMjA0XDIwNVwyMDZcMjA3XDIxMFwyMTFcMjEyXDIxM1wyMTRcMjE1XDIxNlwyMTdcMjIwXDIyMVwyMjJcMjIzXDIyNFwyMjVcMjI2XDIyN1wyMzBcMjMxXDIzMlwyMzNcMjM0XDIzNVwyMzZcMjM3XDI0MFwyNDFcMjQyXDI0M1wyNDRcMjQ1XDI0NlwyNDdcMjUwXDI1MVwyNTJcMjUzXDI1NFwyNTVcMjU2XDI1N1wyNjBcMjYxXDI2MlwyNjNcMjY0XDI2NVwyNjZcMjY3XDI3MFwyNzFcMjcyXDI3M1wyNzRcMjc1XDI3NlwyNzdcMzAwXDMwMVwzMDJcMzAzXDMwNFwzMDVcMzA2XDMwN1wzMTBcMzExXDMxMlwzMTNcMzE0XDMxNVwzMTZcMzE3XDMyMFwzMjFcMzIyXDMyM1wzMjRcMzI1XDMyNlwzMjdcMzMwXDMzMVwzMzJcMzMzXDMzNFwzMzVcMzM2XDMzN1wzNDBcMzQxXDM0MlwzNDNcMzQ0XDM0NVwzNDZcMzQ3XDM1MFwzNTFcMzUyXDM1M1wzNTRcMzU1XDM1NlwzNTdcMzYwXDM2MVwzNjJcMzYzXDM2NFwzNjVcMzY2XDM2N1wzNzBcMzcxXDM3MlwzNzNcMzc0XDM3NVwzNzZcMzc3JwogCiB0ZXN0KCdtYWtldHJhbnMnLCAnYWJjJywgdHJhbnN0YWJsZSwgJ3h5eicpCkBAIC02MSw4ICsxMDYsOSBAQAogdGVzdCgnc3BsaXQnLCAnYSBiIGMgZCcsIFsnYScsICdiJywgJ2MgZCddLCBOb25lLCAyKQogdGVzdCgnc3BsaXQnLCAnYSBiIGMgZCcsIFsnYScsICdiJywgJ2MnLCAnZCddLCBOb25lLCAzKQogdGVzdCgnc3BsaXQnLCAnYSBiIGMgZCcsIFsnYScsICdiJywgJ2MnLCAnZCddLCBOb25lLCA0KQotdGVzdCgnc3BsaXQnLCAnYSBiIGMgZCcsIFsnYScsICdiJywgJ2MnLCAnZCddLCBOb25lLCAwKQordGVzdCgnc3BsaXQnLCAnYSBiIGMgZCcsIFsnYSBiIGMgZCddLCBOb25lLCAwKQogdGVzdCgnc3BsaXQnLCAnYSAgYiAgYyAgZCcsIFsnYScsICdiJywgJ2MgIGQnXSwgTm9uZSwgMikKK3Rlc3QoJ3NwbGl0JywgJ2EgYiBjIGQgJywgWydhJywgJ2InLCAnYycsICdkJ10pCiAKICMgam9pbiBub3cgd29ya3Mgd2l0aCBhbnkgc2VxdWVuY2UgdHlwZQogY2xhc3MgU2VxdWVuY2U6CkBAIC03NSwxMyArMTIxLDEwIEBACiB0ZXN0KCdqb2luJywgU2VxdWVuY2UoKSwgJ3cgeCB5IHonKQogdGVzdCgnam9pbicsIDcsIFR5cGVFcnJvcikKIAotY2xhc3MgQmFkU3RyOgotICAgIGRlZiBfX3N0cl9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLQogY2xhc3MgQmFkU2VxKFNlcXVlbmNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZik6IHNlbGYuc2VxID0gWzcsICdoZWxsbycsIEJhZFN0cigpXQorICAgIGRlZiBfX2luaXRfXyhzZWxmKTogc2VsZi5zZXEgPSBbNywgJ2hlbGxvJywgMTIzTF0KIAotdGVzdCgnam9pbicsIEJhZFNlcSgpLCBSdW50aW1lRXJyb3IpCit0ZXN0KCdqb2luJywgQmFkU2VxKCksIFR5cGVFcnJvcikKIAogIyB0cnkgYSBmZXcgbG9uZyBvbmVzCiBwcmludCBzdHJpbmcuam9pbihbJ3gnICogMTAwXSAqIDEwMCwgJzonKQpAQCAtMTAzLDcgKzE0Niw3IEBACiB0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZUB0d29AdGhyZWUhJywgJyEnLCAnQCcsIDIpCiB0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZUB0d29AdGhyZWVAJywgJyEnLCAnQCcsIDMpCiB0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZUB0d29AdGhyZWVAJywgJyEnLCAnQCcsIDQpCi10ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZUB0d29AdGhyZWVAJywgJyEnLCAnQCcsIDApCit0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZSF0d28hdGhyZWUhJywgJyEnLCAnQCcsIDApCiB0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZUB0d29AdGhyZWVAJywgJyEnLCAnQCcpCiB0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZSF0d28hdGhyZWUhJywgJ3gnLCAnQCcpCiB0ZXN0KCdyZXBsYWNlJywgJ29uZSF0d28hdGhyZWUhJywgJ29uZSF0d28hdGhyZWUhJywgJ3gnLCAnQCcsIDIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk5NGZiMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtMCwwICsxLDI4MSBAQAorIiIiIFRlc3Qgc2NyaXB0IGZvciB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbi4KKworCitXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KKworKGMpIENvcHlyaWdodCBDTlJJLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBOTyBXQVJSQU5UWS4KKworIiIiCitmcm9tIHRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZQoraW1wb3J0IHN5cworCitkZWYgdGVzdChtZXRob2QsIGlucHV0LCBvdXRwdXQsICphcmdzKToKKyAgICBpZiB2ZXJib3NlOgorICAgICAgICBwcmludCAnJXMuJXMlcyA9PyAlcy4uLiAnICUgKHJlcHIoaW5wdXQpLCBtZXRob2QsIGFyZ3MsIG91dHB1dCksCisgICAgdHJ5OgorICAgICAgICBmID0gZ2V0YXR0cihpbnB1dCwgbWV0aG9kKQorICAgICAgICB2YWx1ZSA9IGFwcGx5KGYsIGFyZ3MpCisgICAgZXhjZXB0OgorICAgICAgICB2YWx1ZSA9IHN5cy5leGNfdHlwZQorICAgICAgICBleGMgPSBzeXMuZXhjX2luZm8oKQorICAgIGVsc2U6CisgICAgICAgIGV4YyA9IE5vbmUKKyAgICBpZiB2YWx1ZSAhPSBvdXRwdXQ6CisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCAnbm8nCisgICAgICAgIHByaW50ICcqJyxmLCBgaW5wdXRgLCBgb3V0cHV0YCwgYHZhbHVlYAorICAgICAgICBpZiBleGM6CisgICAgICAgICAgICBwcmludCAnICB2YWx1ZSA9PSAlczogJXMnICUgKGV4Y1s6Ml0pCisgICAgZWxzZToKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50ICd5ZXMnCisKK3Rlc3QoJ2NhcGl0YWxpemUnLCB1JyBoZWxsbyAnLCB1JyBoZWxsbyAnKQordGVzdCgnY2FwaXRhbGl6ZScsIHUnaGVsbG8gJywgdSdIZWxsbyAnKQorCit0ZXN0KCd0aXRsZScsIHUnIGhlbGxvICcsIHUnIEhlbGxvICcpCit0ZXN0KCd0aXRsZScsIHUnaGVsbG8gJywgdSdIZWxsbyAnKQordGVzdCgndGl0bGUnLCB1ImZPck1hVCB0aElzIGFTIHRpdExlIFN0cmluZyIsIHUnRm9ybWF0IFRoaXMgQXMgVGl0bGUgU3RyaW5nJykKK3Rlc3QoJ3RpdGxlJywgdSJmT3JNYVQsdGhJcy1hUyp0aXRMZTtTdHJpbmciLCB1J0Zvcm1hdCxUaGlzLUFzKlRpdGxlO1N0cmluZycpCit0ZXN0KCd0aXRsZScsIHUiZ2V0SW50IiwgdSdHZXRpbnQnKQorCit0ZXN0KCdmaW5kJywgdSdhYmNkZWZnaGlhYmMnLCAwLCB1J2FiYycpCit0ZXN0KCdmaW5kJywgdSdhYmNkZWZnaGlhYmMnLCA5LCB1J2FiYycsIDEpCit0ZXN0KCdmaW5kJywgdSdhYmNkZWZnaGlhYmMnLCAtMSwgdSdkZWYnLCA0KQorCit0ZXN0KCdyZmluZCcsIHUnYWJjZGVmZ2hpYWJjJywgOSwgdSdhYmMnKQorCit0ZXN0KCdsb3dlcicsIHUnSGVMTG8nLCB1J2hlbGxvJykKK3Rlc3QoJ2xvd2VyJywgdSdoZWxsbycsIHUnaGVsbG8nKQorCit0ZXN0KCd1cHBlcicsIHUnSGVMTG8nLCB1J0hFTExPJykKK3Rlc3QoJ3VwcGVyJywgdSdIRUxMTycsIHUnSEVMTE8nKQorCitpZiAwOgorICAgIHRyYW5zdGFibGUgPSAnXDAwMFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzcgISIjJCUmXCcoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9geHl6ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XDE3N1wyMDBcMjAxXDIwMlwyMDNcMjA0XDIwNVwyMDZcMjA3XDIxMFwyMTFcMjEyXDIxM1wyMTRcMjE1XDIxNlwyMTdcMjIwXDIyMVwyMjJcMjIzXDIyNFwyMjVcMjI2XDIyN1wyMzBcMjMxXDIzMlwyMzNcMjM0XDIzNVwyMzZcMjM3XDI0MFwyNDFcMjQyXDI0M1wyNDRcMjQ1XDI0NlwyNDdcMjUwXDI1MVwyNTJcMjUzXDI1NFwyNTVcMjU2XDI1N1wyNjBcMjYxXDI2MlwyNjNcMjY0XDI2NVwyNjZcMjY3XDI3MFwyNzFcMjcyXDI3M1wyNzRcMjc1XDI3NlwyNzdcMzAwXDMwMVwzMDJcMzAzXDMwNFwzMDVcMzA2XDMwN1wzMTBcMzExXDMxMlwzMTNcMzE0XDMxNVwzMTZcMzE3XDMyMFwzMjFcMzIyXDMyM1wzMjRcMzI1XDMyNlwzMjdcMzMwXDMzMVwzMzJcMzMzXDMzNFwzMzVcMzM2XDMzN1wzNDBcMzQxXDM0MlwzNDNcMzQ0XDM0NVwzNDZcMzQ3XDM1MFwzNTFcMzUyXDM1M1wzNTRcMzU1XDM1NlwzNTdcMzYwXDM2MVwzNjJcMzYzXDM2NFwzNjVcMzY2XDM2N1wzNzBcMzcxXDM3MlwzNzNcMzc0XDM3NVwzNzZcMzc3JworCisgICAgdGVzdCgnbWFrZXRyYW5zJywgdSdhYmMnLCB0cmFuc3RhYmxlLCB1J3h5eicpCisgICAgdGVzdCgnbWFrZXRyYW5zJywgdSdhYmMnLCBWYWx1ZUVycm9yLCB1J3h5enEnKQorCit0ZXN0KCdzcGxpdCcsIHUndGhpcyBpcyB0aGUgc3BsaXQgZnVuY3Rpb24nLAorICAgICBbdSd0aGlzJywgdSdpcycsIHUndGhlJywgdSdzcGxpdCcsIHUnZnVuY3Rpb24nXSkKK3Rlc3QoJ3NwbGl0JywgdSdhfGJ8Y3xkJywgW3UnYScsIHUnYicsIHUnYycsIHUnZCddLCB1J3wnKQordGVzdCgnc3BsaXQnLCB1J2F8YnxjfGQnLCBbdSdhJywgdSdiJywgdSdjfGQnXSwgdSd8JywgMikKK3Rlc3QoJ3NwbGl0JywgdSdhIGIgYyBkJywgW3UnYScsIHUnYiBjIGQnXSwgTm9uZSwgMSkKK3Rlc3QoJ3NwbGl0JywgdSdhIGIgYyBkJywgW3UnYScsIHUnYicsIHUnYyBkJ10sIE5vbmUsIDIpCit0ZXN0KCdzcGxpdCcsIHUnYSBiIGMgZCcsIFt1J2EnLCB1J2InLCB1J2MnLCB1J2QnXSwgTm9uZSwgMykKK3Rlc3QoJ3NwbGl0JywgdSdhIGIgYyBkJywgW3UnYScsIHUnYicsIHUnYycsIHUnZCddLCBOb25lLCA0KQordGVzdCgnc3BsaXQnLCB1J2EgYiBjIGQnLCBbdSdhIGIgYyBkJ10sIE5vbmUsIDApCit0ZXN0KCdzcGxpdCcsIHUnYSAgYiAgYyAgZCcsIFt1J2EnLCB1J2InLCB1J2MgIGQnXSwgTm9uZSwgMikKK3Rlc3QoJ3NwbGl0JywgdSdhIGIgYyBkICcsIFt1J2EnLCB1J2InLCB1J2MnLCB1J2QnXSkKKworIyBqb2luIG5vdyB3b3JrcyB3aXRoIGFueSBzZXF1ZW5jZSB0eXBlCitjbGFzcyBTZXF1ZW5jZToKKyAgICBkZWYgX19pbml0X18oc2VsZik6IHNlbGYuc2VxID0gJ3d4eXonCisgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiBsZW4oc2VsZi5zZXEpCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gc2VsZi5zZXFbaV0KKwordGVzdCgnam9pbicsIHUnICcsIHUnYSBiIGMgZCcsIFt1J2EnLCB1J2InLCB1J2MnLCB1J2QnXSkKK3Rlc3QoJ2pvaW4nLCB1JycsIHUnYWJjZCcsICh1J2EnLCB1J2InLCB1J2MnLCB1J2QnKSkKK3Rlc3QoJ2pvaW4nLCB1JyAnLCB1J3cgeCB5IHonLCBTZXF1ZW5jZSgpKQordGVzdCgnam9pbicsIHUnICcsIFR5cGVFcnJvciwgNykKKworY2xhc3MgQmFkU2VxKFNlcXVlbmNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6IHNlbGYuc2VxID0gWzcsIHUnaGVsbG8nLCAxMjNMXQorCit0ZXN0KCdqb2luJywgdScgJywgVHlwZUVycm9yLCBCYWRTZXEoKSkKKworcmVzdWx0ID0gdScnCitmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgaWYgaSA+IDA6CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIHUnOicKKyAgICByZXN1bHQgPSByZXN1bHQgKyB1J3gnKjEwCit0ZXN0KCdqb2luJywgdSc6JywgcmVzdWx0LCBbdSd4JyAqIDEwXSAqIDEwKQordGVzdCgnam9pbicsIHUnOicsIHJlc3VsdCwgKHUneCcgKiAxMCwpICogMTApCisKK3Rlc3QoJ3N0cmlwJywgdScgICBoZWxsbyAgICcsIHUnaGVsbG8nKQordGVzdCgnbHN0cmlwJywgdScgICBoZWxsbyAgICcsIHUnaGVsbG8gICAnKQordGVzdCgncnN0cmlwJywgdScgICBoZWxsbyAgICcsIHUnICAgaGVsbG8nKQordGVzdCgnc3RyaXAnLCB1J2hlbGxvJywgdSdoZWxsbycpCisKK3Rlc3QoJ3N3YXBjYXNlJywgdSdIZUxMbyBjT21wVXRlUnMnLCB1J2hFbGxPIENvTVB1VEVyUycpCisKK2lmIDA6CisgICAgdGVzdCgndHJhbnNsYXRlJywgdSd4eXphYmNkZWYnLCB1J3h5enh5eicsIHRyYW5zdGFibGUsIHUnZGVmJykKKworICAgIHRhYmxlID0gc3RyaW5nLm1ha2V0cmFucygnYScsIHUnQScpCisgICAgdGVzdCgndHJhbnNsYXRlJywgdSdhYmMnLCB1J0FiYycsIHRhYmxlKQorICAgIHRlc3QoJ3RyYW5zbGF0ZScsIHUneHl6JywgdSd4eXonLCB0YWJsZSkKKwordGVzdCgncmVwbGFjZScsIHUnb25lIXR3byF0aHJlZSEnLCB1J29uZUB0d28hdGhyZWUhJywgdSchJywgdSdAJywgMSkKK3Rlc3QoJ3JlcGxhY2UnLCB1J29uZSF0d28hdGhyZWUhJywgdSdvbmVAdHdvQHRocmVlIScsIHUnIScsIHUnQCcsIDIpCit0ZXN0KCdyZXBsYWNlJywgdSdvbmUhdHdvIXRocmVlIScsIHUnb25lQHR3b0B0aHJlZUAnLCB1JyEnLCB1J0AnLCAzKQordGVzdCgncmVwbGFjZScsIHUnb25lIXR3byF0aHJlZSEnLCB1J29uZUB0d29AdGhyZWVAJywgdSchJywgdSdAJywgNCkKK3Rlc3QoJ3JlcGxhY2UnLCB1J29uZSF0d28hdGhyZWUhJywgdSdvbmUhdHdvIXRocmVlIScsIHUnIScsIHUnQCcsIDApCit0ZXN0KCdyZXBsYWNlJywgdSdvbmUhdHdvIXRocmVlIScsIHUnb25lQHR3b0B0aHJlZUAnLCB1JyEnLCB1J0AnKQordGVzdCgncmVwbGFjZScsIHUnb25lIXR3byF0aHJlZSEnLCB1J29uZSF0d28hdGhyZWUhJywgdSd4JywgdSdAJykKK3Rlc3QoJ3JlcGxhY2UnLCB1J29uZSF0d28hdGhyZWUhJywgdSdvbmUhdHdvIXRocmVlIScsIHUneCcsIHUnQCcsIDIpCisKK3Rlc3QoJ3N0YXJ0c3dpdGgnLCB1J2hlbGxvJywgMSwgdSdoZScpCit0ZXN0KCdzdGFydHN3aXRoJywgdSdoZWxsbycsIDEsIHUnaGVsbG8nKQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG8nLCAwLCB1J2hlbGxvIHdvcmxkJykKK3Rlc3QoJ3N0YXJ0c3dpdGgnLCB1J2hlbGxvJywgMSwgdScnKQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG8nLCAwLCB1J2VsbG8nKQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG8nLCAxLCB1J2VsbG8nLCAxKQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG8nLCAxLCB1J28nLCA0KQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG8nLCAwLCB1J28nLCA1KQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG8nLCAxLCB1JycsIDUpCit0ZXN0KCdzdGFydHN3aXRoJywgdSdoZWxsbycsIDAsIHUnbG8nLCA2KQordGVzdCgnc3RhcnRzd2l0aCcsIHUnaGVsbG93b3JsZCcsIDEsIHUnbG93bycsIDMpCit0ZXN0KCdzdGFydHN3aXRoJywgdSdoZWxsb3dvcmxkJywgMSwgdSdsb3dvJywgMywgNykKK3Rlc3QoJ3N0YXJ0c3dpdGgnLCB1J2hlbGxvd29ybGQnLCAwLCB1J2xvd28nLCAzLCA2KQorCit0ZXN0KCdlbmRzd2l0aCcsIHUnaGVsbG8nLCAxLCB1J2xvJykKK3Rlc3QoJ2VuZHN3aXRoJywgdSdoZWxsbycsIDAsIHUnaGUnKQordGVzdCgnZW5kc3dpdGgnLCB1J2hlbGxvJywgMSwgdScnKQordGVzdCgnZW5kc3dpdGgnLCB1J2hlbGxvJywgMCwgdSdoZWxsbyB3b3JsZCcpCit0ZXN0KCdlbmRzd2l0aCcsIHUnaGVsbG93b3JsZCcsIDAsIHUnd29ybCcpCit0ZXN0KCdlbmRzd2l0aCcsIHUnaGVsbG93b3JsZCcsIDEsIHUnd29ybCcsIDMsIDkpCit0ZXN0KCdlbmRzd2l0aCcsIHUnaGVsbG93b3JsZCcsIDEsIHUnd29ybGQnLCAzLCAxMikKK3Rlc3QoJ2VuZHN3aXRoJywgdSdoZWxsb3dvcmxkJywgMSwgdSdsb3dvJywgMSwgNykKK3Rlc3QoJ2VuZHN3aXRoJywgdSdoZWxsb3dvcmxkJywgMSwgdSdsb3dvJywgMiwgNykKK3Rlc3QoJ2VuZHN3aXRoJywgdSdoZWxsb3dvcmxkJywgMSwgdSdsb3dvJywgMywgNykKK3Rlc3QoJ2VuZHN3aXRoJywgdSdoZWxsb3dvcmxkJywgMCwgdSdsb3dvJywgNCwgNykKK3Rlc3QoJ2VuZHN3aXRoJywgdSdoZWxsb3dvcmxkJywgMCwgdSdsb3dvJywgMywgOCkKK3Rlc3QoJ2VuZHN3aXRoJywgdSdhYicsIDAsIHUnYWInLCAwLCAxKQordGVzdCgnZW5kc3dpdGgnLCB1J2FiJywgMCwgdSdhYicsIDAsIDApCisKK3Rlc3QoJ2V4cGFuZHRhYnMnLCB1J2FiY1xyYWJcdGRlZlxuZ1x0aGknLCB1J2FiY1xyYWIgICAgICBkZWZcbmcgICAgICAgaGknKQordGVzdCgnZXhwYW5kdGFicycsIHUnYWJjXHJhYlx0ZGVmXG5nXHRoaScsIHUnYWJjXHJhYiAgICAgIGRlZlxuZyAgICAgICBoaScsIDgpCit0ZXN0KCdleHBhbmR0YWJzJywgdSdhYmNccmFiXHRkZWZcbmdcdGhpJywgdSdhYmNccmFiICBkZWZcbmcgICBoaScsIDQpCit0ZXN0KCdleHBhbmR0YWJzJywgdSdhYmNcclxuYWJcdGRlZlxuZ1x0aGknLCB1J2FiY1xyXG5hYiAgZGVmXG5nICAgaGknLCA0KQorCitpZiAwOgorICAgIHRlc3QoJ2NhcHdvcmRzJywgdSdhYmMgZGVmIGdoaScsIHUnQWJjIERlZiBHaGknKQorICAgIHRlc3QoJ2NhcHdvcmRzJywgdSdhYmNcdGRlZlxuZ2hpJywgdSdBYmMgRGVmIEdoaScpCisgICAgdGVzdCgnY2Fwd29yZHMnLCB1J2FiY1x0ICAgZGVmICBcbmdoaScsIHUnQWJjIERlZiBHaGknKQorCisjIENvbXBhcmlzb25zOgorcHJpbnQgJ1Rlc3RpbmcgVW5pY29kZSBjb21wYXJpc29ucy4uLicsCithc3NlcnQgdSdhYmMnID09ICdhYmMnCithc3NlcnQgJ2FiYycgPT0gdSdhYmMnCithc3NlcnQgdSdhYmMnID09IHUnYWJjJworYXNzZXJ0IHUnYWJjZCcgPiAnYWJjJworYXNzZXJ0ICdhYmNkJyA+IHUnYWJjJworYXNzZXJ0IHUnYWJjZCcgPiB1J2FiYycKK2Fzc2VydCB1J2FiYycgPCAnYWJjZCcKK2Fzc2VydCAnYWJjJyA8IHUnYWJjZCcKK2Fzc2VydCB1J2FiYycgPCB1J2FiY2QnCitwcmludCAnZG9uZS4nCisKK3Rlc3QoJ2xqdXN0JywgdSdhYmMnLCAgdSdhYmMgICAgICAgJywgMTApCit0ZXN0KCdyanVzdCcsIHUnYWJjJywgIHUnICAgICAgIGFiYycsIDEwKQordGVzdCgnY2VudGVyJywgdSdhYmMnLCB1JyAgIGFiYyAgICAnLCAxMCkKK3Rlc3QoJ2xqdXN0JywgdSdhYmMnLCAgdSdhYmMgICAnLCA2KQordGVzdCgncmp1c3QnLCB1J2FiYycsICB1JyAgIGFiYycsIDYpCit0ZXN0KCdjZW50ZXInLCB1J2FiYycsIHUnIGFiYyAgJywgNikKK3Rlc3QoJ2xqdXN0JywgdSdhYmMnLCB1J2FiYycsIDIpCit0ZXN0KCdyanVzdCcsIHUnYWJjJywgdSdhYmMnLCAyKQordGVzdCgnY2VudGVyJywgdSdhYmMnLCB1J2FiYycsIDIpCisKK3Rlc3QoJ2lzbG93ZXInLCB1J2EnLCAxKQordGVzdCgnaXNsb3dlcicsIHUnQScsIDApCit0ZXN0KCdpc2xvd2VyJywgdSdcbicsIDApCit0ZXN0KCdpc2xvd2VyJywgdSdcdTFGRmMnLCAwKQordGVzdCgnaXNsb3dlcicsIHUnYWJjJywgMSkKK3Rlc3QoJ2lzbG93ZXInLCB1J2FCYycsIDApCit0ZXN0KCdpc2xvd2VyJywgdSdhYmNcbicsIDEpCisKK3Rlc3QoJ2lzdXBwZXInLCB1J2EnLCAwKQordGVzdCgnaXN1cHBlcicsIHUnQScsIDEpCit0ZXN0KCdpc3VwcGVyJywgdSdcbicsIDApCit0ZXN0KCdpc3VwcGVyJywgdSdcdTFGRmMnLCAwKQordGVzdCgnaXN1cHBlcicsIHUnQUJDJywgMSkKK3Rlc3QoJ2lzdXBwZXInLCB1J0FiQycsIDApCit0ZXN0KCdpc3VwcGVyJywgdSdBQkNcbicsIDEpCisKK3Rlc3QoJ2lzdGl0bGUnLCB1J2EnLCAwKQordGVzdCgnaXN0aXRsZScsIHUnQScsIDEpCit0ZXN0KCdpc3RpdGxlJywgdSdcbicsIDApCit0ZXN0KCdpc3RpdGxlJywgdSdcdTFGRmMnLCAxKQordGVzdCgnaXN0aXRsZScsIHUnQSBUaXRsZWNhc2VkIExpbmUnLCAxKQordGVzdCgnaXN0aXRsZScsIHUnQVxuVGl0bGVjYXNlZCBMaW5lJywgMSkKK3Rlc3QoJ2lzdGl0bGUnLCB1J0EgVGl0bGVjYXNlZCwgTGluZScsIDEpCit0ZXN0KCdpc3RpdGxlJywgdSdHcmVlayBcdTFGRmNpdGxlY2FzZXMgLi4uJywgMSkKK3Rlc3QoJ2lzdGl0bGUnLCB1J05vdCBhIGNhcGl0YWxpemVkIFN0cmluZycsIDApCit0ZXN0KCdpc3RpdGxlJywgdSdOb3RcdGEgVGl0bGVjYXNlIFN0cmluZycsIDApCit0ZXN0KCdpc3RpdGxlJywgdSdOb3QtLWEgVGl0bGVjYXNlIFN0cmluZycsIDApCisKK3Rlc3QoJ3NwbGl0bGluZXMnLCB1ImFiY1xuZGVmXG5ccmdoaSIsIFt1J2FiYycsIHUnZGVmJywgdScnLCB1J2doaSddKQordGVzdCgnc3BsaXRsaW5lcycsIHUiYWJjXG5kZWZcblxyXG5naGkiLCBbdSdhYmMnLCB1J2RlZicsIHUnJywgdSdnaGknXSkKK3Rlc3QoJ3NwbGl0bGluZXMnLCB1ImFiY1xuZGVmXHJcbmdoaSIsIFt1J2FiYycsIHUnZGVmJywgdSdnaGknXSkKK3Rlc3QoJ3NwbGl0bGluZXMnLCB1ImFiY1xuZGVmXHJcbmdoaVxuIiwgW3UnYWJjJywgdSdkZWYnLCB1J2doaSddKQordGVzdCgnc3BsaXRsaW5lcycsIHUiYWJjXG5kZWZcclxuZ2hpXG5cciIsIFt1J2FiYycsIHUnZGVmJywgdSdnaGknLCB1JyddKQordGVzdCgnc3BsaXRsaW5lcycsIHUiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgW3UnJywgdSdhYmMnLCB1J2RlZicsIHUnZ2hpJywgdScnXSkKK3Rlc3QoJ3NwbGl0bGluZXMnLCB1IlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsIFt1JycsIHUnYWJjXDAxMmRlZlwwMTVcMDEyZ2hpXDAxMlwwMTUnXSwgMSkKK3Rlc3QoJ3NwbGl0bGluZXMnLCB1IlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsIFt1JycsIHUnYWJjJywgdSdkZWZcMDE1XDAxMmdoaVwwMTJcMDE1J10sIDIpCisKK3Rlc3QoJ3RyYW5zbGF0ZScsIHUiYWJhYmFiYyIsIHUnYmJiYycsIHtvcmQoJ2EnKTpOb25lfSkKK3Rlc3QoJ3RyYW5zbGF0ZScsIHUiYWJhYmFiYyIsIHUnaWlpYycsIHtvcmQoJ2EnKTpOb25lLCBvcmQoJ2InKTpvcmQoJ2knKX0pCit0ZXN0KCd0cmFuc2xhdGUnLCB1ImFiYWJhYmMiLCB1J2lpaXgnLCB7b3JkKCdhJyk6Tm9uZSwgb3JkKCdiJyk6b3JkKCdpJyksIG9yZCgnYycpOnUneCd9KQorCisjIEZvcm1hdHRpbmc6CitwcmludCAnVGVzdGluZyBVbmljb2RlIGZvcm1hdHRpbmcgc3RyaW5ncy4uLicsCithc3NlcnQgdSIlcywgJXMiICUgKHUiYWJjIiwgImFiYyIpID09IHUnYWJjLCBhYmMnCithc3NlcnQgdSIlcywgJXMsICVpLCAlZiwgJTUuMmYiICUgKHUiYWJjIiwgImFiYyIsIDEsIDIsIDMpID09IHUnYWJjLCBhYmMsIDEsIDIuMDAwMDAwLCAgMy4wMCcKK2Fzc2VydCB1IiVzLCAlcywgJWksICVmLCAlNS4yZiIgJSAodSJhYmMiLCAiYWJjIiwgMSwgLTIsIDMpID09IHUnYWJjLCBhYmMsIDEsIC0yLjAwMDAwMCwgIDMuMDAnCithc3NlcnQgdSIlcywgJXMsICVpLCAlZiwgJTUuMmYiICUgKHUiYWJjIiwgImFiYyIsIC0xLCAtMiwgMy41KSA9PSB1J2FiYywgYWJjLCAtMSwgLTIuMDAwMDAwLCAgMy41MCcKK2Fzc2VydCB1IiVzLCAlcywgJWksICVmLCAlNS4yZiIgJSAodSJhYmMiLCAiYWJjIiwgLTEsIC0yLCAzLjU3KSA9PSB1J2FiYywgYWJjLCAtMSwgLTIuMDAwMDAwLCAgMy41NycKK2Fzc2VydCB1IiVzLCAlcywgJWksICVmLCAlNS4yZiIgJSAodSJhYmMiLCAiYWJjIiwgLTEsIC0yLCAxMDAzLjU3KSA9PSB1J2FiYywgYWJjLCAtMSwgLTIuMDAwMDAwLCAxMDAzLjU3JworYXNzZXJ0IHUiJWMiICUgKHUiYWJjIiwpID09IHUnYScKK2Fzc2VydCB1IiVjIiAlICgiYWJjIiwpID09IHUnYScKK2Fzc2VydCB1IiVjIiAlICgzNCwpID09IHUnIicKK2Fzc2VydCB1IiVjIiAlICgzNiwpID09IHUnJCcKK2Fzc2VydCB1IiVyLCAlciIgJSAodSJhYmMiLCAiYWJjIikgPT0gdSJ1J2FiYycsICdhYmMnIgorYXNzZXJ0IHUiJSh4KXMsICUoeSlzIiAlIHsneCc6dSJhYmMiLCAneSc6ImRlZiJ9ID09IHUnYWJjLCBkZWYnCithc3NlcnQgdSIlKHgpcywgJSjkKXMiICUgeyd4Jzp1ImFiYyIsIHUn5CcuZW5jb2RlKCd1dGYtOCcpOiJkZWYifSA9PSB1J2FiYywgZGVmJworcHJpbnQgJ2RvbmUuJworCisjIFRlc3QgVW5pY29kZSBkYXRhYmFzZSBBUElzCit0cnk6CisgICAgaW1wb3J0IHVuaWNvZGVkYXRhCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICBwcmludCAnVGVzdGluZyB1bmljb2RlZGF0YSBtb2R1bGUuLi4nLAorICAgIAorICAgIGFzc2VydCB1bmljb2RlZGF0YS5kaWdpdCh1J0EnLE5vbmUpIGlzIE5vbmUKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGlnaXQodSc5JykgPT0gOQorICAgIGFzc2VydCB1bmljb2RlZGF0YS5kaWdpdCh1J1x1MjE1YicsTm9uZSkgaXMgTm9uZQorICAgIGFzc2VydCB1bmljb2RlZGF0YS5kaWdpdCh1J1x1MjQ2OCcpID09IDkKKworICAgIGFzc2VydCB1bmljb2RlZGF0YS5udW1lcmljKHUnQScsTm9uZSkgaXMgTm9uZQorICAgIGFzc2VydCB1bmljb2RlZGF0YS5udW1lcmljKHUnOScpID09IDkKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEubnVtZXJpYyh1J1x1MjE1YicpID09IDAuMTI1CisgICAgYXNzZXJ0IHVuaWNvZGVkYXRhLm51bWVyaWModSdcdTI0NjgnKSA9PSA5LjAKKworICAgIGFzc2VydCB1bmljb2RlZGF0YS5kZWNpbWFsKHUnQScsTm9uZSkgaXMgTm9uZQorICAgIGFzc2VydCB1bmljb2RlZGF0YS5kZWNpbWFsKHUnOScpID09IDkKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGVjaW1hbCh1J1x1MjE1YicsTm9uZSkgaXMgTm9uZQorICAgIGFzc2VydCB1bmljb2RlZGF0YS5kZWNpbWFsKHUnXHUyNDY4JyxOb25lKSBpcyBOb25lCisKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuY2F0ZWdvcnkodSdcdUZGRkUnKSA9PSAnQ24nCisgICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmNhdGVnb3J5KHUnYScpID09ICdMbCcKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuY2F0ZWdvcnkodSdBJykgPT0gJ0x1JworCisgICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmJpZGlyZWN0aW9uYWwodSdcdUZGRkUnKSA9PSAnJworICAgIGFzc2VydCB1bmljb2RlZGF0YS5iaWRpcmVjdGlvbmFsKHUnICcpID09ICdXUycKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbCh1J0EnKSA9PSAnTCcKKworICAgIGFzc2VydCB1bmljb2RlZGF0YS5kZWNvbXBvc2l0aW9uKHUnXHVGRkZFJykgPT0gJycKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGVjb21wb3NpdGlvbih1J1x1MDBiYycpID09ICc8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM0JworCisgICAgYXNzZXJ0IHVuaWNvZGVkYXRhLm1pcnJvcmVkKHUnXHVGRkZFJykgPT0gMAorICAgIGFzc2VydCB1bmljb2RlZGF0YS5taXJyb3JlZCh1J2EnKSA9PSAwCisgICAgYXNzZXJ0IHVuaWNvZGVkYXRhLm1pcnJvcmVkKHUnXHUyMjAxJykgPT0gMQorCisgICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmNvbWJpbmluZyh1J1x1RkZGRScpID09IDAKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuY29tYmluaW5nKHUnYScpID09IDAKKyAgICBhc3NlcnQgdW5pY29kZWRhdGEuY29tYmluaW5nKHUnXHUyMGUxJykgPT0gMjMwCisgICAgCisgICAgcHJpbnQgJ2RvbmUuJwo=