IyEvYmluL2Jhc2gKIyBXSU5FIEluc3RhbGxhdGlvbiBzY3JpcHQKIyBDYW4gZG8gYWxtb3N0IGV2ZXJ5dGhpbmcgZnJvbSBjb21waWxpbmcgdG8gY29uZmlndXJpbmcuLi4KIwojIENvcHlyaWdodCAxOTk5IE92ZSBL5XZlbgojCiMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgojIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwojIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiMKCiMtLS0gZGVmYXVsdHMgKGNoYW5nZSB0aGVzZSBpZiB5b3UgYXJlIGEgcGFja2FnZXIpCkNPTkZBUkdTPSIiICAgICAgICAgICAgICAgICAgICMgY29uZmlndXJlIGFyZ3MsIGUuZy4gLS1wcmVmaXg9L3VzcgpwcmVmaXg9L3Vzci9sb2NhbCAgICAgICAgICAgICAjIGluc3RhbGxhdGlvbiBwcmVmaXgKYmluZGlyPSRwcmVmaXgvYmluICAgICAgICAgICAgIyB3aGVyZSB3aW5lbGliIGFwcHMgd2lsbCBiZSAob3IgYXJlKSBpbnN0YWxsZWQKbGliZGlyPSRwcmVmaXgvbGliICAgICAgICAgICAgIyB3aGVyZSBsaWJ3aW5lLnNvIHdpbGwgYmUgKG9yIGlzKSBpbnN0YWxsZWQKQklORElTVD1ubyAgICAgICAgICAgICAgICAgICAgIyB3aGV0aGVyIGNhbGxlZCBmcm9tIGEgYmluYXJ5IHBhY2thZ2UgY29uZmlnIHNjcmlwdAoKIyBmdW5jdGlvbnMKCmZ1bmN0aW9uIHN0ZF9zbGVlcCB7CiAgc2xlZXAgMQp9CgpmdW5jdGlvbiBjb25mX3F1ZXN0aW9uIHsKICAjIHBhcmFtZXRlcnM6ICQxID0gaW1wb3J0YW5jZSwgJDIgPSBxdWVzdGlvbi1pZCwgJDMrID0gbWVzc2FnZSBsaW5lcwogICMgdGhlIGZpcnN0IHR3byBwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIGJ5IGUuZy4gZGViY29uZiBpbiBkZWJpYW4gcGFja2FnZXMKICAjIGJ1dCBoZXJlIHdlIGp1c3QgcHJpbnQgdGhlIG1lc3NhZ2UKICBzaGlmdCAyCiAgZWNobwogIGxvY2FsIExJTkU9IiQxIgogIHdoaWxlIFsgJCMgLWd0IDAgXSAmJiBzaGlmdAogIGRvIHsKICAgIGVjaG8gIiRMSU5FIgogICAgTElORT0iJDEiCiAgfQogIGRvbmUKfQoKZnVuY3Rpb24gY29uZl9yZXNldF9xdWVzdGlvbiB7CiAgIyBwYXJhbWV0ZXJzOiAkMSA9IHF1ZXN0aW9uLWlkCiAgIyB0aGlzIGlzIHVzZWQgdG8gZmx1c2ggYW55IGNhY2hlZCBhbnN3ZXJzIGFuZCAiYWxyZWFkeS1kaXNwbGF5ZWQiIGZsYWdzCiAgc2hpZnQgIyBkdW1teSBjb21tYW5kCn0KCmZ1bmN0aW9uIGNvbmZfeWVzbm9fYW5zd2VyIHsKICB1bnNldCBBTlNXRVIKICB3aGlsZSBbICIkQU5TV0VSIiAhPSAneWVzJyBdICYmIFsgIiRBTlNXRVIiICE9ICdubycgXQogIGRvIHsKICAgIGVjaG8gLW4gIiQxIgogICAgcmVhZCBBTlNXRVIKICB9CiAgZG9uZQp9CgpmdW5jdGlvbiBjb25mX3N0cmluZ19hbnN3ZXIgewogIGVjaG8gLW4gIiQxIgogIHJlYWQgQU5TV0VSCn0KCiMgc3RhcnR1cC4uLgoKZWNobyAiV0lORSBJbnN0YWxsZXIgdjAuNzUiCmVjaG8KCmlmIFsgIiRCSU5ESVNUIiA9ICdubycgXQp0aGVuIHsKCiAgaWYgISBbIC1mIGNvbmZpZ3VyZSBdCiAgdGhlbiB7CiAgICBpZiBbIC1mIC4uL2NvbmZpZ3VyZSBdCiAgICB0aGVuIHsKICAgICAgcHVzaGQgLi4KICAgIH0KICAgIGVsc2UgewogICAgICBlY2hvICJZb3UncmUgcnVubmluZyB0aGlzIGZyb20gdGhlIHdyb25nIGRpcmVjdG9yeS4iCiAgICAgIGVjaG8gIkNoYW5nZSB0byB0aGUgV2luZSBzb3VyY2UncyBtYWluIGRpcmVjdG9yeSBhbmQgdHJ5IGFnYWluLiIKICAgICAgZXhpdCAxCiAgICB9CiAgICBmaQogIH0KICBmaQoKICBpZiBbIGB3aG9hbWlgID0gJ3Jvb3QnIF0KICB0aGVuIHsKICAgIGVjaG8gIllvdSBhcmUgcnVubmluZyB3aW5laW5zdGFsbCBhcyByb290LCB0aGlzIGlzIG5vdCBhZHZpc2FibGUuIFBsZWFzZSByZXJ1biBhcyBhIHVzZXIuIgogICAgZWNobyAiQWJvcnRpbmcuIgogICAgZXhpdCAxCiAgfQogIGZpCgogIGlmIFsgISAtdyAuIF0KICB0aGVuIHsKICAgIGVjaG8gIlRoZSBzb3VyY2UgZGlyZWN0b3J5IGlzIG5vdCB3cml0YWJsZS4gWW91IHByb2JhYmx5IGV4dHJhY3RlZCB0aGUgc291cmNlcyBhcyByb290LiIKICAgIGVjaG8gIllvdSBzaG91bGQgcmVtb3ZlIHRoZSBzb3VyY2UgdHJlZSBhbmQgZXh0cmFjdCBpdCBhZ2FpbiBhcyBhIG5vcm1hbCB1c2VyLiIKICAgIGV4aXQgMQogIH0KICBmaQoKICAjIGNoZWNrIHdoZXRoZXIgUlBNIGluc3RhbGxlZCwgYW5kIGlmIGl0IGlzLCByZW1vdmUgYW55IG9sZCB3aW5lIHJwbS4KICBoYXNoIHJwbSAmPi9kZXYvbnVsbAogIFJFVD0kPwogIGlmIFsgJFJFVCAtZXEgMCBdOyB0aGVuCiAgICBpZiBbIC1uICJgcnBtIC1xaSB3aW5lIDI+L2Rldi9udWxsfGdyZXAgIl5OYW1lImAiIF07IHRoZW4KICAgICAgZWNobyAiV2FybmluZzogT2xkIFdpbmUgUlBNIGluc3RhbGwgZGV0ZWN0ZWQuIERvIHlvdSB3YW50IHRvIHJlbW92ZSBpdCBmaXJzdD8iCiAgICAgIGNvbmZfeWVzbm9fYW5zd2VyICIoeWVzL25vKSAiCiAgICAgIGlmIFsgIiRBTlNXRVIiID0gJ3llcycgXTsgdGhlbgogICAgICAgIGVjaG8gIldlIG5lZWQgdG8gcmVtb3ZlIHRoZSBycG0gYXMgcm9vdCwgcGxlYXNlIGVudGVyIHlvdXIgcm9vdCBwYXNzd29yZCIKICAgICAgICBlY2hvCiAgICAgICAgZWNobyBTdGFydGluZyB3aW5lIHJwbSByZW1vdmFsLi4uCiAgICAgICAgc3UgLWMgInJwbSAtZSB3aW5lOyBSRVQ9JD8iCiAgICAgICAgaWYgWyAkUkVUIC1lcSAwIF07IHRoZW4KICAgICAgICAgIGVjaG8gRG9uZS4KICAgICAgICBlbHNlCiAgICAgICAgICBlY2hvICJGQUlMRUQuIFByb2JhYmx5IHlvdSBhcmVuJ3QgaW5zdGFsbGluZyBhcyByb290LiIKICAgICAgICAgIGVjaG8gIkV4cGVjdCBwcm9ibGVtcyAobGlicmFyeSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBpbnN0YWxsIGV0Yy4pLiIKICAgICAgICBmaQogICAgICBlbHNlCiAgICAgICAgZWNobyAiU29ycnksIEkgd29uJ3QgaW5zdGFsbCBXaW5lIHdoZW4gYW4gcnBtIHZlcnNpb24gaXMgc3RpbGwgaW5zdGFsbGVkLiIKICAgICAgICBlY2hvICIoV2luZSBzdXBwb3J0IHN1ZmZlcmVkIGZyb20gd2F5IHRvbyBtYW55IGNvbmZsaWN0cyBiZXR3ZWVuIFJQTSIKICAgICAgICBlY2hvICJhbmQgc291cmNlIGluc3RhbGxzKSIKICAgICAgICBlY2hvICJIYXZlIGEgbmljZSBkYXkgISIKICAgICAgICBleGl0IDEKICAgICAgZmkKICAgIGZpCiAgZmkKCiAgIyBjaGVjayB3aGV0aGVyIHdpbmUgYmluYXJ5IHN0aWxsIGF2YWlsYWJsZQogIGlmIFsgLW4gImB3aGljaCB3aW5lIDI+L2Rldi9udWxsfGdyZXAgJy93aW5lJ2AiIF07IHRoZW4KICAgIGVjaG8gIldhcm5pbmcgISEgd2luZSBiaW5hcnkgKHN0aWxsKSBmb3VuZCwgd2hpY2ggbWF5IGluZGljYXRlIgogICAgZWNobyAiYSAoY29uZmxpY3RpbmcpIHByZXZpb3VzIGluc3RhbGxhdGlvbi4iCiAgICBlY2hvICJZb3UgbWlnaHQgd2FudCB0byBhYm9ydCBhbmQgdW5pbnN0YWxsIFdpbmUgZmlyc3QuIgogICAgZWNobyAiKElmIHlvdSBwcmV2aW91c2x5IHRyaWVkIHRvIGluc3RhbGwgZnJvbSBzb3VyY2UgbWFudWFsbHksICIKICAgIGVjaG8gInJ1biAnbWFrZSB1bmluc3RhbGwnIGZyb20gdGhlIHdpbmUgcm9vdCBkaXJlY3RvcnkpIgogICAgc3RkX3NsZWVwCiAgZmkKCiAgIyBydW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIGlmIG5lY2Vzc2FyeQoKICBpZiBbIC1mIGNvbmZpZy5jYWNoZSBdICYmIFsgLWYgTWFrZWZpbGUgXSAmJiBbIE1ha2VmaWxlIC1udCBjb25maWd1cmUgXQogIHRoZW4gewogICAgZWNobwogICAgZWNobyAiSSBzZWUgdGhhdCBXSU5FIGhhcyBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCwgc28gSSdsbCBza2lwIHRoYXQuIgogICAgc3RkX3NsZWVwCiAgICAjIGxvYWQgY29uZmlndXJlIHJlc3VsdHMKICAgIC4gLi9jb25maWcuY2FjaGUKICB9CiAgZWxzZSB7CiAgICBlY2hvICJSdW5uaW5nIGNvbmZpZ3VyZS4uLiIKICAgIGVjaG8KICAgIGlmICEgLi9jb25maWd1cmUgLUMgJENPTkZBUkdTIC0tcHJlZml4PSRwcmVmaXgKICAgIHRoZW4gewogICAgICBlY2hvCiAgICAgIGVjaG8gIkNvbmZpZ3VyZSBmYWlsZWQsIGFib3J0aW5nIGluc3RhbGwuIgogICAgICBybSAtZiBjb25maWcuY2FjaGUKICAgICAgZXhpdCAxCiAgICB9CiAgICBmaQogICAgIyBsb2FkIGNvbmZpZ3VyZSByZXN1bHRzCiAgICAuIC4vY29uZmlnLmNhY2hlCiAgICAjIG1ha2Ugc3VyZSBYIHdhcyBmb3VuZAogICAgZXZhbCAiJGFjX2N2X2hhdmVfeCIKICAgIGlmIFsgIiRoYXZlX3giICE9ICJ5ZXMiIF0KICAgIHRoZW4gewogICAgICBlY2hvICJJbnN0YWxsIHRoZSBYIGRldmVsb3BtZW50IGhlYWRlcnMgYW5kIHRyeSBhZ2Fpbi4iCiAgICAgIHJtIC1mIGNvbmZpZy5jYWNoZQogICAgICBleGl0IDEKICAgIH0KICAgIGZpCiAgfQogIGZpCgogICMgbm93IGRvIHRoZSBjb21waWxhdGlvbiBhbmQgaW5zdGFsbCwgd2UgbmVlZCB0byBhbHdheXMgZG8gdGhpcyBiZWNhdXNlIHdlCiAgIyBkb24ndCB3YW50IHRoZSAnbWFrZSBpbnN0YWxsJyBjb21tYW5kIHdlIG1pZ2h0IHJ1biB0byBydW4gJ21ha2UnIGFzIHJvb3QKICBpZiBbIGB3aG9hbWlgICE9ICdyb290JyBdCiAgdGhlbiB7CiAgICAjIGFzayB0aGUgdXNlciBpZiB0aGV5IHdhbnQgdG8gYnVpbGQgYW5kIGluc3RhbGwgd2luZQogICAgZWNobwogICAgZWNobyAiV2UgbmVlZCB0byBpbnN0YWxsIHdpbmUgYXMgcm9vdCB1c2VyLCBkbyB5b3Ugd2FudCB1cyB0byBidWlsZCB3aW5lLCIKICAgIGVjaG8gIidzdSByb290JyBhbmQgaW5zdGFsbCBXaW5lPyAgRW50ZXIgJ25vJyB0byBjb250aW51ZSB3aXRob3V0IGluc3RhbGxpbmciCiAgICBjb25mX3llc25vX2Fuc3dlciAiKHllcy9ubykgIgogICAgUk9PVElOU1RBTEw9IiRBTlNXRVIiCgogICAgaWYgWyAiJFJPT1RJTlNUQUxMIiA9ICJ5ZXMiIF0KICAgIHRoZW4gewogICAgICAjIHN0YXJ0IG91dCB3aXRoIHRoZSBiYXNpYyBjb21tYW5kCiAgICAgIHN1Y29tbWFuZD0ibWFrZSBpbnN0YWxsIgoKICAgICAgIyBpZiB0aGUgdXNlciBkb2Vzbid0IGhhdmUgJGxpYmRpciBpbiB0aGVpciBsZC5zby5jb25mIGFkZCB0aGlzCiAgICAgICMgdG8gb3VyIHN1Y29tbWFuZCBzdHJpbmcKICAgICAgaWYgWyAtZiAvZXRjL2xkLnNvLmNvbmYgXQogICAgICB0aGVuCiAgICAgICAgaWYgISBncmVwIC1zICIkbGliZGlyIiAvZXRjL2xkLnNvLmNvbmYgPi9kZXYvbnVsbCAyPiYxCiAgICAgICAgdGhlbiB7CiAgICAgICAgICBlY2hvCiAgICAgICAgICBlY2hvICIkbGliZGlyIGRvZXNuJ3QgZXhpc3QgaW4geW91ciAvZXRjL2xkLnNvLmNvbmYsIGl0IHdpbGwgYmUgYWRkZWQiCiAgICAgICAgICBlY2hvICJ3aGVuIHdlIHBlcmZvcm0gdGhlIGluc3RhbGwuLi4iCiAgICAgICAgICBzdWNvbW1hbmQ9IiRzdWNvbW1hbmQ7ZWNobyAkbGliZGlyPj4vZXRjL2xkLnNvLmNvbmYiCiAgICAgICAgfQogICAgICAgIGZpCiAgICAgICAgIyBydW4gbGRjb25maWcgYWx3YXlzIGp1c3QgaW4gY2FzZSBzb21lIHVwZGF0ZWQgZmlsZXMgZG9uJ3QgZ2V0IGxpbmtlZAogICAgICAgIHN1Y29tbWFuZD0iJHN1Y29tbWFuZDskYWNfY3ZfcGF0aF9MRENPTkZJRyIKICAgICAgZmkKICAgIH0KICAgIGZpICMgWyAiJFJPT1RJTlNUQUxMIiA9ICJ5ZXMiIF0KCiAgICBlY2hvCgogICAgZWNobyAiQ29tcGlsaW5nIFdJTkUuIEdyYWIgYSBsdW5jaCBvciB0d28sIHJlbnQgYSB2aWRlbywgb3Igd2hhdGV2ZXIsIgogICAgZWNobyAiaW4gdGhlIG1lYW50aW1lLi4uIgogICAgZWNobwogICAgc3RkX3NsZWVwCgogICAgIyB0cnkgdG8ganVzdCBtYWtlIHdpbmUsIGlmIHRoaXMgZmFpbHMgJ21ha2UgZGVwZW5kJyBhbmQgdHJ5IHRvIHJlbWFrZQogICAgaWYgISB7IG1ha2U7IH0KICAgIHRoZW4gewogICAgICBpZiAhIHsgbWFrZSBkZXBlbmQgJiYgbWFrZTsgfQogICAgICB0aGVuIHsKICAgICAgICBlY2hvCiAgICAgICAgZWNobyAiQ29tcGlsYXRpb24gZmFpbGVkLCBhYm9ydGluZyBpbnN0YWxsLiIKICAgICAgICBleGl0IDEKICAgICAgfQogICAgICBmaQogICAgfQogICAgZmkKCiAgICBpZiBbICIkUk9PVElOU1RBTEwiID0gInllcyIgXQogICAgdGhlbiB7CiAgICAgIGVjaG8KCiAgICAgIGVjaG8gIlBlcmZvcm1pbmcgJ21ha2UgaW5zdGFsbCcgYXMgcm9vdCB0byBpbnN0YWxsIGJpbmFyaWVzLCBlbnRlciByb290IHBhc3N3b3JkIgoKICAgICAgc3RkX3NsZWVwCgogICAgICBpZiAhIHN1IHJvb3QgLWMgIiRzdWNvbW1hbmQiCiAgICAgIHRoZW4gewogICAgICAJaWYgISBzdSByb290IC1jICIkc3Vjb21tYW5kIgogICAgICAgIHRoZW4gewogICAgICAJICAgICBlY2hvCiAgICAgICAgICAgICBlY2hvICJFaXRoZXIgeW91IGVudGVyZWQgYW4gaW5jb3JyZWN0IHBhc3N3b3JkIG9yIHdlIGZhaWxlZCB0byIKICAgICAgICAgICAgIGVjaG8gInJ1biAnJHN1Y29tbWFuZCcgY29ycmVjdGx5LiIKICAgICAgICAgICAgIGVjaG8gIklmIHlvdSBkaWRuJ3QgZW50ZXIgYW4gaW5jb3JyZWN0IHBhc3N3b3JkIHRoZW4gcGxlYXNlIgogICAgICAgICAgICAgZWNobyAicmVwb3J0IHRoaXMgZXJyb3IgYW5kIGFueSBzdGVwcyB0byBwb3NzaWJseSByZXByb2R1Y2UgaXQgdG8iCiAgICAgICAgICAgICBlY2hvICJodHRwOi8vYnVncy53aW5laHEub3JnLyIKICAgICAgICAgICAgIGVjaG8KICAgICAgICAgICAgIGVjaG8gIkluc3RhbGxhdGlvbiBmYWlsZWQsIGFib3J0aW5nLiIKICAgICAgICAgICAgIGV4aXQgMQogICAgICAgICB9CiAgICAgICAgIGZpCiAgICAgICB9CiAgICAgIGZpCgogICAgICBlY2hvCgogICAgICAjIHNlZSBpZiB3aW5lIGlzIGluc3RhbGxlZCBvbiB0aGUgdXNlcnMgc3lzdGVtLCBpZiBub3QgcHJvbXB0IHRoZW0KICAgICAgIyBhbmQgdGhlbiBleGl0CiAgICAgIGlmIFsgISBgd2hpY2ggd2luZWAgXQogICAgICB0aGVuCiAgICAgICAgZWNobyAiQ291bGQgbm90IGZpbmQgd2luZSBvbiB5b3VyIHN5c3RlbS4gIFJ1biB3aW5laW5zdGFsbCBhcyByb290IHRvIGluc3RhbGwgd2luZSIKICAgICAgICBlY2hvICJiZWZvcmUgcmUtcnVubmluZyB3aW5laW5zdGFsbCBhcyBhIHVzZXIuIgogICAgICAgIGVjaG8KICAgICAgICBlY2hvICJFeGl0aW5nIHdpbmVpbnN0YWxsIgogICAgICAgIGV4aXQgMTsKICAgICAgZmkKCiAgICAgIFdJTkVJTlNUQUxMRUQ9eWVzCiAgICB9CiAgICBlbHNlIHsKICAgICAgV0lORUlOU1RBTExFRD1ubwogICAgfQogICAgZmkgIyBbICIkUk9PVElOU1RBTEwiID0gInllcyIgXQogIH0KICBmaSAjIFsgYHdob2FtaWAgIT0gJ3Jvb3QnIF0KCn0KZmkgIyBCSU5ESVNUCgppZiBbICIkV0lORUlOU1RBTExFRCIgPSAnbm8nIF0KdGhlbgogICAgdG9vbHMvd2luZXByZWZpeGNyZWF0ZSAtLXVzZS13aW5lLXRyZWUgLgplbHNlCiAgICB3aW5lcHJlZml4Y3JlYXRlCmZpCmVjaG8KCgojIGl0J3MgYSB3cmFwCmVjaG8KZWNobyAiSW5zdGFsbGF0aW9uIGNvbXBsZXRlIGZvciBub3cuIEdvb2QgbHVjayAodGhpcyBpcyBzdGlsbCBiZXRhIHNvZnR3YXJlKS4iCmVjaG8gIklmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggV0lORSwgcGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZmlyc3QsIgplY2hvICJhcyBtYW55IGtpbmRzIG9mIHBvdGVudGlhbCBwcm9ibGVtcyBhcmUgZXhwbGFpbmVkIHRoZXJlLiIKCmV4aXQgMAo=