IyBjb25maWd1cmUgb3B0aW9ucwojCiMgU29tZSBjYW4gYmUgb3ZlcnJpZGVuIG9uIHJwbWJ1aWxkIGNvbW1hbmRsaW5lIHdpdGg6CiMgcnBtYnVpbGQgLS1kZWZpbmUgJ3ZhcmlhYmxlIHZhbHVlJwojCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBRdWFnZ2EgY29uZmlndXJlIG9wdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHdpdGgtZmVhdHVyZSBvcHRpb25zCiV7IT93aXRoX3NubXA6CQklZGVmaW5lIHdpdGhfc25tcAkxIH0KJXshP3dpdGhfdnR5c2g6CQklZGVmaW5lCXdpdGhfdnR5c2gJMSB9CiV7IT93aXRoX29zcGZfdGU6CSVkZWZpbmUJd2l0aF9vc3BmX3RlCTEgfQoleyE/d2l0aF9uc3NhOgkJJWRlZmluZQl3aXRoX25zc2EJMSB9CiV7IT93aXRoX29wYXF1ZV9sc2E6CSVkZWZpbmUJd2l0aF9vcGFxdWVfbHNhIDEgfQoleyE/d2l0aF90Y3BfemVicmE6CSVkZWZpbmUJd2l0aF90Y3BfemVicmEJMCB9CiV7IT93aXRoX3Z0eXNoOgkJJWRlZmluZQl3aXRoX3Z0eXNoCTEgfQoleyE/d2l0aF9wYW06CQklZGVmaW5lCXdpdGhfcGFtCTEgfQoleyE/d2l0aF9pcHY2OgkJJWRlZmluZQl3aXRoX2lwdjYJMSB9CiV7IT93aXRoX29zcGZjbGllbnQ6CSVkZWZpbmUJd2l0aF9vc3BmY2xpZW50IDEgfQoleyE/d2l0aF9vc3BmYXBpOgklZGVmaW5lCXdpdGhfb3NwZmFwaQkxIH0KJXshP3dpdGhfaXJkcDoJCSVkZWZpbmUJd2l0aF9pcmRwCTEgfQoleyE/d2l0aF9ydGFkdjoJCSVkZWZpbmUJd2l0aF9ydGFkdgkxIH0KJXshP3dpdGhfaXNpc2Q6CQklZGVmaW5lCXdpdGhfaXNpc2QJMSB9CiV7IT93aXRoX3NoYXJlZDoJJWRlZmluZQl3aXRoX3NoYXJlZAkxIH0KJXshP3dpdGhfbXVsdGlwYXRoOgklZGVmaW5lCXdpdGhfbXVsdGlwYXRoCTY0IH0KJXshP3F1YWdnYV91c2VyOgklZGVmaW5lCXF1YWdnYV91c2VyCXF1YWdnYSB9CiV7IT92dHlfZ3JvdXA6CQklZGVmaW5lCXZ0eV9ncm91cAlxdWFnZ2F2dHkgfQoKIyBwYXRoIGRlZmluZXMKJWRlZmluZQkJX3N5c2NvbmZkaXIJL2V0Yy9xdWFnZ2EKJWRlZmluZQkJemViX3NyYwkJJXtfYnVpbGRkaXJ9LyV7bmFtZX0tJXt2ZXJzaW9ufQolZGVmaW5lCQl6ZWJfcmhfc3JjCSV7emViX3NyY30vcmVkaGF0CiVkZWZpbmUJCXplYl9kb2NzCSV7emViX3NyY30vZG9jCgojIGRlZmluZXMgZm9yIGNvbmZpZ3VyZQolZGVmaW5lCQlfbGliZXhlY2Rpcgkle19leGVjX3ByZWZpeH0vbGliZXhlYy9xdWFnZ2EKJWRlZmluZQkJX2xpYmRpcgkJJXtfZXhlY19wcmVmaXh9LyV7X2xpYn0vcXVhZ2dhCiVkZWZpbmUJCV9pbmNsdWRlZGlyCSV7X3ByZWZpeH0vaW5jbHVkZQolZGVmaW5lCQlfbG9jYWxzdGF0ZWRpcgkvdmFyL3J1bi9xdWFnZ2EKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgZGlzdHJvIHNwZWNpZmljIHR3ZWFrcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGRlZmF1bHQgZGlzdHJvLiBPdmVycmlkZSB3aXRoIHJwbWJ1aWxkIC1EICJkaXN0IFhYWCIgCiV7ZXhwYW5kOiAlJWRlZmluZSBkZWZhdWx0X2Rpc3QgJShycG0gLXEgLS1xZiAnZmMlJXtWRVJTSU9OfScgZmVkb3JhLXJlbGVhc2UgfCBncmVwIC12ICdub3QgaW5zdGFsbGVkJyl9CiV7IT9kaXN0OgkJJWRlZmluZQkJZGlzdAkle2RlZmF1bHRfZGlzdH19CgojIGFzIGRpc3Ryb3MgY2hhbmdlIHBhY2thZ2VzIHdlIGRlcGVuZCBvbiwgb3VyIFJlcXVpcmVzIGhhdmUgdG8gY2hhbmdlLCBzYWRseS4KJWRlZmluZSBxdWFnZ2FfYnVpbGRyZXFzIHRleGluZm8gdGV0ZXggYXV0b2NvbmYgcGFtLWRldmVsCiVkZWZpbmUgcXVhZ2dhX2J1aWxkcmVxcyAle3F1YWdnYV9idWlsZHJlcXN9IHBhdGNoIGxpYmNhcC1kZXZlbAoKIyBGQzQgYW5kIDUgc3BsaXQgdGV4aTJodG1sIG91dCBvZiB0ZXRleCBwYWNrYWdlLgolaWYgIiVkaXN0IiAhPSAiZmMyIiB8fCAiJWRpc3QiICE9ICJmYzMiCiVkZWZpbmUgIHF1YWdnYV9idWlsZHJlcXMgJXtxdWFnZ2FfYnVpbGRyZXFzfSB0ZXhpMmh0bWwKJWVuZGlmCgojIHBhbV9zdGFjayBpcyBkZXByZWNhdGVkIGluIEZDNQojIGRlZmF1bHQgdG8gcGFtX3N0YWNrLCBkZWZhdWx0IHNob3VsZCBiZSBjaGFuZ2VkIGxhdGVyLgolaWYgIiVkaXN0IiA9PSAiZmM0IiB8fCAiJWRpc3QiID09ICJmYzMiCiVkZWZpbmUJcXVhZ2dhX3BhbV9zb3VyY2UgcXVhZ2dhLnBhbS5zdGFjawolZWxzZQolZGVmaW5lCXF1YWdnYV9wYW1fc291cmNlIHF1YWdnYS5wYW0KJWVuZGlmCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCgojIG1pc2MgaW50ZXJuYWwgZGVmaW5lcwoleyE/cXVhZ2dhX3VpZDoJCSVkZWZpbmUgICAgICAgICBxdWFnZ2FfdWlkICAgICAgOTIgfQoleyE/cXVhZ2dhX2dpZDoJCSVkZWZpbmUgICAgICAgICBxdWFnZ2FfZ2lkICAgICAgOTIgfQolZGVmaW5lCQlkYWVtb25fbGlzdAl6ZWJyYSByaXBkIG9zcGZkIGJncGQKCiVpZiAle3dpdGhfaXB2Nn0KJWRlZmluZQkJZGFlbW9udjZfbGlzdAlyaXBuZ2Qgb3NwZjZkCiVlbHNlCiVkZWZpbmUJCWRhZW1vbnY2X2xpc3QJIiIKJWVuZGlmCgolaWYgJXt3aXRoX2lzaXNkfQolZGVmaW5lCQlkYWVtb25fb3RoZXIJaXNpc2QKJWVsc2UKJWRlZmluZQkJZGFlbW9uX290aGVyCSIiCiVlbmRpZgoKJWRlZmluZQkJYWxsX2RhZW1vbnMJJXtkYWVtb25fbGlzdH0gJXtkYWVtb252Nl9saXN0fSAle2RhZW1vbl9vdGhlcn0gd2F0Y2hxdWFnZ2EKCiMgYWxsb3cgYnVpbGQgZGlyIHRvIGJlIGtlcHQKJXshP2tlZXBfYnVpbGQ6CQklZGVmaW5lCQlrZWVwX2J1aWxkCTAgfQoKI3JlbGVhc2Ugc3ViLXJldmlzaW9uICh0aGUgdHdvIGRpZ2l0cyBhZnRlciB0aGUgQ09ORkRBVEUpCiV7IT9yZWxlYXNlX3JldjoJJWRlZmluZQkJcmVsZWFzZV9yZXYJMDEgfQoKU3VtbWFyeTogUm91dGluZyBkYWVtb24KTmFtZToJCXF1YWdnYQpWZXJzaW9uOglAVkVSU0lPTkAKUmVsZWFzZToJQENPTkZEQVRFQCV7cmVsZWFzZV9yZXZ9CkxpY2Vuc2U6CUdQTApHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0RhZW1vbnMKU291cmNlMDoJaHR0cDovL3d3dy5xdWFnZ2EubmV0L3NuYXBzaG90cy9jdnMvJXtuYW1lfS0le3ZlcnNpb259LnRhci5negpVUkw6CQlodHRwOi8vd3d3LnF1YWdnYS5uZXQKJWlmICV7d2l0aF9zbm1wfQpCdWlsZFJlcXVpcmVzOgluZXQtc25tcC1kZXZlbApQcmVyZXE6CQluZXQtc25tcAolZW5kaWYKJWlmICV7d2l0aF92dHlzaH0KQnVpbGRSZXF1aXJlczoJcmVhZGxpbmUgcmVhZGxpbmUtZGV2ZWwgbmN1cnNlcyBuY3Vyc2VzLWRldmVsClByZXJlcToJCW5jdXJzZXMKJWVuZGlmCkJ1aWxkUmVxdWlyZXM6CXRleGluZm8gdGV0ZXggYXV0b2NvbmYgcGFtLWRldmVsIHBhdGNoIGxpYmNhcC1kZXZlbCB0ZXRleAojIEluaXRzY3JpcHRzID4gNS42MCBpcyByZXF1aXJlZCBmb3IgSVB2NiBzdXBwb3J0ClByZXJlcToJCWluaXRzY3JpcHRzID49IDUuNjAKUHJlcmVxOgkJbmN1cnNlcyBwYW0KUHJlcmVxOgkJL3NiaW4vaW5zdGFsbC1pbmZvClByb3ZpZGVzOglyb3V0aW5nZGFlbW9uCkJ1aWxkUm9vdDoJJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LXJvb3QKT2Jzb2xldGVzOgliaXJkIGdhdGVkIG1ydCB6ZWJyYQoKJWRlc2NyaXB0aW9uClF1YWdnYSBpcyBhIGZyZWUgc29mdHdhcmUgdGhhdCBtYW5hZ2VzIFRDUC9JUCBiYXNlZCByb3V0aW5nCnByb3RvY29sLiBJdCB0YWtlcyBtdWx0aS1zZXJ2ZXIgYW5kIG11bHRpLXRocmVhZCBhcHByb2FjaCB0byByZXNvbHZlCnRoZSBjdXJyZW50IGNvbXBsZXhpdHkgb2YgdGhlIEludGVybmV0LgoKUXVhZ2dhIHN1cHBvcnRzIEJHUDQsIEJHUDQrLCBPU1BGdjIsIE9TUEZ2MywgUklQdjEsIFJJUHYyLCBhbmQgUklQbmcuCgpRdWFnZ2EgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIFJvdXRlIFNlcnZlciBhbmQgYSBSb3V0ZSBSZWZsZWN0b3IuIEl0IGlzCm5vdCBhIHRvb2xraXQsIGl0IHByb3ZpZGVzIGZ1bGwgcm91dGluZyBwb3dlciB1bmRlciBhIG5ldyBhcmNoaXRlY3R1cmUuClF1YWdnYSBieSBkZXNpZ24gaGFzIGEgcHJvY2VzcyBmb3IgZWFjaCBwcm90b2NvbC4KClF1YWdnYSBpcyBhIGZvcmsgb2YgR05VIFplYnJhLgoKJXBhY2thZ2UgY29udHJpYgpTdW1tYXJ5OiBjb250cmliIHRvb2xzIGZvciBxdWFnZ2EKR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9EYWVtb25zCgolZGVzY3JpcHRpb24gY29udHJpYgpDb250cmlidXRlZC8zcmQgcGFydHkgdG9vbHMgd2hpY2ggbWF5IGJlIG9mIHVzZSB3aXRoIHF1YWdnYS4KCiVwYWNrYWdlIGRldmVsClN1bW1hcnk6IEhlYWRlciBhbmQgb2JqZWN0IGZpbGVzIGZvciBxdWFnZ2EgZGV2ZWxvcG1lbnQKR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9EYWVtb25zCgolZGVzY3JpcHRpb24gZGV2ZWwKVGhlIHF1YWdnYS1kZXZlbCBwYWNrYWdlIGNvbnRhaW5zIHRoZSBoZWFkZXIgYW5kIG9iamVjdCBmaWxlcyBuZWNjZXNzYXJ5IGZvcgpkZXZlbG9waW5nIE9TUEYtQVBJIGFuZCBxdWFnZ2EgYXBwbGljYXRpb25zLgoKJXByZXAKJXNldHVwICAtcQoKJWJ1aWxkCgojIEZvciBzdGFuZGFyZCBnY2MgdmVyYm9zaXR5LCB1bmNvbW1lbnQgdGhlc2UgbGluZXM6CiNDRkxBR1M9IiV7b3B0ZmxhZ3N9IC1XYWxsIC1Xc2lnbi1jb21wYXJlIC1XcG9pbnRlci1hcml0aCIKI0NGTEFHUz0iJHtDRkxBR1N9IC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVd3cml0ZS1zdHJpbmdzIgoKIyBGb3IgdWx0cmEgZ2NjIHZlcmJvc2l0eSwgdW5jb21tZW50IHRoZXNlIGxpbmVzIGFsc286CiNDRkxBR1M9IiR7Q0ZMQUdTfSAtVyAtV2Nhc3QtcXVhbCAtV3N0cmljdC1wcm90b3R5cGVzIgojQ0ZMQUdTPSIke0NGTEFHU30gLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV21pc3Npbmctbm9yZXR1cm4iCiNDRkxBR1M9IiR7Q0ZMQUdTfSAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV3VucmVhY2hhYmxlLWNvZGUiCiNDRkxBR1M9IiR7Q0ZMQUdTfSAtV3BhY2tlZCAtV3BhZGRlZCIKCiVjb25maWd1cmUgXAolaWYgISV7d2l0aF9zaGFyZWR9CgktLWRpc2FibGUtc2hhcmVkIFwKJWVuZGlmCiVpZiAle3dpdGhfaXB2Nn0KCS0tZW5hYmxlLWlwdjYgXAolZW5kaWYKJWlmICV7d2l0aF9zbm1wfQoJLS1lbmFibGUtc25tcCBcCiVlbmRpZgolaWYgJXt3aXRoX211bHRpcGF0aH0KCS0tZW5hYmxlLW11bHRpcGF0aD0le3dpdGhfbXVsdGlwYXRofSBcCiVlbmRpZgolaWYgJXt3aXRoX3RjcF96ZWJyYX0KCS0tZW5hYmxlLXRjcC16ZWJyYSBcCiVlbmRpZgolaWYgJXt3aXRoX25zc2F9CgktLWVuYWJsZS1uc3NhIFwKJWVuZGlmCiVpZiAle3dpdGhfb3BhcXVlX2xzYX0KCS0tZW5hYmxlLW9wYXF1ZS1sc2EgXAolZW5kaWYKJWlmICV7d2l0aF9vc3BmX3RlfQoJLS1lbmFibGUtb3NwZi10ZSBcCiVlbmRpZgolaWYgJXt3aXRoX3Z0eXNofQoJLS1lbmFibGUtdnR5c2ggXAolZW5kaWYKJWlmICV7d2l0aF9vc3BmY2xpZW50fQoJLS1lbmFibGUtb3NwZmNsaWVudD15ZXMgXAolZWxzZQoJLS1lbmFibGUtb3NwZmNsaWVudD1ub1wKJWVuZGlmCiVpZiAle3dpdGhfb3NwZmFwaX0KCS0tZW5hYmxlLW9zcGZhcGk9eWVzIFwKJWVsc2UKCS0tZW5hYmxlLW9zcGZhcGk9bm8gXAolZW5kaWYKJWlmICV7d2l0aF9pcmRwfQoJLS1lbmFibGUtaXJkcD15ZXMgXAolZWxzZQoJLS1lbmFibGUtaXJkcD1ubyBcCiVlbmRpZgolaWYgJXt3aXRoX3J0YWR2fQoJLS1lbmFibGUtcnRhZHY9eWVzIFwKJWVsc2UKCS0tZW5hYmxlLXJ0YWR2PW5vIFwKJWVuZGlmCiVpZiAle3dpdGhfaXNpc2R9CgktLWVuYWJsZS1pc2lzZCBcCiVlbHNlCgktLWRpc2FibGUtaXNpc2QgXAolZW5kaWYKJWlmICV7d2l0aF9wYW19CgktLXdpdGgtbGlicGFtIFwKJWVuZGlmCiVpZiAlcXVhZ2dhX3VzZXIKCS0tZW5hYmxlLXVzZXI9JXF1YWdnYV91c2VyIFwKCS0tZW5hYmxlLWdyb3VwPSVxdWFnZ2FfdXNlciBcCiVlbmRpZgolaWYgJXZ0eV9ncm91cAoJLS1lbmFibGUtdnR5LWdyb3VwPSV2dHlfZ3JvdXAgXAolZW5kaWYKLS1lbmFibGUtbmV0bGluayAtLWVuYWJsZS1nY2MtcmR5bmFtaWMKCm1ha2UgJXs/X3NtcF9tZmxhZ3N9IE1BS0VJTkZPPSJtYWtlaW5mbyAtLW5vLXNwbGl0IgoKcHVzaGQgZG9jCnRleGkyaHRtbCAtbnVtYmVyIHF1YWdnYS50ZXhpCnBvcGQKCiVpbnN0YWxsCnJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKCmluc3RhbGwgLWQgJFJQTV9CVUlMRF9ST09UL2V0Yy97cmMuZC9pbml0LmQsc3lzY29uZmlnLGxvZ3JvdGF0ZS5kLHBhbS5kfSBcCgkkUlBNX0JVSUxEX1JPT1QvdmFyL2xvZy9xdWFnZ2EgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0KCm1ha2UgaW5zdGFsbCBcCglERVNURElSPSRSUE1fQlVJTERfUk9PVAoKIyBSZW1vdmUgdGhpcyBmaWxlLCBhcyBpdCBpcyB1bmluc3RhbGxlZCBhbmQgY2F1c2VzIGVycm9ycyB3aGVuIGJ1aWxkaW5nIG9uIFJIOQpybSAtcmYgJFJQTV9CVUlMRF9ST09UL3Vzci9zaGFyZS9pbmZvL2RpcgoKIyBpbnN0YWxsIGV0YyBzb3VyY2VzCmZvciBkYWVtb24gaW4gJXthbGxfZGFlbW9uc30gOyBkbwoJaWYgWyB4IiR7ZGFlbW9ufSIgIT0geCIiIF0gOyB0aGVuCgkJaW5zdGFsbCAle3plYl9yaF9zcmN9LyR7ZGFlbW9ufS5pbml0IFwKCQkJJFJQTV9CVUlMRF9ST09UL2V0Yy9yYy5kL2luaXQuZC8ke2RhZW1vbn0KCWZpCmRvbmUKaW5zdGFsbCAtbTY0NCAle3plYl9yaF9zcmN9LyV7cXVhZ2dhX3BhbV9zb3VyY2V9IFwKCSRSUE1fQlVJTERfUk9PVC9ldGMvcGFtLmQvcXVhZ2dhCmluc3RhbGwgLW02NDQgJXt6ZWJfcmhfc3JjfS9xdWFnZ2EubG9ncm90YXRlIFwKCSRSUE1fQlVJTERfUk9PVC9ldGMvbG9ncm90YXRlLmQvcXVhZ2dhCmluc3RhbGwgLW02NDQgJXt6ZWJfcmhfc3JjfS9xdWFnZ2Euc3lzY29uZmlnIFwKCSRSUE1fQlVJTERfUk9PVC9ldGMvc3lzY29uZmlnL3F1YWdnYQppbnN0YWxsIC1kIC1tNzUwICAkUlBNX0JVSUxEX1JPT1QvdmFyL3J1bi9xdWFnZ2EKCiVwcmUKIyBhZGQgdnR5X2dyb3VwCiVpZiAldnR5X2dyb3VwCmlmIGdldGVudCBncm91cCAldnR5X2dyb3VwID4gL2Rldi9udWxsIDsgdGhlbiA6IDsgZWxzZSBcCiAvdXNyL3NiaW4vZ3JvdXBhZGQgLXIgJXZ0eV9ncm91cCA+IC9kZXYvbnVsbCB8fCA6IDsgZmkKJWVuZGlmCgojIGFkZCBxdWFnZ2EgdXNlciBhbmQgZ3JvdXAKJWlmICVxdWFnZ2FfdXNlcgojIEVuc3VyZSB0aGF0IHF1YWdnYV9naWQgZ2V0cyBjb3JyZWN0bHkgYWxsb2NhdGVkCmlmIGdldGVudCBncm91cCAlcXVhZ2dhX3VzZXIgPi9kZXYvbnVsbDsgdGhlbiA6IDsgZWxzZSBcCiAvdXNyL3NiaW4vZ3JvdXBhZGQgLWcgJXF1YWdnYV9naWQgJXF1YWdnYV91c2VyID4gL2Rldi9udWxsIHx8IDogOyBcCmZpCmlmIGdldGVudCBwYXNzd2QgJXF1YWdnYV91c2VyID4vZGV2L251bGwgOyB0aGVuIDogOyBlbHNlIFwKIC91c3Ivc2Jpbi91c2VyYWRkICAtdSAlcXVhZ2dhX3VpZCAtZyAlcXVhZ2dhX2dpZCBcCiAgLU0gLXIgLXMgL3NiaW4vbm9sb2dpbiAtYyAiUXVhZ2dhIHJvdXRpbmcgc3VpdGUiIFwKICAtZCAlX2xvY2Fsc3RhdGVkaXIgJXF1YWdnYV91c2VyIDI+IC9kZXYvbnVsbCB8fCA6IDsgXApmaQolZW5kaWYKCiVwb3N0CiMgemVicmFfc3BlY19hZGRfc2VydmljZSA8c2VydmljZSBuYW1lPiA8cG9ydC9wcm90bz4gPGNvbW1lbnQ+CiMgZS5nLiB6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIHplYnJhc3J2IDI2MDAvdGNwICJ6ZWJyYSBzZXJ2aWNlIgoKemVicmFfc3BlY19hZGRfc2VydmljZSAoKQp7CiAgIyBBZGQgcG9ydCAvZXRjL3NlcnZpY2VzIGVudHJ5IGlmIGl0IGlzbid0IGFscmVhZHkgdGhlcmUgCiAgaWYgWyAtZiAvZXRjL3NlcnZpY2VzIF0gJiYgXAogICAgICAhICVfX3NlZCAtZSAncy8jLiokLy8nIC9ldGMvc2VydmljZXMgfCAlX19ncmVwIC13cSAkMSA7IHRoZW4KICAgIGVjaG8gIiQxCQkkMgkJCSMgJDMiICA+PiAvZXRjL3NlcnZpY2VzCiAgZmkKfQoKemVicmFfc3BlY19hZGRfc2VydmljZSB6ZWJyYXNydiAyNjAwL3RjcCAiemVicmEgc2VydmljZSIKemVicmFfc3BlY19hZGRfc2VydmljZSB6ZWJyYSAgICAyNjAxL3RjcCAiemVicmEgdnR5Igp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIHJpcGQgICAgIDI2MDIvdGNwICJSSVBkIHZ0eSIKJWlmICV7d2l0aF9pcHY2fQp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIHJpcG5nZCAgIDI2MDMvdGNwICJSSVBuZ2QgdnR5IgolZW5kaWYKemVicmFfc3BlY19hZGRfc2VydmljZSBvc3BmZCAgICAyNjA0L3RjcCAiT1NQRmQgdnR5Igp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIGJncGQgICAgIDI2MDUvdGNwICJCR1BkIHZ0eSIKJWlmICV7d2l0aF9pcHY2fQp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIG9zcGY2ZCAgIDI2MDYvdGNwICJPU1BGNmQgdnR5IgolZW5kaWYKJWlmICV7d2l0aF9vc3BmYXBpfQp6ZWJyYV9zcGVjX2FkZF9zZXJ2aWNlIG9zcGZhcGkgIDI2MDcvdGNwICJPU1BGLUFQSSIKJWVuZGlmCiVpZiAle3dpdGhfaXNpc2R9CnplYnJhX3NwZWNfYWRkX3NlcnZpY2UgaXNpc2QgICAgMjYwOC90Y3AgIklTSVNkIHZ0eSIKJWVuZGlmCgpmb3IgZGFlbW9uIGluICVkYWVtb25fbGlzdCA7IGRvCgkvc2Jpbi9jaGtjb25maWcgLS1hZGQgJHtkYWVtb259CmRvbmUKCi9zYmluL2luc3RhbGwtaW5mbyAle19pbmZvZGlyfS9xdWFnZ2EuaW5mby5neiAle19pbmZvZGlyfS9kaXIKCiMgQ3JlYXRlIGR1bW15IGZpbGVzIGlmIHRoZXkgZG9uJ3QgZXhpc3Qgc28gYmFzaWMgZnVuY3Rpb25zIGNhbiBiZSB1c2VkLgppZiBbICEgLWUgJXtfc3lzY29uZmRpcn0vemVicmEuY29uZiBdOyB0aGVuCgllY2hvICJob3N0bmFtZSBgaG9zdG5hbWVgIiA+ICV7X3N5c2NvbmZkaXJ9L3plYnJhLmNvbmYKJWlmICV7cXVhZ2dhX3VzZXJ9CgljaG93biAlcXVhZ2dhX3VzZXI6JXF1YWdnYV91c2VyICV7X3N5c2NvbmZkaXJ9L3plYnJhLmNvbmYKJWVuZGlmCgljaG1vZCA2NDAgJXtfc3lzY29uZmRpcn0vemVicmEuY29uZgpmaQppZiBbICEgLWUgJXtfc3lzY29uZmRpcn0vdnR5c2guY29uZiBdOyB0aGVuCgl0b3VjaCAle19zeXNjb25mZGlyfS92dHlzaC5jb25mCgljaG1vZCA2NDAgJXtfc3lzY29uZmRpcn0vdnR5c2guY29uZgpmaQoKJXBvc3R1bgppZiBbICIkMSIgLWdlIDEgXTsgdGhlbgoJIyBGaW5kIG91dCB3aGljaCBkYWVtb25zIG5lZWQgdG8gYmUgcmVzdGFydGVkLgoJZm9yIGRhZW1vbiBpbiAlYWxsX2RhZW1vbnMgOyBkbwoJCWlmIFsgLWYgL3Zhci9sb2NrL3N1YnN5cy8kZGFlbW9uIF07IHRoZW4KCQkJZXZhbCByZXN0YXJ0XyRkYWVtb249eWVzCgkJZWxzZQoJCQlldmFsIHJlc3RhcnRfJGRhZW1vbj1ubwoJCWZpCglkb25lCgkjIFJlbmFtZSByZXN0YXJ0IGZsYWdzIGZvciBkYWVtb25zIGhhbmRsZWQgc3BlY2lhbGx5LgoJcnVubmluZ196ZWJyYT0iJHJlc3RhcnRfemVicmEiCglyZXN0YXJ0X3plYnJhPW5vCglydW5uaW5nX3dhdGNocXVhZ2dhPSIkcmVzdGFydF93YXRjaHF1YWdnYSIKCXJlc3RhcnRfd2F0Y2hxdWFnZ2E9bm8KCSMgU3RvcCB3YXRjaHF1YWdnYSBmaXJzdC4KCVsgIiRydW5uaW5nX3dhdGNocXVhZ2dhIiA9IHllcyBdICYmIFwKCQkvZXRjL3JjLmQvaW5pdC5kL3dhdGNocXVhZ2dhIHN0b3AgPi9kZXYvbnVsbCAyPiYxCgkjIFN0b3AgYWxsIGRhZW1vbnMgb3RoZXIgdGhhbiB6ZWJyYSBhbmQgd2F0Y2hxdWFnZ2EuCglmb3IgZGFlbW9uIGluICVhbGxfZGFlbW9ucyA7IGRvCgkJZXZhbCByZXN0YXJ0PVwkcmVzdGFydF8ke2RhZW1vbn0KCQlbICIkcmVzdGFydCIgPSB5ZXMgXSAmJiBcCgkJCS9ldGMvcmMuZC9pbml0LmQvJGRhZW1vbiBzdG9wID4vZGV2L251bGwgMj4mMQoJZG9uZQoJIyBSZXN0YXJ0IHplYnJhLgoJWyAiJHJ1bm5pbmdfemVicmEiID0geWVzIF0gJiYgXAoJCS9ldGMvcmMuZC9pbml0LmQvemVicmEgcmVzdGFydCA+L2Rldi9udWxsIDI+JjEKCSMgU3RhcnQgYWxsIGRhZW1vbnMgb3RoZXIgdGhhbiB6ZWJyYSBhbmQgd2F0Y2hxdWFnZ2EuCglmb3IgZGFlbW9uIGluICVhbGxfZGFlbW9ucyA7IGRvCgkJZXZhbCByZXN0YXJ0PVwkcmVzdGFydF8ke2RhZW1vbn0KCQlbICIkcmVzdGFydCIgPSB5ZXMgXSAmJiBcCgkJCS9ldGMvcmMuZC9pbml0LmQvJGRhZW1vbiBzdGFydCA+L2Rldi9udWxsIDI+JjEKCWRvbmUKCSMgU3RhcnQgd2F0Y2hxdWFnZ2EgbGFzdC4KCSMgQXZvaWQgcG9zdHVuIHNjcmlwdGxldCBlcnJvciBpZiB3YXRjaHF1YWdnYSBpcyBub3QgcnVubmluZy4gCglbICIkcnVubmluZ193YXRjaHF1YWdnYSIgPSB5ZXMgXSAmJiBcCgkJL2V0Yy9yYy5kL2luaXQuZC93YXRjaHF1YWdnYSBzdGFydCA+L2Rldi9udWxsIDI+JjEgfHwgOgpmaQovc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgJXtfaW5mb2Rpcn0vcXVhZ2dhLmluZm8uZ3ogJXtfaW5mb2Rpcn0vZGlyCgolcHJldW4KaWYgWyAiJDEiID0gIjAiIF07IHRoZW4KCWZvciBkYWVtb24gaW4gJWFsbF9kYWVtb25zIDsgZG8KCQkvZXRjL3JjLmQvaW5pdC5kLyR7ZGFlbW9ufSBzdG9wICA+L2Rldi9udWxsIDI+JjEKCQkvc2Jpbi9jaGtjb25maWcgLS1kZWwgJHtkYWVtb259Cglkb25lCgkvc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgJXtfaW5mb2Rpcn0vcXVhZ2dhLmluZm8uZ3ogJXtfaW5mb2Rpcn0vZGlyCmZpCgolY2xlYW4KJWlmICEle2tlZXBfYnVpbGR9CnJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKJWVuZGlmCgolZmlsZXMKJWRlZmF0dHIoLSxyb290LHJvb3QpCiVkb2MgKi8qLnNhbXBsZSogQVVUSE9SUyBDT1BZSU5HCiVkb2MgZG9jL3F1YWdnYS5odG1sCiVkb2MgZG9jL21wbHMKJWRvYyBDaGFuZ2VMb2cgSU5TVEFMTCBORVdTIFJFQURNRSBSRVBPUlRJTkctQlVHUyBTRVJWSUNFUyBUT0RPCiVpZiAle3F1YWdnYV91c2VyfQolZGlyICVhdHRyKDc1MSwlcXVhZ2dhX3VzZXIsJXF1YWdnYV91c2VyKSAle19zeXNjb25mZGlyfQolZGlyICVhdHRyKDc1MCwlcXVhZ2dhX3VzZXIsJXF1YWdnYV91c2VyKSAvdmFyL2xvZy9xdWFnZ2EgCiVkaXIgJWF0dHIoNzUxLCVxdWFnZ2FfdXNlciwlcXVhZ2dhX3VzZXIpIC92YXIvcnVuL3F1YWdnYQolZWxzZQolZGlyICVhdHRyKDc1MCxyb290LHJvb3QpICV7X3N5c2NvbmZkaXJ9CiVkaXIgJWF0dHIoNzUwLHJvb3Qscm9vdCkgL3Zhci9sb2cvcXVhZ2dhCiVkaXIgJWF0dHIoNzU1LHJvb3Qscm9vdCkgL3Vzci9zaGFyZS9pbmZvCiVkaXIgJWF0dHIoNzUwLHJvb3Qscm9vdCkgL3Zhci9ydW4vcXVhZ2dhCiVlbmRpZgolaWYgJXt2dHlfZ3JvdXB9CiVhdHRyKDc1MCwlcXVhZ2dhX3VzZXIsJXZ0eV9ncm91cCkgJXtfc3lzY29uZmRpcn0vdnR5c2guY29uZi5zYW1wbGUKJWVuZGlmCiV7X2luZm9kaXJ9LyppbmZvKgole19tYW5kaXJ9L21hbiovKgole19zYmluZGlyfS96ZWJyYQole19zYmluZGlyfS9vc3BmZAole19zYmluZGlyfS9yaXBkCiV7X3NiaW5kaXJ9L2JncGQKJXtfc2JpbmRpcn0vd2F0Y2hxdWFnZ2EKJWlmICV7d2l0aF9pcHY2fQole19zYmluZGlyfS9yaXBuZ2QKJXtfc2JpbmRpcn0vb3NwZjZkCiVlbmRpZgolaWYgJXt3aXRoX2lzaXNkfQole19zYmluZGlyfS9pc2lzZAolZW5kaWYKJWRpciAlYXR0cig3NTUscm9vdCxyb290KSAle19saWJkaXJ9CiVpZiAle3dpdGhfc2hhcmVkfQolZGlyICV7X2xpYmRpcn0KJXtfbGliZGlyfS9saWIqLnNvCiV7X2xpYmRpcn0vbGliKi5zby4qCiVlbmRpZgolaWYgJXt3aXRoX3Z0eXNofQole19iaW5kaXJ9LyoKJWVuZGlmCiVjb25maWcgL2V0Yy9xdWFnZ2EvWyF2XSoKJWNvbmZpZyAvZXRjL3JjLmQvaW5pdC5kLyoKJWNvbmZpZyhub3JlcGxhY2UpIC9ldGMvc3lzY29uZmlnL3F1YWdnYQolY29uZmlnKG5vcmVwbGFjZSkgL2V0Yy9wYW0uZC9xdWFnZ2EKJWNvbmZpZyhub3JlcGxhY2UpICVhdHRyKDY0MCxyb290LHJvb3QpIC9ldGMvbG9ncm90YXRlLmQvKgoKJWZpbGVzIGNvbnRyaWIKJWRlZmF0dHIoLSxyb290LHJvb3QpCiVkb2MgdG9vbHMKCiVmaWxlcyBkZXZlbAolZGVmYXR0cigtLHJvb3Qscm9vdCkKJWlmICV7d2l0aF9vc3BmY2xpZW50fQole19zYmluZGlyfS9vc3BmY2xpZW50CiVlbmRpZgole19saWJkaXJ9LyouYQole19saWJkaXJ9LyoubGEKJWRpciAlYXR0cig3NTUscm9vdCxyb290KSAle19pbmNsdWRlZGlyfS8le25hbWV9CiV7X2luY2x1ZGVkaXJ9LyVuYW1lLyouaAolZGlyICVhdHRyKDc1NSxyb290LHJvb3QpICV7X2luY2x1ZGVkaXJ9LyV7bmFtZX0vb3NwZmQKJXtfaW5jbHVkZWRpcn0vJW5hbWUvb3NwZmQvKi5oCiVpZiAle3dpdGhfb3NwZmFwaX0KJWRpciAlYXR0cig3NTUscm9vdCxyb290KSAle19pbmNsdWRlZGlyfS8le25hbWV9L29zcGZhcGkKJXtfaW5jbHVkZWRpcn0vJW5hbWUvb3NwZmFwaS8qLmgKJWVuZGlmCgolY2hhbmdlbG9nCiogVGh1IFNlcCAxMiAyMDA1IFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSBTdGVhbCBzb21lIGNoYW5nZXMgZnJvbSBGZWRvcmEgc3BlYyBmaWxlOgotIEFkZCB3aXRoX3J0YWR2IHZhcmlhYmxlCi0gVGVzdCBmb3IgZ3JvdXBzL3VzZXJzIHdpdGggZ2V0ZW50IGJlZm9yZSBncm91cC91c2VyIGFkZGluZwotIFJlYWRsaW5lIG5lZWQgbm90IGJlIGFuIGV4cGxpY2l0IHByZXJlcXVpc2l0ZQotIGluc3RhbGwtaW5mbyBkZWxldGUgc2hvdWxkIGJlIHBvc3R1biwgbm90IHByZXVuCgoqIFdlZCBKYW4gMTIgMjAwNSBBbmRyZXcgSi4gU2Nob3JyIDxhanNjaG9yckBhbHVtbmkucHJpbmNldG9uLmVkdT4KLSBvbiBwYWNrYWdlIHVwZ3JhZGUsIGltcGxlbWVudCBjYXJlZnVsLCBwaGFzZWQgcmVzdGFydCBsb2dpYwotIHVzZSBnY2MgLXJkeW5hbWljIGZsYWcgd2hlbiBsaW5raW5nIGZvciBiZXR0ZXIgYmFja3RyYWNlcwoKKiBXZWQgRGVjIDIyIDIwMDQgQW5kcmV3IEouIFNjaG9yciA8YWpzY2hvcnJAYWx1bW5pLnByaW5jZXRvbi5lZHU+Ci0gZGFlbW9udjZfbGlzdCBzaG91bGQgY29udGFpbiBvbmx5IElQdjYgZGFlbW9ucwoKKiBXZWQgRGVjIDIyIDIwMDQgQW5kcmV3IEouIFNjaG9yciA8YWpzY2hvcnJAYWx1bW5pLnByaW5jZXRvbi5lZHU+Ci0gd2F0Y2hxdWFnZ2EgYWRkZWQKLSBvbiB1cGdyYWRlLCBhbGwgZGFlbW9ucyBzaG91bGQgYmUgY29uZHJlc3RhcnQnZWQKLSBvbiByZW1vdmFsLCBhbGwgZGFlbW9ucyBzaG91bGQgYmUgc3RvcHBlZAoKKiBNb24gTm92IDA4IDIwMDQgUGF1bCBKYWttYSA8cGF1bEBkaXNob25lLnN0PgotIFVzZSBtYWtlaW5mbyAtLWh0bWwgdG8gZ2VuZXJhdGUgcXVhZ2dhLmh0bWwKCiogU3VuIE5vdiAwNyAyMDA0IFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSBGaXggd2l0aF9pcHY2IHNldCB0byAwIGJ1aWxkCgoqIFNhdCBPY3QgMjMgMjAwNCBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gVXBkYXRlIHRvIDAuOTcuMgoKKiBTYXQgT2N0IDIzIDIwMDQgQW5kcmV3IEouIFNjaG9yciA8YXNjaG9yckB0ZWxlbWV0cnktaW52ZXN0bWVudHMuY29tPgotIE1ha2UgZGlyZWN0b3JpZXMgYmUgb3duZWQgYnkgdGhlIHBhY2thZ2VzIGNvbmNlcm5lZAotIFVwZGF0ZSBsb2dyb3RhdGUgc2NyaXB0cyB0byB1c2UgY29ycmVjdCBwYXRoIHRvIGtpbGxhbGwgYW5kIHVzZSBwaWQgZmlsZXMKCiogRnJpIE9jdCAwOCAyMDA0IFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSBVcGRhdGUgdG8gMC45Ny4wCgoqIFdlZCBTZXAgMTUgMjAwNCBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gYnVpbGQgc25tcCBzdXBwb3J0IGJ5IGRlZmF1bHQKLSBidWlsZCBpcmRwIHN1cHBvcnQKLSBidWlsZCB3aXRoIHNoYXJlZCBsaWJzCi0gZGV2ZWwgc3VicGFja2FnZSBmb3IgYXJjaGl2ZXMgYW5kIGhlYWRlcnMKCiogVGh1IEphbiAwOCAyMDA0IFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSB1cGRhdGVkIHN5c2NvbmZpZyBmaWxlcyB0byBzcGVjaWZ5IGxvY2FsIGRpcgotIGFkZGVkIG9zcGZfZHVtcC5jIGNyYXNoIHF1aWNrIGZpeCBwYXRjaAotIGFkZGVkIG9zcGZkIHBlcnNpc3RlbnQgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gcGF0Y2gKCiogVHVlIERlYyAzMCAyMDAzIFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSBzeW5jIHRvIENWUwotIGludGVncmF0ZSBSSCBzeXNjb25maWcgcGF0Y2ggdG8gc3BlY2lmeSBkYWVtb24gb3B0aW9ucyAoUkgpCi0gZGVmYXVsdCB0byBoYXZlIHZ0eSBsaXN0ZW4gb25seSB0byAxMjcuMSAoUkgpCi0gYWRkIHVzZXIgd2l0aCBmaXhlZCBVSUQvR0lEIChSSCkKLSBjcmVhdGUgdXNlciB3aXRoIHNoZWxsIC9zYmluL25vbG9naW4gcmF0aGVyIHRoYW4gL2Jpbi9mYWxzZSAoUkgpCi0gc3RvcCBkYWVtb25zIG9uIHVuaW5zdGFsbCAoUkgpCi0gZGVsZXRlIGluZm8gZmlsZSBvbiAlcHJldW4sIG5vdCAlcG9zdHVuIHRvIGF2b2lkIGRlbGV0aW9uIG9uIHVwZ3JhZGUuIChSSCkKLSBpc2lzZCBhZGRlZAotIGNsZWFudXAgdGFza3MgY2FycmllZCBvdXQgZm9yIGV2ZXJ5IGRhZW1vbgoKKiBTdW4gTm92IDIgMjAwMyBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gRml4IC1kZXZlbCBwYWNrYWdlIHRvIGluY2x1ZGUgYWxsIGZpbGVzCi0gU3luYyB0byAwLjk2LjQKCiogVHVlIEF1ZyAxMiAyMDAzIFBhdWwgSmFrbWEgPHBhdWxAZGlzaG9uZS5zdD4KLSBSZW5hbWVkIHRvIFF1YWdnYQotIFN5bmMgdG8gUXVhZ2dhIHJlbGVhc2UgMC45NgoKKiBUdWUgTWFyIDIwIDIwMDMgUGF1bCBKYWttYSA8cGF1bEBkaXNob25lLnN0PgotIHplYnJhIHByaXZpbGVnZXMgc3VwcG9ydAoKKiBNb24gTWFyIDE4IDIwMDMgUGF1bCBKYWttYSA8cGF1bEBkaXNob25lLnN0PgotIEZpeCBtZW0gbGVhayBpbiAnc2hvdyB0aHJlYWQgY3B1JwotIFJhbHBoIEtlbGxlcidzIE9TUEYtQVBJCi0gQW1pcjogRml4IGNvbmZpZ3VyZS5hYyBmb3IgbmV0LXNubXAKCiogU2F0IE1hciAxIDIwMDMgUGF1bCBKYWttYSA8cGF1bEBkaXNob25lLnN0PgotIG9zcGZkIElPUyBwcmVmaXggdG8gaW50ZXJmYWNlIG1hdGNoaW5nIGZvciAnbmV0d29yaycgc3RhdGVtZW50Ci0gdGVtcG9yYXJ5IGZpeCBmb3IgUHRQIGFuZCBJUHY2Ci0gc3luYyB0byB6ZWJyYS5vcmcgQ1ZTCgoqIE1vbiBKYW4gMjAgMjAwMyBQYXVsIEpha21hIDxwYXVsQGRpc2hvbmUuc3Q+Ci0gdXBkYXRlIHRvIGxhdGVzdCBjdnMKLSBZb24ncyAic2hvdyB0aHJlYWQgY3B1IiBwYXRjaCAtIDE3MjE3Ci0gd2FsayB1cCB0cmVlIC0gMTcyMTgKLSBvc3BmZCBOU1NBIGZpeGVzIC0gMTY2ODEKLSBvc3BmZCBuc20gZml4ZXMgLSAxNjgyNAotIG9zcGZkIE9MU0EgZml4ZXMgYW5kIG5ldyBmZWF0dXJlIC0gMTY4MjMgCi0gS0FNRSBhbmQgaWZpbmRleCBmaXhlcyAtIDE2NTI1Ci0gc3BlYyBmaWxlIGNoYW5nZXMgdG8gYWxsb3cgcmVkaGF0IGZpbGVzIHRvIGJlIGluIHRyZWUKCiogU2F0IERlYyAyOCAyMDAyIEFsZXhhbmRlciBIb29nZXJodWlzIDxhbGV4aEBpaGF0ZW50LmNvbT4KLSBBZGRlZCBjb25kaXRpb25hbHMgZm9yIGJ1aWxkaW5nIHdpdGgob3V0KSBJUHY2LCB2dHlzaCwgUklQLCBCR1AKLSBGaXhlZCB1cCBzb21lIGJ1aWxkIHJlcXVpcmVtZW50cyAocGF0Y2gpCi0gQWRkZWQgY29uZGl0aW9uYWwgYnVpbGQgcmVxdWlyZW1lbnRzIGZvciB2dHlzaCAvIHNubXAKLSBBZGRlZCBjb25kaXRpb25hbCB0byAlZmlsZXMgZm9yICVfYmluZGlyIGRlcGVuZGluZyBvbiB2dHlzaAoKKiBNb24gTm92IDExIDIwMDIgUGF1bCBKYWttYSA8cGF1bGpAYWxwaHlyYS5pZT4KLSB1cGRhdGUgdG8gbGF0ZXN0IENWUwotIGFkZCBHcmVnIFRyb3hlbCdzIG1kNSBidWZmZXIgY29weS9kdXAgZml4Ci0gYWRkIFJJUHYxIGZpeAotIGFkZCBGcmFuaydzIG11bHRpY2FzdCBmbGFnIGZpeAoKKiBXZWQgT2N0IDA5IDIwMDIgUGF1bCBKYWttYSA8cGF1bGpAYWxwaHlyYS5pZT4KLSB1cGRhdGUgdG8gbGF0ZXN0IENWUwotIHRpbWVzdGFtcGVkIGNyeXB0X3NlcW51bSBwYXRjaAotIG9pLT5vbl93cml0ZV9xIGZpeAoKKiBNb24gU2VwIDMwIDIwMDIgUGF1bCBKYWttYSA8cGF1bGpAYWxwaHlyYS5pZT4KLSB1cGRhdGUgdG8gbGF0ZXN0IENWUwotIGFkZCB2dHlzaCAnd3JpdGUtY29uZmlnIChpbnRlZ3JhdGVkfGRhZW1vbiknIHBhdGNoCi0gYWx3YXlzICdtYWtlIHJlYnVpbGQnIGluIHZ0eXNoLyB0byBjYXRjaCBuZXcgY29tbWFuZHMKCiogRnJpIFNlcCAxMyAyMDAyIFBhdWwgSmFrbWEgPHBhdWxqQGFscGh5cmEuaWU+Ci0gdXBkYXRlIHRvIDAuOTNiCgoqIFdlZCBTZXAgMTEgMjAwMiBQYXVsIEpha21hIDxwYXVsakBhbHBoeXJhLmllPgotIHVwZGF0ZSB0byBsYXRlc3QgQ1ZTCi0gYWRkICIvc2Jpbi9pcCByb3V0ZSBmbHVzaCBwcm90byB6ZWJyYSIgdG8gemVicmEgUkggaW5pdCBvbiBzdGFydHVwCgoqIFNhdCBBdWcgMjQgMjAwMiBQYXVsIEpha21hIDxwYXVsakBhbHBoeXJhLmllPgotIHVwZGF0ZSB0byBjdXJyZW50IENWUwotIGFkZCBPU1BGIHBvaW50IHRvIG11bHRpcG9pbnQgcGF0Y2gKLSBhZGQgT1NQRiBidWdmaXhlcwotIGFkZCBCR1AgaGFzaCBvcHRpbWlzYXRpb24gcGF0Y2gKCiogRnJpIEp1biAxNCAyMDAyIFBhdWwgSmFrbWEgPHBhdWxqQGFscGh5cmEuaWU+Ci0gdXBkYXRlIHRvIDAuOTMtcHJlMSAvIENWUwotIGFkZCBsaW5rIHN0YXRlIGRldGVjdGlvbiBzdXBwb3J0Ci0gYWRkIGdlbmVyaWMgUHRQIGFuZCBSRkMzMDIxIHN1cHBvcnQKLSB2YXJpb3VzIGJ1ZyBmaXhlcwoKKiBUaHUgQXVnIDA5IDIwMDEgRWxsaW90IExlZSA8c29wd2l0aEByZWRoYXQuY29tPiAwLjkxYS02Ci0gRml4IGJ1ZyAjNTEzMzYKCiogV2VkIEF1ZyAgMSAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3L4ZCA8dGVnQHJlZGhhdC5jb20+IDAuOTFhLTUKLSBVc2UgZ2VuZXJpYyBpbml0c2NyaXB0IHN0cmluZ3MgaW5zdGVhZCBvZiBpbml0c2NyaXB0IHNwZWNpZmljCiAgKCAiU3RhcnRpbmcgZm9vOiAiIC0+ICJTdGFydGluZyAkcHJvZzoiICkKCiogRnJpIEp1bCAyNyAyMDAxIEVsbGlvdCBMZWUgPHNvcHdpdGhAcmVkaGF0LmNvbT4gMC45MWEtNAotIEJ1bXAgdGhlIHJlbGVhc2Ugd2hlbiByZWJ1aWxkaW5nIGludG8gdGhlIGRpc3QuCgoqIFR1ZSBGZWIgIDYgMjAwMSBUaW0gUG93ZXJzIDx0aW1wQHJlZGhhdC5jb20+Ci0gYnVpbHQgZm9yIFBvd2VydG9vbHMKCiogU3VuIEZlYiAgNCAyMDAxIFBla2thIFNhdm9sYSA8cGVra2FzQG5ldGNvcmUuZmk+IAotIEhhY2tlZCB1cCBmcm9tIFBMRCBMaW51eCAwLjkwLTEsIE1hbmRyYWtlIDAuOTAtMW1kayBhbmQgb25lIGZyb20gemVicmEub3JnLgotIFVwZGF0ZSB0byAwLjkxYQotIFZlcnkgaGVhdnkgbW9kaWZpY2F0aW9ucyB0byBpbml0LmQvKiwgLnNwZWMsIHBhbSwgaTE4biwgbG9ncm90YXRlLCBldGMuCi0gU2hvdWxkIGJlIHF1aXRlIFJlZCBIYXQnaXNxdWUgbm93Lgo=