IyAkTWlyT1M6IHNyYy9iaW4vbWtzaC9jaGVjay50LHYgMS43MjEgMjAxNi8wMS8yMCAyMTozNDowOSB0ZyBFeHAgJAojIC0qLSBtb2RlOiBzaCAtKi0KIy0KIyBDb3B5cmlnaHQgwqkgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKIwkgICAgICAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2CiMJbWlyYWJpbG9zIDxtQG1pcmJzZC5vcmc+CiMKIyBQcm92aWRlZCB0aGF0IHRoZXNlIHRlcm1zIGFuZCBkaXNjbGFpbWVyIGFuZCBhbGwgY29weXJpZ2h0IG5vdGljZXMKIyBhcmUgcmV0YWluZWQgb3IgcmVwcm9kdWNlZCBpbiBhbiBhY2NvbXBhbnlpbmcgZG9jdW1lbnQsIHBlcm1pc3Npb24KIyBpcyBncmFudGVkIHRvIGRlYWwgaW4gdGhpcyB3b3JrIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB1buKAkAojIGxpbWl0ZWQgcmlnaHRzIHRvIHVzZSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSwgc2VsbCwgbW9kaWZ5LAojIG1lcmdlLCBnaXZlIGF3YXksIG9yIHN1YmxpY2VuY2UuCiMKIyBUaGlzIHdvcmsgaXMgcHJvdmlkZWQg4oCcQVMgSVPigJ0gYW5kIFdJVEhPVVQgV0FSUkFOVFkgb2YgYW55IGtpbmQsIHRvCiMgdGhlIHV0bW9zdCBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LCBuZWl0aGVyIGV4cHJlc3Mgbm9yCiMgaW1wbGllZDsgd2l0aG91dCBtYWxpY2lvdXMgaW50ZW50IG9yIGdyb3NzIG5lZ2xpZ2VuY2UuIEluIG5vIGV2ZW50CiMgbWF5IGEgbGljZW5zb3IsIGF1dGhvciBvciBjb250cmlidXRvciBiZSBoZWxkIGxpYWJsZSBmb3IgaW5kaXJlY3QsCiMgZGlyZWN0LCBvdGhlciBkYW1hZ2UsIGxvc3MsIG9yIG90aGVyIGlzc3VlcyBhcmlzaW5nIGluIGFueSB3YXkgb3V0CiMgb2YgZGVhbGluZyBpbiB0aGUgd29yaywgZXZlbiBpZiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoCiMgZGFtYWdlIG9yIGV4aXN0ZW5jZSBvZiBhIGRlZmVjdCwgZXhjZXB0IHByb3ZlbiB0aGF0IGl0IHJlc3VsdHMgb3V0CiMgb2Ygc2FpZCBwZXJzb27igJlzIGltbWVkaWF0ZSBmYXVsdCB3aGVuIHVzaW5nIHRoZSB3b3JrIGFzIGludGVuZGVkLgojLQojIFlvdSBtYXkgYWxzbyB3YW50IHRvIHRlc3QgSUZTIHdpdGggdGhlIHNjcmlwdCBhdAojIGh0dHA6Ly93d3cucmVzZWFyY2guYXR0LmNvbS9+Z3NmL3B1YmxpYy9pZnMuc2gKIwojIE1vcmUgdGVzdHN1aXRlcyBhdDoKIyBodHRwOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2UvaGVhZC9iaW4vdGVzdC90ZXN0cy9sZWdhY3lfdGVzdC5zaD92aWV3PWNvJmNvbnRlbnQtdHlwZT10ZXh0JTJGcGxhaW4KIwojIEludGVncmF0ZWQgdGVzdHN1aXRlcyBmcm9tOgojICgyMDEzLzEyLzAyIDIwOjM5OjQ0KSBodHRwOi8vb3BlbmJzZC5jcy50b3JvbnRvLmVkdS9jZ2ktYmluL2N2c3dlYi9zcmMvcmVncmVzcy9iaW4va3NoLz9zb3J0Ynk9ZGF0ZQoKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgjKU1JUkJTRCBLU0ggUjUyIDIwMTYvMDEvMjAKZGVzY3JpcHRpb246CglDaGVjayB2ZXJzaW9uIG9mIHNoZWxsLgpzdGRpbjoKCWVjaG8gJEtTSF9WRVJTSU9OCm5hbWU6IEtTSF9WRVJTSU9OCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8KLS0tCmV4cGVjdGVkLXN0ZG91dDoKCUAoIylMRUdBQ1kgS1NIIFI1MiAyMDE2LzAxLzIwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdmVyc2lvbiBvZiBsZWdhY3kgc2hlbGwuCnN0ZGluOgoJZWNobyAkS1NIX1ZFUlNJT04KbmFtZTogS1NIX1ZFUlNJT04tbGVnYWN5CmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCi0tLQpuYW1lOiBzZWxmdGVzdC0xCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmF6Ci0tLQpuYW1lOiBzZWxmdGVzdC0yCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFmb289YmFyIQpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyCi0tLQpuYW1lOiBzZWxmdGVzdC0zCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFFTlY9Zm5vcmQhCnN0ZGluOgoJZWNobyAiPCRFTlY+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8Zm5vcmQ+Ci0tLQpuYW1lOiBzZWxmdGVzdC1leGVjCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRoYXQgdGhlIHRlc3QgcnVuIGRpcmVjdG9yeSAoZGVmYXVsdCAvdG1wIGJ1dCBjYW4gYmUgY2hhbmdlZAoJd2l0aCBjaGVjay5wbCBmbGFnIC1UIG9yIHRlc3Quc2ggJFRNUERJUikgaXMgbm90IG1vdW50ZWQgbm9leGVjLCBhcwoJd2UgZXhlY3V0ZSBzY3JpcHRzIGZyb20gdGhlIHNjcmF0Y2ggZGlyZWN0b3J5IGR1cmluZyBzZXZlcmFsIHRlc3RzLgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJLi9scQpleHBlY3RlZC1zdGRvdXQ6Cgl0ZgotLS0KbmFtZTogc2VsZnRlc3QtZW52CmRlc2NyaXB0aW9uOgoJSnVzdCBvdXRwdXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgKGFsd2F5cyBmYWlscykKY2F0ZWdvcnk6IGRpc2FibGVkCnN0ZGluOgoJc2V0Ci0tLQpuYW1lOiBzZWxmdGVzdC1sZWdhY3kKZGVzY3JpcHRpb246CglDaGVjayBzb21lIHRoaW5ncyBpbiB0aGUgTEVHQUNZIEtTSApjYXRlZ29yeTogc2hlbGw6bGVnYWN5LXllcwpzdGRpbjoKCXNldCArbyBlbWFjcwoJc2V0ICtvIHZpCglbWyAiJChzZXQgK28pIC1vIiA9ICoiLW8gZW1hY3MgLW8iKiBdXSAmJiBlY2hvIDE9ZW1hY3MKCVtbICIkKHNldCArbykgLW8iID0gKiItbyB2aSAtbyIqIF1dICYmIGVjaG8gMT12aQoJc2V0IC1vIGVtYWNzCglzZXQgLW8gdmkKCVtbICIkKHNldCArbykgLW8iID0gKiItbyBlbWFjcyAtbyIqIF1dICYmIGVjaG8gMj1lbWFjcwoJW1sgIiQoc2V0ICtvKSAtbyIgPSAqIi1vIHZpIC1vIiogXV0gJiYgZWNobyAyPXZpCmV4cGVjdGVkLXN0ZG91dDoKCTI9ZW1hY3MKCTI9dmkKLS0tCm5hbWU6IHNlbGZ0ZXN0LWRpcmVjdC1idWlsdGluLWNhbGwKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGRpcmVjdCBidWlsdGluIGNhbGxzIHdvcmsKc3RkaW46CglsbiAtcyAiJF9fcHJvZ25hbWUiIGNhdCB8fCBjcCAiJF9fcHJvZ25hbWUiIGNhdAoJbG4gLXMgIiRfX3Byb2duYW1lIiBlY2hvIHx8IGNwICIkX19wcm9nbmFtZSIgZWNobwoJLi9lY2hvIC1jICdlY2hvICBmb28nIHwgLi9jYXQgLXUKZXhwZWN0ZWQtc3Rkb3V0OgoJLWMgZWNobyAgZm9vCi0tLQpuYW1lOiBhbGlhcy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1mb29CYXIKCWZvb0JhcgoJZXhpdCAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2Zvb0Jhci4qbm90IGZvdW5kLiovCi0tLQpuYW1lOiBhbGlhcy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1iYXJGb28KCWFsaWFzIGJhckZvbz1mb29CYXIKCWZvb0JhcgoJYmFyRm9vCglleGl0IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm9vQmFyLipub3QgZm91bmQuKlxuLipiYXJGb28uKm5vdCBmb3VuZC8KLS0tCm5hbWU6IGFsaWFzLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb29CYXI9YmFyRm9vCglhbGlhcyBiYXJGb289Zm9vQmFyCglFY2hvIGZvb0JhcgoJdW5hbGlhcyBiYXJGb28KCUVjaG8gZm9vQmFyCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0JhcgoJYmFyRm9vCi0tLQpuYW1lOiBhbGlhcy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gaXNuJ3QgZG9uZSBvbiBrZXl3b3JkcyAoaW4ga2V5d29yZAoJcG9zdGl0aW9ucykuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyB3aGlsZT1XaGlsZQoJd2hpbGUgZmFsc2U7IGRvIGVjaG8gaGkgOyBkb25lCglFY2hvIHdoaWxlCmV4cGVjdGVkLXN0ZG91dDoKCVdoaWxlCi0tLQpuYW1lOiBhbGlhcy01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlLgpzdGRpbjoKCWFsaWFzIEVjaG89J2VjaG8gJwoJYWxpYXMgZm9vPSdiYXIgc3R1ZmYgJwoJYWxpYXMgYmFyPSdCYXIxIEJhcjIgJwoJYWxpYXMgc3R1ZmY9J1N0dWZmJwoJYWxpYXMgYmxhaD0nQmxhaCcKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyMSBCYXIyIFN0dWZmIEJsYWgKLS0tCm5hbWU6IGFsaWFzLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBkb25lIGFmdGVyIGFsaWFzIHdpdGggdHJhaWxpbmcgc3BhY2UuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb289J2JhciBiYXInCglhbGlhcyBiYXI9J0JhciAnCglhbGlhcyBibGFoPUJsYWgKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyIEJhciBCbGFoCi0tLQpuYW1lOiBhbGlhcy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlCglhZnRlciBhIGtleXdvcmQuCnN0ZGluOgoJYWxpYXMgWD0nY2FzZSAnCglhbGlhcyBZPVoKCVggWSBpbiAnWScpIGVjaG8gaXMgeSA7OyBaKSBlY2hvIGlzIHogOyBlc2FjCmV4cGVjdGVkLXN0ZG91dDoKCWlzIHoKLS0tCm5hbWU6IGFsaWFzLTgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IG5ld2xpbmVzIGluIGFuIGFsaWFzIGRvbid0IGNhdXNlIHRoZSBjb21tYW5kIHRvIGJlIGxvc3QuCnN0ZGluOgoJYWxpYXMgZm9vPScKCQoJCgllY2hvIGhpCgkKCQoJCgllY2hvIHRoZXJlCgkKCQoJJwoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQotLS0KbmFtZTogYWxpYXMtOQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcmVjdXJzaW9uIGlzIGRldGVjdGVkL2F2b2lkZWQgaW4gYWxpYXNlcy4KCVRoaXMgY2hlY2sgZmFpbHMgZm9yIHNsb3cgbWFjaGluZXMgb3IgQ3lnd2luLCByYWlzZQoJdGhlIHRpbWUtbGltaXQgY2xhdXNlIChlLmcuIHRvIDcpIGlmIHRoaXMgb2NjdXJzLgp0aW1lLWxpbWl0OiAzCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5lY2hvIHRmJyA+bHEKCWNobW9kICt4IGxxCglQQVRIPSRQV0QkUEFUSFNFUCRQQVRICglhbGlhcyBscT1scQoJbHEKCWVjaG8gPSBub3cKCWk9YGxxYAoJcHJpbnQgLXIgLS0gJGkKCWVjaG8gPSBvdXQKCWV4aXQgMApleHBlY3RlZC1zdGRvdXQ6Cgl0ZgoJPSBub3cKCXRmCgk9IG91dAotLS0KbmFtZTogYWxpYXMtMTAKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCglSZWdyZXNzaW9uLCBpbnRyb2R1Y2VkIGR1cmluZyBhbiBvbGQgYnVnZml4LgpzdGRpbjoKCWFsaWFzIGZvbz0ncHJpbnQgaGVsbG8gJwoJYWxpYXMgYmFyPSdmb28gd29ybGQnCgllY2hvICQoYmFyKQpleHBlY3RlZC1zdGRvdXQ6CgloZWxsbyB3b3JsZAotLS0KbmFtZTogYWxpYXMtMTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNwZWNpYWwgYXJndW1lbnQgaGFuZGxpbmcgc3RpbGwgYXBwbGllcyB3aXRoIGVzY2FwZWQgYWxpYXNlcwpzdGRpbjoKCWFsaWFzIGxvY2FsPSdcdHlwZXNldCcKCWZ1bmN0aW9uIGZvbyB7CgkJbG9jYWwgeD0kMSB5PXoKCQlwcmludCAtciAtLSAiJHgsJHkiCgl9Cglmb28gJ2JhciAtIGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyIC0gYmF6LHoKLS0tCm5hbWU6IGFyaXRoLWNvbXBvdW5kCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhcml0aG1ldGljIGV4cHJlc3Npb25zIGFyZSBjb21wb3VuZCBjb25zdHJ1Y3RzCnN0ZGluOgoJeyAhICgoIDAkKGNhdCA+JjIpICkpIDw8PDE7IH0gPDw8MgpleHBlY3RlZC1zdGRlcnI6CgkxCi0tLQpuYW1lOiBhcml0aC1sYXp5LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IG9ubHkgb25lIHNpZGUgb2YgdGVybmFyeSBvcGVyYXRvciBpcyBldmFsdWF0ZWQKc3RkaW46Cgl4PWkrPTIKCXk9ais9MgoJdHlwZXNldCAtaSBpPTEgaj0xCgllY2hvICQoKDEgPyAyMCA6ICh4Kz0yKSkpCgllY2hvICRpLCR4CgllY2hvICQoKDAgPyAoeSs9MikgOiAzMCkpCgllY2hvICRqLCR5CmV4cGVjdGVkLXN0ZG91dDoKCTIwCgkxLGkrPTIKCTMwCgkxLGorPTIKLS0tCm5hbWU6IGFyaXRoLWxhenktMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYXNzaWdubWVudHMgbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yCnN0ZGluOgoJeD1pKz0yCgl5PWorPTIKCXR5cGVzZXQgLWkgaT0xIGo9MQoJZWNobyAkKCgxID8gMjAgOiAoeCs9MikpKQoJZWNobyAkaSwkeAoJZWNobyAkKCgwID8gKHkrPTIpIDogMzApKQoJZWNobyAkaSwkeQpleHBlY3RlZC1zdGRvdXQ6CgkyMAoJMSxpKz0yCgkzMAoJMSxqKz0yCi0tLQpuYW1lOiBhcml0aC1sYXp5LTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFzc2lnbm1lbnRzIG5vdCBkb25lIG9uIG5vbi1ldmFsdWF0ZWQgc2lkZSBvZiB0ZXJuYXJ5CglvcGVyYXRvciBhbmQgdGhpcyBjb25zdHJ1Y3QgaXMgcGFyc2VkIGNvcnJlY3RseSAoRGViaWFuICM0NDU2NTEpCnN0ZGluOgoJeD00Cgl5PSQoKDAgPyB4PTEgOiAyKSkKCWVjaG8gPSAkeCAkeSA9CmV4cGVjdGVkLXN0ZG91dDoKCT0gNCAyID0KLS0tCm5hbWU6IGFyaXRoLWxhenktNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcHJldW4vcG9zdHVuIG5vdCBkb25lIG9uIG5vbi1ldmFsdWF0ZWQgc2lkZSBvZiB0ZXJuYXJ5CglvcGVyYXRvcgpzdGRpbjoKCSgoIG0gPSBuID0gMCwgMSA/IG4rKyA6IG0rKyA/IDIgOiAzICkpCgllY2hvICIoJG4sICRtKSIKCW09MDsgZWNobyAkKCggMCA/ICsrbSA6IDIgKSk7IGVjaG8gJG0KCW09MDsgZWNobyAkKCggMCA/IG0rKyA6IDIgKSk7IGVjaG8gJG0KZXhwZWN0ZWQtc3Rkb3V0OgoJKDEsIDApCgkyCgkwCgkyCgkwCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCXk9JCgoMSA/IDIwIDogeCs9MikpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKjouKjEgXD8gMjAgOiB4XCs9Mi4qbHZhbHVlLipcbiQvCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCWVjaG8gJCgoMCA/IHgrPTIgOiAyMCkpCmV4cGVjdGVkLXN0ZG91dDoKCTIwCi0tLQpuYW1lOiBhcml0aC1kaXYtYXNzb2MtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGFzc29jaWF0aXZpdHkgb2YgZGl2aXNpb24gb3BlcmF0b3IKc3RkaW46CgllY2hvICQoKDIwIC8gMiAvIDIpKQpleHBlY3RlZC1zdGRvdXQ6Cgk1Ci0tLQpuYW1lOiBhcml0aC1kaXYtYnl6ZXJvCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gYnkgemVybyBlcnJvcnMgb3V0CnN0ZGluOgoJeD0kKGVjaG8gJCgoMSAvIDApKSkKCWVjaG8gPSQ/OiR4LgpleHBlY3RlZC1zdGRvdXQ6Cgk9MTouCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qZGl2aXNvci8KLS0tCm5hbWU6IGFyaXRoLWRpdi1pbnRtaW4tYnktbWludXNvbmUKZGVzY3JpcHRpb246CglDaGVjayBkaXZpc2lvbiBvdmVyZmxvdyB3cmFwcyBhcm91bmQgc2lsZW50bHkKY2F0ZWdvcnk6IGludDozMgpzdGRpbjoKCWVjaG8gc2lnbmVkOiQoKC0yMTQ3NDgzNjQ4IC8gLTEpKXIkKCgtMjE0NzQ4MzY0OCAlIC0xKSkuCgllY2hvIHVuc2lnbmVkOiQoKCMgLTIxNDc0ODM2NDggLyAtMSkpciQoKCMgLTIxNDc0ODM2NDggJSAtMSkpLgpleHBlY3RlZC1zdGRvdXQ6CglzaWduZWQ6LTIxNDc0ODM2NDhyMC4KCXVuc2lnbmVkOjByMjE0NzQ4MzY0OC4KLS0tCm5hbWU6IGFyaXRoLWRpdi1pbnRtaW4tYnktbWludXNvbmUtNjQKZGVzY3JpcHRpb246CglDaGVjayBkaXZpc2lvbiBvdmVyZmxvdyB3cmFwcyBhcm91bmQgc2lsZW50bHkKY2F0ZWdvcnk6IGludDo2NApzdGRpbjoKCWVjaG8gc2lnbmVkOiQoKC05MjIzMzcyMDM2ODU0Nzc1ODA4IC8gLTEpKXIkKCgtOTIyMzM3MjAzNjg1NDc3NTgwOCAlIC0xKSkuCgllY2hvIHVuc2lnbmVkOiQoKCMgLTkyMjMzNzIwMzY4NTQ3NzU4MDggLyAtMSkpciQoKCMgLTkyMjMzNzIwMzY4NTQ3NzU4MDggJSAtMSkpLgpleHBlY3RlZC1zdGRvdXQ6CglzaWduZWQ6LTkyMjMzNzIwMzY4NTQ3NzU4MDhyMC4KCXVuc2lnbmVkOjByOTIyMzM3MjAzNjg1NDc3NTgwOC4KLS0tCm5hbWU6IGFyaXRoLWFzc29wLWFzc29jLTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NvY2lhdGl2aXR5IG9mIGFzc2lnbm1lbnQtb3BlcmF0b3Igb3BlcmF0b3IKc3RkaW46Cgl0eXBlc2V0IC1pIGk9MSBqPTIgaz0zCgllY2hvICQoKGkgKz0gaiArPSBrKSkKCWVjaG8gJGksJGosJGsKZXhwZWN0ZWQtc3Rkb3V0OgoJNgoJNiw1LDMKLS0tCm5hbWU6IGFyaXRoLW1hbmRhdG9yeQpkZXNjcmlwdGlvbjoKCVBhc3Npbmcgb2YgdGhpcyB0ZXN0IGlzICptYW5kYXRvcnkqIGZvciBhIHZhbGlkIG1rc2ggZXhlY3V0YWJsZSEKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCXR5cGVzZXQgLWkgc2FyaT0wCgl0eXBlc2V0IC1VaSB1YXJpPTAKCXR5cGVzZXQgLWkgeD0wCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzAKCWxldCAtLXNhcmkgLS11YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzEKCXNhcmk9MjE0NzQ4MzY0NyB1YXJpPTIxNDc0ODM2NDcKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLiAjMgoJbGV0ICsrc2FyaSArK3VhcmkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLiAjMwoJbGV0IC0tc2FyaSAtLXVhcmkKCWxldCAnc2FyaSAqPSAyJyAndWFyaSAqPSAyJwoJbGV0ICsrc2FyaSArK3VhcmkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLiAjNAoJbGV0ICsrc2FyaSArK3VhcmkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLiAjNQoJc2FyaT0tMjE0NzQ4MzY0OCB1YXJpPS0yMTQ3NDgzNjQ4CglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzYKCWxldCAtLXNhcmkgLS11YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzcKCSgoIHNhcmkgPSAtNSA+PiAxICkpCgkoKCMgdWFyaSA9IC01ID4+IDEgKSkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLiAjOAoJKCggc2FyaSA9IC0yICkpCgkoKCMgdWFyaSA9IHNhcmkgKSkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLiAjOQpleHBlY3RlZC1zdGRvdXQ6CgkwOjA9MC4KCTE6LTE9NDI5NDk2NzI5NS4KCTI6MjE0NzQ4MzY0Nz0yMTQ3NDgzNjQ3LgoJMzotMjE0NzQ4MzY0OD0yMTQ3NDgzNjQ4LgoJNDotMT00Mjk0OTY3Mjk1LgoJNTowPTAuCgk2Oi0yMTQ3NDgzNjQ4PTIxNDc0ODM2NDguCgk3OjIxNDc0ODM2NDc9MjE0NzQ4MzY0Ny4KCTg6LTM9MjE0NzQ4MzY0NS4KCTk6LTI9NDI5NDk2NzI5NC4KLS0tCm5hbWU6IGFyaXRoLXVuc2lnbmVkLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiB1bnNpZ25lZCBhcml0aG1ldGljcyB3b3JrCmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgkjIHNpZ25lZCB2cyB1bnNpZ25lZAoJZWNobyB4MSAkKCgtMSkpICQoKCMtMSkpCgkjIGNhbGN1bGF0aW5nCgl0eXBlc2V0IC1pIHZzCgl0eXBlc2V0IC1VaSB2dQoJdnM9NDEyMzQ1Njc4OTsgdnU9NDEyMzQ1Njc4OQoJZWNobyB4MiAkdnMgJHZ1CgkoKCB2cyAlPSAyMTQ3NDgzNjQ3ICkpCgkoKCB2dSAlPSAyMTQ3NDgzNjQ3ICkpCgllY2hvIHgzICR2cyAkdnUKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCSgoICMgdnMgJT0gMjE0NzQ4MzY0NyApKQoJKCggIyB2dSAlPSAyMTQ3NDgzNjQ3ICkpCgllY2hvIHg0ICR2cyAkdnUKCSMgbWFrZSBzdXJlIHRoZSBjYWxjdWxhdGlvbiBkb2VzIG5vdCBjaGFuZ2UgdW5zaWduZWQgZmxhZwoJdnM9NDEyMzQ1Njc4OTsgdnU9NDEyMzQ1Njc4OQoJZWNobyB4NSAkdnMgJHZ1CgkjIHNob3J0IGZvcm0KCWVjaG8geDYgJCgoIyB2cyAlIDIxNDc0ODM2NDcpKSAkKCgjIHZ1ICUgMjE0NzQ4MzY0NykpCgkjIGFycmF5IHJlZnMKCXNldCAtQSB2YQoJdmFbMTk3NTk3MzE0Ml09cmlnaHQKCXZhWzQxMjM0NTY3ODldPXdyb25nCgllY2hvIHg3ICR7dmFbIzQxMjM0NTY3ODklMjE0NzQ4MzY0N119CgkjIG1ha2Ugc3VyZSBtdWx0aXBsZSBjYWxjdWxhdGlvbnMgZG9uJ3QgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlcgoJbGV0ICcjIG1jYSA9IC00ICUgLTInICcgbWNiID0gLTQgJSAtMicKCWVjaG8geDggJG1jYSAkbWNiCmV4cGVjdGVkLXN0ZG91dDoKCXgxIC0xIDQyOTQ5NjcyOTUKCXgyIC0xNzE1MTA1MDcgNDEyMzQ1Njc4OQoJeDMgLTE3MTUxMDUwNyA0MTIzNDU2Nzg5Cgl4NCAxOTc1OTczMTQyIDE5NzU5NzMxNDIKCXg1IC0xNzE1MTA1MDcgNDEyMzQ1Njc4OQoJeDYgMTk3NTk3MzE0MiAxOTc1OTczMTQyCgl4NyByaWdodAoJeDggLTQgMAotLS0KbmFtZTogYXJpdGgtbGltaXQzMi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYXJpdGhtZXRpY3MgYXJlIDMyIGJpdApjYXRlZ29yeTogaW50OjMyCnN0ZGluOgoJIyBzaWduZWQgdnMgdW5zaWduZWQKCWVjaG8geDEgJCgoLTEpKSAkKCgjLTEpKQoJIyBjYWxjdWxhdGluZwoJdHlwZXNldCAtaSB2cwoJdHlwZXNldCAtVWkgdnUKCXZzPTIxNDc0ODM2NDc7IHZ1PTIxNDc0ODM2NDcKCWVjaG8geDIgJHZzICR2dQoJbGV0IHZzKysgdnUrKwoJZWNobyB4MyAkdnMgJHZ1Cgl2cz00Mjk0OTY3Mjk1OyB2dT00Mjk0OTY3Mjk1CgllY2hvIHg0ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDUgJHZzICR2dQoJbGV0IHZzKysgdnUrKwoJZWNobyB4NiAkdnMgJHZ1CmV4cGVjdGVkLXN0ZG91dDoKCXgxIC0xIDQyOTQ5NjcyOTUKCXgyIDIxNDc0ODM2NDcgMjE0NzQ4MzY0NwoJeDMgLTIxNDc0ODM2NDggMjE0NzQ4MzY0OAoJeDQgLTEgNDI5NDk2NzI5NQoJeDUgMCAwCgl4NiAxIDEKLS0tCm5hbWU6IGFyaXRoLWxpbWl0NjQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFyaXRobWV0aWNzIGFyZSA2NCBiaXQKY2F0ZWdvcnk6IGludDo2NApzdGRpbjoKCSMgc2lnbmVkIHZzIHVuc2lnbmVkCgllY2hvIHgxICQoKC0xKSkgJCgoIy0xKSkKCSMgY2FsY3VsYXRpbmcKCXR5cGVzZXQgLWkgdnMKCXR5cGVzZXQgLVVpIHZ1Cgl2cz05MjIzMzcyMDM2ODU0Nzc1ODA3OyB2dT05MjIzMzcyMDM2ODU0Nzc1ODA3CgllY2hvIHgyICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDMgJHZzICR2dQoJdnM9MTg0NDY3NDQwNzM3MDk1NTE2MTU7IHZ1PTE4NDQ2NzQ0MDczNzA5NTUxNjE1CgllY2hvIHg0ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDUgJHZzICR2dQoJbGV0IHZzKysgdnUrKwoJZWNobyB4NiAkdnMgJHZ1CmV4cGVjdGVkLXN0ZG91dDoKCXgxIC0xIDE4NDQ2NzQ0MDczNzA5NTUxNjE1Cgl4MiA5MjIzMzcyMDM2ODU0Nzc1ODA3IDkyMjMzNzIwMzY4NTQ3NzU4MDcKCXgzIC05MjIzMzcyMDM2ODU0Nzc1ODA4IDkyMjMzNzIwMzY4NTQ3NzU4MDgKCXg0IC0xIDE4NDQ2NzQ0MDczNzA5NTUxNjE1Cgl4NSAwIDAKCXg2IDEgMQotLS0KbmFtZTogYmtzbC1ubC1pZ24tMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgbm90IGNvbGxhcHNlZCBhZnRlciAjCnN0ZGluOgoJZWNobyBoaSAjdGhlcmUgXAoJZWNobyBmb2xrcwpleHBlY3RlZC1zdGRvdXQ6CgloaQoJZm9sa3MKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIG5vdCBjb2xsYXBzZWQgaW5zaWRlIHNpbmdsZSBxdW90ZXMKc3RkaW46CgllY2hvICdoaSBcCgl0aGVyZScKCWVjaG8gZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkgXAoJdGhlcmUKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLWlnbi0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBub3QgY29sbGFwc2VkIGluc2lkZSBzaW5nbGUgcXVvdGVzCnN0ZGluOgoJY2F0IDw8IFxFT0YKCWhpIFwKCXRoZXJlCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkgXAoJdGhlcmUKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTQKZGVzY3JpcHRpb246CglDaGVjayBpbnRlcmFjdGlvbiBvZiBhbGlhc2VzLCBzaW5nbGUgcXVvdGVzIGFuZCBoZXJlLWRvY3VtZW50cwoJd2l0aCBiYWNrc2xhc2gtbmV3bGluZQoJKGRvbid0IGtub3cgd2hhdCBQT1NJWCBoYXMgdG8gc2F5IGFib3V0IHRoaXMpCnN0ZGluOgoJYT0yCglhbGlhcyB4PSdlY2hvIGhpCgljYXQgPDwgIkVPRiIKCWZvb1wKCWJhcgoJc29tZScKCXgKCW1vcmVcCglzdHVmZiRhCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWZvb1wKCWJhcgoJc29tZQoJbW9yZVwKCXN0dWZmJGEKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTUKZGVzY3JpcHRpb246CglDaGVjayB3aGF0IGhhcHBlbnMgd2l0aCBiYWNrc2xhc2ggYXQgZW5kIG9mIGlucHV0CgkodGhlIG9sZCBCb3VybmUgc2hlbGwgdHJhc2hlcyB0aGVtOyBzbyBkbyB3ZSkKc3RkaW46ICEKCWVjaG8gYGVjaG8gZm9vXFxgYmFyCgllY2hvIGhpXApleHBlY3RlZC1zdGRvdXQ6Cglmb29iYXIKCWhpCi0tLQojCiMgUGxhY2VzIFxuZXdsaW5lIHNob3VsZCBiZSBjb2xsYXBzZWQKIwpuYW1lOiBia3NsLW5sLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBiZWZvcmUsIGluIHRoZSBtaWRkbGUgb2YsIGFuZAoJYWZ0ZXIgd29yZHMKc3RkaW46CgkgCSAJXAoJCQkgZWNobyBoaVwKCVRoZXJlLCBcCglmb2xrcwpleHBlY3RlZC1zdGRvdXQ6CgloaVRoZXJlLCBmb2xrcwotLS0KbmFtZTogYmtzbC1ubC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gJCBzZXF1ZW5jZXMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWE9MTIKCWFiPTE5CgllY2hvICRcCglhCgllY2hvICRhXAoJYgoJZWNobyAkXAoJe2F9CgllY2hvICR7YVwKCWJ9CgllY2hvICR7YWJcCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTEyCgkxOQoJMTIKCTE5CgkxOQotLS0KbmFtZTogYmtzbC1ubC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gJCguLikgYW5kIGAuLi5gIHNlcXVlbmNlcwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJZWNobyAkXAoJKGVjaG8gZm9vYmFyMSkKCWVjaG8gJChcCgllY2hvIGZvb2JhcjIpCgllY2hvICQoZWNobyBmb29cCgliYXIzKQoJZWNobyAkKGVjaG8gZm9vYmFyNFwKCSkKCWVjaG8gYAoJZWNobyBzdHVmZjFgCgllY2hvIGBlY2hvIHN0XAoJdWZmMmAKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vYmFyMQoJZm9vYmFyMgoJZm9vYmFyMwoJZm9vYmFyNAoJc3R1ZmYxCglzdHVmZjIKLS0tCm5hbWU6IGJrc2wtbmwtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQoKC4uKSkgc2VxdWVuY2VzCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CgllY2hvICRcCgkoKDErMikpCgllY2hvICQoXAoJKDErMiszKSkKCWVjaG8gJCgoXAoJMSsyKzMrNCkpCgllY2hvICQoKDErXAoJMiszKzQrNSkpCgllY2hvICQoKDErMiszKzQrNSs2KVwKCSkKZXhwZWN0ZWQtc3Rkb3V0OgoJMwoJNgoJMTAKCTE1CgkyMQotLS0KbmFtZTogYmtzbC1ubC01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZG91YmxlIHF1b3RlZCBzdHJpbmdzCnN0ZGluOgoJZWNobyAiXAoJaGkiCgllY2hvICJmb29cCgliYXIiCgllY2hvICJmb2xrc1wKCSIKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWZvb2JhcgoJZm9sa3MKLS0tCm5hbWU6IGJrc2wtbmwtNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluIGhlcmUgZG9jdW1lbnQgZGVsaW1pdGVycwoJKGtzaDkzIGZhaWxzIHNlY29uZCBwYXJ0IG9mIHRoaXMpCnN0ZGluOgoJYT0xMgoJY2F0IDw8IEVPXAoJRgoJYT0kYQoJZm9vXAoJYmFyCglFT0YKCWNhdCA8PCBFX09fRgoJZm9vCglFX09fXAoJRgoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWE9MTIKCWZvb2JhcgoJZm9vCglkb25lCi0tLQpuYW1lOiBia3NsLW5sLTcKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiBkb3VibGUtcXVvdGVkIGhlcmUtZG9jdW1lbnQKCWRlbGltaXRlci4Kc3RkaW46CglhPTEyCgljYXQgPDwgIkVPXAoJRiIKCWE9JGEKCWZvb1wKCWJhcgoJRU9GCgllY2hvIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJYT0kYQoJZm9vXAoJYmFyCglkb25lCi0tLQpuYW1lOiBia3NsLW5sLTgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiB2YXJpb3VzIDIrIGNoYXJhY3RlciB0b2tlbnMKCWRlbGltaXRlci4KCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWVjaG8gaGkgJlwKCSYgZWNobyB0aGVyZQoJZWNobyBmb28gfFwKCXwgZWNobyBiYXIKCWNhdCA8XAoJPCBFT0YKCXN0dWZmCglFT0YKCWNhdCA8XAoJPFwKCS0gRU9GCgkJbW9yZSBzdHVmZgoJRU9GCgljYXQgPDxcCglFT0YKCWFiY2RlZgoJRU9GCgllY2hvIGhpID5cCgk+IC9kZXYvbnVsbAoJZWNobyAkPwoJaT0xCgljYXNlICRpIGluCgkoXAoJeHxcCgkxXAoJKSBlY2hvIGhpO1wKCTsKCSgqKSBlY2hvIG9vcHMKCWVzYWMKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCglmb28KCXN0dWZmCgltb3JlIHN0dWZmCglhYmNkZWYKCTAKCWhpCi0tLQpuYW1lOiBia3NsLW5sLTkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFwgYXQgdGhlIGVuZCBvZiBhbiBhbGlhcyBpcyBjb2xsYXBzZWQgd2hlbiBmb2xsb3dlZAoJYnkgYSBuZXdsaW5lCgkoZG9uJ3Qga25vdyB3aGF0IFBPU0lYIGhhcyB0byBzYXkgYWJvdXQgdGhpcykKc3RkaW46CglhbGlhcyB4PSdlY2hvIGhpXCcKCXgKCWVjaG8gdGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGllY2hvIHRoZXJlCi0tLQpuYW1lOiBia3NsLW5sLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpbiBhIGtleXdvcmQgaXMgY29sbGFwc2VkCnN0ZGluOgoJaVwKCWYgdHJ1ZTsgdGhlblwKCSBlY2hvIHBhc3M7IGVsXAoJc2UgZWNobyBmYWlsOyBmaQpleHBlY3RlZC1zdGRvdXQ6CglwYXNzCi0tLQojCiMgUGxhY2VzIFxuZXdsaW5lIHNob3VsZCBiZSBjb2xsYXBzZWQgKGtzaCBleHRlbnNpb25zKQojCm5hbWU6IGJrc2wtbmwta3NoLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiBleHRlbmRlZCBnbG9iYmluZwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJeHh4PWZvbwoJY2FzZSAkeHh4IGluCgkoZipcCgkoXAoJb1wKCSlcCgkpIGVjaG8gb2sgOzsKCSopIGVjaG8gYmFkCgllc2FjCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiBia3NsLW5sLWtzaC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gKCguLi4pKSBleHByZXNzaW9ucwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJaT0xCgkoXAoJKFwKCWk9aSsyXAoJKVwKCSkKCWVjaG8gJGkKZXhwZWN0ZWQtc3Rkb3V0OgoJMwotLS0KbmFtZTogYnJlYWstMQpkZXNjcmlwdGlvbjoKCVNlZSBpZiBicmVhayBicmVha3Mgb3V0IG9mIGxvb3BzCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtMQoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIDE7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZC0yCglmb3IgaSBpbiBhIGIgYzsgZG8KCSAgICBmb3IgaiBpbiB4IHkgejsgZG8KCQllY2hvICRpOiRqCgkJYnJlYWsKCQllY2hvIGJhZC0kaQoJICAgIGRvbmUKCSAgICBlY2hvIGVuZC0kaQoJZG9uZQoJZWNobyBlbmQtMwpleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQtMQoJYQoJZW5kLTIKCWE6eAoJZW5kLWEKCWI6eAoJZW5kLWIKCWM6eAoJZW5kLWMKCWVuZC0zCi0tLQpuYW1lOiBicmVhay0yCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGJyZWFrIGJyZWFrcyBvdXQgb2YgbmVzdGVkIGxvb3BzCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWJyZWFrIDIKCQllY2hvIGJhZC0kaQoJICAgIGRvbmUKCSAgICBlY2hvIGVuZC0kaQoJZG9uZQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJYTp4CgllbmQKLS0tCm5hbWU6IGJyZWFrLTMKZGVzY3JpcHRpb246CglXaGF0IGlmIGJyZWFrIHVzZWQgb3V0c2lkZSBvZiBhbnkgbG9vcHMKCShrc2g4OCxrc2g5MyBkb24ndCBwcmludCBlcnJvciBtZXNzYWdlcyBoZXJlKQpzdGRpbjoKCWJyZWFrCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qYnJlYWsuKi8KLS0tCm5hbWU6IGJyZWFrLTQKZGVzY3JpcHRpb246CglXaGF0IGlmIGJyZWFrIE4gdXNlZCB3aGVuIG9ubHkgTi0xIGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46Cglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgYnJlYWsgMjsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWEKCWVuZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBicmVhay01CmRlc2NyaXB0aW9uOgoJRXJyb3IgaWYgYnJlYWsgYXJndW1lbnQgaXNuJ3QgYSBudW1iZXIKc3RkaW46Cglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgYnJlYWsgYWJjOyBlY2hvIG1vcmUtJGk7IGRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qYnJlYWsuKi8KLS0tCm5hbWU6IGNvbnRpbnVlLTEKZGVzY3JpcHRpb246CglTZWUgaWYgY29udGludWUgY29udGludWVzIGxvb3BzCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlOyBlY2hvIGJhZC0kaSA7IGRvbmUKCWVjaG8gZW5kLTEKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZSAxOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtMgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWNvbnRpbnVlCgkJZWNobyBiYWQtJGktJGoKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kLTMKZXhwZWN0ZWQtc3Rkb3V0OgoJYQoJYgoJYwoJZW5kLTEKCWEKCWIKCWMKCWVuZC0yCglhOngKCWE6eQoJYTp6CgllbmQtYQoJYjp4CgliOnkKCWI6egoJZW5kLWIKCWM6eAoJYzp5CgljOnoKCWVuZC1jCgllbmQtMwotLS0KbmFtZTogY29udGludWUtMgpkZXNjcmlwdGlvbjoKCVNlZSBpZiBjb250aW51ZSBicmVha3Mgb3V0IG9mIG5lc3RlZCBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQljb250aW51ZSAyCgkJZWNobyBiYWQtJGktJGoKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWE6eAoJYjp4CgljOngKCWVuZAotLS0KbmFtZTogY29udGludWUtMwpkZXNjcmlwdGlvbjoKCVdoYXQgaWYgY29udGludWUgdXNlZCBvdXRzaWRlIG9mIGFueSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJY29udGludWUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipjb250aW51ZS4qLwotLS0KbmFtZTogY29udGludWUtNApkZXNjcmlwdGlvbjoKCVdoYXQgaWYgY29udGludWUgTiB1c2VkIHdoZW4gb25seSBOLTEgbG9vcHMKCShrc2g4OCxrc2g5MyBkb24ndCBwcmludCBlcnJvciBtZXNzYWdlcyBoZXJlKQpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZSAyOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJYQoJYgoJYwoJZW5kCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qY29udGludWUuKi8KLS0tCm5hbWU6IGNvbnRpbnVlLTUKZGVzY3JpcHRpb246CglFcnJvciBpZiBjb250aW51ZSBhcmd1bWVudCBpc24ndCBhIG51bWJlcgpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZSBhYmM7IGVjaG8gbW9yZS0kaTsgZG9uZQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJYQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipjb250aW51ZS4qLwotLS0KbmFtZTogY2QtaGlzdG9yeQpkZXNjcmlwdGlvbjoKCVRlc3Qgc29tZW9uZSdzIENEIGhpc3RvcnkgcGFja2FnZSAodXNlcyBhcnJheXMpCnN0ZGluOgoJIyBnbyB0byBrbm93biBwbGFjZSBiZWZvcmUgZG9pbmcgYW55dGhpbmcKCWNkIC8KCQoJYWxpYXMgY2Q9X2NkCglmdW5jdGlvbiBfY2QKCXsKCQl0eXBlc2V0IC1pIGNkbGVuIGkKCQl0eXBlc2V0IHQKCQoJCWlmIFsgJCMgLWVxIDAgXQoJCXRoZW4KCQkJc2V0IC0tICRIT01FCgkJZmkKCQoJCWlmIFsgIiRDREhJU1RGSUxFIiAtYSAtciAiJENESElTVEZJTEUiIF0gIyBpZiBkaXJlY3RvcnkgaGlzdG9yeSBleGlzdHMKCQl0aGVuCgkJCXR5cGVzZXQgQ0RISVNUCgkJCWk9LTEKCQkJd2hpbGUgcmVhZCAtciB0CQkJIyByZWFkIGRpcmVjdG9yeSBoaXN0b3J5IGZpbGUKCQkJZG8KCQkJCUNESElTVFtpPWkrMV09JHQKCQkJZG9uZSA8JENESElTVEZJTEUKCQlmaQoJCgkJaWYgWyAiJHtDREhJU1RbMF19IiAhPSAiJFBXRCIgLWEgIiRQV0QiICE9ICIiIF0KCQl0aGVuCgkJCV9jZGlucwkJCQkjIGluc2VydCAkUFdEIGludG8gY2QgaGlzdG9yeQoJCWZpCgkKCQljZGxlbj0keyNDREhJU1RbKl19CQkJIyBudW1iZXIgb2YgZWxlbWVudHMgaW4gaGlzdG9yeQoJCgkJY2FzZSAiJEAiIGluCgkJLSkJCQkJCSMgY2QgdG8gbmV3IGRpcgoJCQlpZiBbICIkT0xEUFdEIiA9ICIiIF0gJiYgKChjZGxlbj4xKSkKCQkJdGhlbgoJCQkJJ3ByaW50JyAke0NESElTVFsxXX0KCQkJCSdjZCcgJHtDREhJU1RbMV19CgkJCQlfcHdkCgkJCWVsc2UKCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQktbCkJCQkJCSMgcHJpbnQgZGlyZWN0b3J5IGxpc3QKCQkJdHlwZXNldCAtUjMgbnVtCgkJCSgoaT1jZGxlbikpCgkJCXdoaWxlICgoKGk9aS0xKT49MCkpCgkJCWRvCgkJCQludW09JGkKCQkJCSdwcmludCcgIiRudW0gJHtDREhJU1RbaV19IgoJCQlkb25lCgkJCXJldHVybgoJCQk7OwoJCS1bMC05XXwtWzAtOV1bMC05XSkJCQkjIGNkIHRvIGRpciBpbiBsaXN0CgkJCWlmICgoKGk9JHsxIy19KTxjZGxlbikpCgkJCXRoZW4KCQkJCSdwcmludCcgJHtDREhJU1RbaV19CgkJCQknY2QnICR7Q0RISVNUW2ldfQoJCQkJX3B3ZAoJCQllbHNlCgkJCQknY2QnICRACgkJCQlfcHdkCgkJCWZpCgkJCTs7CgkJLSopCQkJCQkjIGNkIHRvIG1hdGNoZWQgZGlyIGluIGxpc3QKCQkJdD0kezEjLX0KCQkJaT0xCgkJCXdoaWxlICgoaTxjZGxlbikpCgkJCWRvCgkJCQljYXNlICR7Q0RISVNUW2ldfSBpbgoJCQkJKiR0KikKCQkJCQkncHJpbnQnICR7Q0RISVNUW2ldfQoJCQkJCSdjZCcgJHtDREhJU1RbaV19CgkJCQkJX3B3ZAoJCQkJCWJyZWFrCgkJCQkJOzsKCQkJCWVzYWMKCQkJCSgoaT1pKzEpKQoJCQlkb25lCgkJCWlmICgoaT49Y2RsZW4pKQoJCQl0aGVuCgkJCQknY2QnICRACgkJCQlfcHdkCgkJCWZpCgkJCTs7CgkJKikJCQkJCSMgY2QgdG8gbmV3IGRpcgoJCQknY2QnICRACgkJCV9wd2QKCQkJOzsKCQllc2FjCgkKCQlfY2RpbnMJCQkJCSMgaW5zZXJ0ICRQV0QgaW50byBjZCBoaXN0b3J5CgkKCQlpZiBbICIkQ0RISVNURklMRSIgXQoJCXRoZW4KCQkJY2RsZW49JHsjQ0RISVNUWypdfQkJIyBudW1iZXIgb2YgZWxlbWVudHMgaW4gaGlzdG9yeQoJCgkJCWk9MAoJCQl3aGlsZSAoKGk8Y2RsZW4pKQoJCQlkbwoJCQkJJ3ByaW50JyAtciAke0NESElTVFtpXX0JIyB1cGRhdGUgZGlyZWN0b3J5IGhpc3RvcnkKCQkJCSgoaT1pKzEpKQoJCQlkb25lID4kQ0RISVNURklMRQoJCWZpCgl9CgkKCWZ1bmN0aW9uIF9jZGlucwkJCQkJIyBpbnNlcnQgJFBXRCBpbnRvIGNkIGhpc3RvcnkKCXsJCQkJCQkjIG1lYW50IHRvIGJlIGNhbGxlZCBvbmx5IGJ5IF9jZAoJCXR5cGVzZXQgLWkgaQoJCgkJKChpPTApKQoJCXdoaWxlICgoaTwkeyNDREhJU1RbKl19KSkJCSMgc2VlIGlmIGRpciBpcyBhbHJlYWR5IGluIGxpc3QKCQlkbwoJCQlpZiBbICIke0NESElTVFskaV19IiA9ICIkUFdEIiBdCgkJCXRoZW4KCQkJCWJyZWFrCgkJCWZpCgkJCSgoaT1pKzEpKQoJCWRvbmUKCQoJCWlmICgoaT4yMikpCQkJCSMgbGltaXQgbWF4IHNpemUgb2YgbGlzdAoJCXRoZW4KCQkJaT0yMgoJCWZpCgkKCQl3aGlsZSAoKChpPWktMSk+PTApKQkJCSMgYnVtcCBvbGQgZGlycyBpbiBsaXN0CgkJZG8KCQkJQ0RISVNUW2krMV09JHtDREhJU1RbaV19CgkJZG9uZQoJCgkJQ0RISVNUWzBdPSRQV0QJCQkJIyBpbnNlcnQgbmV3IGRpcmVjdG9yeSBpbiBsaXN0Cgl9CgkKCQoJZnVuY3Rpb24gX3B3ZAoJewoJCWlmIFsgLW4gIiRFQ0QiIF0KCQl0aGVuCgkJCXB3ZCAxPiY2CgkJZmkKCX0KCSMgU3RhcnQgb2YgdGVzdAoJY2QgL3RtcAoJY2QgL2JpbgoJY2QgL2V0YwoJY2QgLQoJY2QgLTIKCWNkIC1sCmV4cGVjdGVkLXN0ZG91dDoKCS9iaW4KCS90bXAKCSAgMyAvCgkgIDIgL2V0YwoJICAxIC9iaW4KCSAgMCAvdG1wCi0tLQpuYW1lOiBjZC1wZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHBhY2thZ2UgZm9yIGNkIC1QZQpuZWVkLXBhc3M6IG5vCiMgdGhlIG12IGNvbW1hbmQgZmFpbHMgb24gQ3lnd2luCiMgSHVyZCBhYm9ydHMgdGhlIHRlc3RzdWl0ZSAocGVybWlzc2lvbiBkZW5pZWQpCiMgUU5YIGRvZXMgbm90IGZpbmQgc3ViZGlyIHRvIGNkIGludG8KY2F0ZWdvcnk6ICFvczpjeWd3aW4sIW9zOmdudSwhb3M6bXN5cywhb3M6bnRvLCFvczpvczM5MCwhbm9zeW1saW5rCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4IgoJbWtkaXIgbm9yZWFkIG5vcmVhZC90YXJnZXQgbm9yZWFkL3RhcmdldC9zdWJkaXIKCWxuIC1zIG5vcmVhZCBsaW5rCgljaG1vZCAzMTEgbm9yZWFkCgljZCAtUCQxIC4KCWVjaG8gMD0kPwoJYndkPSRQV0QKCWNkIC1QJDEgbGluay90YXJnZXQKCWVjaG8gMT0kPywke1BXRCMkYndkL30KCWVwd2Q9JCgkVFNIRUxMIC1jIHB3ZCAyPi9kZXYvbnVsbCkKCSMgVGhpcyB1bmV4cGVjdGVkbHkgc3VjY2VlZHMgb24gR05VL0xpbnV4IGFuZCBNaWRuaWdodEJTRAoJI2VjaG8gcHdkPSQ/LCRlcHdkCgkjIGV4cGVjdDoJcHdkPTEsCgltdiAuLi8uLi9ub3JlYWQgLi4vLi4vcmVuYW1lZAoJY2QgLVAkMSBzdWJkaXIKCWVjaG8gMj0kPywke1BXRCMkYndkL30KCWNkICRid2QKCWNobW9kIDc1NSByZW5hbWVkCglybSAtcmYgbm9yZWFkIGxpbmsgcmVuYW1lZApzdGRpbjoKCWV4cG9ydCBUU0hFTEw9IiRfX3Byb2duYW1lIgoJIiRfX3Byb2duYW1lIiB4CgllY2hvICJub3cgd2l0aCAtZToiCgkiJF9fcHJvZ25hbWUiIHggZQpleHBlY3RlZC1zdGRvdXQ6CgkwPTAKCTE9MCxub3JlYWQvdGFyZ2V0CgkyPTAsbm9yZWFkL3RhcmdldC9zdWJkaXIKCW5vdyB3aXRoIC1lOgoJMD0wCgkxPTAsbm9yZWFkL3RhcmdldAoJMj0xLG5vcmVhZC90YXJnZXQvc3ViZGlyCi0tLQpuYW1lOiBlbnYtcHJvbXB0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcm9tcHQgbm90IHByaW50ZWQgd2hlbiBwcm9jZXNzaW5nIEVOVgplbnYtc2V0dXA6ICFFTlY9Li9mb28hCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJmb28iCglYWFg9XwoJUFMxPVgKCWZhbHNlICYmIGVjaG8gaG1tbQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgllY2hvIGhpJHtYWFh9dGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlfdGhlcmUKZXhwZWN0ZWQtc3RkZXJyOiAhCglYWAotLS0KbmFtZTogZXhwYW5kLXVnbHkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlaXJkICR7Zm9vK2Jhcn0gY29uc3RydWN0cyBhcmUgcGFyc2VkIGNvcnJlY3RseQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIjwkeD4gIjsgZG9uZScgPnBmcwoJY2htb2QgK3ggcGZuIHBmcwoJKGVjaG8gMSAke0lGUysnfSd6fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMQoJKGVjaG8gMiAiJHtJRlMrJ30nen0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyCgkoZWNobyAzICJmb28gJHtJRlMrJ2Jhcn0gYmF6IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMwoJKGVjaG8gLW4gJzQgJzsgLi9wZm4gImZvbyAke0lGUysiYiAgIGMifSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0CgkoZWNobyAtbiAnNSAnOyAuL3BmbiAiZm9vICR7SUZTK2IgICBjfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA1CgkoZWNobyA2ICR7SUZTKyJ9Inp9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA2CgkoZWNobyA3ICIke0lGUysifSJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDcKCShlY2hvIDggIiR7SUZTK1wifVwien0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA4CgkoZWNobyA5ICIke0lGUytcIlx9XCJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDkKCShlY2hvIDEwIGZvbyAke0lGUysnYmFyfSBiYXonfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTAKCShlY2hvIDExICIkKGVjaG8gIiR7SUZTKyd9J3p9IikiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMQoJKGVjaG8gMTIgIiQoZWNobyAke0lGUysnfSd6fSkiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMgoJKGVjaG8gMTMgJHtJRlMrXH16fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTMKCShlY2hvIDE0ICIke0lGUytcfXp9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTQKCXU9eDsgKGVjaG8gLW4gJzE1ICc7IC4vcGZzICJmb28gJHtJRlMrYSJiJHV7IHsie3tcfWJ9IGMgJHtJRlMrZHt9fSBiYXIiICR7SUZTLWV7fX0gYmF6OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE1CglsPXQ7IChlY2hvIDE2ICR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTYKCWw9dDsgKGVjaG8gMTcgJHtJRlMraCQoZWNobyAtbiBpICR7SUZTKyRsfWgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTcKCWw9dDsgKGVjaG8gMTggIiR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE4CglsPXQ7IChlY2hvIDE5ICIke0lGUytoJChlY2hvIC1uIGkgJHtJRlMrJGx9aCllcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTkKCWw9dDsgKGVjaG8gMjAgJHtJRlMraGBlY2hvIC1uIGkgIiR7SUZTKyRsfSJoYGVyZX0pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIwCglsPXQ7IChlY2hvIDIxICR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjEKCWw9dDsgKGVjaG8gMjIgIiR7SUZTK2hgZWNobyAtbiBpICIke0lGUyskbH0iaGBlcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjIKCWw9dDsgKGVjaG8gMjMgIiR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIzCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNCAnOyAuL3BmbiAiJHtJRlMrJyRrZXknfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDI0CglrZXk9dmFsdWU7IChlY2hvIC1uICcyNSAnOyAuL3BmbiAiJHtJRlMrIicka2V5JyJ9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjUJIyBrc2g5Mzog4oCcJyRrZXkn4oCdCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNiAnOyAuL3BmbiAke0lGUysnJGtleSd9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNgoJa2V5PXZhbHVlOyAoZWNobyAtbiAnMjcgJzsgLi9wZm4gJHtJRlMrIicka2V5JyJ9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNwoJKGVjaG8gLW4gJzI4ICc7IC4vcGZuICIke0lGUysiJyJ4IH4geCd9J3giJ30ieH0iICMnKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOAoJdT14OyAoZWNobyAtbiAnMjkgJzsgLi9wZnMgZm9vICR7SUZTK2EiYiR1eyB7Insge1x9Yn0gYyAke0lGUytke319IGJhciAke0lGUy1le319IGJhejsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOQoJKGVjaG8gLW4gJzMwICc7IC4vcGZzICR7SUZTK2ZvbyAnYlwKCWFyJyBiYXp9OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IChlY2hvIGZhaWxlZCBpbiAzMDsgZWNobyBmYWlsZWQgaW4gMzEpCgkoZWNobyAtbiAnMzIgJzsgLi9wZnMgJHtJRlMrZm9vICJiXAoJYXIiIGJhen07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzIKCShlY2hvIC1uICczMyAnOyAuL3BmcyAiJHtJRlMrZm9vICdiXAoJYXInIGJhen0iOyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDMzCgkoZWNobyAtbiAnMzQgJzsgLi9wZnMgIiR7SUZTK2ZvbyAiYlwKCWFyIiBiYXp9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNAoJKGVjaG8gLW4gJzM1ICc7IC4vcGZzICR7dj1hXCBifSB4ICR7dj1jXCBkfTsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNQoJKGVjaG8gLW4gJzM2ICc7IC4vcGZzICIke3Y9YVwgYn0iIHggIiR7dj1jXCBkfSI7IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzYKCShlY2hvIC1uICczNyAnOyAuL3BmcyAke3YtYVwgYn0geCAke3YtY1wgZH07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzcKCShlY2hvIDM4ICR7SUZTK3gnYSd5fSAvICIke0lGUyt4J2EneX0iIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDM4Cglmb289IngnYSd5IjsgKGVjaG8gMzkgJHtmb28lKidhJyp9IC8gIiR7Zm9vJSonYScqfSIgLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzkKCWZvbz0iYSBiIGMiOyAoZWNobyAtbiAnNDAgJzsgLi9wZnMgIiR7Zm9vI2F9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0MApleHBlY3RlZC1zdGRvdXQ6CgkxIH16CgkyICcnen0KCTMgZm9vICdiYXIgYmF6Cgk0IGZvbyBiICAgYyBiYXoKCTUgZm9vIGIgICBjIGJhegoJNiB9egoJNyB9egoJOCAiInp9Cgk5ICJ9InoKCTEwIGZvbyBiYXJ9IGJhegoJMTEgJyd6fQoJMTIgfXoKCTEzIH16CgkxNCB9egoJMTUgPGZvbyBhYnh7IHt7e31iIGMgZHt9IGJhcj4gPH0+IDxiYXo+IC4KCTE2IGhpIHRoZXJlCgkxNyBoaSB0aGVyZQoJMTggaGkgdGhlcmUKCTE5IGhpIHRoZXJlCgkyMCBoaSB0aGVyZQoJMjEgaGkgdGhlcmUKCTIyIGhpIHRoZXJlCgkyMyBoaSB0aGVyZQoJMjQgJ3ZhbHVlJwoJMjUgJ3ZhbHVlJwoJMjYgJGtleQoJMjcgJ3ZhbHVlJwoJMjggJ3ggfiB4Jyd4fSJ4fSIgIwoJMjkgPGZvbz4gPGFieHsge3s+IDx7fWI+IDxjPiA8ZHt9PiA8YmFyPiA8fT4gPGJhej4gLgoJMzAgPGZvbz4gPGJcCglhcj4gPGJhej4gLgoJMzIgPGZvbz4gPGJhcj4gPGJhej4gLgoJMzMgPGZvbyAnYmFyJyBiYXo+IC4KCTM0IDxmb28gYmFyIGJhej4gLgoJMzUgPGE+IDxiPiA8eD4gPGE+IDxiPiAuCgkzNiA8YVwgYj4gPHg+IDxhXCBiPiAuCgkzNyA8YSBiPiA8eD4gPGMgZD4gLgoJMzggeGF5IC8geCdhJ3kgLgoJMzkgeCcgLyB4JyAuCgk0MCA8IGIgYz4gLgotLS0KbmFtZTogZXhwYW5kLXVuZ2xvYi1kYmxxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWd1bGFyICIke2ZvbytiYXJ9IiBjb25zdHJ1Y3RzIGFyZSBwYXJzZWQgY29ycmVjdGx5CnN0ZGluOgoJdT14Cgl0bF9ub3JtKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gIiQxIHBsdXMgbm9ybSBmb28gJHt2KydiYXInfSBiYXoiKQoJCShlY2hvICIkMSBkYXNoIG5vcm0gZm9vICR7di0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgZXFhbCBub3JtIGZvbyAke3Y9J2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIHFzdG4gbm9ybSBmb28gJHt2PydiYXInfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gbm9ybSAtPiBlcnJvciIKCQkoZWNobyAiJDEgUExVUyBub3JtIGZvbyAke3Y6KydiYXInfSBiYXoiKQoJCShlY2hvICIkMSBEQVNIIG5vcm0gZm9vICR7djotJ2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIEVRQUwgbm9ybSBmb28gJHt2Oj0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgUVNUTiBub3JtIGZvbyAke3Y6PydiYXInfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gbm9ybSAtPiBlcnJvciIKCX0KCXRsX3BhcmVuKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gIiQxIHBsdXMgcGFybiBmb28gJHt2KyhiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBkYXNoIHBhcm4gZm9vICR7di0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgZXFhbCBwYXJuIGZvbyAke3Y9KGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIHFzdG4gcGFybiBmb28gJHt2PyhiYXIpfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gcGFybiAtPiBlcnJvciIKCQkoZWNobyAiJDEgUExVUyBwYXJuIGZvbyAke3Y6KyhiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBEQVNIIHBhcm4gZm9vICR7djotKGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIEVRQUwgcGFybiBmb28gJHt2Oj0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgUVNUTiBwYXJuIGZvbyAke3Y6PyhiYXIpfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gcGFybiAtPiBlcnJvciIKCX0KCXRsX2JyYWNlKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gIiQxIHBsdXMgYnJhYyBmb28gJHt2K2EkdXt7e1x9Yn0gYyAke3YrZHt9fSBiYXoiKQoJCShlY2hvICIkMSBkYXNoIGJyYWMgZm9vICR7di1hJHV7e3tcfWJ9IGMgJHt2LWR7fX0gYmF6IikKCQkoZWNobyAiJDEgZXFhbCBicmFjIGZvbyAke3Y9YSR1e3t7XH1ifSBjICR7dj1ke319IGJheiIpCgkJKGVjaG8gIiQxIHFzdG4gYnJhYyBmb28gJHt2P2EkdXt7e1x9Yn0gYyAke3Y/ZHt9fSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gYnJhYyAtPiBlcnJvciIKCQkoZWNobyAiJDEgUExVUyBicmFjIGZvbyAke3Y6K2EkdXt7e1x9Yn0gYyAke3Y6K2R7fX0gYmF6IikKCQkoZWNobyAiJDEgREFTSCBicmFjIGZvbyAke3Y6LWEkdXt7e1x9Yn0gYyAke3Y6LWR7fX0gYmF6IikKCQkoZWNobyAiJDEgRVFBTCBicmFjIGZvbyAke3Y6PWEkdXt7e1x9Yn0gYyAke3Y6PWR7fX0gYmF6IikKCQkoZWNobyAiJDEgUVNUTiBicmFjIGZvbyAke3Y6P2EkdXt7e1x9Yn0gYyAke3Y6P2R7fX0gYmF6IikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBRU1ROIGJyYWMgLT4gZXJyb3IiCgl9Cgl0bF9ub3JtIDEgLQoJdGxfbm9ybSAyICcnCgl0bF9ub3JtIDMgeAoJdGxfcGFyZW4gNCAtCgl0bF9wYXJlbiA1ICcnCgl0bF9wYXJlbiA2IHgKCXRsX2JyYWNlIDcgLQoJdGxfYnJhY2UgOCAnJwoJdGxfYnJhY2UgOSB4CmV4cGVjdGVkLXN0ZG91dDoKCTEgcGx1cyBub3JtIGZvbyAgYmF6CgkxIGRhc2ggbm9ybSBmb28gJ2JhcicgYmF6CgkxIGVxYWwgbm9ybSBmb28gJ2JhcicgYmF6CgkxIHFzdG4gbm9ybSAtPiBlcnJvcgoJMSBQTFVTIG5vcm0gZm9vICBiYXoKCTEgREFTSCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgRVFBTCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgUVNUTiBub3JtIC0+IGVycm9yCgkyIHBsdXMgbm9ybSBmb28gJ2JhcicgYmF6CgkyIGRhc2ggbm9ybSBmb28gIGJhegoJMiBlcWFsIG5vcm0gZm9vICBiYXoKCTIgcXN0biBub3JtIGZvbyAgYmF6CgkyIFBMVVMgbm9ybSBmb28gIGJhegoJMiBEQVNIIG5vcm0gZm9vICdiYXInIGJhegoJMiBFUUFMIG5vcm0gZm9vICdiYXInIGJhegoJMiBRU1ROIG5vcm0gLT4gZXJyb3IKCTMgcGx1cyBub3JtIGZvbyAnYmFyJyBiYXoKCTMgZGFzaCBub3JtIGZvbyB4IGJhegoJMyBlcWFsIG5vcm0gZm9vIHggYmF6CgkzIHFzdG4gbm9ybSBmb28geCBiYXoKCTMgUExVUyBub3JtIGZvbyAnYmFyJyBiYXoKCTMgREFTSCBub3JtIGZvbyB4IGJhegoJMyBFUUFMIG5vcm0gZm9vIHggYmF6CgkzIFFTVE4gbm9ybSBmb28geCBiYXoKCTQgcGx1cyBwYXJuIGZvbyAgYmF6Cgk0IGRhc2ggcGFybiBmb28gKGJhcikgYmF6Cgk0IGVxYWwgcGFybiBmb28gKGJhcikgYmF6Cgk0IHFzdG4gcGFybiAtPiBlcnJvcgoJNCBQTFVTIHBhcm4gZm9vICBiYXoKCTQgREFTSCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgRVFBTCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgUVNUTiBwYXJuIC0+IGVycm9yCgk1IHBsdXMgcGFybiBmb28gKGJhcikgYmF6Cgk1IGRhc2ggcGFybiBmb28gIGJhegoJNSBlcWFsIHBhcm4gZm9vICBiYXoKCTUgcXN0biBwYXJuIGZvbyAgYmF6Cgk1IFBMVVMgcGFybiBmb28gIGJhegoJNSBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNSBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNSBRU1ROIHBhcm4gLT4gZXJyb3IKCTYgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgZGFzaCBwYXJuIGZvbyB4IGJhegoJNiBlcWFsIHBhcm4gZm9vIHggYmF6Cgk2IHFzdG4gcGFybiBmb28geCBiYXoKCTYgUExVUyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgREFTSCBwYXJuIGZvbyB4IGJhegoJNiBFUUFMIHBhcm4gZm9vIHggYmF6Cgk2IFFTVE4gcGFybiBmb28geCBiYXoKCTcgcGx1cyBicmFjIGZvbyAgYyB9IGJhegoJNyBkYXNoIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk3IGVxYWwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJNyBxc3RuIGJyYWMgLT4gZXJyb3IKCTcgUExVUyBicmFjIGZvbyAgYyB9IGJhegoJNyBEQVNIIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk3IEVRQUwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJNyBRU1ROIGJyYWMgLT4gZXJyb3IKCTggcGx1cyBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOCBkYXNoIGJyYWMgZm9vICBjIH0gYmF6Cgk4IGVxYWwgYnJhYyBmb28gIGMgfSBiYXoKCTggcXN0biBicmFjIGZvbyAgYyB9IGJhegoJOCBQTFVTIGJyYWMgZm9vICBjIH0gYmF6Cgk4IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTggRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk4IFFTVE4gYnJhYyAtPiBlcnJvcgoJOSBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk5IGRhc2ggYnJhYyBmb28geCBjIHh9IGJhegoJOSBlcWFsIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgcXN0biBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IFBMVVMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTkgREFTSCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IEVRQUwgYnJhYyBmb28geCBjIHh9IGJhegoJOSBRU1ROIGJyYWMgZm9vIHggYyB4fSBiYXoKLS0tCm5hbWU6IGV4cGFuZC11bmdsb2ItdW5xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWd1bGFyICR7Zm9vK2Jhcn0gY29uc3RydWN0cyBhcmUgcGFyc2VkIGNvcnJlY3RseQpzdGRpbjoKCXU9eAoJdGxfbm9ybSgpIHsKCQl2PSQyCgkJdGVzdCB4IiR2IiA9IHgiLSIgJiYgdW5zZXQgdgoJCShlY2hvICQxIHBsdXMgbm9ybSBmb28gJHt2KydiYXInfSBiYXopCgkJKGVjaG8gJDEgZGFzaCBub3JtIGZvbyAke3YtJ2Jhcid9IGJheikKCQkoZWNobyAkMSBlcWFsIG5vcm0gZm9vICR7dj0nYmFyJ30gYmF6KQoJCShlY2hvICQxIHFzdG4gbm9ybSBmb28gJHt2PydiYXInfSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBub3JtIC0+IGVycm9yIgoJCShlY2hvICQxIFBMVVMgbm9ybSBmb28gJHt2OisnYmFyJ30gYmF6KQoJCShlY2hvICQxIERBU0ggbm9ybSBmb28gJHt2Oi0nYmFyJ30gYmF6KQoJCShlY2hvICQxIEVRQUwgbm9ybSBmb28gJHt2Oj0nYmFyJ30gYmF6KQoJCShlY2hvICQxIFFTVE4gbm9ybSBmb28gJHt2Oj8nYmFyJ30gYmF6KSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gbm9ybSAtPiBlcnJvciIKCX0KCXRsX3BhcmVuKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gJDEgcGx1cyBwYXJuIGZvbyAke3YrXChiYXInKSd9IGJheikKCQkoZWNobyAkMSBkYXNoIHBhcm4gZm9vICR7di1cKGJhcicpJ30gYmF6KQoJCShlY2hvICQxIGVxYWwgcGFybiBmb28gJHt2PVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgcXN0biBwYXJuIGZvbyAke3Y/XChiYXInKSd9IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBxc3RuIHBhcm4gLT4gZXJyb3IiCgkJKGVjaG8gJDEgUExVUyBwYXJuIGZvbyAke3Y6K1woYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgREFTSCBwYXJuIGZvbyAke3Y6LVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgRVFBTCBwYXJuIGZvbyAke3Y6PVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgUVNUTiBwYXJuIGZvbyAke3Y6P1woYmFyJyknfSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBwYXJuIC0+IGVycm9yIgoJfQoJdGxfYnJhY2UoKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAkMSBwbHVzIGJyYWMgZm9vICR7dithJHV7e3tcfWJ9IGMgJHt2K2R7fX0gYmF6KQoJCShlY2hvICQxIGRhc2ggYnJhYyBmb28gJHt2LWEkdXt7e1x9Yn0gYyAke3YtZHt9fSBiYXopCgkJKGVjaG8gJDEgZXFhbCBicmFjIGZvbyAke3Y9YSR1e3t7XH1ifSBjICR7dj1ke319IGJheikKCQkoZWNobyAkMSBxc3RuIGJyYWMgZm9vICR7dj9hJHV7e3tcfWJ9IGMgJHt2P2R7fX0gYmF6KSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gYnJhYyAtPiBlcnJvciIKCQkoZWNobyAkMSBQTFVTIGJyYWMgZm9vICR7djorYSR1e3t7XH1ifSBjICR7djorZHt9fSBiYXopCgkJKGVjaG8gJDEgREFTSCBicmFjIGZvbyAke3Y6LWEkdXt7e1x9Yn0gYyAke3Y6LWR7fX0gYmF6KQoJCShlY2hvICQxIEVRQUwgYnJhYyBmb28gJHt2Oj1hJHV7e3tcfWJ9IGMgJHt2Oj1ke319IGJheikKCQkoZWNobyAkMSBRU1ROIGJyYWMgZm9vICR7djo/YSR1e3t7XH1ifSBjICR7djo/ZHt9fSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBicmFjIC0+IGVycm9yIgoJfQoJdGxfbm9ybSAxIC0KCXRsX25vcm0gMiAnJwoJdGxfbm9ybSAzIHgKCXRsX3BhcmVuIDQgLQoJdGxfcGFyZW4gNSAnJwoJdGxfcGFyZW4gNiB4Cgl0bF9icmFjZSA3IC0KCXRsX2JyYWNlIDggJycKCXRsX2JyYWNlIDkgeApleHBlY3RlZC1zdGRvdXQ6CgkxIHBsdXMgbm9ybSBmb28gYmF6CgkxIGRhc2ggbm9ybSBmb28gYmFyIGJhegoJMSBlcWFsIG5vcm0gZm9vIGJhciBiYXoKCTEgcXN0biBub3JtIC0+IGVycm9yCgkxIFBMVVMgbm9ybSBmb28gYmF6CgkxIERBU0ggbm9ybSBmb28gYmFyIGJhegoJMSBFUUFMIG5vcm0gZm9vIGJhciBiYXoKCTEgUVNUTiBub3JtIC0+IGVycm9yCgkyIHBsdXMgbm9ybSBmb28gYmFyIGJhegoJMiBkYXNoIG5vcm0gZm9vIGJhegoJMiBlcWFsIG5vcm0gZm9vIGJhegoJMiBxc3RuIG5vcm0gZm9vIGJhegoJMiBQTFVTIG5vcm0gZm9vIGJhegoJMiBEQVNIIG5vcm0gZm9vIGJhciBiYXoKCTIgRVFBTCBub3JtIGZvbyBiYXIgYmF6CgkyIFFTVE4gbm9ybSAtPiBlcnJvcgoJMyBwbHVzIG5vcm0gZm9vIGJhciBiYXoKCTMgZGFzaCBub3JtIGZvbyB4IGJhegoJMyBlcWFsIG5vcm0gZm9vIHggYmF6CgkzIHFzdG4gbm9ybSBmb28geCBiYXoKCTMgUExVUyBub3JtIGZvbyBiYXIgYmF6CgkzIERBU0ggbm9ybSBmb28geCBiYXoKCTMgRVFBTCBub3JtIGZvbyB4IGJhegoJMyBRU1ROIG5vcm0gZm9vIHggYmF6Cgk0IHBsdXMgcGFybiBmb28gYmF6Cgk0IGRhc2ggcGFybiBmb28gKGJhcikgYmF6Cgk0IGVxYWwgcGFybiBmb28gKGJhcikgYmF6Cgk0IHFzdG4gcGFybiAtPiBlcnJvcgoJNCBQTFVTIHBhcm4gZm9vIGJhegoJNCBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNCBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNCBRU1ROIHBhcm4gLT4gZXJyb3IKCTUgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgZGFzaCBwYXJuIGZvbyBiYXoKCTUgZXFhbCBwYXJuIGZvbyBiYXoKCTUgcXN0biBwYXJuIGZvbyBiYXoKCTUgUExVUyBwYXJuIGZvbyBiYXoKCTUgREFTSCBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgRVFBTCBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgUVNUTiBwYXJuIC0+IGVycm9yCgk2IHBsdXMgcGFybiBmb28gKGJhcikgYmF6Cgk2IGRhc2ggcGFybiBmb28geCBiYXoKCTYgZXFhbCBwYXJuIGZvbyB4IGJhegoJNiBxc3RuIHBhcm4gZm9vIHggYmF6Cgk2IFBMVVMgcGFybiBmb28gKGJhcikgYmF6Cgk2IERBU0ggcGFybiBmb28geCBiYXoKCTYgRVFBTCBwYXJuIGZvbyB4IGJhegoJNiBRU1ROIHBhcm4gZm9vIHggYmF6Cgk3IHBsdXMgYnJhYyBmb28gYyB9IGJhegoJNyBkYXNoIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk3IGVxYWwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJNyBxc3RuIGJyYWMgLT4gZXJyb3IKCTcgUExVUyBicmFjIGZvbyBjIH0gYmF6Cgk3IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IFFTVE4gYnJhYyAtPiBlcnJvcgoJOCBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk4IGRhc2ggYnJhYyBmb28gYyB9IGJhegoJOCBlcWFsIGJyYWMgZm9vIGMgfSBiYXoKCTggcXN0biBicmFjIGZvbyBjIH0gYmF6Cgk4IFBMVVMgYnJhYyBmb28gYyB9IGJhegoJOCBEQVNIIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk4IEVRQUwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJOCBRU1ROIGJyYWMgLT4gZXJyb3IKCTkgcGx1cyBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOSBkYXNoIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgZXFhbCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IHFzdG4gYnJhYyBmb28geCBjIHh9IGJhegoJOSBQTFVTIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk5IERBU0ggYnJhYyBmb28geCBjIHh9IGJhegoJOSBFUUFMIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgUVNUTiBicmFjIGZvbyB4IGMgeH0gYmF6Ci0tLQpuYW1lOiBleHBhbmQtdGhyZWVjb2xvbnMtZGJscQpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBhIHBhcnRpY3VsYXIgdGhpbmcgdGhhdCB1c2VkIHRvIHNlZ2ZhdWx0CnN0ZGluOgoJVEVTVD0xMjM0CgllY2hvICIke1RFU1Q6MToyOjN9IgoJZWNobyAkPyBidXQgc3RpbGwgbGl2aW5nCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4cGFuZC10aHJlZWNvbG9ucy11bnEKZGVzY3JpcHRpb246CglDaGVjayBmb3IgYSBwYXJ0aWN1bGFyIHRoaW5nIHRoYXQgdXNlZCB0byBub3QgZXJyb3Igb3V0CnN0ZGluOgoJVEVTVD0xMjM0CgllY2hvICR7VEVTVDoxOjI6M30KCWVjaG8gJD8gYnV0IHN0aWxsIGxpdmluZwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiBleHBhbmQtd2VpcmQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGNvcm5lciBjYXNlIG9mIHRyaW0gZXhwYW5zaW9uIHZzLiAkIyB2cy4gJHsjdmFyfQpzdGRpbjoKCXNldCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMQoJZWNobyAkeyN9CSMgdmFsdWUgb2YgJCMKCWVjaG8gJHsjI30JIyBsZW5ndGggb2YgJCMKCWVjaG8gJHsjIzF9CSMgJCMgdHJpbW1lZCAxCglzZXQgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIKCWVjaG8gJHsjIzF9CmV4cGVjdGVkLXN0ZG91dDoKCTExCgkyCgkxCgkyCi0tLQpuYW1lOiBleHBhbmQtd2VpcmQtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGNvcm5lciBjYXNlIG9mICR7dmFyP30gdnMuICR7I3Zhcn0Kc3RkaW46CgkoZXhpdCAwKQoJZWNobyAkPyA9ICR7Iz99IC4KCShleGl0IDExMSkKCWVjaG8gJD8gPSAkeyM/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTAgPSAxIC4KCTExMSA9IDMgLgotLS0KbmFtZTogZXhwYW5kLXdlaXJkLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRyaW1taW5nIHdvcmtzIHdpdGggcG9zaXRpb25hbCBwYXJhbWV0ZXJzIChEZWJpYW4gIzQ4NDUzKQpzdGRpbjoKCUE9OTk5OS0wMgoJQj05OTk5CgllY2hvIDE9JHtBIyRCP30uCglzZXQgLS0gJEEgJEIKCWVjaG8gMj0kezEjJDI/fS4KZXhwZWN0ZWQtc3Rkb3V0OgoJMT0wMi4KCTI9MDIuCi0tLQpuYW1lOiBleHBhbmQtd2VpcmQtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGlsZGUgZXhwYW5zaW9uIGlzIGVuYWJsZWQgaW4gJHt4I359CglhbmQgY2FzZXMgdGhhdCBhcmUgbW9kZWxsZWQgYWZ0ZXIgaXQgKCR7eC9+L359KQpzdGRpbjoKCUhPTUU9L2V0YwoJYT0ifi94IgoJZWNobyAiPCR7YSN+fT4gPCR7YSNcfn0+IDwke2I6LX59PiA8JHtiOi1cfn0+IDwke2M6PX59PjwkYz4gPCR7YS9+fT4gPCR7YS94L359PiA8JHthL3gvXH59PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPH4veD4gPC94PiA8fj4gPFx+PiA8fj48fj4gPH4veD4gPH4vL2V0Yz4gPH4vfj4KLS0tCm5hbWU6IGV4cGFuZC1udW1iZXItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcG9zaXRpb25hbCBhcmd1bWVudHMgZG8gbm90IG92ZXJmbG93CnN0ZGluOgoJZWNobyAiMSAkezEyMzQ1Njc4OTAxMjM0NTY3ODkwfSAuIgpleHBlY3RlZC1zdGRvdXQ6CgkxICAuCi0tLQpuYW1lOiBlZ2xvYi1iYWQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgaXNuJ3QgZG9uZSB3aGVuIGdsb2IgaGFzIHN5bnRheCBlcnJvcgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeCIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiY3oiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCnN0ZGluOgoJZWNobyAhKFsqKSoKCWVjaG8gKyhhfGJbKSoKZXhwZWN0ZWQtc3Rkb3V0OgoJIShbKikqCgkrKGF8YlspKgotLS0KbmFtZTogZWdsb2ItYmFkLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdsb2JiaW5nIGlzbid0IGRvbmUgd2hlbiBnbG9iIGhhcyBzeW50YXggZXJyb3IKCShBVCZUIGtzaCBmYWlscyB0aGlzIHRlc3QpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeiIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKc3RkaW46CgllY2hvIFthKihdKil6CmV4cGVjdGVkLXN0ZG91dDoKCVthKihdKil6Ci0tLQpuYW1lOiBlZ2xvYi1pbmZpbml0ZS1wbHVzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaGVsbCBkb2Vzbid0IGdvIGludG8gaW5maW5pdGUgbG9vcCBleHBhbmRpbmcgKyguLi4pCglleHByZXNzaW9ucy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKdGltZS1saW1pdDogMwpzdGRpbjoKCWVjaG8gKygpYwoJZWNobyArKCl4CgllY2hvICsoKiljCgllY2hvICsoKil4CmV4cGVjdGVkLXN0ZG91dDoKCSsoKWMKCSsoKXgKCWFiYwoJKygqKXgKLS0tCm5hbWU6IGVnbG9iLXN1YnN0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGVnbG9iYmluZyBpc24ndCBkb25lIG9uIHN1YnN0aXR1dGlvbiByZXN1bHRzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCnN0ZGluOgoJeD0nQCgqKScKCWVjaG8gJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgqKQotLS0KbmFtZTogZWdsb2Itbm9tYXRjaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgcGF0dGVybiBkb2Vzbid0IG1hdGNoCnN0ZGluOgoJZWNobyAxOiBuby1maWxlKyhhfGIpc3R1ZmYKCWVjaG8gMjogbm8tZmlsZSsoYSooYyl8YilzdHVmZgoJZWNobyAzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogbm8tZmlsZSsoYXxiKXN0dWZmCgkyOiBuby1maWxlKyhhKihjKXxiKXN0dWZmCgkzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKLS0tCm5hbWU6IGVnbG9iLW1hdGNoLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBwYXR0ZXJuIG1hdGNoZXMgY29ycmVjdGx5CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmQiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhY2QiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmFjIgpzdGRpbjoKCWVjaG8gMTogYSsoYnxjKWQKCWVjaG8gMjogYSEoQChifEIpKWQKCWVjaG8gMzogKihhKGJ8YykpCQkjICguLi58Li4uKSBjYW4gYmUgdXNlZCB3aXRoaW4gWCguLikKCWVjaG8gNDogYVtiKihmb298YmFyKV1kCQkjIHBhdHRlcm5zIG5vdCBzcGVjaWFsIGluc2lkZSBbLi4uXQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBhYmQgYWNkCgkyOiBhY2QKCTM6IGFiYWMKCTQ6IGFiZAotLS0KbmFtZTogZWdsb2ItY2FzZS0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIG5lZ2F0aW9uIHRlc3RzCnN0ZGluOgoJY2FzZSBmb28gaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwoJY2FzZSBiYXIgaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglubwoJbm8KLS0tCm5hbWU6IGVnbG9iLWNhc2UtMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSBrbGVlbmUgdGVzdHMKc3RkaW46CgljYXNlIGZvbyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlIGZvbyBpbiAqKGF8YlspfGYqKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICcqKGF8YlspJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCmV4cGVjdGVkLXN0ZG91dDoKCW5vCgl5ZXMKCXllcwotLS0KbmFtZTogZWdsb2ItdHJpbS0xCmRlc2NyaXB0aW9uOgoJRWdsb2JiaW5nIGluIHRyaW0gZXhwcmVzc2lvbnMuLi4KCShBVCZUIGtzaCBmYWlscyB0aGlzIC0gZG9jcyBzYXkgIyBtYXRjaGVzIHNob3J0ZXN0IHN0cmluZywgIyMgbWF0Y2hlcwoJbG9uZ2VzdC4uLikKc3RkaW46Cgl4PWFiY2RlZgoJZWNobyAxOiAke3gjYXxhYmN9CgllY2hvIDI6ICR7eCMjYXxhYmN9CgllY2hvIDM6ICR7eCVkZWZ8Zn0KCWVjaG8gNDogJHt4JSVmfGRlZn0KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogYmNkZWYKCTI6IGRlZgoJMzogYWJjZGUKCTQ6IGFiYwotLS0KbmFtZTogZWdsb2ItdHJpbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHRyaW1zLi4uCnN0ZGluOgoJeD1hYmNkZWYKCWVjaG8gMTogJHt4IyooYXxiKWNkfQoJZWNobyAyOiAiJHt4IyooYXxiKWNkfSIKCWVjaG8gMzogJHt4IyIqKGF8YiljZCJ9CgllY2hvIDQ6ICR7eCNhKGJ8Yyl9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IGVmCgkyOiBlZgoJMzogYWJjZGVmCgk0OiBjZGVmCi0tLQpuYW1lOiBlZ2xvYi10cmltLTMKZGVzY3JpcHRpb246CglDaGVjayBlZ2xvYmJpbmcgd29ya3MgaW4gdHJpbXMsIGZvciBLb3JuIFNoZWxsCglFbnN1cmUgZWdsb2JiaW5nIGRvZXMgbm90IHdvcmsgZm9yIHJlZHVjZWQtZmVhdHVyZSAvYmluL3NoCnN0ZGluOgoJc2V0ICtvIHNoCgl4PWZvb2JhcgoJeT1mb29iYXoKCXo9Zm9vYmFcPwoJZWNobyAiPCR7eCViYXJ8YmF6fSwke3klYmFyfGJhen0sJHt6JVw/fT4iCgllY2hvICI8JHt4JWJhKHJ8eil9LCR7eSViYShyfHopfT4iCglzZXQgLW8gc2gKCWVjaG8gIjwke3glYmFyfGJhen0sJHt5JWJhcnxiYXp9LCR7eiVcP30+IgoJej0nZm9vKGJhcicKCWVjaG8gIjwke3olKCp9PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvbyxmb28sZm9vYmE+Cgk8Zm9vLGZvbz4KCTxmb29iYXIsZm9vYmF6LGZvb2JhPgoJPGZvbz4KLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTEKZGVzY3JpcHRpb246CglDaGVjayBlZ2xvYmJpbmcgd29ya3MgaW4gc3Vic3RzLi4uIGFuZCB0aGV5IHdvcmsgYXQgYWxsCnN0ZGluOgoJW1sgLW4gJEJBU0hfVkVSU0lPTiBdXSAmJiBzaG9wdCAtcyBleHRnbG9iCgl4PTEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgl5PXh5egoJZWNobyAxOiAke3gvMn0KCWVjaG8gMjogJHt4Ly8yfQoJZWNobyAzOiAke3gvKygyKX0KCWVjaG8gNDogJHt4Ly8rKDIpfQoJZWNobyA1OiAke3gvMi80fQoJZWNobyA2OiAke3gvLzIvNH0KCWVjaG8gNzogJHt4LysoMikvNH0KCWVjaG8gODogJHt4Ly8rKDIpLzR9CgllY2hvIDk6ICR7eC9iL2MvZS9mfQoJZWNobyAxMDogJHt4L2JcL2MvZS9mfQoJZWNobyAxMTogJHt4L2JcL2MvZVwvZn0KCWVjaG8gMTI6ICR7eC9iXC9jL2VcXC9mfQoJZWNobyAxMzogJHt4L2JcXC9jL2VcXC9mfQoJZWNobyAxNDogJHt4Ly9iL2MvZS9mfQoJZWNobyAxNTogJHt4Ly9iXC9jL2UvZn0KCWVjaG8gMTY6ICR7eC8vYlwvYy9lXC9mfQoJZWNobyAxNzogJHt4Ly9iXC9jL2VcXC9mfQoJZWNobyAxODogJHt4Ly9iXFwvYy9lXFwvZn0KCWVjaG8gMTk6ICR7eC9iXC8qXC9jL3h9CgllY2hvIDIwOiAke3gvXC8vLn0KCWVjaG8gMjE6ICR7eC8vXC8vLn0KCWVjaG8gMjI6ICR7eC8vLy59CgllY2hvIDIzOiAke3gvIzEvOX0KCWVjaG8gMjQ6ICR7eC8vIzEvOX0KCWVjaG8gMjU6ICR7eC8lMS85fQoJZWNobyAyNjogJHt4Ly8lMS85fQoJZWNobyAyNzogJHt4Ly9cJTEvOX0KCWVjaG8gMjg6ICR7eC8vXFwlMS85fQoJZWNobyAyOTogJHt4Ly9cYS85fQoJZWNobyAzMDogJHt4Ly9cXGEvOX0KCWVjaG8gMzE6ICR7eC8yLyR5fQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAxMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyOiAxMzFfYWIvY2RlX2IvY18xMQoJMzogMTMyMV9hYi9jZGVfYi9jXzEyMjEKCTQ6IDEzMV9hYi9jZGVfYi9jXzExCgk1OiAxNDIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJNjogMTQ0NDM0MV9hYi9jZGVfYi9jXzE0NDEKCTc6IDE0MzIxX2FiL2NkZV9iL2NfMTIyMQoJODogMTQzNDFfYWIvY2RlX2IvY18xNDEKCTk6IDEyMjIzMjFfYWMvZS9mL2NkZV9iL2NfMTIyMQoJMTA6IDEyMjIzMjFfYWUvZmRlX2IvY18xMjIxCgkxMTogMTIyMjMyMV9hZS9mZGVfYi9jXzEyMjEKCTEyOiAxMjIyMzIxX2FlXC9mZGVfYi9jXzEyMjEKCTEzOiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMTQ6IDEyMjIzMjFfYWMvZS9mL2NkZV9jL2UvZi9jXzEyMjEKCTE1OiAxMjIyMzIxX2FlL2ZkZV9lL2ZfMTIyMQoJMTY6IDEyMjIzMjFfYWUvZmRlX2UvZl8xMjIxCgkxNzogMTIyMjMyMV9hZVwvZmRlX2VcL2ZfMTIyMQoJMTg6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkxOTogMTIyMjMyMV9heF8xMjIxCgkyMDogMTIyMjMyMV9hYi5jZGVfYi9jXzEyMjEKCTIxOiAxMjIyMzIxX2FiLmNkZV9iLmNfMTIyMQoJMjI6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyMzogOTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI0OiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjU6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjI5CgkyNjogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI3OiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjg6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyOTogMTIyMjMyMV85Yi9jZGVfYi9jXzEyMjEKCTMwOiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMzE6IDF4eXoyMjMyMV9hYi9jZGVfYi9jXzEyMjEKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTIKZGVzY3JpcHRpb246CglDaGVjayBhbmNob3JlZCBzdWJzdHJpbmcgcmVwbGFjZW1lbnQgd29ya3MsIGNvcm5lciBjYXNlcwpzdGRpbjoKCWZvbz0xMjMKCWVjaG8gMTogJHtmb28vIy94fQoJZWNobyAyOiAke2Zvby8lL3h9CgllY2hvIDM6ICR7Zm9vLyMvfQoJZWNobyA0OiAke2Zvby8jfQoJZWNobyA1OiAke2Zvby8lL30KCWVjaG8gNjogJHtmb28vJX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogeDEyMwoJMjogMTIzeAoJMzogMTIzCgk0OiAxMjMKCTU6IDEyMwoJNjogMTIzCi0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0zYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1YnN0cmluZyByZXBsYWNlbWVudCB3b3JrcyB3aXRoIHZhcmlhYmxlcyBhbmQgc2xhc2hlcywgdG9vCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9L2hvbWUvdXNlci90bXAKCWVjaG8gIiR7d2QvIyRwZngvfn0iCgllY2hvICIke3dkLyNcJHBmeC9+fSIKCWVjaG8gIiR7d2QvIyIkcGZ4Ii9+fSIKCWVjaG8gIiR7d2QvIyckcGZ4Jy9+fSIKCWVjaG8gIiR7d2QvIyJcJHBmeCIvfn0iCgllY2hvICIke3dkLyMnXCRwZngnL359IgpleHBlY3RlZC1zdGRvdXQ6CgkvZXRjL3RtcAoJL2hvbWUvdXNlci90bXAKCS9ldGMvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2hvbWUvdXNlci90bXAKCS9ob21lL3VzZXIvdG1wCi0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0zYgpkZXNjcmlwdGlvbjoKCU1vcmUgb2YgdGhpcywgYmFzaCBmYWlscyBpdCAoYmFzaDQgcGFzc2VzKQpzdGRpbjoKCUhPTUU9L2V0YwoJcGZ4PS9ob21lL3VzZXIKCXdkPS9ob21lL3VzZXIvdG1wCgllY2hvICIke3dkLyMkKGVjaG8gL2hvbWUvdXNlcikvfn0iCgllY2hvICIke3dkLyMiJChlY2hvIC9ob21lL3VzZXIpIi9+fSIKCWVjaG8gIiR7d2QvIyckKGVjaG8gL2hvbWUvdXNlciknL359IgpleHBlY3RlZC1zdGRvdXQ6CgkvZXRjL3RtcAoJL2V0Yy90bXAKCS9ob21lL3VzZXIvdG1wCi0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0zYwpkZXNjcmlwdGlvbjoKCUV2ZW4gbW9yZSB3ZWlyZCBjYXNlcwpzdGRpbjoKCUhPTUU9L2V0YwoJcGZ4PS9ob21lL3VzZXIKCXdkPSckcGZ4L3RtcCcKCWVjaG8gMTogJHt3ZC8jJHBmeC9+fQoJZWNobyAyOiAke3dkLyNcJHBmeC9+fQoJZWNobyAzOiAke3dkLyMiJHBmeCIvfn0KCWVjaG8gNDogJHt3ZC8jJyRwZngnL359CgllY2hvIDU6ICR7d2QvIyJcJHBmeCIvfn0KCWVjaG8gNjogJHt3ZC8jJ1wkcGZ4Jy9+fQoJdHM9J2EvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKScKCXRwPWEvYgoJdHI9Yy9kCglbWyAtbiAkQkFTSF9WRVJTSU9OIF1dICYmIHNob3B0IC1zIGV4dGdsb2IKCWVjaG8gNzogJHt0cy9hXC9iLyR0cn0KCWVjaG8gODogJHt0cy9hXC9iL1wkdHJ9CgllY2hvIDk6ICR7dHMvJHRwLyR0cn0KCWVjaG8gMTA6ICR7dHMvXCR0cC8kdHJ9CgllY2hvIDExOiAke3RzL1xcJHRwLyR0cn0KCWVjaG8gMTI6ICR7dHMvJHRwL2MvZH0KCWVjaG8gMTM6ICR7dHMvJHRwL2NcL2R9CgllY2hvIDE0OiAke3RzLyR0cC9jXFwvZH0KCWVjaG8gMTU6ICR7dHMvKyhhXC9iKS8kdHJ9CgllY2hvIDE2OiAke3RzLysoYVwvYikvXCR0cn0KCWVjaG8gMTc6ICR7dHMvKygkdHApLyR0cn0KCWVjaG8gMTg6ICR7dHMvKygkdHApL2MvZH0KCWVjaG8gMTk6ICR7dHMvKygkdHApL2NcL2R9CgllY2hvIDIwOiAke3RzLy9hXC9iLyR0cn0KCWVjaG8gMjE6ICR7dHMvL2FcL2IvXCR0cn0KCWVjaG8gMjI6ICR7dHMvLyR0cC8kdHJ9CgllY2hvIDIzOiAke3RzLy8kdHAvYy9kfQoJZWNobyAyNDogJHt0cy8vJHRwL2NcL2R9CgllY2hvIDI1OiAke3RzLy8rKGFcL2IpLyR0cn0KCWVjaG8gMjY6ICR7dHMvLysoYVwvYikvXCR0cn0KCWVjaG8gMjc6ICR7dHMvLysoJHRwKS8kdHJ9CgllY2hvIDI4OiAke3RzLy8rKCR0cCkvYy9kfQoJZWNobyAyOTogJHt0cy8vKygkdHApL2NcL2R9Cgl0cD0iKygkdHApIgoJZWNobyAzMDogJHt0cy8kdHAvJHRyfQoJZWNobyAzMTogJHt0cy8vJHRwLyR0cn0KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogJHBmeC90bXAKCTI6IC9ldGMvdG1wCgkzOiAkcGZ4L3RtcAoJNDogL2V0Yy90bXAKCTU6IC9ldGMvdG1wCgk2OiAkcGZ4L3RtcAoJNzogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgk4OiAkdHJhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTk6IGMvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTA6IGEvYmEvYmMvZCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTE6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTI6IGMvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTM6IGMvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTQ6IGNcL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTE1OiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTE2OiAkdHIkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTE3OiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTE4OiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTE5OiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTIwOiBjL2RjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTIxOiAkdHIkdHIkdHAkdHBfJHRyJHRwXyooJHRyKV8qKCR0cCkKCTIyOiBjL2RjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTIzOiBjL2RjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTI0OiBjL2RjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTI1OiBjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTI2OiAkdHIkdHAkdHBfJHRyJHRwXyooJHRyKV8qKCR0cCkKCTI3OiBjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTI4OiBjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTI5OiBjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKCTMwOiBhL2JhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTMxOiBhL2JhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKIwlUaGlzIGlzIHdoYXQgR05VIGJhc2ggZG9lczoKIwkzMDogYy9kJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCiMJMzE6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQotLS0KbmFtZTogZWdsb2ItdXRmOC0xCmRlc2NyaXB0aW9uOgoJVVRGLTggbW9kZSBkaWZmZXJlbmNlcyBmb3IgZWdsb2JiaW5nCnN0ZGluOgoJcz1ibMO2ZAoJc2V0ICtVCglwcmludCAxOiAke3MlPz8/fSAuCglwcmludCAyOiAke3MvYj8/P2QveH0gLgoJc2V0IC1VCglwcmludCAzOiAke3MlPz8/fSAuCglwcmludCA0OiAke3MvYj8/ZC94fSAuCgl4PW7DtgoJcHJpbnQgNTogJHt4JT99ICR7eCUlP30gLgoJeD3DpGgKCXByaW50IDY6ICR7eCM/fSAke3gjIz99IC4KCXg9gYIKCXByaW50IDc6ICR7eCU/fSAke3glJT99IC4KCXg9bcOkgAoJcHJpbnQgODogJHt4JT99ICR7eCUlP30gLgoJeD3kvZUKCXByaW50IDk6ICR7eCU/fSAke3glJT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogYmwgLgoJMjogeCAuCgkzOiBiIC4KCTQ6IHggLgoJNTogbiBuIC4KCTY6IGggaCAuCgk3OiCBIIEgLgoJODogbcOkIG3DpCAuCgk5OiAuCi0tLQpuYW1lOiBnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyBpc24ndCBkb25lIHdoZW4gZ2xvYiBoYXMgc3ludGF4IGVycm9yCmZpbGUtc2V0dXA6IGRpciA3NTUgIlt4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiW3gvZm9vIgpzdGRpbjoKCWVjaG8gWyoKCWVjaG8gKlt4CgllY2hvIFt4LyoKZXhwZWN0ZWQtc3Rkb3V0OgoJWyoKCSpbeAoJW3gvZm9vCi0tLQpuYW1lOiBnbG9iLWJhZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzeW1ib2xpYyBsaW5rcyBhcmVuJ3Qgc3RhdCgpJ2QKIyBicmVha3Mgb24gRGVsbCBVTklYIDQuMCBSMi4yIChTVlI0KSB3aGVyZSB1bmxpbmsgYWxzbyBmYWlscwojIGJyZWFrcyBvbiBGcmVlTWlOVCAoY2Fubm90IHVubGluayBkYW5nbGluZyBzeW1saW5rcykKIyBicmVha3Mgb24gTVNZUywgT1MvMiAoZG8gbm90IHN1cHBvcnQgc3ltbGlua3MpCmNhdGVnb3J5OiAhb3M6bWludCwhb3M6bXN5cywhb3M6c3ZyNC4wLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZGlyIDc1NSAiZGlyIgpmaWxlLXNldHVwOiBzeW1saW5rIDY0NCAiZGlyL2FiYyIKCW5vbi1leGlzdGVudC1maWxlCnN0ZGluOgoJZWNobyBkKi8qCgllY2hvIGQqL2FiYwpleHBlY3RlZC1zdGRvdXQ6CglkaXIvYWJjCglkaXIvYWJjCi0tLQpuYW1lOiBnbG9iLXJhbmdlLTEKZGVzY3JpcHRpb246CglUZXN0IHJhbmdlIG1hdGNoaW5nCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIuYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJjYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICItYmMiCnN0ZGluOgoJZWNobyBbYWItXSoKCWVjaG8gWy1hYl0qCgllY2hvIFshLWFiXSoKCWVjaG8gWyFhYl0qCgllY2hvIFtdYWJdKgoJOj4nLi8hYmMnCgk6PicuL15iYycKCWVjaG8gW15hYl0qCgllY2hvIFshYWJdKgpleHBlY3RlZC1zdGRvdXQ6CgktYmMgYWJjIGJiYwoJLWJjIGFiYyBiYmMKCWNiYwoJLWJjIGNiYwoJYWJjIGJiYwoJXmJjIGFiYyBiYmMKCSFiYyAtYmMgXmJjIGNiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS0yCmRlc2NyaXB0aW9uOgoJVGVzdCByYW5nZSBtYXRjaGluZwoJKEFUJlQga3NoIGZhaWxzIHRoaXM7IFBPU0lYIHNheXMgaW52YWxpZCkKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKc3RkaW46CgllY2hvIFthLS1dKgpleHBlY3RlZC1zdGRvdXQ6CglbYS0tXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgbWF0Y2hlcyB0aGUgcmlnaHQgdGhpbmdzLi4uCiMgYnJlYWtzIG9uIE1hYyBPU1ggKEhGUysgbm9uLXN0YW5kYXJkIFVuaWNvZGUgY2Fub25pY2FsIGRlY29tcG9zaXRpb24pCiMgYnJlYWtzIG9uIEN5Z3dpbiAxLjcgKGZpbGVzIGFyZSBub3cgVVRGLTE2IG9yIHNvbWV0aGluZykKIyBicmVha3Mgb24gUU5YIDYuNC4xIChzYXlzIFJUKQpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6ZGFyd2luLCFvczptc3lzLCFvczpudG8sIW9zOm9zMgpuZWVkLXBhc3M6IG5vCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhwmMiCnN0ZGluOgoJZWNobyBhW8Et2l0qCmV4cGVjdGVkLXN0ZG91dDoKCWHCYwotLS0KbmFtZTogZ2xvYi1yYW5nZS00CmRlc2NyaXB0aW9uOgoJUmVzdWx0cyB1bnNwZWNpZmllZCBhY2NvcmRpbmcgdG8gUE9TSVgKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5iYyIKc3RkaW46CgllY2hvIFthLl0qCmV4cGVjdGVkLXN0ZG91dDoKCVthLl0qCi0tLQpuYW1lOiBnbG9iLXJhbmdlLTUKZGVzY3JpcHRpb246CglSZXN1bHRzIHVuc3BlY2lmaWVkIGFjY29yZGluZyB0byBQT1NJWAoJKEFUJlQga3NoIHRyZWF0cyB0aGlzIGxpa2UgW2EtY2MtZV0qKQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYmJjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiY2JjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZGJjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZWJjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiLWJjIgpzdGRpbjoKCWVjaG8gW2EtYy1lXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJLWJjIGFiYyBiYmMgY2JjIGViYwotLS0KbmFtZTogZ2xvYi10cmltLTEKZGVzY3JpcHRpb246CglDaGVjayBhZ2FpbnN0IGEgcmVncmVzc2lvbiBmcm9tIGZpeGluZyBJRlMtc3Vic3QtMgpzdGRpbjoKCXg9JyNmb28nCglwcmludCAtciAiYmVmb3JlPSckeCciCgl4PSR7eCUlIyp9CglwcmludCAtciAiYWZ0ZXIgPSckeCciCmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZT0nI2ZvbycKCWFmdGVyID0nJwotLS0KbmFtZTogaGVyZWRvYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgb3JkZXJpbmcvY29udGVudCBvZiByZWR1bmRlbnQgaGVyZSBkb2N1bWVudHMuCnN0ZGluOgoJY2F0IDw8IEVPRjEgPDwgRU9GMgoJaGkKCUVPRjEKCXRoZXJlCglFT0YyCmV4cGVjdGVkLXN0ZG91dDoKCXRoZXJlCi0tLQpuYW1lOiBoZXJlZG9jLTIKZGVzY3JpcHRpb246CglDaGVjayBxdW90ZWQgaGVyZS1kb2MgaXMgcHJvdGVjdGVkLgpzdGRpbjoKCWE9Zm9vCgljYXQgPDwgJ0VPRicKCWhpXAoJdGhlcmUkYQoJc3R1ZmYKCUVPXAoJRgoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpXAoJdGhlcmUkYQoJc3R1ZmYKCUVPXAoJRgotLS0KbmFtZTogaGVyZWRvYy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBuZXdsaW5lIGlzbid0IG5lZWRlZCBhZnRlciBoZXJlZG9jLWRlbGltaXRlciBtYXJrZXIuCnN0ZGluOiAhCgljYXQgPDwgRU9GCgloaQoJdGhlcmUKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKLS0tCm5hbWU6IGhlcmVkb2MtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYW4gZXJyb3Igb2NjdXJzIGlmIHRoZSBoZXJlZG9jLWRlbGltaXRlciBpcyBtaXNzaW5nLgpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGJhY2tzbGFzaCBxdW90ZXMgYSAkLCBgIGFuZCBcIGFuZCBraWxscyBhIFxuZXdsaW5lCnN0ZGluOgoJYT1CQUQKCWI9b2sKCWNhdCA8PCBFT0YKCWhcJHthfWkKCWhcXCR7Yn1pCgl0aFxgZWNobyBub3QtcnVuXGBlcmUKCXRoXFxgZWNobyBpcy1ydW5gZXJlCglmb2xcXGtzCgltb3JlXFwKCWxhc3QgXAoJbGluZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWgke2F9aQoJaFxva2kKCXRoYGVjaG8gbm90LXJ1bmBlcmUKCXRoXGlzLXJ1bmVyZQoJZm9sXGtzCgltb3JlXAoJbGFzdCBsaW5lCi0tLQpuYW1lOiBoZXJlZG9jLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGluIGluaXRpYWwgaGVyZS1kZWxpbSB3b3JkIGRvZXNuJ3QgaW1wbHkKCWEgcXVvdGVkIGhlcmUtZG9jLgpzdGRpbjoKCWE9aQoJY2F0IDw8IEVPXAoJRgoJaCRhCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBkb3VibGUgcXVvdGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZSBkZWxpbWl0ZXJzIGFyZQoJbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyLgpzdGRpbjoKCWE9YgoJY2F0IDw8ICJFJGEiCgloaQoJaCRhCgloYgoJRSRhCgllY2hvIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWgkYQoJaGIKCWRvbmUKLS0tCm5hbWU6IGhlcmVkb2MtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZG91YmxlIHF1b3RlZCBlc2NhcGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZQoJZGVsaW1pdGVycyBhcmUgbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyCgkoXCBjb3VudHMgYXMgYSBxdW90ZSkuCnN0ZGluOgoJYT1iCgljYXQgPDwgIkVcJGEiCgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglFJGEKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglkb25lCi0tLQpuYW1lOiBoZXJlZG9jLTlhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlIHN0cmluZ3Mgd29yay4Kc3RkaW46CgliYXI9ImJhcgoJCWJheiIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PGZvbwoJIiRfX3Byb2duYW1lIiAtYyAidHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8Zm9vIgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8IiRiYXIiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwnJGJhcicKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PFwkYmFyCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwtZm9vCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwiJChlY2hvICJmb28gYmFyIikiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwiQSAkKGVjaG8gImZvbyBiYXIiKSBCIgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8XCRiXCRiJGJhcgpleHBlY3RlZC1zdGRvdXQ6CglzYmIKCXNiYgoJb25lCgkJb25tCgkkb25lCgkkb25lCgktc2JiCglzYmIgb25lCglBIHNiYiBvbmUgQgoJJG8kb29uZQoJCW9ubQotLS0KbmFtZTogaGVyZWRvYy05YgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb3JuZXIgY2FzZSBvZiBoZXJlIHN0cmluZ3Mgd29ya3MgbGlrZSBiYXNoCnN0ZGluOgoJZm5vcmQ9NDIKCWJhcj0iYmFyCgkJIFwkZm5vcmQgYmF6IgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8JGJhcgpleHBlY3RlZC1zdGRvdXQ6CglvbmUgJHNhYmVxIG9ubQpjYXRlZ29yeTogYmFzaAotLS0KbmFtZTogaGVyZWRvYy05YwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb3JuZXIgY2FzZSBvZiBoZXJlIHN0cmluZ3Mgd29ya3MgbGlrZSBrc2g5MywgenNoCnN0ZGluOgoJZm5vcmQ9NDIKCWJhcj0iYmFyCgkJIFwkZm5vcmQgYmF6IgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8JGJhcgpleHBlY3RlZC1zdGRvdXQ6CglvbmUKCQkgJHNhYmVxIG9ubQotLS0KbmFtZTogaGVyZWRvYy05ZApkZXNjcmlwdGlvbjoKCUNoZWNrIGFub3RoZXIgY29ybmVyIGNhc2Ugb2YgaGVyZSBzdHJpbmdzCnN0ZGluOgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8IGJhcgpleHBlY3RlZC1zdGRvdXQ6CglvbmUKLS0tCm5hbWU6IGhlcmVkb2MtOWUKZGVzY3JpcHRpb246CglDaGVjayBoZXJlIHN0cmluZyByZWxhdGVkIHJlZ3Jlc3Npb24gd2l0aCBtdWx0aXBsZSBpb3BzCnN0ZGluOgoJZWNobyAkKHRyIHIgeiA8PDwnYmFyJyAyPi9kZXYvbnVsbCkKZXhwZWN0ZWQtc3Rkb3V0OgoJYmF6Ci0tLQpuYW1lOiBoZXJlZG9jLTlmCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9uZyBoZXJlIHN0cmluZ3MKc3RkaW46CgljYXQgPDw8ICIkKCAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApYWEiCmV4cGVjdGVkLXN0ZG91dDoKCWFhCi0tLQpuYW1lOiBoZXJlZG9jLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApzdGRpbjoKCXg9dQoJdmE9PDxFT0YKCT1hICR4IFx4NDA9CglFT0YKCXZiPTw8J0VPRicKCT1iICR4IFx4NDA9CglFT0YKCWZ1bmN0aW9uIGZvbyB7CgkJdmM9PDwtRU9GCgkJCT1jICR4IFx4NDA9CgkJRU9GCgl9CglmbmQ9JCh0eXBlc2V0IC1mIGZvbykKCXByaW50IC1yIC0tICIkZm5kIgoJZnVuY3Rpb24gZm9vIHsKCQllY2hvIGJsdWIKCX0KCWZvbwoJZXZhbCAiJGZuZCIKCWZvbwoJIyByYXRoZXIgbm9uc2Vuc2ljYWwsIGJ1dOKApgoJdmQ9PDw8Ij1kICR4IFx4NDA9IgoJdmU9PDw8Jz1lICR4IFx4NDA9JwoJdmY9PDw8JCc9ZiAkeCBceDQwPScKCSMgbm93IGNoZWNrCglwcmludCAtciAtLSAifCB2YT17JHZhfSB2Yj17JHZifSB2Yz17JHZjfSB2ZD17JHZkfSB2ZT17JHZlfSB2Zj17JHZmfSB8IgoJIyBjaGVjayBhcHBlbmQKCXY9PDwtRU9GCgkJdmFwcDEKCUVPRgoJdis9PDwtRU9GCgkJdmFwcDIKCUVPRgoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRiAKCT1jICR4IFx4NDA9CglFT0YKCQoJfSAKCWJsdWIKCXwgdmE9ez1hIHUgXHg0MD0KCX0gdmI9ez1iICR4IFx4NDA9Cgl9IHZjPXs9YyB1IFx4NDA9Cgl9IHZkPXs9ZCB1IFx4NDA9Cgl9IHZlPXs9ZSAkeCBceDQwPQoJfSB2Zj17PWYgJHggQD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIHdpdGggbm8gb3IgZW1wdHkgZGVsaW1pdGVyCnN0ZGluOgoJeD11Cgl2YT08PAoJPWEgJHggXHg0MD0KCTw8Cgl2Yj08PCcnCgk9YiAkeCBceDQwPQoJCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LQoJCQk9YyAkeCBceDQwPQoJCTw8CgkJdmQ9PDwtJycKCQkJPWQgJHggXHg0MD0KCQoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCXByaW50IC1yIC0tICJ8IHZhPXskdmF9IHZiPXskdmJ9IHZjPXskdmN9IHZkPXskdmR9IHwiCgkjIGNoZWNrIGFwcGVuZAoJdj08PC0KCQl2YXBwMQoJPDwKCXYrPTw8LScnCgkJdmFwcDIKCQoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LSAKCT1jICR4IFx4NDA9Cgk8PAoJCgkJdmQ9PDwtIiIgCgk9ZCAkeCBceDQwPQoJCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIGNhbiB1c2UgJCogYW5kICRAOyBub3RlIHNoZWxscyB2YXJ5OgoJ4oCiIHBka3NoIDUuMi4xNCBhY3RzIHRoZSBzYW1lCgnigKIgZGFzaCBoYXMgMSBhbmQgMiB0aGUgc2FtZSBidXQgMyBsYWNrcyB0aGUgc3BhY2UKCeKAoiBrc2g5MywgYmFzaDQgZGlmZmVyIGluIDIgYnkgdXNpbmcgc3BhY2UgaXB2IGNvbG9uCnN0ZGluOgoJc2V0IC0tIGEgYgoJbmw9JwoJJwoJSUZTPSIgCSRubCI7IG49MQoJY2F0IDw8RU9GCgkkbiBmb28gJCogZm9vCgkkbiBiYXIgIiQqIiBiYXIKCSRuIGJheiAkQCBiYXoKCSRuIGJsYSAiJEAiIGJsYQoJRU9GCglJRlM9IjoiOyBuPTIKCWNhdCA8PEVPRgoJJG4gZm9vICQqIGZvbwoJJG4gYmFyICIkKiIgYmFyCgkkbiBiYXogJEAgYmF6CgkkbiBibGEgIiRAIiBibGEKCUVPRgoJSUZTPTsgbj0zCgljYXQgPDxFT0YKCSRuIGZvbyAkKiBmb28KCSRuIGJhciAiJCoiIGJhcgoJJG4gYmF6ICRAIGJhegoJJG4gYmxhICIkQCIgYmxhCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb28gYSBiIGZvbwoJMSBiYXIgImEgYiIgYmFyCgkxIGJheiBhIGIgYmF6CgkxIGJsYSAiYSBiIiBibGEKCTIgZm9vIGE6YiBmb28KCTIgYmFyICJhOmIiIGJhcgoJMiBiYXogYTpiIGJhegoJMiBibGEgImE6YiIgYmxhCgkzIGZvbyBhIGIgZm9vCgkzIGJhciAiYSBiIiBiYXIKCTMgYmF6IGEgYiBiYXoKCTMgYmxhICJhIGIiIGJsYQotLS0KbmFtZTogaGVyZWRvYy0xNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdXNpbmcgbXVsdGlwbGUgaGVyZSBkb2N1bWVudHMgd29ya3MKc3RkaW46Cglmb28oKSB7CgkJZWNobyAiZ290ICQoY2F0KSBvbiBzdGRpbiIKCQllY2hvICJnb3QgJChjYXQgPCY0KSBvbiBmZCM0IgoJCWVjaG8gImdvdCAkKGNhdCA8JjUpIG9uIGZkIzUiCgl9CgliYXIoKSB7CgkJZm9vIDQ8PC1hIDw8LWIgNTw8LWMKCQlmb3VyCgkJYQoJCXplcm8KCQliCgkJZml2ZQoJCWMKCX0KCXg9JCh0eXBlc2V0IC1mIGJhcikKCWV2YWwgIiR4IgoJeT0kKHR5cGVzZXQgLWYgYmFyKQoJW1sgJHggPSAiJHkiIF1dOyBlY2hvICQ/Cgl0eXBlc2V0IC1mIGJhcgoJYmFyCmV4cGVjdGVkLXN0ZG91dDoKCTAKCWJhcigpIHsKCQlmb28gNDw8LWEgPDwtYiA1PDwtYyAKCWZvdXIKCWEKCXplcm8KCWIKCWZpdmUKCWMKCQoJfSAKCWdvdCB6ZXJvIG9uIHN0ZGluCglnb3QgZm91ciBvbiBmZCM0Cglnb3QgZml2ZSBvbiBmZCM1Ci0tLQpuYW1lOiBoZXJlZG9jLWNvbXN1Yi0xCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIENPTVNVQiwgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46Cgl0ZXh0PSQoY2F0IDw8RU9GCgloZXJlIGlzIHRoZSB0ZXh0CglFT0YpCgllY2hvID0gJHRleHQgPQpleHBlY3RlZC1zdGRvdXQ6Cgk9IGhlcmUgaXMgdGhlIHRleHQgPQotLS0KbmFtZTogaGVyZWRvYy1jb21zdWItMgpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBDT01TVUIsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJdW5iYWxhbmNlZD0kKGNhdCA8PEVPRgoJdGhpcyBwYXJlbiApIGlzIGEgcHJvYmxlbQoJRU9GKQoJZWNobyA9ICR1bmJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGlzIHBhcmVuICkgaXMgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTMKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGVzZSBwYXJlbnMgKCApIGFyZSBub3QgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJGJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGVzZSBwYXJlbnMgKCApIGFyZSBub3QgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTQKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGVzZSBwYXJlbnMgXCggKSBhcmUgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJGJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGVzZSBwYXJlbnMgXCggKSBhcmUgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2Mtc3Vic2hlbGwtMQpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBzdWJzaGVsbHMsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJKGNhdCA8PEVPRgoJc29tZSB0ZXh0CglFT0YpCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6Cglzb21lIHRleHQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy1zdWJzaGVsbC0yCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIHN1YnNoZWxscywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46CgkoY2F0IDw8RU9GCglzb21lIHRleHQKCUVPRgoJKQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJc29tZSB0ZXh0CgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtc3Vic2hlbGwtMwpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBzdWJzaGVsbHMsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJKGNhdCA8PEVPRjsgKQoJc29tZSB0ZXh0CglFT0YKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCXNvbWUgdGV4dAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXdlaXJkLTEKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMsIHRha2VuIGZyb20gQXVzdGluIE1MCglEb2N1bWVudHMgY3VycmVudCBzdGF0ZSBpbiBta3NoLCAqTk9UKiBuZWNlc3NhcmlseSBjb3JyZWN0IQpzdGRpbjoKCWNhdCA8PEVORAoJaGVsbG8KCUVORFwKCUVORAoJRU5ECgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CgloZWxsbwoJRU5ERU5ECgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtd2VpcmQtMgpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46CgljYXQgPDwnICAgIEVORCAgICAnCgloZWxsbwoJICAgIEVORCAgICAKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWhlbGxvCgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtd2VpcmQtNApkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKCURvY3VtZW50cyBjdXJyZW50IHN0YXRlIGluIG1rc2gsICpOT1QqIG5lY2Vzc2FyaWx5IGNvcnJlY3QhCnN0ZGluOgoJY2F0IDw8RU5ECgloZWxsb1wKCUVORAoJRU5ECgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CgloZWxsb0VORAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXdlaXJkLTUKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMsIHRha2VuIGZyb20gQXVzdGluIE1MCglEb2N1bWVudHMgY3VycmVudCBzdGF0ZSBpbiBta3NoLCAqTk9UKiBuZWNlc3NhcmlseSBjb3JyZWN0IQpzdGRpbjoKCWNhdCA8PEVORAoJaGVsbG8KCVxFTkQKCUVORAoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8KCVxFTkQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gc2ltcGxlIGNvbW1hbmQuCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GCgkJaGkKCQlFT0YKCQlmb3IgaSBpbiBhIGIgOyBkbwoJCQljYXQgPDwtIEVPRgoJCQltb3JlCgkJCUVPRgoJCWRvbmUKCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJbW9yZQoJbW9yZQoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gZnVuY3Rpb24sIG11bHRpcGxlIGNhbGxzIHRvIGZ1bmN0aW9uLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQlmb28oKSB7CgkJCWNhdCA8PC0gRU9GCgkJCWhpCgkJCUVPRgoJCX0KCQlmb28KCQlmb28KCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJaGkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIGZ1bmN0aW9uIGluIGxvb3AsIG11bHRpcGxlIGNhbGxzIHRvIGZ1bmN0aW9uLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQlmb28oKSB7CgkJCWNhdCA8PC0gRU9GCgkJCWhpCgkJCUVPRgoJCX0KCQlmb3IgaSBpbiBhIGI7IGRvCgkJCWZvbwoJCQlmb28oKSB7CgkJCQljYXQgPDwtIEVPRgoJCQkJZm9sa3MgJGkKCQkJCUVPRgoJCQl9CgkJZG9uZQoJCWZvbwoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb2xrcyBiCglmb2xrcyBiCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJQmFja2dyb3VuZGVkIHNpbXBsZSBjb21tYW5kIHdpdGggaGVyZSBkb2MKc3RkaW46CglUTVBESVI9JFBXRAoJZXZhbCAnCgkJY2F0IDw8LSBFT0YgJgoJCWhpCgkJRU9GCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglCYWNrZ3JvdW5kZWQgc3Vic2hlbGwgY29tbWFuZCB3aXRoIGhlcmUgZG9jCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJICAgICAgKAoJCXNsZWVwIDEJIyBzbyBwYXJlbnQgZXhpdHMKCQllY2hvIEEKCQljYXQgPDwtIEVPRgoJCWhpCgkJRU9GCgkJZWNobyBCCgkgICAgICApICYKCSAgICAnICYKCXNsZWVwIDIKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CglBCgloaQoJQgoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gcGlwZWxpbmUuCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GIHwgc2VkICJzL2hpL0hJLyIKCQloaQoJCUVPRgoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCUhJCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJSGVyZWRvYyBpbiBiYWNrZ3JvdW5kZWQgcGlwZWxpbmUuCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GIHwgc2VkICdzL2hpL0hJLycgJgoJCWhpCgkJRU9GCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJSEkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vCglsYXRlLiBIZXJlZG9jIGluIGZ1bmN0aW9uLCBiYWNrZ3JvdW5kZWQgY2FsbCB0byBmdW5jdGlvbi4KCVRoaXMgY2hlY2sgY2FuIGZhaWwgb24gc2xvdyBtYWNoaW5lcyAoPDEwMCBNSHopLCBvciBDeWd3aW4sCgl0aGF0J3Mgbm9ybWFsLgpuZWVkLXBhc3M6IG5vCnN0ZGluOgoJVE1QRElSPSRQV0QKCSMgQmFja2dyb3VuZCBldmFsIHNvIG1haW4gc2hlbGwgZG9lc24ndCBkbyBwYXJzaW5nCglldmFsICcKCQlmb28oKSB7CgkJCWNhdCA8PC0gRU9GCgkJCWhpCgkJCUVPRgoJCX0KCQlmb28KCQkjIHNsZWVwIHNvIGV2YWwgY2FuIGRpZQoJCShzbGVlcCAxOyBmb28pICYKCQkoc2xlZXAgMTsgZm9vKSAmCgkJZm9vCgkgICAgJyAmCglzbGVlcCAyCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCgloaQoJaGkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtcXVvdGluZy11bnN1YnN0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgcXVvdGVkIGNoYXJhY3RlcnMgaW4KCWhlcmUgZG9jdW1lbnRzIHdpdGhvdXQgc3Vic3RpdHV0aW9uIChtYXJrZXIgaXMgcXVvdGVkKS4Kc3RkaW46Cglmb289YmFyCgljYXQgPDwtJ0VPRicKCQl4ICIgXCIgXCBcXCAkIFwkIGBlY2hvIGJhemAgXGBlY2hvIGJhelxgICRmb28gXCRmb28geAoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCXggIiBcIiBcIFxcICQgXCQgYGVjaG8gYmF6YCBcYGVjaG8gYmF6XGAgJGZvbyBcJGZvbyB4Ci0tLQpuYW1lOiBoZXJlZG9jLXF1b3Rpbmctc3Vic3QKZGVzY3JpcHRpb246CglDaGVjayBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiBxdW90ZWQgY2hhcmFjdGVycyBpbgoJaGVyZSBkb2N1bWVudHMgd2l0aCBzdWJzdGl0dXRpb24gKG1hcmtlciBpcyBub3QgcXVvdGVkKS4Kc3RkaW46Cglmb289YmFyCgljYXQgPDwtRU9GCgkJeCAiIFwiIFwgXFwgJCBcJCBgZWNobyBiYXpgIFxgZWNobyBiYXpcYCAkZm9vIFwkZm9vIHgKCUVPRgpleHBlY3RlZC1zdGRvdXQ6Cgl4ICIgXCIgXCBcICQgJCBiYXogYGVjaG8gYmF6YCBiYXIgJGZvbyB4Ci0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgdW5xdW90ZWQge30gYXJlIHRyZWF0ZWQgYXMgcXVvdGVzCnN0ZGluOgoJZm9vPTEKCWVjaG8gJHtmb286KydibGFoICAkZm9vJ30KZXhwZWN0ZWQtc3Rkb3V0OgoJYmxhaCAgJGZvbwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1xdW90ZWQtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBxdW90ZWQge30gYXJlIHRyZWF0ZWQgYXMKCW5vcm1hbCBjaGFyCnN0ZGluOgoJZm9vPTEKCWVjaG8gIiR7Zm9vOisnYmxhaCAgJGZvbyd9IgpleHBlY3RlZC1zdGRvdXQ6CgknYmxhaCAgMScKLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tYnJhY2VzLW5lc3RlZApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgdW5xdW90ZWQge30gYXJlIHRyZWF0ZWQgYXMgcXVvdGVzLAoJZXZlbiBpZiB0aGF0J3MgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjb21tYW5kIGV4cGFuc2lvbgpzdGRpbjoKCWZvbz0xCgllY2hvICIkKCBlY2hvICR7Zm9vOisnYmxhaCAgJGZvbyd9KSIKZXhwZWN0ZWQtc3Rkb3V0OgoJYmxhaCAgJGZvbwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1icmFjZS1wYXR0ZXJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSB7fSBwYXR0ZXJuIGFyZSB0cmVhdGVkIGFzIHF1b3RlcwpzdGRpbjoKCWZvbz0xMjM0CgllY2hvICR7Zm9vJScyJyp9ICIke2ZvbyUnMicqfSIgJHtmb28lMicqJ30gIiR7Zm9vJTInKid9IgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEgMTIzNCAxMjM0Ci0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLWhlcmVkb2MtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSB7fSBpbiBoZXJlZG9jIGFyZSB0cmVhdGVkCglhcyBub3JtYWwgY2hhcgpzdGRpbjoKCWZvbz0xCgljYXQgPDxFT00KCSR7Zm9vOisnYmxhaCAgJGZvbyd9CglFT00KZXhwZWN0ZWQtc3Rkb3V0OgoJJ2JsYWggIDEnCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLW5lc3RlZC1icmFjZXMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIG5lc3RlZCB1bnF1b3RlZCB7fSBhcmUKCXRyZWF0ZWQgYXMgcXVvdGVzCnN0ZGluOgoJZm9vPTEKCWVjaG8gJHtmb286KyR7Zm9vOisnYmxhaCAgJGZvbyd9fQpleHBlY3RlZC1zdGRvdXQ6CglibGFoICAkZm9vCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLW5lc3RlZC1xdW90ZWQtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQgcXVvdGVkIHt9IGFyZSB0cmVhdGVkCglhcyBub3JtYWwgY2hhcgpzdGRpbjoKCWZvbz0xCgllY2hvICIke2ZvbzorJHtmb286KydibGFoICAkZm9vJ319IgpleHBlY3RlZC1zdGRvdXQ6CgknYmxhaCAgMScKLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tbmVzdGVkLWJyYWNlcy1uZXN0ZWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIG5lc3RlZCB1bnF1b3RlZCB7fSBhcmUgdHJlYXRlZAoJYXMgcXVvdGVzLCBldmVuIGlmIHRoYXQncyBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNvbW1hbmQgZXhwYW5zaW9uCnN0ZGluOgoJZm9vPTEKCWVjaG8gIiQoIGVjaG8gJHtmb286KyR7Zm9vOisnYmxhaCAgJGZvbyd9fSkiCmV4cGVjdGVkLXN0ZG91dDoKCWJsYWggICRmb28KLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tbmVzdGVkLWJyYWNlLXBhdHRlcm4KZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIG5lc3RlZCB7fSBwYXR0ZXJuIGFyZSB0cmVhdGVkIGFzIHF1b3RlcwpzdGRpbjoKCWZvbz0xMjM0CgllY2hvICR7Zm9vOiske2ZvbyUnMicqfX0gIiR7Zm9vOiske2ZvbyUnMicqfX0iICR7Zm9vOiske2ZvbyUyJyonfX0gIiR7Zm9vOiske2ZvbyUyJyonfX0iCmV4cGVjdGVkLXN0ZG91dDoKCTEgMSAxMjM0IDEyMzQKLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4taGVyZWRvYy1uZXN0ZWQtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQge30gaW4gaGVyZWRvYyBhcmUgdHJlYXRlZAoJYXMgbm9ybWFsIGNoYXIKc3RkaW46Cglmb289MQoJY2F0IDw8RU9NCgkke2ZvbzorJHtmb286KydibGFoICAkZm9vJ319CglFT00KZXhwZWN0ZWQtc3Rkb3V0OgoJJ2JsYWggIDEnCi0tLQpuYW1lOiBoaXN0b3J5LWJhc2ljCmRlc2NyaXB0aW9uOgoJU2VlIGlmIHdlIGNhbiB0ZXN0IGhpc3RvcnkgYXQgYWxsCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGhpCglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CgloaQoJMQllY2hvIGhpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWR1cHMKZGVzY3JpcHRpb246CglWZXJpZnkgZHVwbGljYXRlcyBhbmQgc3BhY2VzIGFyZSBub3QgZW50ZXJlZApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBoaQoJIGVjaG8geW8KCWVjaG8gaGkKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl5bwoJaGkKCTEJZWNobyBoaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS11bmxpbmsKZGVzY3JpcHRpb246CglDaGVjayBpZiBicm9rZW4gSElTVEZJTEVzIGRvIG5vdCBjYXVzZSB0cm91YmxlCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9Zm9vL2hpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCmZpbGUtc2V0dXA6IGRpciA3NTUgImZvbyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImZvby9oaXN0LmZpbGUiCglzb21ldGV4dAp0aW1lLWxpbWl0OiA1CnBlcmwtc2V0dXA6IGNobW9kKDA1NTUsICJmb28iKTsKc3RkaW46CgllY2hvIGhpCglmYyAtbAoJY2htb2QgMDc1NSBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCTEJZWNobyBoaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8oLipjYW4ndCB1bmxpbmsgSElTVEZJTEUuKlxuKT9YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWUtbWludXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIG1vcmUgcmVjZW50IGNvbW1hbmQgaXMgZXhlY3V0ZWQKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gaGkKCWVjaG8gdGhlcmUKCWZjIC1lIC0KZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCgl0aGVyZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIHRoZXJlXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWUtbWludXMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcmVwZWF0ZWQgY29tbWFuZCBpcyBwcmludGVkIGJlZm9yZSBjb21tYW5kCglpcyByZS1leGVjdXRlZC4KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWV4ZWMgMj4mMQoJZWNobyBoaQoJZWNobyB0aGVyZQoJZmMgLWUgLQpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS9YKmhpXG5YKnRoZXJlXG5YKmVjaG8gdGhlcmVcbnRoZXJlXG5YKi8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0zCmRlc2NyaXB0aW9uOgoJZmMgLWUgLSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vIGhpc3RvcnkKCShrc2g5MyBoYXMgYSBidWcgdGhhdCBjYXVzZXMgdGhpcyB0byBmYWlsKQoJKGtzaDg4IGxvb3BzIG9uIHRoaXMpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CglmYyAtZSAtCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKi4qOi4qaGlzdG9yeS4qXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWUtbWludXMtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmICJmYyAtZSAtIiBjb21tYW5kIG91dHB1dCBnb2VzIHRvIHN0ZG91dC4KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gYWJjCglmYyAtZSAtIHwgKHJlYWQgeDsgZWNobyAiQSAkeCIpCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCWFiYwoJQSBhYmMKCW9rCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gYWJjXG5YKi8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy01CmRlc2NyaXB0aW9uOgoJZmMgaXMgcmVwbGFjZWQgaW4gaGlzdG9yeSBieSBuZXcgY29tbWFuZC4KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gYWJjIGRlZgoJZWNobyBnaGkgamtsCgk6CglmYyAtZSAtIGVjaG8KCWZjIC1sIDIgNQpleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglnaGkgamtsCglnaGkgamtsCgkyCWVjaG8gZ2hpIGprbAoJMwk6Cgk0CWVjaG8gZ2hpIGprbAoJNQlmYyAtbCAyIDUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBnaGkgamtsXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtMQpkZXNjcmlwdGlvbjoKCUxpc3QgbGlzdHMgY29ycmVjdCByYW5nZQoJKGtzaDg4IGZhaWxzICdjYXVzZSBpdCBsaXN0cyB0aGUgZmMgY29tbWFuZCkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gbGluZSAxCgllY2hvIGxpbmUgMgoJZWNobyBsaW5lIDMKCWZjIC1sIC0tIC0yCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCTIJZWNobyBsaW5lIDIKCTMJZWNobyBsaW5lIDMKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC0yCmRlc2NyaXB0aW9uOgoJTGlzdHMgb2xkZXN0IGhpc3RvcnkgaWYgZ2l2ZW4gcHJlLWhpc3RvcmljIG51bWJlcgoJKGtzaDkzIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGlzIHRvIGZhaWwpCgkoa3NoODggZmFpbHMgJ2NhdXNlIGl0IGxpc3RzIHRoZSBmYyBjb21tYW5kKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZmMgLWwgLS0gLTQwCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCTEJZWNobyBsaW5lIDEKCTIJZWNobyBsaW5lIDIKCTMJZWNobyBsaW5lIDMKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC0zCmRlc2NyaXB0aW9uOgoJQ2FuIGdpdmUgbnVtYmVyICdvcHRpb25zJyB0byBmYwpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWZjIC1sIC0zIC0yCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTQKZGVzY3JpcHRpb246CgktMSByZWZlcnMgdG8gcHJldmlvdXMgY29tbWFuZApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWZjIC1sIC0xIC0xCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJNAllY2hvIGxpbmUgNApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTUKZGVzY3JpcHRpb246CglMaXN0IGNvbW1hbmQgc3RheXMgaW4gaGlzdG9yeQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWZjIC1sIC0xIC0xCglmYyAtbCAtMiAtMQpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCTQJZWNobyBsaW5lIDQKCTQJZWNobyBsaW5lIDQKCTUJZmMgLWwgLTEgLTEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC02CmRlc2NyaXB0aW9uOgoJSElTVFNJWkUgbGltaXRzIGFib3V0IG9mIGhpc3Rvcnkga2VwdC4KCShrc2g4OCBmYWlscyAnY2F1c2UgaXQgbGlzdHMgdGhlIGZjIGNvbW1hbmQpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIUhJU1RTSVpFPTMhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gbGluZSAxCgllY2hvIGxpbmUgMgoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CgllY2hvIGxpbmUgNQoJZmMgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTQJZWNobyBsaW5lIDQKCTUJZWNobyBsaW5lIDUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC03CmRlc2NyaXB0aW9uOgoJZmMgYWxsb3dzIHRvbyBvbGQvbmV3IGVycm9ycyBpbiByYW5nZSBzcGVjaWZpY2F0aW9uCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIUhJU1RTSVpFPTMhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gbGluZSAxCgllY2hvIGxpbmUgMgoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CgllY2hvIGxpbmUgNQoJZmMgLWwgMSAzMApleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJNQllY2hvIGxpbmUgNQoJNglmYyAtbCAxIDMwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3Qtci0xCmRlc2NyaXB0aW9uOgoJdGVzdCAtciBmbGFnIGluIGhpc3RvcnkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gbGluZSAxCgllY2hvIGxpbmUgMgoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CgllY2hvIGxpbmUgNQoJZmMgLWwgLXIgMiA0CmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJbGluZSA1Cgk0CWVjaG8gbGluZSA0CgkzCWVjaG8gbGluZSAzCgkyCWVjaG8gbGluZSAyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3Qtci0yCmRlc2NyaXB0aW9uOgoJSWYgZmlyc3QgaXMgbmV3ZXIgdGhhbiBsYXN0LCAtciBpcyBpbXBsaWVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCA0IDIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTQJZWNobyBsaW5lIDQKCTMJZWNobyBsaW5lIDMKCTIJZWNobyBsaW5lIDIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTMKZGVzY3JpcHRpb246CglJZiBmaXJzdCBpcyBuZXdlciB0aGFuIGxhc3QsIC1yIGlzIGNhbmNlbGxlZC4KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gbGluZSAxCgllY2hvIGxpbmUgMgoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CgllY2hvIGxpbmUgNQoJZmMgLWwgLXIgNCAyCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJbGluZSA1CgkyCWVjaG8gbGluZSAyCgkzCWVjaG8gbGluZSAzCgk0CWVjaG8gbGluZSA0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTEKZGVzY3JpcHRpb246CglCYXNpYyBzdWJzdGl0dXRpb24KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gYWJjIGRlZgoJZWNobyBnaGkgamtsCglmYyAtZSAtIGFiYz1BQiAnZWNobyBhJwpleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglnaGkgamtsCglBQiBkZWYKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBBQiBkZWZcblgqJC8KLS0tCm5hbWU6IGhpc3Rvcnktc3Vic3QtMgpkZXNjcmlwdGlvbjoKCURvZXMgc3Vic3QgZmluZCBwcmV2aW91cyBjb21tYW5kPwpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gamtsPVhZWlFSVCAnZWNobyBnJwpleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglnaGkgamtsCglnaGkgWFlaUVJUCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gZ2hpIFhZWlFSVFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC0zCmRlc2NyaXB0aW9uOgoJRG9lcyBzdWJzdCBmaW5kIHByZXZpb3VzIGNvbW1hbmQgd2hlbiBubyBhcmd1bWVudHMgZ2l2ZW4KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gYWJjIGRlZgoJZWNobyBnaGkgamtsCglmYyAtZSAtIGprbD1YWVpRUlQKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJZ2hpIGprbAoJZ2hpIFhZWlFSVApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIGdoaSBYWVpRUlRcblgqJC8KLS0tCm5hbWU6IGhpc3Rvcnktc3Vic3QtNApkZXNjcmlwdGlvbjoKCUdsb2JhbCBzdWJzdGl0dXRpb25zIHdvcmsKCShrc2g4OCBhbmQga3NoOTMgZG8gbm90IGhhdmUgLWcgb3B0aW9uKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmIGFzamogc2Fkamhhc2RqaCBhc2RqaGFzZAoJZmMgLWUgLSAtZyBhPUZvb0JBUgpleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmIGFzamogc2Fkamhhc2RqaCBhc2RqaGFzZAoJRm9vQkFSYmMgZGVmIEZvb0JBUnNqaiBzRm9vQkFSZGpoRm9vQkFSc2RqaCBGb29CQVJzZGpoRm9vQkFSc2QKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBGb29CQVJiYyBkZWYgRm9vQkFSc2pqIHNGb29CQVJkamhGb29CQVJzZGpoIEZvb0JBUnNkamhGb29CQVJzZFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC01CmRlc2NyaXB0aW9uOgoJTWFrZSBzdXJlIHNlYXJjaGVzIGRvbid0IGZpbmQgY3VycmVudCAoZmMpIGNvbW1hbmQKCShrc2g4OC9rc2g5MyBkb24ndCBoYXZlIHRoZSA/IHByZWZpeCB0aGluZyBzbyB0aGV5IGZhaWwgdGhpcyB0ZXN0KQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gYWJjPUFCIFw/YWJjCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCUFCIGRlZgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEFCIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0xLW9sZApkZXNjcmlwdGlvbjoKCUJhc2ljIChlZCkgZWRpdGluZyB3b3JrcyAoYXNzdW1lcyB5b3UgaGF2ZSBnZW5lcmljIGVkIGVkaXRvcgoJdGhhdCBwcmludHMgbm8gcHJvbXB0cykuIFRoaXMgaXMgZm9yIG9sZGlzaCBlZCgxKSB3aGljaCB3cml0ZQoJdGhlIGNoYXJhY3RlciBjb3VudCB0byBzdGRvdXQuCmNhdGVnb3J5OiBzdGRvdXQtZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCglmYyBlY2hvCglzL2FiYy9GT09CQVIvCgl3CglxCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCTEzCgkxNgoJRk9PQkFSIGRlZgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEZPT0JBUiBkZWZcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMi1vbGQKZGVzY3JpcHRpb246CglDb3JyZWN0IGNvbW1hbmQgaXMgZWRpdGVkIHdoZW4gbnVtYmVyIGdpdmVuCmNhdGVnb3J5OiBzdGRvdXQtZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyIGlzIGhlcmUKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgMgoJcy9pcyBoZXJlL2lzIGNoYW5nZWQvCgl3CglxCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyIGlzIGhlcmUKCWxpbmUgMwoJbGluZSA0CgkyMAoJMjMKCWxpbmUgMiBpcyBjaGFuZ2VkCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gbGluZSAyIGlzIGNoYW5nZWRcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMy1vbGQKZGVzY3JpcHRpb246CglOZXdseSBjcmVhdGVkIG11bHRpIGxpbmUgY29tbWFuZHMgc2hvdyB1cCBhcyBzaW5nbGUgY29tbWFuZAoJaW4gaGlzdG9yeS4KCShrc2g4OCBmYWlscyAnY2F1c2UgaXQgbGlzdHMgdGhlIGZjIGNvbW1hbmQpCmNhdGVnb3J5OiBzdGRvdXQtZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCglmYyBlY2hvCglzL2FiYy9GT09CQVIvCgkkYQoJZWNobyBhIG5ldyBsaW5lCgkuCgl3CglxCglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCgkxMwoJMzIKCUZPT0JBUiBkZWYKCWEgbmV3IGxpbmUKCTEJZWNobyBhYmMgZGVmCgkyCWVjaG8gRk9PQkFSIGRlZgoJCWVjaG8gYSBuZXcgbGluZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEZPT0JBUiBkZWZcbmVjaG8gYSBuZXcgbGluZVxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0xCmRlc2NyaXB0aW9uOgoJQmFzaWMgKGVkKSBlZGl0aW5nIHdvcmtzIChhc3N1bWVzIHlvdSBoYXZlIGdlbmVyaWMgZWQgZWRpdG9yCgl0aGF0IHByaW50cyBubyBwcm9tcHRzKS4gVGhpcyBpcyBmb3IgbmV3aXNoIGVkKDEpIGFuZCBzdGRlcnIuCmNhdGVnb3J5OiAhbm8tc3RkZXJyLWVkCm5lZWQtY3R0eTogeWVzCm5lZWQtcGFzczogbm8KYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gYWJjIGRlZgoJZmMgZWNobwoJcy9hYmMvRk9PQkFSLwoJdwoJcQpleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglGT09CQVIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKjEzXG4xNlxuZWNobyBGT09CQVIgZGVmXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTIKZGVzY3JpcHRpb246CglDb3JyZWN0IGNvbW1hbmQgaXMgZWRpdGVkIHdoZW4gbnVtYmVyIGdpdmVuCmNhdGVnb3J5OiAhbm8tc3RkZXJyLWVkCm5lZWQtY3R0eTogeWVzCm5lZWQtcGFzczogbm8KYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gbGluZSAxCgllY2hvIGxpbmUgMiBpcyBoZXJlCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWZjIDIKCXMvaXMgaGVyZS9pcyBjaGFuZ2VkLwoJdwoJcQpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMiBpcyBoZXJlCglsaW5lIDMKCWxpbmUgNAoJbGluZSAyIGlzIGNoYW5nZWQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqMjBcbjIzXG5lY2hvIGxpbmUgMiBpcyBjaGFuZ2VkXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTMKZGVzY3JpcHRpb246CglOZXdseSBjcmVhdGVkIG11bHRpIGxpbmUgY29tbWFuZHMgc2hvdyB1cCBhcyBzaW5nbGUgY29tbWFuZAoJaW4gaGlzdG9yeS4KY2F0ZWdvcnk6ICFuby1zdGRlcnItZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCglmYyBlY2hvCglzL2FiYy9GT09CQVIvCgkkYQoJZWNobyBhIG5ldyBsaW5lCgkuCgl3CglxCglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglGT09CQVIgZGVmCglhIG5ldyBsaW5lCgkxCWVjaG8gYWJjIGRlZgoJMgllY2hvIEZPT0JBUiBkZWYKCQllY2hvIGEgbmV3IGxpbmUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqMTNcbjMyXG5lY2hvIEZPT0JBUiBkZWZcbmVjaG8gYSBuZXcgbGluZVxuWCokLwotLS0KbmFtZTogSUZTLXNwYWNlLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgZGVmYXVsdCBJRlMKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2V0IC0tIEEgQiBDCglzaG93YXJncyAxICQqCglzaG93YXJncyAyICIkKiIKCXNob3dhcmdzIDMgJEAKCXNob3dhcmdzIDQgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gPEE+IDxCPiA8Qz4gLgoJPDI+IDxBIEIgQz4gLgoJPDM+IDxBPiA8Qj4gPEM+IC4KCTw0PiA8QT4gPEI+IDxDPiAuCi0tLQpuYW1lOiBJRlMtY29sb24tMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9OgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9OgoJc2V0IC0tIEEgQiBDCglzaG93YXJncyAxICQqCglzaG93YXJncyAyICIkKiIKCXNob3dhcmdzIDMgJEAKCXNob3dhcmdzIDQgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gPEE+IDxCPiA8Qz4gLgoJPDI+IDxBOkI6Qz4gLgoJPDM+IDxBPiA8Qj4gPEM+IC4KCTw0PiA8QT4gPEI+IDxDPiAuCi0tLQpuYW1lOiBJRlMtbnVsbC0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz0iIgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IiIKCXNldCAtLSBBIEIgQwoJc2hvd2FyZ3MgMSAkKgoJc2hvd2FyZ3MgMiAiJCoiCglzaG93YXJncyAzICRACglzaG93YXJncyA0ICIkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDxBPiA8Qj4gPEM+IC4KCTwyPiA8QUJDPiAuCgk8Mz4gPEE+IDxCPiA8Qz4gLgoJPDQ+IDxBPiA8Qj4gPEM+IC4KLS0tCm5hbWU6IElGUy1zcGFjZS1jb2xvbi0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz08d2hpdGUtc3BhY2U+OgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IiRJRlM6IgoJc2V0IC0tCglzaG93YXJncyAxICQqCglzaG93YXJncyAyICIkKiIKCXNob3dhcmdzIDMgJEAKCXNob3dhcmdzIDQgIiRAIgoJc2hvd2FyZ3MgNSA6ICIkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IC4KCTwyPiA8PiAuCgk8Mz4gLgoJPDQ+IC4KCTw1PiA8Oj4gLgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTIKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CglBVCZUIGtzaCBmYWlscyB0aGlzLCBQT1NJWCBzYXlzIHRoZSB0ZXN0IGlzIGNvcnJlY3QuCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iJElGUzoiCglzZXQgLS0KCXNob3dhcmdzIDoiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCTw6PiAuCi0tLQpuYW1lOiBJRlMtc3BhY2UtY29sb24tNApkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9PHdoaXRlLXNwYWNlPjoKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPSIkSUZTOiIKCXNldCAtLQoJc2hvd2FyZ3MgIiRAJEAiCmV4cGVjdGVkLXN0ZG91dDoKCS4KLS0tCm5hbWU6IElGUy1zcGFjZS1jb2xvbi01CmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz08d2hpdGUtc3BhY2U+OgoJRG9uJ3Qga25vdyB3aGF0IFBPU0lYIHRoaW5rcyBvZiB0aGlzLiAgQVQmVCBrc2ggZG9lcyBub3QgZG8gdGhpcy4Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPSIkSUZTOiIKCXNldCAtLQoJc2hvd2FyZ3MgIiR7QDotfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJPD4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iJElGUzoiCgl4PSI6YjogOiIKCWVjaG8gLW4gJzE6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJZWNobyAtbiAnMjonOyBmb3IgaSBpbiA6Yjo6IDsgZG8gZWNobyAtbiAiIFskaV0iIDsgZG9uZSA7IGVjaG8KCXNob3dhcmdzIDMgJHgKCXNob3dhcmdzIDQgOmI6OgoJeD0iYTpiOiIKCWVjaG8gLW4gJzU6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgNiAkeAoJeD0iYTo6YyIKCWVjaG8gLW4gJzc6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgOCAkeAoJZWNobyAtbiAnOTonOyBmb3IgaSBpbiAke0ZPTy1gZWNobyAtbiBoOmlgdGg6ZXJlfSA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCglzaG93YXJncyAxMCAke0ZPTy1gZWNobyAtbiBoOmlgdGg6ZXJlfQoJc2hvd2FyZ3MgMTEgIiR7Rk9PLWBlY2hvIC1uIGg6aWB0aDplcmV9IgoJeD0iIEEgOiAgQjo6RCIKCWVjaG8gLW4gJzEyOic7IGZvciBpIGluICR4IDsgZG8gZWNobyAtbiAiIFskaV0iIDsgZG9uZSA7IGVjaG8KCXNob3dhcmdzIDEzICR4CmV4cGVjdGVkLXN0ZG91dDoKCTE6IFtdIFtiXSBbXQoJMjogWzpiOjpdCgk8Mz4gPD4gPGI+IDw+IC4KCTw0PiA8OmI6Oj4gLgoJNTogW2FdIFtiXQoJPDY+IDxhPiA8Yj4gLgoJNzogW2FdIFtdIFtjXQoJPDg+IDxhPiA8PiA8Yz4gLgoJOTogW2hdIFtpdGhdIFtlcmVdCgk8MTA+IDxoPiA8aXRoPiA8ZXJlPiAuCgk8MTE+IDxoOml0aDplcmU+IC4KCTEyOiBbQV0gW0JdIFtdIFtEXQoJPDEzPiA8QT4gPEI+IDw+IDxEPiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGxlYWRpbmcgd2hpdGVzcGFjZSBhZnRlciB0cmltIGRvZXMgbm90IG1ha2UgYSBmaWVsZApzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9Cgl4PSJYIDEgMiIKCXNob3dhcmdzIDEgc2hpZnQgJHt4I1h9CmV4cGVjdGVkLXN0ZG91dDoKCTwxPiA8c2hpZnQ+IDwxPiA8Mj4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTMtYXJyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbGVhZGluZyBJRlMgbm9uLXdoaXRlc3BhY2UgYWZ0ZXIgdHJpbSBkb2VzIG1ha2UgYSBmaWVsZAoJYnV0IGxlYWRpbmcgSUZTIHdoaXRlc3BhY2UgZG9lcyBub3QsIG5vciBlbXB0eSByZXBsYWNlbWVudHMKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2hvd2FyZ3MgMCAkey0rfQoJSUZTPToKCXNob3dhcmdzIDEgJHstKzpmb286YmFyfQoJSUZTPScgJwoJc2hvd2FyZ3MgMiAkey0rIGZvbyBiYXJ9CmV4cGVjdGVkLXN0ZG91dDoKCTwwPiAuCgk8MT4gPD4gPGZvbz4gPGJhcj4gLgoJPDI+IDxmb28+IDxiYXI+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0zLWFzcwpkZXNjcmlwdGlvbjoKCUNoZWNrIG5vbi1maWVsZCBzZW1hbnRpY3MKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2hvd2FyZ3MgMCB4PSR7LSt9CglJRlM9OgoJc2hvd2FyZ3MgMSB4PSR7LSs6Zm9vOmJhcn0KCUlGUz0nICcKCXNob3dhcmdzIDIgeD0key0rIGZvbyBiYXJ9CmV4cGVjdGVkLXN0ZG91dDoKCTwwPiA8eD0+IC4KCTwxPiA8eD0+IDxmb28+IDxiYXI+IC4KCTwyPiA8eD0+IDxmb28+IDxiYXI+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0zLWxjbApkZXNjcmlwdGlvbjoKCUNoZWNrIG5vbi1maWVsZCBzZW1hbnRpY3MsIHNtYWxsZXIgY29ybmVyIGNhc2UgKExQIzEzODE5NjUpCnN0ZGluOgoJc2V0IC14Cglsb2NhbCByZWdleD0kezI6LX0KCWV4aXQgMQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVnZXg9LwotLS0KbmFtZTogSUZTLXN1YnN0LTQtMQpkZXNjcmlwdGlvbjoKCXJlcG9ydGVkIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cICA7IHNldCAtLSAkYQoJSUZTPSA7IHE9IiQqIiA7IG5xPSQqCglwZm4gIiQqIiAkKiAiJHEiICIkbnEiCglbICIkcSIgPSAiJG5xIiBdICYmIGVjaG8gPXRydWUgfHwgZWNobyA9ZmFsc2UKZXhwZWN0ZWQtc3Rkb3V0OgoJPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT10cnVlCi0tLQpuYW1lOiBJRlMtc3Vic3QtNC0yCmRlc2NyaXB0aW9uOgoJZXh0ZW5kZWQgdGVzdHN1aXRlIGJhc2VkIG9uIHByb2JsZW0gYnkgbWlrZXNlcnYKc3RkaW46CglwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9CglhPSdzcGFjZSBkaXZkZWQgIGFyZ3VtZW50CgloZXJlJwoJSUZTPVwgIDsgc2V0IC0tICRhCglJRlM9IDsgcT0iJEAiIDsgbnE9JEAKCXBmbiAiJCoiICQqICIkcSIgIiRucSIKCVsgIiRxIiA9ICIkbnEiIF0gJiYgZWNobyA9dHJ1ZSB8fCBlY2hvID1mYWxzZQpleHBlY3RlZC1zdGRvdXQ6Cgk8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCTxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJPHNwYWNlIGRpdmRlZCBhcmd1bWVudAoJaGVyZT4KCT10cnVlCi0tLQpuYW1lOiBJRlMtc3Vic3QtNC0zCmRlc2NyaXB0aW9uOgoJZXh0ZW5kZWQgdGVzdHN1aXRlIGJhc2VkIG9uIHByb2JsZW0gYnkgbWlrZXNlcnYKc3RkaW46CglwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9CglhPSdzcGFjZSBkaXZkZWQgIGFyZ3VtZW50CgloZXJlJwoJSUZTPVwgOyBzZXQgLS0gJGE7IElGUz0KCXFzPSIkKiIKCW5xcz0kKgoJcWs9IiRAIgoJbnFrPSRACglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJz1ucXMgJzsgcGZuICIkbnFzIgoJcHJpbnQgLW5yIC0tICc9IHFrICc7IHBmbiAiJHFrIgoJcHJpbnQgLW5yIC0tICc9bnFrICc7IHBmbiAiJG5xayIKCXByaW50IC1uciAtLSAnfiBxcyAnOyBwZm4gIiQqIgoJcHJpbnQgLW5yIC0tICd+bnFzICc7IHBmbiAkKgoJcHJpbnQgLW5yIC0tICd+IHFrICc7IHBmbiAiJEAiCglwcmludCAtbnIgLS0gJ35ucWsgJzsgcGZuICRACmV4cGVjdGVkLXN0ZG91dDoKCT0gcXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk9bnFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJPSBxayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJPW5xayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCX5ucXMgPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KCX4gcWsgPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KCX5ucWsgPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KLS0tCm5hbWU6IElGUy1zdWJzdC00LTQKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCA7IHNldCAtLSAkYTsgSUZTPQoJcXM9IiQqIgoJcHJpbnQgLW5yIC0tICc9IHFzICc7IHBmbiAiJHFzIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAiJCoiCglucXM9JCoKCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICQqCglxaz0iJEAiCglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICIkQCIKCW5xaz0kQAoJcHJpbnQgLW5yIC0tICc9bnFrICc7IHBmbiAiJG5xayIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJEAKZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCX4gcXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk9bnFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPSBxayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPW5xayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTQtNHAKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCA7IHNldCAtLSAkYTsgSUZTPQoJdW5zZXQgdgoJcXM9JHt2Oi0iJCoifQoJcHJpbnQgLW5yIC0tICc9IHFzICc7IHBmbiAiJHFzIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAke3Y6LSIkKiJ9CglucXM9JHt2Oi0kKn0KCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICR7djotJCp9Cglxaz0ke3Y6LSIkQCJ9CglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICR7djotIiRAIn0KCW5xaz0ke3Y6LSRAfQoJcHJpbnQgLW5yIC0tICc9bnFrICc7IHBmbiAiJG5xayIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJHt2Oi0kQH0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCX4gcXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk9bnFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPSBxayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPW5xayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTQtNQpkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9LAoJcXM9IiQqIgoJcHJpbnQgLW5yIC0tICc9IHFzICc7IHBmbiAiJHFzIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAiJCoiCglucXM9JCoKCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICQqCglxaz0iJEAiCglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICIkQCIKCW5xaz0kQAoJcHJpbnQgLW5yIC0tICc9bnFrICc7IHBmbiAiJG5xayIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJEAKZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJPW5xcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPSBxayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPW5xayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTQtNXAKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCA7IHNldCAtLSAkYTsgSUZTPSwKCXVuc2V0IHYKCXFzPSR7djotIiQqIn0KCXByaW50IC1uciAtLSAnPSBxcyAnOyBwZm4gIiRxcyIKCXByaW50IC1uciAtLSAnfiBxcyAnOyBwZm4gJHt2Oi0iJCoifQoJbnFzPSR7djotJCp9CglwcmludCAtbnIgLS0gJz1ucXMgJzsgcGZuICIkbnFzIgoJcHJpbnQgLW5yIC0tICd+bnFzICc7IHBmbiAke3Y6LSQqfQoJcWs9JHt2Oi0iJEAifQoJcHJpbnQgLW5yIC0tICc9IHFrICc7IHBmbiAiJHFrIgoJcHJpbnQgLW5yIC0tICd+IHFrICc7IHBmbiAke3Y6LSIkQCJ9CglucWs9JHt2Oi0kQH0KCXByaW50IC1uciAtLSAnPW5xayAnOyBwZm4gIiRucWsiCglwcmludCAtbnIgLS0gJ35ucWsgJzsgcGZuICR7djotJEB9CmV4cGVjdGVkLXN0ZG91dDoKCT0gcXMgPHNwYWNlLGRpdmRlZCxhcmd1bWVudAoJaGVyZT4KCX4gcXMgPHNwYWNlLGRpdmRlZCxhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlLGRpdmRlZCxhcmd1bWVudAoJaGVyZT4KCX5ucXMgPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KCT0gcWsgPHNwYWNlIGRpdmRlZCBhcmd1bWVudAoJaGVyZT4KCX4gcWsgPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KCT1ucWsgPHNwYWNlIGRpdmRlZCBhcmd1bWVudAoJaGVyZT4KCX5ucWsgPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KLS0tCm5hbWU6IElGUy1zdWJzdC01CmRlc2NyaXB0aW9uOgoJZXh0ZW5kZWQgdGVzdHN1aXRlIGJhc2VkIG9uIElGUy1zdWJzdC0zCglkaWZmZXJzIHNsaWdodGx5IGZyb20ga3NoOTM6CgktIG9taXQgdHJhaWxpbmcgZmllbGQgaW4gYTN6bmEsIGE3aW5hICh1bnF1b3RlZCAkQCBleHBhbnNpb24pCgktIGhhcyBleHRyYSBtaWRkbGUgZmllbGRzIGluIGI1aW5zLCBiN2luYSAoSUZTX05XUyB1bnF1b3RlZCBleHBhbnNpb24pCglkaWZmZXJzIHNsaWdodGx5IGZyb20gYmFzaDoKCS0gb21pdCBsZWFkaW5nIGZpZWxkIGluIGE1aW5zLCBhN2luYSAoSUZTX05XUyB1bnF1b3RlZCBleHBhbnNpb24pCglkaWZmZXJzIHNsaWdodGx5IGZyb20genNoOgoJLSBkaWZmZXJzIGluIGFzc2lnbm1lbnQsIG5vdCBleHBhbnNpb247IHByb2JhYmx5IHpzaCBidWcKCS0gaGFzIGV4dHJhIG1pZGRsZSBmaWVsZHMgaW4gYjVpbnMsIGI3aW5hIChJRlNfTldTIHVucXVvdGVkIGV4cGFuc2lvbikKCSdlbXVsYXRlIHNoJyB6c2ggaGFzIGV4dHJhIGZpZWxkcyBpbgoJLSBhNWlucyAoSUZTX05XUyB1bnF1b3RlZCAkKikKCS0gYjVpbnMsIG1hdGNoaW5nIG1rc2jigJlzCgkhIVdBUk5JTkchISBtb3JlIHRvIGNvbWU6IGh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTg4OApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tICIiIDIgIiI7IHBmYiAkKjsgeD0kKjsgcGZuICIkeCInCgllY2hvICc9YTF6bnMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz07IHNldCAtLSAiIiAyICIiOyBwZmIgIiQqIjsgeD0iJCoiOyBwZm4gIiR4IicKCWVjaG8gJz1hMnpxcycKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tICIiIDIgIiI7IHBmYiAkQDsgeD0kQDsgcGZuICIkeCInCgllY2hvICc9YTN6bmEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz07IHNldCAtLSAiIiAyICIiOyBwZmIgIiRAIjsgeD0iJEAiOyBwZm4gIiR4IicKCWVjaG8gJz1hNHpxYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPSw7IHNldCAtLSAiIiAyICIiOyBwZmIgJCo7IHg9JCo7IHBmbiAiJHgiJwoJZWNobyAnPWE1aW5zJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tICIiIDIgIiI7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWE2aXFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tICIiIDIgIiI7IHBmYiAkQDsgeD0kQDsgcGZuICIkeCInCgllY2hvICc9YTdpbmEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gIiIgMiAiIjsgcGZiICIkQCI7IHg9IiRAIjsgcGZuICIkeCInCgllY2hvICc9YThpcWEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz07IHNldCAtLSBBIEIgIiIgIiIgQzsgcGZiICQqOyB4PSQqOyBwZm4gIiR4IicKCWVjaG8gJz1iMXpucycKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgIiQqIjsgeD0iJCoiOyBwZm4gIiR4IicKCWVjaG8gJz1iMnpxcycKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgJEA7IHg9JEA7IHBmbiAiJHgiJwoJZWNobyAnPWIzem5hJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAiJEAiOyB4PSIkQCI7IHBmbiAiJHgiJwoJZWNobyAnPWI0enFhJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgJCo7IHg9JCo7IHBmbiAiJHgiJwoJZWNobyAnPWI1aW5zJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgIiQqIjsgeD0iJCoiOyBwZm4gIiR4IicKCWVjaG8gJz1iNmlxcycKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPSw7IHNldCAtLSBBIEIgIiIgIiIgQzsgcGZiICRAOyB4PSRAOyBwZm4gIiR4IicKCWVjaG8gJz1iN2luYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPSw7IHNldCAtLSBBIEIgIiIgIiIgQzsgcGZiICIkQCI7IHg9IiRAIjsgcGZuICIkeCInCgllY2hvICc9YjhpcWEnCmV4cGVjdGVkLXN0ZG91dDoKCVsyXQoJPDI+Cgk9YTF6bnMKCVsyXQoJPDI+Cgk9YTJ6cXMKCVsyXQoJPCAyID4KCT1hM3puYQoJW10KCVsyXQoJW10KCTwgMiA+Cgk9YTR6cWEKCVsyXQoJPCwyLD4KCT1hNWlucwoJWywyLF0KCTwsMiw+Cgk9YTZpcXMKCVsyXQoJPCAyID4KCT1hN2luYQoJW10KCVsyXQoJW10KCTwgMiA+Cgk9YThpcWEKCVtBXQoJW0JdCglbQ10KCTxBQkM+Cgk9YjF6bnMKCVtBQkNdCgk8QUJDPgoJPWIyenFzCglbQV0KCVtCXQoJW0NdCgk8QSBCICAgQz4KCT1iM3puYQoJW0FdCglbQl0KCVtdCglbXQoJW0NdCgk8QSBCICAgQz4KCT1iNHpxYQoJW0FdCglbQl0KCVtdCglbXQoJW0NdCgk8QSxCLCwsQz4KCT1iNWlucwoJW0EsQiwsLENdCgk8QSxCLCwsQz4KCT1iNmlxcwoJW0FdCglbQl0KCVtdCglbXQoJW0NdCgk8QSBCICAgQz4KCT1iN2luYQoJW0FdCglbQl0KCVtdCglbXQoJW0NdCgk8QSBCICAgQz4KCT1iOGlxYQotLS0KbmFtZTogSUZTLXN1YnN0LTYKZGVzY3JpcHRpb246CglSZWdyZXNzaW9uIHdydC4gdmVjdG9yIGV4cGFuc2lvbiBpbiB0cmltCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0KCXg9YWJjCglzZXQgLS0gYSBiCglzaG93YXJncyAke3gjJCp9CmV4cGVjdGVkLXN0ZG91dDoKCTxjPiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtNwpkZXNjcmlwdGlvbjoKCWtzaDkzIGJ1ZyB3cnQuIHZlY3RvciBleHBhbnNpb24gaW4gdHJpbQpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IioiCglhPWFiY2QKCXNldCAtLSAnJyBjCglzaG93YXJncyAiJCoiICR7YSMjIiQqIn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPCpjPiA8YWJjZD4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTgKZGVzY3JpcHRpb246CglodHRwOi8vYXVzdGluZ3JvdXBidWdzLm5ldC92aWV3LnBocD9pZD0yMjEKc3RkaW46CgluKCkgeyBlY2hvICIkIyI7IH07IG4gIiR7Zm9vLSRAfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJMQotLS0KbmFtZTogSUZTLXN1YnN0LTkKZGVzY3JpcHRpb246CglTY2FsYXIgY29udGV4dCBmb3IgJCovJEAgaW4gW1sgYW5kIGNhc2UKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBzZXQgYSBiOyBbWyAkKiA9ICIkMSQyIiBdXTsgZWNobyAxICQ/JyBzaCBhIGIKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IFtbICQqID0gYWIgXV07IGVjaG8gMiAiJD8iJyBzaCBhIGIKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IFtbICIkKiIgPSBhYiBdXTsgZWNobyAzICIkPyInIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgW1sgJCogPSBhIF1dOyBlY2hvIDQgIiQ/Iicgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBbWyAiJCoiID0gYSBdXTsgZWNobyA1ICIkPyInIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgW1sgIiRAIiA9IGEgXV07IGVjaG8gNiAiJD8iJyBzaCBhIGIKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IGNhc2UgIiRAIiBpbiBhKSBlY2hvIDcgYTs7IGFiKSBlY2hvIDcgYjs7IGFcIGIpIGVjaG8gNyBvazs7IGVzYWMnIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgY2FzZSAkKiBpbiBhKSBlY2hvIDggYTs7IGFiKSBlY2hvIDggb2s7OyBlc2FjJyBzaCBhIGIKCSIkX19wcm9nbmFtZSIgLWMgJ3Bmc3AoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIjwkc19hcmc+ICI7IGRvbmU7IHByaW50IC47IH07IElGUz07IHN0YXI9JCogYXQ9IiRAIjsgcGZzcCA5ICIkc3RhciIgIiRhdCInIHNoIGEgYgpleHBlY3RlZC1zdGRvdXQ6CgkxIDAKCTIgMAoJMyAwCgk0IDEKCTUgMQoJNiAxCgk3IG9rCgk4IG9rCgk8OT4gPGFiPiA8YSBiPiAuCi0tLQpuYW1lOiBJRlMtYXJpdGgtMQpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTgzMgpzdGRpbjoKCSR7WlNIX1ZFUlNJT04rZmFsc2V9IHx8IGVtdWxhdGUgc2gKCSR7QkFTSF9WRVJTSU9OK3NldCAtbyBwb3NpeH0KCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9MAoJc2hvd2FyZ3MgJCgoMTIzMDQ1NikpCmV4cGVjdGVkLXN0ZG91dDoKCTwxMjM+IDw0NTY+IC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1lcnItMQpkZXNjcmlwdGlvbjoKCUNhbid0IGhhdmUgMCBiYXNlIChjYXVzZXMgc2hlbGwgdG8gZXhpdCkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCnN0ZGluOgoJdHlwZXNldCAtaSBpCglpPTMKCWk9MCM0CgllY2hvICRpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL14uKjouKjAjNC4qXG4kLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLWVyci0yCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgaGF2ZSBtdWx0aXBsZSBiYXNlcyBpbiBhICdjb25zdGFudCcgKGNhdXNlcyBzaGVsbCB0byBleGl0KQoJKGtzaDg4IGZhaWxzIHRoaXMgdGVzdCkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCnN0ZGluOgoJdHlwZXNldCAtaSBpCglpPTMKCWk9MiMxMTAjMTEKCWVjaG8gJGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXi4qOi4qMiMxMTAjMTEuKlxuJC8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1lcnItMwpkZXNjcmlwdGlvbjoKCVN5bnRheCBlcnJvcnMgaW4gZXhwcmVzc2lvbnMgYW5kIGVmZmVjdHMgb24gYmFzZXMKCShpbnRlcmFjdGl2ZSBzbyBlcnJvcnMgZG9uJ3QgY2F1c2UgZXhpdHMpCgkoa3NoODggZmFpbHMgdGhpcyB0ZXN0IC0gc2hlbGwgZXhpdHMsIGV2ZW4gd2l0aCAtaSkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJUFMxPSAjIG1pbmltaXNlIHByb21wdCBoYXNzbGVzCgl0eXBlc2V0IC1pNCBhPTEwCgl0eXBlc2V0IC1pIGE9MisKCWVjaG8gJGEKCXR5cGVzZXQgLWk0IGE9MTAKCXR5cGVzZXQgLWkyIGE9MisKCWVjaG8gJGEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXihbI1wkXSApPy4qOi4qMisuKlxuLio6LioyKy4qXG4kLwpleHBlY3RlZC1zdGRvdXQ6Cgk0IzIyCgk0IzIyCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtZXJyLTQKZGVzY3JpcHRpb246CglBcmUgaW52YWxpZCBkaWdpdHMgKGFjY29yZGluZyB0byBiYXNlKSBlcnJvcnM/Cgkoa3NoOTMgZmFpbHMgdGhpcyB0ZXN0KQpleHBlY3RlZC1leGl0OiBlICE9IDAKc3RkaW46Cgl0eXBlc2V0IC1pIGk7CglpPTMjNApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eKFsjXCRdICk/Lio6LiozIzQuKlxuJC8KLS0tCm5hbWU6IGludGVnZXItYmFzZS0xCmRlc2NyaXB0aW9uOgoJTWlzc2luZyBudW1iZXIgYWZ0ZXIgYmFzZSBpcyB0cmVhdGVkIGFzIDAuCnN0ZGluOgoJdHlwZXNldCAtaSBpCglpPTMKCWk9MiMKCWVjaG8gJGkKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLTIKZGVzY3JpcHRpb246CglDaGVjayAnc3RpY2t5bmVzcycgb2YgYmFzZSBpbiB2YXJpb3VzIHNpdHVhdGlvbnMKc3RkaW46Cgl0eXBlc2V0IC1pIGk9OAoJZWNobyAkaQoJZWNobyAtLS0tLS0tLS0tIEEKCXR5cGVzZXQgLWk0IGo9OAoJZWNobyAkagoJZWNobyAtLS0tLS0tLS0tIEIKCXR5cGVzZXQgLWkgaz04Cgl0eXBlc2V0IC1pNCBrPTgKCWVjaG8gJGsKCWVjaG8gLS0tLS0tLS0tLSBDCgl0eXBlc2V0IC1pNCBsCglsPTMjMTAKCWVjaG8gJGwKCWVjaG8gLS0tLS0tLS0tLSBECgl0eXBlc2V0IC1pIG0KCW09MyMxMAoJZWNobyAkbQoJZWNobyAtLS0tLS0tLS0tIEUKCW49MiMxMQoJdHlwZXNldCAtaSBuCgllY2hvICRuCgluPTEwCgllY2hvICRuCgllY2hvIC0tLS0tLS0tLS0gRgoJdHlwZXNldCAtaTggbz0xMgoJdHlwZXNldCAtaTQgbwoJZWNobyAkbwoJZWNobyAtLS0tLS0tLS0tIEcKCXR5cGVzZXQgLWkgcAoJbGV0IHA9OCMxMgoJZWNobyAkcApleHBlY3RlZC1zdGRvdXQ6Cgk4CgktLS0tLS0tLS0tIEEKCTQjMjAKCS0tLS0tLS0tLS0gQgoJNCMyMAoJLS0tLS0tLS0tLSBDCgk0IzMKCS0tLS0tLS0tLS0gRAoJMyMxMAoJLS0tLS0tLS0tLSBFCgkyIzExCgkyIzEwMTAKCS0tLS0tLS0tLS0gRgoJNCMzMAoJLS0tLS0tLS0tLSBHCgk4IzEyCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtMwpkZXNjcmlwdGlvbjoKCU1vcmUgYmFzZSBwYXJzaW5nIChobW0gZG9lc24ndCB0ZXN0IG11Y2guLikKc3RkaW46Cgl0eXBlc2V0IC1pIGFhCglhYT0xKzEyIzEwKzIKCWVjaG8gJGFhCgl0eXBlc2V0IC1pIGJiCgliYj0xKyRhYQoJZWNobyAkYmIKCXR5cGVzZXQgLWkgYmIKCWJiPSRhYQoJZWNobyAkYmIKCXR5cGVzZXQgLWkgY2MKCWNjPSRhYQoJZWNobyAkY2MKZXhwZWN0ZWQtc3Rkb3V0OgoJMTUKCTE2CgkxNQoJMTUKLS0tCm5hbWU6IGludGVnZXItYmFzZS00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGluZ3Mgbm90IGRlY2xhcmVkIGFzIGludGVnZXJzIGFyZSBub3QgbWFkZSBpbnRlZ2VycywKCWFsc28sIGNoZWNrIGlmIGJhc2UgaXMgbm90IHJlc2V0IGJ5IC1pIHdpdGggbm8gYXJndW1lbnRzLgoJKGtzaDkzIGZhaWxzIC0gcHJpbnRzIDEwIzIwIC0gZ28gZmlndXJlKQpzdGRpbjoKCXh4PTIwCglsZXQgeHg9MTAKCXR5cGVzZXQgLWkgfCBncmVwICdeeHg9JwoJdHlwZXNldCAtaTQgYT0xMAoJdHlwZXNldCAtaSBhPTIwCgllY2hvICRhCmV4cGVjdGVkLXN0ZG91dDoKCTQjMTEwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtNQpkZXNjcmlwdGlvbjoKCU1vcmUgYmFzZSBzdHVmZgpzdGRpbjoKCXR5cGVzZXQgLWk0IGE9MyMxMAoJZWNobyAkYQoJZWNobyAtLQoJdHlwZXNldCAtaSBqPTMKCWo9J34zJwoJZWNobyAkagoJZWNobyAtLQoJdHlwZXNldCAtaSBrPTEKCXhbaz1rKzFdPTMKCWVjaG8gJGsKCWVjaG8gLS0KCXR5cGVzZXQgLWkgbAoJZm9yIGwgaW4gMSAyKzMgNDsgZG8gZWNobyAkbDsgZG9uZQpleHBlY3RlZC1zdGRvdXQ6Cgk0IzMKCS0tCgktNAoJLS0KCTIKCS0tCgkxCgk1Cgk0Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtNgpkZXNjcmlwdGlvbjoKCUV2ZW4gbW9yZSBiYXNlIHN0dWZmCgkoa3NoOTMgZmFpbHMgdGhpcyB0ZXN0IC0gcHJpbnRzIDApCnN0ZGluOgoJdHlwZXNldCAtaTcgaQoJaT0KCWVjaG8gJGkKZXhwZWN0ZWQtc3Rkb3V0OgoJNyMwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbm9uLWludGVnZXIgcGFyYW1ldGVycyBkb24ndCBnZXQgYmFzZXMgYXNzaWduZWQKc3RkaW46CgllY2hvICQoKCB6eiA9IDgjMTAwICkpCgllY2hvICR6egpleHBlY3RlZC1zdGRvdXQ6Cgk2NAoJNjQKLS0tCm5hbWU6IGludGVnZXItYmFzZS04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBiYXNlLTM2IHdvcmtzIChmdWxsIHNwYW4pCnN0ZGluOgoJZWNobyAxOiQoKDM2IzEwOUFaKSkuCgl0eXBlc2V0IC1pMzYgeD0xNjkxNjc1CgllY2hvIDI6JHguCgl0eXBlc2V0IC1VdWkzNiB4CgllY2hvIDM6JHguCmV4cGVjdGVkLXN0ZG91dDoKCTE6MTY5MTY3NS4KCTI6MzYjMTA5YXouCgkzOjM2IzEwOUFaLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLWZsYXQKZGVzY3JpcHRpb246CglDaGVjayBiZWhhdmlvdXIgZG9lcyBub3QgbWF0Y2ggUE9TdVggKGV4Y2VwdCBpZiBzZXQgLW8gcG9zaXgpLAoJYmVjYXVzZSBhIG5vdCB0eXBlLXNhZmUgc2NyaXB0aW5nIGxhbmd1YWdlIGhhcyAqbm8qIGJ1c2luZXNzCglpbnRlcnByZXRpbmcgdGhlIHN0cmluZyAiMDEwIiBhcyBvY3RhbCBudW1lciBlaWdodCAoZGFuZ2Vyb3VzKS4Kc3RkaW46CgllY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnZWNobyA6JCgoMTApKS8kKCgwMTApKSwkKCgweDEwKSk6JykiIC4KCWVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIDokKCgxMCkpLyQoKDAxMCkpLCQoKDB4MTApKTonKSIgLgoJZWNobyAzICIkKCIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gOiQoKDEwKSkvJCgoMDEwKSksJCgoMHgxMCkpOicpIiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgOjEwLzEwLDE2OiAuCgkyIDoxMC84LDE2OiAuCgkzIDoxMC8xMCwxNjogLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLW51bWVyaWMtZnJvbQpkZXNjcmlwdGlvbjoKCUNoZWNrIGJlaGF2aW91ciBmb3IgYmFzZSBvbmUgdG8gMzYsIGFuZCB0aGF0IDM3IGRlZ3JhZGVzIHRvIDEwCnN0ZGluOgoJZWNobyAxOiQoKDEjMSkpMC4KCWk9MQoJd2hpbGUgKCggKytpIDw9IDM3ICkpOyBkbwoJCWV2YWwgJ2VjaG8gJyRpJzokKCgnJGknIzEwKSkuJwoJZG9uZQoJZWNobyAzNzokKCRfX3Byb2duYW1lIC1jICdlY2hvICQoKDM3IzEwKSknKS4kPzoKZXhwZWN0ZWQtc3Rkb3V0OgoJMTo0OTAuCgkyOjIuCgkzOjMuCgk0OjQuCgk1OjUuCgk2OjYuCgk3OjcuCgk4OjguCgk5OjkuCgkxMDoxMC4KCTExOjExLgoJMTI6MTIuCgkxMzoxMy4KCTE0OjE0LgoJMTU6MTUuCgkxNjoxNi4KCTE3OjE3LgoJMTg6MTguCgkxOToxOS4KCTIwOjIwLgoJMjE6MjEuCgkyMjoyMi4KCTIzOjIzLgoJMjQ6MjQuCgkyNToyNS4KCTI2OjI2LgoJMjc6MjcuCgkyODoyOC4KCTI5OjI5LgoJMzA6MzAuCgkzMTozMS4KCTMyOjMyLgoJMzM6MzMuCgkzNDozNC4KCTM1OjM1LgoJMzY6MzYuCgkzNzoxMC4KCTM3OjEwLjA6Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtY2hlY2stbnVtZXJpYy10bwpkZXNjcmlwdGlvbjoKCUNoZWNrIGJlaGF2aW91ciBmb3IgYmFzZSBvbmUgdG8gMzYsIGFuZCB0aGF0IDM3IGRlZ3JhZGVzIHRvIDEwCnN0ZGluOgoJaT0wCgl3aGlsZSAoKCArK2kgPD0gMzcgKSk7IGRvCgkJdHlwZXNldCAtVXVpJGkgeD0weDQwCgkJZXZhbCAidHlwZXNldCAtaTEwIHk9JHgiCgkJcHJpbnQgJGk6JHguJHkuCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTE6MSNALjY0LgoJMjoyIzEwMDAwMDAuNjQuCgkzOjMjMjEwMS42NC4KCTQ6NCMxMDAwLjY0LgoJNTo1IzIyNC42NC4KCTY6NiMxNDQuNjQuCgk3OjcjMTIxLjY0LgoJODo4IzEwMC42NC4KCTk6OSM3MS42NC4KCTEwOjY0LjY0LgoJMTE6MTEjNTkuNjQuCgkxMjoxMiM1NC42NC4KCTEzOjEzIzRDLjY0LgoJMTQ6MTQjNDguNjQuCgkxNToxNSM0NC42NC4KCTE2OjE2IzQwLjY0LgoJMTc6MTcjM0QuNjQuCgkxODoxOCMzQS42NC4KCTE5OjE5IzM3LjY0LgoJMjA6MjAjMzQuNjQuCgkyMToyMSMzMS42NC4KCTIyOjIyIzJLLjY0LgoJMjM6MjMjMkkuNjQuCgkyNDoyNCMyRy42NC4KCTI1OjI1IzJFLjY0LgoJMjY6MjYjMkMuNjQuCgkyNzoyNyMyQS42NC4KCTI4OjI4IzI4LjY0LgoJMjk6MjkjMjYuNjQuCgkzMDozMCMyNC42NC4KCTMxOjMxIzIyLjY0LgoJMzI6MzIjMjAuNjQuCgkzMzozMyMxVi42NC4KCTM0OjM0IzFVLjY0LgoJMzU6MzUjMVQuNjQuCgkzNjozNiMxUy42NC4KCTM3OjY0LjY0LgotLS0KbmFtZTogaW50ZWdlci1hcml0aG1ldGljLXNwYW4KZGVzY3JpcHRpb246CglDaGVjayB3cmFwYXJvdW5kIGFuZCBzaXplIHRoYXQgaXMgZGVmaW5lZCBpbiBta3NoCmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHM6JCgoMjE0NzQ4MzY0NysxKSkuJCgoKDIxNDc0ODM2NDcqMikrMSkpLiQoKCgyMTQ3NDgzNjQ3KjIpKzIpKS4KCWVjaG8gdTokKCgjMjE0NzQ4MzY0NysxKSkuJCgoIygyMTQ3NDgzNjQ3KjIpKzEpKS4kKCgjKDIxNDc0ODM2NDcqMikrMikpLgpleHBlY3RlZC1zdGRvdXQ6CglzOi0yMTQ3NDgzNjQ4Li0xLjAuCgl1OjIxNDc0ODM2NDguNDI5NDk2NzI5NS4wLgotLS0KbmFtZTogaW50ZWdlci1hcml0aG1ldGljLXNwYW4tNjQKZGVzY3JpcHRpb246CglDaGVjayB3cmFwYXJvdW5kIGFuZCBzaXplIHRoYXQgaXMgZGVmaW5lZCBpbiBta3NoCmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHM6JCgoOTIyMzM3MjAzNjg1NDc3NTgwNysxKSkuJCgoKDkyMjMzNzIwMzY4NTQ3NzU4MDcqMikrMSkpLiQoKCg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzIpKS4KCWVjaG8gdTokKCgjOTIyMzM3MjAzNjg1NDc3NTgwNysxKSkuJCgoIyg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzEpKS4kKCgjKDkyMjMzNzIwMzY4NTQ3NzU4MDcqMikrMikpLgpleHBlY3RlZC1zdGRvdXQ6CglzOi05MjIzMzcyMDM2ODU0Nzc1ODA4Li0xLjAuCgl1OjkyMjMzNzIwMzY4NTQ3NzU4MDguMTg0NDY3NDQwNzM3MDk1NTE2MTUuMC4KLS0tCm5hbWU6IGludGVnZXItc2l6ZS1GQUlMLXRvLWRldGVjdApkZXNjcmlwdGlvbjoKCU5vdGlmeSB0aGUgdXNlciB0aGF0IHRoZWlyIGludHMgYXJlIG5vdCAzMiBvciA2NCBiaXQKY2F0ZWdvcnk6IGludDp1CnN0ZGluOgoJOgotLS0KbmFtZTogbGluZW5vLXN0ZGluCmRlc2NyaXB0aW9uOgoJU2VlIGlmICRMSU5FTk8gaXMgdXBkYXRlZCBhbmQgY2FuIGJlIG1vZGlmaWVkLgpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJTElORU5PPTIwCgllY2hvIEMgJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJQyAyMAotLS0KbmFtZTogbGluZW5vLWluYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiAkTElORU5PIGlzIHNldCBmb3IgLidkIGZpbGVzLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCglMSU5FTk89MjAKCWVjaG8gZG90IEMgJExJTkVOTwpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJLiAuL2RvdGZpbGUKZXhwZWN0ZWQtc3Rkb3V0OgoJQSAxCglCIDIKCWRvdCBBIDEKCWRvdCBCIDIKCWRvdCBDIDIwCi0tLQpuYW1lOiBsaW5lbm8tZnVuYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiAkTElORU5PIGlzIHNldCBmb3IgY29tbWFuZHMgaW4gYSBmdW5jdGlvbi4Kc3RkaW46CgllY2hvIEEgJExJTkVOTwoJZWNobyBCICRMSU5FTk8KCWJhcigpIHsKCSAgICBlY2hvIGZ1bmMgQSAkTElORU5PCgkgICAgZWNobyBmdW5jIEIgJExJTkVOTwoJfQoJYmFyCgllY2hvIEMgJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJZnVuYyBBIDQKCWZ1bmMgQiA1CglDIDgKLS0tCm5hbWU6IGxpbmVuby11bnNldApkZXNjcmlwdGlvbjoKCVNlZSBpZiB1bnNldHRpbmcgTElORU5PIG1ha2VzIGl0IG5vbi1tYWdpYy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImRvdGZpbGUiCgllY2hvIGRvdCBBICRMSU5FTk8KCWVjaG8gZG90IEIgJExJTkVOTwpzdGRpbjoKCXVuc2V0IExJTkVOTwoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgliYXIoKSB7CgkgICAgZWNobyBmdW5jIEEgJExJTkVOTwoJICAgIGVjaG8gZnVuYyBCICRMSU5FTk8KCX0KCWJhcgoJLiAuL2RvdGZpbGUKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEKCUIKCWZ1bmMgQQoJZnVuYyBCCglkb3QgQQoJZG90IEIKCUMKLS0tCm5hbWU6IGxpbmVuby11bnNldC11c2UKZGVzY3JpcHRpb246CglTZWUgaWYgdW5zZXR0aW5nIExJTkVOTyBtYWtlcyBpdCBub24tbWFnaWMgZXZlbgoJd2hlbiBpdCBpcyByZS11c2VkLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCnN0ZGluOgoJdW5zZXQgTElORU5PCglMSU5FTk89MwoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgliYXIoKSB7CgkgICAgZWNobyBmdW5jIEEgJExJTkVOTwoJICAgIGVjaG8gZnVuYyBCICRMSU5FTk8KCX0KCWJhcgoJLiAuL2RvdGZpbGUKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEgMwoJQiAzCglmdW5jIEEgMwoJZnVuYyBCIDMKCWRvdCBBIDMKCWRvdCBCIDMKCUMgMwotLS0KbmFtZTogbGluZW5vLXRyYXAKZGVzY3JpcHRpb246CglDaGVjayBpZiBMSU5FTk8gaXMgdHJhY2tlZCBpbiB0cmFwcwpzdGRpbjoKCWZhaWwoKSB7CgkJZWNobyAibGluZSA8JDE+IgoJCWV4aXQgMQoJfQoJdHJhcCAnZmFpbCAkTElORU5PJyBJTlQgRVJSCglmYWxzZQpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDw2PgpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiB1bmtub3duLXRyYXAKZGVzY3JpcHRpb246CglFbnN1cmUgdW5rbm93biB0cmFwcyBhcmUgbm90IGEgc3ludGF4IGVycm9yCnN0ZGluOgoJKAoJdHJhcCAiZWNobyB0cmFwIDEgZXhlY3V0ZWQiIFVOS05PV05TSUdOQUwgfHwgZWNobyAiZm9vIgoJZWNobyA9MQoJdHJhcCAiZWNobyB0cmFwIDIgZXhlY3V0ZWQiIFVOS05PV05TSUdOQUwgRVhJVCA5OTk5OTkgRk5PUkQKCWVjaG8gPSAkPwoJKSAyPiYxIHwgc2VkICJzAV4ke19fcHJvZ25hbWUlLmV4ZX1cLiplKngqZSo6IDxzdGRpbj5cW1swLTldKl0BUFJPRwEiCmV4cGVjdGVkLXN0ZG91dDoKCVBST0c6IHRyYXA6IGJhZCBzaWduYWwgJ1VOS05PV05TSUdOQUwnCglmb28KCT0xCglQUk9HOiB0cmFwOiBiYWQgc2lnbmFsICdVTktOT1dOU0lHTkFMJwoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnOTk5OTk5JwoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnRk5PUkQnCgk9IDEKCXRyYXAgMiBleGVjdXRlZAotLS0KbmFtZTogcmVhZC1JRlMtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBkZWZhdWx0IElGUwpzdGRpbjoKCWVjaG8gIkEgQiAiID4gSU4KCXVuc2V0IHggeSB6CglyZWFkIHggeSB6IDwgSU4KCWVjaG8gMTogInhbJHhdIHlbJHldIHpbJHpdIgoJZWNobyAxYTogJHt6LXogbm90IHNldH0KCXJlYWQgeCA8IElOCgllY2hvIDI6ICJ4WyR4XSIKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogeFtBXSB5W0JdIHpbXQoJMWE6CgkyOiB4W0EgQl0KLS0tCm5hbWU6IHJlYWQtSUZTLTIKZGVzY3JpcHRpb246CglDb21wbGV4IHRlc3RzLCBJRlMgZWl0aGVyIGNvbG9uIChJRlMtTldTKSBvciBiYWNrc2xhc2ggKHRyaWNreSkKc3RkaW46CgluPTAKCXNob3dhcmdzKCkgeyBwcmludCAtbnIgIiQxIjsgc2hpZnQ7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIiBbJHNfYXJnXSI7IGRvbmU7IHByaW50OyB9CgkoSUZTPVxcIGE9XDxcXFw+OyBzaG93YXJncyAzICRhKQoJKElGUz06IGI9XDw6XD47IHNob3dhcmdzIDQgJGIpCglwcmludCAtciAnPFw+JyB8IChJRlM9XFwgcmVhZCBmIGc7IHNob3dhcmdzIDUgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcXD4nIHwgKElGUz1cXCByZWFkIGYgZzsgc2hvd2FyZ3MgNiAiJGYiICIkZyIpCglwcmludCAnPFxcXG4+JyB8IChJRlM9XFwgcmVhZCBmIGc7IHNob3dhcmdzIDcgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcPicgfCAoSUZTPVxcIHJlYWQgZjsgc2hvd2FyZ3MgOCAiJGYiKQoJcHJpbnQgLXIgJzxcXD4nIHwgKElGUz1cXCByZWFkIGY7IHNob3dhcmdzIDkgIiRmIikKCXByaW50ICc8XFxcbj4nIHwgKElGUz1cXCByZWFkIGY7IHNob3dhcmdzIDEwICIkZiIpCglwcmludCAtciAnPFw+JyB8IChJRlM9XFwgcmVhZCAtciBmIGc7IHNob3dhcmdzIDExICIkZiIgIiRnIikKCXByaW50IC1yICc8XFw+JyB8IChJRlM9XFwgcmVhZCAtciBmIGc7IHNob3dhcmdzIDEyICIkZiIgIiRnIikKCXByaW50ICc8XFxcbj4nIHwgKElGUz1cXCByZWFkIC1yIGYgZzsgc2hvd2FyZ3MgMTMgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcPicgfCAoSUZTPVxcIHJlYWQgLXIgZjsgc2hvd2FyZ3MgMTQgIiRmIikKCXByaW50IC1yICc8XFw+JyB8IChJRlM9XFwgcmVhZCAtciBmOyBzaG93YXJncyAxNSAiJGYiKQoJcHJpbnQgJzxcXFxuPicgfCAoSUZTPVxcIHJlYWQgLXIgZjsgc2hvd2FyZ3MgMTYgIiRmIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgZiBnOyBzaG93YXJncyAxNyAiJGYiICIkZyIpCglwcmludCAtciAnPDo6PicgfCAoSUZTPTogcmVhZCBmIGc7IHNob3dhcmdzIDE4ICIkZiIgIiRnIikKCXByaW50ICc8OlxuPicgfCAoSUZTPTogcmVhZCBmIGc7IHNob3dhcmdzIDE5ICIkZiIgIiRnIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgZjsgc2hvd2FyZ3MgMjAgIiRmIikKCXByaW50IC1yICc8Ojo+JyB8IChJRlM9OiByZWFkIGY7IHNob3dhcmdzIDIxICIkZiIpCglwcmludCAnPDpcbj4nIHwgKElGUz06IHJlYWQgZjsgc2hvd2FyZ3MgMjIgIiRmIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgLXIgZiBnOyBzaG93YXJncyAyMyAiJGYiICIkZyIpCglwcmludCAtciAnPDo6PicgfCAoSUZTPTogcmVhZCAtciBmIGc7IHNob3dhcmdzIDI0ICIkZiIgIiRnIikKCXByaW50ICc8OlxuPicgfCAoSUZTPTogcmVhZCAtciBmIGc7IHNob3dhcmdzIDI1ICIkZiIgIiRnIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgLXIgZjsgc2hvd2FyZ3MgMjYgIiRmIikKCXByaW50IC1yICc8Ojo+JyB8IChJRlM9OiByZWFkIC1yIGY7IHNob3dhcmdzIDI3ICIkZiIpCglwcmludCAnPDpcbj4nIHwgKElGUz06IHJlYWQgLXIgZjsgc2hvd2FyZ3MgMjggIiRmIikKZXhwZWN0ZWQtc3Rkb3V0OgoJMyBbPF0gWz5dCgk0IFs8XSBbPl0KCTUgWzxdIFs+XQoJNiBbPF0gWz5dCgk3IFs8Pl0gW10KCTggWzw+XQoJOSBbPFw+XQoJMTAgWzw+XQoJMTEgWzxdIFs+XQoJMTIgWzxdIFtcPl0KCTEzIFs8XSBbXQoJMTQgWzxcPl0KCTE1IFs8XFw+XQoJMTYgWzxdCgkxNyBbPF0gWz5dCgkxOCBbPF0gWzo+XQoJMTkgWzxdIFtdCgkyMCBbPDo+XQoJMjEgWzw6Oj5dCgkyMiBbPF0KCTIzIFs8XSBbPl0KCTI0IFs8XSBbOj5dCgkyNSBbPF0gW10KCTI2IFs8Oj5dCgkyNyBbPDo6Pl0KCTI4IFs8XQotLS0KbmFtZTogcmVhZC1rc2gtMQpkZXNjcmlwdGlvbjoKCUlmIG5vIHZhciBzcGVjaWZpZWQsIFJFUExZIGlzIHVzZWQKc3RkaW46CgllY2hvICJhYmMiID4gSU4KCXJlYWQgPCBJTgoJZWNobyAiWyRSRVBMWV0iOwpleHBlY3RlZC1zdGRvdXQ6CglbYWJjXQotLS0KbmFtZTogcmVhZC1yZWdyZXNzLTEKZGVzY3JpcHRpb246CglDaGVjayBhIHJlZ3Jlc3Npb24gb2YgcmVhZApmaWxlLXNldHVwOiBmaWxlIDY0NCAiZm9vIgoJZm9vIGJhcgoJYmF6CglibGFoCnN0ZGluOgoJd2hpbGUgcmVhZCBhIGIgYzsgZG8KCQlyZWFkIGQKCQlicmVhawoJZG9uZSA8Zm9vCgllY2hvICI8JGF8JGJ8JGM+PCRkPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvb3xiYXJ8PjxiYXo+Ci0tLQpuYW1lOiByZWFkLWRlbGltLTEKZGVzY3JpcHRpb246CglDaGVjayByZWFkIHdpdGggZGVsaW1pdGVycwpzdGRpbjoKCWVtaXQoKSB7CgkJcHJpbnQgLW4gJ2ZvbyBiYXJcdGJhelxuYmxhaCBcMGJsdWJcdGJsZWNoXG5teW9rIG1lY2sgXDAnCgl9CgllbWl0IHwgd2hpbGUgSUZTPSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICJlaD8iIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvbyBiYXIJYmF6CglibGFoID4KCTxibHViCWJsZWNoCglteW9rIG1lY2sgPgoJPGZvbyBiYXIJYmF6CglibGFoPgoJPGJsdWIJYmxlY2gKCW15b2sgbWVjaz4KCTxmb28gYmFyCWJhegoJYmxhaCBibHViCWJsPgoJPGNoCglteW9rIG0+Ci0tLQpuYW1lOiByZWFkLWV4dC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZCB3aXRoIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQsIGFuZCAtQQpzdGRpbjoKCXByaW50ICdmb29cbmJhcicgPngxCglwcmludCAtbiB4ID54MgoJcHJpbnQgJ2Zvb1xcIGJhciBiYXonID54MwoJeDFhPXU7IHJlYWQgeDFhIDx4MQoJeDFiPXU7IHJlYWQgLU4tMSB4MWIgPHgxCgl4MmE9dTsgcmVhZCB4MmEgPHgyOyByMmE9JD8KCXgyYj11OyByZWFkIC1OMiB4MmMgPHgyOyByMmI9JD8KCXgyYz11OyByZWFkIC1uMiB4MmMgPHgyOyByMmM9JD8KCXgzYT11OyByZWFkIC1BIHgzYSA8eDMKCXByaW50IC1yICJ4MWE9PCR4MWE+IgoJcHJpbnQgLXIgIngxYj08JHgxYj4iCglwcmludCAtciAieDJhPSRyMmE8JHgyYT4iCglwcmludCAtciAieDJiPSRyMmI8JHgyYj4iCglwcmludCAtciAieDJjPSRyMmM8JHgyYz4iCglwcmludCAtciAieDNhPTwke3gzYVswXX18JHt4M2FbMV19fCR7eDNhWzJdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCXgxYT08Zm9vPgoJeDFiPTxmb28KCWJhcj4KCXgyYT0xPHg+Cgl4MmI9MTx1PgoJeDJjPTA8eD4KCXgzYT08Zm9vIGJhcnxiYXp8PgotLS0KbmFtZTogcmVncmVzc2lvbi0xCmRlc2NyaXB0aW9uOgoJTGV4IGFycmF5IGNvZGUgaGFkIHByb2JsZW1zIHdpdGggdGhpcy4Kc3RkaW46CgllY2hvIGZvb1sKCW49YmFyCgllY2hvICJoaVsgJG4gXT0xIgpleHBlY3RlZC1zdGRvdXQ6Cglmb29bCgloaVsgYmFyIF09MQotLS0KbmFtZTogcmVncmVzc2lvbi0yCmRlc2NyaXB0aW9uOgoJV2hlbiBQQVRIIGlzIHNldCBiZWZvcmUgcnVubmluZyBhIGNvbW1hbmQsIHRoZSBuZXcgcGF0aCBpcwoJbm90IHVzZWQgaW4gZG9pbmcgdGhlIHBhdGggc2VhcmNoCgkJJCBlY2hvIGVjaG8gaGkgPiAvdG1wL3EgOyBjaG1vZCBhK3J4IC90bXAvcQoJCSQgUEFUSD0vdG1wIHEKCQlxOiBub3QgZm91bmQKCQkkCglpbiBjb21leGVjKCkgdGhlIHR3byBsaW5lcwoJCXdoaWxlICgqdnAgIT0gTlVMTCkKCQkJKHZvaWQpIHR5cGVzZXQoKnZwKyssIHh4eCwgMCk7CgluZWVkIHRvIGJlIG1vdmVkIG91dCBvZiB0aGUgc3dpdGNoIHRvIGJlZm9yZSBmaW5kY29tKCkgaXMKCWNhbGxlZCAtIEkgZG9uJ3Qga25vdyB3aGF0IHRoaXMgd2lsbCBicmVhay4Kc3RkaW46Cgk6ICIke1BXRDotYHB3ZCAyPiAvZGV2L251bGxgfSIKCTogIiR7UFdEOj8iUFdEIG5vdCBzZXQgLSBjYW5ub3QgZG8gdGVzdCJ9IgoJbWtkaXIgWQoJY2F0ID4gWS94eHhzY3JpcHQgPDwgRU9GCgkjIS9iaW4vc2gKCSMgTmVlZCB0byByZXN0b3JlIHBhdGggc28gZWNobyBjYW4gYmUgZm91bmQgKHNvbWUgc2hlbGxzIGRvbid0IGhhdmUKCSMgaXQgYXMgYSBidWlsdC1pbikKCVBBVEg9XCRPTERQQVRICgllY2hvIGhpCglleGl0IDAKCUVPRgoJY2htb2QgYStyeCBZL3h4eHNjcmlwdAoJZXhwb3J0IE9MRFBBVEg9IiRQQVRIIgoJUEFUSD0kUFdEL1kgeHh4c2NyaXB0CglleGl0ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYKZGVzY3JpcHRpb246CglQYXJzaW5nIG9mICQoLi4pIGV4cHJlc3Npb25zIGlzIG5vbi1vcHRpbWFsLiAgSXQgaXMKCWltcG9zc2libGUgdG8gaGF2ZSBhbnkgcGFyZW50aGVzZXMgaW5zaWRlIHRoZSBleHByZXNzaW9uLgoJSS5lLiwKCQkkIGtzaCAtYyAnZWNobyAkKGVjaG8gXCggKScKCQlubyBjbG9zaW5nIHF1b3RlCgkJJCBrc2ggLWMgJ2VjaG8gJChlY2hvICIoIiApJwoJCW5vIGNsb3NpbmcgcXVvdGUKCQkkCglUaGUgc29sdXRpb24gaXMgdG8gaGFjayB0aGUgcGFyc2luZyBjbG9kZSBpbiBsZXguYywgdGhlCglxdWVzdGlvbiBpcyBob3cgdG8gaGFjayBpdDogc2hvdWxkIGFueSBwYXJlbnRoZXNlcyBiZQoJZXNjYXBlZCBieSBhIGJhY2tzbGFzaCwgb3Igc2hvdWxkIHJlY3Vyc2l2ZSBwYXJzaW5nIGJlIGRvbmUKCShzbyBxdW90ZXMgY291bGQgYWxzbyBiZSB1c2VkIHRvIGhpZGUgaGVtKS4gIFRoZSBmb3JtZXIgaXMKCWVhc2llciwgdGhlIGxhdGVyIGJldHRlci4uLgpzdGRpbjoKCWVjaG8gJChlY2hvIFwoICkKCWVjaG8gJChlY2hvICIoIiApCmV4cGVjdGVkLXN0ZG91dDoKCSgKCSgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tOQpkZXNjcmlwdGlvbjoKCUNvbnRpbnVlIGluIGEgZm9yIGxvb3AgZG9lcyBub3Qgd29yayByaWdodDoKCQlmb3IgaSBpbiBhIGIgYyA7IGRvCgkJCWlmIFsgJGkgPSBiIF0gOyB0aGVuCgkJCQljb250aW51ZQoJCQlmaQoJCQllY2hvICRpCgkJZG9uZQoJUHJpbnRzIGEgZm9yZXZlci4uLgpzdGRpbjoKCWZpcnN0PXllcwoJZm9yIGkgaW4gYSBiIGMgOyBkbwoJCWlmIFsgJGkgPSBiIF0gOyB0aGVuCgkJCWlmIFsgJGZpcnN0ID0gbm8gXSA7IHRoZW4KCQkJCWVjaG8gJ2NvbnRpbnVlIGluIGZvciBsb29wIGJyb2tlbicKCQkJCWJyZWFrCSMgaG9wZSBicmVhayBpc24ndCBicm9rZW4gdG9vIDotKQoJCQlmaQoJCQlmaXJzdD1ubwoJCQljb250aW51ZQoJCWZpCglkb25lCgllY2hvIGJ5ZQpleHBlY3RlZC1zdGRvdXQ6CglieWUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTAKZGVzY3JpcHRpb246CglUaGUgZm9sbG93aW5nOgoJCXNldCAtLSBgZmFsc2VgCgkJZWNobyAkPwoJc2hvdWxkIHByaW50IDAgYWNjb3JkaW5nIHRvIFBPU0lYIChkYXNoLCBiYXNoLCBrc2g5MywgcG9zaCkKCWJ1dCBub3QgMCBhY2NvcmRpbmcgdG8gdGhlIGdldG9wdCgxKSBtYW51YWwgcGFnZSwga3NoODgsIGFuZAoJQm91cm5lIHNoIChzdWNoIGFzIC9iaW4vc2ggb24gU29sYXJpcykuCglXZSBob25vdXIgUE9TSVggZXhjZXB0IHdoZW4gLW8gc2ggaXMgc2V0LgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJc2hvd2YoKSB7CgkJW1sgLW8gcG9zaXggXV07IEZQT1NJWD0kKCgxLSQ/KSkKCQlbWyAtbyBzaCBdXTsgRlNIPSQoKDEtJD8pKQoJCWVjaG8gLW4gIkZQT1NJWD0kRlBPU0lYIEZTSD0kRlNIICIKCX0KCXNldCArbyBwb3NpeCArbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHBvc2l4CglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KCXNldCAtbyBwb3NpeCAtbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CmV4cGVjdGVkLXN0ZG91dDoKCUZQT1NJWD0wIEZTSD0wIHJ2PTAKCUZQT1NJWD0wIEZTSD0xIHJ2PTEKCUZQT1NJWD0xIEZTSD0wIHJ2PTAKCUZQT1NJWD0xIEZTSD0xIHJ2PTAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTAtbGVnYWN5CmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQlzZXQgLS0gYGZhbHNlYAoJCWVjaG8gJD8KCXNob3VsZCBwcmludCAwIGFjY29yZGluZyB0byBQT1NJWCAoZGFzaCwgYmFzaCwga3NoOTMsIHBvc2gpCglidXQgbm90IDAgYWNjb3JkaW5nIHRvIHRoZSBnZXRvcHQoMSkgbWFudWFsIHBhZ2UsIGtzaDg4LCBhbmQKCUJvdXJuZSBzaCAoc3VjaCBhcyAvYmluL3NoIG9uIFNvbGFyaXMpLgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LXllcwpzdGRpbjoKCXNob3dmKCkgewoJCVtbIC1vIHBvc2l4IF1dOyBGUE9TSVg9JCgoMS0kPykpCgkJW1sgLW8gc2ggXV07IEZTSD0kKCgxLSQ/KSkKCQllY2hvIC1uICJGUE9TSVg9JEZQT1NJWCBGU0g9JEZTSCAiCgl9CglzZXQgK28gcG9zaXggK28gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHNoCglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KCXNldCAtbyBwb3NpeAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gcG9zaXggLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwpleHBlY3RlZC1zdGRvdXQ6CglGUE9TSVg9MCBGU0g9MCBydj0xCglGUE9TSVg9MCBGU0g9MSBydj0xCglGUE9TSVg9MSBGU0g9MCBydj0wCglGUE9TSVg9MSBGU0g9MSBydj0wCi0tLQpuYW1lOiByZWdyZXNzaW9uLTExCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQl4PS9mb28vYmFyL2JsYWgKCQllY2hvICR7eCMjKi99CglzaG91bGQgZWNobyBibGFoIGJ1dCBvbiBzb21lIG1hY2hpbmVzIGVjaG9zIC9mb28vYmFyL2JsYWguCnN0ZGluOgoJeD0vZm9vL2Jhci9ibGFoCgllY2hvICR7eCMjKi99CmV4cGVjdGVkLXN0ZG91dDoKCWJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTIKZGVzY3JpcHRpb246CglCb3RoIG9mIHRoZSBmb2xsb3dpbmcgZWNob3MgcHJvZHVjZSB0aGUgc2FtZSBvdXRwdXQgdW5kZXIgc2gva3NoLmF0dDoKCQkjIS9iaW4vc2gKCQl4PSJmb28JYmFyIgoJCWVjaG8gImBlY2hvIFwiJHhcImAiCgkJZWNobyAiYGVjaG8gIiR4ImAiCglwZGtzaCBwcm9kdWNlcyBkaWZmZXJlbnQgb3V0cHV0IGZvciB0aGUgZm9ybWVyIChmb28gaW5zdGVhZCBvZiBmb29cdGJhcikKc3RkaW46Cgl4PSJmb28JYmFyIgoJZWNobyAiYGVjaG8gXCIkeFwiYCIKCWVjaG8gImBlY2hvICIkeCJgIgpleHBlY3RlZC1zdGRvdXQ6Cglmb28JYmFyCglmb28JYmFyCi0tLQpuYW1lOiByZWdyZXNzaW9uLTEzCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZyBjb21tYW5kIGhhbmdzIGZvcmV2ZXI6CgkJJCAoOiA7IGNhdCAvZXRjL3Rlcm1jYXApIHwgc2xlZXAgMgoJVGhpcyBpcyBiZWNhdXNlIHRoZSBzaGVsbCBmb3JrcyBhIHNoZWxsIHRvIHJ1biB0aGUgKC4uKSBjb21tYW5kCglhbmQgdGhpcyBzaGVsbCBoYXMgdGhlIHBpcGUgb3Blbi4gIFdoZW4gdGhlIHNsZWVwIGRpZXMsIHRoZSBjYXQKCWRvZXNuJ3QgZ2V0IGEgU0lHUElQRSAnY2F1c2UgYSBwcm9jZXNzIChpZSwgdGhlIHNlY29uZCBzaGVsbCkKCXN0aWxsIGhhcyB0aGUgcGlwZSBvcGVuLgoJCglOT1RFOiB0aGlzIHRlc3QgcHJvdm9rZXMgYSBiaXphcnJlIGJ1ZyBpbiBrc2g5MyAoc2hlbGwgc3RhcnRzIHJlYWRpbmcKCSAgICAgIGNvbW1hbmRzIGZyb20gL2V0Yy90ZXJtY2FwLi4pCnRpbWUtbGltaXQ6IDEwCnN0ZGluOgoJZWNobyBBIGxpbmUgb2YgdGV4dCB0aGF0IHdpbGwgYmUgZHVwbGljYXRlZCBxdWl0ZSBhIG51bWJlciBvZiB0aW1lcy4+IHQxCgljYXQgdDEgdDEgdDEgdDEgIHQxIHQxIHQxIHQxICB0MSB0MSB0MSB0MSAgdDEgdDEgdDEgdDEgID4gdDIKCWNhdCB0MiB0MiB0MiB0MiAgdDIgdDIgdDIgdDIgIHQyIHQyIHQyIHQyICB0MiB0MiB0MiB0MiAgPiB0MQoJY2F0IHQxIHQxIHQxIHQxID4gdDIKCSg6IDsgY2F0IHQyIDI+L2Rldi9udWxsKSB8IHNsZWVwIDEKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTQKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCSQgKGZvb2JhcikgMj4gL2Rldi9udWxsCglnZW5lcmF0ZXMgbm8gb3V0cHV0IHVuZGVyIC9iaW4vc2gsIGJ1dCBwZGtzaCBwcm9kdWNlcyB0aGUgZXJyb3IKCQlmb29iYXI6IG5vdCBmb3VuZAoJQWxzbywgdGhlIGNvbW1hbmQKCQkkIGZvb2JhciAyPiAvZGV2L251bGwKCWdlbmVyYXRlcyBhbiBlcnJvciB1bmRlciAvYmluL3NoIGFuZCBwZGtzaCwgYnV0IEFUJlQga3NoODggcHJvZHVjZXMKCW5vIGVycm9yIChyZWRpcmVjdGVkIHRvIC9kZXYvbnVsbCkuCnN0ZGluOgoJKHlvdS9zaG91bGQvbm90L3NlZS90aGlzL2Vycm9yLzEpIDI+IC9kZXYvbnVsbAoJeW91L3Nob3VsZC9ub3Qvc2VlL3RoaXMvZXJyb3IvMiAyPiAvZGV2L251bGwKCXRydWUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTUKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCSQgd2hlbmNlIGZvb2JhcgoJZ2VuZXJhdGVzIGEgYmxhbmsgbGluZSB1bmRlciBwZGtzaCBhbmQgc2V0cyB0aGUgZXhpdCBzdGF0dXMgdG8gMC4KCUFUJlQga3NoODggZ2VuZXJhdGVzIG5vIG91dHB1dCBhbmQgc2V0cyB0aGUgZXhpdCBzdGF0dXMgdG8gMS4gIEFsc28sCgl0aGUgY29tbWFuZAoJCSQgd2hlbmNlIGZvb2JhciBjYXQKCWdlbmVyYXRlcyBubyBvdXRwdXQgdW5kZXIgQVQmVCBrc2g4OCAocGRrc2ggZ2VuZXJhdGVzIGEgYmxhbmsgbGluZQoJYW5kIC9iaW4vY2F0KS4Kc3RkaW46Cgl3aGVuY2UgZG9lcy9ub3QvZXhpc3QgPiAvZGV2L251bGwKCWVjaG8gMTogJD8KCWVjaG8gMjogJCh3aGVuY2UgZG9lcy9ub3QvZXhpc3QgfCB3YyAtbCkKCWVjaG8gMzogJCh3aGVuY2UgZG9lcy9ub3QvZXhpc3QgY2F0IHwgd2MgLWwpCmV4cGVjdGVkLXN0ZG91dDoKCTE6IDEKCTI6IDAKCTM6IDAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTYKZGVzY3JpcHRpb246Cgkke3ZhciUlZXhwcn0gc2VlbXMgdG8gYmUgYnJva2VuIGluIG1hbnkgcGxhY2VzLiAgT24gdGhlIG1pcHMKCXRoZSBjb21tYW5kcwoJCSQgcmVhZCBsaW5lIDwgL2V0Yy9wYXNzd2QKCQkkIGVjaG8gJGxpbmUKCQlyb290OjA6MTouLi4KCQkkIGVjaG8gJHtsaW5lJSU6Kn0KCQlyb290CgkJJCBlY2hvICRsaW5lCgkJcm9vdAoJCSQKCWNoYW5nZSB0aGUgdmFsdWUgb2YgbGluZS4gIE9uIHN1bjRzICYgcGFzLCB0aGUgZWNobyAke2xpbmUlJToqfSBkb2Vzbid0Cgl3b3JrLiAgSGF2ZW4ndCBjaGVja2VkIGVsc2V3aGVyZS4uLgpzY3JpcHQ6CglyZWFkIHgKCXk9JHgKCWVjaG8gJHt4JSU6Kn0KCWVjaG8gJHgKc3RkaW46Cglyb290OmFzZGpoYXNkYXNqaHM6MDoxOlJvb3Q6LzovYmluL3NoCmV4cGVjdGVkLXN0ZG91dDoKCXJvb3QKCXJvb3Q6YXNkamhhc2Rhc2poczowOjE6Um9vdDovOi9iaW4vc2gKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTcKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCS4gL2Zvby9iYXIKCXNob3VsZCBzZXQgdGhlIGV4aXQgc3RhdHVzIHRvIG5vbi16ZXJvIChzaCBhbmQgQVQmVCBrc2g4OCBkbykuCglYWFggZG90aW5nIGEgbm9uIGV4aXN0ZW50IGZpbGUgaXMgYSBmYXRhbCBlcnJvciBmb3IgYSBzY3JpcHQKc3RkaW46CgkuIGRvZXMvbm90L2V4aXN0CmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4/LwotLS0KbmFtZTogcmVncmVzc2lvbi0xOQpkZXNjcmlwdGlvbjoKCUJvdGggb2YgdGhlIGZvbGxvd2luZyBlY2hvcyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0aGluZywgYnV0IGRvbid0OgoJCSQgeD1mb28vYmFyCgkJJCBlY2hvICR7eCUvKn0KCQlmb28KCQkkIGVjaG8gIiR7eCUvKn0iCgkJZm9vL2JhcgpzdGRpbjoKCXg9Zm9vL2JhcgoJZWNobyAiJHt4JS8qfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vCi0tLQpuYW1lOiByZWdyZXNzaW9uLTIxCmRlc2NyaXB0aW9uOgoJYmFja3NsYXNoIGRvZXMgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaW4gY2FzZSBsYWJlbHM6CgkkIHg9Jy14JwoJJCBjYXNlICR4IGluCgktXD8pIGVjaG8gaGkKCWVzYWMKCWhpCgkkIHg9Jy0/JwoJJCBjYXNlICR4IGluCgktXFw/KSBlY2hvIGhpCgllc2FjCgloaQoJJApzdGRpbjoKCWNhc2UgLXggaW4KCS1cPykJZWNobyBmYWlsCgllc2FjCi0tLQpuYW1lOiByZWdyZXNzaW9uLTIyCmRlc2NyaXB0aW9uOgoJUXVvdGluZyBiYWNrcXVvdGVzIGluc2lkZSBiYWNrcXVvdGVzIGRvZXNuJ3Qgd29yazoKCSQgZWNobyBgZWNobyBoaSBcYGVjaG8gdGhlcmVcYCBmb2xrc2AKCWFza3MgZm9yIG1vcmUgaW5mby4gIHNoIGFuZCBBVCZUIGtzaDg4IGJvdGggZWNobwoJaGkgdGhlcmUgZm9sa3MKc3RkaW46CgllY2hvIGBlY2hvIGhpIFxgZWNobyB0aGVyZVxgIGZvbGtzYApleHBlY3RlZC1zdGRvdXQ6CgloaSB0aGVyZSBmb2xrcwotLS0KbmFtZTogcmVncmVzc2lvbi0yMwpkZXNjcmlwdGlvbjoKCSkpIGlzIG5vdCB0cmVhdGVkIGBjb3JyZWN0bHknOgoJICAgICQgKGVjaG8gaGkgOyAoZWNobyB0aGVyZSA7IGVjaG8gZm9sa3MpKQoJICAgIG1pc3NpbmcgKCgKCSAgICAkCglpbnN0ZWFkIG9mIChhcyBzaCBhbmQga3NoLmF0dCkKCSAgICAkIChlY2hvIGhpIDsgKGVjaG8gdGhlcmUgOyBlY2hvIGZvbGtzKSkKCSAgICBoaQoJICAgIHRoZXJlCgkgICAgZm9sa3MKCSAgICAkCnN0ZGluOgoJKCA6IDsgKCA6IDsgZWNobyBoaSkpCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI1CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgb25seSByZWFkCglhIHNpbmdsZSBsaW5lLCBub3QgYSB3aG9sZSBzdGRpbyBidWZmZXI7IHRoZSBjYXQgc2hvdWxkIGdldAoJdGhlIHJlc3QuCnN0ZGluOgoJKGVjaG8gYTsgZWNobyBiKSB8IHdoaWxlIHJlYWQgeCA7IGRvCgkgICAgZWNobyAkeAoJICAgIGNhdCA+IC9kZXYvbnVsbAoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgcmVhZCBib3RoCglsaW5lcywgbm90IGp1c3QgdGhlIGZpcnN0LgpzY3JpcHQ6CglhPQoJd2hpbGUgWyAiJGEiICE9IHh4eCBdIDsgZG8KCSAgICBsYXN0PSR4CgkgICAgcmVhZCB4CgkgICAgY2F0IC9kZXYvbnVsbCB8IHNlZCAncy94L3kvJwoJICAgIGE9eCRhCglkb25lCgllY2hvICRsYXN0CnN0ZGluOgoJYQoJYgpleHBlY3RlZC1zdGRvdXQ6CgliCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI3CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkuIC9kb2VzL25vdC9leGlzdAoJc2hvdWxkIGNhdXNlIGEgc2NyaXB0IHRvIGV4aXQuCnN0ZGluOgoJLiBkb2VzL25vdC9leGlzdAoJZWNobyBoaQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9kb2VzXC9ub3RcL2V4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi0yOApkZXNjcmlwdGlvbjoKCXZhcmlhYmxlIGFzc2lnbmVtZW50cyBub3QgZGV0ZWN0ZWQgd2VsbApzdGRpbjoKCWEueD0xIGVjaG8gaGkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvYVwueD0xLwotLS0KbmFtZTogcmVncmVzc2lvbi0yOQpkZXNjcmlwdGlvbjoKCWFsaWFzIGV4cGFuc2lvbiBkaWZmZXJlbnQgZnJvbSBBVCZUIGtzaDg4CnN0ZGluOgoJYWxpYXMgYT0nZm9yICcgYj0naSBpbicKCWEgYiBoaSA7IGRvIGVjaG8gJGkgOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTMwCmRlc2NyaXB0aW9uOgoJc3RyYW5nZSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW5zaWRlICR7Li4ufQpzdGRpbjoKCWVjaG8gJHthe2J9fQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uPy8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzEKZGVzY3JpcHRpb246CglEb2VzIHJlYWQgaGFuZGxlIHBhcnRpYWwgbGluZXMgY29ycmVjdGx5CnNjcmlwdDoKCWE9IHJldD0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgcmVhZCB4IHkgegoJICAgIHJldD0kPwoJICAgIGE9eCRhCglkb25lCgllY2hvICJbJHhdIgoJZWNobyAkcmV0CnN0ZGluOiAhCglhIEEgYUEKCWIgQiBCYgoJYwpleHBlY3RlZC1zdGRvdXQ6CglbY10KCTEKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzIKZGVzY3JpcHRpb246CglEb2VzIHJlYWQgc2V0IHZhcmlhYmxlcyB0byBudWxsIGF0IGVvZj8Kc2NyaXB0OgoJYT0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgcmVhZCB4IHkgegoJICAgIGE9eCRhCglkb25lCgllY2hvIDE6ICR7eC14IG5vdCBzZXR9ICR7eS15IG5vdCBzZXR9ICR7ei16IG5vdCBzZXR9CgllY2hvIDI6ICR7eDoreCBub3QgbnVsbH0gJHt5Oit5IG5vdCBudWxsfSAke3o6K3ogbm90IG51bGx9CnN0ZGluOgoJYSBBIEFhCgliIEIgQmIKZXhwZWN0ZWQtc3Rkb3V0OgoJMToKCTI6Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTMzCmRlc2NyaXB0aW9uOgoJRG9lcyB1bWFzayBwcmludCBhIGxlYWRpbmcgMCB3aGVuIHVtYXNrIGlzIDMgZGlnaXRzPwpzdGRpbjoKCSMgb24gTWlOVCwgdGhlIGZpcnN0IHVtYXNrIGNhbGwgc2VlbXMgdG8gZmFpbAoJdW1hc2sgMDIyCgkjIG5vdywgdGhlIHRlc3QgcHJvcGVyCgl1bWFzayAyMjIKCXVtYXNrCmV4cGVjdGVkLXN0ZG91dDoKCTAyMjIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzUKZGVzY3JpcHRpb246CglUZW1wb3J5IGZpbGVzIHVzZWQgZm9yIGhlcmUtZG9jcyBpbiBmdW5jdGlvbnMgZ2V0IHRyYXNoZWQgYWZ0ZXIKCXRoZSBmdW5jdGlvbiBpcyBwYXJzZWQgKGJlZm9yZSBpdCBpcyBleGVjdXRlZCkKc3RkaW46CglmMSgpIHsKCQljYXQgPDwtIEVPRgoJCQlGMQoJCUVPRgoJCWYyKCkgewoJCQljYXQgPDwtIEVPRgoJCQkJRjIKCQkJRU9GCgkJfQoJfQoJZjEKCWYyCgl1bnNldCAtZiBmMQoJZjIKZXhwZWN0ZWQtc3Rkb3V0OgoJRjEKCUYyCglGMgotLS0KbmFtZTogcmVncmVzc2lvbi0zNgpkZXNjcmlwdGlvbjoKCUNvbW1hbmQgc3Vic3RpdHV0aW9uIGJyZWFrcyByZWFkaW5nIGluIHdoaWxlIGxvb3AKCSh0ZXN0IGZyb20gPHNqZ0B2b2lkLnplbi5vei5hdT4pCnN0ZGluOgoJKGVjaG8gYWJjZGVmOyBlY2hvOyBlY2hvIDEyMykgfAoJICAgIHdoaWxlIHJlYWQgbGluZQoJICAgIGRvCgkgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBicmVha3MgaXQKCSAgICAgIGM9YGVjaG8gJGxpbmUgfCB3YyAtY2AKCSAgICAgIGVjaG8gJGMKCSAgICBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTcKCTEKCTQKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzcKZGVzY3JpcHRpb246CglNYWNoaW5lcyB3aXRoIGJyb2tlbiB0aW1lcygpIChyZXBvcnRlZCBieSA8c2pnQHZvaWQuemVuLm96LmF1PikKCXRpbWUgZG9lcyBub3QgcmVwb3J0IGNvcnJlY3QgcmVhbCB0aW1lCnN0ZGluOgoJdGltZSBzbGVlcCAxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL15ccyowXC4wW1xzXGRdK3JlYWx8XlxzKnJlYWxbXHNdKzArXC4wLwotLS0KbmFtZTogcmVncmVzc2lvbi0zOApkZXNjcmlwdGlvbjoKCXNldCAtZSBkb2Vzbid0IGlnbm9yZSBleGl0IGNvZGVzIGZvciBpZi93aGlsZS91bnRpbC8mJi98fC8hLgphcmd1bWVudHM6ICEtZSEKc3RkaW46CglpZiBmYWxzZTsgdGhlbiBlY2hvIGhpIDsgZmkKCWZhbHNlIHx8IHRydWUKCWZhbHNlICYmIHRydWUKCXdoaWxlIGZhbHNlOyBkbyBlY2hvIGhpOyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTM5CmRlc2NyaXB0aW9uOgoJT25seSBwb3NoIGFuZCBva3NoKDIwMTMtMDcpIHNheSDigJxoaeKAnSBiZWxvdzsgRnJlZUJTRCBzaCwKCUdOVSBiYXNoIGluIFBPU0lYIG1vZGUsIGRhc2gsIGtzaDkzLCBta3NoIGRvbuKAmXQuIEFsbCBvZgoJdGhlbSBleGl0IDAuIFRoZSBQT1NJWCBiZWhhdmlvdXIgaXMgbmVlZGVkIGJ5IEJTRCBtYWtlLgpzdGRpbjoKCXNldCAtZQoJZWNobyBgZmFsc2U7IGVjaG8gaGlgICQoPHRoaXMtZmlsZS1kb2VzLW5vdC1leGlzdCkKCWVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJCgkwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvdGhpcy1maWxlLWRvZXMtbm90LWV4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi00MApkZXNjcmlwdGlvbjoKCVRoaXMgdXNlZCB0byBjYXVzZSBhIGNvcmUgZHVtcAplbnYtc2V0dXA6ICFSQU5ET009MTIhCnN0ZGluOgoJZWNobyBoaQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi00MQpkZXNjcmlwdGlvbjoKCWZvbyBzaG91bGQgYmUgc2V0IHRvIGJhciAoc2hvdWxkIG5vdCBiZSBlbXB0eSkKc3RkaW46Cglmb289YAoJZWNobyBiYXJgCgllY2hvICIoJGZvbykiCmV4cGVjdGVkLXN0ZG91dDoKCShiYXIpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQyCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgdXNlIGNvbW1hbmQgbGluZSBhc3NpZ25tZW50cyB0byBhc3NpZ24gcmVhZG9ubHkgcGFyYW1ldGVycy4Kc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICglmb289YmFyCglyZWFkb25seSBmb28KCWZvbz1zdHVmZiBlbnYgfCBncmVwICdeZm9vJwpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVncmVzc2lvbi00MwpkZXNjcmlwdGlvbjoKCUNhbiBzdWJzaGVsbHMgYmUgcHJlZml4ZWQgYnkgcmVkaXJlY3Rpb25zIChoaXN0b3JpY2FsIHNoZWxscyBhbGxvdwoJdGhpcykKc3RkaW46Cgk8IC9kZXYvbnVsbCAoc2VkICdzL14vWC8nKQotLS0KbmFtZTogcmVncmVzc2lvbi00NQpkZXNjcmlwdGlvbjoKCVBhcmFtZXRlciBhc3NpZ25tZW50cyB3aXRoIFtdIHJlY29nbmlzZWQgY29ycmVjdGx5CnN0ZGluOgoJRk9PPSpbMTJdCglCQVI9YWJjWwoJTU9SRT1bYWJjXQoJSlVOSz1hW2JjCgllY2hvICI8JEZPTz4iCgllY2hvICI8JEJBUj4iCgllY2hvICI8JE1PUkU+IgoJZWNobyAiPCRKVU5LPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPCpbMTJdPgoJPGFiY1s+Cgk8W2FiY10+Cgk8YVtiYz4KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiB3b3JrcyBpbiBjb21tYW5kIHN1YnN0aXR1dGlvbnMgYW5kCglhdCB0aGUgZW5kIG9mIGZpbGUuCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaScKCUZPTz0iYHhgICIKCWVjaG8gIlskRk9PXSIKCXgKZXhwZWN0ZWQtc3Rkb3V0OgoJW2hpIF0KCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ3CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhc2VzIGFyZSBmdWxseSByZWFkLgpzdGRpbjoKCWFsaWFzIHg9J2VjaG8gaGk7CgllY2hvIHRoZXJlJwoJeAoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZG9uZQotLS0KbmFtZTogcmVncmVzc2lvbi00OApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgKGhlcmUgZG9jKSB0ZW1wIGZpbGVzIGFyZSBub3QgbGVmdCBiZWhpbmQgYWZ0ZXIgYW4gZXhlYy4Kc3RkaW46Cglta2RpciBmb28gfHwgZXhpdCAxCglUTVBESVI9JFBXRC9mb28gIiRfX3Byb2duYW1lIiA8PC0gJ0VPRicKCQl4KCkgewoJCQlzZWQgJ3MvXi9YIC8nIDw8IEVfT19GCgkJCWhpCgkJCXRoZXJlCgkJCWZvbGtzCgkJCUVfT19GCgkJCWVjaG8gImRvbmUgKCQ/KSIKCQl9CgkJZWNobz1lY2hvOyBbIC14IC9iaW4vZWNobyBdICYmIGVjaG89L2Jpbi9lY2hvCgkJZXhlYyAkZWNobyBzdWJ0ZXN0LTEgaGkKCUVPRgoJZWNobyBzdWJ0ZXN0LTEgZm9vLyoKCVRNUERJUj0kUFdEL2ZvbyAiJF9fcHJvZ25hbWUiIDw8LSAnRU9GJwoJCWVjaG89ZWNobzsgWyAteCAvYmluL2VjaG8gXSAmJiBlY2hvPS9iaW4vZWNobwoJCXNlZCAncy9eL1ggLycgPDwgRV9PX0Y7IGV4ZWMgJGVjaG8gc3VidGVzdC0yIGhpCgkJYQoJCWZldwoJCWxpbmVzCgkJRV9PX0YKCUVPRgoJZWNobyBzdWJ0ZXN0LTIgZm9vLyoKZXhwZWN0ZWQtc3Rkb3V0OgoJc3VidGVzdC0xIGhpCglzdWJ0ZXN0LTEgZm9vLyoKCVggYQoJWCBmZXcKCVggbGluZXMKCXN1YnRlc3QtMiBoaQoJc3VidGVzdC0yIGZvby8qCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bnNldCBwYXJhbXMgd2l0aCBhdHRyaWJ1dGVzIGFyZSByZXBvcnRlZCBieSBzZXQsIHRob3NlCglzYW5zIGF0dHJpYnV0ZXMgYXJlIG5vdC4Kc3RkaW46Cgl1bnNldCBGT08gQkFSCgllY2hvIFgkRk9PCglleHBvcnQgQkFSCgl0eXBlc2V0IC1pIEJMQUgKCXNldCB8IGdyZXAgRk9PCglzZXQgfCBncmVwIEJBUgoJc2V0IHwgZ3JlcCBCTEFICmV4cGVjdGVkLXN0ZG91dDoKCVgKCUJBUgoJQkxBSAotLS0KbmFtZTogcmVncmVzc2lvbi01MApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyBkbyBub3QgdXNlIGNvbnRpbnVhdGlvbiBwcm9tcHQgYWZ0ZXIgdHJhaWxpbmcKCXNlbWktY29sb24uCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVkKCVBTMj1YCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBoaSA7ICcKCWZvbwoJZm9vIGVjaG8gdGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCgl0aGVyZQpleHBlY3RlZC1zdGRlcnI6ICEKCVlZWVkKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNldCBhbGxvd3MgYm90aCArbyBhbmQgLW8gb3B0aW9ucyBvbiBzYW1lIGNvbW1hbmQgbGluZS4Kc3RkaW46CglzZXQgYSBiIGMKCXNldCAtbyBub2dsb2IgK28gYWxsZXhwb3J0CgllY2hvIEE6ICQqLCAqCmV4cGVjdGVkLXN0ZG91dDoKCUE6IGEgYiBjLCAqCi0tLQpuYW1lOiByZWdyZXNzaW9uLTUyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyB3b3JrcyBpbiBwaXBlbGluZWQgY29tbWFuZHMKZmlsZS1zZXR1cDogZmlsZSA2NDQgImVudmYiCglQUzE9UApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgoJc3R1ZmYKZW52LXNldHVwOiAhRU5WPS4vZW52ZiEKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJc2VkICdzL14vWCAvJyA8IGFiKgoJZWNobyBtYXJrIDEKCXNlZCAncy9eL1ggLycgPCBhYiogfCBzZWQgJ3MvXi9ZIC8nCgllY2hvIG1hcmsgMgpleHBlY3RlZC1zdGRvdXQ6CglYIHN0dWZmCgltYXJrIDEKCVkgWCBzdHVmZgoJbWFyayAyCmV4cGVjdGVkLXN0ZGVycjogIQoJUFBQUFAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdldG9wdHMgd29ya3MgaW4gZnVuY3Rpb25zCnN0ZGluOgoJYmZ1bmMoKSB7CgkgICAgZWNobyBiZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgQiBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEIpCgkJICAgIGVjaG8gYmZ1bmM6IEIgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGJmdW5jOiBsZWF2ZQoJfQoJCglmdW5jdGlvbiBrZnVuYyB7CgkgICAgZWNobyBrZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgSyBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEspCgkJICAgIGVjaG8ga2Z1bmM6IEsgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGtmdW5jOiBsZWF2ZQoJfQoJCglzZXQgLS0gLWYgLWIgLWsgLWwKCWVjaG8gImxpbmUgMTogT1BUSU5EPSRPUFRJTkQiCglnZXRvcHRzIGtiZmwgb3B0YwoJZWNobyAibGluZSAyOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJYmZ1bmMgLUJCQiBibGFoCgllY2hvICJsaW5lIDM6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDogcmV0PSQ/LCBvcHRjPSRvcHRjLCBPUFRJTkQ9JE9QVElORCIKCWtmdW5jIC1LS0sgYmxhaAoJZWNobyAibGluZSA1OiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDY6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgllY2hvCgkKCU9QVElORD0xCglzZXQgLS0gLWZia2wKCWVjaG8gImxpbmUgMTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgMjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgliZnVuYyAtQkJCIGJsYWgKCWVjaG8gImxpbmUgMzA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCglrZnVuYyAtS0tLIGJsYWgKCWVjaG8gImxpbmUgNTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMTogT1BUSU5EPTEKCWxpbmUgMjogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzogT1BUSU5EPTIKCWxpbmUgNDogcmV0PTAsIG9wdGM9YiwgT1BUSU5EPTMKCWtmdW5jOiBlbnRlciAoYXJnczogLUtLSyBibGFoOyBPUFRJTkQ9MSkKCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBsZWF2ZQoJbGluZSA1OiBPUFRJTkQ9MwoJbGluZSA2OiByZXQ9MCwgb3B0Yz1rLCBPUFRJTkQ9NAoJCglsaW5lIDEwOiBPUFRJTkQ9MQoJbGluZSAyMDogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzA6IE9QVElORD0yCglsaW5lIDQwOiByZXQ9MSwgb3B0Yz0/LCBPUFRJTkQ9MgoJa2Z1bmM6IGVudGVyIChhcmdzOiAtS0tLIGJsYWg7IE9QVElORD0xKQoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IGxlYXZlCglsaW5lIDUwOiBPUFRJTkQ9MgoJbGluZSA2MDogcmV0PTEsIG9wdGM9PywgT1BUSU5EPTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IDsgaXMgbm90IHJlcXVpcmVkIGJlZm9yZSB0aGUgdGhlbiBpbiBpZiAoKCAuLi4gKSkgdGhlbiAuLi4Kc3RkaW46CglpZiAoKCAxICkpIHRoZW4KCSAgICBlY2hvIG9rIGRwYXJlbgoJZmkKCWlmIFtbIC1uIDEgXV0gdGhlbgoJICAgIGVjaG8gb2sgZGJyYWNrZXRzCglmaQpleHBlY3RlZC1zdGRvdXQ6CglvayBkcGFyZW4KCW9rIGRicmFja2V0cwotLS0KbmFtZTogcmVncmVzc2lvbi01NQpkZXNjcmlwdGlvbjoKCUNoZWNrICR7Zm9vOiViYXJ9IGlzIGFsbG93ZWQgKGtzaDg4IGFsbG93cyBpdC4uLikKc3RkaW46Cgl4PWZvb1hiYXJYYmxhaAoJZWNobyAxICR7eCVYKn0KCWVjaG8gMiAke3g6JVgqfQoJZWNobyAzICR7eCUlWCp9CgllY2hvIDQgJHt4OiUlWCp9CgllY2hvIDUgJHt4IypYfQoJZWNobyA2ICR7eDojKlh9CgllY2hvIDcgJHt4IyMqWH0KCWVjaG8gOCAke3g6IyMqWH0KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb29YYmFyCgkyIGZvb1hiYXIKCTMgZm9vCgk0IGZvbwoJNSBiYXJYYmxhaAoJNiBiYXJYYmxhaAoJNyBibGFoCgk4IGJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTcKZGVzY3JpcHRpb246CglDaGVjayBpZiB0eXBlc2V0IG91dHB1dCBpcyBjb3JyZWN0IGZvcgoJdW5pbml0aWFsaXNlZCBhcnJheSBlbGVtZW50cy4Kc3RkaW46Cgl0eXBlc2V0IC1pIHh4eFs0XQoJZWNobyBBCgl0eXBlc2V0IC1pIHwgZ3JlcCB4eHggfCBzZWQgJ3MvXi8gICAgLycKCWVjaG8gQgoJdHlwZXNldCB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgkKCXh4eFsxXT0yKzUKCWVjaG8gTQoJdHlwZXNldCAtaSB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgllY2hvIE4KCXR5cGVzZXQgfCBncmVwIHh4eCB8IHNlZCAncy9eLyAgICAvJwpleHBlY3RlZC1zdGRvdXQ6CglBCgkgICAgeHh4CglCCgkgICAgdHlwZXNldCAtaSB4eHgKCU0KCSAgICB4eHhbMV09NwoJTgoJICAgIHNldCAtQSB4eHgKCSAgICB0eXBlc2V0IC1pIHh4eFsxXQotLS0KbmFtZTogcmVncmVzc2lvbi01OApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRyYXAgZXhpdCBpcyBvayAoZXhpdCBub3QgbWlzdGFrZW4gZm9yIHNpZ25hbCBuYW1lKQpzdGRpbjoKCXRyYXAgJ2VjaG8gaGknIGV4aXQKCXRyYXAgZXhpdCAxCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTU5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgJHsjYXJyYXlbKl19IGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgpzdGRpbjoKCWFbMTJdPWhpCglhWzhdPXRoZXJlCgllY2hvICR7I2FbKl19CmV4cGVjdGVkLXN0ZG91dDoKCTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjAKZGVzY3JpcHRpb246CglDaGVjayBpZiBkZWZhdWx0IGV4aXQgc3RhdHVzIGlzIHByZXZpb3VzIGNvbW1hbmQKc3RkaW46CgkodHJ1ZTsgZXhpdCkKCWVjaG8gQSAkPwoJKGZhbHNlOyBleGl0KQoJZWNobyBCICQ/CgkoIChleGl0IDEwMykgOyBleGl0KQoJZWNobyBDICQ/CmV4cGVjdGVkLXN0ZG91dDoKCUEgMAoJQiAxCglDIDEwMwotLS0KbmFtZTogcmVncmVzc2lvbi02MQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEVYSVQgdHJhcCBpcyBleGVjdXRlZCBmb3Igc3ViIHNoZWxscy4Kc3RkaW46Cgl0cmFwICdlY2hvIHBhcmVudCBleGl0JyBFWElUCgllY2hvIHN0YXJ0CgkoZWNobyBBOyBlY2hvIEEgbGFzdCkKCWVjaG8gQgoJKGVjaG8gQzsgdHJhcCAnZWNobyBzdWIgZXhpdCcgRVhJVDsgZWNobyBDIGxhc3QpCgllY2hvIHBhcmVudCBsYXN0CmV4cGVjdGVkLXN0ZG91dDoKCXN0YXJ0CglBCglBIGxhc3QKCUIKCUMKCUMgbGFzdAoJc3ViIGV4aXQKCXBhcmVudCBsYXN0CglwYXJlbnQgZXhpdAotLS0KbmFtZTogcmVncmVzc2lvbi02MgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRlc3QgLW50Ly1vdCBzdWNjZWVkcyBpZiBzZWNvbmQoZmlyc3QpIGZpbGUgaXMgbWlzc2luZy4Kc3RkaW46Cgl0b3VjaCBhCgl0ZXN0IGEgLW50IGIgJiYgZWNobyBudCBPSyB8fCBlY2hvIG50IEJBRAoJdGVzdCBiIC1vdCBhICYmIGVjaG8gb3QgT0sgfHwgZWNobyBvdCBCQUQKZXhwZWN0ZWQtc3Rkb3V0OgoJbnQgT0sKCW90IE9LCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdHlwZXNldCwgZXhwb3J0LCBhbmQgcmVhZG9ubHkgd29yawpzdGRpbjoKCXsKCQllY2hvIEZOT1JELTAKCQlGTk9SRF9BPTEKCQlGTk9SRF9CPTIKCQlGTk9SRF9DPTMKCQlGTk9SRF9EPTQKCQlGTk9SRF9FPTUKCQlGTk9SRF9GPTYKCQlGTk9SRF9HPTcKCQlGTk9SRF9IPTgKCQlpbnRlZ2VyIEZOT1JEX0UgRk5PUkRfRiBGTk9SRF9HIEZOT1JEX0gKCQlleHBvcnQgRk5PUkRfQyBGTk9SRF9EIEZOT1JEX0cgRk5PUkRfSAoJCXJlYWRvbmx5IEZOT1JEX0IgRk5PUkRfRCBGTk9SRF9GIEZOT1JEX0gKCQllY2hvIEZOT1JELTEKCQlleHBvcnQKCQllY2hvIEZOT1JELTIKCQlleHBvcnQgLXAKCQllY2hvIEZOT1JELTMKCQlyZWFkb25seQoJCWVjaG8gRk5PUkQtNAoJCXJlYWRvbmx5IC1wCgkJZWNobyBGTk9SRC01CgkJdHlwZXNldAoJCWVjaG8gRk5PUkQtNgoJCXR5cGVzZXQgLXAKCQllY2hvIEZOT1JELTcKCQl0eXBlc2V0IC0KCQllY2hvIEZOT1JELTgKCX0gfCBmZ3JlcCBGTk9SRAoJZm5vcmQ9KDQyIDIzKQoJdHlwZXNldCAtcCBmbm9yZAoJZWNobyBGTk9SRC05CmV4cGVjdGVkLXN0ZG91dDoKCUZOT1JELTAKCUZOT1JELTEKCUZOT1JEX0MKCUZOT1JEX0QKCUZOT1JEX0cKCUZOT1JEX0gKCUZOT1JELTIKCWV4cG9ydCBGTk9SRF9DPTMKCWV4cG9ydCBGTk9SRF9EPTQKCWV4cG9ydCBGTk9SRF9HPTcKCWV4cG9ydCBGTk9SRF9IPTgKCUZOT1JELTMKCUZOT1JEX0IKCUZOT1JEX0QKCUZOT1JEX0YKCUZOT1JEX0gKCUZOT1JELTQKCXJlYWRvbmx5IEZOT1JEX0I9MgoJcmVhZG9ubHkgRk5PUkRfRD00CglyZWFkb25seSBGTk9SRF9GPTYKCXJlYWRvbmx5IEZOT1JEX0g9OAoJRk5PUkQtNQoJdHlwZXNldCBGTk9SRF9BCgl0eXBlc2V0IC1yIEZOT1JEX0IKCXR5cGVzZXQgLXggRk5PUkRfQwoJdHlwZXNldCAteCAtciBGTk9SRF9ECgl0eXBlc2V0IC1pIEZOT1JEX0UKCXR5cGVzZXQgLWkgLXIgRk5PUkRfRgoJdHlwZXNldCAtaSAteCBGTk9SRF9HCgl0eXBlc2V0IC1pIC14IC1yIEZOT1JEX0gKCUZOT1JELTYKCXR5cGVzZXQgRk5PUkRfQT0xCgl0eXBlc2V0IC1yIEZOT1JEX0I9MgoJdHlwZXNldCAteCBGTk9SRF9DPTMKCXR5cGVzZXQgLXggLXIgRk5PUkRfRD00Cgl0eXBlc2V0IC1pIEZOT1JEX0U9NQoJdHlwZXNldCAtaSAtciBGTk9SRF9GPTYKCXR5cGVzZXQgLWkgLXggRk5PUkRfRz03Cgl0eXBlc2V0IC1pIC14IC1yIEZOT1JEX0g9OAoJRk5PUkQtNwoJRk5PUkRfQT0xCglGTk9SRF9CPTIKCUZOT1JEX0M9MwoJRk5PUkRfRD00CglGTk9SRF9FPTUKCUZOT1JEX0Y9NgoJRk5PUkRfRz03CglGTk9SRF9IPTgKCUZOT1JELTgKCXNldCAtQSBmbm9yZAoJdHlwZXNldCBmbm9yZFswXT00MgoJdHlwZXNldCBmbm9yZFsxXT0yMwoJRk5PUkQtOQotLS0KbmFtZTogcmVncmVzc2lvbi02NApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIHJlZGVmaW5lIGZ1bmN0aW9ucyBjYWxsaW5nIHRpbWUgYnVpbHRpbgpzdGRpbjoKCXQoKSB7CgkJdGltZSA+L2Rldi9udWxsCgl9Cgl0IDI+L2Rldi9udWxsCgl0KCkgewoJCXRpbWUKCX0KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjUKZGVzY3JpcHRpb246CgljaGVjayBmb3IgYSByZWdyZXNzaW9uIHdpdGggc2xlZXAgYnVpbHRpbiBhbmQgc2lnbmFsIG1hc2sKY2F0ZWdvcnk6ICFub2pzaWcKdGltZS1saW1pdDogMwpzdGRpbjoKCXNsZWVwIDEKCWVjaG8gYmx1YiB8JgoJd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyA6OyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTY2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBxdW90aW5nIGlzIHNhbmUKY2F0ZWdvcnk6ICFub2pzaWcKc3RkaW46CglhY19zcGFjZT0nICcKCWFjX25ld2xpbmU9JwoJJwoJc2V0IHwgZ3JlcCBeYWNfIHwmCglzZXQgLUEgbGluZXMKCXdoaWxlIElGUz0gcmVhZCAtcHIgbGluZTsgZG8KCQlpZiBbWyAkbGluZSA9ICpzcGFjZSogXV07IHRoZW4KCQkJbGluZXNbMF09JGxpbmUKCQllbHNlCgkJCWxpbmVzWzFdPSRsaW5lCgkJZmkKCWRvbmUKCWZvciBsaW5lIGluICIke2xpbmVzW0BdfSI7IGRvCgkJcHJpbnQgLXIgLS0gIiRsaW5lIgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhY19zcGFjZT0nICcKCWFjX25ld2xpbmU9JCdcbicKLS0tCm5hbWU6IHJlYWRvbmx5LTAKZGVzY3JpcHRpb246CglFbnN1cmUgcmVhZG9ubHkgaXMgaG9ub3VyZWQgZm9yIGFzc2lnbm1lbnRzIGFuZCB1bnNldApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ3U9eDsgZWNobyAkPyAkdSAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CgllY2hvID0KCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHU7IHU9eDsgZWNobyAkPyAkdSAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CgllY2hvID0KCSIkX19wcm9nbmFtZSIgLWMgJ3U9eDsgcmVhZG9ubHkgdTsgdW5zZXQgdTsgZWNobyAkPyAkdSAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAgeCAuCgk9CglhYm9ydGVkLCAyCgk9CgkxIHggLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0xCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciBleHBvcnQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSBmb287IGV4cG9ydCBmb289YTsgZWNobyAkPycgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CglhYm9ydGVkLCAyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWQtb25seS8KLS0tCm5hbWU6IHJlYWRvbmx5LTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnZXRvcHRzIHdvcmtzIGFzIGludGVuZGVkLCBmb3IgcmVhZG9ubHktMmIgdG8gYmUgdmFsaWQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdzZXQgLS0gLWEgYjsgZ2V0b3B0cyBhIGM7IGVjaG8gJD8gJGMgLjsgZ2V0b3B0cyBhIGM7IGVjaG8gJD8gJGMgLicgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwIGEgLgoJMSA/IC4KLS0tCm5hbWU6IHJlYWRvbmx5LTJiCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciBnZXRvcHRzCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgYzsgc2V0IC0tIC1hIGI7IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMiAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWQtb25seS8KLS0tCm5hbWU6IHJlYWRvbmx5LTMKZGVzY3JpcHRpb246CglodHRwOi8vYXVzdGluZ3JvdXBidWdzLm5ldC92aWV3LnBocD9pZD0zNjcgZm9yIHJlYWQKc3RkaW46CgllY2hvIHggfCAiJF9fcHJvZ25hbWUiIC1jICdyZWFkIHM7IGVjaG8gJD8gJHMgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyB5IHwgIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgczsgcmVhZCBzOyBlY2hvICQ/ICRzIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMCB4IC4KCTIgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS00CmRlc2NyaXB0aW9uOgoJRG8gbm90IHBlcm1pdCBieXBhc3NpbmcgcmVhZG9ubHkgZm9yIGZpcnN0IGFycmF5IGl0ZW0Kc3RkaW46CglzZXQgLUEgYXJyIC0tIGZvbyBiYXIKCXJlYWRvbmx5IGFycgoJYXJyPWJhegoJcHJpbnQgLXIgLS0gIiR7YXJyW0BdfSIKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWRbIC1dP29ubHkvCi0tLQpuYW1lOiBzeW50YXgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbG9uZSBhbXBlcnNhbmQgaXMgYSBzeW50YXggZXJyb3IKc3RkaW46CgkgJgpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46Cgkvc3ludGF4IGVycm9yLwotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgaW5zaWRlIG9mICR7fQpzdGRpbjoKCWFiYz0yCgllY2hvICR7YWJcCgljfQpleHBlY3RlZC1zdGRvdXQ6CgkyCi0tLQpuYW1lOiB4eHgtcXVvdGVkLW5ld2xpbmUtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXDxuZXdsaW5lPiB3b3JrcyBhdCB0aGUgc3RhcnQgb2YgYSBoZXJlIGRvY3VtZW50CnN0ZGluOgoJY2F0IDw8IEVPXAoJRgoJaGkKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgYXQgdGhlIGVuZCBvZiBhIGhlcmUgZG9jdW1lbnQKc3RkaW46CgljYXQgPDwgRU9GCgloaQoJRU9cCglGCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiB4eHgtbXVsdGktYXNzaWdubWVudC1jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFzc2lnbm1lbnRzIGluIGEgY29tbWFuZCBhZmZlY3Qgc3Vic2VxdWVudCBhc3NpZ25tZW50cwoJaW4gdGhlIHNhbWUgY29tbWFuZApzdGRpbjoKCUZPTz1hYmMKCUZPTz0xMjMgQkFSPSRGT08KCWVjaG8gJEJBUgpleHBlY3RlZC1zdGRvdXQ6CgkxMjMKLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LWNtZApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgd2l0aCBhCgljb21tYW5kIG5hbWUgbWF0Y2hlcyBQT1NJWC4gU2VlOgoJaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5zdGFuZGFyZHMucG9zaXguYXVzdGluLmdlbmVyYWwvMTkyNQpzdGRpbjoKCVg9YSBZPWI7IFg9JFkgWT0kWCAiJF9fcHJvZ25hbWUiIC1jICdlY2hvIDEgJFggJFkgLic7IGVjaG8gMiAkWCAkWSAuCgl1bnNldCBYIFkgWgoJWD1hIFk9JHtYPWJ9IFo9JFggIiRfX3Byb2duYW1lIiAtYyAnZWNobyAzICRaIC4nCgl1bnNldCBYIFkgWgoJWD1hIFk9JHtYPWJ9IFo9JFg7IGVjaG8gNCAkWiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYiBhIC4KCTIgYSBiIC4KCTMgYiAuCgk0IGEgLgotLS0KbmFtZTogeHh4LW11bHRpLWFzc2lnbm1lbnQtcG9zaXgtbm9jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBiZWhhdmlvdXIgZm9yIG11bHRpcGxlIGFzc2lnbm1lbnRzIHdpdGggbm8KCWNvbW1hbmQgbmFtZSBtYXRjaGVzIFBPU0lYIChEZWJpYW4gIzMzNDE4MikuIFNlZToKCWh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuc3RhbmRhcmRzLnBvc2l4LmF1c3Rpbi5nZW5lcmFsLzE5MjUKc3RkaW46CglYPWEgWT1iOyBYPSRZIFk9JFg7IGVjaG8gMSAkWCAkWSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYiBiIC4KLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LXN1YmFzc2lnbgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgbWF0Y2hlcyBQT1NJWDoKCS0gVGhlIGFzc2lnbm1lbnQgd29yZHMgc2hhbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uCgkgIGVudmlyb25tZW50LgoJLSBUaGUgYXNzaWdubWVudHMgaGFwcGVuIGluIHRoZSB0ZW1wb3JhcnkgZXhlY3V0aW9uIGVudmlyb25tZW50LgpzdGRpbjoKCXVuc2V0IFggWSBaCglaPWEgWT0ke1g6PWJ9IHNoIC1jICdlY2hvICskWCsgKyRZKyArJForJwoJZWNobyAvJFgvCgkjIE5vdyBmb3IgdGhlIHNwZWNpYWwgY2FzZToKCXVuc2V0IFggWSBaCglYPSBZPSR7WDo9Yn0gc2ggLWMgJ2VjaG8gKyRYKyArJFkrJwoJZWNobyAvJFgvCmV4cGVjdGVkLXN0ZG91dDoKCSsrICtiKyArYSsKCS9iLwoJKysgK2IrCgkvYi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTEKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgaWYgZXhlYyBzZXRzIGl0J3MgZW52aXJvbm1lbnQgY29ycmVjdGx5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG51bnNldCBSQU5ET01cbmV4cG9ydCB8IHdoaWxlIElGUz0gcmVhZCAtcicgXAoJICAgICdSQU5ET007IGRvIGV2YWwgJ1wnJ3ByaW50IC1yIC0tICIkUkFORE9NPSQnXCcnIiRSQU5ET00iJ1wnXCJcJ1w7IFwKCSAgICBkb25lID5lbnY7IGNobW9kICt4IGVudjsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJRk9PPWJhciBleGVjIGVudgpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS8oXnwuKlxuKUZPTz1iYXJcbi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTIKZGVzY3JpcHRpb246CglDaGVjayB0byBtYWtlIHN1cmUgZXhlYyBkb2Vzbid0IGNoYW5nZSBlbnZpcm9ubWVudCBpZiBhIHByb2dyYW0KCWlzbid0IGV4ZWMtZWQKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICgllbnYgPmJhcjEKCUZPTz1iYXIgZXhlYzsgZW52ID5iYXIyCgljbXAgLXMgYmFyMSBiYXIyCi0tLQpuYW1lOiBleGVjLWZ1bmN0aW9uLWVudmlyb25tZW50LTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NpZ25tZW50cyBpbiBmdW5jdGlvbiBjYWxscyBhbmQgd2hldGhlciB0aGV5IGFmZmVjdAoJdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50IChrc2g5MywgU1VTdjQpCnN0ZGluOgoJZigpIHsgYT0yOyB9OyBnKCkgeyBiPTM7IGVjaG8geSRjLTsgfTsgYT0xIGY7IGI9MjsgYz0xIGcKCWVjaG8geCRhLSRiLSB6JGMtCmV4cGVjdGVkLXN0ZG91dDoKCXkxLQoJeDItMy0gejEtCi0tLQpuYW1lOiB4eHgtd2hhdC1kby15b3UtY2FsbC10aGlzLTEKc3RkaW46CgllY2hvICIke2ZvbzotImEifSoiCmV4cGVjdGVkLXN0ZG91dDoKCWEqCi0tLQpuYW1lOiB4eHgtcHJlZml4LXN0cmlwLTEKc3RkaW46Cglmb289J2EgY2RlZicKCWVjaG8gJHtmb28jYSBjfQpleHBlY3RlZC1zdGRvdXQ6CglkZWYKLS0tCm5hbWU6IHh4eC1wcmVmaXgtc3RyaXAtMgpzdGRpbjoKCXNldCBhIGMKCXg9J2EgY2RlZicKCWVjaG8gJHt4IyQqfQpleHBlY3RlZC1zdGRvdXQ6CglkZWYKLS0tCm5hbWU6IHh4eC12YXJpYWJsZS1zeW50YXgtMQpzdGRpbjoKCWVjaG8gJHs6fQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTIKc3RkaW46CglzZXQgMAoJZWNobyAkeyo6MH0KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogeHh4LXZhcmlhYmxlLXN5bnRheC0zCnN0ZGluOgoJc2V0IC1BIGZvbyAwCgllY2hvICR7Zm9vWypdOjB9CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHh4eC12YXJpYWJsZS1zeW50YXgtNApkZXNjcmlwdGlvbjoKCU5vdCBhbGwga2luZHMgb2YgdHJpbXMgYXJlIGN1cnJlbnRseSBpbXBvc3NpYmxlLCBjaGVjayB0aG9zZSB3aG8gZG8Kc3RkaW46Cglmb28oKSB7CgkJZWNobyAiPCQqPiBYJHsqOisgfVgiCgl9Cglmb28gYSBiCglmb28gIiIgYwoJZm9vICIiCglmb28gIiIgIiIKCUlGUz06Cglmb28gYSBiCglmb28gIiIgYwoJZm9vICIiCglmb28gIiIgIiIKCUlGUz0KCWZvbyBhIGIKCWZvbyAiIiBjCglmb28gIiIKCWZvbyAiIiAiIgpleHBlY3RlZC1zdGRvdXQ6Cgk8YSBiPiBYIFgKCTwgYz4gWCBYCgk8PiBYWAoJPCA+IFggWAoJPGE6Yj4gWCBYCgk8OmM+IFggWAoJPD4gWFgKCTw6PiBYIFgKCTxhYj4gWCBYCgk8Yz4gWCBYCgk8PiBYWAoJPD4gWFgKLS0tCm5hbWU6IHh4eC1zdWJzdGl0dXRpb24tZXZhbC1vcmRlcgpkZXNjcmlwdGlvbjoKCUNoZWNrIG9yZGVyIG9mIGV2YWx1YXRpb24gb2YgZXhwcmVzc2lvbnMKc3RkaW46CglpPTEgeD0geT0KCXNldCAtQSBBIGFiYyBkZWYgR0hJIGogRyBrCgllY2hvICR7QVt4PShpKz0xKV0jJHtBW3k9KGkrPTIpXX19CgllY2hvICR4ICR5CmV4cGVjdGVkLXN0ZG91dDoKCUhJCgkyIDQKLS0tCm5hbWU6IHh4eC1zZXQtb3B0aW9uLTEKZGVzY3JpcHRpb246CglDaGVjayBvcHRpb24gcGFyc2luZyBpbiBzZXQKc3RkaW46CglzZXQgLXZzQSBmb28gLS0gQSAxIDMgMgoJZWNobyAke2Zvb1sqXX0KZXhwZWN0ZWQtc3RkZXJyOgoJZWNobyAke2Zvb1sqXX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAyIDMgQQotLS0KbmFtZTogeHh4LWV4ZWMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZXhlYyBleGl0cyBmb3IgYnVpbHQtaW5zCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCWV4ZWMgZWNobyBoaQoJZWNobyBzdGlsbCBoZXJyZQpleHBlY3RlZC1zdGRvdXQ6CgloaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogeHh4LXdoaWxlLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHdoaWxlIGxvb3BzCglYWFggbmVlZCB0byBkbyBzYW1lIGZvciBmb3Ivc2VsZWN0L3VudGlsIGxvb3BzCnN0ZGluOgoJaT14Cgl3aGlsZSBbICRpICE9IHh4eCBdIDsgZG8KCSAgICBpPXgkaQoJICAgIGlmIFsgJGkgPSB4eHggXSA7IHRoZW4KCQlmYWxzZQoJCWNvbnRpbnVlCgkgICAgZmkKCWRvbmUKCWVjaG8gbG9vcDE9JD8KCQoJaT14Cgl3aGlsZSBbICRpICE9IHh4eCBdIDsgZG8KCSAgICBpPXgkaQoJICAgIGlmIFsgJGkgPSB4eHggXSA7IHRoZW4KCQlmYWxzZQoJCWJyZWFrCgkgICAgZmkKCWRvbmUKCWVjaG8gbG9vcDI9JD8KCQoJaT14Cgl3aGlsZSBbICRpICE9IHh4eCBdIDsgZG8KCSAgICBpPXgkaQoJICAgIGZhbHNlCglkb25lCgllY2hvIGxvb3AzPSQ/CmV4cGVjdGVkLXN0ZG91dDoKCWxvb3AxPTAKCWxvb3AyPTAKCWxvb3AzPTEKLS0tCm5hbWU6IHh4eC1zdGF0dXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYmxhbmsgbGluZXMgZG9uJ3QgY2xlYXIgJD8KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJKGV4aXQgMSkKCWVjaG8gJD8KCShleGl0IDEpCgkKCWVjaG8gJD8KCXRydWUKZXhwZWN0ZWQtc3Rkb3V0OgoJMQoJMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogeHh4LXN0YXR1cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAkPyBpcyBwcmVzZXJ2ZWQgaW4gc3Vic2hlbGxzLCBpbmNsdWRlcywgdHJhcHMuCnN0ZGluOgoJKGV4aXQgMSkKCQoJZWNobyBibGFuazogJD8KCQoJKGV4aXQgMikKCShlY2hvIHN1YnNoZWxsOiAkPykKCQoJZWNobyAnZWNobyBpbmNsdWRlOiAkPycgPiBmb28KCShleGl0IDMpCgkuIC4vZm9vCgkKCXRyYXAgJ2VjaG8gdHJhcDogJD8nIEVSUgoJKGV4aXQgNCkKCWVjaG8gZXhpdDogJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYmxhbms6IDEKCXN1YnNoZWxsOiAyCglpbmNsdWRlOiAzCgl0cmFwOiA0CglleGl0OiA0Ci0tLQpuYW1lOiB4eHgtY2xlYW4tY2hhcnMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIE1BR0lDIGNoYXJhY3RlciBpcyBzdHVmZmVkIGNvcnJlY3RseQpzdGRpbjoKCWVjaG8gYGVjaG8gW6NgCmV4cGVjdGVkLXN0ZG91dDoKCVujCi0tLQpuYW1lOiB4eHgtcGFyYW0tc3Vic3QtcW1hcmstMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHByZXNpb24gb2YgZXJyb3IgbWVzc2FnZSB3aXRoIG51bGwgc3RyaW5nLiAgQWNjb3JkaW5nIHRvCglQT1NJWCwgaXQgc2hvdWxkbid0IHByaW50IHRoZSBlcnJvciBhcyAnd29yZCcgaXNuJ3Qgb21taXR0ZWQuCglrc2g4OC85MywgU29sYXJpcyAvYmluL3NoIGFuZCAvdXNyL3hwZzQvYmluL3NoIGFsbCBwcmludCB0aGUgZXJyb3IuCnN0ZGluOgoJdW5zZXQgZm9vCgl4PQoJZWNobyB4JHtmb28/JHh9CmV4cGVjdGVkLWV4aXQ6IDEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46ICEvbm90IHNldC8KLS0tCm5hbWU6IHh4eC1wYXJhbS1fLTEKIyBmYWlscyBkdWUgdG8gd2VpcmRuZXNzIG9mIGV4ZWN2IHN0dWZmCmNhdGVnb3J5OiAhb3M6dXdpbi1udApkZXNjcmlwdGlvbjoKCUNoZWNrIGMgZmxhZyBpcyBzZXQuCmFyZ3VtZW50czogIS1jIWVjaG8gIlskLV0iIQpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjogL15cWy4qYy4qXF0kLwotLS0KbmFtZTogdGlsZGUtZXhwYW5kLTEKZGVzY3JpcHRpb246CglDaGVjayB0aWxkZSBleHBhbnNpb24gYWZ0ZXIgZXF1YWwgc2lnbnMKZW52LXNldHVwOiAhSE9NRT0vc3dlZXQhCnN0ZGluOgoJZWNobyAke0E9YT19fiBiPX4gYz1kfiB+CglleHBvcnQgZT1+IGY9ZH4KCWNvbW1hbmQgY29tbWFuZCBleHBvcnQgZz1+IGg9ZH4KCWVjaG8gIi4gJGUgLiAkZiAuIgoJZWNobyAiLiAkZyAuICRoIC4iCglzZXQgLW8gcG9zaXgKCXVuc2V0IEEgZSBmIGcgaAoJZWNobyAke0E9YT19fiBiPX4gYz1kfiB+CglleHBvcnQgZT1+IGY9ZH4KCWNvbW1hbmQgY29tbWFuZCBleHBvcnQgZz1+IGg9ZH4KCWVjaG8gIi4gJGUgLiAkZiAuIgoJZWNobyAiLiAkZyAuICRoIC4iCmV4cGVjdGVkLXN0ZG91dDoKCWE9L3N3ZWV0IGI9L3N3ZWV0IGM9ZH4gL3N3ZWV0CgkuIC9zd2VldCAuIGR+IC4KCS4gL3N3ZWV0IC4gZH4gLgoJYT1+IGI9fiBjPWR+IC9zd2VldAoJLiAvc3dlZXQgLiBkfiAuCgkuIC9zd2VldCAuIGR+IC4KLS0tCm5hbWU6IHRpbGRlLWV4cGFuZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGlsZGUgZXhwYW5zaW9uIHdvcmtzCmVudi1zZXR1cDogIUhPTUU9L3N3ZWV0IQpzdGRpbjoKCXdkPSRQV0QKCWNkIC8KCXBsdXM9JChwcmludCAtciAtLSB+KykKCW1pbnVzPSQocHJpbnQgLXIgLS0gfi0pCgluaXg9JChwcmludCAtciAtLSB+KQoJW1sgJHBsdXMgPSAvIF1dOyBlY2hvIG9uZSAkPyAuCglbWyAkbWludXMgPSAiJHdkIiBdXTsgZWNobyB0d28gJD8gLgoJW1sgJG5peCA9IC9zd2VldCBdXTsgZWNobyBuaXggJD8gLgpleHBlY3RlZC1zdGRvdXQ6CglvbmUgMCAuCgl0d28gMCAuCgluaXggMCAuCi0tLQpuYW1lOiBleGl0LWVyci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgY29uZGl0aW9ucwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCgljaG1vZCAreCBlbnYgZmFsc2UKCVBBVEg9LiRQQVRIU0VQJFBBVEgKCXNldCAtZXgKCWVudiBmYWxzZSAmJiBlY2hvIHNvbWV0aGluZwoJZWNobyBFTkQKZXhwZWN0ZWQtc3Rkb3V0OgoJRU5ECmV4cGVjdGVkLXN0ZGVycjoKCSsgZW52IGZhbHNlCgkrIGVjaG8gRU5ECi0tLQpuYW1lOiBleGl0LWVyci0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgZWRnZSBjb25kaXRpb25zIChQT1NJWGx5KQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMCcgPnRydWUKCWNobW9kICt4IGVudiBmYWxzZQoJUEFUSD0uJFBBVEhTRVAkUEFUSAoJc2V0IC1leAoJaWYgZW52IHRydWU7IHRoZW4KCQllbnYgZmFsc2UgJiYgZWNobyBzb21ldGhpbmcKCWZpCgllY2hvIEVORApleHBlY3RlZC1zdGRvdXQ6CglFTkQKZXhwZWN0ZWQtc3RkZXJyOgoJKyBlbnYgdHJ1ZQoJKyBlbnYgZmFsc2UKCSsgZWNobyBFTkQKLS0tCm5hbWU6IGV4aXQtZXJyLTMKZGVzY3JpcHRpb246CglwZGtzaCByZWdyZXNzaW9uIHdoaWNoIEFUJlQga3NoIGRvZXMgcmlnaHQKCVRGTSBzYXlzOiBbc2V0XSAtZSB8IGVycmV4aXQKCQlFeGl0IChhZnRlciBleGVjdXRpbmcgdGhlIEVSUiB0cmFwKSAuLi4Kc3RkaW46Cgl0cmFwICdlY2hvIEVYSVQnIEVYSVQKCXRyYXAgJ2VjaG8gRVJSJyBFUlIKCXNldCAtZQoJY2QgL1hYWFhYIDI+L2Rldi9udWxsCgllY2hvIERPTkUKCWV4aXQgMApleHBlY3RlZC1zdGRvdXQ6CglFUlIKCUVYSVQKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBleGl0LWVyci00CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoUE9TSVgpCnN0ZGluOgoJc2V0IC1lCgllY2hvIHByZQoJaWYgdHJ1ZSA7IHRoZW4KCQlmYWxzZSAmJiBlY2hvIGZvbwoJZmkKCWVjaG8gYmFyCmV4cGVjdGVkLXN0ZG91dDoKCXByZQoJYmFyCi0tLQpuYW1lOiBleGl0LWVyci01CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoUE9TSVgpCnN0ZGluOgoJc2V0IC1lCglmb28oKSB7CgkJd2hpbGUgWyAiJDEiIF07IGRvCgkJCWZvciBFIGluICR4OyBkbwoJCQkJWyAiJDEiID0gIiRFIiBdICYmIHsgc2hpZnQgOyBjb250aW51ZSAyIDsgfQoJCQlkb25lCgkJCXg9IiR4ICQxIgoJCQlzaGlmdAoJCWRvbmUKCQllY2hvICR4Cgl9CgllY2hvIHByZQoJZm9vIGEgYiBiIGMKCWVjaG8gcG9zdApleHBlY3RlZC1zdGRvdXQ6CglwcmUKCWEgYiBjCglwb3N0Ci0tLQpuYW1lOiBleGl0LWVyci02CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoQlNEIG1ha2UpCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46Cglta2RpciB6ZCB6ZC9hIHpkL2IKCXByaW50ICdhbGw6XG5cdEBlY2hvIGVpbnNcblx0QGV4aXQgNDJcbicgPnpkL2EvTWFrZWZpbGUKCXByaW50ICdhbGw6XG5cdEBlY2hvIHp3ZWlcbicgPnpkL2IvTWFrZWZpbGUKCXdkPSQocHdkKQoJc2V0IC1lCglmb3IgZW50cnkgaW4gYSBiOyBkbyAoICBzZXQgLWU7ICBpZiBbWyAtZCAkd2QvemQvJGVudHJ5LmkzODYgXV07IHRoZW4gIF9uZXdkaXJfPSIkZW50cnkuaTM4NiI7ICBlbHNlICBfbmV3ZGlyXz0iJGVudHJ5IjsgIGZpOyAgaWYgW1sgLXogJF9USElTRElSXyBdXTsgdGhlbiAgX25leHRkaXJfPSIkX25ld2Rpcl8iOyAgZWxzZSAgX25leHRkaXJfPSIkX1RISVNESVJfLyRfbmV3ZGlyXyI7ICBmaTsgIF9tYWtlZmlsZV9zcGVjXz07ICBbWyAhIC1mICR3ZC96ZC8kX25ld2Rpcl8vTWFrZWZpbGUuYnNkLXdyYXBwZXIgXV0gIHx8IF9tYWtlZmlsZV9zcGVjXz0iLWYgTWFrZWZpbGUuYnNkLXdyYXBwZXIiOyAgc3Vic2tpcGRpcj07ICBmb3Igc2tpcGRpciBpbiA7IGRvICBzdWJlbnRyeT0ke3NraXBkaXIjJGVudHJ5fTsgIGlmIFtbICRzdWJlbnRyeSAhPSAkc2tpcGRpciBdXTsgdGhlbiAgaWYgW1sgLXogJHN1YmVudHJ5IF1dOyB0aGVuICBlY2hvICIoJF9uZXh0ZGlyXyBza2lwcGVkKSI7ICBicmVhazsgIGZpOyAgc3Vic2tpcGRpcj0iJHN1YnNraXBkaXIgJHtzdWJlbnRyeSMvfSI7ICBmaTsgIGRvbmU7ICBpZiBbWyAteiAkc2tpcGRpciB8fCAtbiAkc3ViZW50cnkgXV07IHRoZW4gIGVjaG8gIj09PT4gJF9uZXh0ZGlyXyI7ICBjZCAkd2QvemQvJF9uZXdkaXJfOyAgbWFrZSBTS0lQRElSPSIkc3Vic2tpcGRpciIgJF9tYWtlZmlsZV9zcGVjXyAgX1RISVNESVJfPSIkX25leHRkaXJfIiAgIGFsbDsgIGZpOyAgKSBkb25lIDI+JjEgfCBzZWQgInMhJHdkIVdEIWciCmV4cGVjdGVkLXN0ZG91dDoKCT09PT4gYQoJZWlucwoJKioqIEVycm9yIGNvZGUgNDIKCQoJU3RvcCBpbiBXRC96ZC9hIChsaW5lIDIgb2YgTWFrZWZpbGUpLgotLS0KbmFtZTogZXhpdC1lcnItNwpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHJlZ3Jlc3Npb24gKExQIzExMDQ1NDMpCnN0ZGluOgoJc2V0IC1lCglibGEoKSB7CgkJWyAteCAkUFdEL25vbmV4aXN0YW50IF0gJiYgJFBXRC9ub25leGlzdGFudAoJfQoJZWNobyB4CglibGEKCWVjaG8geSQ/CmV4cGVjdGVkLXN0ZG91dDoKCXgKZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogZXhpdC1lcnItOApkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHJlZ3Jlc3Npb24gKERlYmlhbiAjNzAwNTI2KQpzdGRpbjoKCXNldCAtZQoJX2RiX2NtZCgpIHsgcmV0dXJuICQxOyB9CglkYl9pbnB1dCgpIHsgX2RiX2NtZCAzMDsgfQoJZGJfZ28oKSB7IF9kYl9jbWQgMDsgfQoJZGJfaW5wdXQgfHwgOgoJZGJfZ28KCWV4aXQgMAotLS0KbmFtZTogZXhpdC1lbm9lbnQtMQpkZXNjcmlwdGlvbjoKCVNVU3Y0IHNheXMgdGhhdCB0aGUgc2hlbGwgc2hvdWxkIGV4aXQgd2l0aCAxMjYvMTI3IGluIHNvbWUgc2l0dWF0aW9ucwpzdGRpbjoKCWk9MAoJKGVjaG87IGVjaG8gOikgPngKCSIkX19wcm9nbmFtZSIgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCgkiJF9fcHJvZ25hbWUiIC1jIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJZWNobyBleGl0IDQyID54CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCXJtIC1mIHgKCSIkX19wcm9nbmFtZSIgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCgkiJF9fcHJvZ25hbWUiIC1jIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgpleHBlY3RlZC1zdGRvdXQ6CgkwIDAgLgoJMSAxMjYgLgoJMiA0MiAuCgkzIDEyNiAuCgk0IDEyNyAuCgk1IDEyNyAuCi0tLQpuYW1lOiBleGl0LWV2YWwtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGV2YWwgdnMgc3Vic3RpdHV0aW9uIGV4aXQgY29kZXMgKGtzaDkzIGFsaWtlKQpzdGRpbjoKCShleGl0IDEyKQoJZXZhbCAkKGZhbHNlKQoJZWNobyBBICQ/CgkoZXhpdCAxMikKCWV2YWwgJyAkKGZhbHNlKScKCWVjaG8gQiAkPwoJKGV4aXQgMTIpCglldmFsICIgJChmYWxzZSkiCgllY2hvIEMgJD8KCShleGl0IDEyKQoJZXZhbCAiZXZhbCAkKGZhbHNlKSIKCWVjaG8gRCAkPwoJKGV4aXQgMTIpCglldmFsICdldmFsICciJChmYWxzZSkiCgllY2hvIEUgJD8KCUlGUz0iJElGUzoiCgkoZXhpdCAxMikKCWV2YWwgJChlY2hvIDo7IGZhbHNlKQoJZWNobyBGICQ/CgllY2hvIC1uICJHICIKCShleGl0IDEyKQoJZXZhbCAnZWNobyAkPycKCWVjaG8gSCAkPwpleHBlY3RlZC1zdGRvdXQ6CglBIDAKCUIgMQoJQyAwCglEIDAKCUUgMAoJRiAwCglHIDEyCglIIDAKLS0tCm5hbWU6IGV4aXQtdHJhcC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAiZXhpdCIgd2l0aCBubyBhcmd1bWVudHMgYmVoYXZlcyBTVVN2NCBjb25mb3JtYW50LgpzdGRpbjoKCXRyYXAgJ2VjaG8gaGk7IGV4aXQnIEVYSVQKCWV4aXQgOQpleHBlY3RlZC1zdGRvdXQ6CgloaQpleHBlY3RlZC1leGl0OiA5Ci0tLQpuYW1lOiBleGl0LXRyYXAtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgRVJSIGFuZCBFWElUIHRyYXBzIGFyZSBydW4ganVzdCBsaWtlIGtzaDkzIGRvZXMuCglHTlUgYmFzaCBkb2VzIG5vdCBydW4gRVJ0cmFwIGluIMKxZSBldmFsLXVuZGVmIGJ1dCBydW5zIGl0Cgl0d2ljZSAoYnVnPykgaW4gK2UgZXZhbC1mYWxzZSwgc28gZG9lcyBrc2g5MyAoYnVnPyksIHdoaWNoCglhbHNvIGhhcyBhIGJ1ZyB0byBjb250aW51ZSBleGVjdXRpb24gKGVjaG9pbmcgImFuZCBvdXQiIGFuZAoJcmV0dXJuaW5nIDApIGluICtlIGV2YWwtdW5kZWYuCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4IgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gImFuZCBydW4gJDIiCglldmFsICQyCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInh0IgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gdHJ1ZScKCXRydWUKCWVjaG8gYW5kIG91dApmaWxlLXNldHVwOiBmaWxlIDY0NCAieGYiCgl2PTsgdW5zZXQgdgoJdHJhcCAnZWNobyBFWHRyYXAnIEVYSVQKCXRyYXAgJ2VjaG8gRVJ0cmFwJyBFUlIKCXNldCAkMQoJZWNobyAnYW5kIHJ1biBmYWxzZScKCWZhbHNlCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInh1IgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gJHt2P30nCgkke3Y/fQoJZWNobyBhbmQgb3V0CnN0ZGluOgoJcnVudGVzdCgpIHsKCQlybSAtZiByYwoJCSgKCQkJIiRfX3Byb2duYW1lIiAiJEAiCgkJCWVjaG8gJD8gPnJjCgkJKSAyPiYxIHwgc2VkIFwKCQkgICAgLWUgJ3MvcGFyYW1ldGVyIG5vdCBzZXQvcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldC8nIFwKCQkgICAgLWUgJ3MvW1tdNl0vLycgLWUgJ3MvOiBldmFsOiBsaW5lIDEvLycgLWUgJ3MvOiBsaW5lIDYvLycgXAoJCSAgICAtZSAicwFeJHtfX3Byb2duYW1lJS5leGV9XC4qZSp4KmUqOiA8c3RkaW4+XFtbMC05XSpdAVBST0cBIgoJfQoJeGU9LWUKCWVjaG8gOiAkeGUKCXJ1bnRlc3QgeCAkeGUgdHJ1ZQoJZWNobyA9IGV2YWwtdHJ1ZSAkKDxyYykgLgoJcnVudGVzdCB4ICR4ZSBmYWxzZQoJZWNobyA9IGV2YWwtZmFsc2UgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgJyR7dj99JwoJZWNobyA9IGV2YWwtdW5kZWYgJCg8cmMpIC4KCXJ1bnRlc3QgeHQgJHhlCgllY2hvID0gbm9ldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeGYgJHhlCgllY2hvID0gbm9ldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHh1ICR4ZQoJZWNobyA9IG5vZXZhbC11bmRlZiAkKDxyYykgLgoJeGU9K2UKCWVjaG8gOiAkeGUKCXJ1bnRlc3QgeCAkeGUgdHJ1ZQoJZWNobyA9IGV2YWwtdHJ1ZSAkKDxyYykgLgoJcnVudGVzdCB4ICR4ZSBmYWxzZQoJZWNobyA9IGV2YWwtZmFsc2UgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgJyR7dj99JwoJZWNobyA9IGV2YWwtdW5kZWYgJCg8cmMpIC4KCXJ1bnRlc3QgeHQgJHhlCgllY2hvID0gbm9ldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeGYgJHhlCgllY2hvID0gbm9ldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHh1ICR4ZQoJZWNobyA9IG5vZXZhbC11bmRlZiAkKDxyYykgLgpleHBlY3RlZC1zdGRvdXQ6Cgk6IC1lCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBldmFsLXRydWUgMCAuCglhbmQgcnVuIGZhbHNlCglFUnRyYXAKCUVYdHJhcAoJPSBldmFsLWZhbHNlIDEgLgoJYW5kIHJ1biAke3Y/fQoJeDogdjogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJRVJ0cmFwCglFWHRyYXAKCT0gZXZhbC11bmRlZiAxIC4KCWFuZCBydW4gdHJ1ZQoJYW5kIG91dAoJRVh0cmFwCgk9IG5vZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglFWHRyYXAKCT0gbm9ldmFsLWZhbHNlIDEgLgoJYW5kIHJ1biAke3Y/fQoJeHU6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVYdHJhcAoJPSBub2V2YWwtdW5kZWYgMSAuCgk6ICtlCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBldmFsLXRydWUgMCAuCglhbmQgcnVuIGZhbHNlCglFUnRyYXAKCWFuZCBvdXQKCUVYdHJhcAoJPSBldmFsLWZhbHNlIDAgLgoJYW5kIHJ1biAke3Y/fQoJeDogdjogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJRVJ0cmFwCglFWHRyYXAKCT0gZXZhbC11bmRlZiAxIC4KCWFuZCBydW4gdHJ1ZQoJYW5kIG91dAoJRVh0cmFwCgk9IG5vZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglhbmQgb3V0CglFWHRyYXAKCT0gbm9ldmFsLWZhbHNlIDAgLgoJYW5kIHJ1biAke3Y/fQoJeHU6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVYdHJhcAoJPSBub2V2YWwtdW5kZWYgMSAuCi0tLQpuYW1lOiBleGl0LXRyYXAtaW50ZXJhY3RpdmUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGludGVyYWN0aXZlIHNoZWxsIGRvZXNuJ3QgZXhpdCB2aWEgRVhJVCB0cmFwIG9uIHN5bnRheCBlcnJvcgphcmd1bWVudHM6ICEtaSEKc3RkaW46Cgl0cmFwIC0tIEVYSVQKCWVjaG8gU3ludGF4IGVycm9yIDwKCWVjaG8gJ0FmdGVyIGVycm9yIDEnCgl0cmFwICdlY2hvIEV4aXQgdHJhcCcgRVhJVAoJZWNobyBTeW50YXggZXJyb3IgPAoJZWNobyAnQWZ0ZXIgZXJyb3IgMicKCXRyYXAgJ2VjaG8gRXhpdCB0cmFwJyBFWElUCglleGl0CgllY2hvICdBZnRlciBleGl0JwpleHBlY3RlZC1zdGRvdXQ6CglBZnRlciBlcnJvciAxCglBZnRlciBlcnJvciAyCglFeGl0IHRyYXAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46Cgkvc3ludGF4IGVycm9yOiAnbmV3bGluZScgdW5leHBlY3RlZC8KLS0tCm5hbWU6IHRlc3Qtc3RsdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0ZXN0IGFsc28gY2FuIGhhbmRsZSBzdHJpbmcxIDwgc3RyaW5nMiBldGMuCnN0ZGluOgoJdGVzdCAyMDA1LzEwLzA4ICc8JyAyMDA1LzA4LzIxICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMDgvMjEgXDwgMjAwNS8xMC8wOCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgoJdGVzdCAyMDA1LzEwLzA4ICc+JyAyMDA1LzA4LzIxICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMDgvMjEgXD4gMjAwNS8xMC8wOCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgpleHBlY3RlZC1zdGRvdXQ6CgluZWluCglqYQoJamEKCW5laW4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46ICEvdW5leHBlY3RlZCBvcC8KLS0tCm5hbWU6IHRlc3QtcHJlY2VkZW5jZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYSB3ZWlyZCBwcmVjZWRlbmNlIGNhc2UgKGFuZCBQT1NJWCBlY2hvKQpzdGRpbjoKCXRlc3QgXCggLWYgPSAtZiBcKQoJcnY9JD8KCWVjaG8gJHJ2CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IHRlc3Qtb3B0aW9uLTEKZGVzY3JpcHRpb246CglUZXN0IHRoZSB0ZXN0IC1vIG9wZXJhdG9yCnN0ZGluOgoJcnVudGVzdCgpIHsKCQl0ZXN0IC1vICQxOyBlY2hvICQ/CgkJWyAtbyAkMSBdOyBlY2hvICQ/CgkJW1sgLW8gJDEgXV07IGVjaG8gJD8KCX0KCWlmX3Rlc3QoKSB7CgkJdGVzdCAtbyAkMSAtbyAtbyAhJDE7IGVjaG8gJD8KCQlbIC1vICQxIC1vIC1vICEkMSBdOyBlY2hvICQ/CgkJW1sgLW8gJDEgfHwgLW8gISQxIF1dOyBlY2hvICQ/CgkJdGVzdCAtbyA/JDE7IGVjaG8gJD8KCX0KCWVjaG8gMHkgJChpZl90ZXN0IHV0ZjgtbW9kZSkgPQoJZWNobyAwbiAkKGlmX3Rlc3QgdXRmOC1oYWNrKSA9CgllY2hvIDE9ICQocnVudGVzdCB1dGY4LWhhY2spID0KCWVjaG8gMj0gJChydW50ZXN0ICF1dGY4LWhhY2spID0KCWVjaG8gMz0gJChydW50ZXN0ID91dGY4LWhhY2spID0KCXNldCArVQoJZWNobyAxKyAkKHJ1bnRlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDIrICQocnVudGVzdCAhdXRmOC1tb2RlKSA9CgllY2hvIDMrICQocnVudGVzdCA/dXRmOC1tb2RlKSA9CglzZXQgLVUKCWVjaG8gMS0gJChydW50ZXN0IHV0ZjgtbW9kZSkgPQoJZWNobyAyLSAkKHJ1bnRlc3QgIXV0ZjgtbW9kZSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgP3V0ZjgtbW9kZSkgPQoJZWNobyA9IHNob3J0IGZsYWdzID0KCWVjaG8gMHkgJChpZl90ZXN0IC1VKSA9CgllY2hvIDB5ICQoaWZfdGVzdCArVSkgPQoJZWNobyAwbiAkKGlmX3Rlc3QgLV8pID0KCWVjaG8gMG4gJChpZl90ZXN0IC1VLSkgPQoJZWNobyAxPSAkKHJ1bnRlc3QgLV8pID0KCWVjaG8gMj0gJChydW50ZXN0ICEtXykgPQoJZWNobyAzPSAkKHJ1bnRlc3QgPy1fKSA9CglzZXQgK1UKCWVjaG8gMSsgJChydW50ZXN0IC1VKSA9CgllY2hvIDIrICQocnVudGVzdCAhLVUpID0KCWVjaG8gMysgJChydW50ZXN0ID8tVSkgPQoJZWNobyAxKyAkKHJ1bnRlc3QgK1UpID0KCWVjaG8gMisgJChydW50ZXN0ICErVSkgPQoJZWNobyAzKyAkKHJ1bnRlc3QgPytVKSA9CglzZXQgLVUKCWVjaG8gMS0gJChydW50ZXN0IC1VKSA9CgllY2hvIDItICQocnVudGVzdCAhLVUpID0KCWVjaG8gMy0gJChydW50ZXN0ID8tVSkgPQoJZWNobyAxLSAkKHJ1bnRlc3QgK1UpID0KCWVjaG8gMi0gJChydW50ZXN0ICErVSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgPytVKSA9CmV4cGVjdGVkLXN0ZG91dDoKCTB5IDAgMCAwIDAgPQoJMG4gMSAxIDEgMSA9CgkxPSAxIDEgMSA9CgkyPSAxIDEgMSA9CgkzPSAxIDEgMSA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9Cgk9IHNob3J0IGZsYWdzID0KCTB5IDAgMCAwIDAgPQoJMHkgMCAwIDAgMCA9CgkwbiAxIDEgMSAxID0KCTBuIDEgMSAxIDEgPQoJMT0gMSAxIDEgPQoJMj0gMSAxIDEgPQoJMz0gMSAxIDEgPQoJMSsgMSAxIDEgPQoJMisgMCAwIDAgPQoJMysgMCAwIDAgPQoJMSsgMSAxIDEgPQoJMisgMCAwIDAgPQoJMysgMCAwIDAgPQoJMS0gMCAwIDAgPQoJMi0gMSAxIDEgPQoJMy0gMCAwIDAgPQoJMS0gMCAwIDAgPQoJMi0gMSAxIDEgPQoJMy0gMCAwIDAgPQotLS0KbmFtZTogdGVzdC1zdG56ZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hvcnQgZm9ybSBbICR4IF0gd29ya3MKc3RkaW46CglpPTAKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0wCglbIC1uICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgLW4gIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9JzEgLWEgMSA9IDInCglbIC1uICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgLW4gIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwCgkyIDEKCTMgMQoJNCAxCgk1IDAKCTYgMAoJNyAwCgk4IDAKCTkgMQoJMTAgMQoJMTEgMAoJMTIgMAotLS0KbmFtZTogdGVzdC1zdG56ZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hvcnQgZm9ybSBbWyAkeCBdXSB3b3JrcyAoa3NoOTMgZXh0ZW5zaW9uKQpzdGRpbjoKCWk9MAoJW1sgLW4gJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLW4gIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9MAoJW1sgLW4gJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLW4gIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9JzEgLWEgMSA9IDInCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEKCTIgMQoJMyAxCgk0IDEKCTUgMAoJNiAwCgk3IDAKCTggMAoJOSAwCgkxMCAwCgkxMSAwCgkxMiAwCi0tLQpuYW1lOiB0ZXN0LW51bWVxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbnVtZXJpYyAtZXEgd29ya3MgKFI0MGQgcmVncmVzc2lvbik7IHNwb3R0ZWQgYnkgTWFydGlqbiBEZWtrZXIKc3RkaW46Cgl0c3QoKSB7CgkJZXZhbCAiJDIiCgkJY2FzZSAkPyBpbgoJCSgwKSBlY2hvIHllcHAgMCBcIyIkKiIgOzsKCQkoMSkgZWNobyBub3BlIDEgXCMiJCoiIDs7CgkJKDIpIGVjaG8gdGVyciAyIFwjIiQqIiA7OwoJCSgqKSBlY2hvIHd0Zlw/ICQ/IFwjIiQqIiA7OwoJCWVzYWMKCX0KCXRzdCAxICd0ZXN0IDIgLWVxIDInCgl0c3QgMiAndGVzdCAyIC1lcSAyYScKCXRzdCAzICd0ZXN0IDIgLWVxIDMnCgl0c3QgNCAndGVzdCAyIC1uZSAyJwoJdHN0IDUgJ3Rlc3QgMiAtbmUgMmEnCgl0c3QgNiAndGVzdCAyIC1uZSAzJwoJdHN0IDcgJ3Rlc3QgXCEgMiAtZXEgMicKCXRzdCA4ICd0ZXN0IFwhIDIgLWVxIDJhJwoJdHN0IDkgJ3Rlc3QgXCEgMiAtZXEgMycKZXhwZWN0ZWQtc3Rkb3V0OgoJeWVwcCAwICMxIHRlc3QgMiAtZXEgMgoJdGVyciAyICMyIHRlc3QgMiAtZXEgMmEKCW5vcGUgMSAjMyB0ZXN0IDIgLWVxIDMKCW5vcGUgMSAjNCB0ZXN0IDIgLW5lIDIKCXRlcnIgMiAjNSB0ZXN0IDIgLW5lIDJhCgl5ZXBwIDAgIzYgdGVzdCAyIC1uZSAzCglub3BlIDEgIzcgdGVzdCBcISAyIC1lcSAyCgl0ZXJyIDIgIzggdGVzdCBcISAyIC1lcSAyYQoJeWVwcCAwICM5IHRlc3QgXCEgMiAtZXEgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgbnVtYmVyLwotLS0KbmFtZTogbWtzaHJjLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IH4vLm1rc2hyYyB3b3JrcyBjb3JyZWN0bHkuCglQYXJ0IDE6IHZlcmlmeSB1c2VyIGVudmlyb25tZW50IGlzIG5vdCByZWFkIChpbnRlcm5hbCkKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IG1rc2hyYy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMjogdmVyaWZ5IG1rc2hyYyBpcyBub3QgcmVhZCAobm9uLWludGVyYWN0aXZlIHNoZWxscykKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5ta3NocmMiCglGTk9SRD00MgplbnYtc2V0dXA6ICFIT01FPS4hRU5WPSEKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IG1rc2hyYy0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMjogdmVyaWZ5IG1rc2hyYyBjYW4gYmUgcmVhZCAoaW50ZXJhY3RpdmUgc2hlbGxzKQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiLm1rc2hyYyIKCUZOT1JEPTQyCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFIT01FPS4hRU5WPSFQUzE9IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeCA0MgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8oIyApKi8KLS0tCm5hbWU6IG1rc2hyYy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAzOiB2ZXJpZnkgbWtzaHJjIGNhbiBiZSB0dXJuZWQgb2ZmCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIubWtzaHJjIgoJRk5PUkQ9NDIKZW52LXNldHVwOiAhSE9NRT0uIUVOVj1ub25leGlzdGFudCEKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IHNoLW1vZGUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2ggbW9kZSB0dXJucyBicmFjZWV4cGFuZCBvZmYKCWFuZCB0aGF0IHRoYXQgd29ya3MgY29ycmVjdGx5CnN0ZGluOgoJc2V0IC1vIGJyYWNlZXhwYW5kCglzZXQgK28gc2gKCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBzaClAKHwgKikgXV0gJiYgZWNobyBzaCB8fCBlY2hvIG5vc2gKCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBicmFjZWV4cGFuZClAKHwgKikgXV0gJiYgZWNobyBicmV4IHx8IGVjaG8gbm9icmV4CgllY2hvIHthLGIsY30KCXNldCArbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglzZXQgLW8gYnJhY2VleHBhbmQKCWVjaG8ge2EsYixjfQoJc2V0IC1vIHNoCgllY2hvIHthLGIsY30KCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBzaClAKHwgKikgXV0gJiYgZWNobyBzaCB8fCBlY2hvIG5vc2gKCVtbICQoc2V0ICtvKSA9PSAqQCgtbyBicmFjZWV4cGFuZClAKHwgKikgXV0gJiYgZWNobyBicmV4IHx8IGVjaG8gbm9icmV4CglzZXQgLW8gYnJhY2VleHBhbmQKCWVjaG8ge2EsYixjfQoJW1sgJChzZXQgK28pID09ICpAKC1vIHNoKUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaAoJW1sgJChzZXQgK28pID09ICpAKC1vIGJyYWNlZXhwYW5kKUAofCAqKSBdXSAmJiBlY2hvIGJyZXggfHwgZWNobyBub2JyZXgKZXhwZWN0ZWQtc3Rkb3V0OgoJbm9zaAoJYnJleAoJYSBiIGMKCXthLGIsY30KCWEgYiBjCgl7YSxiLGN9CglzaAoJbm9icmV4CglhIGIgYwoJc2gKCWJyZXgKLS0tCm5hbWU6IHNoLW1vZGUtMmEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHBvc2l4IG9yIHNoIG1vZGUgaXMgKm5vdCogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6ICFiaW5zaApzdGRpbjoKCWxuIC1zICIkX19wcm9nbmFtZSIga3NoIHx8IGNwICIkX19wcm9nbmFtZSIga3NoCglsbiAtcyAiJF9fcHJvZ25hbWUiIHNoIHx8IGNwICIkX19wcm9nbmFtZSIgc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgLi8ta3NoIHx8IGNwICIkX19wcm9nbmFtZSIgLi8ta3NoCglsbiAtcyAiJF9fcHJvZ25hbWUiIC4vLXNoIHx8IGNwICIkX19wcm9nbmFtZSIgLi8tc2gKCWZvciBzaGVsbCBpbiB7LC19eyxrfXNoOyBkbwoJCXByaW50IC0tICRzaGVsbCAkKC4vJHNoZWxsICtsIC1jIFwKCQkgICAgJ1tbICQoc2V0ICtvKSA9PSAqIi1vICJAKHNofHBvc2l4KUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaCcpCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCXNoIG5vc2gKCWtzaCBub3NoCgktc2ggbm9zaAoJLWtzaCBub3NoCi0tLQpuYW1lOiBzaC1tb2RlLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwb3NpeCBvciBzaCBtb2RlICppcyogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6IGJpbnNoCnN0ZGluOgoJbG4gLXMgIiRfX3Byb2duYW1lIiBrc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBrc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBzaAoJbG4gLXMgIiRfX3Byb2duYW1lIiAuLy1rc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1rc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgLi8tc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1zaAoJZm9yIHNoZWxsIGluIHssLX17LGt9c2g7IGRvCgkJcHJpbnQgLS0gJHNoZWxsICQoLi8kc2hlbGwgK2wgLWMgXAoJCSAgICAnW1sgJChzZXQgK28pID09ICoiLW8gIkAoc2h8cG9zaXgpQCh8ICopIF1dICYmIGVjaG8gc2ggfHwgZWNobyBub3NoJykKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJc2ggc2gKCWtzaCBub3NoCgktc2ggc2gKCS1rc2ggbm9zaAotLS0KbmFtZTogcGlwZWxpbmUtMQpkZXNjcmlwdGlvbjoKCXBka3NoIGJ1ZzogbGFzdCBjb21tYW5kIG9mIGEgcGlwZWxpbmUgaXMgZXhlY3V0ZWQgaW4gYQoJc3Vic2hlbGwgLSBtYWtlIHN1cmUgaXQgc3RpbGwgaXMsIHNjcmlwdHMgZGVwZW5kIG9uIGl0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeSIKc3RkaW46CgllY2hvICoKCWVjaG8gYSB8IHdoaWxlIHJlYWQgZDsgZG8KCQllY2hvICRkCgkJZWNobyAkZCoKCQllY2hvICoKCQlzZXQgLW8gbm9nbG9iCgkJZWNobyAkZCoKCQllY2hvICoKCWRvbmUKCWVjaG8gKgpleHBlY3RlZC1zdGRvdXQ6CglhYmN4IGFiY3kKCWEKCWFiY3ggYWJjeQoJYWJjeCBhYmN5CglhKgoJKgoJYWJjeCBhYmN5Ci0tLQpuYW1lOiBwaXBlbGluZS0yCmRlc2NyaXB0aW9uOgoJY2hlY2sgdGhhdCBjby1wcm9jZXNzZXMgd29yayB3aXRoIFRDT01zLCBUUElQRXMgYW5kIFRQQVJFTnMKY2F0ZWdvcnk6ICFub2pzaWcKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdpPTEwMDsgZWNobyBoaSB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKCSIkX19wcm9nbmFtZSIgLWMgJ2k9MjAwOyBlY2hvIGhpIHwgY2F0IHwmIHdoaWxlIHJlYWQgLXAgbGluZTsgZG8gZWNobyAiJCgoaSsrKSkgJGxpbmUiOyBkb25lJwoJIiRfX3Byb2duYW1lIiAtYyAnaT0zMDA7IChlY2hvIGhpIHwgY2F0KSB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKZXhwZWN0ZWQtc3Rkb3V0OgoJMTAwIGhpCgkyMDAgaGkKCTMwMCBoaQotLS0KbmFtZTogcGlwZWxpbmUtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgUElQRVNUQVRVUyBkb2VzIHdoYXQgaXQncyBzdXBwb3NlZCB0bwpzdGRpbjoKCWVjaG8gMSAkUElQRVNUQVRVUyAuCgllY2hvIDIgJHtQSVBFU1RBVFVTWzBdfSAuCgllY2hvIDMgJHtQSVBFU1RBVFVTWzFdfSAuCgkoZWNobyB4OyBleGl0IDEyKSB8IChjYXQ7IGV4aXQgMjMpIHwgKGNhdDsgZXhpdCA0MikKCWVjaG8gNSAkPyAsICRQSVBFU1RBVFVTICwgJHtQSVBFU1RBVFVTWzBdfSAsICR7UElQRVNUQVRVU1sxXX0gLCAke1BJUEVTVEFUVVNbMl19ICwgJHtQSVBFU1RBVFVTWzNdfSAuCgllY2hvIDYgJHtQSVBFU1RBVFVTWzBdfSAuCglzZXQgfCBmZ3JlcCBQSVBFU1RBVFVTCgllY2hvIDggJChzZXQgfCBmZ3JlcCBQSVBFU1RBVFVTKSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMCAuCgkyIDAgLgoJMyAuCgl4Cgk1IDQyICwgMTIgLCAxMiAsIDIzICwgNDIgLCAuCgk2IDAgLgoJUElQRVNUQVRVU1swXT0wCgk4IFBJUEVTVEFUVVNbMF09MCBQSVBFU1RBVFVTWzFdPTAgLgotLS0KbmFtZTogcGlwZWxpbmUtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCAtbyBwaXBlZmFpbCIgZG9lcyB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8Kc3RkaW46CgllY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnKGV4aXQgMTIpIHwgKGV4aXQgMjMpIHwgKGV4aXQgNDIpOyBlY2hvICQ/JykiIC4KCWVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1jICchIChleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDMgIiQoIiRfX3Byb2duYW1lIiAtbyBwaXBlZmFpbCAtYyAnKGV4aXQgMTIpIHwgKGV4aXQgMjMpIHwgKGV4aXQgNDIpOyBlY2hvICQ/JykiIC4KCWVjaG8gNCAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICchIChleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDUgIiQoIiRfX3Byb2duYW1lIiAtYyAnKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOjsgZWNobyAkPycpIiAuCgllY2hvIDYgIiQoIiRfX3Byb2duYW1lIiAtYyAnISAoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gNyAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICcoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gOCAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICchIChleGl0IDIzKSB8IChleGl0IDQyKSB8IDo7IGVjaG8gJD8nKSIgLgoJZWNobyA5ICIkKCIkX19wcm9nbmFtZSIgLW8gcGlwZWZhaWwgLWMgJ3g9JCggKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOik7IGVjaG8gJD8nKSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDQyIC4KCTIgMCAuCgkzIDQyIC4KCTQgMCAuCgk1IDAgLgoJNiAxIC4KCTcgNDIgLgoJOCAwIC4KCTkgNDIgLgotLS0KbmFtZTogcGVyc2lzdC1oaXN0b3J5LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBwZXJzaXN0ZW50IGhpc3Rvcnkgc2F2aW5nIHdvcmtzCmNhdGVnb3J5OiAhbm8taGlzdGZpbGUKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWNhdCBoaXN0LmZpbGUKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46CgkvY2F0IGhpc3QuZmlsZS8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IHR5cGVzZXQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmFsIGRvZXMgd2hhdCB0eXBlc2V0IGlzIHN1cHBvc2VkIHRvIGRvCnN0ZGluOgoJc2V0IC1BIGFycmZvbyA2NQoJZm9vKCkgewoJCWdsb2JhbCAtVXVpMTYgYXJyZm9vWypdCgl9CgllY2hvIGJlZm9yZSAke2FycmZvb1swXX0gLgoJZm9vCgllY2hvIGFmdGVyICR7YXJyZm9vWzBdfSAuCglzZXQgLUEgYXJyYmFyIDY1CgliYXIoKSB7CgkJZWNobyBpbnNpZGUgYmVmb3JlICR7YXJyYmFyWzBdfSAuCgkJYXJyYmFyWzBdPTk3CgkJZWNobyBpbnNpZGUgY2hhbmdlZCAke2FycmJhclswXX0gLgoJCWdsb2JhbCAtVXVpMTYgYXJyYmFyWypdCgkJZWNobyBpbnNpZGUgdHlwZXNldCAke2FycmJhclswXX0gLgoJCWFycmJhclswXT00OAoJCWVjaG8gaW5zaWRlIGNoYW5nZWQgJHthcnJiYXJbMF19IC4KCX0KCWVjaG8gYmVmb3JlICR7YXJyYmFyWzBdfSAuCgliYXIKCWVjaG8gYWZ0ZXIgJHthcnJiYXJbMF19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJYmVmb3JlIDY1IC4KCWFmdGVyIDE2IzQxIC4KCWJlZm9yZSA2NSAuCglpbnNpZGUgYmVmb3JlIDY1IC4KCWluc2lkZSBjaGFuZ2VkIDk3IC4KCWluc2lkZSB0eXBlc2V0IDE2IzYxIC4KCWluc2lkZSBjaGFuZ2VkIDE2IzMwIC4KCWFmdGVyIDE2IzMwIC4KLS0tCm5hbWU6IHR5cGVzZXQtcGFkZGluZy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgbGVmdC9yaWdodCBqdXN0aWZpY2F0aW9uIHdvcmtzIGFzIHBlciBURk0Kc3RkaW46Cgl0eXBlc2V0IC1MMTAgbG49MGhhbGwwCgl0eXBlc2V0IC1SMTAgcm49MGhhbGwwCgl0eXBlc2V0IC1aTDEwIGx6PTBoYWxsMAoJdHlwZXNldCAtWlIxMCByej0waGFsbDAKCXR5cGVzZXQgLVoxMCByeD0iIGhhbGxvICIKCWVjaG8gIjwkbG4+IDwkcm4+IDwkbHo+IDwkcno+IDwkcng+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8MGhhbGwwICAgID4gPCAgICAwaGFsbDA+IDxoYWxsMCAgICAgPiA8MDAwMDBoYWxsMD4gPDAwMDAgaGFsbG8+Ci0tLQpuYW1lOiB0eXBlc2V0LXBhZGRpbmctMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2UtITEwIGludGVnZXJzIGFyZSBwYWRkZWQgcmlnaHQKc3RkaW46Cgl0eXBlc2V0IC1VdWkxNiAtTDkgbG49MTYjMQoJdHlwZXNldCAtVXVpMTYgLVI5IHJuPTE2IzEKCXR5cGVzZXQgLVV1aTE2IC1aOSB6bj0xNiMxCgl0eXBlc2V0IC1MOSBscz0xNiMxCgl0eXBlc2V0IC1SOSBycz0xNiMxCgl0eXBlc2V0IC1aOSB6cz0xNiMxCgllY2hvICI8JGxuPiA8JHJuPiA8JHpuPiA8JGxzPiA8JHJzPiA8JHpzPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDE2IzEgICAgID4gPCAgICAgMTYjMT4gPDE2IzAwMDAwMT4gPDE2IzEgICAgID4gPCAgICAgMTYjMT4gPDAwMDAwMTYjMT4KLS0tCm5hbWU6IHV0Zjhib20tMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIFVURi04IEJ5dGUgT3JkZXIgTWFyayBpcyBpZ25vcmVkIGFzIHRoZSBmaXJzdAoJbXVsdGlieXRlIGNoYXJhY3RlciBvZiB0aGUgc2hlbGwgaW5wdXQgKHdpdGggLWMsIGZyb20gc3RhbmRhcmQKCWlucHV0LCBhcyBmaWxlLCBvciBhcyBldmFsIGFyZ3VtZW50KSwgYnV0IG5vd2hlcmUgZWxzZQojIGJyZWFrcyBvbiBNYWMgT1NYIChIRlMrIG5vbi1zdGFuZGFyZCBVbmljb2RlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uKQpjYXRlZ29yeTogIW9zOmRhcndpbgpzdGRpbjoKCW1rZGlyIGZvbwoJcHJpbnQgJyMhL2Jpbi9zaFxuZWNobyBvaG5lJyA+Zm9vL2Zub3JkCglwcmludCAnIyEvYmluL3NoXG5lY2hvIG1pdCcgPmZvby/vu79mbm9yZAoJcHJpbnQgJ++7v2Zub3JkXG5mbm9yZFxu77u/Zm5vcmRcbmZub3JkJyA+Zm9vL2JhcgoJcHJpbnQgZXZhbCBcJyfvu79mbm9yZFxuZm5vcmRcbu+7v2Zub3JkXG5mbm9yZCdcJyA+Zm9vL3pvbwoJc2V0IC1BIGFuemFobCAtLSBmb28vKgoJZWNobyBnb3QgJHsjYW56YWhsWypdfSBmaWxlcwoJY2htb2QgK3ggZm9vLyoKCWV4cG9ydCBQQVRIPSQocHdkKS9mb28kUEFUSFNFUCRQQVRICgkiJF9fcHJvZ25hbWUiIC1jICfvu79mbm9yZCcKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiAtYyAn77u/Zm5vcmQ7IGZub3JkOyDvu79mbm9yZDsgZm5vcmQnCgllY2hvID0KCSIkX19wcm9nbmFtZSIgZm9vL2JhcgoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIDxmb28vYmFyCgllY2hvID0KCSIkX19wcm9nbmFtZSIgZm9vL3pvbwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIO+7vzogJCjvu79mbm9yZCknCglybSAtcmYgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWdvdCA0IGZpbGVzCglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJb2huZQoJb2huZQoJbWl0CglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCe+7vzogb2huZQotLS0KbmFtZTogdXRmOGJvbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB3ZSBjYW4gZXhlY3V0ZSBCT00tc2hlYmFuZ3MgKGZhaWx1cmVzIG5vdCBmYXRhbCkKCVhYWCBpZiB0aGUgT1MgY2FuIGFscmVhZHkgZXhlY3V0ZSB0aGVtLCB3ZSBsb3NlCglub3RlOiBjeWd3aW4gZXhlY3ZlKDIpIGRvZXNuJ3QgcmV0dXJuIHRvIHVzIHdpdGggRU5PRVhFQywgd2UgbG9zZQoJbm90ZTogVWx0cml4IHBlcmw1IHQ0IHJldHVybnMgNjUyODAgKGV4aXQtY29kZSAyNTUpIGFuZCBubyB0ZXh0CglYWFggZmFpbHMgd2hlbiBMRF9QUkVMT0FEIGlzIHNldCB3aXRoIC1lIGFuZCBQZXJsIGNob2tlcyBpdCAoQVNhbikKbmVlZC1wYXNzOiBubwpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6bXN5cywhb3M6dWx0cml4LCFvczp1d2luLW50LCFzbWtzaAplbnYtc2V0dXA6ICFGT089QkFSIQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xucHJpbnQgIjEgYT0kRU5We0ZPT30iOycgPnQxCglwcmludCAn77u/IyEnIiRfX3Byb2duYW1lIidcbnByaW50ICIyIGE9JEVOVntGT099IjsnID50MgoJcHJpbnQgJyMhJyIkX19wZXJsbmFtZSInXG5wcmludCAiMyBhPSRFTlZ7Rk9PfVxuIjsnID50MwoJcHJpbnQgJ++7vyMhJyIkX19wZXJsbmFtZSInXG5wcmludCAiNCBhPSRFTlZ7Rk9PfVxuIjsnID50NAoJY2htb2QgK3ggdD8KCS4vdDEKCS4vdDIKCS4vdDMKCS4vdDQKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBhPS9ub25leGlzdGFudHtGT099CgkyIGE9L25vbmV4aXN0YW50e0ZPT30KCTMgYT1CQVIKCTQgYT1CQVIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKFVucmVjb2duaXplZCBjaGFyYWN0ZXIgLi4uLiBpZ25vcmVkIGF0IFwuLnQ0IGxpbmUgMSkqLwotLS0KbmFtZTogdXRmOG9wdC0xYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIHV0ZjgtbW9kZSBmbGFnIGlzIG5vdCBzZXQgYXQgbm9uLWludGVyYWN0aXZlIHN0YXJ0dXAKY2F0ZWdvcnk6ICFvczpocHV4CmVudi1zZXR1cDogIVBTMT0hUFMyPSFMQ19DVFlQRT1lbl9VUy5VVEYtOCEKc3RkaW46CglpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbgoJCWVjaG8gaXMgc2V0CgllbHNlCgkJZWNobyBpcyBub3Qgc2V0CglmaQpleHBlY3RlZC1zdGRvdXQ6CglpcyBub3Qgc2V0Ci0tLQpuYW1lOiB1dGY4b3B0LTFiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgbm90IHNldCBhdCBub24taW50ZXJhY3RpdmUgc3RhcnR1cApjYXRlZ29yeTogb3M6aHB1eAplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9ZW5fVVMudXRmOCEKc3RkaW46CglpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbgoJCWVjaG8gaXMgc2V0CgllbHNlCgkJZWNobyBpcyBub3Qgc2V0CglmaQpleHBlY3RlZC1zdGRvdXQ6CglpcyBub3Qgc2V0Ci0tLQpuYW1lOiB1dGY4b3B0LTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgc2V0IGF0IGludGVyYWN0aXZlIHN0YXJ0dXAuCgktRE1LU0hfQVNTVU1FX1VURjg9MCA9PiBleHBlY3RlZCBmYWlsdXJlLCBwbGVhc2UgaWdub3JlCgktRE1LU0hfQVNTVU1FX1VURjg9MSA9PiBub3QgZXhwZWN0ZWQsIHBsZWFzZSBpbnZlc3RpZ2F0ZQoJLVVNS1NIX0FTU1VNRV9VVEY4ID0+IG5vdCBleHBlY3RlZCwgYnV0IGlmIHlvdXIgT1MgaXMgb2xkLAoJIHRyeSBwYXNzaW5nIEhBVkVfU0VUTE9DQUxFX0NUWVBFPTAgdG8gQnVpbGQuc2gKbmVlZC1wYXNzOiBubwpjYXRlZ29yeTogIW9zOmhwdXgsIW9zOm1zeXMKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIVBTMT0hUFMyPSFMQ19DVFlQRT1lbl9VUy5VVEYtOCEKc3RkaW46CglpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbgoJCWVjaG8gaXMgc2V0CgllbHNlCgkJZWNobyBpcyBub3Qgc2V0CglmaQpleHBlY3RlZC1zdGRvdXQ6CglpcyBzZXQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKCMgKSovCi0tLQpuYW1lOiB1dGY4b3B0LTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgc2V0IGF0IGludGVyYWN0aXZlIHN0YXJ0dXAKCUV4cGVjdGVkIGZhaWx1cmUgaWYgLURNS1NIX0FTU1VNRV9VVEY4PTAKY2F0ZWdvcnk6IG9zOmhwdXgKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIVBTMT0hUFMyPSFMQ19DVFlQRT1lbl9VUy51dGY4IQpzdGRpbjoKCWlmIFtbICQtID0gKlUqIF1dOyB0aGVuCgkJZWNobyBpcyBzZXQKCWVsc2UKCQllY2hvIGlzIG5vdCBzZXQKCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWlzIHNldApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8oIyApKi8KLS0tCm5hbWU6IHV0ZjhvcHQtM2EKZGVzY3JpcHRpb246CglFbnN1cmUgwrFVIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgaG9ub3VyZWQKCSh0aGVzZSB0d28gdGVzdHMgbWF5IHBhc3MgZmFsc2VseSBkZXBlbmRpbmcgb24gQ1BQRkxBR1MpCnN0ZGluOgoJZXhwb3J0IGk9MAoJY29kZT0naWYgW1sgJC0gPSAqVSogXV07IHRoZW4gZWNobyAkaSBvbjsgZWxzZSBlY2hvICRpIG9mZjsgZmknCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiIC1VIC1jICIkY29kZSIKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgK1UgLWMgIiRjb2RlIgoJZWNobyAkKCgrK2kpKSBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTEgb24KCTIgb2ZmCgkzIGRvbmUKLS0tCm5hbWU6IHV0ZjhvcHQtM2IKZGVzY3JpcHRpb246CglFbnN1cmUgwrFVIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgaG9ub3VyZWQsIGludGVyYWN0aXZlIHNoZWxscwpuZWVkLWN0dHk6IHllcwpzdGRpbjoKCWV4cG9ydCBpPTAKCWNvZGU9J2lmIFtbICQtID0gKlUqIF1dOyB0aGVuIGVjaG8gJGkgb247IGVsc2UgZWNobyAkaSBvZmY7IGZpJwoJbGV0IGkrKzsgIiRfX3Byb2duYW1lIiAtVSAtaWMgIiRjb2RlIgoJbGV0IGkrKzsgIiRfX3Byb2duYW1lIiArVSAtaWMgIiRjb2RlIgoJZWNobyAkKCgrK2kpKSBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTEgb24KCTIgb2ZmCgkzIGRvbmUKLS0tCm5hbWU6IGFsaWFzZXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJ1aWx0LWluIHNoZWxsIGFsaWFzZXMgYXJlIG9rYXkKc3RkaW46CglhbGlhcwoJdHlwZXNldCAtZgpleHBlY3RlZC1zdGRvdXQ6CglhdXRvbG9hZD0nXHR5cGVzZXQgLWZ1JwoJZnVuY3Rpb25zPSdcdHlwZXNldCAtZicKCWhhc2g9J1xidWlsdGluIGFsaWFzIC10JwoJaGlzdG9yeT0nXGJ1aWx0aW4gZmMgLWwnCglpbnRlZ2VyPSdcdHlwZXNldCAtaScKCWxvY2FsPSdcdHlwZXNldCcKCWxvZ2luPSdcZXhlYyBsb2dpbicKCW5hbWVyZWY9J1x0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J1xidWlsdGluIGZjIC1lIC0nCgl0eXBlPSdcYnVpbHRpbiB3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYg4oCcc2V0IC1vIHNo4oCdIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCmFyZ3VtZW50czogIS1vIXNoIQpzdGRpbjoKCWFsaWFzCgl0eXBlc2V0IC1mCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSdcdHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J1x0eXBlc2V0IC1mJwoJaGFzaD0nXGJ1aWx0aW4gYWxpYXMgLXQnCgloaXN0b3J5PSdcYnVpbHRpbiBmYyAtbCcKCWludGVnZXI9J1x0eXBlc2V0IC1pJwoJbG9jYWw9J1x0eXBlc2V0JwoJbG9naW49J1xleGVjIGxvZ2luJwoJbmFtZXJlZj0nXHR5cGVzZXQgLW4nCglub2h1cD0nbm9odXAgJwoJcj0nXGJ1aWx0aW4gZmMgLWUgLScKCXR5cGU9J1xidWlsdGluIHdoZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtM2IKZGVzY3JpcHRpb246CglDaGVjayBpZiBydW5uaW5nIGFzIHNoIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCnN0ZGluOgoJY3AgIiRfX3Byb2duYW1lIiBzaAoJLi9zaCAtYyAnYWxpYXM7IHR5cGVzZXQgLWYnCglybSAtZiBzaApleHBlY3RlZC1zdGRvdXQ6CglhdXRvbG9hZD0nXHR5cGVzZXQgLWZ1JwoJZnVuY3Rpb25zPSdcdHlwZXNldCAtZicKCWhhc2g9J1xidWlsdGluIGFsaWFzIC10JwoJaGlzdG9yeT0nXGJ1aWx0aW4gZmMgLWwnCglpbnRlZ2VyPSdcdHlwZXNldCAtaScKCWxvY2FsPSdcdHlwZXNldCcKCWxvZ2luPSdcZXhlYyBsb2dpbicKCW5hbWVyZWY9J1x0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J1xidWlsdGluIGZjIC1lIC0nCgl0eXBlPSdcYnVpbHRpbiB3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLWNtZGxpbmUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzZXMgd29yayBmcm9tIHRoZSBjb21tYW5kIGxpbmUgKERlYmlhbiAjNTE3MDA5KQoJTm90ZSB0aGF0IGR1ZSB0byB0aGUgbmF0dXJlIG9mIHRoZSBsZXhpbmcgcHJvY2VzcywgZGVmaW5pbmcKCWFsaWFzZXMgaW4gQ09NU1VCcyB0aGVuIGltbWVkaWF0ZWx5IHVzaW5nIHRoZW0sIGFuZCB0aGluZ3MKCWxpa2UgJ2FsaWFzIGZvbz1iYXIgJiYgZm9vJywgc3RpbGwgZmFpbC4Kc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICQnYWxpYXMgYT0iZWNobyBPSyJcbmEnCmV4cGVjdGVkLXN0ZG91dDoKCU9LCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIFBPU0lYIGZ1bmN0aW9ucyB0YWtlIHByZWNlZGVuY2VzIG92ZXIgYWxpYXNlcwpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBtYWtybycKCWZvbygpIHsKCQllY2hvIGZ1bmt0aW9uCgl9Cglmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJbWFrcm8KLS0tCm5hbWU6IGFsaWFzZXMtZnVuY2RlZi0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgUE9TSVggZnVuY3Rpb25zIHRha2UgcHJlY2VkZW5jZXMgb3ZlciBhbGlhc2VzCnN0ZGluOgoJYWxpYXMgZm9vPSdlY2hvIG1ha3JvJwoJZm9vICgpIHsKCQllY2hvIGZ1bmt0aW9uCgl9Cglmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJbWFrcm8KLS0tCm5hbWU6IGFsaWFzZXMtZnVuY2RlZi0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYWxpYXNlcyB0YWtlIHByZWNlZGVuY2VzIG92ZXIgS29ybiBmdW5jdGlvbnMKc3RkaW46CglhbGlhcyBmb289J2VjaG8gbWFrcm8nCglmdW5jdGlvbiBmb28gewoJCWVjaG8gZnVua3Rpb24KCX0KCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgltYWtybwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTQKZGVzY3JpcHRpb246CglGdW5jdGlvbnMgc2hvdWxkIG9ubHkgdGFrZSBvdmVyIGlmIGFjdHVhbGx5IGJlaW5nIGRlZmluZWQKc3RkaW46CglhbGlhcyBsb2NhbAoJOnx8IGxvY2FsKCkgeyA6OyB9CglhbGlhcyBsb2NhbApleHBlY3RlZC1zdGRvdXQ6Cglsb2NhbD0nXHR5cGVzZXQnCglsb2NhbD0nXHR5cGVzZXQnCi0tLQpuYW1lOiBhcnJheXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEtvcm4gU2hlbGwgYXJyYXlzIHdvcmsgYXMgZXhwZWN0ZWQKc3RkaW46Cgl2PSJjIGQiCglzZXQgLUEgZm9vIC0tIGEgXCR2ICIkdiIgJyR2JyBiCgllY2hvICIkeyNmb29bKl19fCR7Zm9vWzBdfXwke2Zvb1sxXX18JHtmb29bMl19fCR7Zm9vWzNdfXwke2Zvb1s0XX18IgpleHBlY3RlZC1zdGRvdXQ6Cgk1fGF8JHZ8YyBkfCR2fGJ8Ci0tLQpuYW1lOiBhcnJheXMtMmEKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNoLXN0eWxlIGFycmF5cyB3b3JrIGFzIGV4cGVjdGVkCnN0ZGluOgoJdj0iYyBkIgoJZm9vPShhIFwkdiAiJHYiICckdicgYikKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwiCmV4cGVjdGVkLXN0ZG91dDoKCTV8YXwkdnxjIGR8JHZ8YnwKLS0tCm5hbWU6IGFycmF5cy0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgYXJyYXlzIHdvcmsgYXMgZXhwZWN0ZWQsIHdpdGggbmV3bGluZXMKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiJHh8IjsgZG9uZScgPnBmcAoJY2htb2QgK3ggcGZwCgl0ZXN0IC1uICIkWlNIX1ZFUlNJT04iICYmIHNldG9wdCBLU0hfQVJSQVlTCgl2PSJlIGYiCglmb289KGEKCQliYwoJCWQgXCR2ICIkdiIgJyR2JyBnCgkpCgkuL3BmcCAiJHsjZm9vWypdfSIgIiR7Zm9vWzBdfSIgIiR7Zm9vWzFdfSIgIiR7Zm9vWzJdfSIgIiR7Zm9vWzNdfSIgIiR7Zm9vWzRdfSIgIiR7Zm9vWzVdfSIgIiR7Zm9vWzZdfSI7IGVjaG8KCWZvbz0oYVwKCQliYwoJCWQgXCR2ICIkdiIgJyR2JyBnCgkpCgkuL3BmcCAiJHsjZm9vWypdfSIgIiR7Zm9vWzBdfSIgIiR7Zm9vWzFdfSIgIiR7Zm9vWzJdfSIgIiR7Zm9vWzNdfSIgIiR7Zm9vWzRdfSIgIiR7Zm9vWzVdfSIgIiR7Zm9vWzZdfSI7IGVjaG8KCWZvbz0oYVwKCWJjXFwKCQlkIFwkdiAiJHYiICckdicKCWcpCgkuL3BmcCAiJHsjZm9vWypdfSIgIiR7Zm9vWzBdfSIgIiR7Zm9vWzFdfSIgIiR7Zm9vWzJdfSIgIiR7Zm9vWzNdfSIgIiR7Zm9vWzRdfSIgIiR7Zm9vWzVdfSIgIiR7Zm9vWzZdfSI7IGVjaG8KZXhwZWN0ZWQtc3Rkb3V0OgoJN3xhfGJjfGR8JHZ8ZSBmfCR2fGd8Cgk3fGF8YmN8ZHwkdnxlIGZ8JHZ8Z3wKCTZ8YWJjXHxkfCR2fGUgZnwkdnxnfHwKLS0tCm5hbWU6IGFycmF5cy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYXJyYXkgYm91bmRzIGFyZSB1aW50MzJfdApzdGRpbjoKCXNldCAtQSBmb28gYSBiIGMKCWZvb1s0MDk3XT1kCglmb29bMjE0NzQ4MzYzN109ZQoJZWNobyAke2Zvb1sqXX0KCWZvb1stMV09ZgoJZWNobyAke2Zvb1s0Mjk0OTY3Mjk1XX0gZyAke2Zvb1sqXX0KZXhwZWN0ZWQtc3Rkb3V0OgoJYSBiIGMgZCBlCglmIGcgYSBiIGMgZCBlIGYKLS0tCm5hbWU6IGFycmF5cy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgS29ybiBTaGVsbCBhcnJheXMgd2l0aCBzcGVjaWZpZWQgaW5kaWNlcyB3b3JrIGFzIGV4cGVjdGVkCnN0ZGluOgoJdj0iYyBkIgoJc2V0IC1BIGZvbyAtLSBbMV09XCR2IFsyXT0iJHYiIFs0XT0nJHYnIFswXT1hIFs1XT1iCgllY2hvICIkeyNmb29bKl19fCR7Zm9vWzBdfXwke2Zvb1sxXX18JHtmb29bMl19fCR7Zm9vWzNdfXwke2Zvb1s0XX18JHtmb29bNV19fCIKCSMgd2UgZG9uJ3Qgd2FudCB0aGlzIGF0IGFsbDoKCSMJNXxhfCR2fGMgZHx8JHZ8YnwKCXNldCAtQSBhcnIgIls1XT1tZWgiCgllY2hvICI8JHthcnJbMF19Pjwke2Fycls1XX0+IgpleHBlY3RlZC1zdGRvdXQ6Cgk1fFsxXT0kdnxbMl09YyBkfFs0XT0kdnxbMF09YXxbNV09Ynx8Cgk8WzVdPW1laD48PgotLS0KbmFtZTogYXJyYXlzLTUKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNoLXN0eWxlIGFycmF5cyB3aXRoIHNwZWNpZmllZCBpbmRpY2VzIHdvcmsgYXMgZXhwZWN0ZWQKCSh0YWtlbiBvdXQgdGVtcG9yYXJpbHkgdG8gZml4IGFycmF5cy00OyBzZWUgYWxzbyBhcnJheXMtOWEgY29tbWVudCkKY2F0ZWdvcnk6IGRpc2FibGVkCnN0ZGluOgoJdj0iYyBkIgoJZm9vPShbMV09XCR2IFsyXT0iJHYiIFs0XT0nJHYnIFswXT1hIFs1XT1iKQoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCR7Zm9vWzVdfXwiCgl4PShbMTI4XT1mb28gYmFyIGJheikKCWVjaG8gaz0gJHsheFsqXX0gLgoJZWNobyB2PSAke3hbKl19IC4KCSMgQ2hlY2sgdGhhdCB3ZSBkbyBub3QgYnJlYWsgdGhpcyBieSBnbG9iYmluZwoJOj5iPWJsYWgKCWJsZWg9NQoJdHlwZXNldCAtYSBhcnIKCWFycis9KFtibGVoXT1ibGFoKQoJZWNobyAiPCR7YXJyWzBdfT48JHthcnJbNV19PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJNXxhfCR2fGMgZHx8JHZ8YnwKCWs9IDEyOCAxMjkgMTMwIC4KCXY9IGZvbyBiYXIgYmF6IC4KCTw+PGJsYWg+Ci0tLQpuYW1lOiBhcnJheXMtNgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIGFycmF5IGtleXMgKGluZGljZXMpIGZvciBpbmRleGVkIGFycmF5cywKCUtvcm4gc2hlbGwgc3R5bGUKc3RkaW46CglvZigpIHsKCQlpPTAKCQlmb3IgeCBpbiAiJEAiOyBkbwoJCQllY2hvIC1uICIkKChpKyspKTwkeD4iCgkJZG9uZQoJCWVjaG8KCX0KCWZvb1sxXT1laW5zCglzZXQgfCBncmVwICdeZm9vJwoJZWNobyA9Cglmb29bMF09endlaQoJZm9vWzRdPWRyZWkKCXNldCB8IGdyZXAgJ15mb28nCgllY2hvID0KCWVjaG8gYSAkKG9mICR7Zm9vWypdfSkgPSAkKG9mICR7YmFyWypdfSkgYQoJZWNobyBiICQob2YgIiR7Zm9vWypdfSIpID0gJChvZiAiJHtiYXJbKl19IikgYgoJZWNobyBjICQob2YgJHtmb29bQF19KSA9ICQob2YgJHtiYXJbQF19KSBjCgllY2hvIGQgJChvZiAiJHtmb29bQF19IikgPSAkKG9mICIke2JhcltAXX0iKSBkCgllY2hvIGUgJChvZiAkeyFmb29bKl19KSA9ICQob2YgJHshYmFyWypdfSkgZQoJZWNobyBmICQob2YgIiR7IWZvb1sqXX0iKSA9ICQob2YgIiR7IWJhclsqXX0iKSBmCgllY2hvIGcgJChvZiAkeyFmb29bQF19KSA9ICQob2YgJHshYmFyW0BdfSkgZwoJZWNobyBoICQob2YgIiR7IWZvb1tAXX0iKSA9ICQob2YgIiR7IWJhcltAXX0iKSBoCmV4cGVjdGVkLXN0ZG91dDoKCWZvb1sxXT1laW5zCgk9Cglmb29bMF09endlaQoJZm9vWzFdPWVpbnMKCWZvb1s0XT1kcmVpCgk9CglhIDA8endlaT4xPGVpbnM+MjxkcmVpPiA9IGEKCWIgMDx6d2VpIGVpbnMgZHJlaT4gPSAwPD4gYgoJYyAwPHp3ZWk+MTxlaW5zPjI8ZHJlaT4gPSBjCglkIDA8endlaT4xPGVpbnM+MjxkcmVpPiA9IGQKCWUgMDwwPjE8MT4yPDQ+ID0gZQoJZiAwPDAgMSA0PiA9IDA8PiBmCglnIDA8MD4xPDE+Mjw0PiA9IGcKCWggMDwwPjE8MT4yPDQ+ID0gaAotLS0KbmFtZTogYXJyYXlzLTcKZGVzY3JpcHRpb246CglDaGVjayBpZiB3ZSBjYW4gZ2V0IHRoZSBhcnJheSBrZXlzIChpbmRpY2VzKSBmb3IgaW5kZXhlZCBhcnJheXMsCglLb3JuIHNoZWxsIHN0eWxlLCBpbiBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCWVjaG8gIWFyejogJHshYXJ6fQoJZWNobyAhYXJ6WzBdOiAkeyFhcnpbMF19CgllY2hvICFhcnpbMV06ICR7IWFyelsxXX0KCWFyej1mb28KCWVjaG8gIWFyejogJHshYXJ6fQoJZWNobyAhYXJ6WzBdOiAkeyFhcnpbMF19CgllY2hvICFhcnpbMV06ICR7IWFyelsxXX0KCXVuc2V0IGFyegoJZWNobyAhYXJ6OiAkeyFhcnp9CgllY2hvICFhcnpbMF06ICR7IWFyelswXX0KCWVjaG8gIWFyelsxXTogJHshYXJ6WzFdfQpleHBlY3RlZC1zdGRvdXQ6CgkhYXJ6OiBhcnoKCSFhcnpbMF06IGFyelswXQoJIWFyelsxXTogYXJ6WzFdCgkhYXJ6OiBhcnoKCSFhcnpbMF06IGFyelswXQoJIWFyelsxXTogYXJ6WzFdCgkhYXJ6OiBhcnoKCSFhcnpbMF06IGFyelswXQoJIWFyelsxXTogYXJ6WzFdCi0tLQpuYW1lOiBhcnJheXMtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgYmVoYXZpb3VyYWwgcnVsZXMgZm9yIGFycmF5cy4Kc3RkaW46CglmbmEoKSB7CgkJc2V0IC1BIGFhIDkKCX0KCWZuYigpIHsKCQl0eXBlc2V0IGFiCgkJc2V0IC1BIGFiIDkKCX0KCWZuYygpIHsKCQl0eXBlc2V0IGFjCgkJc2V0IC1BIGFjIDkxCgkJdW5zZXQgYWMKCQlzZXQgLUEgYWMgOTIKCX0KCWZuZCgpIHsKCQlzZXQgK0EgYWQgOQoJfQoJZm5lKCkgewoJCXVuc2V0IGFlCgkJc2V0ICtBIGFlIDkKCX0KCWZuZigpIHsKCQl1bnNldCBhZlswXQoJCXNldCArQSBhZiA5Cgl9CglmbmcoKSB7CgkJdW5zZXQgYWdbKl0KCQlzZXQgK0EgYWcgOQoJfQoJc2V0IC1BIGFhIDEgMgoJc2V0IC1BIGFiIDEgMgoJc2V0IC1BIGFjIDEgMgoJc2V0IC1BIGFkIDEgMgoJc2V0IC1BIGFlIDEgMgoJc2V0IC1BIGFmIDEgMgoJc2V0IC1BIGFnIDEgMgoJc2V0IC1BIGFoIDEgMgoJdHlwZXNldCAtWjMgYWEgYWIgYWMgYWQgYWUgYWYgYWcKCXByaW50IDFhICR7YWFbKl19IC4KCXByaW50IDFiICR7YWJbKl19IC4KCXByaW50IDFjICR7YWNbKl19IC4KCXByaW50IDFkICR7YWRbKl19IC4KCXByaW50IDFlICR7YWVbKl19IC4KCXByaW50IDFmICR7YWZbKl19IC4KCXByaW50IDFnICR7YWdbKl19IC4KCXByaW50IDFoICR7YWhbKl19IC4KCWZuYQoJZm5iCglmbmMKCWZuZAoJZm5lCglmbmYKCWZuZwoJdHlwZXNldCAtWjUgYWhbKl0KCXByaW50IDJhICR7YWFbKl19IC4KCXByaW50IDJiICR7YWJbKl19IC4KCXByaW50IDJjICR7YWNbKl19IC4KCXByaW50IDJkICR7YWRbKl19IC4KCXByaW50IDJlICR7YWVbKl19IC4KCXByaW50IDJmICR7YWZbKl19IC4KCXByaW50IDJnICR7YWdbKl19IC4KCXByaW50IDJoICR7YWhbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMWEgMDAxIDAwMiAuCgkxYiAwMDEgMDAyIC4KCTFjIDAwMSAwMDIgLgoJMWQgMDAxIDAwMiAuCgkxZSAwMDEgMDAyIC4KCTFmIDAwMSAwMDIgLgoJMWcgMDAxIDAwMiAuCgkxaCAxIDIgLgoJMmEgOSAuCgkyYiAwMDEgMDAyIC4KCTJjIDkyIC4KCTJkIDAwOSAwMDIgLgoJMmUgOSAuCgkyZiA5IDAwMiAuCgkyZyAwMDkgLgoJMmggMDAwMDEgMDAwMDIgLgotLS0KbmFtZTogYXJyYXlzLTlhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB3ZSBjYW4gY29uY2F0ZW5hdGUgYXJyYXlzCnN0ZGluOgoJdW5zZXQgZm9vOyBmb289KGJhcik7IGZvbys9KGJheik7IGVjaG8gMSAkeyFmb29bKl19IDogJHtmb29bKl19IC4KCXVuc2V0IGZvbzsgZm9vPShmb28gYmFyKTsgZm9vKz0oYmF6KTsgZWNobyAyICR7IWZvb1sqXX0gOiAke2Zvb1sqXX0gLgojCXVuc2V0IGZvbzsgZm9vPShbMl09Zm9vIFswXT1iYXIpOyBmb28rPShiYXogWzVdPXF1dXgpOyBlY2hvIDMgJHshZm9vWypdfSA6ICR7Zm9vWypdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMCAxIDogYmFyIGJheiAuCgkyIDAgMSAyIDogZm9vIGJhciBiYXogLgojCTMgMCAyIDMgNSA6IGJhciBmb28gYmF6IHF1dXggLgotLS0KbmFtZTogYXJyYXlzLTliCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB3ZSBjYW4gY29uY2F0ZW5hdGUgcGFyYW1ldGVycyB0b28Kc3RkaW46Cgl1bnNldCBmb287IGZvbz1iYXI7IGZvbys9YmF6OyBlY2hvIDEgJGZvbyAuCgl1bnNldCBmb287IHR5cGVzZXQgLWkxNiBmb289MTA7IGZvbys9MjA7IGVjaG8gMiAkZm9vIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBiYXJiYXogLgoJMiAxNiNhMjAgLgotLS0KbmFtZTogYXJyYXNzaWduLWJhc2ljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFzaWMgd2hpdGVzcGFjZSBjb25zZXJ2aW5nIHByb3BlcnRpZXMgb2Ygd2RhcnJhc3NpZ24Kc3RkaW46CglhPSgkKGVjaG8gYSAgYikpCgliPSgkKGVjaG8gImEgIGIiKSkKCWM9KCIkKGVjaG8gImEgIGIiKSIpCglkPSgiJChlY2hvIGEgIGIpIikKCWErPSgkKGVjaG8gYyAgZCkpCgliKz0oJChlY2hvICJjICBkIikpCgljKz0oIiQoZWNobyAiYyAgZCIpIikKCWQrPSgiJChlY2hvIGMgIGQpIikKCWVjaG8gIi5hOiR7YVswXX0uJHthWzFdfS4ke2FbMl19LiR7YVszXX06IgoJZWNobyAiLmI6JHtiWzBdfS4ke2JbMV19LiR7YlsyXX0uJHtiWzNdfToiCgllY2hvICIuYzoke2NbMF19LiR7Y1sxXX0uJHtjWzJdfS4ke2NbM119OiIKCWVjaG8gIi5kOiR7ZFswXX0uJHtkWzFdfS4ke2RbMl19LiR7ZFszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuYTphLmIuYy5kOgoJLmI6YS5iLmMuZDoKCS5jOmEgIGIuYyAgZC4uOgoJLmQ6YSBiLmMgZC4uOgotLS0KbmFtZTogYXJyYXNzaWduLWZuYy1ub25lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2YgYXJyYXkgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXgrPShmKQoJCWVjaG8gIi5mbjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl5PSgpCgkJZWxzZQoJCQlzZXQgLUEgeQoJCWZpCgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCXg9KG0gbSkKCXk9KG0gbSkKCWVjaG8gIi5mMDoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjE6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYyOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZWNobyAiLnJmMDoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMToke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm0ubS4uOgoJLmZuOm0ubS5mLjoKCS5mMTptLm0uZi46CgkuZm46bS5tLmYuZjoKCS5mMjptLm0uZi5mOgoJLnJmMDptLm0uLjoKCS5yZm46Zi4uLjoKCS5yZjE6Zi4uLjoKCS5yZm46Zi4uLjoKCS5yZjI6Zi4uLjoKLS0tCm5hbWU6IGFycmFzc2lnbi1mbmMtbG9jYWwKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBhcnJheSBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24KCXdpdGggdGhlIGJhc2gvbWtzaC9rc2g5MyBsb2NhbC90eXBlc2V0IGtleXdvcmQKCShub3RlOiBrc2g5MyBoYXMgbm8gbG9jYWw7IHR5cGVzZXQgd29ya3Mgb25seSBpbiBGS1NIKQpzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQl0eXBlc2V0IHgKCQl4Kz0oZikKCQllY2hvICIuZm46JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgl9CglmdW5jdGlvbiByZm4gewoJCWlmIFtbIC1uICRCQVNIX1ZFUlNJT04gXV07IHRoZW4KCQkJeT0oKQoJCWVsc2UKCQkJc2V0IC1BIHkKCQlmaQoJCXR5cGVzZXQgeQoJCXkrPShmKQoJCWVjaG8gIi5yZm46JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCgl9CglmdW5jdGlvbiBmbnIgewoJCXR5cGVzZXQgegoJCWlmIFtbIC1uICRCQVNIX1ZFUlNJT04gXV07IHRoZW4KCQkJej0oKQoJCWVsc2UKCQkJc2V0IC1BIHoKCQlmaQoJCXorPShmKQoJCWVjaG8gIi5mbnI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCgl9Cgl4PShtIG0pCgl5PShtIG0pCgl6PShtIG0pCgllY2hvICIuZjA6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYxOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWVjaG8gIi5yZjA6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjE6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjI6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCgllY2hvICIuZjByOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJZm5yCgllY2hvICIuZjFyOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJZm5yCgllY2hvICIuZjJyOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bS5tLi46CgkuZm46Zi4uLjoKCS5mMTptLm0uLjoKCS5mbjpmLi4uOgoJLmYyOm0ubS4uOgoJLnJmMDptLm0uLjoKCS5yZm46Zi4uLjoKCS5yZjE6Li4uOgoJLnJmbjpmLi4uOgoJLnJmMjouLi46CgkuZjByOm0ubS4uOgoJLmZucjpmLi4uOgoJLmYxcjptLm0uLjoKCS5mbnI6Zi4uLjoKCS5mMnI6bS5tLi46Ci0tLQpuYW1lOiBhcnJhc3NpZ24tZm5jLWdsb2JhbApkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIGFycmF5IGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgbWtzaC1zcGVjaWZpYyBnbG9iYWwga2V5d29yZApzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQlnbG9iYWwgeAoJCXgrPShmKQoJCWVjaG8gIi5mbjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJc2V0IC1BIHkKCQlnbG9iYWwgeQoJCXkrPShmKQoJCWVjaG8gIi5yZm46JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCgl9CglmdW5jdGlvbiBmbnIgewoJCWdsb2JhbCB6CgkJc2V0IC1BIHoKCQl6Kz0oZikKCQllY2hvICIuZm5yOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJej0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJZWNobyAiLmYwcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYxcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYycjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm0ubS4uOgoJLmZuOm0ubS5mLjoKCS5mMTptLm0uZi46CgkuZm46bS5tLmYuZjoKCS5mMjptLm0uZi5mOgoJLnJmMDptLm0uLjoKCS5yZm46Zi4uLjoKCS5yZjE6Zi4uLjoKCS5yZm46Zi4uLjoKCS5yZjI6Zi4uLjoKCS5mMHI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjFyOmYuLi46CgkuZm5yOmYuLi46CgkuZjJyOmYuLi46Ci0tLQpuYW1lOiBzdHJhc3NpZ24tZm5jLW5vbmUKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCXkrPWYKCQllY2hvICIucmZuOiR5OiIKCX0KCXg9bQoJeT1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOm1mOgoJLmYxOm1mOgoJLmZuOm1mZjoKCS5mMjptZmY6CgkucmYwOm06CgkucmZuOmY6CgkucmYxOmY6CgkucmZuOmY6CgkucmYyOmY6Ci0tLQpuYW1lOiBzdHJhc3NpZ24tZm5jLWxvY2FsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2Ygc3RyaW5nIGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaC9ta3NoL2tzaDkzIGxvY2FsL3R5cGVzZXQga2V5d29yZAoJKG5vdGU6IGtzaDkzIGhhcyBubyBsb2NhbDsgdHlwZXNldCB3b3JrcyBvbmx5IGluIEZLU0gpCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgeAoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCXR5cGVzZXQgeQoJCXkrPWYKCQllY2hvICIucmZuOiR5OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCB6CgkJej0KCQl6Kz1mCgkJZWNobyAiLmZucjokejoiCgl9Cgl4PW0KCXk9bQoJej1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCgllY2hvICIuZjByOiR6OiIKCWZucgoJZWNobyAiLmYxcjokejoiCglmbnIKCWVjaG8gIi5mMnI6JHo6IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bToKCS5mbjpmOgoJLmYxOm06CgkuZm46ZjoKCS5mMjptOgoJLnJmMDptOgoJLnJmbjpmOgoJLnJmMTo6CgkucmZuOmY6CgkucmYyOjoKCS5mMHI6bToKCS5mbnI6ZjoKCS5mMXI6bToKCS5mbnI6ZjoKCS5mMnI6bToKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtZ2xvYmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2Ygc3RyaW5nIGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgbWtzaC1zcGVjaWZpYyBnbG9iYWwga2V5d29yZApzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQlnbG9iYWwgeAoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCWdsb2JhbCB5CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQlnbG9iYWwgegoJCXo9CgkJeis9ZgoJCWVjaG8gIi5mbnI6JHo6IgoJfQoJeD1tCgl5PW0KCXo9bQoJZWNobyAiLmYwOiR4OiIKCWZuCgllY2hvICIuZjE6JHg6IgoJZm4KCWVjaG8gIi5mMjokeDoiCgllY2hvICIucmYwOiR5OiIKCXJmbgoJZWNobyAiLnJmMTokeToiCglyZm4KCWVjaG8gIi5yZjI6JHk6IgoJZWNobyAiLmYwcjokejoiCglmbnIKCWVjaG8gIi5mMXI6JHo6IgoJZm5yCgllY2hvICIuZjJyOiR6OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm06CgkuZm46bWY6CgkuZjE6bWY6CgkuZm46bWZmOgoJLmYyOm1mZjoKCS5yZjA6bToKCS5yZm46ZjoKCS5yZjE6ZjoKCS5yZm46ZjoKCS5yZjI6ZjoKCS5mMHI6bToKCS5mbnI6ZjoKCS5mMXI6ZjoKCS5mbnI6ZjoKCS5mMnI6ZjoKLS0tCm5hbWU6IHVuc2V0LWZuYy1sb2NhbC1rc2gKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IOKAnHVuc2V04oCdIHJlbW92ZXMgYSBwcmV2aW91cyDigJxsb2NhbOKAnQoJKGtzaDkzIHN5bnRheCBjb21wYXRpYmxlIHZlcnNpb24pOyBhcHBhcmVudGx5LAoJdGhlcmUgYXJlIHNoZWxscyB3aGljaCBmYWlsIHRoaXM/CnN0ZGluOgoJZnVuY3Rpb24gZiB7CgkJZWNobyBmMDogJHgKCQl0eXBlc2V0IHgKCQllY2hvIGYxOiAkeAoJCXg9ZmEKCQllY2hvIGYyOiAkeAoJCXVuc2V0IHgKCQllY2hvIGYzOiAkeAoJCXg9ZmIKCQllY2hvIGY0OiAkeAoJfQoJeD1vCgllY2hvIGJlZm9yZTogJHgKCWYKCWVjaG8gYWZ0ZXI6ICR4CmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZTogbwoJZjA6IG8KCWYxOgoJZjI6IGZhCglmMzogbwoJZjQ6IGZiCglhZnRlcjogZmIKLS0tCm5hbWU6IHVuc2V0LWZuYy1sb2NhbC1zaApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQg4oCcdW5zZXTigJ0gcmVtb3ZlcyBhIHByZXZpb3VzIOKAnGxvY2Fs4oCdCgkoRGViaWFuIFBvbGljeSDCpzEwLjQgc2ggdmVyc2lvbik7IGFwcGFyZW50bHksCgl0aGVyZSBhcmUgc2hlbGxzIHdoaWNoIGZhaWwgdGhpcz8Kc3RkaW46CglmKCkgewoJCWVjaG8gZjA6ICR4CgkJbG9jYWwgeAoJCWVjaG8gZjE6ICR4CgkJeD1mYQoJCWVjaG8gZjI6ICR4CgkJdW5zZXQgeAoJCWVjaG8gZjM6ICR4CgkJeD1mYgoJCWVjaG8gZjQ6ICR4Cgl9Cgl4PW8KCWVjaG8gYmVmb3JlOiAkeAoJZgoJZWNobyBhZnRlcjogJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJYmVmb3JlOiBvCglmMDogbwoJZjE6CglmMjogZmEKCWYzOiBvCglmNDogZmIKCWFmdGVyOiBmYgotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBzdWJzdHJpbmcgZXhwYW5zaW9uIHdvcmtzCgl3aGVuIHVzaW5nIHBvc2l0aXZlIG51bWVyaWNzCnN0ZGluOgoJeD1hYmNkZWZnaGkKCXR5cGVzZXQgLWkgeT0xMjM0NTY3ODkKCXR5cGVzZXQgLWkgMTYgej0xMjM0NTY3ODkJIyAxNiM3NWJjZDE1CgllY2hvIGEgdCR7eDoyOjJ9ICR7eToyOjN9ICR7ejoyOjN9IGEKCWVjaG8gYiAke3g6OjN9ICR7eTo6M30gJHt6OjozfSBiCgllY2hvIGMgJHt4OjI6fSAke3k6Mjp9ICR7ejoyOn0gYwoJZWNobyBkICR7eDoyfSAke3k6Mn0gJHt6OjJ9IGQKCWVjaG8gZSAke3g6Mjo2fSAke3k6Mjo2fSAke3o6Mjo3fSBlCgllY2hvIGYgJHt4OjI6N30gJHt5OjI6N30gJHt6OjI6OH0gZgoJZWNobyBnICR7eDoyOjh9ICR7eToyOjh9ICR7ejoyOjl9IGcKZXhwZWN0ZWQtc3Rkb3V0OgoJYSB0Y2QgMzQ1ICM3NSBhCgliIGFiYyAxMjMgMTYjIGIKCWMgYwoJZCBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZAoJZSBjZGVmZ2ggMzQ1Njc4ICM3NWJjZDEgZQoJZiBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZgoJZyBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBzdWJzdHJpbmcgZXhwYW5zaW9uIHdvcmtzCgl3aGVuIHVzaW5nIG5lZ2F0aXZlIG51bWVyaWNzIG9yIGV4cHJlc3Npb25zCnN0ZGluOgoJeD1hYmNkZWZnaGkKCXR5cGVzZXQgLWkgeT0xMjM0NTY3ODkKCXR5cGVzZXQgLWkgMTYgej0xMjM0NTY3ODkJIyAxNiM3NWJjZDE1CgluPTIKCWVjaG8gYSAke3g6JG46M30gJHt5OiRuOjN9ICR7ejokbjozfSBhCgllY2hvIGIgJHt4OihuKTozfSAke3k6KG4pOjN9ICR7ejoobik6M30gYgoJZWNobyBjICR7eDooLTIpOjF9ICR7eTooLTIpOjF9ICR7ejooLTIpOjF9IGMKCWVjaG8gZCB0JHt4OiBuOjJ9ICR7eTogbjozfSAke3o6IG46M30gZApleHBlY3RlZC1zdGRvdXQ6CglhIGNkZSAzNDUgIzc1IGEKCWIgY2RlIDM0NSAjNzUgYgoJYyBoIDggMSBjCglkIHRjZCAzNDUgIzc1IGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc29tZSB0aGluZ3MgdGhhdCB3b3JrIGluIGJhc2ggZmFpbC4KCVRoaXMgaXMgYnkgZGVzaWduLiBPaCBhbmQgdmljZSB2ZXJzYSwgbm93YWRheXMuCnN0ZGluOgoJZXhwb3J0IHg9YWJjZGVmZ2hpIG49MgoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB2JHt4OihuKX14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB3JHt4OiBufXgnCgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIHgke3g6bn14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB5JHt4On14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB6JHt4fXgnCgkjIG5leHQgZmFpbHMgb25seSBpbiBiYXNoCgkiJF9fcHJvZ25hbWUiIC1jICd4PWFiY2RlZjt5PTEyMztlY2hvICR7eDoke3k6MjoxfToyfScgPi9kZXYvbnVsbCAyPiYxOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCXZjZGVmZ2hpeAoJd2NkZWZnaGl4Cgl6YWJjZGVmZ2hpeAoJMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS94Om4uKmJhZCBzdWJzdGl0dXRpb24uKlxuLipiYWQgc3Vic3RpdHV0aW9uLwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIGZvciBzdWJzdHJpbmcgZXhwYW5zaW9uCnN0ZGluOgoJeD1hYmNkZWZnaGkKCWludGVnZXIgeT0yCgllY2hvIGEgJHt4Oih5ID09IDEgPyAyIDogMyk6NH0gYQpleHBlY3RlZC1zdGRvdXQ6CglhIGRlZmcgYQotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci01QQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3Vic3RyaW5nIGV4cGFuc2lvbnMgd29yayBvbiBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCgl4PW3DpGgKCWVjaG8gYSAke3g6OjF9ICR7eDogLTF9IGEKCWVjaG8gYiAke3g6OjN9ICR7eDogLTN9IGIKCWVjaG8gYyAke3g6MToyfSAke3g6IC0zOjJ9IGMKCWVjaG8gZCAkeyN4fSBkCmV4cGVjdGVkLXN0ZG91dDoKCWEgbSBoIGEKCWIgbcOkIMOkaCBiCgljIMOkIMOkIGMKCWQgNCBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTVXCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzdWJzdHJpbmcgZXhwYW5zaW9ucyB3b3JrIG9uIGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCXg9bcOkaAoJZWNobyBhICR7eDo6MX0gJHt4OiAtMX0gYQoJZWNobyBiICR7eDo6Mn0gJHt4OiAtMn0gYgoJZWNobyBjICR7eDoxOjF9ICR7eDogLTI6MX0gYwoJZWNobyBkICR7I3h9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBtIGggYQoJYiBtw6Qgw6RoIGIKCWMgw6Qgw6QgYwoJZCAzIGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3RyaW5nIHN1YnN0aXR1dGlvbiB3b3JrcyBjb3JyZWN0bHkKc3RkaW46Cglmb289MQoJYmFyPTIKCWJhej1xd2VydHl1aW9wCgllY2hvIGEgJHtiYXo6IGZvbzogYmFyfQoJZWNobyBiICR7YmF6OiBmb286ICRiYXJ9CgllY2hvIGMgJHtiYXo6ICRmb286IGJhcn0KCWVjaG8gZCAke2JhejogJGZvbzogJGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJYSB3ZQoJYiB3ZQoJYyB3ZQoJZCB3ZQotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaApkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAeH0gZXhwYW5zaW9uIGZvciB4PWhhc2gKc3RkaW46Cgl0eXBlc2V0IC1pOCBmb289MTAKCWJhcj1iYXoKCXVuc2V0IGJhegoJcHJpbnQgJHtmb29AI30gJHtiYXJAI30gJHtiYXpAI30gLgpleHBlY3RlZC1zdGRvdXQ6Cgk5QjE1RkJGQiBDRkJERDMyQiAwMDAwMDAwMCAuCi0tLQpuYW1lOiB2YXJleHBhbmQtc3BlY2lhbC1xdW90ZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAUX0gZXhwYW5zaW9uIGZvciBxdW90ZWQgc3RyaW5ncwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmRcMjQwZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZFwyNDBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1udWxsLTEKZGVzY3JpcHRpb246CglFbnN1cmUgZW1wdHkgc3RyaW5ncyBleHBhbmQgZW1wdGlseQpzdGRpbjoKCXByaW50IHMgJHthfSAuICR7Yn0gUwoJcHJpbnQgdCAke2EjP30gLiAke2IlP30gVAoJcHJpbnQgciAke2E9fSAuICR7Yi9jL2R9IFIKCXByaW50IHEKCXByaW50IHMgIiR7YX0iIC4gIiR7Yn0iIFMKCXByaW50IHQgIiR7YSM/fSIgLiAiJHtiJT99IiBUCglwcmludCByICIke2E9fSIgLiAiJHtiL2MvZH0iIFIKZXhwZWN0ZWQtc3Rkb3V0OgoJcyAuIFMKCXQgLiBUCglyIC4gUgoJcQoJcyAgLiAgUwoJdCAgLiAgVAoJciAgLiAgUgotLS0KbmFtZTogdmFyZXhwYW5kLW51bGwtMgpkZXNjcmlwdGlvbjoKCUVuc3VyZSBlbXB0eSBzdHJpbmdzLCB3aGVuIHF1b3RlZCwgYXJlIGV4cGFuZGVkIGFzIGVtcHR5IHN0cmluZ3MKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiPCR4PiAiOyBkb25lJyA+cGZzCgljaG1vZCAreCBwZnMKCS4vcGZzIDEgIiR7YX0iIDIgIiR7YSM/fSIgKyAiJHtiJT99IiAzICIke2E9fSIgKyAiJHtiL2MvZH0iCgllY2hvIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDw+IDwyPiA8PiA8Kz4gPD4gPDM+IDw+IDwrPiA8PiAuCi0tLQpuYW1lOiB2YXJleHBhbmQtbnVsbC0zCmRlc2NyaXB0aW9uOgoJRW5zdXJlIGNvbmNhdGVuYXRpbmcgYmVoYXZpb3VyIG1hdGNoZXMgb3RoZXIgc2hlbGxzCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXNob3dhcmdzIDAgIiIkQAoJeD07IHNob3dhcmdzIDEgIiR4IiRACglzZXQgQTsgc2hvd2FyZ3MgMiAiJHtAOit9IgoJbigpIHsgZWNobyAiJCMiOyB9Cgl1bnNldCBlCglzZXQgLS0gYSBiCgluICIiIiRAIgoJbiAiJEAiCgluICIkQCIiIgoJbiAiJGUiIiRAIgoJbiAiJEAiCgluICIkQCIiJGUiCglzZXQgLS0KCW4gIiIiJEAiCgluICIkQCIKCW4gIiRAIiIiCgluICIkZSIiJEAiCgluICIkQCIKCW4gIiRAIiIkZSIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IDw+IC4KCTwxPiA8PiAuCgk8Mj4gPD4gLgoJMgoJMgoJMgoJMgoJMgoJMgoJMQoJMAoJMQoJMQoJMAoJMQotLS0KbmFtZTogdmFyZXhwYW5kLWZ1bm55LWNoYXJzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjaGFyYWN0ZXJzCglYWFggXHVFRjgwIGlzIGFzeW1tZXRyaWMsIHBvc3NpYmx5IGJ1Z2d5IHNvIHdlIGRvbuKAmXQgY2hlY2sgdGhpcwpzdGRpbjoKCXg9JCc8XHgwMD4nOyB0eXBlc2V0IC1wIHgKCXg9JCc8XHgwMT4nOyB0eXBlc2V0IC1wIHgKCXg9JCc8XHUwMDAwPic7IHR5cGVzZXQgLXAgeAoJeD0kJzxcdTAwMDE+JzsgdHlwZXNldCAtcCB4CmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgeD0nPCcKCXR5cGVzZXQgeD0kJzxcMDAxPicKCXR5cGVzZXQgeD0nPCcKCXR5cGVzZXQgeD0kJzxcMDAxPicKLS0tCm5hbWU6IHByaW50LWZ1bm55LWNoYXJzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJpbnQgYnVpbHRpbidzIGNhcGFiaWxpdHkgdG8gb3V0cHV0IGRlc2lnbmF0ZWQgY2hhcmFjdGVycwpzdGRpbjoKCXByaW50ICc8XDAxNDRcMDM0NFx4REJcdTAwREJcdTIwQUNcdURCXHg0MD4nCglwcmludCAnPFx4MDA+JwoJcHJpbnQgJzxceDAxPicKCXByaW50ICc8XHUwMDAwPicKCXByaW50ICc8XHUwMDAxPicKZXhwZWN0ZWQtc3Rkb3V0OgoJPGTk28Ob4oKsw5tAPgoJPAA+Cgk8AT4KCTwAPgoJPAE+Ci0tLQpuYW1lOiBwcmludC1ia3NsLWMKZGVzY3JpcHRpb246CglDaGVjayBwcmludCBidWlsdGluJ3MgXGMgZXNjYXBlCnN0ZGluOgoJcHJpbnQgJ1xjYSc7IHByaW50IGIKZXhwZWN0ZWQtc3Rkb3V0OgoJYWIKLS0tCm5hbWU6IHByaW50LWNyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBDUitMRiBpcyBub3QgY29sbGFwc2VkIGludG8gTEYgYXMgc29tZSBNU1lTIHNoZWxscyB3cm9uZ2x5IGRvCnN0ZGluOgoJZWNobyAnIyEnIiRfX3Byb2duYW1lIiA+Zm9vCgljYXQgPj5mb28gPDwtJ0VPRicKCQlwcmludCAtbiAtLSAnMjIwLWJsYXUubWlyYnNkLm9yZyBFU01UUCByZWFkeSBhdCBUaHUsIDI1IEp1bCAyMDEzIDE1OjU3OjU3IEdNVFxyXG4yMjAtPj4gQml0dGUga2VpbmUgV2VyYnVuZyBlaW53ZXJmZW4hIDw8XHJcclxuMjIwIFdobyBkbyB5b3Ugd2FubmEgcHJldGVuZCB0byBiZSB0b2RheScKCQlwcmludCBcPw0KCUVPRgoJY2htb2QgK3ggZm9vCgllY2hvICJbJCguL2ZvbyldIgoJLi9mb28gfCB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlwcmludCAtciAtLSAieyRsaW5lfSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJWzIyMC1ibGF1Lm1pcmJzZC5vcmcgRVNNVFAgcmVhZHkgYXQgVGh1LCAyNSBKdWwgMjAxMyAxNTo1Nzo1NyBHTVQNCgkyMjAtPj4gQml0dGUga2VpbmUgV2VyYnVuZyBlaW53ZXJmZW4hIDw8DQ0KCTIyMCBXaG8gZG8geW91IHdhbm5hIHByZXRlbmQgdG8gYmUgdG9kYXk/DV0KCXsyMjAtYmxhdS5taXJic2Qub3JnIEVTTVRQIHJlYWR5IGF0IFRodSwgMjUgSnVsIDIwMTMgMTU6NTc6NTcgR01UDX0KCXsyMjAtPj4gQml0dGUga2VpbmUgV2VyYnVuZyBlaW53ZXJmZW4hIDw8DQ19Cgl7MjIwIFdobyBkbyB5b3Ugd2FubmEgcHJldGVuZCB0byBiZSB0b2RheT8NfQotLS0KbmFtZTogcHJpbnQtY3JsZgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgQ1IrTEYgaXMgc2hvd24gYW5kIHJlYWQgYXMtaXMKc3RkaW46CgljYXQgPmZvbyA8PC0nRU9GJwoJCXg9J2Jhcg0KCQknICMNCgkJZWNobyAuJHsjeH0gIw0KCQlpZiB0ZXN0IHgiJEtTSF9WRVJTSU9OIiA9IHgiIjsgdGhlbiAjDQoJCQlwcmludGYgJzwlcz4nICIkeCIgIw0KCQllbHNlICMNCgkJCXByaW50IC1uciAtLSAiPCR4PiIgIw0KCQlmaSAjDQoJRU9GCgllY2hvICJbJCgiJF9fcHJvZ25hbWUiIGZvbyldIgoJIiRfX3Byb2duYW1lIiBmb28gfCB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlwcmludCAtciAtLSAieyRsaW5lfSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJWy41Cgk8YmFyDQoJPl0KCXsuNX0KCXs8YmFyDX0KLS0tCm5hbWU6IHByaW50LWxmCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBMRi1vbmx5IGlzIHNob3duIGFuZCByZWFkIGFzLWlzCnN0ZGluOgoJY2F0ID5mb28gPDwtJ0VPRicKCQl4PSdiYXIKCQknICMKCQllY2hvIC4keyN4fSAjCgkJaWYgdGVzdCB4IiRLU0hfVkVSU0lPTiIgPSB4IiI7IHRoZW4gIwoJCQlwcmludGYgJzwlcz4nICIkeCIgIwoJCWVsc2UgIwoJCQlwcmludCAtbnIgLS0gIjwkeD4iICMKCQlmaSAjCglFT0YKCWVjaG8gIlskKCIkX19wcm9nbmFtZSIgZm9vKV0iCgkiJF9fcHJvZ25hbWUiIGZvbyB8IHdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCXByaW50IC1yIC0tICJ7JGxpbmV9IgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglbLjQKCTxiYXIKCT5dCgl7LjR9Cgl7PGJhcn0KLS0tCm5hbWU6IHByaW50LW51bC1jaGFycwpkZXNjcmlwdGlvbjoKCUNoZWNrIGhhbmRsaW5nIG9mIE5VTCBjaGFyYWN0ZXJzIGZvciBwcmludCBhbmQgQ09NU1VCCnN0ZGluOgoJeD0kKHByaW50ICc8XDA+JykKCXByaW50ICQoKCQocHJpbnQgJzxcMD4nIHwgd2MgLWMpKSkgJCgoJChwcmludCAiJHgiIHwgd2MgLWMpKSkgXAoJICAgICR7I3h9ICIkeCIgJzxcMD4nCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL140IDMgMiA8PiA8XDA+JC8KLS0tCm5hbWU6IHByaW50LWVzY2FwZXMKZGVzY3JpcHRpb246CglDaGVjayBiYWNrc2xhc2ggZXhwYW5zaW9uIGJ5IHRoZSBwcmludCBidWlsdGluCnN0ZGluOgoJcHJpbnQgJ1wgXCFcIlwjXCRcJVwmJ1xcXCcnXChcKVwqXCtcLFwtXC5cL1wwXDFcMlwzXDRcNVw2XDdcOCcgXAoJICAgICdcOVw6XDtcPFw9XD5cP1xAXEFcQlxDXERcRVxGXEdcSFxJXEpcS1xMXE1cTlxPXFBcUVxSXFNcVCcgXAoJICAgICdcVVxWXFdcWFxZXFpcW1xcXF1cXlxfXGBcYVxiICBcZFxlXGZcZ1xoXGlcalxrXGxcbVxuXG9ccCcgXAoJICAgICdccVxyXHNcdFx1XHZcd1x4XHlcelx7XHxcfVx+JyAnXHUyMGFjZCcgJ1xVMjBhY2QnICdceDEyMycgXAoJICAgICdcMHgnICdcMDEyMycgJ1wwMTIzNCcgfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNBcwoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjUgaHY9MjE0NzQ4MzY0NwoJCXR5cGVzZXQgLWkxIHdjPTB4MEEKCQlkYXNjPQoJCW5sPSR7d2MjMSN9CgkJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJCWxpbmU9JGxpbmUkbmwKCQkJd2hpbGUgW1sgLW4gJGxpbmUgXV07IGRvCgkJCQlodj0xIyR7bGluZTo6MX0KCQkJCWlmICgoIChwb3MgJiAxNSkgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJcHJpbnQgLW4gIiR7aHYjMTYjfSAiCgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgKGh2ID4gMTI2KSApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MuCgkJCQllbHNlCgkJCQkJZGFzYz0kZGFzYyR7bGluZTo6MX0KCQkJCWZpCgkJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJCQlsaW5lPSR7bGluZToxfQoJCQlkb25lCgkJZG9uZQoJCXdoaWxlICgoIHBvcyAmIDE1ICkpOyBkbwoJCQlwcmludCAtbiAnICAgJwoJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDVDIDIwIDVDIDIxIDVDIDIyIDVDIDIzIC0gNUMgMjQgNUMgMjUgNUMgMjYgNUMgMjcgIHxcIFwhXCJcI1wkXCVcJlwnfAoJMDAwMDAwMTAgIDVDIDI4IDVDIDI5IDVDIDJBIDVDIDJCIC0gNUMgMkMgNUMgMkQgNUMgMkUgNUMgMkYgIHxcKFwpXCpcK1wsXC1cLlwvfAoJMDAwMDAwMjAgIDVDIDMxIDVDIDMyIDVDIDMzIDVDIDM0IC0gNUMgMzUgNUMgMzYgNUMgMzcgNUMgMzggIHxcMVwyXDNcNFw1XDZcN1w4fAoJMDAwMDAwMzAgIDIwIDVDIDM5IDVDIDNBIDVDIDNCIDVDIC0gM0MgNUMgM0QgNUMgM0UgNUMgM0YgNUMgIHwgXDlcOlw7XDxcPVw+XD9cfAoJMDAwMDAwNDAgIDQwIDVDIDQxIDVDIDQyIDVDIDQzIDVDIC0gNDQgMUIgNUMgNDYgNUMgNDcgNUMgNDggIHxAXEFcQlxDXEQuXEZcR1xIfAoJMDAwMDAwNTAgIDVDIDQ5IDVDIDRBIDVDIDRCIDVDIDRDIC0gNUMgNEQgNUMgNEUgNUMgNEYgNUMgNTAgIHxcSVxKXEtcTFxNXE5cT1xQfAoJMDAwMDAwNjAgIDVDIDUxIDVDIDUyIDVDIDUzIDVDIDU0IC0gMjAgNUMgNTYgNUMgNTcgNUMgNTggNUMgIHxcUVxSXFNcVCBcVlxXXFhcfAoJMDAwMDAwNzAgIDU5IDVDIDVBIDVDIDVCIDVDIDVDIDVEIC0gNUMgNUUgNUMgNUYgNUMgNjAgMDcgMDggIHxZXFpcW1xdXF5cX1xgLi58CgkwMDAwMDA4MCAgMjAgMjAgNUMgNjQgMUIgMEMgNUMgNjcgLSA1QyA2OCA1QyA2OSA1QyA2QSA1QyA2QiAgfCAgXGQuLlxnXGhcaVxqXGt8CgkwMDAwMDA5MCAgNUMgNkMgNUMgNkQgMEEgNUMgNkYgNUMgLSA3MCAyMCA1QyA3MSAwRCA1QyA3MyAwOSAgfFxsXG0uXG9ccCBccS5ccy58CgkwMDAwMDBBMCAgMEIgNUMgNzcgNUMgNzkgNUMgN0EgNUMgLSA3QiA1QyA3QyA1QyA3RCA1QyA3RSAyMCAgfC5cd1x5XHpce1x8XH1cfiB8CgkwMDAwMDBCMCAgRTIgODIgQUMgNjQgMjAgRUYgQkYgQkQgLSAyMCAxMiAzMyAyMCA3OCAyMCA1MyAyMCAgfC4uLmQgLi4uIC4zIHggUyB8CgkwMDAwMDBDMCAgNTMgMzQgMEEgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgfFM0LnwKLS0tCm5hbWU6IGRvbGxhci1kb3VibGVxdW90ZWQtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSAkIHByZWNlZGluZyAi4oCmIiBpcyBpZ25vcmVkCnN0ZGluOgoJZWNobyAkIkxvY2FsaXNlIG1lISIKCWNhdCA8PDwkIk1lIHRvbyEiCglWPVgKCWFvbD1hb2wKCWNhdCA8PC0kImFvbCIKCQlJIGRvIG5vdCB0YWtlIGEgJFYgZm9yIGEgViEKCWFvbApleHBlY3RlZC1zdGRvdXQ6CglMb2NhbGlzZSBtZSEKCU1lIHRvbyEKCUkgZG8gbm90IHRha2UgYSAkViBmb3IgYSBWIQotLS0KbmFtZTogZG9sbGFyLXF1b3RlZC1zdHJpbmdzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFja3NsYXNoIGV4cGFuc2lvbiBieSAkJ+KApicgc3RyaW5ncwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJY2htb2QgK3ggcGZuCgkuL3BmbiAkJ1wgXCFcIlwjXCRcJVwmXCdcKFwpXCpcK1wsXC1cLlwvIFwxXDJcM1w0XDVcNicgXAoJICAgICQnYVwwYicgJCdhXDAxYicgJCdcN1w4XDlcOlw7XDxcPVw+XD9cQFxBXEJcQ1xEXEVcRlxHXEhcSScgXAoJICAgICQnXEpcS1xMXE1cTlxPXFBcUVxSXFNcVFxVMVxWXFdcWFxZXFpcW1xcXF1cXlxfXGBcYVxiXGRcZScgXAoJICAgICQnXGZcZ1xoXGlcalxrXGxcbVxuXG9ccFxxXHJcc1x0XHUxXHZcd1x4MVx5XHpce1x8XH1cfiAkeCcgXAoJICAgICQnXHUyMGFjZCcgJCdcVTIwYWNkJyAkJ1x4MTIzJyAkJ2ZuXHgwcmQnICQnXDAyMzQnICQnXDIzNCcgXAoJICAgICQnXDIzNDUnICQnXGNhJyAkJ1xjIScgJCdcYz8nICQnXGPigqwnICQnYVwKCWInIHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXMKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQl0eXBlc2V0IC1pMSB3Yz0weDBBCgkJZGFzYz0KCQlubD0ke3djIzEjfQoJCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCQlsaW5lPSRsaW5lJG5sCgkJCXdoaWxlIFtbIC1uICRsaW5lIF1dOyBkbwoJCQkJaHY9MSMke2xpbmU6OjF9CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmU6OjF9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQkJbGluZT0ke2xpbmU6MX0KCQkJZG9uZQoJCWRvbmUKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50ICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICAyMCAyMSAyMiAyMyAyNCAyNSAyNiAyNyAtIDI4IDI5IDJBIDJCIDJDIDJEIDJFIDJGICB8ICEiIyQlJicoKSorLC0uL3wKCTAwMDAwMDEwICAyMCAwMSAwMiAwMyAwNCAwNSAwNiAwQSAtIDYxIDBBIDYxIDAxIDYyIDBBIDA3IDM4ICB8IC4uLi4uLi5hLmEuYi4uOHwKCTAwMDAwMDIwICAzOSAzQSAzQiAzQyAzRCAzRSAzRiA0MCAtIDQxIDQyIDQzIDQ0IDFCIDQ2IDQ3IDQ4ICB8OTo7PD0+P0BBQkNELkZHSHwKCTAwMDAwMDMwICA0OSAwQSA0QSA0QiA0QyA0RCA0RSA0RiAtIDUwIDUxIDUyIDUzIDU0IDAxIDU2IDU3ICB8SS5KS0xNTk9QUVJTVC5WV3wKCTAwMDAwMDQwICA1OCA1OSA1QSA1QiA1QyA1RCA1RSA1RiAtIDYwIDA3IDA4IDY0IDFCIDBBIDBDIDY3ICB8WFlaW1xdXl9gLi5kLi4uZ3wKCTAwMDAwMDUwICA2OCA2OSA2QSA2QiA2QyA2RCAwQSA2RiAtIDcwIDcxIDBEIDczIDA5IDAxIDBCIDc3ICB8aGlqa2xtLm9wcS5zLi4ud3wKCTAwMDAwMDYwICAwMSA3OSA3QSA3QiA3QyA3RCA3RSAyMCAtIDI0IDc4IDBBIEUyIDgyIEFDIDY0IDBBICB8Lnl6e3x9fiAkeC4uLi5kLnwKCTAwMDAwMDcwICBFRiBCRiBCRCAwQSBDNCBBMyAwQSA2NiAtIDZFIDBBIDEzIDM0IDBBIDlDIDBBIDlDICB8Li4uLi4uLmZuLi40Li4uLnwKCTAwMDAwMDgwICAzNSAwQSAwMSAwQSAwMSAwQSA3RiAwQSAtIDAyIDgyIEFDIDBBIDYxIDBBIDYyIDBBICB8NS4uLi4uLi4uLi4uYS5iLnwKLS0tCm5hbWU6IGRvbGxhci1xdW90ZXMtaW4taGVyZWRvY3Mtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCVRoZXkgYXJlLCBob3dldmVyLCBub3QgcGFyc2VkIGluIGhlcmUgZG9jdW1lbnRzLCBoZXJlIHN0cmluZ3MKCShvdXRzaWRlIG9mIHN0cmluZyBkZWxpbWl0ZXJzKSBvciByZWd1bGFyIHN0cmluZ3MsIGJ1dCBpbgoJcGFyYW1ldGVyIHN1YnN0aXR1dGlvbnMuCnN0ZGluOgoJY2F0IDw8RU9GCgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglFT0YKCWNhdCA8PCQnYVx0YicKCWFcdGIKCWEJYgoJY2F0IDw8PCJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwnZG9sbGFyID0gc3RyY2hyKHMsICdcJyckJ1wnJyk7CS8qICdcJycgKi8nCgl4PSJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwiJHgiCgljYXQgPDw8JCdhXEVbMG1cdGInCgl1bnNldCBubDsgcHJpbnQgLXIgLS0gIngke25sOj0kJ1xuJ315IgoJZWNobyAiMSBmb29cImJhciIKCSMgY2YgJiBIRVJFRE9DCgljYXQgPDxFT0YKCTIgZm9vXCJiYXIKCUVPRgoJIyBwcm9iYWJseSBuZXZlciByZWFjaGVkIGZvciBoZXJlIHN0cmluZ3M/CgljYXQgPDw8IjMgZm9vXCJiYXIiCgljYXQgPDw8IjQgZm9vXFxcImJhciIKCWNhdCA8PDwnNSBmb29cImJhcicKCSMgb2xkIHNjcmlwdHMgdXNlIHRoaXMgKGUuZy4gbmN1cnNlcykKCWVjaG8gIl4kIgoJIyBtYWtlIHN1cmUgdGhpcyB3b3Jrcywgb3V0c2lkZSBvZiBxdW90ZXMKCWNhdCA8PDwnNyckJ1x0JycuJwpleHBlY3RlZC1zdGRvdXQ6CgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglhXHRiCglkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLwoJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCWRvbGxhciA9IHN0cmNocihzLCAnJCcpOwkvKiAnICovCglhG1swbQliCgl4Cgl5CgkxIGZvbyJiYXIKCTIgZm9vXCJiYXIKCTMgZm9vImJhcgoJNCBmb29cImJhcgoJNSBmb29cImJhcgoJXiQKCTcJLgotLS0KbmFtZTogZG90LW5lZWRzLWFyZ3VtZW50CmRlc2NyaXB0aW9uOgoJY2hlY2sgRGViaWFuICM0MTUxNjcgc29sdXRpb246ICcuJyB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgZmFpbApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgLgoJIiRfX3Byb2duYW1lIiAtYyBzb3VyY2UKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL1wuOiBtaXNzaW5nIGFyZ3VtZW50Lipcbi4qc291cmNlOiBtaXNzaW5nIGFyZ3VtZW50LwotLS0KbmFtZTogYWxpYXMtZnVuY3Rpb24tbm8tY29uZmxpY3QKZGVzY3JpcHRpb246CgltYWtlIGFsaWFzZXMgbm90IGNvbmZsaWN0IHdpdGggZnVuY3Rpb24gZGVmaW5pdGlvbnMKc3RkaW46CgkjIFBPU0lYIGZ1bmN0aW9uIGNhbiBiZSBkZWZpbmVkLCBidXQgYWxpYXMgb3ZlcnJpZGVzIGl0CglhbGlhcyBmb289J2VjaG8gYmFyJwoJZm9vCglmb28oKSB7CgkJZWNobyBiYXoKCX0KCWZvbwoJdW5zZXQgLWYgZm9vCglmb28gMj4vZGV2L251bGwgfHwgZWNobyByYWIKCSMgYWxpYXMgb3ZlcnJpZGVzIGtzaCBmdW5jdGlvbgoJYWxpYXMga29ybj0nZWNobyBiYXInCglrb3JuCglmdW5jdGlvbiBrb3JuIHsKCQllY2hvIGJhegoJfQoJa29ybgoJIyBhbGlhcyB0ZW1wb3JhcmlseSBvdmVycmlkZXMgUE9TSVggZnVuY3Rpb24KCWJsYSgpIHsKCQllY2hvIGJmbgoJfQoJYmxhCglhbGlhcyBibGE9J2VjaG8gYmFsJwoJYmxhCgl1bmFsaWFzIGJsYQoJYmxhCmV4cGVjdGVkLXN0ZG91dDoKCWJhcgoJYmFyCgliYXIKCWJhcgoJYmFyCgliZm4KCWJhbAoJYmZuCi0tLQpuYW1lOiBiYXNoLWZ1bmN0aW9uLXBhcmVucwpkZXNjcmlwdGlvbjoKCWVuc3VyZSB0aGUga2V5d29yZCBmdW5jdGlvbiBpcyBpZ25vcmVkIHdoZW4gcHJlY2VkaW5nCglQT1NJWCBzdHlsZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKGJhc2hpc20pCnN0ZGluOgoJbWsoKSB7CgkJZWNobyAnIyEnIiRfX3Byb2duYW1lIgoJCWVjaG8gIiQxIHsiCgkJZWNobyAnCWVjaG8gImJhcj0nXCcnJDAnXCdcIgoJCWVjaG8gJ30nCgkJcHJpbnQgLXIgLS0gIiR7MjotZm9vfSIKCX0KCW1rICdmdW5jdGlvbiBmb28nID5mLWtvcm4KCW1rICdmb28gKCknID5mLWRhc2gKCW1rICdmdW5jdGlvbiBmb28gKCknID5mLWJhc2gKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xucHJpbnQgLXIgLS0gIiR7MCUvZi1hcmdofSInID5mLWFyZ2gKCWNobW9kICt4IGYtKgoJdT0kKC4vZi1hcmdoKQoJeD0ia29ybjogJCguL2Yta29ybikiOyBlY2hvICIke3gvQCgiJHUiKS8ufSIKCXg9ImRhc2g6ICQoLi9mLWRhc2gpIjsgZWNobyAiJHt4L0AoIiR1IikvLn0iCgl4PSJiYXNoOiAkKC4vZi1iYXNoKSI7IGVjaG8gIiR7eC9AKCIkdSIpLy59IgpleHBlY3RlZC1zdGRvdXQ6Cglrb3JuOiBiYXI9J2ZvbycKCWRhc2g6IGJhcj0nLi9mLWRhc2gnCgliYXNoOiBiYXI9Jy4vZi1iYXNoJwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0xCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHdvcmtzCnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1VdWkxNiBpMD0xI+8gaTE9MSPigqwKCXR5cGVzZXQgLWkxIG8wYT02NAoJdHlwZXNldCAtaTEgbzFhPTB4MjYzQQoJdHlwZXNldCAtVXVpMSBvMGI9MHg3RQoJdHlwZXNldCAtVXVpMSBvMWI9MHhGREQwCglpbnRlZ2VyIHB4PTB4Q0FGRSAncDA9MSMgJyBwMT0xI+KApiBwbD0xI2YKCWVjaG8gImluIDwkaTA+IDwkaTE+IgoJZWNobyAib3V0IDwke28wYSMxI318JHtvMGIjMSN9PiA8JHtvMWEjMSN9fCR7bzFiIzEjfT4iCgl0eXBlc2V0IC1VdWkxIGkwIGkxCgllY2hvICJwYXNzIDwkcHg+IDwkcDA+IDwkcDE+IDwkcGw+IDwke2kwIzEjfXwke2kxIzEjfT4iCgl0eXBlc2V0IC1VdWkxNiB0djE9MSN+IHR2Mj0xI38gdHYzPTEjgCB0djQ9MSOBIHR2NT0xI8AgdHY2PTEjwSB0djc9MSPCoCB0djg9MSPCgAoJZWNobyAic3BlY1ggPCR7dHYxIzE2I30+IDwke3R2MiMxNiN9PiA8JHt0djMjMTYjfT4gPCR7dHY0IzE2I30+IDwke3R2NSMxNiN9PiA8JHt0djYjMTYjfT4gPCR7dHY3IzE2I30+IDwke3R2OCMxNiN9PiIKCXR5cGVzZXQgLWkxIHR2MSB0djIgdHYzIHR2NCB0djUgdHY2IHR2NyB0djgKCWVjaG8gInNwZWNXIDwke3R2MSMxI30+IDwke3R2MiMxI30+IDwke3R2MyMxI30+IDwke3R2NCMxI30+IDwke3R2NSMxI30+IDwke3R2NiMxI30+IDwke3R2NyMxI30+IDwke3R2OCMxI30+IgoJdHlwZXNldCAtaTEgeHMxPTB4RUY3RiB4czI9MHhFRjgwIHhzMz0weEZERDAKCWVjaG8gInNwZWNVIDwke3hzMSMxI30+IDwke3hzMiMxI30+IDwke3hzMyMxI30+IgpleHBlY3RlZC1zdGRvdXQ6CglpbiA8MTYjRUZFRj4gPDE2IzIwQUM+CglvdXQgPEB8fj4gPOKYunzvt5A+CglwYXNzIDwxNiNjYWZlPiA8MSMgPiA8MSPigKY+IDwxI2Y+IDzvfOKCrD4KCXNwZWNYIDw3RT4gPDdGPiA8RUY4MD4gPEVGODE+IDxFRkMwPiA8RUZDMT4gPEEwPiA8ODA+CglzcGVjVyA8fj4gPH8+IDyAPiA8gT4gPMA+IDzBPiA8wqA+IDzCgD4KCXNwZWNVIDzuvb8+IDyAPiA877eQPgotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yYQpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBjb3JyZWN0IGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCWludGVnZXIgeD0xI2ZvbwoJZWNobyAvJHgvCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEjZm9vOiB1bmV4cGVjdGVkICdvbycvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yYgpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBjb3JyZWN0IGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCWludGVnZXIgeD0xI8CACgllY2hvIC8keC8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvMSPAgDogdW5leHBlY3RlZCAngCcvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yYzEKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0IC1VCglpbnRlZ2VyIHg9MSPigKYKCWVjaG8gLyR4LwpleHBlY3RlZC1zdGRvdXQ6CgkvMSPigKYvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJjMgpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBjb3JyZWN0IGNoYXJhY3RlcnMKc3RkaW46CglzZXQgK1UKCWludGVnZXIgeD0xI+KApgoJZWNobyAvJHgvCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEj4oCmOiB1bmV4cGVjdGVkICeAJy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkMQpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBoYW5kbGVzIG9jdGV0cyBva2F5CnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI/8KCWVjaG8gLyR4LwkjIGludmFsaWQgdXRmLTgKZXhwZWN0ZWQtc3Rkb3V0OgoJLzE2I2VmZmYvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkMgpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBoYW5kbGVzIG9jdGV0cwpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPCCgllY2hvIC8keC8JIyBpbnZhbGlkIDItYnl0ZQpleHBlY3RlZC1zdGRvdXQ6CgkvMTYjZWZjMi8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQzCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIGhhbmRsZXMgb2N0ZXRzCnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI+8KCWVjaG8gLyR4LwkjIGludmFsaWQgMi1ieXRlCmV4cGVjdGVkLXN0ZG91dDoKCS8xNiNlZmVmLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDQKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgaW52YWxpZCBpbnB1dApzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPvv8AKCWVjaG8gLyR4LwkjIGludmFsaWQgMy1ieXRlCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEj77/AOiB1bmV4cGVjdGVkICe/Jy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkNQpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBpbnZhbGlkIGlucHV0CnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI8CACgllY2hvIC8keC8JIyBub24tbWluaW1hbGlzdGljCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEjwIA6IHVuZXhwZWN0ZWQgJ4AnLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQ2CmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGludmFsaWQgaW5wdXQKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEj4ICACgllY2hvIC8keC8JIyBub24tbWluaW1hbGlzdGljCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEj4ICAOiB1bmV4cGVjdGVkICeAJy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTNBcwpkZXNjcmlwdGlvbjoKCXNvbWUgc2FtcGxlIGNvZGUgZm9yIGhleGR1bXBpbmcKCW5vdCBOVUwgc2FmZTsgaW5wdXQgbGluZXMgbXVzdCBiZSBOTCB0ZXJtaW5hdGVkCnN0ZGluOgoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJceCR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQgJ1wweicKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNBcwoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjUgaHY9MjE0NzQ4MzY0NwoJCXR5cGVzZXQgLWkxIHdjPTB4MEEKCQlkYXNjPQoJCW5sPSR7d2MjMSN9CgkJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJCWxpbmU9JGxpbmUkbmwKCQkJd2hpbGUgW1sgLW4gJGxpbmUgXV07IGRvCgkJCQlodj0xIyR7bGluZTo6MX0KCQkJCWlmICgoIChwb3MgJiAxNSkgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJcHJpbnQgLW4gIiR7aHYjMTYjfSAiCgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgKGh2ID4gMTI2KSApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MuCgkJCQllbHNlCgkJCQkJZGFzYz0kZGFzYyR7bGluZTo6MX0KCQkJCWZpCgkJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJCQlsaW5lPSR7bGluZToxfQoJCQlkb25lCgkJZG9uZQoJCXdoaWxlICgoIHBvcyAmIDE1ICkpOyBkbwoJCQlwcmludCAtbiAnICAgJwoJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDQ4IDY1IDZDIDZDIDZGIDJDIDIwIDU3IC0gNkYgNzIgNkMgNjQgMjEgNUMgMEEgRTMgIHxIZWxsbywgV29ybGQhXC4ufAoJMDAwMDAwMTAgIDgxIDkzIEUzIDgyIDkzIEUzIDgxIEFCIC0gRTMgODEgQTEgRTMgODEgQUYgRUYgQkMgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMjAgIDgxIDBBIDAxIDAyIDAzIDA0IDA1IDA2IC0gMDcgMDggMDkgMEEgMEIgMEMgMEQgMEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMzAgIDBGIDEwIDExIDEyIDEzIDE0IDE1IDE2IC0gMTcgMTggMTkgMUEgMUIgMUMgMUQgMUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwNDAgIDFGIDIwIDIxIDIyIDIzIDI0IDI1IDI2IC0gMjcgMjggMjkgMkEgMkIgMkMgMkQgMkUgIHwuICEiIyQlJicoKSorLC0ufAoJMDAwMDAwNTAgIDJGIDMwIDMxIDMyIDMzIDM0IDM1IDM2IC0gMzcgMzggMzkgM0EgM0IgM0MgM0QgM0UgIHwvMDEyMzQ1Njc4OTo7PD0+fAoJMDAwMDAwNjAgIDNGIDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IC0gNDcgNDggNDkgNEEgNEIgNEMgNEQgNEUgIHw/QEFCQ0RFRkdISUpLTE1OfAoJMDAwMDAwNzAgIDRGIDUwIDUxIDUyIDUzIDU0IDU1IDU2IC0gNTcgNTggNTkgNUEgNUIgNUMgNUQgNUUgIHxPUFFSU1RVVldYWVpbXF1efAoJMDAwMDAwODAgIDVGIDYwIDYxIDYyIDYzIDY0IDY1IDY2IC0gNjcgNjggNjkgNkEgNkIgNkMgNkQgNkUgIHxfYGFiY2RlZmdoaWprbG1ufAoJMDAwMDAwOTAgIDZGIDcwIDcxIDcyIDczIDc0IDc1IDc2IC0gNzcgNzggNzkgN0EgN0IgN0MgN0QgN0UgIHxvcHFyc3R1dnd4eXp7fH1+fAoJMDAwMDAwQTAgIDdGIDgwIDgxIDgyIDgzIDg0IDg1IDg2IC0gODcgODggODkgOEEgOEIgOEMgOEQgOEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQjAgIDhGIDkwIDkxIDkyIDkzIDk0IDk1IDk2IC0gOTcgOTggOTkgOUEgOUIgOUMgOUQgOUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQzAgIDlGIEEwIEExIEEyIEEzIEE0IEE1IEE2IC0gQTcgQTggQTkgQUEgQUIgQUMgQUQgQUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRDAgIEFGIEIwIEIxIEIyIEIzIEI0IEI1IEI2IC0gQjcgQjggQjkgQkEgQkIgQkMgQkQgQkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRTAgIEJGIEMwIEMxIEMyIEMzIEM0IEM1IEM2IC0gQzcgQzggQzkgQ0EgQ0IgQ0MgQ0QgQ0UgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRjAgIENGIEQwIEQxIEQyIEQzIEQ0IEQ1IEQ2IC0gRDcgRDggRDkgREEgREIgREMgREQgREUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMDAgIERGIEUwIEUxIEUyIEUzIEU0IEU1IEU2IC0gRTcgRTggRTkgRUEgRUIgRUMgRUQgRUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMTAgIEVGIEYwIEYxIEYyIEYzIEY0IEY1IEY2IC0gRjcgRjggRjkgRkEgRkIgRkMgRkQgRkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMjAgIEZGIDdBIDBBICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgIHwuei58Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTNXcwpkZXNjcmlwdGlvbjoKCXNvbWUgc2FtcGxlIGNvZGUgZm9yIGhleGR1bXBpbmcgVW5pY29kZQoJbm90IE5VTCBzYWZlOyBpbnB1dCBsaW5lcyBtdXN0IGJlIE5MIHRlcm1pbmF0ZWQKc3RkaW46CglzZXQgLVUKCXsKCQlwcmludCAnSGVsbG8sIFdvcmxkIVxcXG7jgZPjgpPjgavjgaHjga/vvIEnCgkJdHlwZXNldCAtVXVpMTYgaT0weDEwMAoJCSMgY2hhbmdlIHRoYXQgdG8gMHhGRiBvbmNlIHdlIGNhbiBoYW5kbGUgZW1iZWRkZWQKCQkjIE5VTCBjaGFyYWN0ZXJzIGluIHN0cmluZ3MgLyBoZXJlIGRvY3VtZW50cwoJCXdoaWxlICgoIGkrKyA8IDB4MUZGICkpOyBkbwoJCQlwcmludCAtbiAiXHUke2kjMTYjMX0iCgkJZG9uZQoJCXByaW50CgkJcHJpbnQgXFx4ZmYJCSMgaW52YWxpZCB1dGYtOAoJCXByaW50IFxceGMyCQkjIGludmFsaWQgMi1ieXRlCgkJcHJpbnQgXFx4ZWZcXHhiZlxceGMwCSMgaW52YWxpZCAzLWJ5dGUKCQlwcmludCBcXHhjMFxceDgwCSMgbm9uLW1pbmltYWxpc3RpYwoJCXByaW50IFxceGUwXFx4ODBcXHg4MAkjIG5vbi1taW5pbWFsaXN0aWMKCQlwcmludCAn77+977++77+/JwkjIGVuZCBvZiByYW5nZQoJCXByaW50ICdcMHonCQkjIGVtYmVkZGVkIE5VTAoJfSB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM1dzCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNyBodgoJCXR5cGVzZXQgLWkxIHdjPTB4MEEKCQl0eXBlc2V0IC1pIGxwb3MKCQlkYXNjPQoJCW5sPSR7d2MjMSN9CgkJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJCWxpbmU9JGxpbmUkbmwKCQkJbHBvcz0wCgkJCXdoaWxlICgoIGxwb3MgPCAkeyNsaW5lfSApKTsgZG8KCQkJCXdjPTEjJHtsaW5lOihscG9zKyspOjF9CgkJCQlpZiAoKCAod2MgPCAzMikgfHwgXAoJCQkJICAgICgod2MgPiAxMjYpICYmICh3YyA8IDE2MCkpICkpOyB0aGVuCgkJCQkJZGNoPS4KCQkJCWVsaWYgKCggKHdjICYgMHhGRjgwKSA9PSAweEVGODAgKSk7IHRoZW4KCQkJCQlkY2g977+9CgkJCQllbHNlCgkJCQkJZGNoPSR7d2MjMSN9CgkJCQlmaQoJCQkJaWYgKCggKHBvcyAmIDcpID09IDcgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjJGRjaAoJCQkJCWRjaD0KCQkJCWVsaWYgKCggKHBvcyAmIDcpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCWxldCBodj13YwoJCQkJcHJpbnQgLW4gIiR7aHYjMTYjfSAiCgkJCQkoKCAocG9zKysgJiA3KSA9PSAzICkpICYmIFwKCQkJCSAgICBwcmludCAtbiAtLSAnLSAnCgkJCQlkYXNjPSRkYXNjJGRjaAoJCQlkb25lCgkJZG9uZQoJCXdoaWxlICgoIHBvcyAmIDcgKSk7IGRvCgkJCXByaW50IC1uICcgICAgICcKCQkJKCggKHBvcysrICYgNykgPT0gMyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDAwNDggMDA2NSAwMDZDIDAwNkMgLSAwMDZGIDAwMkMgMDAyMCAwMDU3ICB8SGVsbG8sIFd8CgkwMDAwMDAwOCAgMDA2RiAwMDcyIDAwNkMgMDA2NCAtIDAwMjEgMDA1QyAwMDBBIDMwNTMgIHxvcmxkIVwu44GTfAoJMDAwMDAwMTAgIDMwOTMgMzA2QiAzMDYxIDMwNkYgLSBGRjAxIDAwMEEgMDAwMSAwMDAyICB844KT44Gr44Gh44Gv77yBLi4ufAoJMDAwMDAwMTggIDAwMDMgMDAwNCAwMDA1IDAwMDYgLSAwMDA3IDAwMDggMDAwOSAwMDBBICB8Li4uLi4uLi58CgkwMDAwMDAyMCAgMDAwQiAwMDBDIDAwMEQgMDAwRSAtIDAwMEYgMDAxMCAwMDExIDAwMTIgIHwuLi4uLi4uLnwKCTAwMDAwMDI4ICAwMDEzIDAwMTQgMDAxNSAwMDE2IC0gMDAxNyAwMDE4IDAwMTkgMDAxQSAgfC4uLi4uLi4ufAoJMDAwMDAwMzAgIDAwMUIgMDAxQyAwMDFEIDAwMUUgLSAwMDFGIDAwMjAgMDAyMSAwMDIyICB8Li4uLi4gISJ8CgkwMDAwMDAzOCAgMDAyMyAwMDI0IDAwMjUgMDAyNiAtIDAwMjcgMDAyOCAwMDI5IDAwMkEgIHwjJCUmJygpKnwKCTAwMDAwMDQwICAwMDJCIDAwMkMgMDAyRCAwMDJFIC0gMDAyRiAwMDMwIDAwMzEgMDAzMiAgfCssLS4vMDEyfAoJMDAwMDAwNDggIDAwMzMgMDAzNCAwMDM1IDAwMzYgLSAwMDM3IDAwMzggMDAzOSAwMDNBICB8MzQ1Njc4OTp8CgkwMDAwMDA1MCAgMDAzQiAwMDNDIDAwM0QgMDAzRSAtIDAwM0YgMDA0MCAwMDQxIDAwNDIgIHw7PD0+P0BBQnwKCTAwMDAwMDU4ICAwMDQzIDAwNDQgMDA0NSAwMDQ2IC0gMDA0NyAwMDQ4IDAwNDkgMDA0QSAgfENERUZHSElKfAoJMDAwMDAwNjAgIDAwNEIgMDA0QyAwMDREIDAwNEUgLSAwMDRGIDAwNTAgMDA1MSAwMDUyICB8S0xNTk9QUVJ8CgkwMDAwMDA2OCAgMDA1MyAwMDU0IDAwNTUgMDA1NiAtIDAwNTcgMDA1OCAwMDU5IDAwNUEgIHxTVFVWV1hZWnwKCTAwMDAwMDcwICAwMDVCIDAwNUMgMDA1RCAwMDVFIC0gMDA1RiAwMDYwIDAwNjEgMDA2MiAgfFtcXV5fYGFifAoJMDAwMDAwNzggIDAwNjMgMDA2NCAwMDY1IDAwNjYgLSAwMDY3IDAwNjggMDA2OSAwMDZBICB8Y2RlZmdoaWp8CgkwMDAwMDA4MCAgMDA2QiAwMDZDIDAwNkQgMDA2RSAtIDAwNkYgMDA3MCAwMDcxIDAwNzIgIHxrbG1ub3BxcnwKCTAwMDAwMDg4ICAwMDczIDAwNzQgMDA3NSAwMDc2IC0gMDA3NyAwMDc4IDAwNzkgMDA3QSAgfHN0dXZ3eHl6fAoJMDAwMDAwOTAgIDAwN0IgMDA3QyAwMDdEIDAwN0UgLSAwMDdGIDAwODAgMDA4MSAwMDgyICB8e3x9fi4uLi58CgkwMDAwMDA5OCAgMDA4MyAwMDg0IDAwODUgMDA4NiAtIDAwODcgMDA4OCAwMDg5IDAwOEEgIHwuLi4uLi4uLnwKCTAwMDAwMEEwICAwMDhCIDAwOEMgMDA4RCAwMDhFIC0gMDA4RiAwMDkwIDAwOTEgMDA5MiAgfC4uLi4uLi4ufAoJMDAwMDAwQTggIDAwOTMgMDA5NCAwMDk1IDAwOTYgLSAwMDk3IDAwOTggMDA5OSAwMDlBICB8Li4uLi4uLi58CgkwMDAwMDBCMCAgMDA5QiAwMDlDIDAwOUQgMDA5RSAtIDAwOUYgMDBBMCAwMEExIDAwQTIgIHwuLi4uLsKgwqHConwKCTAwMDAwMEI4ICAwMEEzIDAwQTQgMDBBNSAwMEE2IC0gMDBBNyAwMEE4IDAwQTkgMDBBQSAgfMKjwqTCpcKmwqfCqMKpwqp8CgkwMDAwMDBDMCAgMDBBQiAwMEFDIDAwQUQgMDBBRSAtIDAwQUYgMDBCMCAwMEIxIDAwQjIgIHzCq8Kswq3CrsKvwrDCscKyfAoJMDAwMDAwQzggIDAwQjMgMDBCNCAwMEI1IDAwQjYgLSAwMEI3IDAwQjggMDBCOSAwMEJBICB8wrPCtMK1wrbCt8K4wrnCunwKCTAwMDAwMEQwICAwMEJCIDAwQkMgMDBCRCAwMEJFIC0gMDBCRiAwMEMwIDAwQzEgMDBDMiAgfMK7wrzCvcK+wr/DgMOBw4J8CgkwMDAwMDBEOCAgMDBDMyAwMEM0IDAwQzUgMDBDNiAtIDAwQzcgMDBDOCAwMEM5IDAwQ0EgIHzDg8OEw4XDhsOHw4jDicOKfAoJMDAwMDAwRTAgIDAwQ0IgMDBDQyAwMENEIDAwQ0UgLSAwMENGIDAwRDAgMDBEMSAwMEQyICB8w4vDjMONw47Dj8OQw5HDknwKCTAwMDAwMEU4ICAwMEQzIDAwRDQgMDBENSAwMEQ2IC0gMDBENyAwMEQ4IDAwRDkgMDBEQSAgfMOTw5TDlcOWw5fDmMOZw5p8CgkwMDAwMDBGMCAgMDBEQiAwMERDIDAwREQgMDBERSAtIDAwREYgMDBFMCAwMEUxIDAwRTIgIHzDm8Ocw53DnsOfw6DDocOifAoJMDAwMDAwRjggIDAwRTMgMDBFNCAwMEU1IDAwRTYgLSAwMEU3IDAwRTggMDBFOSAwMEVBICB8w6PDpMOlw6bDp8Oow6nDqnwKCTAwMDAwMTAwICAwMEVCIDAwRUMgMDBFRCAwMEVFIC0gMDBFRiAwMEYwIDAwRjEgMDBGMiAgfMOrw6zDrcOuw6/DsMOxw7J8CgkwMDAwMDEwOCAgMDBGMyAwMEY0IDAwRjUgMDBGNiAtIDAwRjcgMDBGOCAwMEY5IDAwRkEgIHzDs8O0w7XDtsO3w7jDucO6fAoJMDAwMDAxMTAgIDAwRkIgMDBGQyAwMEZEIDAwRkUgLSAwMEZGIDAwMEEgRUZGRiAwMDBBICB8w7vDvMO9w77Dvy7vv70ufAoJMDAwMDAxMTggIEVGQzIgMDAwQSBFRkVGIEVGQkYgLSBFRkMwIDAwMEEgRUZDMCBFRjgwICB877+9Lu+/ve+/ve+/vS7vv73vv718CgkwMDAwMDEyMCAgMDAwQSBFRkUwIEVGODAgRUY4MCAtIDAwMEEgRkZGRCBFRkVGIEVGQkYgIHwu77+977+977+9Lu+/ve+/ve+/vXwKCTAwMDAwMTI4ICBFRkJFIEVGRUYgRUZCRiBFRkJGIC0gMDAwQSAwMDdBIDAwMEEgICAgICAgfO+/ve+/ve+/ve+/vS56LnwKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtM0FyCmRlc2NyaXB0aW9uOgoJc29tZSBzYW1wbGUgY29kZSBmb3IgaGV4ZHVtcGluZzsgTlVMIGFuZCBiaW5hcnkgc2FmZQpzdGRpbjoKCXsKCQlwcmludCAnSGVsbG8sIFdvcmxkIVxcXG7jgZPjgpPjgavjgaHjga/vvIEnCgkJdHlwZXNldCAtVXVpMTYgaT0weDEwMAoJCSMgY2hhbmdlIHRoYXQgdG8gMHhGRiBvbmNlIHdlIGNhbiBoYW5kbGUgZW1iZWRkZWQKCQkjIE5VTCBjaGFyYWN0ZXJzIGluIHN0cmluZ3MgLyBoZXJlIGRvY3VtZW50cwoJCXdoaWxlICgoIGkrKyA8IDB4MUZGICkpOyBkbwoJCQlwcmludCAtbiAiXHgke2kjMTYjMX0iCgkJZG9uZQoJCXByaW50ICdcMHonCgl9IHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXIKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQlkYXNjPQoJCWlmIHJlYWQgLWFyTiAtMSBsaW5lOyB0aGVuCgkJCXR5cGVzZXQgLWkxIGxpbmUKCQkJaT0wCgkJCXdoaWxlICgoIGkgPCAkeyNsaW5lWypdfSApKTsgZG8KCQkJCWh2PSR7bGluZVtpKytdfQoJCQkJaWYgKCggKHBvcyAmIDE1KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50ICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCWlmICgoIChodiA8IDMyKSB8fCAoaHYgPiAxMjYpICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYy4KCQkJCWVsc2UKCQkJCQlkYXNjPSRkYXNjJHtsaW5lW2ktMV0jMSN9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQlkb25lCgkJZmkKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50ICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICA0OCA2NSA2QyA2QyA2RiAyQyAyMCA1NyAtIDZGIDcyIDZDIDY0IDIxIDVDIDBBIEUzICB8SGVsbG8sIFdvcmxkIVwuLnwKCTAwMDAwMDEwICA4MSA5MyBFMyA4MiA5MyBFMyA4MSBBQiAtIEUzIDgxIEExIEUzIDgxIEFGIEVGIEJDICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDIwICA4MSAwQSAwMSAwMiAwMyAwNCAwNSAwNiAtIDA3IDA4IDA5IDBBIDBCIDBDIDBEIDBFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDMwICAwRiAxMCAxMSAxMiAxMyAxNCAxNSAxNiAtIDE3IDE4IDE5IDFBIDFCIDFDIDFEIDFFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDQwICAxRiAyMCAyMSAyMiAyMyAyNCAyNSAyNiAtIDI3IDI4IDI5IDJBIDJCIDJDIDJEIDJFICB8LiAhIiMkJSYnKCkqKywtLnwKCTAwMDAwMDUwICAyRiAzMCAzMSAzMiAzMyAzNCAzNSAzNiAtIDM3IDM4IDM5IDNBIDNCIDNDIDNEIDNFICB8LzAxMjM0NTY3ODk6Ozw9PnwKCTAwMDAwMDYwICAzRiA0MCA0MSA0MiA0MyA0NCA0NSA0NiAtIDQ3IDQ4IDQ5IDRBIDRCIDRDIDREIDRFICB8P0BBQkNERUZHSElKS0xNTnwKCTAwMDAwMDcwICA0RiA1MCA1MSA1MiA1MyA1NCA1NSA1NiAtIDU3IDU4IDU5IDVBIDVCIDVDIDVEIDVFICB8T1BRUlNUVVZXWFlaW1xdXnwKCTAwMDAwMDgwICA1RiA2MCA2MSA2MiA2MyA2NCA2NSA2NiAtIDY3IDY4IDY5IDZBIDZCIDZDIDZEIDZFICB8X2BhYmNkZWZnaGlqa2xtbnwKCTAwMDAwMDkwICA2RiA3MCA3MSA3MiA3MyA3NCA3NSA3NiAtIDc3IDc4IDc5IDdBIDdCIDdDIDdEIDdFICB8b3BxcnN0dXZ3eHl6e3x9fnwKCTAwMDAwMEEwICA3RiA4MCA4MSA4MiA4MyA4NCA4NSA4NiAtIDg3IDg4IDg5IDhBIDhCIDhDIDhEIDhFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEIwICA4RiA5MCA5MSA5MiA5MyA5NCA5NSA5NiAtIDk3IDk4IDk5IDlBIDlCIDlDIDlEIDlFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEMwICA5RiBBMCBBMSBBMiBBMyBBNCBBNSBBNiAtIEE3IEE4IEE5IEFBIEFCIEFDIEFEIEFFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEQwICBBRiBCMCBCMSBCMiBCMyBCNCBCNSBCNiAtIEI3IEI4IEI5IEJBIEJCIEJDIEJEIEJFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEUwICBCRiBDMCBDMSBDMiBDMyBDNCBDNSBDNiAtIEM3IEM4IEM5IENBIENCIENDIENEIENFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEYwICBDRiBEMCBEMSBEMiBEMyBENCBENSBENiAtIEQ3IEQ4IEQ5IERBIERCIERDIEREIERFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTAwICBERiBFMCBFMSBFMiBFMyBFNCBFNSBFNiAtIEU3IEU4IEU5IEVBIEVCIEVDIEVEIEVFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTEwICBFRiBGMCBGMSBGMiBGMyBGNCBGNSBGNiAtIEY3IEY4IEY5IEZBIEZCIEZDIEZEIEZFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTIwICBGRiAwMCA3QSAwQSAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgICAgICAgICB8Li56LnwKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtM1dyCmRlc2NyaXB0aW9uOgoJc29tZSBzYW1wbGUgY29kZSBmb3IgaGV4ZHVtcGluZyBVbmljb2RlOyBOVUwgYW5kIGJpbmFyeSBzYWZlCnN0ZGluOgoJc2V0IC1VCgl7CgkJcHJpbnQgJ0hlbGxvLCBXb3JsZCFcXFxu44GT44KT44Gr44Gh44Gv77yBJwoJCXR5cGVzZXQgLVV1aTE2IGk9MHgxMDAKCQkjIGNoYW5nZSB0aGF0IHRvIDB4RkYgb25jZSB3ZSBjYW4gaGFuZGxlIGVtYmVkZGVkCgkJIyBOVUwgY2hhcmFjdGVycyBpbiBzdHJpbmdzIC8gaGVyZSBkb2N1bWVudHMKCQl3aGlsZSAoKCBpKysgPCAweDFGRiApKTsgZG8KCQkJcHJpbnQgLW4gIlx1JHtpIzE2IzF9IgoJCWRvbmUKCQlwcmludAoJCXByaW50IFxceGZmCQkjIGludmFsaWQgdXRmLTgKCQlwcmludCBcXHhjMgkJIyBpbnZhbGlkIDItYnl0ZQoJCXByaW50IFxceGVmXFx4YmZcXHhjMAkjIGludmFsaWQgMy1ieXRlCgkJcHJpbnQgXFx4YzBcXHg4MAkjIG5vbi1taW5pbWFsaXN0aWMKCQlwcmludCBcXHhlMFxceDgwXFx4ODAJIyBub24tbWluaW1hbGlzdGljCgkJcHJpbnQgJ++/ve+/vu+/vycJIyBlbmQgb2YgcmFuZ2UKCQlwcmludCAnXDB6JwkJIyBlbWJlZGRlZCBOVUwKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNXcgoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjcgaHY9MjE0NzQ4MzY0NwoJCWRhc2M9CgkJaWYgcmVhZCAtYXJOIC0xIGxpbmU7IHRoZW4KCQkJdHlwZXNldCAtaTEgbGluZQoJCQlpPTAKCQkJd2hpbGUgKCggaSA8ICR7I2xpbmVbKl19ICkpOyBkbwoJCQkJaHY9JHtsaW5lW2krK119CgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgXAoJCQkJICAgICgoaHYgPiAxMjYpICYmIChodiA8IDE2MCkpICkpOyB0aGVuCgkJCQkJZGNoPS4KCQkJCWVsaWYgKCggKGh2ICYgMHhGRjgwKSA9PSAweEVGODAgKSk7IHRoZW4KCQkJCQlkY2g977+9CgkJCQllbHNlCgkJCQkJZGNoPSR7bGluZVtpLTFdIzEjfQoJCQkJZmkKCQkJCWlmICgoIChwb3MgJiA3KSA9PSA3ICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYyRkY2gKCQkJCQlkY2g9CgkJCQllbGlmICgoIChwb3MgJiA3KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50ICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCSgoIChwb3MrKyAmIDcpID09IDMgKSkgJiYgXAoJCQkJICAgIHByaW50IC1uIC0tICctICcKCQkJCWRhc2M9JGRhc2MkZGNoCgkJCWRvbmUKCQlmaQoJCXdoaWxlICgoIHBvcyAmIDcgKSk7IGRvCgkJCXByaW50IC1uICcgICAgICcKCQkJKCggKHBvcysrICYgNykgPT0gMyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDAwNDggMDA2NSAwMDZDIDAwNkMgLSAwMDZGIDAwMkMgMDAyMCAwMDU3ICB8SGVsbG8sIFd8CgkwMDAwMDAwOCAgMDA2RiAwMDcyIDAwNkMgMDA2NCAtIDAwMjEgMDA1QyAwMDBBIDMwNTMgIHxvcmxkIVwu44GTfAoJMDAwMDAwMTAgIDMwOTMgMzA2QiAzMDYxIDMwNkYgLSBGRjAxIDAwMEEgMDAwMSAwMDAyICB844KT44Gr44Gh44Gv77yBLi4ufAoJMDAwMDAwMTggIDAwMDMgMDAwNCAwMDA1IDAwMDYgLSAwMDA3IDAwMDggMDAwOSAwMDBBICB8Li4uLi4uLi58CgkwMDAwMDAyMCAgMDAwQiAwMDBDIDAwMEQgMDAwRSAtIDAwMEYgMDAxMCAwMDExIDAwMTIgIHwuLi4uLi4uLnwKCTAwMDAwMDI4ICAwMDEzIDAwMTQgMDAxNSAwMDE2IC0gMDAxNyAwMDE4IDAwMTkgMDAxQSAgfC4uLi4uLi4ufAoJMDAwMDAwMzAgIDAwMUIgMDAxQyAwMDFEIDAwMUUgLSAwMDFGIDAwMjAgMDAyMSAwMDIyICB8Li4uLi4gISJ8CgkwMDAwMDAzOCAgMDAyMyAwMDI0IDAwMjUgMDAyNiAtIDAwMjcgMDAyOCAwMDI5IDAwMkEgIHwjJCUmJygpKnwKCTAwMDAwMDQwICAwMDJCIDAwMkMgMDAyRCAwMDJFIC0gMDAyRiAwMDMwIDAwMzEgMDAzMiAgfCssLS4vMDEyfAoJMDAwMDAwNDggIDAwMzMgMDAzNCAwMDM1IDAwMzYgLSAwMDM3IDAwMzggMDAzOSAwMDNBICB8MzQ1Njc4OTp8CgkwMDAwMDA1MCAgMDAzQiAwMDNDIDAwM0QgMDAzRSAtIDAwM0YgMDA0MCAwMDQxIDAwNDIgIHw7PD0+P0BBQnwKCTAwMDAwMDU4ICAwMDQzIDAwNDQgMDA0NSAwMDQ2IC0gMDA0NyAwMDQ4IDAwNDkgMDA0QSAgfENERUZHSElKfAoJMDAwMDAwNjAgIDAwNEIgMDA0QyAwMDREIDAwNEUgLSAwMDRGIDAwNTAgMDA1MSAwMDUyICB8S0xNTk9QUVJ8CgkwMDAwMDA2OCAgMDA1MyAwMDU0IDAwNTUgMDA1NiAtIDAwNTcgMDA1OCAwMDU5IDAwNUEgIHxTVFVWV1hZWnwKCTAwMDAwMDcwICAwMDVCIDAwNUMgMDA1RCAwMDVFIC0gMDA1RiAwMDYwIDAwNjEgMDA2MiAgfFtcXV5fYGFifAoJMDAwMDAwNzggIDAwNjMgMDA2NCAwMDY1IDAwNjYgLSAwMDY3IDAwNjggMDA2OSAwMDZBICB8Y2RlZmdoaWp8CgkwMDAwMDA4MCAgMDA2QiAwMDZDIDAwNkQgMDA2RSAtIDAwNkYgMDA3MCAwMDcxIDAwNzIgIHxrbG1ub3BxcnwKCTAwMDAwMDg4ICAwMDczIDAwNzQgMDA3NSAwMDc2IC0gMDA3NyAwMDc4IDAwNzkgMDA3QSAgfHN0dXZ3eHl6fAoJMDAwMDAwOTAgIDAwN0IgMDA3QyAwMDdEIDAwN0UgLSAwMDdGIDAwODAgMDA4MSAwMDgyICB8e3x9fi4uLi58CgkwMDAwMDA5OCAgMDA4MyAwMDg0IDAwODUgMDA4NiAtIDAwODcgMDA4OCAwMDg5IDAwOEEgIHwuLi4uLi4uLnwKCTAwMDAwMEEwICAwMDhCIDAwOEMgMDA4RCAwMDhFIC0gMDA4RiAwMDkwIDAwOTEgMDA5MiAgfC4uLi4uLi4ufAoJMDAwMDAwQTggIDAwOTMgMDA5NCAwMDk1IDAwOTYgLSAwMDk3IDAwOTggMDA5OSAwMDlBICB8Li4uLi4uLi58CgkwMDAwMDBCMCAgMDA5QiAwMDlDIDAwOUQgMDA5RSAtIDAwOUYgMDBBMCAwMEExIDAwQTIgIHwuLi4uLsKgwqHConwKCTAwMDAwMEI4ICAwMEEzIDAwQTQgMDBBNSAwMEE2IC0gMDBBNyAwMEE4IDAwQTkgMDBBQSAgfMKjwqTCpcKmwqfCqMKpwqp8CgkwMDAwMDBDMCAgMDBBQiAwMEFDIDAwQUQgMDBBRSAtIDAwQUYgMDBCMCAwMEIxIDAwQjIgIHzCq8Kswq3CrsKvwrDCscKyfAoJMDAwMDAwQzggIDAwQjMgMDBCNCAwMEI1IDAwQjYgLSAwMEI3IDAwQjggMDBCOSAwMEJBICB8wrPCtMK1wrbCt8K4wrnCunwKCTAwMDAwMEQwICAwMEJCIDAwQkMgMDBCRCAwMEJFIC0gMDBCRiAwMEMwIDAwQzEgMDBDMiAgfMK7wrzCvcK+wr/DgMOBw4J8CgkwMDAwMDBEOCAgMDBDMyAwMEM0IDAwQzUgMDBDNiAtIDAwQzcgMDBDOCAwMEM5IDAwQ0EgIHzDg8OEw4XDhsOHw4jDicOKfAoJMDAwMDAwRTAgIDAwQ0IgMDBDQyAwMENEIDAwQ0UgLSAwMENGIDAwRDAgMDBEMSAwMEQyICB8w4vDjMONw47Dj8OQw5HDknwKCTAwMDAwMEU4ICAwMEQzIDAwRDQgMDBENSAwMEQ2IC0gMDBENyAwMEQ4IDAwRDkgMDBEQSAgfMOTw5TDlcOWw5fDmMOZw5p8CgkwMDAwMDBGMCAgMDBEQiAwMERDIDAwREQgMDBERSAtIDAwREYgMDBFMCAwMEUxIDAwRTIgIHzDm8Ocw53DnsOfw6DDocOifAoJMDAwMDAwRjggIDAwRTMgMDBFNCAwMEU1IDAwRTYgLSAwMEU3IDAwRTggMDBFOSAwMEVBICB8w6PDpMOlw6bDp8Oow6nDqnwKCTAwMDAwMTAwICAwMEVCIDAwRUMgMDBFRCAwMEVFIC0gMDBFRiAwMEYwIDAwRjEgMDBGMiAgfMOrw6zDrcOuw6/DsMOxw7J8CgkwMDAwMDEwOCAgMDBGMyAwMEY0IDAwRjUgMDBGNiAtIDAwRjcgMDBGOCAwMEY5IDAwRkEgIHzDs8O0w7XDtsO3w7jDucO6fAoJMDAwMDAxMTAgIDAwRkIgMDBGQyAwMEZEIDAwRkUgLSAwMEZGIDAwMEEgRUZGRiAwMDBBICB8w7vDvMO9w77Dvy7vv70ufAoJMDAwMDAxMTggIEVGQzIgMDAwQSBFRkVGIEVGQkYgLSBFRkMwIDAwMEEgRUZDMCBFRjgwICB877+9Lu+/ve+/ve+/vS7vv73vv718CgkwMDAwMDEyMCAgMDAwQSBFRkUwIEVGODAgRUY4MCAtIDAwMEEgRkZGRCBFRkVGIEVGQkYgIHwu77+977+977+9Lu+/ve+/ve+/vXwKCTAwMDAwMTI4ICBFRkJFIEVGRUYgRUZCRiBFRkJGIC0gMDAwQSAwMDAwIDAwN0EgMDAwQSAgfO+/ve+/ve+/ve+/vS4uei58Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTQKZGVzY3JpcHRpb246CglDaGVjayBpZiBrc2g5My1zdHlsZSBiYXNlLW9uZSBpbnRlZ2VycyB3b3JrCmNhdGVnb3J5OiAhc21rc2gKc3RkaW46CglzZXQgLVUKCWVjaG8gMSAkKCgnYScpKQoJKGVjaG8gMmYgJCgoJ2FhJykpKSAyPiYxIHwgc2VkICJzL15bXiddKicvMnAgJy8iCgllY2hvIDMgJCgoJ+KApicpKQoJeD0iJ2EnIgoJZWNobyAiNCA8JHg+IgoJZWNobyA1ICQoKCR4KSkKCWVjaG8gNiAkKCh4KSkKZXhwZWN0ZWQtc3Rkb3V0OgoJMSA5NwoJMnAgJ2FhJzogbXVsdGktY2hhcmFjdGVyIGNoYXJhY3RlciBjb25zdGFudAoJMyA4MjMwCgk0IDwnYSc+Cgk1IDk3Cgk2IDk3Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTVBCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIHRoYXQgd2XigJlyZSBOVUwgYW5kIFVuaWNvZGUgc2FmZQpzdGRpbjoKCXNldCArVQoJcHJpbnQgJ2FcMGJceGZkeicgPngKCXJlYWQgLWEgeSA8eAoJc2V0IC1VCgl0eXBlc2V0IC1VdWkxNiB5CglwcmludCAke3lbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTYjNjEgMTYjMCAxNiM2MiAxNiNGRCAxNiM3QSAuCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTVXCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIHRoYXQgd2XigJlyZSBOVUwgYW5kIFVuaWNvZGUgc2FmZQpzdGRpbjoKCXNldCAtVQoJcHJpbnQgJ2FcMGLigqxjJyA+eAoJcmVhZCAtYSB5IDx4CglzZXQgK1UKCXR5cGVzZXQgLVV1aTE2IHkKCXByaW50ICR7eVsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxNiM2MSAxNiMwIDE2IzYyIDE2IzIwQUMgMTYjNjMgLgotLS0KbmFtZTogdWxpbWl0LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiB3ZSBjYW4gdXNlIGEgc3BlY2lmaWMgc3ludGF4IGlkaW9tIGZvciB1bGltaXQKY2F0ZWdvcnk6ICFvczpzeWxsYWJsZQpzdGRpbjoKCWlmICEgeD0kKHVsaW1pdCAtZCkgfHwgW1sgJHggPSB1bmtub3duIF1dOyB0aGVuCgkJI2VjaG8gZXhwZWN0ZWQgdG8gZmFpbCBvbiB0aGlzIE9TCgkJZWNobyBva2F5CgllbHNlCgkJdWxpbWl0IC1kUyAkeCAmJiBlY2hvIG9rYXkKCWZpCmV4cGVjdGVkLXN0ZG91dDoKCW9rYXkKLS0tCm5hbWU6IHJlZGlyLTEKZGVzY3JpcHRpb246CglDaGVjayBzb21lIG9mIHRoZSBtb3N0IGJhc2ljIGludmFyaWFudHMgb2YgSS9PIHJlZGlyZWN0aW9uCnN0ZGluOgoJaT0wCglmdW5jdGlvbiBkIHsKCQlwcmludCBvJGkuCgkJcHJpbnQgLXUyIGUkKChpKyspKS4KCX0KCWQgPmEgMj5iCgllY2hvID0xPQoJY2F0IGEKCWVjaG8gPTI9CgljYXQgYgoJZWNobyA9Mz0KCWQgMj4mMSA+YwoJZWNobyA9ND0KCWNhdCBjCgllY2hvID01PQpleHBlY3RlZC1zdGRvdXQ6Cgk9MT0KCW8wLgoJPTI9CgllMC4KCT0zPQoJZTEuCgk9ND0KCW8xLgoJPTU9Ci0tLQpuYW1lOiBiYXNoaW9wLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAxOiB0aGlzIGlzIGFsc28gc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46CglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXRyaQoJPT09CglyYXMKCWR3YQotLS0KbmFtZTogYmFzaGlvcC0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgKm5vdCogc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46CglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgMyY+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6CglyYXMKCT09PQoJZHdhCgl0cmkKLS0tCm5hbWU6IGJhc2hpb3AtMmIKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAyOiB0aGlzIGlzICpub3QqIHN1cHBvcnRlZCBieSBHTlUgYmFzaApjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0IDM+Zm9vICY+JjMKCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCT09PQoJcmFzCglkd2EKCXRyaQotLS0KbmFtZTogYmFzaGlvcC0yYwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgc3VwcG9ydGVkIGJ5IEdOVSBiYXNoIDQgb25seQpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJZWNobyBtaXIgPmZvbwoJc2V0IC1vIG5vY2xvYmJlcgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+PmZvbwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJdHJpCgk9PT0KCW1pcgoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtM2EKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBmYWlscyBjb3JyZWN0bHkKCVBhcnQgMTogdGhpcyBpcyBhbHNvIHN1cHBvcnRlZCBieSBHTlUgYmFzaApjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJZWNobyBtaXIgPmZvbwoJc2V0IC1vIG5vY2xvYmJlcgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgk9PT0KCW1pcgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qOiBjYW4ndCAoY3JlYXRlfG92ZXJ3cml0ZSkgLiovCi0tLQpuYW1lOiBiYXNoaW9wLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gZmFpbHMgY29ycmVjdGx5CglQYXJ0IDI6IHRoaXMgaXMgKm5vdCogc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46CgllY2hvIG1pciA+Zm9vCglzZXQgLW8gbm9jbG9iYmVyCglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj58Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDQ6IHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgR05VIGJhc2gsCglidXQgZmFpbGVkIGluIHNvbWUgbWtzaCB2ZXJzaW9ucwpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCWZ1bmN0aW9uIGJsdWJiIHsKCQlbWyAtZSBiYXIgXV0gJiYgdGhyZWVvdXQgIiRiZiIgJj5mb28KCX0KCWJsdWJiCgllY2hvIC1uID5iYXIKCWJsdWJiCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtNS1ub3JtYWwKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBpcyBvbmx5IHN1cHBvcnRlZAoJaW4gIVBPU0lYICFzaCBtb2RlIGFzIGl0IGJyZWFrcyBleGlzdGluZyBzY3JpcHRzJyBzeW50YXgKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCTo+eDsgZWNobyAxICIkKCIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gZm9vPi9kZXYvbnVsbCY+eCBlY2hvIGJhcicpIiA9ICIkKDx4KSIgLgoJOj54OyBlY2hvIDIgIiQoIiRfX3Byb2duYW1lIiAtbyBwb3NpeCAtYyAnZWNobyBmb28+L2Rldi9udWxsJj54IGVjaG8gYmFyJykiID0gIiQoPHgpIiAuCgk6Png7IGVjaG8gMyAiJCgiJF9fcHJvZ25hbWUiIC1vIHNoIC1jICdlY2hvIGZvbz4vZGV2L251bGwmPnggZWNobyBiYXInKSIgPSAiJCg8eCkiIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAgPSBmb28gZWNobyBiYXIgLgoJMiAgPSBiYXIgLgoJMyAgPSBiYXIgLgotLS0KbmFtZTogYmFzaGlvcC01LWxlZ2FjeQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIGlzIG5vdCBwYXJzZWQKCWluIGxrc2ggYXMgaXQgYnJlYWtzIGV4aXN0aW5nIHNjcmlwdHMnIHN5bnRheApjYXRlZ29yeTogc2hlbGw6bGVnYWN5LXllcwpzdGRpbjoKCTo+eDsgZWNobyAxICIkKCIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gZm9vPi9kZXYvbnVsbCY+eCBlY2hvIGJhcicpIiA9ICIkKDx4KSIgLgoJOj54OyBlY2hvIDIgIiQoIiRfX3Byb2duYW1lIiAtbyBwb3NpeCAtYyAnZWNobyBmb28+L2Rldi9udWxsJj54IGVjaG8gYmFyJykiID0gIiQoPHgpIiAuCgk6Png7IGVjaG8gMyAiJCgiJF9fcHJvZ25hbWUiIC1vIHNoIC1jICdlY2hvIGZvbz4vZGV2L251bGwmPnggZWNobyBiYXInKSIgPSAiJCg8eCkiIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAgPSBiYXIgLgoJMiAgPSBiYXIgLgoJMyAgPSBiYXIgLgotLS0KbmFtZTogbWtzaGlvcC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIHN1cHBvcnQgb2YgbW9yZSB0aGFuIDkgZmlsZSBkZXNjcmlwdG9ycwpjYXRlZ29yeTogIWNvbnZmZHMKc3RkaW46CglyZWFkIC11MTAgZm9vIDEwPDw8IGJhcgoJZWNobyB4JGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl4YmFyCi0tLQpuYW1lOiBta3NoaW9wLTIKZGVzY3JpcHRpb246CglDaGVjayBmb3Igc3VwcG9ydCBvZiBtb3JlIHRoYW4gOSBmaWxlIGRlc2NyaXB0b3JzCmNhdGVnb3J5OiAhY29udmZkcwpzdGRpbjoKCWV4ZWMgMTI+Zm9vCglwcmludCAtdTEyIGJhcgoJZWNobyBiYXogPiYxMgoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6CgliYXIKCWJhegotLS0KbmFtZTogb2tzaC1ldmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZXhwYW5zaW9ucy4Kc3RkaW46CglhPQoJZm9yIG4gaW4gJHthIyo9fTsgZG8gZWNobyAxaHUgJHtufSAuOyBkb25lCglmb3IgbiBpbiAiJHthIyo9fSI7IGRvIGVjaG8gMWhxICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gJHthIyMqPX07IGRvIGVjaG8gMmh1ICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gIiR7YSMjKj19IjsgZG8gZWNobyAyaHEgJHtufSAuOyBkb25lCglmb3IgbiBpbiAke2ElPSp9OyBkbyBlY2hvIDFwdSAke259IC47IGRvbmUKCWZvciBuIGluICIke2ElPSp9IjsgZG8gZWNobyAxcHEgJHtufSAuOyBkb25lCglmb3IgbiBpbiAke2ElJT0qfTsgZG8gZWNobyAycHUgJHtufSAuOyBkb25lCglmb3IgbiBpbiAiJHthJSU9Kn0iOyBkbyBlY2hvIDJwcSAke259IC47IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMWhxIC4KCTJocSAuCgkxcHEgLgoJMnBxIC4KLS0tCm5hbWU6IG9rc2gtYW5kLWxpc3QtZXJyb3ItMQpkZXNjcmlwdGlvbjoKCVRlc3QgZXhpdCBzdGF0dXMgb2YgcmlnaHRtb3N0IGVsZW1lbnQgaW4gMiBlbGVtZW50ICYmIGxpc3QgaW4gLWUgbW9kZQpzdGRpbjoKCXRydWUgJiYgZmFsc2UKCWVjaG8gInNob3VsZCBub3QgcHJpbnQiCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IG9rc2gtYW5kLWxpc3QtZXJyb3ItMgpkZXNjcmlwdGlvbjoKCVRlc3QgZXhpdCBzdGF0dXMgb2YgcmlnaHRtb3N0IGVsZW1lbnQgaW4gMyBlbGVtZW50ICYmIGxpc3QgaW4gLWUgbW9kZQpzdGRpbjoKCXRydWUgJiYgdHJ1ZSAmJiBmYWxzZQoJZWNobyAic2hvdWxkIG5vdCBwcmludCIKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogb2tzaC1vci1saXN0LWVycm9yLTEKZGVzY3JpcHRpb246CglUZXN0IGV4aXQgc3RhdHVzIG9mIHx8IGxpc3QgaW4gLWUgbW9kZQpzdGRpbjoKCWZhbHNlIHx8IGZhbHNlCgllY2hvICJzaG91bGQgbm90IHByaW50Igphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBva3NoLWxvbmdsaW5lLWNyYXNoCmRlc2NyaXB0aW9uOgoJVGhpcyB1c2VkIHRvIGNhdXNlIGEgY29yZSBkdW1wCnN0ZGluOgoJdWxpbWl0IC1jIDAKCWRlcGxpYnM9Ii1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbHRpZmYgLWxqcGVnIC1seiAtbHBuZyAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdka19waXhidWYubGEgLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC1sbSAtbG0gL3Vzci9sb2NhbC9saWIvbGliYXVkaW9maWxlLmxhIC1sbSAtbG0gLWxhdWRpb2ZpbGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJlc2QubGEgLWxtIC1seiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lc3VwcG9ydC5sYSAtbG0gLWx6IC1sbSAtbGdsaWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZS5sYSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbElDRSAtbFNNIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC1seiAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9YMTFSNi9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrX2ltbGliLmxhIC1sbSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmFydF9sZ3BsLmxhIC1sbSAtbHogLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbElDRSAtbFNNIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLUwvdXNyL1gxMVI2L2xpYiAtbG0gLWx6IC1scG5nIC1sdW5naWYgLWx6IC1sanBlZyAtbHRpZmYgLWxqcGVnIC1sZ2RrX2ltbGliIC1sZ2xpYiAtbG0gLWxhdWRpb2ZpbGUgLWxtIC1sYXVkaW9maWxlIC1sZXNkIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWV1aS5sYSAtbHogLWx6IC91c3IvbG9jYWwvbGliL2xpYnhtbC5sYSAtbHogLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJ4bWwubGEgLWxtIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbGFkZS5sYSAtbHogLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJ4bWwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAtbG0gLWxtIC91c3IvbG9jYWwvbGliL2xpYmF1ZGlvZmlsZS5sYSAtbG0gLWxtIC1sYXVkaW9maWxlIC91c3IvbG9jYWwvbGliL2xpYmVzZC5sYSAtbG0gLWx6IC91c3IvbG9jYWwvbGliL2xpYmdub21lc3VwcG9ydC5sYSAtbG0gLWx6IC1sbSAtbGdsaWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWUubGEgLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtbGdsaWIgLWxnbW9kdWxlIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtbGdsaWIgLWxnbW9kdWxlIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbElDRSAtbFNNIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfaW1saWIubGEgL3Vzci9sb2NhbC9saWIvbGliYXJ0X2xncGwubGEgLWxtIC1seiAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLWxtIC1seiAtbHVuZ2lmIC1seiAtbGpwZWcgLWxqcGVnIC1sZ2RrX2ltbGliIC1sZ2xpYiAtbG0gLWxhdWRpb2ZpbGUgLWxtIC1sYXVkaW9maWxlIC1sZXNkIC91c3IvbG9jYWwvbGliL2xpYmdub21ldWkubGEgLUwvdXNyL1gxMVI2L2xpYiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdsYWRlLWdub21lLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgLWxtIC1sbSAvdXNyL2xvY2FsL2xpYi9saWJhdWRpb2ZpbGUubGEgLWxtIC1sbSAtbGF1ZGlvZmlsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmVzZC5sYSAtbG0gLWx6IC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWVzdXBwb3J0LmxhIC1sbSAtbHogLWxtIC1sZ2xpYiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lLmxhIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1sSUNFIC1sU00gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1sbSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgLWx6IC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL1gxMVI2L2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfaW1saWIubGEgLWxtIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliYXJ0X2xncGwubGEgLWxtIC1seiAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sSUNFIC1sU00gLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtTC91c3IvWDExUjYvbGliIC1sbSAtbHogLWxwbmcgLWx1bmdpZiAtbHogLWxqcGVnIC1sdGlmZiAtbGpwZWcgLWxnZGtfaW1saWIgLWxnbGliIC1sbSAtbGF1ZGlvZmlsZSAtbG0gLWxhdWRpb2ZpbGUgLWxlc2QgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXVpLmxhIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2xpYiIKCXNwZWNpYWxkZXBsaWJzPSItbGdub21ldWkgLWxhcnRfbGdwbCAtbGdka19pbWxpYiAtbHRpZmYgLWxqcGVnIC1sdW5naWYgLWxwbmcgLWx6IC1sU00gLWxJQ0UgLWxndGsgLWxnZGsgLWxnbW9kdWxlIC1saW50bCAtbFhleHQgLWxYMTEgLWxnbm9tZSAtbGdub21lc3VwcG9ydCAtbGVzZCAtbGF1ZGlvZmlsZSAtbG0gLWxnbGliIgoJZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KCQljYXNlICRkZXBsaWIgaW4KCQktTCopCgkJCW5ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyIKCQkJOzsKCQkqKQoJCQljYXNlICIgJHNwZWNpYWxkZXBsaWJzICIgaW4KCQkJKiIgJGRlcGxpYiAiKikKCQkJCW5ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyI7OwoJCQllc2FjCgkJCTs7CgkJZXNhYwoJZG9uZQotLS0KbmFtZTogb2tzaC1zZXRlcnJvci0xCmRlc2NyaXB0aW9uOgoJVGhlIC1lIGZsYWcgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBleGVjdXRpbmcgYSBjb21wb3VuZCBsaXN0Cglmb2xsb3dlZCBieSBhbiBpZiBzdGF0ZW1lbnQuCnN0ZGluOgoJaWYgdHJ1ZTsgdGhlbiBmYWxzZSAmJiBmYWxzZTsgZmkKCXRydWUKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgPT0gMAotLS0KbmFtZTogb2tzaC1zZXRlcnJvci0yCmRlc2NyaXB0aW9uOgoJVGhlIC1lIGZsYWcgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBleGVjdXRpbmcgYSBjb21wb3VuZCBsaXN0Cglmb2xsb3dlZCBieSBhbiBpZiBzdGF0ZW1lbnQuCnN0ZGluOgoJaWYgdHJ1ZTsgdGhlbiBpZiB0cnVlOyB0aGVuIGZhbHNlICYmIGZhbHNlOyBmaTsgZmkKCXRydWUKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgPT0gMAotLS0KbmFtZTogb2tzaC1zZXRlcnJvci0zCmRlc2NyaXB0aW9uOgoJVGhlIC1lIGZsYWcgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBleGVjdXRpbmcgYSBjb21wb3VuZCBsaXN0Cglmb2xsb3dlZCBieSBhbiBlbGlmIHN0YXRlbWVudC4Kc3RkaW46CglpZiB0cnVlOyB0aGVuIDo7IGVsaWYgdHJ1ZTsgdGhlbiBmYWxzZSAmJiBmYWxzZTsgZmkKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgPT0gMAotLS0KbmFtZTogb2tzaC1zZXRlcnJvci00CmRlc2NyaXB0aW9uOgoJVGhlIC1lIGZsYWcgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBleGVjdXRpbmcgYSBwaXBlbGluZQoJYmVnaW5uaW5nIHdpdGggJyEnCnN0ZGluOgoJZm9yIGkgaW4gMSAyIDMKCWRvCgkJZmFsc2UgJiYgZmFsc2UKCQl0cnVlIHx8IGZhbHNlCglkb25lCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItNQpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgcGlwZWxpbmUKCWJlZ2lubmluZyB3aXRoICchJwpzdGRpbjoKCSEgdHJ1ZSB8IGZhbHNlCgl0cnVlCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItNgpkZXNjcmlwdGlvbjoKCVdoZW4gdHJhcHBpbmcgRVJSIGFuZCBFWElULCBib3RoIHRyYXBzIHNob3VsZCBydW4gaW4gLWUgbW9kZQoJd2hlbiBhbiBlcnJvciBvY2N1cnMuCnN0ZGluOgoJdHJhcCAnZWNobyBFWElUJyBFWElUCgl0cmFwICdlY2hvIEVSUicgRVJSCglzZXQgLWUKCWZhbHNlCgllY2hvIERPTkUKCWV4aXQgMAphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZG91dDoKCUVSUgoJRVhJVAotLS0KbmFtZTogb2tzaC1zZXRlcnJvci03CmRlc2NyaXB0aW9uOgoJVGhlIC1lIGZsYWcgd2l0aGluIGEgY29tbWFuZCBzdWJzdGl0dXRpb24gc2hvdWxkIGJlIGhvbm9yZWQKc3RkaW46CgllY2hvICQoIHNldCAtZTsgZmFsc2U7IGVjaG8gZm9vICkKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLXN0ZG91dDoKCQotLS0KbmFtZTogb2tzaC1pbnB1dC1jb21zdWIKZGVzY3JpcHRpb246CglBIGNvbW1hbmQgc3Vic3RpdHV0aW9uIHVzaW5nIGlucHV0IHJlZGlyZWN0aW9uIHNob3VsZCBleGl0IHdpdGgKCWZhaWx1cmUgaWYgdGhlIGlucHV0IGZpbGUgZG9lcyBub3QgZXhpc3QuCnN0ZGluOgoJdmFyPSQoPCBub24tZXhpc3RlbnQpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogL25vbi1leGlzdGVudC8KLS0tCm5hbWU6IG9rc2gtZW1wdHktZm9yLWxpc3QKZGVzY3JpcHRpb246CglBIGZvciBsaXN0IHdoaWNoIGV4cGFuZHMgdG8gemVybyBpdGVtcyBzaG91bGQgbm90IGV4ZWN1dGUgdGhlIGJvZHkuCnN0ZGluOgoJc2V0IGZvbyBiYXIgYmF6IDsgZm9yIG91dCBpbiA7IGRvIGVjaG8gJG91dCA7IGRvbmUKLS0tCm5hbWU6IG9rc2gtdmFyZnVuY3Rpb24tbW9kMQpkZXNjcmlwdGlvbjoKCShJbnNwaXJlZCBieSBQUiAyNDUwIG9uIE9wZW5CU0QuKSBDYWxsaW5nCgkJRk9PPWJhciBmCgl3aGVyZSBmIGlzIGEga3NoIHN0eWxlIGZ1bmN0aW9uLCBzaG91bGQgbm90IHNldCBGT08gaW4gdGhlIGN1cnJlbnQKCWVudi4gSWYgZiBpcyBhIEJvdXJuZSBzdHlsZSBmdW5jdGlvbiwgRk9PIHNob3VsZCBiZSBzZXQuIEZ1cnRoZXJtb3JlLAoJdGhlIGZ1bmN0aW9uIHNob3VsZCByZWNlaXZlIGEgY29ycmVjdCB2YWx1ZSBvZiBGT08uIEhvd2V2ZXIsIGRpZmZlcmluZwoJZnJvbSBva3NoLCBzZXR0aW5nIEZPTyBpbiB0aGUgZnVuY3Rpb24gaXRzZWxmIG11c3QgY2hhbmdlIHRoZSB2YWx1ZSBpbgoJc2V0dGluZyBGT08gaW4gdGhlIGZ1bmN0aW9uIGl0c2VsZiBzaG91bGQgbm90IGNoYW5nZSB0aGUgdmFsdWUgaW4KCWdsb2JhbCBlbnZpcm9ubWVudC4Kc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICglmdW5jdGlvbiBrIHsKCQlpZiBbIHgkRk9PICE9IHhiYXIgXTsgdGhlbgoJCQllY2hvIDEKCQkJcmV0dXJuIDEKCQlmaQoJCXg9JChlbnYgfCBncmVwIEZPTykKCQlpZiBbICJ4JHgiICE9ICJ4Rk9PPWJhciIgXTsgdGhlbgoJCQllY2hvIDIKCQkJcmV0dXJuIDE7CgkJZmkKCQlGT089Zm9vCgkJcmV0dXJuIDAKCX0KCWIgKCkgewoJCWlmIFsgeCRGT08gIT0geGJhciBdOyB0aGVuCgkJCWVjaG8gMwoJCQlyZXR1cm4gMQoJCWZpCgkJeD0kKGVudiB8IGdyZXAgRk9PKQoJCWlmIFsgIngkeCIgIT0gInhGT089YmFyIiBdOyB0aGVuCgkJCWVjaG8gNAoJCQlyZXR1cm4gMTsKCQlmaQoJCUZPTz1mb28KCQlyZXR1cm4gMAoJfQoJRk9PPWJhciBrCglpZiBbICQ/ICE9IDAgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCWlmIFsgeCRGT08gIT0geCBdOyB0aGVuCgkJZXhpdCAxCglmaQoJRk9PPWJhciBiCglpZiBbICQ/ICE9IDAgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCWlmIFsgeCRGT08gIT0geGZvbyBdOyB0aGVuCgkJZXhpdCAxCglmaQoJRk9PPWJhcmJhcgoJRk9PPWJhciBrCglpZiBbICQ/ICE9IDAgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCWlmIFsgeCRGT08gIT0geGJhcmJhciBdOyB0aGVuCgkJZXhpdCAxCglmaQoJRk9PPWJhciBiCglpZiBbICQ/ICE9IDAgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCWlmIFsgeCRGT08gIT0geGZvbyBdOyB0aGVuCgkJZXhpdCAxCglmaQotLS0KbmFtZTogZmQtY2xvZXhlYy0xCmRlc2NyaXB0aW9uOgoJVmVyaWZ5IHRoYXQgZmlsZSBkZXNjcmlwdG9ycyA+IDIgYXJlIHByaXZhdGUgZm9yIEtvcm4gc2hlbGxzCglBVCZUIGtzaDkzIGRvZXMgdGhpcyBzdGlsbCwgd2hpY2ggbWVhbnMgd2UgbXVzdCBrZWVwIGl0IGFzIHdlbGwKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCWNhdCA+Y2xkIDw8LUVPRgoJCSMhJF9fcGVybG5hbWUKCQlvcGVuKG15IFwkZmgsICI+JiIsIDkpIG9yIGRpZSAiRTogb3BlbiBcJCEiOwoJCXN5c3dyaXRlKFwkZmgsICJGb3dsXFxuIiwgNSkgb3IgZGllICJFOiB3cml0ZSBcJCEiOwoJRU9GCgljaG1vZCAreCBjbGQKCWV4ZWMgOT4mMQoJLi9jbGQKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL0U6IG9wZW4gLwotLS0KbmFtZTogZmQtY2xvZXhlYy0yCmRlc2NyaXB0aW9uOgoJVmVyaWZ5IHRoYXQgZmlsZSBkZXNjcmlwdG9ycyA+IDIgYXJlIG5vdCBwcml2YXRlIGZvciBQT1NJWCBzaGVsbHMKCVNlZSBEZWJpYW4gQnVnICMxNTQ1NDAsIENsb3NlczogIzQ5OTEzOQpzdGRpbjoKCWNhdCA+Y2xkIDw8LUVPRgoJCSMhJF9fcGVybG5hbWUKCQlvcGVuKG15IFwkZmgsICI+JiIsIDkpIG9yIGRpZSAiRTogb3BlbiBcJCEiOwoJCXN5c3dyaXRlKFwkZmgsICJGb3dsXFxuIiwgNSkgb3IgZGllICJFOiB3cml0ZSBcJCEiOwoJRU9GCgljaG1vZCAreCBjbGQKCXRlc3QgLW4gIiRQT1NIX1ZFUlNJT04iIHx8IHNldCAtbyBwb3NpeAoJZXhlYyA5PiYxCgkuL2NsZApleHBlY3RlZC1zdGRvdXQ6CglGb3dsCi0tLQpuYW1lOiBmZC1jbG9leGVjLTMKZGVzY3JpcHRpb246CglWZXJpZnkgdGhhdCBmaWxlIGRlc2NyaXB0b3JzID4gMiBhcmUgbm90IHByaXZhdGUgZm9yIExFR0FDWSBLU0gKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS15ZXMKc3RkaW46CgljYXQgPmNsZCA8PC1FT0YKCQkjISRfX3BlcmxuYW1lCgkJb3BlbihteSBcJGZoLCAiPiYiLCA5KSBvciBkaWUgIkU6IG9wZW4gXCQhIjsKCQlzeXN3cml0ZShcJGZoLCAiRm93bFxcbiIsIDUpIG9yIGRpZSAiRTogd3JpdGUgXCQhIjsKCUVPRgoJY2htb2QgK3ggY2xkCglleGVjIDk+JjEKCS4vY2xkCmV4cGVjdGVkLXN0ZG91dDoKCUZvd2wKLS0tCm5hbWU6IGNvbXN1Yi0xYQpkZXNjcmlwdGlvbjoKCUNPTVNVQiBhcmUgbm93IHBhcnNlZCByZWN1cnNpdmVseSwgc28gdGhpcyB3b3JrcwoJc2VlIGFsc28gcmVncmVzc2lvbi02OiBtYXRjaGluZyBwYXJlbnRoZXPEk3MgYnVnCglGYWlscyBvbjogcGRrc2ggYmFzaDIgYmFzaDMgenNoCglQYXNzZXMgb246IGJhc2g0IGtzaDkzIG1rc2goMjAxMTAzMTMrKQpzdGRpbjoKCWVjaG8gMSAkKGNhc2UgMSBpbiAoMSkgZWNobyB5ZXM7OyAoMikgZWNobyBubzs7IGVzYWMpIC4KCWVjaG8gMiAkKGNhc2UgMSBpbiAxKSBlY2hvIHllczs7IDIpIGVjaG8gbm87OyBlc2FjKSAuCglURVNUPTEyMzQ7IGVjaG8gMyAke1RFU1Q6ICQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYyl9IC4KCVRFU1Q9NTY3ODsgZWNobyA0ICR7VEVTVDogJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYyl9IC4KCWE9KCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykpOyBlY2hvIDUgJHthWzBdfSAuCglhPSgkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSk7IGVjaG8gNiAke2FbMF19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSB5ZXMgLgoJMiB5ZXMgLgoJMyAyMzQgLgoJNCA2NzggLgoJNSAxIC4KCTYgMSAuCi0tLQpuYW1lOiBjb21zdWItMWIKZGVzY3JpcHRpb246CglDT01TVUIgYXJlIG5vdyBwYXJzZWQgcmVjdXJzaXZlbHksIHNvIHRoaXMgd29ya3MKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoMyBiYXNoNCB6c2gKCVBhc3NlcyBvbjoga3NoOTMgbWtzaCgyMDExMDMxMyspCnN0ZGluOgoJZWNobyAxICQoKCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykrMTApKSAuCgllY2hvIDIgJCgoJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYykrMjApKSAuCgkoKCBhID0gJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKSApKTsgZWNobyAzICRhIC4KCSgoIGEgPSAkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSApKTsgZWNobyA0ICRhIC4KCWE9KCQoKCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykrMTApKSk7IGVjaG8gNSAke2FbMF19IC4KCWE9KCQoKCQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpKzIwKSkpOyBlY2hvIDYgJHthWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMTEgLgoJMiAyMSAuCgkzIDEgLgoJNCAxIC4KCTUgMTEgLgoJNiAyMSAuCi0tLQpuYW1lOiBjb21zdWItMgpkZXNjcmlwdGlvbjoKCVJlZEhhdCBCWiM0OTY3OTEg4oCTIGFub3RoZXIgY2FzZSBvZiBtaXNzaW5nIHJlY3Vyc2lvbgoJaW4gcGFyc2luZyBDT01TVUIgZXhwcmVzc2lvbnMKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoM8K5IGJhc2g0wrkgenNoCglQYXNzZXMgb246IGtzaDkzIG1rc2goMjAxMTAzMDUrKQoJ4pGgIGJhc2hbMzRdIHNlZW0gdG8gY2hva2Ugb24gY29tbWVudCBlbmRpbmcgd2l0aCBiYWNrc2xhc2gtbmV3bGluZQpzdGRpbjoKCSMgYSBjb21tZW50IHdpdGggIiAnIFwKCXg9JCgKCWVjaG8geWVzCgkjIGEgY29tbWVudCB3aXRoICIgJyBcCgkpCgllY2hvICR4CmV4cGVjdGVkLXN0ZG91dDoKCXllcwotLS0KbmFtZTogY29tc3ViLTMKZGVzY3JpcHRpb246CglFeHRlbmRlZCB0ZXN0IGZvciBDT01TVUIgZXhwbGFpbmluZyB3aHkgYSByZWN1cnNpdmUgcGFyc2VyCglpcyBhIG11c3QgKGEgbm9uLXJlY3Vyc2l2ZSBwYXJzZXIgY2Fubm90IHBhc3MgYWxsIHRocmVlIG9mCgl0aGVzZSB0ZXN0IGNhc2VzLCBlc3BlY2lhbGx5IHRoZSDigJgj4oCZIGlzIGRpZmZpY3VsdCkKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmVjaG8gMTIzNCcgPmlkOyBjaG1vZCAreCBpZDsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZWNobyAkKHR5cGVzZXQgLWkxMCB4PTE2IzIwOyBlY2hvICR4KQoJZWNobyAkKHR5cGVzZXQgLVV1aTE2IHg9MTYjJChpZCAtdSkKCSkgLgoJZWNobyAkKGM9MTsgZD0xCgl0eXBlc2V0IC1VdWkxNiBhPTM2I2ZvbzsgYz0yCgl0eXBlc2V0IC1VdWkxNiBiPTM2ICNmb287IGQ9MgoJZWNobyAkYSAkYiAkYyAkZCkKZXhwZWN0ZWQtc3Rkb3V0OgoJMzIKCS4KCTE2IzRGNjggMTYjMjQgMiAxCi0tLQpuYW1lOiBjb21zdWItNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSB0cmVlIGR1bXAgZnVuY3Rpb25zIGZvciAhTUtTSF9TTUFMTCBmdW5jdGlvbmFsaXR5CmNhdGVnb3J5OiAhc21rc2gKc3RkaW46Cgl4KCkgeyBjYXNlICQxIGluIHUpIGVjaG8geCA7OyYgKikgZWNobyAkMSA7OyBlc2FjOyB9Cgl0eXBlc2V0IC1mIHgKZXhwZWN0ZWQtc3Rkb3V0OgoJeCgpIHsKCQljYXNlICQxIGluCgkJKHUpCgkJCWVjaG8geCAKCQkJO3wKCQkoKikKCQkJZWNobyAkMSAKCQkJOzsKCQllc2FjIAoJfSAKLS0tCm5hbWU6IGNvbXN1Yi01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgQ09NU1VCIHdvcmtzIHdpdGggYWxpYXNlcyAoZG9lcyBub3QgZXhwYW5kIHRoZW0gdHdpY2UpCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiJHgiOyBkb25lJyA+cGZuCgljaG1vZCAreCBwZm4KCWFsaWFzIGVjaG89J2VjaG8gYScKCWZvbygpIHsKCQkuL3BmbiAiJChlY2hvIGZvbykiCgl9CgkuL3BmbiAiJChlY2hvIGIpIgoJdHlwZXNldCAtZiBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJYSBiCglmb28oKSB7CgkJLi9wZm4gIiQoZWNobyBmb28gKSIgCgl9IAotLS0KbmFtZTogY29tc3ViLXRvcnR1cmUKZGVzY3JpcHRpb246CglDaGVjayB0aGUgdHJlZSBkdW1wIGZ1bmN0aW9ucyB3b3JrIGNvcnJlY3RseQpzdGRpbjoKCWlmIFtbIC16ICRfX3Byb2duYW1lIF1dOyB0aGVuIGVjaG8gPiYyIGNhbGwgbWUgd2l0aCBfX3Byb2duYW1lOyBleGl0IDE7IGZpCgl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlpZiBbWyAkbGluZSA9ICcjMScgXV07IHRoZW4KCQkJbGFzdGY9MAoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgPSBFT0ZOKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuJyRsaW5lCgkJCWNvbnRpbnVlCgkJZWxpZiBbWyAkbGluZSAhPSAnIycqIF1dOyB0aGVuCgkJCWZib2R5PSRmYm9keSQnXG5cdCckbGluZQoJCQljb250aW51ZQoJCWZpCgkJaWYgKCggbGFzdGYgKSk7IHRoZW4KCQkJeD0iaW5saW5lXyR7bmV4dGZ9KCkgeyIkZmJvZHkkJ1xufVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgaW5saW5lXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJCXg9ImZ1bmN0aW9uIGNvbXN1Yl8kbmV4dGYgeyB4PVwkKCIkZmJvZHkkJ1xuKTsgfVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgY29tc3ViXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJCXg9ImZ1bmN0aW9uIHJlcmVhZF8kbmV4dGYgeyB4PVwkKCgiJGZib2R5JCdcbil8dHIgdSB4KTsgfVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgcmVyZWFkXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJZmkKCQlsYXN0Zj0xCgkJZmJvZHk9CgkJbmV4dGY9JHtsaW5lIz99Cglkb25lIDw8J0VPRCcKCSMxCgkjVENPTQoJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IgoJI1RQQVJFTl9UUElQRV9UTElTVAoJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCSNUQU5EX1RPUgoJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJI1RTRUxFQ1QKCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCSNURk9SX1RUSU1FCgl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJI1RDQVNFCgljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCSNUSUZfVEJBTkdfVERCUkFDS0VUX1RFTElGCglpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJI1RXSElMRQoJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSNUVU5USUwKCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJI1RDT1BST0MKCWNhdCAgKiAgfCYgIGxzCgkjVEZVTkNUX1RCUkFDRV9UQVNZTkMKCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9Cglib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJI0lPUkVBRF9JT0NBVAoJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJI0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUAoJY2F0ICA+fGJhciAgPDwnRU9GTicKCWZvbwoJRU9GTgoJI0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUAoJY2F0ICAxPmJhciAgPDwtRU9GSQoJZm9vCglFT0ZJCgkjSU9SRFdSX0lPRFVQCglzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgkjQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQgoJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCSNRQ0hBUl9PUVVPVEVfQ1FVT1RFCgllY2hvIGZvXG9iXCJhXGByXCdiXCRhegoJZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IgoJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkjT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVAoJW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXQoJI2hlcmVkb2NfY2xvc2VkCgl4PSQoY2F0IDw8RU9GTgoJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTik7IGVjaG8gJHgKCSNoZXJlZG9jX3NwYWNlCgl4PSQoY2F0IDw8RU9GTlwgCglub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gKTsgZWNobyAkeAoJI3BhdGNoX21vdGQKCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJICAgIGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRgoJCTEsL15cJC9kCgkJMGEKCQkJJHgKCQoJCS4KCQl3cQoJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQlpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQKCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJZmkKCSN3ZGFycmFzc2lnbgoJY2FzZSB4IGluCgl4KSBhKz1iOyBjKz0oZCBlKQoJZXNhYwoJIzAKCUVPRApleHBlY3RlZC1zdGRvdXQ6CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgl9CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgdmFyYj0iMiAgMyIgY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPTSB7IHg9JCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPTSB7CgkJeD0kKHZhcmE9MSB2YXJiPSIyICAzIiBjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDT00geyB4PSQoKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT00gewoJCXg9JCgoIHZhcmE9MSB2YXJiPSIyICAzIiBjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTk7IGVjaG8pCgl9CglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCSggZWNobyAkZm9vIHwgdHIgLWRjIDAtOSAKCQkgIGVjaG8gKSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTk7IGVjaG8pCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoKCBlY2hvICRmb28gfCB0ciAtZGMgMC05IDsgZWNobyApICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCggKCBlY2hvICRmb28gfCB0ciAtZGMgMC05IDsgZWNobyApICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVEFORF9UT1IoKSB7CgkJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJfQoJaW5saW5lX1RBTkRfVE9SKCkgewoJCWNtZCAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbiAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgeyB4PSQoCgkJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsKCQl4PSQoY21kICYmIGVjaG8gamEgfHwgZWNobyBuZWluICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsgeD0kKCgKCQljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7CgkJeD0kKCggY21kICYmIGVjaG8gamEgfHwgZWNobyBuZWluICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA7ICBkb25lCgl9CglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgZmlsZSBpbiAqIAoJCWRvCgkJCWVjaG8gIjwkZmlsZT4iIAoJCQlicmVhayAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsgeD0kKAoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsKCQl4PSQoc2VsZWN0IGZpbGUgaW4gKiA7IGRvIGVjaG8gIjwkZmlsZT4iIDsgYnJlYWsgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RTRUxFQ1QgeyB4PSQoKAoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RTRUxFQ1QgewoJCXg9JCgoIHNlbGVjdCBmaWxlIGluICogOyBkbyBlY2hvICI8JGZpbGU+IiA7IGJyZWFrIDsgZG9uZSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCX0KCWlubGluZV9URk9SX1RUSU1FKCkgewoJCXRpbWUgZm9yIGkgaW4gezEsMiwzfSAKCQlkbwoJCQllY2hvICRpIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RGT1JfVFRJTUUgeyB4PSQoCgkJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsKCQl4PSQodGltZSBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gZWNobyAkaSA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZPUl9UVElNRSB7IHg9JCgoCgkJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGT1JfVFRJTUUgewoJCXg9JCgoIHRpbWUgZm9yIGkgaW4gezEsMiwzfSA7IGRvIGVjaG8gJGkgOyBkb25lICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgl9CglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAkZm9vIGluCgkJKDEpCgkJCWVjaG8gZWlucyAKCQkJOyYKCQkoMikKCQkJZWNobyB6d2VpIAoJCQk7fAoJCSgqKQoJCQllY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gCgkJCTs7CgkJZXNhYyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENBU0UgeyB4PSQoCgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENBU0UgewoJCXg9JChjYXNlICRmb28gaW4gKDEpIGVjaG8gZWlucyAgOyYgKDIpIGVjaG8gendlaSAgO3wgKCopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiAgOzsgZXNhYyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ0FTRSB7IHg9JCgoCgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnM7JiAyKSBlY2hvIHp3ZWkgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbjs7ICBlc2FjCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ0FTRSB7CgkJeD0kKCggY2FzZSAkZm9vIGluICgxKSBlY2hvIGVpbnMgIDsmICgyKSBlY2hvIHp3ZWkgIDt8ICgqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gIDs7IGVzYWMgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgl9CglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAhIFtbIDEgPSAxIF1dIAoJCXRoZW4KCQkJZWNobyBlaW5zIAoJCWVsaWYgW1sgMSA9IDIgXV0gCgkJdGhlbgoJCQllY2hvIHp3ZWkgCgkJZWxzZQoJCQllY2hvIGRyZWkgCgkJZmkgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXTsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoaWYgISBbWyAxID0gMSBdXSA7IHRoZW4gZWNobyBlaW5zIDsgZWxpZiBbWyAxID0gMiBdXSA7IHRoZW4gZWNobyB6d2VpIDsgZWxzZSBlY2hvIGRyZWkgOyBmaSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKCggaWYgISBbWyAxID0gMSBdXSA7IHRoZW4gZWNobyBlaW5zIDsgZWxpZiBbWyAxID0gMiBdXSA7IHRoZW4gZWNobyB6d2VpIDsgZWxzZSBlY2hvIGRyZWkgOyBmaSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJfQoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTEgCgkJd2hpbGUgewoJCQkgICAgICBcbGV0XSAiIGkgPCAxMCAiIAoJCSAgICAgIH0gCgkJZG8KCQkJZWNobyAkaSAKCQkJbGV0ICsraSAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgeyB4PSQoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgewoJCXg9JChpPTEgOyB3aGlsZSB7IFxsZXRdICIgaSA8IDEwICIgOyB9IDsgZG8gZWNobyAkaSA7IGxldCArK2kgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7IHg9JCgoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7CgkJeD0kKCggaT0xIDsgd2hpbGUgeyBcbGV0XSAiIGkgPCAxMCAiIDsgfSA7IGRvIGVjaG8gJGkgOyBsZXQgKytpIDsgZG9uZSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA7IGRvIGVjaG8gJGk7IGRvbmUKCX0KCWlubGluZV9UVU5USUwoKSB7CgkJaT0xMCAKCQl1bnRpbCB7CgkJCSAgICAgIFxsZXRdICIgIS0taSAiIAoJCSAgICAgIH0gCgkJZG8KCQkJZWNobyAkaSAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgeyB4PSQoCgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsKCQl4PSQoaT0xMCA7IHVudGlsIHsgXGxldF0gIiAhLS1pICIgOyB9IDsgZG8gZWNobyAkaSA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFVOVElMIHsgeD0kKCgKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA7IGRvIGVjaG8gJGk7IGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RVTlRJTCB7CgkJeD0kKCggaT0xMCA7IHVudGlsIHsgXGxldF0gIiAhLS1pICIgOyB9IDsgZG8gZWNobyAkaSA7IGRvbmUgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ09QUk9DKCkgewoJCWNhdCAgKiAgfCYgIGxzCgl9CglpbmxpbmVfVENPUFJPQygpIHsKCQljYXQgKiB8JiAKCQlscyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPUFJPQyB7IHg9JCgKCQljYXQgICogIHwmICBscwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgewoJCXg9JChjYXQgKiB8JiAgbHMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7IHg9JCgoCgkJY2F0ICAqICB8JiAgbHMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT1BST0MgewoJCXg9JCgoIGNhdCAqIHwmICBscyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCX0KCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiBrb3JuIHsKCQkJZWNobyBlaW5zIAoJCQllY2hvIHp3ZWkgCgkJfSAKCQlib3VybmUoKSB7CgkJCWxvZ2dlciAqICYgCgkJfSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoZnVuY3Rpb24ga29ybiB7IGVjaG8gZWlucyA7IGVjaG8gendlaSA7IH0gOyBib3VybmUoKSB7IGxvZ2dlciAqICYgIH0gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoKCBmdW5jdGlvbiBrb3JuIHsgZWNobyBlaW5zIDsgZWNobyB6d2VpIDsgfSA7IGJvdXJuZSgpIHsgbG9nZ2VyICogJiAgfSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPUkVBRF9JT0NBVCgpIHsKCQl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgl9CglpbmxpbmVfSU9SRUFEX0lPQ0FUKCkgewoJCXRyIHggdSA8Zm9vID4+YmFyIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1JFQURfSU9DQVQgeyB4PSQoCgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0lPUkVBRF9JT0NBVCB7CgkJeD0kKHRyIHggdSA8Zm9vID4+YmFyICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPUkVBRF9JT0NBVCB7IHg9JCgoCgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9SRUFEX0lPQ0FUIHsKCQl4PSQoKCB0ciB4IHUgPGZvbyA+PmJhciApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCgpIHsKCQljYXQgID58YmFyICA8PCdFT0ZOJwoJCWZvbwoJRU9GTgoJfQoJaW5saW5lX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCgpIHsKCQljYXQgPnxiYXIgPDwiRU9GTiIgCgkJZm9vCglFT0ZOCgkKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsgeD0kKAoJCWNhdCAgPnxiYXIgIDw8J0VPRk4nCgkJZm9vCglFT0ZOCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsKCQl4PSQoY2F0ID58YmFyIDw8IkVPRk4iIAoJCWZvbwoJRU9GTgoJKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsgeD0kKCgKCQljYXQgID58YmFyICA8PCdFT0ZOJwoJCWZvbwoJRU9GTgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsKCQl4PSQoKCBjYXQgPnxiYXIgPDwiRU9GTiIgCgkJZm9vCglFT0ZOCgkpIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCgpIHsKCQljYXQgIDE+YmFyICA8PC1FT0ZJCgkJZm9vCgkJRU9GSQoJfQoJaW5saW5lX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCgpIHsKCQljYXQgPmJhciA8PC1FT0ZJIAoJZm9vCglFT0ZJCgkKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsgeD0kKAoJCWNhdCAgMT5iYXIgIDw8LUVPRkkKCQlmb28KCQlFT0ZJCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsKCQl4PSQoY2F0ID5iYXIgPDwtRU9GSSAKCWZvbwoJRU9GSQoJKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsgeD0kKCgKCQljYXQgIDE+YmFyICA8PC1FT0ZJCgkJZm9vCgkJRU9GSQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQIHsKCQl4PSQoKCBjYXQgPmJhciA8PC1FT0ZJIAoJZm9vCglFT0ZJCgkpIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPUkRXUl9JT0RVUCgpIHsKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgl9CglpbmxpbmVfSU9SRFdSX0lPRFVQKCkgewoJCXNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSAKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9SRFdSX0lPRFVQIHsgeD0kKAoJCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1JEV1JfSU9EVVAgewoJCXg9JChzaCAxPD4vZGV2L2NvbnNvbGUgPCYxIDI+JjEgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9SRFdSX0lPRFVQIHsgeD0kKCgKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9JT1JEV1JfSU9EVVAgewoJCXg9JCgoIHNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIoKSB7CgkJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCX0KCWlubGluZV9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCKCkgewoJCWVjaG8gJCh0cnVlICkgJCgoMSsgMikpICR7IDogO30gJHt8UkVQTFk9eCA7fSAKCX0gCglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQiB7IHg9JCgKCQllY2hvICQodHJ1ZSkgJCgoMSsgMikpICR7ICA6O30gJHt8IFJFUExZPXg7fQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIgewoJCXg9JChlY2hvICQodHJ1ZSApICQoKDErIDIpKSAkeyA6IDt9ICR7fFJFUExZPXggO30gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQiB7IHg9JCgoCgkJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIgewoJCXg9JCgoIGVjaG8gJCh0cnVlICkgJCgoMSsgMikpICR7IDogO30gJHt8UkVQTFk9eCA7fSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1FDSEFSX09RVU9URV9DUVVPVEUoKSB7CgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgl9CglpbmxpbmVfUUNIQVJfT1FVT1RFX0NRVU9URSgpIHsKCQllY2hvIGZvXG9iXCJhXGByXCdiXCRheiAKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiIAoJCWVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1FDSEFSX09RVU9URV9DUVVPVEUgeyB4PSQoCgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfUUNIQVJfT1FVT1RFX0NRVU9URSB7CgkJeD0kKGVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6IDsgZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IiA7IGVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfUUNIQVJfT1FVT1RFX0NRVU9URSB7IHg9JCgoCgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9RQ0hBUl9PUVVPVEVfQ1FVT1RFIHsKCQl4PSQoKCBlY2hvIGZvXG9iXCJhXGByXCdiXCRheiA7IGVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIgOyBlY2hvICJmb1xcb2JcXFwiYVxcXGByIlwnImJcXFwkYXoiICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCgpIHsKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgl9CglpbmxpbmVfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCgpIHsKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsgeD0kKAoJCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsKCQl4PSQoW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsgeD0kKCgKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsKCQl4PSQoKCBbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfaGVyZWRvY19jbG9zZWQoKSB7CgkJeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJfQoJaW5saW5lX2hlcmVkb2NfY2xvc2VkKCkgewoJCXg9JChjYXQgPDxFT0ZOIAoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4KCSkgCgkJZWNobyAkeCAKCX0gCglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19jbG9zZWQgeyB4PSQoCgkJeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX2hlcmVkb2NfY2xvc2VkIHsKCQl4PSQoeD0kKGNhdCA8PEVPRk4gCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTgoJKSA7IGVjaG8gJHggKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfaGVyZWRvY19jbG9zZWQgeyB4PSQoKAoJCXg9JChjYXQgPDxFT0ZOCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTik7IGVjaG8gJHgKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2NfY2xvc2VkIHsKCQl4PSQoKCB4PSQoY2F0IDw8RU9GTiAKCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOCgkpIDsgZWNobyAkeCApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX2hlcmVkb2Nfc3BhY2UoKSB7CgkJeD0kKGNhdCA8PEVPRk5cIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4Cgl9CglpbmxpbmVfaGVyZWRvY19zcGFjZSgpIHsKCQl4PSQoY2F0IDw8RU9GTlwgIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiAKCSkgCgkJZWNobyAkeCAKCX0gCglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19zcGFjZSB7IHg9JCgKCQl4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOICk7IGVjaG8gJHgKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX3NwYWNlIHsKCQl4PSQoeD0kKGNhdCA8PEVPRk5cICAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gCgkpIDsgZWNobyAkeCApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX3NwYWNlIHsgeD0kKCgKCQl4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOICk7IGVjaG8gJHgKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2Nfc3BhY2UgewoJCXg9JCgoIHg9JChjYXQgPDxFT0ZOXCAgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSA7IGVjaG8gJHggKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9wYXRjaF9tb3RkKCkgewoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgl9CglpbmxpbmVfcGF0Y2hfbW90ZCgpIHsKCQl4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSApIAoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCApIiAhPSAkeCBdXSAmJiBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YgCgkxLC9eXCQvZAoJMGEKCSR4CgkKCS4KCXdxCglFT0YKCSkiID0gQCg/KSBdXSAmJiBybSAtZiAvZXRjL21vdGQgCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gCgkJdGhlbgoJCQlpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQgCgkJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIAoJCWZpIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9wYXRjaF9tb3RkIHsgeD0kKAoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfcGF0Y2hfbW90ZCB7CgkJeD0kKHg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxICkgOyBbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQgKSIgIT0gJHggXV0gJiYgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GIAoJMSwvXlwkL2QKCTBhCgkkeAoJCgkuCgl3cQoJRU9GCgkpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkIDsgaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gOyB0aGVuIGluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCA7IHByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIDsgZmkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfcGF0Y2hfbW90ZCB7IHg9JCgoCgkJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCgkJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJCSAgICBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCQkJMSwvXlwkL2QKCQkJMGEKCQkJCSR4CgkJCgkJCS4KCQkJd3EKCQlFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQkJaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkCgkJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCgkJZmkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX3BhdGNoX21vdGQgewoJCXg9JCgoIHg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxICkgOyBbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQgKSIgIT0gJHggXV0gJiYgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GIAoJMSwvXlwkL2QKCTBhCgkkeAoJCgkuCgl3cQoJRU9GCgkpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkIDsgaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gOyB0aGVuIGluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCA7IHByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIDsgZmkgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV93ZGFycmFzc2lnbigpIHsKCQljYXNlIHggaW4KCQl4KSBhKz1iOyBjKz0oZCBlKQoJCWVzYWMKCX0KCWlubGluZV93ZGFycmFzc2lnbigpIHsKCQljYXNlIHggaW4KCQkoeCkKCQkJYSs9YiAKCQkJXHNldCAtQSBjKyAtLSBkIGUgCgkJCTs7CgkJZXNhYyAKCX0gCglmdW5jdGlvbiBjb21zdWJfd2RhcnJhc3NpZ24geyB4PSQoCgkJY2FzZSB4IGluCgkJeCkgYSs9YjsgYys9KGQgZSkKCQllc2FjCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfd2RhcnJhc3NpZ24gewoJCXg9JChjYXNlIHggaW4gKHgpIGErPWIgOyBcc2V0IC1BIGMrIC0tIGQgZSAgOzsgZXNhYyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF93ZGFycmFzc2lnbiB7IHg9JCgoCgkJY2FzZSB4IGluCgkJeCkgYSs9YjsgYys9KGQgZSkKCQllc2FjCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF93ZGFycmFzc2lnbiB7CgkJeD0kKCggY2FzZSB4IGluICh4KSBhKz1iIDsgXHNldCAtQSBjKyAtLSBkIGUgIDs7IGVzYWMgKSB8IHRyIHUgeCApIAoJfSAKLS0tCm5hbWU6IGNvbXN1Yi10b3J0dXJlLWlvCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIHRyZWUgZHVtcCBmdW5jdGlvbnMgd29yayBjb3JyZWN0bHkgd2l0aCBJL08gcmVkaXJlY3Rpb24Kc3RkaW46CglpZiBbWyAteiAkX19wcm9nbmFtZSBdXTsgdGhlbiBlY2hvID4mMiBjYWxsIG1lIHdpdGggX19wcm9nbmFtZTsgZXhpdCAxOyBmaQoJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJaWYgW1sgJGxpbmUgPSAnIzEnIF1dOyB0aGVuCgkJCWxhc3RmPTAKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lID0gRU9GTiogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcbickbGluZQoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgIT0gJyMnKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuXHQnJGxpbmUKCQkJY29udGludWUKCQlmaQoJCWlmICgoIGxhc3RmICkpOyB0aGVuCgkJCXg9ImlubGluZV8ke25leHRmfSgpIHsiJGZib2R5JCdcbn1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGlubGluZV8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiBjb21zdWJfJG5leHRmIHsgeD1cJCgiJGZib2R5JCdcbik7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGNvbXN1Yl8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiByZXJlYWRfJG5leHRmIHsgeD1cJCgoIiRmYm9keSQnXG4pfHRyIHUgeCk7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIHJlcmVhZF8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCWZpCgkJbGFzdGY9MQoJCWZib2R5PQoJCW5leHRmPSR7bGluZSM/fQoJZG9uZSA8PCdFT0QnCgkjMQoJI1RDT00KCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkjVFBBUkVOX1RQSVBFX1RMSVNUCgkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05ID4mMzsgZWNobyA+JjMpID4mMwoJI1RBTkRfVE9SCgljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkjVFNFTEVDVAoJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkjVEZPUl9UVElNRQoJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJI1RDQVNFCgljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkjVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRgoJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSNUV0hJTEUKCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSNUVU5USUwKCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkjVENPUFJPQwoJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJI1RGVU5DVF9UQlJBQ0VfVEFTWU5DCglmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJI0NPTVNVQl9FWFBSU1VCCgllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJIzAKCUVPRApleHBlY3RlZC1zdGRvdXQ6CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJfQoJaW5saW5lX1RDT00oKSB7CgkJdmFyYT0xIHZhcmI9IjIgIDMiIGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsgeD0kKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPTSB7CgkJeD0kKHZhcmE9MSB2YXJiPSIyICAzIiBjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09NIHsgeD0kKCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPTSB7CgkJeD0kKCggdmFyYT0xIHZhcmI9IjIgIDMiIGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgl9CglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCSggZWNobyAkZm9vIHwgdHIgLWRjIDAtOSA+JjMgCgkJICBlY2hvID4mMyApID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoKCBlY2hvICRmb28gfCB0ciAtZGMgMC05ID4mMyA7IGVjaG8gPiYzICkgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOSA+JjM7IGVjaG8gPiYzKSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCggKCBlY2hvICRmb28gfCB0ciAtZGMgMC05ID4mMyA7IGVjaG8gPiYzICkgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVEFORF9UT1IoKSB7CgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJfQoJaW5saW5lX1RBTkRfVE9SKCkgewoJCWNtZCA+JjMgJiYgZWNobyBqYSA+JjMgfHwgZWNobyBuZWluID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgeyB4PSQoCgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsKCQl4PSQoY21kID4mMyAmJiBlY2hvIGphID4mMyB8fCBlY2hvIG5laW4gPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsgeD0kKCgKCQljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7CgkJeD0kKCggY21kID4mMyAmJiBlY2hvIGphID4mMyB8fCBlY2hvIG5laW4gPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCX0KCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCBmaWxlIGluICogCgkJZG8KCQkJZWNobyAiPCRmaWxlPiIgCgkJCWJyZWFrID4mMyAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFNFTEVDVCB7IHg9JCgKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsKCQl4PSQoc2VsZWN0IGZpbGUgaW4gKiA7IGRvIGVjaG8gIjwkZmlsZT4iIDsgYnJlYWsgPiYzIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7IHg9JCgoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UU0VMRUNUIHsKCQl4PSQoKCBzZWxlY3QgZmlsZSBpbiAqIDsgZG8gZWNobyAiPCRmaWxlPiIgOyBicmVhayA+JjMgOyBkb25lID4mMyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJfQoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJZm9yIGkgaW4gezEsMiwzfSAKCQlkbwoJCQl0aW1lIGVjaG8gJGkgPiYzIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsgeD0kKAoJCWZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICB0aW1lICA+JjMgZWNobyAgJGkgOyAgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsKCQl4PSQoZm9yIGkgaW4gezEsMiwzfSA7IGRvIHRpbWUgZWNobyAkaSA+JjMgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsgeD0kKCgKCQlmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgdGltZSAgPiYzIGVjaG8gICRpIDsgIGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsKCQl4PSQoKCBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gdGltZSBlY2hvICRpID4mMyA7IGRvbmUgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnMgPiYzOyYgMikgZWNobyB6d2VpID4mMyAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMzs7ICBlc2FjID4mMwoJfQoJaW5saW5lX1RDQVNFKCkgewoJCWNhc2UgJGZvbyBpbgoJCSgxKQoJCQllY2hvIGVpbnMgPiYzIAoJCQk7JgoJCSgyKQoJCQllY2hvIHp3ZWkgPiYzIAoJCQk7fAoJCSgqKQoJCQllY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzIAoJCQk7OwoJCWVzYWMgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7IHg9JCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENBU0UgewoJCXg9JChjYXNlICRmb28gaW4gKDEpIGVjaG8gZWlucyA+JjMgIDsmICgyKSBlY2hvIHp3ZWkgPiYzICA7fCAoKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAgOzsgZXNhYyA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENBU0UgeyB4PSQoKAoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zID4mMzsmIDIpIGVjaG8gendlaSA+JjMgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjM7OyAgZXNhYyA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsKCQl4PSQoKCBjYXNlICRmb28gaW4gKDEpIGVjaG8gZWlucyA+JjMgIDsmICgyKSBlY2hvIHp3ZWkgPiYzICA7fCAoKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAgOzsgZXNhYyA+JjMgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gID4mMyA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dID4mMzsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkgPiYzCgl9CglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAhIFtbIDEgPSAxIF1dID4mMyAKCQl0aGVuCgkJCWVjaG8gZWlucyAKCQllbGlmIFtbIDEgPSAyIF1dID4mMyAKCQl0aGVuCgkJCWVjaG8gendlaSAKCQllbHNlCgkJCWVjaG8gZHJlaSAKCQlmaSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoaWYgISBbWyAxID0gMSBdXSA+JjMgOyB0aGVuIGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gPiYzIDsgdGhlbiBlY2hvIHp3ZWkgOyBlbHNlIGVjaG8gZHJlaSA7IGZpID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA+JjMgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXSA+JjM7IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKCggaWYgISBbWyAxID0gMSBdXSA+JjMgOyB0aGVuIGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gPiYzIDsgdGhlbiBlY2hvIHp3ZWkgOyBlbHNlIGVjaG8gZHJlaSA7IGZpID4mMyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgl9CglpbmxpbmVfVFdISUxFKCkgewoJCWk9MSAKCQl3aGlsZSB7CgkJCSAgICAgIFxsZXRdICIgaSA8IDEwICIgCgkJICAgICAgfSA+JjMgCgkJZG8KCQkJZWNobyAkaSAKCQkJbGV0ICsraSAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFdISUxFIHsgeD0kKAoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgewoJCXg9JChpPTEgOyB3aGlsZSB7IFxsZXRdICIgaSA8IDEwICIgOyB9ID4mMyA7IGRvIGVjaG8gJGkgOyBsZXQgKytpIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFdISUxFIHsgeD0kKCgKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UV0hJTEUgewoJCXg9JCgoIGk9MSA7IHdoaWxlIHsgXGxldF0gIiBpIDwgMTAgIiA7IH0gPiYzIDsgZG8gZWNobyAkaSA7IGxldCArK2kgOyBkb25lID4mMyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA+JjMgOyBkbyBlY2hvICRpOyBkb25lID4mMwoJfQoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwIAoJCXVudGlsIHsKCQkJICAgICAgXGxldF0gIiAhLS1pICIgCgkJICAgICAgfSA+JjMgCgkJZG8KCQkJZWNobyAkaSAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsgeD0kKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsKCQl4PSQoaT0xMCA7IHVudGlsIHsgXGxldF0gIiAhLS1pICIgOyB9ID4mMyA7IGRvIGVjaG8gJGkgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgeyB4PSQoKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgewoJCXg9JCgoIGk9MTAgOyB1bnRpbCB7IFxsZXRdICIgIS0taSAiIDsgfSA+JjMgOyBkbyBlY2hvICRpIDsgZG9uZSA+JjMgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ09QUk9DKCkgewoJCWNhdCAgKiAgPiYzIHwmICA+JjMgbHMKCX0KCWlubGluZV9UQ09QUk9DKCkgewoJCWNhdCAqID4mMyB8JiAKCQlscyA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgeyB4PSQoCgkJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgewoJCXg9JChjYXQgKiA+JjMgfCYgIGxzID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09QUk9DIHsgeD0kKCgKCQljYXQgICogID4mMyB8JiAgPiYzIGxzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ09QUk9DIHsKCQl4PSQoKCBjYXQgKiA+JjMgfCYgIGxzID4mMyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJfQoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uIGtvcm4gewoJCQllY2hvIGVpbnMgCgkJCWVjaG8gendlaSA+JjMgCgkJfSAKCQlib3VybmUoKSB7CgkJCWxvZ2dlciAqID4mMyAmIAoJCX0gCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsgeD0kKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoZnVuY3Rpb24ga29ybiB7IGVjaG8gZWlucyA7IGVjaG8gendlaSA+JjMgOyB9IDsgYm91cm5lKCkgeyBsb2dnZXIgKiA+JjMgJiAgfSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7IHg9JCgoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyA+JjMgendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogID4mMyAmICB9CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7CgkJeD0kKCggZnVuY3Rpb24ga29ybiB7IGVjaG8gZWlucyA7IGVjaG8gendlaSA+JjMgOyB9IDsgYm91cm5lKCkgeyBsb2dnZXIgKiA+JjMgJiAgfSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0NPTVNVQl9FWFBSU1VCKCkgewoJCWVjaG8gJCh0cnVlID4mMykgJCgoMSsgMikpCgl9CglpbmxpbmVfQ09NU1VCX0VYUFJTVUIoKSB7CgkJZWNobyAkKHRydWUgPiYzICkgJCgoMSsgMikpIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9DT01TVUJfRVhQUlNVQiB7IHg9JCgKCQllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCIHsKCQl4PSQoZWNobyAkKHRydWUgPiYzICkgJCgoMSsgMikpICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCIHsgeD0kKCgKCQllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUIgewoJCXg9JCgoIGVjaG8gJCh0cnVlID4mMyApICQoKDErIDIpKSApIHwgdHIgdSB4ICkgCgl9IAotLS0KbmFtZTogZnVuc3ViLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IG5vbi1zdWJlbnZpcm9ubWVudCBjb21tYW5kIHN1YnN0aXR1dGlvbiB3b3JrcwpzdGRpbjoKCXNldCAtZQoJZm9vPWJhcgoJZWNobyAib2IgJGZvbyAuIgoJZWNobyAiJHsKCQllY2hvICJpYiAkZm9vIDoiCgkJZm9vPWJhegoJCWVjaG8gImlhICRmb28gOiIKCQlmYWxzZQoJfSIgLgoJZWNobyAib2EgJGZvbyAuIgpleHBlY3RlZC1zdGRvdXQ6CglvYiBiYXIgLgoJaWIgYmFyIDoKCWlhIGJheiA6IC4KCW9hIGJheiAuCi0tLQpuYW1lOiBmdW5zdWItMgpkZXNjcmlwdGlvbjoKCVlvdSBjYW4gbm93IHJlbGlhYmx5IHVzZSBsb2NhbCBhbmQgcmV0dXJuIGluIGZ1bnN1YnMKCShub3QgZXhpdCB0aG91Z2gpCnN0ZGluOgoJeD1xOyBlPTE7IHg9JHsgZWNobyBhOyBlPTI7IGVjaG8geCRlO307IGVjaG8gMTp5JHgsJGUsJD8uCgl4PXE7IGU9MTsgeD0keyBlY2hvIGE7IHR5cGVzZXQgZT0yOyBlY2hvIHgkZTt9OyBlY2hvIDI6eSR4LCRlLCQ/LgoJeD1xOyBlPTE7IHg9JHsgZWNobyBhOyB0eXBlc2V0IGU9MjsgcmV0dXJuIDM7IGVjaG8geCRlO307IGVjaG8gMzp5JHgsJGUsJD8uCmV4cGVjdGVkLXN0ZG91dDoKCTE6eWEgeDIsMiwwLgoJMjp5YSB4MiwxLDAuCgkzOnlhLDEsMy4KLS0tCm5hbWU6IHZhbHN1Yi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAidmFsdWUgc3Vic3RpdHV0aW9ucyIgd29yayBhcyBhZHZlcnRpc2VkCnN0ZGluOgoJeD0xCgl5PTIKCXo9MwoJUkVQTFk9NAoJZWNobyAiYmVmb3JlOgl4PCR4PiB5PCR5PiB6PCR6PiBSPCRSRVBMWT4iCgl4PSR7fAoJCWxvY2FsIHkKCQllY2hvICJiZWdpbjoJeDwkeD4geTwkeT4gejwkej4gUjwkUkVQTFk+IgoJCXg9NQoJCXk9NgoJCXo9NwoJCVJFUExZPTgKCQllY2hvICJlbmQ6CXg8JHg+IHk8JHk+IHo8JHo+IFI8JFJFUExZPiIKCX0KCWVjaG8gImFmdGVyOgl4PCR4PiB5PCR5PiB6PCR6PiBSPCRSRVBMWT4iCgkjIGVuc3VyZSB0cmFpbGluZyBuZXdsaW5lcyBhcmUga2VwdAoJdD0ke3xSRVBMWT0kJ2Zvb1xuXG4nO30KCXR5cGVzZXQgLXAgdAoJZWNobyAtbiB0aGlzIHVzZWQgdG8gc2VnZmF1bHQKCWVjaG8gJHt8dHJ1ZTt9JCh0cnVlKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJYmVmb3JlOgl4PDE+IHk8Mj4gejwzPiBSPDQ+CgliZWdpbjoJeDwxPiB5PD4gejwzPiBSPD4KCWVuZDoJeDw1PiB5PDY+IHo8Nz4gUjw4PgoJYWZ0ZXI6CXg8OD4geTwyPiB6PDc+IFI8ND4KCXR5cGVzZXQgdD0kJ2Zvb1xuXG4nCgl0aGlzIHVzZWQgdG8gc2VnZmF1bHQuCi0tLQpuYW1lOiBldmVudC1zdWJzdC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAnIScgc3Vic3RpdHV0aW9uIGluIG5vbmludGVyYWN0aXZlIG1vZGUgaXMgaWdub3JlZApmaWxlLXNldHVwOiBmaWxlIDc1NSAiZmFsc2V0dG8iCgkjISAvYmluL3NoCgllY2hvIG1vbHRvIGJlbmUKCWV4aXQgNDIKZmlsZS1zZXR1cDogZmlsZSA3NTUgIiFmYWxzZSIKCSMhIC9iaW4vc2gKCWVjaG8gc2kKc3RkaW46CglleHBvcnQgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZmFsc2V0dG8KCWVjaG8geWVhcAoJIWZhbHNlCgllY2hvIG1lb3cKCSEgZmFsc2UKCWVjaG8gPSAkPwoJaWYKCSEgZmFsc2U7IHRoZW4gZWNobyBmb287IGVsc2UgZWNobyBiYXI7IGZpCmV4cGVjdGVkLXN0ZG91dDoKCW1vbHRvIGJlbmUKCXllYXAKCXNpCgltZW93Cgk9IDAKCWZvbwotLS0KbmFtZTogZXZlbnQtc3Vic3QtMApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgJyEnIHN1YnN0aXR1dGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlIGlzIGlnbm9yZWQKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmZpbGUtc2V0dXA6IGZpbGUgNzU1ICJmYWxzZXR0byIKCSMhIC9iaW4vc2gKCWVjaG8gbW9sdG8gYmVuZQoJZXhpdCA0MgpmaWxlLXNldHVwOiBmaWxlIDc1NSAiIWZhbHNlIgoJIyEgL2Jpbi9zaAoJZWNobyBzaQpzdGRpbjoKCWV4cG9ydCBQQVRIPS4kUEFUSFNFUCRQQVRICglmYWxzZXR0bwoJZWNobyB5ZWFwCgkhZmFsc2UKCWVjaG8gbWVvdwoJISBmYWxzZQoJZWNobyA9ICQ/CglpZgoJISBmYWxzZTsgdGhlbiBlY2hvIGZvbzsgZWxzZSBlY2hvIGJhcjsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJbW9sdG8gYmVuZQoJeWVhcAoJc2kKCW1lb3cKCT0gMAoJZm9vCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qLwotLS0KbmFtZTogbm91bnNldC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC11IiBtYXRjaGVzIChmdXR1cmUpIFNVU3Y0IHJlcXVpcmVtZW50CnN0ZGluOgoJKHNldCAtdQoJdHJ5KCkgewoJCWxvY2FsIHYKCQlldmFsIHY9XCQkMQoJCWlmIFtbIC1uICR2IF1dOyB0aGVuCgkJCWVjaG8gJDE9bnoKCQllbHNlCgkJCWVjaG8gJDE9emYKCQlmaQoJfQoJeD15CgkoZWNobyAkeCkKCWVjaG8gPTEKCShlY2hvICR5KQoJZWNobyA9MgoJKHRyeSB4KQoJZWNobyA9MwoJKHRyeSB5KQoJZWNobyA9NAoJKHRyeSAwKQoJZWNobyA9NQoJKHRyeSAyKQoJZWNobyA9NgoJKHRyeSkKCWVjaG8gPTcKCShlY2hvIGF0PSRAKQoJZWNobyA9OAoJKGVjaG8gYXN0ZXJpc2s9JCopCgllY2hvID05CgkoZWNobyAkPykKCWVjaG8gPTEwCgkoZWNobyAkISkKCWVjaG8gPTExCgkoZWNobyAkLSkKCWVjaG8gPTEyCgkjKGVjaG8gJF8pCgkjZWNobyA9MTMKCShlY2hvICQjKQoJZWNobyA9MTQKCShteXBpZD0kJDsgdHJ5IG15cGlkKQoJZWNobyA9MTUKCSkgMj4mMSB8IHNlZCAtZSAncy9eW15dXSpdLy8nIC1lICdzL15bXjpdKjogKi8vJwoJZXhpdCAke1BJUEVTVEFUVVNbMF19CmV4cGVjdGVkLXN0ZG91dDoKCXkKCT0xCgl5OiBwYXJhbWV0ZXIgbm90IHNldAoJPTIKCXg9bnoKCT0zCgl5OiBwYXJhbWV0ZXIgbm90IHNldAoJPTQKCTA9bnoKCT01CgkyOiBwYXJhbWV0ZXIgbm90IHNldAoJPTYKCTE6IHBhcmFtZXRlciBub3Qgc2V0Cgk9NwoJYXQ9Cgk9OAoJYXN0ZXJpc2s9Cgk9OQoJMAoJPTEwCgkhOiBwYXJhbWV0ZXIgbm90IHNldAoJPTExCgl1c2gKCT0xMgoJMAoJPTE0CglteXBpZD1uegoJPTE1Ci0tLQpuYW1lOiBuYW1lcmVmLTEKZGVzY3JpcHRpb246CglUZXN0c3VpdGUgZm9yIG5hbWVyZWYgKGJvdW5kIHZhcmlhYmxlcykKc3RkaW46CgliYXI9Z2xvYmFsCgl0eXBlc2V0IC1uIGlyMj1iYXIKCXR5cGVzZXQgLW4gaW5kPWlyMgoJZWNobyAhaW5kOiAkeyFpbmR9CgllY2hvIGluZDogJGluZAoJZWNobyAhaXIyOiAkeyFpcjJ9CgllY2hvIGlyMjogJGlyMgoJdHlwZXNldCArbiBpbmQKCWVjaG8gIWluZDogJHshaW5kfQoJZWNobyBpbmQ6ICRpbmQKCXR5cGVzZXQgLW4gaXIyPWluZAoJZWNobyAhaXIyOiAkeyFpcjJ9CgllY2hvIGlyMjogJGlyMgoJc2V0fGdyZXAgXmlyMnxzZWQgJ3MvXi9zMTogLycKCXR5cGVzZXR8Z3JlcCAnIGlyMid8c2VkIC1lICdzL14vczI6IC8nIC1lICdzL25hbWVyZWYvdHlwZXNldCAtbi8nCglzZXQgLUEgYmx1YiAtLSBlMSBlMiBlMwoJdHlwZXNldCAtbiBpbmQ9Ymx1YgoJdHlwZXNldCAtbiBpcjI9Ymx1YlsyXQoJZWNobyAhaW5kWzFdOiAkeyFpbmRbMV19CgllY2hvICFpcjI6ICQhaXIyCgllY2hvIGluZFsxXTogJHtpbmRbMV19CgllY2hvIGlyMjogJGlyMgpleHBlY3RlZC1zdGRvdXQ6CgkhaW5kOiBiYXIKCWluZDogZ2xvYmFsCgkhaXIyOiBiYXIKCWlyMjogZ2xvYmFsCgkhaW5kOiBpbmQKCWluZDogaXIyCgkhaXIyOiBpbmQKCWlyMjogaXIyCglzMTogaXIyPWluZAoJczI6IHR5cGVzZXQgLW4gaXIyCgkhaW5kWzFdOiBibHViWzFdCgkhaXIyOiBpcjIKCWluZFsxXTogZTIKCWlyMjogZTMKLS0tCm5hbWU6IG5hbWVyZWYtMmRhCmRlc2NyaXB0aW9uOgoJVGVzdHN1aXRlIGZvciBuYW1lcmVmIChib3VuZCB2YXJpYWJsZXMpCglGdW5jdGlvbnMsIGFyZ3VtZW50IGdpdmVuIGRpcmVjdGx5LCBhZnRlciBsb2NhbApzdGRpbjoKCWZ1bmN0aW9uIGZvbyB7CgkJdHlwZXNldCBiYXI9bG9rYWwgYmF6PWF1Y2gKCQl0eXBlc2V0IC1uIHY9YmFyCgkJZWNobyBlbnRlcmluZwoJCWVjaG8gIXY6ICR7IXZ9CgkJZWNobyAhYmFyOiAkeyFiYXJ9CgkJZWNobyAhYmF6OiAkeyFiYXp9CgkJZWNobyBiYXI6ICRiYXIKCQllY2hvIHY6ICR2CgkJdj0xMjMKCQllY2hvIGJhcjogJGJhcgoJCWVjaG8gdjogJHYKCQllY2hvIGV4aXRpbmcKCX0KCWJhcj1nbG9iYWwKCWVjaG8gYmFyOiAkYmFyCglmb28gYmFyCgllY2hvIGJhcjogJGJhcgpleHBlY3RlZC1zdGRvdXQ6CgliYXI6IGdsb2JhbAoJZW50ZXJpbmcKCSF2OiBiYXIKCSFiYXI6IGJhcgoJIWJhejogYmF6CgliYXI6IGxva2FsCgl2OiBsb2thbAoJYmFyOiAxMjMKCXY6IDEyMwoJZXhpdGluZwoJYmFyOiBnbG9iYWwKLS0tCm5hbWU6IG5hbWVyZWYtMwpkZXNjcmlwdGlvbjoKCUFkdmFuY2VkIHRlc3RzdWl0ZSBmb3IgYm91bmQgdmFyaWFibGVzIChrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCXR5cGVzZXQgLW4gZm9vPWJhcltpXQoJc2V0IC1BIGJhciAtLSBiIGMgYQoJZm9yIGkgaW4gMCAxIDIgMzsgZG8KCQlwcmludCAkaSAkZm9vIC4KCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMCBiIC4KCTEgYyAuCgkyIGEgLgoJMyAuCi0tLQpuYW1lOiBuYW1lcmVmLTQKZGVzY3JpcHRpb246CglFbnN1cmUgd2UgZG9uJ3QgcnVuIGluIGFuIGluZmluaXRlIGxvb3AKdGltZS1saW1pdDogMwpzdGRpbjoKCWJheigpIHsKCQl0eXBlc2V0IC1uIGZvbz1mbm9yZCBmbm9yZD1mb28KCQlmb29bMF09YmFyCgl9CglzZXQgLUEgZm9vIGJhZAoJZWNobyBzaW5kICRmb28gLgoJYmF6CgllY2hvIGJsYWggJGZvbyAuCmV4cGVjdGVkLXN0ZG91dDoKCXNpbmQgYmFkIC4KCWJsYWggYmFkIC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm5vcmQ6IGV4cHJlc3Npb24gcmVjdXJzZXMgb24gcGFyYW1ldGVyLwotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0xYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoIChlY2hvIGZ1YmFyKXx0ciB1IHgpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCggKGVjaG8gZnViYXIpfHRyIHUgeCkgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0xYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46Cgl4PSQoIChlY2hvIGZ1YmFyKXx0ciB1IHgpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmEKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJaWYgKChlY2hvIGZ1YmFyKXx0ciB1IHgpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCgoZWNobyBmdWJhcil8dHIgdSB4KSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTJjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCgoZWNobyBmdWJhcil8dHIgdSB4KTsgZWNobyAkeCAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICggKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgdGhlbgoJCWVjaG8gamEKCWVsc2UKCQllY2hvIG5laW4KCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyCglqYQotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0zYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CgllY2hvICQoIChlY2hvIGZ1YmFyKXwodHIgdSB4KSkgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0zYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46Cgl4PSQoIChlY2hvIGZ1YmFyKXwodHIgdSB4KSk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy00YQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgdGhlbgoJCWVjaG8gamEKCWVsc2UKCQllY2hvIG5laW4KCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyCglqYQotLS0KbmFtZTogYmV0dGVyLXBhcmVucy00YgpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CgllY2hvICQoKGVjaG8gZnViYXIpfCh0ciB1IHgpKSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCgoZWNobyBmdWJhcil8KHRyIHUgeCkpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtNQpkZXNjcmlwdGlvbjoKCUFub3RoZXIgY29ybmVyIGNhc2UKc3RkaW46CgkoIChlY2hvICdmbwlvJGJhcicgImJhelwkYmxhXCIiIG1cJGVoKSB8IHRyIGEgQSkKCSgoZWNobyAnZm8JbyRiYXInICJiYXpcJGJsYVwiIiBtXCRlaCkgfCB0ciBhIEEpCmV4cGVjdGVkLXN0ZG91dDoKCWZvCW8kYkFyIGJBeiRibEEiIG0kZWgKCWZvCW8kYkFyIGJBeiRibEEiIG0kZWgKLS0tCm5hbWU6IGVjaG8tdGVzdC0xCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcyAobWtzaCkKc3RkaW46CgllY2hvIC1uICdmb29ceDQwYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0BiYXIJYmF6Ci0tLQpuYW1lOiBlY2hvLXRlc3QtMgpkZXNjcmlwdGlvbjoKCVRlc3Qgd2hhdCB0aGUgZWNobyBidWlsdGluIGRvZXMgKFBPU0lYKQoJTm90ZTogdGhpcyBmb2xsb3dzIERlYmlhbiBQb2xpY3kgMTAuNCB3aGljaCBtYW5kYXRlcwoJdGhhdCAtbiBzaGFsbCBiZSB0cmVhdGVkIGFzIGFuIG9wdGlvbiwgbm90IFhTSSB3aGljaAoJbWFuZGF0ZXMgaXQgc2hhbGwgYmUgdHJlYXRlZCBhcyBzdHJpbmcgYnV0IGVzY2FwZXMKCXNoYWxsIGJlIGV4cGFuZGVkLgpzdGRpbjoKCXRlc3QgLW4gIiRQT1NIX1ZFUlNJT04iIHx8IHNldCAtbyBwb3NpeAoJZWNobyAtbiAnZm9vXHg0MGJhcicKCWVjaG8gLWUgJ1x0YmF6JwpleHBlY3RlZC1zdGRvdXQ6Cglmb29ceDQwYmFyLWUgXHRiYXoKLS0tCm5hbWU6IGVjaG8tdGVzdC0zLW1uYnNkCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcywgYW5kIHRlc3QgYSBjb21wYXRpYmlsaXR5IGZsYWcuCmNhdGVnb3J5OiBtbmJzZGFzaApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDQwZm9vLWUgXHgyRQoJMz1ceDQwYmFyLgotLS0KbmFtZTogZWNoby10ZXN0LTMtbm9ybWFsCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcywgYW5kIHRlc3QgYSBjb21wYXRpYmlsaXR5IGZsYWcuCmNhdGVnb3J5OiAhbW5ic2Rhc2gKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIC1uIDE9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBwb3NpeCAtYyAnZWNobyAtbiAyPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKCSIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gLW4gMz1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCmV4cGVjdGVkLXN0ZG91dDoKCTE9QGZvby4KCTI9XHg0MGZvby1lIFx4MkUKCTM9XHg0MGZvby1lIFx4MkUKLS0tCm5hbWU6IHV0aWxpdGllcy1nZXRvcHRzLTEKZGVzY3JpcHRpb246CglnZXRvcHRzIHNldHMgT1BUSU5EIGNvcnJlY3RseSBmb3IgdW5wYXJzZWQgb3B0aW9uCnN0ZGluOgoJc2V0IC0tIC1hIC1hIC14Cgl3aGlsZSBnZXRvcHRzIDphIG9wdGM7IGRvCgkgICAgZWNobyAiT1BUQVJHPSRPUFRBUkcsIE9QVElORD0kT1BUSU5ELCBvcHRjPSRvcHRjLiIKCWRvbmUKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglPUFRBUkc9LCBPUFRJTkQ9Miwgb3B0Yz1hLgoJT1BUQVJHPSwgT1BUSU5EPTMsIG9wdGM9YS4KCU9QVEFSRz14LCBPUFRJTkQ9NCwgb3B0Yz0/LgoJZG9uZQotLS0KbmFtZTogdXRpbGl0aWVzLWdldG9wdHMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIE9QVEFSRwpzdGRpbjoKCXNldCAtLSAtYSBNYXJ5IC14Cgl3aGlsZSBnZXRvcHRzIGE6IG9wdGM7IGRvCgkgICAgZWNobyAiT1BUQVJHPSRPUFRBUkcsIE9QVElORD0kT1BUSU5ELCBvcHRjPSRvcHRjLiIKCWRvbmUKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglPUFRBUkc9TWFyeSwgT1BUSU5EPTMsIG9wdGM9YS4KCU9QVEFSRz0sIE9QVElORD00LCBvcHRjPT8uCglkb25lCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLioteC4qb3B0aW9uLwotLS0KbmFtZTogd2Nzd2lkdGgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSBuZXcgd2Nzd2lkdGggZmVhdHVyZQpzdGRpbjoKCXM95L2VCglzZXQgK1UKCXByaW50IG9jdGV0czogJHsjc30gLgoJcHJpbnQgOC1iaXQgd2lkdGg6ICR7JXN9IC4KCXNldCAtVQoJcHJpbnQgY2hhcmFjdGVyczogJHsjc30gLgoJcHJpbnQgY29sdW1uczogJHslc30gLgoJcz3vv70KCXNldCArVQoJcHJpbnQgb2N0ZXRzOiAkeyNzfSAuCglwcmludCA4LWJpdCB3aWR0aDogJHslc30gLgoJc2V0IC1VCglwcmludCBjaGFyYWN0ZXJzOiAkeyNzfSAuCglwcmludCBjb2x1bW5zOiAkeyVzfSAuCmV4cGVjdGVkLXN0ZG91dDoKCW9jdGV0czogMyAuCgk4LWJpdCB3aWR0aDogLTEgLgoJY2hhcmFjdGVyczogMSAuCgljb2x1bW5zOiAyIC4KCW9jdGV0czogMyAuCgk4LWJpdCB3aWR0aDogMyAuCgljaGFyYWN0ZXJzOiAxIC4KCWNvbHVtbnM6IDEgLgotLS0KbmFtZTogd2Nzd2lkdGgtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJcHJpbnQgJSAkJSAuCglzZXQgLVUKCXg9J2EJYicKCXByaW50IGMgJHsleH0gLgoJc2V0ICtVCgl4PSdhCWInCglwcmludCBkICR7JXh9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJJSAkJSAuCgljIC0xIC4KCWQgLTEgLgotLS0KbmFtZTogd2Nzd2lkdGgtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJcHJpbnQgJHslfSAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHdjc3dpZHRoLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyUqfSAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHdjc3dpZHRoLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyVAfSAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHdjc3dpZHRoLTRjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46Cgk6CglwcmludCAkeyU/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgLgotLS0KbmFtZTogcmVhbHBhdGgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHByb3BlciByZXR1cm4gdmFsdWVzIGZvciByZWFscGF0aApjYXRlZ29yeTogb3M6bWlyYnNkCnN0ZGluOgoJd2Q9JChyZWFscGF0aCAuKQoJbWtkaXIgZGlyCgk6PmZpbGUKCTo+ZGlyL2ZpbGUKCWxuIC1zIGRpciBsbmRpcgoJbG4gLXMgZmlsZSBsbmZpbGUKCWxuIC1zIG5peCBsbm5peAoJbG4gLXMgLiBsbnNlbGYKCWk9MAoJY2hrKCkgewoJCXR5cGVzZXQgeCB5CgkJeD0kKHJlYWxwYXRoICIkd2QvJDEiIDI+JjEpOyB5PSQ/CgkJcHJpbnQgJCgoKytpKSkgIj8kMSIgPSR7eCMjKiR3ZC99ICEkeQoJfQoJY2hrIGRpcgoJY2hrIGRpci8KCWNoayBkaXIvZmlsZQoJY2hrIGRpci9uaXgKCWNoayBmaWxlCgljaGsgZmlsZS8KCWNoayBmaWxlL2ZpbGUKCWNoayBmaWxlL25peAoJY2hrIG5peAoJY2hrIG5peC8KCWNoayBuaXgvZmlsZQoJY2hrIG5peC9uaXgKCWNoayBsbmRpcgoJY2hrIGxuZGlyLwoJY2hrIGxuZGlyL2ZpbGUKCWNoayBsbmRpci9uaXgKCWNoayBsbmZpbGUKCWNoayBsbmZpbGUvCgljaGsgbG5maWxlL2ZpbGUKCWNoayBsbmZpbGUvbml4CgljaGsgbG5uaXgKCWNoayBsbm5peC8KCWNoayBsbm5peC9maWxlCgljaGsgbG5uaXgvbml4CgljaGsgbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmCglybSBsbnNlbGYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSA/ZGlyID1kaXIgITAKCTIgP2Rpci8gPWRpciAhMAoJMyA/ZGlyL2ZpbGUgPWRpci9maWxlICEwCgk0ID9kaXIvbml4ID1kaXIvbml4ICEwCgk1ID9maWxlID1maWxlICEwCgk2ID9maWxlLyA9ZmlsZS86IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTcgP2ZpbGUvZmlsZSA9ZmlsZS9maWxlOiBOb3QgYSBkaXJlY3RvcnkgITIwCgk4ID9maWxlL25peCA9ZmlsZS9uaXg6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTkgP25peCA9bml4ICEwCgkxMCA/bml4LyA9bml4ICEwCgkxMSA/bml4L2ZpbGUgPW5peC9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkxMiA/bml4L25peCA9bml4L25peDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAhMgoJMTMgP2xuZGlyID1kaXIgITAKCTE0ID9sbmRpci8gPWRpciAhMAoJMTUgP2xuZGlyL2ZpbGUgPWRpci9maWxlICEwCgkxNiA/bG5kaXIvbml4ID1kaXIvbml4ICEwCgkxNyA/bG5maWxlID1maWxlICEwCgkxOCA/bG5maWxlLyA9bG5maWxlLzogTm90IGEgZGlyZWN0b3J5ICEyMAoJMTkgP2xuZmlsZS9maWxlID1sbmZpbGUvZmlsZTogTm90IGEgZGlyZWN0b3J5ICEyMAoJMjAgP2xuZmlsZS9uaXggPWxuZmlsZS9uaXg6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTIxID9sbm5peCA9bml4ICEwCgkyMiA/bG5uaXgvID1uaXggITAKCTIzID9sbm5peC9maWxlID1sbm5peC9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkyNCA/bG5uaXgvbml4ID1sbm5peC9uaXg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTI1ID9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYgPWxuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZjogVG9vIG1hbnkgbGV2ZWxzIG9mIHN5bWJvbGljIGxpbmtzICE2MgotLS0KbmFtZTogcmVhbHBhdGgtMgpkZXNjcmlwdGlvbjoKCUVuc3VyZSB0aGF0IGV4YWN0bHkgdHdvIGxlYWRpbmcgc2xhc2hlcyBhcmUgbm90IGNvbGxhcHNlZAoJUE9TSVggZ3VhcmFudGVlcyB0aGlzIGV4Y2VwdGlvbiwgZS5nLiBmb3IgVU5DIHBhdGhzIG9uIEN5Z3dpbgpjYXRlZ29yeTogb3M6bWlyYnNkCnN0ZGluOgoJbG4gLXMgL2JpbiB0MQoJbG4gLXMgLy9iaW4gdDIKCWxuIC1zIC8vL2JpbiB0MwoJcmVhbHBhdGggL2JpbgoJcmVhbHBhdGggLy9iaW4KCXJlYWxwYXRoIC8vL2JpbgoJcmVhbHBhdGggL3Vzci9iaW4KCXJlYWxwYXRoIC91c3IvL2JpbgoJcmVhbHBhdGggL3Vzci8vL2JpbgoJcmVhbHBhdGggdDEKCXJlYWxwYXRoIHQyCglyZWFscGF0aCB0MwoJcm0gLWYgdDEgdDIgdDMKCWNkIC8vdXNyL2JpbgoJcHdkCgljZCAuLi9saWIKCXB3ZAoJcmVhbHBhdGggLy91c3IvaW5jbHVkZS8uLi9iaW4KZXhwZWN0ZWQtc3Rkb3V0OgoJL2JpbgoJLy9iaW4KCS9iaW4KCS91c3IvYmluCgkvdXNyL2JpbgoJL3Vzci9iaW4KCS9iaW4KCS8vYmluCgkvYmluCgkvL3Vzci9iaW4KCS8vdXNyL2xpYgoJLy91c3IvYmluCi0tLQpuYW1lOiBjcmFzaC0xCmRlc2NyaXB0aW9uOgoJQ3Jhc2hlZCBkdXJpbmcgTWFyY2ggMjAxMSwgZml4ZWQgb24gdmVybmFsIGVxdWluxY14IOKYugpjYXRlZ29yeTogb3M6bWlyYnNkLG9zOm9wZW5ic2QKc3RkaW46CglleHBvcnQgTUFMTE9DX09QVElPTlM9RkdKUFJTWAoJIiRfX3Byb2duYW1lIiAtYyAneD0kKHRyIHogciA8PDxiYXopOyBlY2hvICR4JwpleHBlY3RlZC1zdGRvdXQ6CgliYXIKLS0tCm5hbWU6IGRlYmlhbi0xMTctMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCBcKCAhIC1lIFwpIDsgZWNobyAkPwpleHBlY3RlZC1zdGRvdXQ6CgkxCi0tLQpuYW1lOiBkZWJpYW4tMTE3LTIKZGVzY3JpcHRpb246CglDaGVjayB0ZXN0IC0gYnVnIzQ2NTI1MApzdGRpbjoKCXRlc3QgXCggIC1lIFwpIDsgZWNobyAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBkZWJpYW4tMTE3LTMKZGVzY3JpcHRpb246CglDaGVjayB0ZXN0IC0gYnVnIzQ2NTI1MApzdGRpbjoKCXRlc3QgISAtZSAgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTEKLS0tCm5hbWU6IGRlYmlhbi0xMTctNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCAgLWUgIDsgZWNobyAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBjYXNlLXpzaApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgenNoIGNhc2UgdmFyaWFudHMgd29yawpzdGRpbjoKCWNhc2UgJ2InIGluCgkgIGEpIGVjaG8gYSA7OwoJICBiKSBlY2hvIGIgOzsKCSAgYykgZWNobyBjIDs7CgkgICopIGVjaG8geCA7OwoJZXNhYwoJZWNobyA9CgljYXNlICdiJyBpbgoJICBhKSBlY2hvIGEgOyYKCSAgYikgZWNobyBiIDsmCgkgIGMpIGVjaG8gYyA7JgoJICAqKSBlY2hvIHggOyYKCWVzYWMKCWVjaG8gPQoJY2FzZSAnYicgaW4KCSAgYSkgZWNobyBhIDt8CgkgIGIpIGVjaG8gYiA7fAoJICBjKSBlY2hvIGMgO3wKCSAgKikgZWNobyB4IDt8Cgllc2FjCmV4cGVjdGVkLXN0ZG91dDoKCWIKCT0KCWIKCWMKCXgKCT0KCWIKCXgKLS0tCm5hbWU6IGNhc2UtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBjYXNlIGVuZCB0b2tlbnMgYXJlIG5vdCBtaXhlZCB1cCAoRGViaWFuICMyMjAyNzIpCnN0ZGluOgoJaT0wCglmb3IgdmFsdWUgaW4gJ3gnICd9JyAnZXNhYyc7IGRvCgkJcHJpbnQgLW4gIiQoKCsraSkpKCR2YWx1ZSlib3VybmUgIgoJCWNhc2UgJHZhbHVlIGluCgkJfSkgZWNobyBicmFjZSA7OwoJCSopIGVjaG8gbm8gOzsKCQllc2FjCgkJcHJpbnQgLW4gIiQoKCsraSkpKCR2YWx1ZSlrb3JuICIKCQljYXNlICR2YWx1ZSB7CgkJZXNhYykgZWNobyBlc2FjIDs7CgkJKikgZWNobyBubyA7OwoJCX0KCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMSh4KWJvdXJuZSBubwoJMih4KWtvcm4gbm8KCTMofSlib3VybmUgYnJhY2UKCTQofSlrb3JuIG5vCgk1KGVzYWMpYm91cm5lIG5vCgk2KGVzYWMpa29ybiBlc2FjCi0tLQpuYW1lOiBjb21tYW5kLXNoaWZ0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAnY29tbWFuZCBzaGlmdCcgd29ya3MKc3RkaW46CglmdW5jdGlvbiBzbmMgewoJCWVjaG8gImJlZm9yZQkwPSckMCcgMT0nJDEnIDI9JyQyJyIKCQlzaGlmdAoJCWVjaG8gImFmdGVyCTA9JyQwJyAxPSckMScgMj0nJDInIgoJfQoJZnVuY3Rpb24gc3djIHsKCQllY2hvICJiZWZvcmUJMD0nJDAnIDE9JyQxJyAyPSckMiciCgkJY29tbWFuZCBzaGlmdAoJCWVjaG8gImFmdGVyCTA9JyQwJyAxPSckMScgMj0nJDInIgoJfQoJZWNobyA9IHdpdGhvdXQgY29tbWFuZAoJc25jIOS4gCDkuowKCWVjaG8gPSB3aXRoIGNvbW1hbmQKCXN3YyDkuIAg5LqMCgllY2hvID0gZG9uZQpleHBlY3RlZC1zdGRvdXQ6Cgk9IHdpdGhvdXQgY29tbWFuZAoJYmVmb3JlCTA9J3NuYycgMT0n5LiAJyAyPSfkuownCglhZnRlcgkwPSdzbmMnIDE9J+S6jCcgMj0nJwoJPSB3aXRoIGNvbW1hbmQKCWJlZm9yZQkwPSdzd2MnIDE9J+S4gCcgMj0n5LqMJwoJYWZ0ZXIJMD0nc3djJyAxPSfkuownIDI9JycKCT0gZG9uZQotLS0KbmFtZTogZHVmZnMtZGV2aWNlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgY29tcGlsZXIgZGlkIG5vdCBvcHRpbWlzZS1icmVhayB0aGVtCgkobGV4LmMgaGFzIGdvdCBhIHNpbWlsYXIgb25lIGluIFNIRVJFREVMSU0pCnN0ZGluOgoJc2V0ICtVCglzPQoJdHlwZXNldCAtaTEgaT0wCgl3aGlsZSAoKCArK2kgPCAyNTYgKSk7IGRvCgkJcys9JHtpIzEjfQoJZG9uZQoJcys9JCdceEMyXHhBMFx4RTJceDgyXHhBQ1x4RUZceEJGXHhCRFx4RUZceEJGXHhCRVx4RUZceEJGXHhCRlx4RjBceDkwXHg4MFx4ODAuJwoJdHlwZXNldCAtcCBzCmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgcz0kJ1wwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlxhXGJcdFxuXHZcZlxyXDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlxFXDAzNFwwMzVcMDM2XDAzNyAhIiMkJSZcMDQ3KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flwxNzdcMjAwXDIwMVwyMDJcMjAzXDIwNFwyMDVcMjA2XDIwN1wyMTBcMjExXDIxMlwyMTNcMjE0XDIxNVwyMTZcMjE3XDIyMFwyMjFcMjIyXDIyM1wyMjRcMjI1XDIyNlwyMjdcMjMwXDIzMVwyMzJcMjMzXDIzNFwyMzVcMjM2XDIzN1wyNDBcMjQxXDI0MlwyNDNcMjQ0XDI0NVwyNDZcMjQ3XDI1MFwyNTFcMjUyXDI1M1wyNTRcMjU1XDI1NlwyNTdcMjYwXDI2MVwyNjJcMjYzXDI2NFwyNjVcMjY2XDI2N1wyNzBcMjcxXDI3MlwyNzNcMjc0XDI3NVwyNzZcMjc3XDMwMFwzMDFcMzAyXDMwM1wzMDRcMzA1XDMwNlwzMDdcMzEwXDMxMVwzMTJcMzEzXDMxNFwzMTVcMzE2XDMxN1wzMjBcMzIxXDMyMlwzMjNcMzI0XDMyNVwzMjZcMzI3XDMzMFwzMzFcMzMyXDMzM1wzMzRcMzM1XDMzNlwzMzdcMzQwXDM0MVwzNDJcMzQzXDM0NFwzNDVcMzQ2XDM0N1wzNTBcMzUxXDM1MlwzNTNcMzU0XDM1NVwzNTZcMzU3XDM2MFwzNjFcMzYyXDM2M1wzNjRcMzY1XDM2NlwzNjdcMzcwXDM3MVwzNzJcMzczXDM3NFwzNzVcMzc2XDM3N1x1MDBBMFx1MjBBQ1x1RkZGRFwzNTdcMjc3XDI3NlwzNTdcMjc3XDI3N1wzNjBcMjIwXDIwMFwyMDAuJwotLS0KbmFtZTogc3RhdGVwdHItdW5kZXJmbG93CmRlc2NyaXB0aW9uOgoJVGhpcyBjaGVjayBvdmVyZmxvd3MgYW4gWHJlc3Rwb3Mgc3RvcmVkIGluIGEgc2hvcnQgaW4gUjQwCmNhdGVnb3J5OiBmYXN0Ym94CnN0ZGluOgoJZnVuY3Rpb24gTGI2NGRlY29kZSB7CgkJW1sgLW8gdXRmOC1tb2RlIF1dOyBsb2NhbCB1PSQ/CgkJc2V0ICtVCgkJbG9jYWwgYyBzPSIkKiIgdD0KCQlbWyAtbiAkcyBdXSB8fCB7IHM9JChjYXQ7cHJpbnQgeCk7IHM9JHtzJXh9OyB9CgkJbG9jYWwgLWkgaT0wIG49JHsjc30gcD0wIHYgeAoJCWxvY2FsIC1pMTYgbwoJCgkJd2hpbGUgKCggaSA8IG4gKSk7IGRvCgkJCWM9JHtzOihpKyspOjF9CgkJCWNhc2UgJGMgewoJCQkoPSkJYnJlYWsgOzsKCQkJKFtBLVpdKQkoKCB2ID0gMSMkYyAtIDY1ICkpIDs7CgkJCShbYS16XSkJKCggdiA9IDEjJGMgLSA3MSApKSA7OwoJCQkoWzAtOV0pCSgoIHYgPSAxIyRjICsgNCApKSA7OwoJCQkoKykJdj02MiA7OwoJCQkoLykJdj02MyA7OwoJCQkoKikJY29udGludWUgOzsKCQkJfQoJCQkoKCB4ID0gKHggPDwgNikgfCB2ICkpCgkJCWNhc2UgJCgocCsrKSkgewoJCQkoMCkJY29udGludWUgOzsKCQkJKDEpCSgoIG8gPSAoeCA+PiA0KSAmIDI1NSApKSA7OwoJCQkoMikJKCggbyA9ICh4ID4+IDIpICYgMjU1ICkpIDs7CgkJCSgzKQkoKCBvID0geCAmIDI1NSApKQoJCQkJcD0wCgkJCQk7OwoJCQl9CgkJCXQ9JHRcXHgke28jMTYjfQoJCWRvbmUKCQlwcmludCAtbiAkdAoJCSgoIHUgKSkgfHwgc2V0IC1VCgl9CgkKCWk9LTEKCXM9Cgl3aGlsZSAoKCArK2kgPCAxMjEyMCApKTsgZG8KCQlzKz1hCglkb25lCglMYjY0ZGVjb2RlICRzID4vZGV2L251bGwKLS0tCm5hbWU6IHh0cmFjZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC14IiBkb2Vzbid0IHJlZGlyZWN0IHRvbyBxdWlja2x5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSIgPmJhc2gKCWNhdCA+PmJhc2ggPDwnRU9GJwoJZWNobyAnR05VIGJhc2gsIHZlcnNpb24gMi4wNWIuMCgxKS1yZWxlYXNlIChpMzg2LWVjY2UtbWlyYnNkMTApCglDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuJwoJRU9GCgljaG1vZCAreCBiYXNoCgkiJF9fcHJvZ25hbWUiIC14YyAnZm9vPSQoLi9iYXNoIC0tdmVyc2lvbiAyPiYxIHwgaGVhZCAtMSk7IGVjaG8gIj0kZm9vPSInCmV4cGVjdGVkLXN0ZG91dDoKCT1HTlUgYmFzaCwgdmVyc2lvbiAyLjA1Yi4wKDEpLXJlbGVhc2UgKGkzODYtZWNjZS1taXJic2QxMCk9CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qLwotLS0KbmFtZTogeHRyYWNlLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICJzZXQgLXgiIGlzIG9mZiBkdXJpbmcgUFM0IGV4cGFuc2lvbgpzdGRpbjoKCWYoKSB7CgkJcHJpbnQgLW4gIihmMTokLSkiCgkJc2V0IC14CgkJcHJpbnQgLW4gIihmMjokLSkiCgl9CglQUzQ9J1socDokLSkkKGYpXSAnCglwcmludCAiKG8wOiQtKSIKCXNldCAteCAtbyBpbmhlcml0LXh0cmFjZQoJcHJpbnQgIihvMTokLSkiCglzZXQgK3gKCXByaW50ICIobzI6JC0pIgpleHBlY3RlZC1zdGRvdXQ6CgkobzA6c2gpCgkobzE6c2h4KQoJKG8yOnNoKQpleHBlY3RlZC1zdGRlcnI6CglbKHA6c2gpKGYxOnNoKShmMjpzaCldIHByaW50ICcobzE6c2h4KScKCVsocDpzaCkoZjE6c2gpKGYyOnNoKV0gc2V0ICt4Ci0tLQpuYW1lOiBma3NoLWZsYWdzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBGS1NIIGZ1bmN0aW9ucyBoYXZlIHRoZWlyIG93biBzaGVsbCBmbGFncwpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJW1sgJEtTSF9WRVJTSU9OID0gVmVyc2lvbiogXV0gJiYgc2V0ICtCCglmdW5jdGlvbiBmb28gewoJCXNldCArZgoJCXNldCAtZQoJCWVjaG8gMiAiJHstL3N9IiAuCgl9CglzZXQgLWZoCgllY2hvIDEgIiR7LS9zfSIgLgoJZm9vCgllY2hvIDMgIiR7LS9zfSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGZoIC4KCTIgZWggLgoJMyBmaCAuCi0tLQpuYW1lOiBma3NoLWZsYWdzLWxlZ2FjeQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZXZlbiBGS1NIIGZ1bmN0aW9ucyBzaGFyZSB0aGUgc2hlbGwgZmxhZ3MKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS15ZXMKc3RkaW46CglbWyAkS1NIX1ZFUlNJT04gPSBWZXJzaW9uKiBdXSAmJiBzZXQgK0IKCWZvbygpIHsKCQlzZXQgK2YKCQlzZXQgLWUKCQllY2hvIDIgIiR7LS9zfSIgLgoJfQoJc2V0IC1maAoJZWNobyAxICIkey0vc30iIC4KCWZvbwoJZWNobyAzICIkey0vc30iIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmaCAuCgkyIGVoIC4KCTMgZWggLgotLS0KbmFtZTogZnNoLWZsYWdzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAhRktTSCBmdW5jdGlvbnMgc2hhcmUgdGhlIHNoZWxsIGZsYWdzCnN0ZGluOgoJW1sgJEtTSF9WRVJTSU9OID0gVmVyc2lvbiogXV0gJiYgc2V0ICtCCglmb28oKSB7CgkJc2V0ICtmCgkJc2V0IC1lCgkJZWNobyAyICIkey0vc30iIC4KCX0KCXNldCAtZmgKCWVjaG8gMSAiJHstL3N9IiAuCglmb28KCWVjaG8gMyAiJHstL3N9IiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgZmggLgoJMiBlaCAuCgkzIGVoIC4KLS0tCg==