From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 1174BBB83 for ; Thu, 20 Jul 2006 20:59:38 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id k6KIxaUl013416 for ; Thu, 20 Jul 2006 20:59:37 +0200 Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id UAA08607 for ; Thu, 20 Jul 2006 20:59:36 +0200 (MET DST) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.170]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id k6KIxZN2013409 for ; Thu, 20 Jul 2006 20:59:35 +0200 Received: by ug-out-1314.google.com with SMTP id c2so947892ugf for ; Thu, 20 Jul 2006 11:59:35 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth; b=c61Sz7M6WhD86jnvccgPY7Noo0z7pKdji6WpbaeCUBYqy0uY8svgBPpFzOCNVlsdrbIeAwpfonBw0KEnwiWYiMPBMFPk/4Ezi887EY+YFWEQVuaqWiQ0qAFfoh0iKzTR/D7tp3pZMgWVaX4N0lsjY3UOn3UxhZGVVSzrqqgcOM0= Received: by 10.67.29.12 with SMTP id g12mr2240495ugj; Thu, 20 Jul 2006 11:59:34 -0700 (PDT) Received: by 10.66.243.3 with HTTP; Thu, 20 Jul 2006 11:59:34 -0700 (PDT) Message-ID: <2a1a1a0c0607201159t740733a4i5f61be78247afcac@mail.gmail.com> Date: Thu, 20 Jul 2006 14:59:34 -0400 From: "Mike Lin" Sender: nilekim@gmail.com To: "Matt Gushee" Subject: Re: Yaxpo? Cc: caml-list@inria.fr In-Reply-To: <44BFC7AF.5070800@gushee.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_170323_20079352.1153421974095" References: <44BFC7AF.5070800@gushee.net> X-Google-Sender-Auth: bb36b51fe7da16a9 X-Miltered: at concorde with ID 44BFD298.002 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 44BFD297.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; mikelin:01 yaxpo:01 parser:01 yaxpo:01 mikelin:01 beginner's:01 ocaml:01 beginners:01 bug:01 wrote:01 caml-list:01 caml-list:01 emit:01 bin:01 exists:01 X-Attachments: type="application/x-tar" name="yaxpo.tar" name="yaxpo.tar" ------=_Part_170323_20079352.1153421974095 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Sorry, that web server has had 2 hard drive failures...make doc will emit some documentation...I'm still trying to recover the web page which had more information On 7/20/06, Matt Gushee wrote: > I need a streaming XML parser, and I thought I'd check out Yaxpo, but > the URL shown for it at the Caml Hump (compbio.mit.edu/mikelin/yaxpo/) > no longer exists. Is Yaxpo still available somewhere? > > -- > Matt Gushee > : Bantam - lightweight file manager : matt.gushee.net/software/bantam/ : > : RASCL's A Simple Configuration Language : matt.gushee.net/rascl/ : > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > ------=_Part_170323_20079352.1153421974095 Content-Type: application/x-tar; name="yaxpo.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="yaxpo.tar" X-Attachment-Id: file0 eWF4cG8vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDA0MDM0 MQAwMDQwMzQxADAwMDAwMDAwMDAwADEwMjUzNDY1MDc3ADAxMzMyNwAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1pa2VsaW4AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAw MDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5 YXhwby9jcHNfcmVhZGVyLm1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQx ADAwNDAzNDEAMDAwMDAwMDc3MDUAMTAyMDAwNTQ2NzQAMDE1NzY2ACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgq CmNwc19yZWFkZXIKClRoaXMgaXMgdGhlIGludGVyZmFjZSBmb3IgYSByZWFkZXIgb2JqZWN0IHRo YXQgdGhlIHBhcnNlciBleHBlY3RzLiBhIHN0cmluZyByZWFkZXIKaXMgcHJvdmlkZWQgbGF0ZXIu IFRoZSBwcm9ncmFtbWVyIGNhbiBpbXBsZW1lbnQgaGVyIG93biByZWFkZXIgdGhhdCBtaWdodCBy ZWFkIHRoZQpYTUwgZnJvbSBhIGZpbGUsIG9yIGEgc29ja2V0LCBvciB3aGF0ZXZlci4KClRoZSBy ZWFkZXIgbWV0aG9kcyBhcmUgaW52b2tlZCB0aHJvdWdoIGNvbnRpbnVhdGlvbi1wYXNzaW5nIHN0 eWxlLiBUaGlzIG1lYW5zIHRoYXQKaW5zdGVhZCBvZiBiZWluZyBleHBlY3RlZCB0byByZXR1cm4g YSB2YWx1ZSB0byBpdHMgY2FsbGVyLCBpdCBpcyBwYXNzZWQgYSAiY29udGludWF0aW9uIgooYSBw cm9jZWR1cmUpIHRvIHdoaWNoIGl0IHNob3VsZCBwYXNzIHRoZSByZXN1bHQgaW4gYSB0YWlsLWNh bGwuCgpOb3RlIHRoYXQgdGhlIGNvbnRpbnVhdGlvbnMgZm9yIHBlZWtfY2hhciwgcmVhZF9jaGFy LCBldGMuLCBhY2NlcHQgYSB1dGY4Y2hhciA9IHN0cmluZwphbmQgbm90IGEgY2hhci4gVGhpcyBp cyBpbiBvcmRlciB0byBoYW5kbGUgbXVsdGlieXRlIFVURi04IGVuY29kZWQgY2hhcmFjdGVyczsg dGhleSBhcmUKZXhwZWN0ZWQgdG8gcGFzcyB0aGUgZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBjaGFy YWN0ZXIuCiopCgpjbGFzcyB0eXBlIHQgPQpvYmplY3QKICAoKiBwZWVrIGF0IHRoZSBuZXh0IGNo YXIgd2l0aG91dCByZW1vdmluZyBpdCAqKQogIG1ldGhvZCBwZWVrX2NoYXIgOiAoVXRmOF9jaGFy LnQgLT4gdW5pdCkgLT4gdW5pdAogICgqIHJlYWQgdGhlIG5leHQgY2hhciAqKQogIG1ldGhvZCBy ZWFkX2NoYXIgOiAoVXRmOF9jaGFyLnQgLT4gdW5pdCkgLT4gdW5pdAogICgqIHJlYWQgd2hpbGUg cHJlZCByZXR1cm5zIHRydWUgZm9yIGVhY2ggY2hhcmFjdGVyICopCiAgbWV0aG9kIHJlYWRfd2hp bGUgOiAoVXRmOF9jaGFyLnQgLT4gYm9vbCkgLT4gKHN0cmluZyAtPiB1bml0KSAtPiB1bml0CmVu ZAoKKCoKY3BzX3N0cmluZ19yZWFkZXIKYW4gaW1wbGVtZW50YXRpb24gb2YgY3BzX3JlYWRlciB0 aGF0IHJldHVybnMgZGF0YSBmcm9tIGEgc2luZ2xlLWJ5dGUgY2hhcmFjdGVyIHN0cmluZy4KcmVh ZGluZyB0aGlzIHNpbXBsZSBvbmUgaXMgcHJvYmFibHkgYSBnb29kIHdheSB0byB1bmRlcnN0YW5k IGhvdyB0byB3cml0ZSBDUFMgY29kZS4KKikKCmNsYXNzIGNwc19zdHJpbmdfcmVhZGVyIChzdHIp ID0Kb2JqZWN0IChzZWxmKQogIHZhbCBtdXRhYmxlIGlkeCA9IDAKICBtZXRob2QgcGVla19jaGFy IChrOihVdGY4X2NoYXIudCAtPiB1bml0KSkgPQogICAgayAoVXRmOF9jaGFyLm9mX2NoYXIgKFN0 cmluZy5nZXQgc3RyIGlkeCkpCiAgbWV0aG9kIHJlYWRfY2hhciAoazooVXRmOF9jaGFyLnQgLT4g dW5pdCkpID0KICAgIGxldCBjID0gU3RyaW5nLmdldCBzdHIgaWR4IGluCiAgICAgIGlkeCA8LSBp ZHggKyAxOwogICAgICBrIChVdGY4X2NoYXIub2ZfY2hhciBjKQogIG1ldGhvZCByZWFkX3doaWxl IHByZWQgKGs6KHN0cmluZyAtPiB1bml0KSkgPQogICAgbGV0IHN0YXJ0ID0gaWR4IGluCiAgICAg IHdoaWxlIHByZWQgKFV0ZjhfY2hhci5vZl9jaGFyIChTdHJpbmcuZ2V0IHN0ciBpZHgpKSBkbwoJ aWR4IDwtIGlkeCArIDEKICAgICAgZG9uZTsKICAgICAgayAoU3RyaW5nLnN1YiBzdHIgc3RhcnQg KGlkeCAtIHN0YXJ0KSkKZW5kCgpsZXQgbWFrZV9zdHJpbmdfcmVhZGVyIHN0ciA9CiAgbGV0IHIg PSBuZXcgY3BzX3N0cmluZ19yZWFkZXIoc3RyKSBpbgogICAgKHI6dCkKCigqCmNwc191dGY4c3Ry aW5nX3JlYWRlcgp0aGlzIHZhcmlhbnQgb2YgdGhlIHN0cmluZyByZWFkZXIgaXMgVVRGLTggYXdh cmUuCiopCgpjbGFzcyBjcHNfdXRmOF9zdHJpbmdfcmVhZGVyIChzdHIpID0Kb2JqZWN0CiAgdmFs IG11dGFibGUgaWR4ID0gMAogIG1ldGhvZCBwZWVrX2NoYXIgKGs6KFV0ZjhfY2hhci50LT51bml0 KSkgPQogICAgbGV0IGZpcnN0YiA9IFN0cmluZy5nZXQgc3RyIGlkeCBpbgogICAgbGV0IGxlbiA9 IFV0ZjhfY2hhci51dGY4X2NoYXJhY3Rlcl9zaXplIChDaGFyLmNvZGUgZmlyc3RiKSBpbgogICAg ICBrIChVdGY4X2NoYXIub2ZfYnl0ZXMgKFN0cmluZy5zdWIgc3RyIGlkeCBsZW4pKQogIG1ldGhv ZCByZWFkX2NoYXIgKGs6KFV0ZjhfY2hhci50LT51bml0KSkgPQogICAgbGV0IGZpcnN0YiA9IFN0 cmluZy5nZXQgc3RyIGlkeCBpbgogICAgbGV0IGxlbiA9IFV0ZjhfY2hhci51dGY4X2NoYXJhY3Rl cl9zaXplIChDaGFyLmNvZGUgZmlyc3RiKSBpbgogICAgbGV0IGNociA9IFN0cmluZy5zdWIgc3Ry IGlkeCBsZW4gaW4KICAgICAgaWR4IDwtIGlkeCArIGxlbjsKICAgICAgayAoVXRmOF9jaGFyLm9m X2J5dGVzIGNocikKICBtZXRob2QgcmVhZF93aGlsZSAocHJlZDooVXRmOF9jaGFyLnQtPmJvb2wp KSAoazooc3RyaW5nLT51bml0KSkgPQogICAgbGV0IHN0YXJ0ID0gaWR4IGluCiAgICBsZXQgcmVj IGhlbHBlciAoKSA9CiAgICAgIGxldCBmaXJzdGIgPSBTdHJpbmcuZ2V0IHN0ciBpZHggaW4KICAg ICAgbGV0IGxlbiA9IFV0ZjhfY2hhci51dGY4X2NoYXJhY3Rlcl9zaXplIChDaGFyLmNvZGUgZmly c3RiKSBpbgoJaWYgcHJlZCAoVXRmOF9jaGFyLm9mX2J5dGVzIChTdHJpbmcuc3ViIHN0ciBpZHgg bGVuKSkgdGhlbgoJICAoaWR4IDwtIGlkeCArIGxlbjsKCSAgIGhlbHBlciAoKSkKCWVsc2UKCSAg ayAoU3RyaW5nLnN1YiBzdHIgc3RhcnQgKGlkeCAtIHN0YXJ0KSkKICAgIGluCiAgICAgIGhlbHBl ciAoKQplbmQKCmxldCBtYWtlX3V0Zjhfc3RyaW5nX3JlYWRlciBzdHIgPQogIGxldCByID0gbmV3 IGNwc191dGY4X3N0cmluZ19yZWFkZXIoc3RyKSBpbgogICAgKHI6dCkKCigqIHJlYWxseSBzdHVw aWQgZmlsZSByZWFkZXIgKikKY2xhc3MgY3BzX3V0ZjhfZmlsZV9yZWFkZXIgKGZuYW1lKSA9Cm9i amVjdChzZWxmKQogIHZhbCBpbmZpbGUgPSBvcGVuX2luIGZuYW1lCiAgdmFsIG5leHRjID0gcmVm IE5vbmUKCiAgbWV0aG9kIHBlZWtfY2hhciAoazooVXRmOF9jaGFyLnQtPnVuaXQpKSA9CiAgICBt YXRjaCAhbmV4dGMgd2l0aAoJU29tZShjKSAtPiBrIGMKICAgICAgfCBOb25lIC0+CgkgIGxldCBm aXJzdGIgPSBpbnB1dF9jaGFyIGluZmlsZSBpbgoJICBsZXQgbGVuID0gVXRmOF9jaGFyLnV0Zjhf Y2hhcmFjdGVyX3NpemUgKENoYXIuY29kZSBmaXJzdGIpIGluCgkgIGxldCBjaHIgPSBTdHJpbmcu bWFrZSBsZW4gZmlyc3RiIGluCgkgICAgaWYgbGVuID4gMSB0aGVuCgkgICAgICByZWFsbHlfaW5w dXQgaW5maWxlIGNociAxIChsZW4gLSAxKTsKCSAgICBsZXQgYyA9IFV0ZjhfY2hhci5vZl9ieXRl cyBjaHIgaW4KCSAgICAgIG5leHRjIDo9IFNvbWUoYyk7CgkgICAgICBrIGMKCiAgbWV0aG9kIHJl YWRfY2hhciAoazooVXRmOF9jaGFyLnQtPnVuaXQpKSA9CiAgICAobWF0Y2ggIW5leHRjIHdpdGgK CSBTb21lKGMpIC0+IGxldCBjaHIgPSBjIGluIG5leHRjIDo9IE5vbmU7IGsgYwogICAgICAgfCBO b25lIC0+IHNlbGYjcGVla19jaGFyIChmdW4gY2hyIC0+CgkJCQkgICBuZXh0YyA6PSBOb25lOwoJ CQkJICAgayBjaHIpKQogICAKICBtZXRob2QgcmVhZF93aGlsZSBwcmVkIGsgPQogICAgbGV0IGIg PSBCdWZmZXIuY3JlYXRlIDY0IGluCiAgICBsZXQgcmVjIGhlbHBlciAoKSA9CiAgICAgIHNlbGYj cGVla19jaGFyCgkoZnVuIGNociAtPgoJICAgaWYgcHJlZCBjaHIgdGhlbgoJICAgICAoQnVmZmVy LmFkZF9zdHJpbmcgYiAoVXRmOF9jaGFyLnRvX2J5dGVzIGNocik7CgkgICAgICBzZWxmI3JlYWRf Y2hhcgoJCShmdW4gY2hyJyAtPgoJCSAgIGFzc2VydCAoY2hyID0gY2hyJyk7CgkJICAgaGVscGVy ICgpKSkKCSAgIGVsc2UKCSAgICAgayAoQnVmZmVyLmNvbnRlbnRzIGIpKSBpbgogICAgICBoZWxw ZXIgKCkKZW5kCiAgCmxldCBtYWtlX3V0ZjhfZmlsZV9yZWFkZXIgZm5hbWUgPQogIGxldCByID0g bmV3IGNwc191dGY4X2ZpbGVfcmVhZGVyKGZuYW1lKSBpbgogICAgKHI6dCkKAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5YXhwby9jcHNf cmVhZGVyLm1saQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQxADAwNDAzNDEA MDAwMDAwMDI3NjEAMTAyMDAwNTQ2NzQAMDE2MTM0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgqKgpUaGlzIGRl ZmluZXMgdGhlIGludGVyZmFjZSBmb3IgdGhlICJyZWFkZXIiIG9iamVjdHMgdGhhdCB0aGUgcGFy c2VyIGV4cGVjdHMsIGFzIHdlbGwgYXMgYSBmZXcgaW1wbGVtZW50YXRpb25zIHRoZXJlb2YuIFR5 cGljYWxseSwgdGhlc2Ugb2JqZWN0cyB3aWxsIHRha2UgZGF0YSBmcm9tIHNvbWUgbm9ybWFsIHNv dXJjZSwgbGlrZSBhIHN0cmluZywgZmlsZSwgb3Igc29ja2V0LCBhbmQgZmVlZCB0aGVtIHRvIHRo ZSBwYXJzZXIuCgpUaGUgcmVhZGVyIG1ldGhvZHMgYXJlIGludm9rZWQgdGhyb3VnaCBjb250aW51 YXRpb24tcGFzc2luZyBzdHlsZS4gVGhpcyBtZWFucyB0aGF0Cmluc3RlYWQgb2YgYmVpbmcgZXhw ZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUgdG8gaXRzIGNhbGxlciwgaXQgaXMgcGFzc2VkIGEgImNv bnRpbnVhdGlvbiIKKGEgcHJvY2VkdXJlKSB0byB3aGljaCBpdCBzaG91bGQgcGFzcyB0aGUgcmVz dWx0IGluIGEgdGFpbC1jYWxsLgoqKQoKKCoqIFRoZSBiYXNpYyByZWFkZXIgaW50ZXJmYWNlLiAq KQpjbGFzcyB0eXBlIHQgPQpvYmplY3QKICAoKiogcGVlayBhdCB0aGUgbmV4dCBjaGFyIHdpdGhv dXQgcmVtb3ZpbmcgaXQgKikKICBtZXRob2QgcGVla19jaGFyIDogKFV0ZjhfY2hhci50IC0+IHVu aXQpIC0+IHVuaXQKCiAgKCoqIHJlYWQgdGhlIG5leHQgY2hhciAqKQogIG1ldGhvZCByZWFkX2No YXIgOiAoVXRmOF9jaGFyLnQgLT4gdW5pdCkgLT4gdW5pdAoKICAoKiogcmVhZCB3aGlsZSBwcmVk IHJldHVybnMgdHJ1ZSBmb3IgZWFjaCBjaGFyYWN0ZXIsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBh cyBhIHN0cmluZwogICAKICAgIHRoaXMgaXMganVzdCBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlv biwgYW5kIGNvdWxkIGluIHByaW5jaXBsZSBiZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YgW3BlZWtf Y2hhcl0gYW5kIFtyZWFkX2NoYXJdLiopCiAgbWV0aG9kIHJlYWRfd2hpbGUgOiAoVXRmOF9jaGFy LnQgLT4gYm9vbCkgLT4gKHN0cmluZyAtPiB1bml0KSAtPiB1bml0CmVuZAoKKCoqIENyZWF0ZXMg YSByZWFkZXIgZnJvbSB0aGUgZ2l2ZW4gQVNDSUkgc3RyaW5nLiAqKQp2YWwgbWFrZV9zdHJpbmdf cmVhZGVyIDogKHN0cmluZyAtPiB0KQoKKCoqIENyZWF0ZXMgYSByZWFkZXIgZnJvbSB0aGUgZ2l2 ZW4gVVRGLTggc3RyaW5nLgoKQHJhaXNlIFV0ZjhfY2hhci5CYWRfZW5jb2RpbmcgaWYgYW4gaW52 YWxpZCBVVEYtOCBlbmNvZGluZyBpcyBlbmNvdW50ZXJlZC4gKikKdmFsIG1ha2VfdXRmOF9zdHJp bmdfcmVhZGVyIDogKHN0cmluZyAtPiB0KQoKKCoqIENyZWF0ZXMgYSByZWFkZXIgZnJvbSBhIFVU Ri04IGZpbGUgZ2l2ZW4gdGhlIGZpbGVuYW1lLgoKQHJhaXNlIFV0ZjhfY2hhci5CYWRfZW5jb2Rp bmcgaWYgYW4gaW52YWxpZCBVVEYtOCBlbmNvZGluZyBpcyBlbmNvdW50ZXJlZC4KQHJhaXNlIFN5 c19lcnJvciBpZiB0aGUgZmlsZSBjb3VsZG4ndCBiZSBvcGVuZWQuICopCnZhbCBtYWtlX3V0Zjhf ZmlsZV9yZWFkZXIgOiAoc3RyaW5nIC0+IHQpCgAAAAAAAAAAAAAAAAAAAHlheHBvL01ha2VmaWxl AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwNDAzNDEAMDA0MDM0MQAwMDAw MDAwMjQyNQAxMDIwMDA1NDY3NAAwMTQ3NTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1p a2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0NBTUxDID0gb2NhbWxj Ck9DQU1MT1BUID0gb2NhbWxvcHQKT0NBTUxERVAgPSBvY2FtbGRlcApJTkNMVURFUyA9Ck9DQU1M RkxBR1MgPSAkKElOQ0xVREVTKQpPQ0FNTE9QVEZMQUdTID0gJChJTkNMVURFUykKSU5TVEFMTERJ UiA9IGAkKE9DQU1MQykgLXdoZXJlYAoKWUFYUE9DX09CSlMgPSB1X2NoYXIuY21vIHV0ZjhfY2hh ci5jbW8gdXRmOF9saXQuY21vIGNwc19yZWFkZXIuY21vIHlheHBvLmNtbyB5YXhwb3NheC5jbW8g eWF4cG9kb20uY21vCllBWFBPT1BUX09CSlMgPSB1X2NoYXIuY214IHV0ZjhfY2hhci5jbXggdXRm OF9saXQuY214IGNwc19yZWFkZXIuY214IHlheHBvLmNteCB5YXhwb3NheC5jbXggeWF4cG9kb20u Y214CkRJU1RGSUxFUyA9IHlheHBvLmNtYSB5YXhwby5jbXhhIHlheHBvLmEgY3BzX3JlYWRlci5j bWkgeWF4cG8uY21pIHlheHBvc2F4LmNtaSB5YXhwb2RvbS5jbWkgdV9jaGFyLmNtaSB1dGY4X2No YXIuY21pCkRPQ1NSQ0ZJTEVTID0gY3BzX3JlYWRlci5tbGkgeWF4cG8ubWxpIHlheHBvc2F4Lm1s aSB5YXhwb2RvbS5tbGkgdV9jaGFyLm1saSB1dGY4X2NoYXIubWxpCgp5YXhwbzogeWF4cG9jIHlh eHBvb3B0Cglta2RpciAtcCBidWlsdAoJY3AgLWYgJChESVNURklMRVMpICBidWlsdC8KCnlheHBv YzogJChZQVhQT0NfT0JKUykKCSQoT0NBTUxDKSAtYSAtbyB5YXhwby5jbWEgJChPQ0FNTEZMQUdT KSAkKFlBWFBPQ19PQkpTKQoKeWF4cG9vcHQ6ICQoWUFYUE9PUFRfT0JKUykKCSQoT0NBTUxPUFQp IC1hIC1vIHlheHBvLmNteGEgJChPQ0FNTE9QVEZMQUdTKSAkKFlBWFBPT1BUX09CSlMpCgppbnN0 YWxsOiB5YXhwbwoJY3AgLWYgJChESVNURklMRVMpICQoSU5TVEFMTERJUikKCmRvYzogeWF4cG8g JChET0NTUkNGSUxFUykKCW1rZGlyIC1wIGRvYwoJb2NhbWxkb2MgLWQgZG9jIC1odG1sIC10ICJZ QVhQTyBSZWZlcmVuY2UiICQoRE9DU1JDRklMRVMpCgouU1VGRklYRVM6IC5tbCAubWxpIC5jbW8g LmNtaSAuY214CgoubWwuY21vOgoJJChPQ0FNTEMpICQoT0NBTUxGTEFHUykgLWMgJDwKCi5tbGku Y21pOgoJJChPQ0FNTEMpICQoT0NBTUxGTEFHUykgLWMgJDwKCi5tbC5jbXg6CgkkKE9DQU1MT1BU KSAkKE9DQU1MT1BURkxBR1MpIC1jICQ8CgpjbGVhbjoKCXJtIC1mICouY21pICouY214ICouY21v ICouY21hICouY214YSAqLmEgKi5vIHlheHBvdGVzdAoJcm0gLXJmIGJ1aWx0CglybSAtcmYgZG9j CgpkZXBlbmQ6CgkkKE9DQU1MREVQKSAkKElOQ0xVREVTKSAqLm1saSAqLm1sID4gTWFrZWZpbGUu ZGVwZW5kCgppbmNsdWRlIE1ha2VmaWxlLmRlcGVuZAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeWF4cG8vTWFrZWZpbGUuZGVw ZW5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDA0MDM0MQAwMDQwMzQxADAwMDAwMDAx NzQ0ADEwMjAwMDU0Njc0ADAxNjIyMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAG1pa2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWlrZWxp bgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjcHNfcmVhZGVyLmNtaTogdXRm OF9jaGFyLmNtaSAKdXRmOF9jaGFyLmNtaTogdV9jaGFyLmNtaSAKdXRmOF9saXQuY21pOiB1dGY4 X2NoYXIuY21pIAp5YXhwby5jbWk6IGNwc19yZWFkZXIuY21pIAp5YXhwb2RvbS5jbWk6IGNwc19y ZWFkZXIuY21pIHlheHBvLmNtaSAKeWF4cG9zYXguY21pOiBjcHNfcmVhZGVyLmNtaSB5YXhwby5j bWkgCmNwc19yZWFkZXIuY21vOiB1dGY4X2NoYXIuY21pIGNwc19yZWFkZXIuY21pIApjcHNfcmVh ZGVyLmNteDogdXRmOF9jaGFyLmNteCBjcHNfcmVhZGVyLmNtaSAKdV9jaGFyLmNtbzogdV9jaGFy LmNtaSAKdV9jaGFyLmNteDogdV9jaGFyLmNtaSAKdXRmOF9jaGFyLmNtbzogdV9jaGFyLmNtaSB1 dGY4X2NoYXIuY21pIAp1dGY4X2NoYXIuY214OiB1X2NoYXIuY214IHV0ZjhfY2hhci5jbWkgCnV0 ZjhfbGl0LmNtbzogdXRmOF9jaGFyLmNtaSB1dGY4X2xpdC5jbWkgCnV0ZjhfbGl0LmNteDogdXRm OF9jaGFyLmNteCB1dGY4X2xpdC5jbWkgCnlheHBvLmNtbzogY3BzX3JlYWRlci5jbWkgdV9jaGFy LmNtaSB1dGY4X2NoYXIuY21pIHV0ZjhfbGl0LmNtaSB5YXhwby5jbWkgCnlheHBvLmNteDogY3Bz X3JlYWRlci5jbXggdV9jaGFyLmNteCB1dGY4X2NoYXIuY214IHV0ZjhfbGl0LmNteCB5YXhwby5j bWkgCnlheHBvZG9tLmNtbzogY3BzX3JlYWRlci5jbWkgeWF4cG8uY21pIHlheHBvZG9tLmNtaSAK eWF4cG9kb20uY214OiBjcHNfcmVhZGVyLmNteCB5YXhwby5jbXggeWF4cG9kb20uY21pIAp5YXhw b3NheC5jbW86IGNwc19yZWFkZXIuY21pIHlheHBvLmNtaSB5YXhwb3NheC5jbWkgCnlheHBvc2F4 LmNteDogY3BzX3JlYWRlci5jbXggeWF4cG8uY214IHlheHBvc2F4LmNtaSAKeWF4cG90ZXN0LmNt bzogY3BzX3JlYWRlci5jbWkgeWF4cG8uY21pIHlheHBvZG9tLmNtaSB5YXhwb3NheC5jbWkgCnlh eHBvdGVzdC5jbXg6IGNwc19yZWFkZXIuY214IHlheHBvLmNteCB5YXhwb2RvbS5jbXggeWF4cG9z YXguY214IAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeWF4cG8vdGVzdC54bWwAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDA0MDM0MQAwMDQwMzQxADAwMDAwMDA1NTYx ADEwMjAwMDU0Njc0ADAxNTAyNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB1c3RhciAgAG1pa2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWlrZWxpbgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P3htbCB2ZXJzaW9uPSIxLjAiPz4N Cjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN5bm9wc2lzLmNzcyI/Pg0K PFNZTk9QU0lTPg0KICA8VElUTEU+VHdlbGZ0aCBOaWdodDwvVElUTEU+DQoNCiAgPEFDVD4NCiAg ICA8QUNUX05VTUJFUj5BY3QgMTwvQUNUX05VTUJFUj4NCiAgICA8U0NFTkU+DQogICAgICA8U0NF TkVfTlVNQkVSPlNjZW5lIDE8L1NDRU5FX05VTUJFUj4NCiAgICAgIDxMT0NBVElPTj48Q0hBUkFD VEVSPkR1a2UgT3JzaW5vPC9DSEFSQUNURVI+J3MgcGFsYWNlDQogICAgICA8L0xPQ0FUSU9OPg0K ICAgIDwvU0NFTkU+DQogICAgPFNDRU5FPg0KICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSAyPC9T Q0VORV9OVU1CRVI+DQogICAgICA8TE9DQVRJT04+VGhlIHNlYS1jb2FzdDwvTE9DQVRJT04+DQog ICAgPC9TQ0VORT4NCiAgICA8U0NFTkU+DQogICAgICA8U0NFTkVfTlVNQkVSPlNjZW5lIDM8L1ND RU5FX05VTUJFUj4NCiAgICAgIDxMT0NBVElPTj48Q0hBUkFDVEVSPk9saXZpYTwvQ0hBUkFDVEVS PidzIGhvdXNlDQogICAgICA8L0xPQ0FUSU9OPg0KICAgIDwvU0NFTkU+DQogICAgPFNDRU5FPg0K ICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSA0PC9TQ0VORV9OVU1CRVI+DQogICAgICA8TE9DQVRJ T04+PENIQVJBQ1RFUj5EdWtlIE9yc2lubzwvQ0hBUkFDVEVSPidzIHBhbGFjZS4NCiAgICAgIDwv TE9DQVRJT04+DQogICAgPC9TQ0VORT4NCiAgICA8U0NFTkU+DQogICAgICA8U0NFTkVfTlVNQkVS PlNjZW5lIDU8L1NDRU5FX05VTUJFUj4NCiAgICAgIDxMT0NBVElPTj48Q0hBUkFDVEVSPk9saXZp YTwvQ0hBUkFDVEVSPidzIGhvdXNlDQogICAgICA8L0xPQ0FUSU9OPg0KICAgIDwvU0NFTkU+DQog IDwvQUNUPg0KDQogIDxBQ1Q+DQogICAgPEFDVF9OVU1CRVI+QWN0IDI8L0FDVF9OVU1CRVI+DQog ICAgPFNDRU5FPg0KICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSAxPC9TQ0VORV9OVU1CRVI+DQog ICAgICA8TE9DQVRJT04+VGhlIHNlYS1jb2FzdDwvTE9DQVRJT04+DQogICAgPC9TQ0VORT4NCiAg ICA8U0NFTkU+DQogICAgICA8U0NFTkVfTlVNQkVSPlNjZW5lIDI8L1NDRU5FX05VTUJFUj4NCiAg ICAgIDxMT0NBVElPTj5BIHN0cmVldDwvTE9DQVRJT04+DQogICAgPC9TQ0VORT4NCiAgICA8U0NF TkU+DQogICAgICA8U0NFTkVfTlVNQkVSPlNjZW5lIDM8L1NDRU5FX05VTUJFUj4NCiAgICAgIDxM T0NBVElPTj48Q0hBUkFDVEVSPk9saXZpYTwvQ0hBUkFDVEVSPidzIGhvdXNlDQogICAgICA8L0xP Q0FUSU9OPg0KICAgIDwvU0NFTkU+DQogICAgPFNDRU5FPg0KICAgICAgPFNDRU5FX05VTUJFUj5T Y2VuZSA0PC9TQ0VORV9OVU1CRVI+DQogICAgICA8TE9DQVRJT04+PENIQVJBQ1RFUj5EdWtlIE9y c2lubzwvQ0hBUkFDVEVSPidzIHBhbGFjZS4NCiAgICAgIDwvTE9DQVRJT04+DQogICAgPC9TQ0VO RT4NCiAgICA8U0NFTkU+DQogICAgICA8U0NFTkVfTlVNQkVSPlNjZW5lIDU8L1NDRU5FX05VTUJF Uj4NCiAgICAgIDxMT0NBVElPTj48Q0hBUkFDVEVSPk9saXZpYTwvQ0hBUkFDVEVSPidzIGdhcmRl bg0KICAgICAgPC9MT0NBVElPTj4NCiAgICA8L1NDRU5FPg0KICA8L0FDVD4NCg0KICA8QUNUPg0K ICAgIDxBQ1RfTlVNQkVSPkFjdCAzPC9BQ1RfTlVNQkVSPg0KICAgIDxTQ0VORT4NCiAgICAgIDxT Q0VORV9OVU1CRVI+U2NlbmUgMTwvU0NFTkVfTlVNQkVSPg0KICAgICAgPExPQ0FUSU9OPjxDSEFS QUNURVI+T2xpdmlhPC9DSEFSQUNURVI+J3MgZ2FyZGVuDQogICAgICA8L0xPQ0FUSU9OPg0KICAg IDwvU0NFTkU+DQogICAgPFNDRU5FPg0KICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSAyPC9TQ0VO RV9OVU1CRVI+DQogICAgICA8TE9DQVRJT04+PENIQVJBQ1RFUj5PbGl2aWE8L0NIQVJBQ1RFUj4n cyBob3VzZQ0KICAgICAgPC9MT0NBVElPTj4NCiAgICA8L1NDRU5FPg0KICAgIDxTQ0VORT4NCiAg ICAgIDxTQ0VORV9OVU1CRVI+U2NlbmUgMzwvU0NFTkVfTlVNQkVSPg0KICAgICAgPExPQ0FUSU9O PkEgc3RyZWV0PC9MT0NBVElPTj4NCiAgICA8L1NDRU5FPg0KICAgIDxTQ0VORT4NCiAgICAgIDxT Q0VORV9OVU1CRVI+U2NlbmUgNDwvU0NFTkVfTlVNQkVSPg0KICAgICAgPExPQ0FUSU9OPjxDSEFS QUNURVI+T2xpdmlhPC9DSEFSQUNURVI+J3MgZ2FyZGVuDQogICAgICA8L0xPQ0FUSU9OPg0KICAg IDwvU0NFTkU+DQogIDwvQUNUPg0KDQogIDxBQ1Q+DQogICAgPEFDVF9OVU1CRVI+QWN0IDQ8L0FD VF9OVU1CRVI+DQogICAgPFNDRU5FPg0KICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSAxPC9TQ0VO RV9OVU1CRVI+DQogICAgICA8TE9DQVRJT04+PENIQVJBQ1RFUj5PbGl2aWE8L0NIQVJBQ1RFUj4n cyBmcm9udCB5YXJkDQogICAgICA8L0xPQ0FUSU9OPg0KICAgIDwvU0NFTkU+DQogICAgPFNDRU5F Pg0KICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSAyPC9TQ0VORV9OVU1CRVI+DQogICAgICA8TE9D QVRJT04+PENIQVJBQ1RFUj5PbGl2aWE8L0NIQVJBQ1RFUj4ncyBob3VzZQ0KICAgICAgPC9MT0NB VElPTj4NCiAgICA8L1NDRU5FPg0KICAgIDxTQ0VORT4NCiAgICAgIDxTQ0VORV9OVU1CRVI+U2Nl bmUgMzwvU0NFTkVfTlVNQkVSPg0KICAgICAgPExPQ0FUSU9OPjxDSEFSQUNURVI+T2xpdmlhPC9D SEFSQUNURVI+J3MgZ2FyZGVuDQogICAgICA8L0xPQ0FUSU9OPg0KICAgIDwvU0NFTkU+DQogIDwv QUNUPg0KDQogIDxBQ1Q+DQogICAgPEFDVF9OVU1CRVI+QWN0IDU8L0FDVF9OVU1CRVI+DQogICAg PFNDRU5FPg0KICAgICAgPFNDRU5FX05VTUJFUj5TY2VuZSAxPC9TQ0VORV9OVU1CRVI+DQogICAg ICA8TE9DQVRJT04+PENIQVJBQ1RFUj5PbGl2aWE8L0NIQVJBQ1RFUj4ncyBmcm9udCB5YXJkDQog ICAgICA8L0xPQ0FUSU9OPg0KICAgIDwvU0NFTkU+DQogIDwvQUNUPg0KDQo8L1NZTk9QU0lTPg0K AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5YXhwby91X2NoYXIubWwAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQxADAwNDAzNDEAMDAwMDAwMjM3NzcAMTAyMDAw NTQ2NzQAMDE1MTI3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp0eXBlIHQgPSBpbnQKZXhjZXB0aW9uIEJhZF9j aGFyCgpsZXQgbWF4X2NoYXIgPSAweDEwRkZGRgpsZXQgbWF4X2NoYXIzMiA9IEludDMyLm9mX2lu dCAweDEwRkZGRgoKbGV0IG9mX2NoYXIgYyA9ICgoQ2hhci5jb2RlIGMpOnQpCmxldCBvZl9pbnQg aSA9CiAgaWYgKGkgPCAwKSB8fCAoaSA+IG1heF9jaGFyKSB0aGVuCiAgICByYWlzZSBCYWRfY2hh cgogIGVsc2UKICAgIChpOnQpCmxldCB0b19pbnQgKGM6dCkgPQogIChjOmludCkKbGV0IG9mX2lu dDMyIGkgPQogIGlmIChpIDwgSW50MzIuemVybykgfHwgKGkgPiBtYXhfY2hhcjMyKSB0aGVuCiAg ICByYWlzZSBCYWRfY2hhcgogIGVsc2UKICAgIG9mX2ludCAoSW50MzIudG9faW50IGkpCgpsZXQg aXNfY2hhciAoYyc6dCkgPQogIGxldCBjID0gdG9faW50IGMnIGluCiAgICBjID0gMHgwOSB8fCBj ID0gMHgwQSB8fCBjID0gMHgwRCB8fAogICAgYyA+PSAweDIwICYmIGMgPD0gMHhEN0ZGIHx8CiAg ICBjID49IDB4RTAwMCAmJiBjIDw9IDB4RkZGRCB8fAogICAgYyA+PSAweDEwMDAwICYmIGMgPD0g MHgxMEZGRkYKICAgICAgIApsZXQgaXNfc3BhY2UgKGM6dCkgPQogIChtYXRjaCB0b19pbnQgYyB3 aXRoCiAgICAgICAweDIwIHwgMHgwOSB8IDB4MEQgfCAweDBBIC0+IHRydWUKICAgICB8IF8gLT4g ZmFsc2UpCgpsZXQgaXNfZGlnaXQgKGMnOnQpID0KICBsZXQgYyA9IHRvX2ludCBjJyBpbgogICAg KGMgPj0gNDggJiYgYyA8PSA1NykgfHwKICAgIChjID49IDE2MzIgJiYgYyA8PSAxNjQxKSB8fAog ICAgKGMgPj0gMTc3NiAmJiBjIDw9IDE3ODUpIHx8CiAgICAoYyA+PSAyNDA2ICYmIGMgPD0gMjQx NSkgfHwKICAgIChjID49IDI1MzQgJiYgYyA8PSAyNTQzKSB8fAogICAgKGMgPj0gMjY2MiAmJiBj IDw9IDI2NzEpIHx8CiAgICAoYyA+PSAyNzkwICYmIGMgPD0gMjc5OSkgfHwKICAgIChjID49IDI5 MTggJiYgYyA8PSAyOTI3KSB8fAogICAgKGMgPj0gMzA0NyAmJiBjIDw9IDMwNTUpIHx8CiAgICAo YyA+PSAzMTc0ICYmIGMgPD0gMzE4MykgfHwKICAgIChjID49IDMzMDIgJiYgYyA8PSAzMzExKSB8 fAogICAgKGMgPj0gMzQzMCAmJiBjIDw9IDM0MzkpIHx8CiAgICAoYyA+PSAzNjY0ICYmIGMgPD0g MzY3MykgfHwKICAgIChjID49IDM3OTIgJiYgYyA8PSAzODAxKSB8fAogICAgKGMgPj0gMzg3MiAm JiBjIDw9IDM4ODEpCgpsZXQgaXNfYmFzZWNoYXIgKGMnOnQpID0KICBsZXQgYyA9IHRvX2ludCBj JyBpbgogICAgKGMgPj0gNjUgJiYgYyA8PSA5MCkgfHwKICAgIChjID49IDk3ICYmIGMgPD0gMTIy KSB8fAogICAgKGMgPj0gMTkyICYmIGMgPD0gMjE0KSB8fAogICAgKGMgPj0gMjE2ICYmIGMgPD0g MjQ2KSB8fAogICAgKGMgPj0gMjQ4ICYmIGMgPD0gMjU1KSB8fAogICAgKGMgPj0gMjU2ICYmIGMg PD0gMzA1KSB8fAogICAgKGMgPj0gMzA4ICYmIGMgPD0gMzE4KSB8fAogICAgKGMgPj0gMzIxICYm IGMgPD0gMzI4KSB8fAogICAgKGMgPj0gMzMwICYmIGMgPD0gMzgyKSB8fAogICAgKGMgPj0gMzg0 ICYmIGMgPD0gNDUxKSB8fAogICAgKGMgPj0gNDYxICYmIGMgPD0gNDk2KSB8fAogICAgKGMgPj0g NTAwICYmIGMgPD0gNTAxKSB8fAogICAgKGMgPj0gNTA2ICYmIGMgPD0gNTM1KSB8fAogICAgKGMg Pj0gNTkyICYmIGMgPD0gNjgwKSB8fAogICAgKGMgPj0gNjk5ICYmIGMgPD0gNzA1KSB8fAogICAg YyA9IDkwMiB8fAogICAgKGMgPj0gOTA0ICYmIGMgPD0gOTA2KSB8fAogICAgYyA9IDkwOCB8fAog ICAgKGMgPj0gOTEwICYmIGMgPD0gOTI5KSB8fAogICAgKGMgPj0gOTMxICYmIGMgPD0gOTc0KSB8 fAogICAgKGMgPj0gOTc2ICYmIGMgPD0gOTgyKSB8fAogICAgYyA9IDk4NiB8fAogICAgYyA9IDk4 OCB8fAogICAgYyA9IDk5MCB8fAogICAgYyA9IDk5MiB8fAogICAgKGMgPj0gOTk0ICYmIGMgPD0g MTAxMSkgfHwKICAgIChjID49IDEwMjUgJiYgYyA8PSAxMDM2KSB8fAogICAgKGMgPj0gMTAzOCAm JiBjIDw9IDExMDMpIHx8CiAgICAoYyA+PSAxMTA1ICYmIGMgPD0gMTExNikgfHwKICAgIChjID49 IDExMTggJiYgYyA8PSAxMTUzKSB8fAogICAgKGMgPj0gMTE2OCAmJiBjIDw9IDEyMjApIHx8CiAg ICAoYyA+PSAxMjIzICYmIGMgPD0gMTIyNCkgfHwKICAgIChjID49IDEyMjcgJiYgYyA8PSAxMjI4 KSB8fAogICAgKGMgPj0gMTIzMiAmJiBjIDw9IDEyNTkpIHx8CiAgICAoYyA+PSAxMjYyICYmIGMg PD0gMTI2OSkgfHwKICAgIChjID49IDEyNzIgJiYgYyA8PSAxMjczKSB8fAogICAgKGMgPj0gMTMy OSAmJiBjIDw9IDEzNjYpIHx8CiAgICBjID0gMTM2OSB8fAogICAgKGMgPj0gMTM3NyAmJiBjIDw9 IDE0MTQpIHx8CiAgICAoYyA+PSAxNDg4ICYmIGMgPD0gMTUxNCkgfHwKICAgIChjID49IDE1MjAg JiYgYyA8PSAxNTIyKSB8fAogICAgKGMgPj0gMTU2OSAmJiBjIDw9IDE1OTQpIHx8CiAgICAoYyA+ PSAxNjAxICYmIGMgPD0gMTYxMCkgfHwKICAgIChjID49IDE2NDkgJiYgYyA8PSAxNzE5KSB8fAog ICAgKGMgPj0gMTcyMiAmJiBjIDw9IDE3MjYpIHx8CiAgICAoYyA+PSAxNzI4ICYmIGMgPD0gMTc0 MikgfHwKICAgIChjID49IDE3NDQgJiYgYyA8PSAxNzQ3KSB8fAogICAgYyA9IDE3NDkgfHwKICAg IChjID49IDE3NjUgJiYgYyA8PSAxNzY2KSB8fAogICAgKGMgPj0gMjMwOSAmJiBjIDw9IDIzNjEp IHx8CiAgICBjID0gMjM2NSB8fAogICAgKGMgPj0gMjM5MiAmJiBjIDw9IDI0MDEpIHx8CiAgICAo YyA+PSAyNDM3ICYmIGMgPD0gMjQ0NCkgfHwKICAgIChjID49IDI0NDcgJiYgYyA8PSAyNDQ4KSB8 fAogICAgKGMgPj0gMjQ1MSAmJiBjIDw9IDI0NzIpIHx8CiAgICAoYyA+PSAyNDc0ICYmIGMgPD0g MjQ4MCkgfHwKICAgIGMgPSAyNDgyIHx8CiAgICAoYyA+PSAyNDg2ICYmIGMgPD0gMjQ4OSkgfHwK ICAgIChjID49IDI1MjQgJiYgYyA8PSAyNTI1KSB8fAogICAgKGMgPj0gMjUyNyAmJiBjIDw9IDI1 MjkpIHx8CiAgICAoYyA+PSAyNTQ0ICYmIGMgPD0gMjU0NSkgfHwKICAgIChjID49IDI1NjUgJiYg YyA8PSAyNTcwKSB8fAogICAgKGMgPj0gMjU3NSAmJiBjIDw9IDI1NzYpIHx8CiAgICAoYyA+PSAy NTc5ICYmIGMgPD0gMjYwMCkgfHwKICAgIChjID49IDI2MDIgJiYgYyA8PSAyNjA4KSB8fAogICAg KGMgPj0gMjYxMCAmJiBjIDw9IDI2MTEpIHx8CiAgICAoYyA+PSAyNjEzICYmIGMgPD0gMjYxNCkg fHwKICAgIChjID49IDI2MTYgJiYgYyA8PSAyNjE3KSB8fAogICAgKGMgPj0gMjY0OSAmJiBjIDw9 IDI2NTIpIHx8CiAgICBjID0gMjY1NCB8fAogICAgKGMgPj0gMjY3NCAmJiBjIDw9IDI2NzYpIHx8 CiAgICAoYyA+PSAyNjkzICYmIGMgPD0gMjY5OSkgfHwKICAgIGMgPSAyNzAxIHx8CiAgICAoYyA+ PSAyNzAzICYmIGMgPD0gMjcwNSkgfHwKICAgIChjID49IDI3MDcgJiYgYyA8PSAyNzI4KSB8fAog ICAgKGMgPj0gMjczMCAmJiBjIDw9IDI3MzYpIHx8CiAgICAoYyA+PSAyNzM4ICYmIGMgPD0gMjcz OSkgfHwKICAgIChjID49IDI3NDEgJiYgYyA8PSAyNzQ1KSB8fAogICAgYyA9IDI3NDkgfHwKICAg IGMgPSAyNzg0IHx8CiAgICAoYyA+PSAyODIxICYmIGMgPD0gMjgyOCkgfHwKICAgIChjID49IDI4 MzEgJiYgYyA8PSAyODMyKSB8fAogICAgKGMgPj0gMjgzNSAmJiBjIDw9IDI4NTYpIHx8CiAgICAo YyA+PSAyODU4ICYmIGMgPD0gMjg2NCkgfHwKICAgIChjID49IDI4NjYgJiYgYyA8PSAyODY3KSB8 fAogICAgKGMgPj0gMjg3MCAmJiBjIDw9IDI4NzMpIHx8CiAgICBjID0gMjg3NyB8fAogICAgKGMg Pj0gMjkwOCAmJiBjIDw9IDI5MDkpIHx8CiAgICAoYyA+PSAyOTExICYmIGMgPD0gMjkxMykgfHwK ICAgIChjID49IDI5NDkgJiYgYyA8PSAyOTU0KSB8fAogICAgKGMgPj0gMjk1OCAmJiBjIDw9IDI5 NjApIHx8CiAgICAoYyA+PSAyOTYyICYmIGMgPD0gMjk2NSkgfHwKICAgIChjID49IDI5NjkgJiYg YyA8PSAyOTcwKSB8fAogICAgYyA9IDI5NzIgfHwKICAgIChjID49IDI5NzQgJiYgYyA8PSAyOTc1 KSB8fAogICAgKGMgPj0gMjk3OSAmJiBjIDw9IDI5ODApIHx8CiAgICAoYyA+PSAyOTg0ICYmIGMg PD0gMjk4NikgfHwKICAgIChjID49IDI5OTAgJiYgYyA8PSAyOTk3KSB8fAogICAgKGMgPj0gMjk5 OSAmJiBjIDw9IDMwMDEpIHx8CiAgICAoYyA+PSAzMDc3ICYmIGMgPD0gMzA4NCkgfHwKICAgIChj ID49IDMwODYgJiYgYyA8PSAzMDg4KSB8fAogICAgKGMgPj0gMzA5MCAmJiBjIDw9IDMxMTIpIHx8 CiAgICAoYyA+PSAzMTE0ICYmIGMgPD0gMzEyMykgfHwKICAgIChjID49IDMxMjUgJiYgYyA8PSAz MTI5KSB8fAogICAgKGMgPj0gMzE2OCAmJiBjIDw9IDMxNjkpIHx8CiAgICAoYyA+PSAzMjA1ICYm IGMgPD0gMzIxMikgfHwKICAgIChjID49IDMyMTQgJiYgYyA8PSAzMjE2KSB8fAogICAgKGMgPj0g MzIxOCAmJiBjIDw9IDMyNDApIHx8CiAgICAoYyA+PSAzMjQyICYmIGMgPD0gMzI1MSkgfHwKICAg IChjID49IDMyNTMgJiYgYyA8PSAzMjU3KSB8fAogICAgYyA9IDMyOTQgfHwKICAgIChjID49IDMy OTYgJiYgYyA8PSAzMjk3KSB8fAogICAgKGMgPj0gMzMzMyAmJiBjIDw9IDMzNDApIHx8CiAgICAo YyA+PSAzMzQyICYmIGMgPD0gMzM0NCkgfHwKICAgIChjID49IDMzNDYgJiYgYyA8PSAzMzY4KSB8 fAogICAgKGMgPj0gMzM3MCAmJiBjIDw9IDMzODUpIHx8CiAgICAoYyA+PSAzNDI0ICYmIGMgPD0g MzQyNSkgfHwKICAgIChjID49IDM1ODUgJiYgYyA8PSAzNjMwKSB8fAogICAgYyA9IDM2MzIgfHwK ICAgIChjID49IDM2MzQgJiYgYyA8PSAzNjM1KSB8fAogICAgKGMgPj0gMzY0OCAmJiBjIDw9IDM2 NTMpIHx8CiAgICAoYyA+PSAzNzEzICYmIGMgPD0gMzcxNCkgfHwKICAgIGMgPSAzNzE2IHx8CiAg ICAoYyA+PSAzNzE5ICYmIGMgPD0gMzcyMCkgfHwKICAgIGMgPSAzNzIyIHx8CiAgICBjID0gMzcy NSB8fAogICAgKGMgPj0gMzczMiAmJiBjIDw9IDM3MzUpIHx8CiAgICAoYyA+PSAzNzM3ICYmIGMg PD0gMzc0MykgfHwKICAgIChjID49IDM3NDUgJiYgYyA8PSAzNzQ3KSB8fAogICAgYyA9IDM3NDkg fHwKICAgIGMgPSAzNzUxIHx8CiAgICAoYyA+PSAzNzU0ICYmIGMgPD0gMzc1NSkgfHwKICAgIChj ID49IDM3NTcgJiYgYyA8PSAzNzU4KSB8fAogICAgYyA9IDM3NjAgfHwKICAgIChjID49IDM3NjIg JiYgYyA8PSAzNzYzKSB8fAogICAgYyA9IDM3NzMgfHwKICAgIChjID49IDM3NzYgJiYgYyA8PSAz NzgwKSB8fAogICAgKGMgPj0gMzkwNCAmJiBjIDw9IDM5MTEpIHx8CiAgICAoYyA+PSAzOTEzICYm IGMgPD0gMzk0NSkgfHwKICAgIChjID49IDQyNTYgJiYgYyA8PSA0MjkzKSB8fAogICAgKGMgPj0g NDMwNCAmJiBjIDw9IDQzNDIpIHx8CiAgICBjID0gNDM1MiB8fAogICAgKGMgPj0gNDM1NCAmJiBj IDw9IDQzNTUpIHx8CiAgICAoYyA+PSA0MzU3ICYmIGMgPD0gNDM1OSkgfHwKICAgIGMgPSA0MzYx IHx8CiAgICAoYyA+PSA0MzYzICYmIGMgPD0gNDM2NCkgfHwKICAgIChjID49IDQzNjYgJiYgYyA8 PSA0MzcwKSB8fAogICAgYyA9IDQ0MTIgfHwKICAgIGMgPSA0NDE0IHx8CiAgICBjID0gNDQxNiB8 fAogICAgYyA9IDQ0MjggfHwKICAgIGMgPSA0NDMwIHx8CiAgICBjID0gNDQzMiB8fAogICAgKGMg Pj0gNDQzNiAmJiBjIDw9IDQ0MzcpIHx8CiAgICBjID0gNDQ0MSB8fAogICAgKGMgPj0gNDQ0NyAm JiBjIDw9IDQ0NDkpIHx8CiAgICBjID0gNDQ1MSB8fAogICAgYyA9IDQ0NTMgfHwKICAgIGMgPSA0 NDU1IHx8CiAgICBjID0gNDQ1NyB8fAogICAgKGMgPj0gNDQ2MSAmJiBjIDw9IDQ0NjIpIHx8CiAg ICAoYyA+PSA0NDY2ICYmIGMgPD0gNDQ2NykgfHwKICAgIGMgPSA0NDY5IHx8CiAgICBjID0gNDUx MCB8fAogICAgYyA9IDQ1MjAgfHwKICAgIGMgPSA0NTIzIHx8CiAgICAoYyA+PSA0NTI2ICYmIGMg PD0gNDUyNykgfHwKICAgIChjID49IDQ1MzUgJiYgYyA8PSA0NTM2KSB8fAogICAgYyA9IDQ1Mzgg fHwKICAgIChjID49IDQ1NDAgJiYgYyA8PSA0NTQ2KSB8fAogICAgYyA9IDQ1ODcgfHwKICAgIGMg PSA0NTkyIHx8CiAgICBjID0gNDYwMSB8fAogICAgKGMgPj0gNzY4MCAmJiBjIDw9IDc4MzUpIHx8 CiAgICAoYyA+PSA3ODQwICYmIGMgPD0gNzkyOSkgfHwKICAgIChjID49IDc5MzYgJiYgYyA8PSA3 OTU3KSB8fAogICAgKGMgPj0gNzk2MCAmJiBjIDw9IDc5NjUpIHx8CiAgICAoYyA+PSA3OTY4ICYm IGMgPD0gODAwNSkgfHwKICAgIChjID49IDgwMDggJiYgYyA8PSA4MDEzKSB8fAogICAgKGMgPj0g ODAxNiAmJiBjIDw9IDgwMjMpIHx8CiAgICBjID0gODAyNSB8fAogICAgYyA9IDgwMjcgfHwKICAg IGMgPSA4MDI5IHx8CiAgICAoYyA+PSA4MDMxICYmIGMgPD0gODA2MSkgfHwKICAgIChjID49IDgw NjQgJiYgYyA8PSA4MTE2KSB8fAogICAgKGMgPj0gODExOCAmJiBjIDw9IDgxMjQpIHx8CiAgICBj ID0gODEyNiB8fAogICAgKGMgPj0gODEzMCAmJiBjIDw9IDgxMzIpIHx8CiAgICAoYyA+PSA4MTM0 ICYmIGMgPD0gODE0MCkgfHwKICAgIChjID49IDgxNDQgJiYgYyA8PSA4MTQ3KSB8fAogICAgKGMg Pj0gODE1MCAmJiBjIDw9IDgxNTUpIHx8CiAgICAoYyA+PSA4MTYwICYmIGMgPD0gODE3MikgfHwK ICAgIChjID49IDgxNzggJiYgYyA8PSA4MTgwKSB8fAogICAgKGMgPj0gODE4MiAmJiBjIDw9IDgx ODgpIHx8CiAgICBjID0gODQ4NiB8fAogICAgKGMgPj0gODQ5MCAmJiBjIDw9IDg0OTEpIHx8CiAg ICBjID0gODQ5NCB8fAogICAgKGMgPj0gODU3NiAmJiBjIDw9IDg1NzgpIHx8CiAgICAoYyA+PSAx MjM1MyAmJiBjIDw9IDEyNDM2KSB8fAogICAgKGMgPj0gMTI0NDkgJiYgYyA8PSAxMjUzOCkgfHwK ICAgIChjID49IDEyNTQ5ICYmIGMgPD0gMTI1ODgpIHx8CiAgICAoYyA+PSA0NDAzMiAmJiBjIDw9 IDU1MjAzKQoKbGV0IGlzX2lkZW9ncmFwaGljIChjJzp0KSA9CiAgbGV0IGMgPSB0b19pbnQgYycg aW4KICAgIChjID49IDE5OTY4ICYmIGMgPD0gNDA4NjkpIHx8CiAgICBjID0gMTIyOTUgfHwKICAg IChjID49IDEyMzIxICYmIGMgPD0gMTIzMjkpCiAgCmxldCBpc19sZXR0ZXIgKGM6dCkgPQogIGlz X2Jhc2VjaGFyIGMgfHwgaXNfaWRlb2dyYXBoaWMgYwoKbGV0IGlzX2NvbWJpbmluZ2NoYXIgKGMn OnQpID0KICBsZXQgYyA9IHRvX2ludCBjJyBpbgogICAgKGMgPj0gNzY4ICYmIGMgPD0gODM3KSB8 fAogICAgKGMgPj0gODY0ICYmIGMgPD0gODY1KSB8fAogICAgKGMgPj0gMTE1NSAmJiBjIDw9IDEx NTgpIHx8CiAgICAoYyA+PSAxNDI1ICYmIGMgPD0gMTQ0MSkgfHwKICAgIChjID49IDE0NDMgJiYg YyA8PSAxNDY1KSB8fAogICAgKGMgPj0gMTQ2NyAmJiBjIDw9IDE0NjkpIHx8CiAgICBjID0gMTQ3 MSB8fAogICAgKGMgPj0gMTQ3MyAmJiBjIDw9IDE0NzQpIHx8CiAgICBjID0gMTQ3NiB8fAogICAg KGMgPj0gMTYxMSAmJiBjIDw9IDE2MTgpIHx8CiAgICBjID0gMTY0OCB8fAogICAgKGMgPj0gMTc1 MCAmJiBjIDw9IDE3NTYpIHx8CiAgICAoYyA+PSAxNzU3ICYmIGMgPD0gMTc1OSkgfHwKICAgIChj ID49IDE3NjAgJiYgYyA8PSAxNzY0KSB8fAogICAgKGMgPj0gMTc2NyAmJiBjIDw9IDE3NjgpIHx8 CiAgICAoYyA+PSAxNzcwICYmIGMgPD0gMTc3MykgfHwKICAgIChjID49IDIzMDUgJiYgYyA8PSAy MzA3KSB8fAogICAgYyA9IDIzNjQgfHwKICAgIChjID49IDIzNjYgJiYgYyA8PSAyMzgwKSB8fAog ICAgYyA9IDIzODEgfHwKICAgIChjID49IDIzODUgJiYgYyA8PSAyMzg4KSB8fAogICAgKGMgPj0g MjQwMiAmJiBjIDw9IDI0MDMpIHx8CiAgICAoYyA+PSAyNDMzICYmIGMgPD0gMjQzNSkgfHwKICAg IGMgPSAyNDkyIHx8CiAgICBjID0gMjQ5NCB8fAogICAgYyA9IDI0OTUgfHwKICAgIChjID49IDI0 OTYgJiYgYyA8PSAyNTAwKSB8fAogICAgKGMgPj0gMjUwMyAmJiBjIDw9IDI1MDQpIHx8CiAgICAo YyA+PSAyNTA3ICYmIGMgPD0gMjUwOSkgfHwKICAgIGMgPSAyNTE5IHx8CiAgICAoYyA+PSAyNTMw ICYmIGMgPD0gMjUzMSkgfHwKICAgIGMgPSAyNTYyIHx8CiAgICBjID0gMjYyMCB8fAogICAgYyA9 IDI2MjIgfHwKICAgIGMgPSAyNjIzIHx8CiAgICAoYyA+PSAyNjI0ICYmIGMgPD0gMjYyNikgfHwK ICAgIChjID49IDI2MzEgJiYgYyA8PSAyNjMyKSB8fAogICAgKGMgPj0gMjYzNSAmJiBjIDw9IDI2 MzcpIHx8CiAgICAoYyA+PSAyNjcyICYmIGMgPD0gMjY3MykgfHwKICAgIChjID49IDI2ODkgJiYg YyA8PSAyNjkxKSB8fAogICAgYyA9IDI3NDggfHwKICAgIChjID49IDI3NTAgJiYgYyA8PSAyNzU3 KSB8fAogICAgKGMgPj0gMjc1OSAmJiBjIDw9IDI3NjEpIHx8CiAgICAoYyA+PSAyNzYzICYmIGMg PD0gMjc2NSkgfHwKICAgIChjID49IDI4MTcgJiYgYyA8PSAyODE5KSB8fAogICAgYyA9IDI4NzYg fHwKICAgIChjID49IDI4NzggJiYgYyA8PSAyODgzKSB8fAogICAgKGMgPj0gMjg4NyAmJiBjIDw9 IDI4ODgpIHx8CiAgICAoYyA+PSAyODkxICYmIGMgPD0gMjg5MykgfHwKICAgIChjID49IDI5MDIg JiYgYyA8PSAyOTAzKSB8fAogICAgKGMgPj0gMjk0NiAmJiBjIDw9IDI5NDcpIHx8CiAgICAoYyA+ PSAzMDA2ICYmIGMgPD0gMzAxMCkgfHwKICAgIChjID49IDMwMTQgJiYgYyA8PSAzMDE2KSB8fAog ICAgKGMgPj0gMzAxOCAmJiBjIDw9IDMwMjEpIHx8CiAgICBjID0gMzAzMSB8fAogICAgKGMgPj0g MzA3MyAmJiBjIDw9IDMwNzUpIHx8CiAgICAoYyA+PSAzMTM0ICYmIGMgPD0gMzE0MCkgfHwKICAg IChjID49IDMxNDIgJiYgYyA8PSAzMTQ0KSB8fAogICAgKGMgPj0gMzE0NiAmJiBjIDw9IDMxNDkp IHx8CiAgICAoYyA+PSAzMTU3ICYmIGMgPD0gMzE1OCkgfHwKICAgIChjID49IDMyMDIgJiYgYyA8 PSAzMjAzKSB8fAogICAgKGMgPj0gMzI2MiAmJiBjIDw9IDMyNjgpIHx8CiAgICAoYyA+PSAzMjcw ICYmIGMgPD0gMzI3MikgfHwKICAgIChjID49IDMyNzQgJiYgYyA8PSAzMjc3KSB8fAogICAgKGMg Pj0gMzI4NSAmJiBjIDw9IDMyODYpIHx8CiAgICAoYyA+PSAzMzMwICYmIGMgPD0gMzMzMSkgfHwK ICAgIChjID49IDMzOTAgJiYgYyA8PSAzMzk1KSB8fAogICAgKGMgPj0gMzM5OCAmJiBjIDw9IDM0 MDApIHx8CiAgICAoYyA+PSAzNDAyICYmIGMgPD0gMzQwNSkgfHwKICAgIGMgPSAzNDE1IHx8CiAg ICBjID0gMzYzMyB8fAogICAgKGMgPj0gMzYzNiAmJiBjIDw9IDM2NDIpIHx8CiAgICAoYyA+PSAz NjU1ICYmIGMgPD0gMzY2MikgfHwKICAgIGMgPSAzNzYxIHx8CiAgICAoYyA+PSAzNzY0ICYmIGMg PD0gMzc2OSkgfHwKICAgIChjID49IDM3NzEgJiYgYyA8PSAzNzcyKSB8fAogICAgKGMgPj0gMzc4 NCAmJiBjIDw9IDM3ODkpIHx8CiAgICAoYyA+PSAzODY0ICYmIGMgPD0gMzg2NSkgfHwKICAgIGMg PSAzODkzIHx8CiAgICBjID0gMzg5NSB8fAogICAgYyA9IDM4OTcgfHwKICAgIGMgPSAzOTAyIHx8 CiAgICBjID0gMzkwMyB8fAogICAgKGMgPj0gMzk1MyAmJiBjIDw9IDM5NzIpIHx8CiAgICAoYyA+ PSAzOTc0ICYmIGMgPD0gMzk3OSkgfHwKICAgIChjID49IDM5ODQgJiYgYyA8PSAzOTg5KSB8fAog ICAgYyA9IDM5OTEgfHwKICAgIChjID49IDM5OTMgJiYgYyA8PSA0MDEzKSB8fAogICAgKGMgPj0g NDAxNyAmJiBjIDw9IDQwMjMpIHx8CiAgICBjID0gNDAyNSB8fAogICAgKGMgPj0gODQwMCAmJiBj IDw9IDg0MTIpIHx8CiAgICBjID0gODQxNyB8fAogICAgKGMgPj0gMTIzMzAgJiYgYyA8PSAxMjMz NSkgfHwKICAgIGMgPSAxMjQ0MSB8fAogICAgYyA9IDEyNDQyCgpsZXQgaXNfZXh0ZW5kZXIgKGMn OnQpID0KICBsZXQgYyA9IHRvX2ludCBjJyBpbgogICAgYyA9IDE4MyB8fAogICAgYyA9IDcyMCB8 fAogICAgYyA9IDcyMSB8fAogICAgYyA9IDkwMyB8fAogICAgYyA9IDE2MDAgfHwKICAgIGMgPSAz NjU0IHx8CiAgICBjID0gMzc4MiB8fAogICAgYyA9IDEyMjkzIHx8CiAgICAoYyA+PSAxMjMzNyAm JiBjIDw9IDEyMzQxKSB8fAogICAgKGMgPj0gMTI0NDUgJiYgYyA8PSAxMjQ0NikgfHwKICAgIChj ID49IDEyNTQwICYmIGMgPD0gMTI1NDIpCgpsZXQgaXNfbmFtZWNoYXIgKGM6dCkgPQogIGlzX2xl dHRlciBjIHx8IGlzX2RpZ2l0IGMgfHwgYyA9IG9mX2NoYXIgJy4nIHx8IGMgPSBvZl9jaGFyICct JyB8fAogIGMgPSBvZl9jaGFyICdfJyB8fCBjID0gb2ZfY2hhciAnOicgfHwgaXNfY29tYmluaW5n Y2hhciBjIHx8IGlzX2V4dGVuZGVyIGMKCmxldCBpc19uY25hbWVjaGFyIChjOnQpID0KICBpc19s ZXR0ZXIgYyB8fCBpc19kaWdpdCBjIHx8IGMgPSBvZl9jaGFyICcuJyB8fCBjID0gb2ZfY2hhciAn LScgfHwKICBjID0gb2ZfY2hhciAnXycgfHwgaXNfY29tYmluaW5nY2hhciBjIHx8IGlzX2V4dGVu ZGVyIGMKCgB5YXhwby91X2NoYXIubWxpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 NAAwMDQwMzQxADAwNDAzNDEAMDAwMDAwMDEzMjIAMTAyMDAwNTQ2NzQAMDE1MjU2ACAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAw MDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAACgqKiBEZWZpbmVzIGFuIGFic3RyYWN0aW9uIGZvciBVTklDT0RFIGNoYXJhY3RlcnMu ICopCgooKiogVGhlIHR5cGUgb2YgVU5JQ09ERSBjaGFyYWN0ZXJzLiAqKQp0eXBlIHQKCigqKiBS YWlzZWQgaWYgc29tZXRoaW5nIHRyaWVzIHRvIHVzZSBhbiBpbnZhbGlkIGNoYXJhY3RlciAoaS5l Liwgb3V0c2lkZSB0aGUgcmFuZ2UgMHgwMDAwMDAtMHgxMEZGRkYpICopCmV4Y2VwdGlvbiBCYWRf Y2hhcgoKdmFsIG9mX2NoYXIgOiAoY2hhciAtPiB0KQp2YWwgb2ZfaW50IDogKGludCAtPiB0KQp2 YWwgdG9faW50IDogKHQgLT4gaW50KQp2YWwgb2ZfaW50MzIgOiAoaW50MzIgLT4gdCkKCigqKiBU aGUgZm9sbG93aW5nIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBvZiBhIHR5cGUgZGVmaW5l ZCBieSB0aGUgWE1MIHNwZWNpZmljYXRpb24uICopCgp2YWwgaXNfY2hhciA6ICh0IC0+IGJvb2wp CnZhbCBpc19zcGFjZSA6ICh0IC0+IGJvb2wpCnZhbCBpc19kaWdpdCA6ICh0IC0+IGJvb2wpCnZh bCBpc19iYXNlY2hhciA6ICh0IC0+IGJvb2wpCnZhbCBpc19pZGVvZ3JhcGhpYyA6ICh0IC0+IGJv b2wpCnZhbCBpc19sZXR0ZXIgOiAodCAtPiBib29sKQp2YWwgaXNfY29tYmluaW5nY2hhciA6ICh0 IC0+IGJvb2wpCnZhbCBpc19leHRlbmRlciA6ICh0IC0+IGJvb2wpCnZhbCBpc19uYW1lY2hhciA6 ICh0IC0+IGJvb2wpCnZhbCBpc19uY25hbWVjaGFyIDogKHQgLT4gYm9vbCkKAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB5YXhwby91dGY4X2NoYXIubWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAw MDQwMzQxADAwNDAzNDEAMDAwMDAwMDQ0MTIAMTAyMDAwNTQ2NzQAMDE1NTMyACAwAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAA MDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHR5cGUgdCA9IHN0cmluZwpleGNlcHRpb24gQmFkX2VuY29kaW5nCiAgCigqIGdpdmVuIHRo ZSBmaXJzdCBieXRlIG9mIGEgdXRmOC1lbmNvZGVkIGNoYXJhY3RlciwgZGV0ZXJtaW5lcyBob3cg bWFueSBieXRlcyBpbiB0b3RhbAogICB0aGF0IGNoYXJhY3RlciBzaG91bGQgdGFrZS4gKikKbGV0 IHV0ZjhfY2hhcmFjdGVyX3NpemUgZmlyc3RiID0KICBpZiAoZmlyc3RiIGxhbmQgMGIxMDAwMDAw MCkgPSAwIHRoZW4gMQogIGVsc2UgaWYgKGZpcnN0YiBsYW5kIDBiMTExMDAwMDApID0gMGIxMTAw MDAwMCB0aGVuIDIKICBlbHNlIGlmIChmaXJzdGIgbGFuZCAwYjExMTEwMDAwKSA9IDBiMTExMDAw MDAgdGhlbiAzCiAgZWxzZSBpZiAoZmlyc3RiIGxhbmQgMGIxMTExMTAwMCkgPSAwYjExMTEwMDAw IHRoZW4gNAogIGVsc2UgaWYgKGZpcnN0YiBsYW5kIDBiMTExMTExMDApID0gMGIxMTExMTAwMCB0 aGVuIDUKICBlbHNlIGlmIChmaXJzdGIgbGFuZCAwYjExMTExMTEwKSA9IDBiMTExMTExMDAgdGhl biA2CiAgZWxzZSByYWlzZSBCYWRfZW5jb2RpbmcKICAgIAooKiBkZWNvZGVzIHRoZSBuZXh0IHV0 ZjggY2hhcmFjdGVyIGZyb20gYSBzdHJlYW0gb2YgYnl0ZXMuICopCmxldCB1dGY4X2RlY29kZV9j aGFyYWN0ZXJfYnl0ZXN0cmVhbSAoZ2V0X25leHRieXRlOigoY2hhci0+dW5pdCktPnVuaXQpKSA9 CiAgbGV0CiAgICBjaHIgPSByZWYgKEludDMyLm9mX2ludCAwKSBpbgogICAgKCogcmVhZHMgbiAx MHh4eHh4eCB0YWlscywgbHNoaWZ0J2luZy9vcidpbmcgdGhlIHJlYWQgdmFsdWVzIGludG8gY2hy ICopCiAgbGV0IHJlYyByZWFkX3RhaWxzIG4gPQogICAgaWYgbiA+IDAgdGhlbgogICAgICBnZXRf bmV4dGJ5dGUKCShmdW4gYiAtPgoJICAgbGV0IG5leHRiID0gQ2hhci5jb2RlIGIgaW4KCSAgICAg aWYgKG5leHRiIGxhbmQgMGIxMTAwMDAwMCkgPSAwYjEwMDAwMDAwIHRoZW4KCSAgICAgICBsZXQg Y2h1bmsgPSBuZXh0YiBsYW5kIDBiMDAxMTExMTEgaW4KCQkgY2hyIDo9IEludDMyLmxvZ29yIChJ bnQzMi5zaGlmdF9sZWZ0ICFjaHIgNikgKEludDMyLm9mX2ludCBjaHVuayk7CgkJIHJlYWRfdGFp bHMgKG4gLSAxKQoJICAgICBlbHNlCgkgICAgICAgcmFpc2UgQmFkX2VuY29kaW5nKQogIGluCiAg ICBnZXRfbmV4dGJ5dGUKICAgICAgKGZ1biBiIC0+CgkgbGV0IGZpcnN0YiA9IENoYXIuY29kZSBi IGluCgkgICAoKiBkaXNwYXRjaCBvbiB0aGUgZmlyc3QgYnl0ZSB0byBzZWUgaG93IG1hbnkgdGFp bHMgd2Ugc2hvdWxkIHJlYWQgKikKCSAgIG1hdGNoIHV0ZjhfY2hhcmFjdGVyX3NpemUgZmlyc3Ri IHdpdGgKCSAgICAgICAxIC0+IGNociA6PSBJbnQzMi5vZl9pbnQgZmlyc3RiCgkgICAgIHwgMiAt PiAoY2hyIDo9IChJbnQzMi5vZl9pbnQgKGZpcnN0YiBsYW5kIDBiMDAwMTExMTEpKTsKCQkgICAg IHJlYWRfdGFpbHMgMSkKCSAgICAgfCAzIC0+IChjaHIgOj0gKEludDMyLm9mX2ludCAoZmlyc3Ri IGxhbmQgMGIwMDAwMTExMSkpOwoJCSAgICAgcmVhZF90YWlscyAyKQoJICAgICB8IDQgLT4gKGNo ciA6PSAoSW50MzIub2ZfaW50IChmaXJzdGIgbGFuZCAwYjAwMDAwMTExKSk7CgkJICAgICAgIHJl YWRfdGFpbHMgMykKCSAgICAgfCA1IC0+IChjaHIgOj0gKEludDMyLm9mX2ludCAoZmlyc3RiIGxh bmQgMGIwMDAwMDAxMSkpOwoJCSAgICAgcmVhZF90YWlscyA0KQoJICAgICB8IDYgLT4gKGNociA6 PSAoSW50MzIub2ZfaW50IChmaXJzdGIgbGFuZCAwYjAwMDAwMDAxKSk7CgkJICAgICByZWFkX3Rh aWxzIDUpCgkgICAgIHwgXyAtPiByYWlzZSBCYWRfZW5jb2RpbmcpOwogICAgVV9jaGFyLm9mX2lu dDMyICFjaHIKICAgICAgCmxldCB1dGY4X2RlY29kZV9jaGFyYWN0ZXIgKGM6dCkgPQogIGxldAog ICAgbGVuID0gU3RyaW5nLmxlbmd0aCBjIGFuZAogICAgaWR4ID0gcmVmIDAgaW4KICAgIHV0Zjhf ZGVjb2RlX2NoYXJhY3Rlcl9ieXRlc3RyZWFtCiAgICAgIChmdW4gayAtPiAKCSBpZiAhaWR4ID49 IGxlbiB0aGVuCgkgICByYWlzZSBCYWRfZW5jb2Rpbmc7CgkgbGV0IGNociA9IFN0cmluZy5nZXQg YyAhaWR4IGluCgkgICBpZHggOj0gIWlkeCArIDE7CgkgICBrIGNocikKCmxldCB0b19ieXRlcyBj ID0gKGM6c3RyaW5nKQpsZXQgb2ZfYnl0ZXMgcyA9IHMgICAgICAKbGV0IG9mX2NoYXIgYyA9CiAg aWYgKENoYXIuY29kZSBjKSA+IDEyNyB0aGVuIHJhaXNlIEJhZF9lbmNvZGluZzsKICBTdHJpbmcu bWFrZSAxIGMKbGV0IHRvX1VfY2hhciAoYzp0KSA9IHV0ZjhfZGVjb2RlX2NoYXJhY3RlciBjCmxl dCBzaXplIGMgPSBTdHJpbmcubGVuZ3RoICh0b19ieXRlcyBjKQoAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5 YXhwby91dGY4X2NoYXIubWxpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQx ADAwNDAzNDEAMDAwMDAwMDIwNjIAMTAyMDAwNTQ2NzQAMDE1NzAyACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgq KiBEZWZpbmVzIGFuIGFic3RyYWN0aW9uIGFuZCBzb21lIHV0aWxpdGllcyBmb3IgVVRGLTggZW5j b2RlZCBjaGFyYWN0ZXJzLiAqKQoKKCoqIHRoZSB0eXBlIG9mIFVURi04IGVuY29kZWQgY2hhcmFj dGVycy4gKikKdHlwZSB0CgooKiogcmFpc2VkIGlmIGFuIGludmFsaWQgVVRGLTggZW5jb2Rpbmcg aXMgZW5jb3VudGVyZWQgKikKZXhjZXB0aW9uIEJhZF9lbmNvZGluZwoKKCoqIENyZWF0ZXMgYSBV VEYtOCBjaGFyYWN0ZXIgZnJvbSBhIHJlZ3VsYXIgQVNDSUkgY2hhcmFjdGVyLgpAcmFpc2UgQmFk X2VuY29kaW5nIGlmIHRoZSBjaGFyYWN0ZXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgMC0xMjcgKikK dmFsIG9mX2NoYXIgOiAoIGNoYXIgLT4gdCApCgooKiogQ3JlYXRlcyBhIFVURi04IGNoYXJhY3Rl ciBmcm9tIGEgc3RyaW5nIG9mIGJ5dGVzLgoKe2IgV2FybmluZyF9IERvZXMgbm90IGNoZWNrIGlm IHRoZSBieXRlcyBhcmUgdmFsaWQhIFVzZSB0b19VX2NoYXIgdG8gY2hlY2suICopCnZhbCBvZl9i eXRlcyA6ICggc3RyaW5nIC0+IHQpCgooKiogRW1pdHMgYSBieXRlIHN0cmluZyBmcm9tIGEgVVRG LTggY2hhcmFjdGVyICopCnZhbCB0b19ieXRlcyA6ICggdCAtPiBzdHJpbmcgKQoKKCoqIERldGVy bWluZXMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgVVRGLTggY2hhcmFjdGVyLiAqKQp2YWwg c2l6ZSA6ICggdCAtPiBpbnQgKQoKKCoqIERlY29kZSB0aGUgY2hhcmFjdGVyIHRvIGEgVU5JQ09E RSBjaGFyYWN0ZXIuCkByYWlzZSBCYWRfZW5jb2RpbmcgaWYgdGhlcmUgd2FzIGEgZGVjb2Rpbmcg ZXJyb3IuICopCnZhbCB0b19VX2NoYXIgOiAoIHQgLT4gVV9jaGFyLnQgKQoKKCoqIERlY29kaW5n IHV0aWxpdHk6IGdpdmVuIGp1c3QgdGhlIGZpcnN0IGJ5dGUgb2YgYSB1dGYtOCBjaGFyYWN0ZXIs IGRldGVybWluZXMgaG93IG1hbnkgYnl0ZXMgdGhlIHdob2xlIGNoYXJhY3RlciBzaG91bGQgYmUu IChJbiBVVEYtOCwgdGhpcyBpbmZvcm1hdGlvbiBpcyBlbmNvZGVkIGluIHRoZSBmaXJzdCBieXRl KSAqKQp2YWwgdXRmOF9jaGFyYWN0ZXJfc2l6ZSA6ICggaW50IC0+IGludCApCgAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHlheHBv L3V0ZjhfbGl0Lm1sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwNDAzNDEAMDA0 MDM0MQAwMDAwMDAwMTI1MgAxMDIwMDA1NDY3NAAwMTU0MDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAG1pa2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGV0IHF1 b3QgPSBVdGY4X2NoYXIub2ZfY2hhciAnIicKbGV0IHNlbWljb2xvbiA9IFV0ZjhfY2hhci5vZl9j aGFyICc7JwpsZXQgYW1wID0gVXRmOF9jaGFyLm9mX2NoYXIgJyYnCmxldCBoYXNoID0gVXRmOF9j aGFyLm9mX2NoYXIgJyMnCmxldCBsdCA9IFV0ZjhfY2hhci5vZl9jaGFyICc8JwpsZXQgZ3QgPSBV dGY4X2NoYXIub2ZfY2hhciAnPicKbGV0IGJrc2xhc2ggPSBVdGY4X2NoYXIub2ZfY2hhciAnXFwn CmxldCBhcG9zID0gVXRmOF9jaGFyLm9mX2NoYXIgJ1wnJwpsZXQgcXVvdCA9IFV0ZjhfY2hhci5v Zl9jaGFyICciJwpsZXQgY29sb24gPSBVdGY4X2NoYXIub2ZfY2hhciAnOicKbGV0IGVxID0gVXRm OF9jaGFyLm9mX2NoYXIgJz0nCmxldCB1c2NvcmUgPSBVdGY4X2NoYXIub2ZfY2hhciAnXycKbGV0 IHNsYXNoID0gVXRmOF9jaGFyLm9mX2NoYXIgJy8nCmxldCBxdWVzID0gVXRmOF9jaGFyLm9mX2No YXIgJz8nCmxldCBleGNsID0gVXRmOF9jaGFyLm9mX2NoYXIgJyEnCmxldCBvcGVuYnIgPSBVdGY4 X2NoYXIub2ZfY2hhciAnWycKbGV0IGNsb3NlYnIgPSBVdGY4X2NoYXIub2ZfY2hhciAnXScKbGV0 IGRhc2ggPSBVdGY4X2NoYXIub2ZfY2hhciAnLScKCmxldCB0d29kYXNoZXMgPSAiLS0iCmxldCBx dWVzZ3QgPSAiPz4iCmxldCBvcGVuYnJfY2RhdGFfb3BlbmJyID0gIltDREFUQVsiCgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHlheHBvL3V0 ZjhfbGl0Lm1saQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwNDAzNDEAMDA0MDM0 MQAwMDAwMDAwMDc2NQAxMDIwMDA1NDY3NAAwMTU1NjUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAG1pa2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmFsIHF1b3Qg OiBVdGY4X2NoYXIudAp2YWwgc2VtaWNvbG9uIDogVXRmOF9jaGFyLnQKdmFsIGFtcCA6IFV0Zjhf Y2hhci50CnZhbCBoYXNoIDogVXRmOF9jaGFyLnQKdmFsIGx0IDogVXRmOF9jaGFyLnQKdmFsIGd0 IDogVXRmOF9jaGFyLnQKdmFsIGJrc2xhc2ggOiBVdGY4X2NoYXIudAp2YWwgYXBvcyA6IFV0Zjhf Y2hhci50CnZhbCBxdW90IDogVXRmOF9jaGFyLnQKdmFsIGNvbG9uIDogVXRmOF9jaGFyLnQKdmFs IGVxIDogVXRmOF9jaGFyLnQKdmFsIHVzY29yZSA6IFV0ZjhfY2hhci50CnZhbCBzbGFzaCA6IFV0 ZjhfY2hhci50CnZhbCBxdWVzIDogVXRmOF9jaGFyLnQKdmFsIGV4Y2wgOiBVdGY4X2NoYXIudAp2 YWwgb3BlbmJyIDogVXRmOF9jaGFyLnQKdmFsIGNsb3NlYnIgOiBVdGY4X2NoYXIudAp2YWwgZGFz aCA6IFV0ZjhfY2hhci50CnZhbCB0d29kYXNoZXMgOiBzdHJpbmcKdmFsIHF1ZXNndCA6IHN0cmlu Zwp2YWwgb3BlbmJyX2NkYXRhX29wZW5iciA6IHN0cmluZwoKAAAAAAAAAAAAAAB5YXhwby91dGY4 dGVzdC50eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQxADAwNDAzNDEA MDAwMDAwMDc2MjEAMTAyMDAwNTQ2NzQAMDE1NjUxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFNlbnRlbmNlcyB0 aGF0IGNvbnRhaW4gYWxsIGxldHRlcnMgY29tbW9ubHkgdXNlZCBpbiBhIGxhbmd1YWdlCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgpNYXJrdXMgS3VobiA8bWt1aG5AYWNtLm9yZz4gLS0gMjAwMS0wOS0wMgoKVGhpcyBmaWxlIGlz IFVURi04IGVuY29kZWQuCgoKRGFuaXNoIChkYSkKLS0tLS0tLS0tCgogIFF1aXpkZWx0YWdlcm5l IHNwaXN0ZSBqb3JkYsOmciBtZWQgZmzDuGRlLCBtZW5zIGNpcmt1c2tsb3ZuZW4KICBXb2x0aGVy IHNwaWxsZWRlIHDDpSB4eWxvZm9uLgogICg9IFF1aXogY29udGVzdGFudHMgd2VyZSBlYXRpbmcg c3RyYXdiZXJ5IHdpdGggY3JlYW0gd2hpbGUgV29sdGhlcgogIHRoZSBjaXJjdXMgY2xvd24gcGxh eWVkIG9uIHh5bG9waG9uZS4pCgpHZXJtYW4gKGRlKQotLS0tLS0tLS0tLQoKICBGYWxzY2hlcyDD nGJlbiB2b24gWHlsb3Bob25tdXNpayBxdcOkbHQgamVkZW4gZ3LDtsOfZXJlbiBad2VyZwogICg9 IFdyb25nZnVsIHByYWN0aWNpbmcgb2YgeHlsb3Bob25lIG11c2ljIHRvcnR1cmVzIGV2ZXJ5IGxh cmdlciBkd2FyZikKCiAgWnfDtmxmIEJveGvDpG1wZmVyIGphZ3RlbiBFdmEgcXVlciDDvGJlciBk ZW4gU3lsdGVyIERlaWNoCiAgKD0gVHdlbHZlIGJveGluZyBmaWdodGVycyBodW50ZWQgRXZhIGFj cm9zcyB0aGUgZGlrZSBvZiBTeWx0KQoKICBIZWl6w7ZscsO8Y2tzdG/Dn2FiZMOkbXBmdW5nCiAg KD0gZnVlbCBvaWwgcmVjb2lsIGFic29yYmVyKQogIChqcXZ3eHkgbWlzc2luZywgYnV0IGFsbCBu b24tQVNDSUkgbGV0dGVycyBpbiBvbmUgd29yZCkKCkVuZ2xpc2ggKGVuKQotLS0tLS0tLS0tLS0K CiAgVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZwoKU3BhbmlzaCAo ZXMpCi0tLS0tLS0tLS0tLQoKICBFbCBwaW5nw7xpbm8gV2VuY2VzbGFvIGhpem8ga2lsw7NtZXRy b3MgYmFqbyBleGhhdXN0aXZhIGxsdXZpYSB5IAogIGZyw61vLCBhw7FvcmFiYSBhIHN1IHF1ZXJp ZG8gY2FjaG9ycm8uCiAgKENvbnRhaW5zIGV2ZXJ5IGxldHRlciBhbmQgZXZlcnkgYWNjZW50LCBi dXQgbm90IGV2ZXJ5IGNvbWJpbmF0aW9uCiAgb2Ygdm93ZWwgKyBhY3V0ZS4pCgpGcmVuY2ggKGZy KQotLS0tLS0tLS0tLQoKICBQb3J0ZXogY2UgdmlldXggd2hpc2t5IGF1IGp1Z2UgYmxvbmQgcXVp IGZ1bWUgc3VyIHNvbiDDrmxlIGludMOpcmlldXJlLCDDoAogIGPDtHTDqSBkZSBsJ2FsY8O0dmUg b3Zvw69kZSwgb8O5IGxlcyBiw7tjaGVzIHNlIGNvbnN1bWVudCBkYW5zIGwnw6J0cmUsIGNlCiAg cXVpIGx1aSBwZXJtZXQgZGUgcGVuc2VyIMOgIGxhIGPDpm5vZ2Vuw6hzZSBkZSBsJ8OqdHJlIGRv bnQgaWwgZXN0IHF1ZXN0aW9uCiAgZGFucyBsYSBjYXVzZSBhbWJpZ3XDqyBlbnRlbmR1ZSDDoCBN b8O/LCBkYW5zIHVuIGNhcGhhcm5hw7xtIHF1aSwKICBwZW5zZS10LWlsLCBkaW1pbnVlIMOnw6Ag ZXQgbMOgIGxhIHF1YWxpdMOpIGRlIHNvbiDFk3V2cmUuIAoKICBsJ8OubGUgZXhpZ3XDqwogIE/D uSBsJ29iw6hzZSBqdXJ5IG3Du3IKICBGw6p0ZSBsJ2hhw68gdm9sYXDDvGssCiAgw4JuZSBleCBh w6lxdW8gYXUgd2hpc3QsCiAgw5R0ZXogY2UgdsWTdSBkw6nDp3UuCgogIExlIGPFk3VyIGTDqcOn dSBtYWlzIGwnw6JtZSBwbHV0w7R0IG5hw692ZSwgTG91w79zIHLDqnZhIGRlIGNyYXBhw7x0ZXIg ZW4KICBjYW5vw6sgYXUgZGVsw6AgZGVzIMOubGVzLCBwcsOocyBkdSBtw6Rsc3Ryw7ZtIG/DuSBi csO7bGVudCBsZXMgbm92w6YuCgpJcmlzaCBHYWVsaWMgKGdhKQotLS0tLS0tLS0tLS0tLS0tLQoK ICBEJ2ZodWFzY2FpbCDDjW9zYSwgw5pybWhhYyBuYSBow5NpZ2hlIEJlYW5uYWl0aGUsIHDDs3Ig w4lhdmEgYWd1cyDDgWRoYWltaAoKSHVuZ2FyaWFuIChodSkKLS0tLS0tLS0tLS0tLS0KCiAgw4Fy dsOtenTFsXLFkSB0w7xrw7ZyZsO6csOzZ8OpcAogICg9IGZsb29kLXByb29mIG1pcnJvci1kcmls bGluZyBtYWNoaW5lKQoKSWNlbGFuZGljIChpcykKLS0tLS0tLS0tLS0tLS0KCiAgS8OmbWkgbsO9 IMO2eGkgaMOpciB5a2lzdCDDvmrDs2Z1bSBuw7ogYsOmw7BpIHbDrWwgb2cgw6FkcmVwYQoKICBT w6Z2w7ZyIGdyw6l0IMOhw7BhbiDDvnbDrSDDumxwYW4gdmFyIMOzbsO9dAogIChzb21lIEFTQ0lJ IGxldHRlcnMgbWlzc2luZykKCkphcGFuZXNlIChqcCkKLS0tLS0tLS0tLS0tLQoKICBIaXJhZ2Fu YTogKElyb2hhKQoKICDjgYTjgo3jga/jgavjgbvjgbjjgajjgaHjgorjgazjgovjgpIKICDjgo/j gYvjgojjgZ/jgozjgZ3jgaTjga3jgarjgonjgoAKICDjgYbjgpDjga7jgYrjgY/jgoTjgb7jgZHj gbXjgZPjgYjjgaYKICDjgYLjgZXjgY3jgobjgoHjgb/jgZfjgpHjgbLjgoLjgZvjgZkKCiAgS2F0 YWthbmE6CgogIOOCpOODreODj+ODi+ODm+ODmOODiCDjg4Hjg6rjg4zjg6vjg7Ig44Ov44Kr44Oo 44K/44Os44K9IOODhOODjeODiuODqeODoAogIOOCpuODsOODjuOCquOCr+ODpOODniDjgrHjg5Xj grPjgqjjg4Yg44Ki44K144Kt44Om44Oh44Of44K3IOODseODkuODouOCu+OCueODswoKSGVicmV3 IChpdykKLS0tLS0tLS0tLS0KCiAgPyDXk9eSINeh16fXqNefINep15gg15HXmdedINee15DXldeb 15bXkSDXldec16TXqteiINee16bXkCDXnNeVINeX15HXqNeUINeQ15nXmiDXlNen15zXmdeY15QK ClBvbGlzaCAocGwpCi0tLS0tLS0tLS0tCgogIFBjaG7EhcSHIHcgdMSZIMWCw7NkxbogamXFvGEg bHViIG/Fm20gc2tyennFhCBmaWcKClJ1c3NpYW4gKHJ1KQotLS0tLS0tLS0tLS0KCiAg0JIg0YfQ sNGJ0LDRhSDRjtCz0LAg0LbQuNC7INCx0Ysg0YbQuNGC0YDRg9GBPyDQlNCwLCDQvdC+INGE0LDQ u9GM0YjQuNCy0YvQuSDRjdC60LfQtdC80L/Qu9GP0YAhCiAgKD0gV291bGQgYSBjaXRydXMgbGl2 ZSBpbiB0aGUgYnVzaGVzIG9mIHNvdXRoPyBZZXMsIGJ1dCBvbmx5IGEgZmFrZSBvbmUhKQoKVGhh aSAodGgpCi0tLS0tLS0tLQoKICBbLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tXQogIOC5jyDguYDguJvguYfguJnguKHguJnguLjguKnguKLguYzguKrg uLjguJTguJvguKPguLDguYDguKrguKPguLTguJDguYDguKXguLTguKjguITguLjguJPguITguYjg uLIgIOC4geC4p+C5iOC4suC4muC4o+C4o+C4lOC4suC4neC4ueC4h+C4quC4seC4leC4p+C5jOC5 gOC4lOC4o+C4seC4iOC4ieC4suC4mQogIOC4iOC4h+C4neC5iOC4suC4n+C4seC4meC4nuC4seC4 kuC4meC4suC4p+C4tOC4iuC4suC4geC4suC4oyAgICAgICAgICAg4Lit4Lii4LmI4Liy4Lil4LmJ 4Liy4LiH4Lic4Lil4Liy4LiN4Lik4LmF4LmA4LiC4LmI4LiZ4LiG4LmI4Liy4Lia4Li14LiR4Liy 4LmD4LiE4LijCiAg4LmE4Lih4LmI4LiW4Li34Lit4LmC4LiX4Lip4LmC4LiB4Lij4LiY4LmB4LiK 4LmI4LiH4LiL4Lix4LiU4Liu4Li24LiU4Liu4Lix4LiU4LiU4LmI4LiyICAgICDguKvguLHguJTg uK3guKDguLHguKLguYDguKvguKHguLfguK3guJnguIHguLXguKzguLLguK3guLHguIrguIzguLLg uKrguLHguKIKICDguJvguI/guLTguJrguLHguJXguLTguJvguKPguLDguJ7guKTguJXguLTguIHg uI7guIHguLPguKvguJnguJTguYPguIggICAgICAgIOC4nuC4ueC4lOC4iOC4suC5g+C4q+C5ieC4 iOC5iuC4sOC5hiDguIjguYvguLLguYYg4LiZ4LmI4Liy4Lif4Lix4LiH4LmA4Lit4LiiIOC4rwoK ICBbVGhlIGNvcHlyaWdodCBmb3IgdGhlIFRoYWkgZXhhbXBsZSBpcyBvd25lZCBieSBUaGUgQ29t cHV0ZXIKICBBc3NvY2lhdGlvbiBvZiBUaGFpbGFuZCB1bmRlciB0aGUgUm95YWwgUGF0cm9uYWdl IG9mIEhpcyBNYWplc3R5IHRoZQogIEtpbmcuXQoKUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSBm aW5kIG90aGVycyEgU3BlY2lhbCB0aGFua3MgdG8gdGhlIHBlb3BsZQpmcm9tIGFsbCBvdmVyIHRo ZSB3b3JsZCB3aG8gY29udHJpYnV0ZWQgdGhlc2Ugc2VudGVuY2VzLgoAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5YXhwby95YXhwby5tbAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQxADAwNDAzNDEAMDAwMDAwMzQ0 NDIAMTAyNTM0NTQ3NTMAMDE1MDI3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtaWtlbGlu AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgqCnlheHBvLm1sCk1pa2UgTGlu Cm1pa2VsaW5AbWl0LmVkdQoqKQoKKCogbGV4aW5nIHJvdXRpbmVzICopCgpleGNlcHRpb24gTGV4 X2Vycm9yIG9mIHN0cmluZwoKdHlwZSB0eHQgPSBzdHJpbmcKdHlwZSBjZGF0YSA9IHN0cmluZwp0 eXBlIHFuYW1lID0geyBwZng6dHh0OyBsb2NhbDp0eHQgfSAoKiBwZnggPSAiIiAtPiBubyBwcmVm aXggKikKdHlwZSBhdHQgPSB7IGF0dF9uYW1lOnFuYW1lOyBtdXRhYmxlIGF0dF92YWx1ZTp0eHQg fQoKbGV0IHN0cmluZ19vZl9xbmFtZSBuYW1lID0gCiAgaWYgKFN0cmluZy5sZW5ndGggbmFtZS5w ZngpID4gMCB0aGVuCiAgICBuYW1lLnBmeCBeICI6IiBeIG5hbWUubG9jYWwKICBlbHNlCiAgICBu YW1lLmxvY2FsCgpsZXQgc3RyaW5nX29mX2F0dCBhdHQgPSAoc3RyaW5nX29mX3FuYW1lIGF0dC5h dHRfbmFtZSkgXiAiPVwiIiBeIGF0dC5hdHRfdmFsdWUgXiAiXCIiCgpsZXQgc2tpcF93cyAocmVh ZGVyOiNDcHNfcmVhZGVyLnQpIChrOih1bml0LT51bml0KSkgPQogIHJlYWRlciNyZWFkX3doaWxl CiAgICAoZnVuIGMgLT4KICAgICAgIG1hdGNoIFV0ZjhfY2hhci50b19ieXRlcyBjIHdpdGgKCSAg ICIgIiB8ICJcbiIgfCAiXHIiIHwgIlx0IiAtPiB0cnVlCgkgfCBfIC0+IGZhbHNlKQogICAgKGZ1 biB3aGl0ZXNwYWNlIC0+IGsgKCkpCgpsZXQgcmVhZF9uIChyZWFkZXI6I0Nwc19yZWFkZXIudCkg biAoazooc3RyaW5nLT51bml0KSkgPQogIGxldCBzb2ZhciA9IHJlZiAoLTEpIGluCiAgICByZWFk ZXIjcmVhZF93aGlsZQogICAgICAoZnVuIGMgLT4gc29mYXIgOj0gIXNvZmFyICsgMTsgIXNvZmFy IDwgbikKICAgICAgawoKKCogTmFtZSAgICA6Oj0gICAgKExldHRlciB8ICdfJyB8ICc6JykgKE5h bWVDaGFyKSogKikKbGV0IHJlYWRfbmFtZSAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOihzdHJp bmctPnVuaXQpKSA9CiAgcmVhZGVyI3JlYWRfY2hhcgogICAgKGZ1biBmaXJzdGMgLT4KICAgICAg IGxldCBjaHIgPSBVdGY4X2NoYXIudG9fVV9jaGFyIGZpcnN0YyBpbgoJIGlmIG5vdCAoKFVfY2hh ci5pc19sZXR0ZXIgY2hyKSB8fCBjaHIgPSBVX2NoYXIub2ZfY2hhciAnXycgfHwgY2hyID0gVV9j aGFyLm9mX2NoYXIgJzonKSB0aGVuCgkgICByYWlzZSAoTGV4X2Vycm9yICgiSW52YWxpZCBjaGFy YWN0ZXIgaW4gbmFtZTogIiBeIChVdGY4X2NoYXIudG9fYnl0ZXMgZmlyc3RjKSkpOwoJIHJlYWRl ciNyZWFkX3doaWxlCgkgICAoZnVuIGMgLT4gVV9jaGFyLmlzX25hbWVjaGFyIChVdGY4X2NoYXIu dG9fVV9jaGFyIGMpKQoJICAgKGZ1biByZXN0IC0+CgkgICAgICBrICgoVXRmOF9jaGFyLnRvX2J5 dGVzIGZpcnN0YykgXiByZXN0KSkpCgooKiBOQ05hbWUgIDo6PSAoTGV0dGVyIHwgJ18nKSAoTkNO YW1lQ2hhcikqICopCmxldCByZWFkX25jbmFtZSAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOihz dHJpbmctPnVuaXQpKSA9CiAgcmVhZGVyI3JlYWRfY2hhcgogICAgKGZ1biBmaXJzdGMgLT4KICAg ICAgIGxldCBjaHIgPSBVdGY4X2NoYXIudG9fVV9jaGFyIGZpcnN0YyBpbgoJIGlmIG5vdCAoKFVf Y2hhci5pc19sZXR0ZXIgY2hyKSB8fCBjaHIgPSBVX2NoYXIub2ZfY2hhciAnXycpIHRoZW4KCSAg IHJhaXNlIChMZXhfZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBuYW1lOiAiIF4gKFV0Zjhf Y2hhci50b19ieXRlcyBmaXJzdGMpKSk7CgkgcmVhZGVyI3JlYWRfd2hpbGUKCSAgIChmdW4gYyAt PiBVX2NoYXIuaXNfbmNuYW1lY2hhciAoVXRmOF9jaGFyLnRvX1VfY2hhciBjKSkKCSAgIChmdW4g cmVzdCAtPgoJICAgICAgayAoKFV0ZjhfY2hhci50b19ieXRlcyBmaXJzdGMpIF4gcmVzdCkpKQoK KCogcGlja3MgdXAgcmVhZGluZyBhIGRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZSBmcm9tICYj CiAgIChyZWFkZXIgc2hvdWxkIHBvaW50IHRvIGZpcnN0IGRpZ2l0KSAqKQpsZXQgcmVhZF9yZXN0 X2RlY19jaGFyX3JlZmVyZW5jZSAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOihzdHJpbmctPnVu aXQpKSA9CiAgcmVhZGVyI3JlYWRfd2hpbGUKICAgIChmdW4gYyAtPgogICAgICAgaWYgKFV0Zjhf Y2hhci5zaXplIGMpIDw+IDEgdGhlbgoJIHJhaXNlIChMZXhfZXJyb3IgKCJJbnZhbGlkIGNoYXJh Y3RlciBpbiBjaGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0ZjhfY2hhci50b19ieXRlcyBjKSkp OwogICAgICAgKG1hdGNoIChTdHJpbmcuZ2V0IChVdGY4X2NoYXIudG9fYnl0ZXMgYykgMCkgd2l0 aAoJICAgICcwJyAuLiAnOScgLT4gdHJ1ZQoJICB8ICc7JyAtPiBmYWxzZQoJICB8IF8gYXMgYnMg LT4gcmFpc2UgKExleF9lcnJvciAoIkludmFsaWQgY2hhcmFjdGVyIGluIGNoYXJhY3RlciByZWZl cmVuY2U6ICIgXiAoVXRmOF9jaGFyLnRvX2J5dGVzIGMpICkpKSkKICAgIChmdW4gZGVjX2NoYXIg LT4KICAgICAgIHJlYWRlciNyZWFkX2NoYXIKICAgICAgIChmdW4gc2VtaWNvbG9uIC0+CgkgIGsg KCImIyIgXiBkZWNfY2hhciBeICI7IikpKSAoKiBUT0RPOiBjaGVjayBudW1lcmljYWwgdmFsaWRp dHkhICopCgooKiBwaWNrcyB1cCByZWFkaW5nIGEgaGV4IGNoYXJhY3RlciByZWZlcmVuY2UgZnJv bSAmIwogICAoYXNzdW1lcyB0aGUgeCBoYXMgYWxyZWFkeSBiZWVuIHBlZWtlZCAtIHJlYWRlciBz aG91bGQgcG9pbnQgdG8geCkgKikKbGV0IHJlYWRfcmVzdF9oZXhfY2hhcl9yZWZlcmVuY2UgKHJl YWRlcjojQ3BzX3JlYWRlci50KSAoazooc3RyaW5nLT51bml0KSkgPQogIHJlYWRlciNyZWFkX2No YXIKICAgIChmdW4geCAtPgogICAgICAgcmVhZGVyI3JlYWRfd2hpbGUKICAgICAgIChmdW4gYyAt PgoJICBpZiAoVXRmOF9jaGFyLnNpemUgYykgPD4gMSB0aGVuCgkgICAgcmFpc2UgKExleF9lcnJv ciAoIkludmFsaWQgY2hhcmFjdGVyIGluIGNoYXJhY3RlciByZWZlcmVuY2U6ICIgXiAoVXRmOF9j aGFyLnRvX2J5dGVzIGMpKSk7CgkgIChtYXRjaCAoU3RyaW5nLmdldCAoVXRmOF9jaGFyLnRvX2J5 dGVzIGMpIDApIHdpdGgKCSAgICAgICAnMCcgLi4gJzknIC0+IHRydWUKCSAgICAgfCAnYScgLi4g J2YnIC0+IHRydWUKCSAgICAgfCAnQScgLi4gJ0YnIC0+IHRydWUKCSAgICAgfCAnOycgLT4gZmFs c2UKCSAgICAgfCBfIC0+IHJhaXNlIChMZXhfZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBj aGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0ZjhfY2hhci50b19ieXRlcyBjKSkpKSkKICAgICAg IChmdW4gaGV4X2NoYXIgLT4KCSAgcmVhZGVyI3JlYWRfY2hhcgoJICAoZnVuIHNlbWljb2xvbiAt PgoJICAgICBrICgiJiN4IiBeIGhleF9jaGFyIF4gIjsiKSkpKSAoKiBUT0RPOiBjaGVjayBudW1l cmljYWwgdmFsaWRpdHkhICopCgooKiBwaWNrcyB1cCByZWFkaW5nIGEgY2hhcmFjdGVyIHJlZmVy ZW5jZSBmcm9tICYjCiAgIChhc3N1bWVzIHRoZSAjIGhhcyBhbHJlYWR5IGJlZW4gcGVla2VkIC0g cmVhZGVyIHNob3VsZCBwb2ludCB0byAjKSAqKQpsZXQgcmVhZF9yZXN0X2NoYXJfcmVmZXJlbmNl IChyZWFkZXI6I0Nwc19yZWFkZXIudCkgKGs6KHN0cmluZy0+dW5pdCkpID0KICByZWFkZXIjcmVh ZF9jaGFyCiAgICAoZnVuIG51bWJlcl9zaWduIC0+CiAgICAgICBhc3NlcnQgKG51bWJlcl9zaWdu ID0gVXRmOF9saXQuaGFzaCk7CiAgICAgICByZWFkZXIjcGVla19jaGFyCiAgICAgICAoZnVuIGMg LT4KCSAgaWYgKFV0ZjhfY2hhci5zaXplIGMpIDw+IDEgdGhlbgoJICAgIHJhaXNlIChMZXhfZXJy b3IgKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0Zjhf Y2hhci50b19ieXRlcyBjKSkpOwoJICAobWF0Y2ggKFN0cmluZy5nZXQgKFV0ZjhfY2hhci50b19i eXRlcyBjKSAwKSB3aXRoCgkgICAgICAgJ3gnIC0+IHJlYWRfcmVzdF9oZXhfY2hhcl9yZWZlcmVu Y2UgcmVhZGVyIGsKCSAgICAgfCAnMCcgLi4gJzknIC0+IHJlYWRfcmVzdF9kZWNfY2hhcl9yZWZl cmVuY2UgcmVhZGVyIGsKCSAgICAgfCBfIC0+IHJhaXNlIChMZXhfZXJyb3IgKCJJbnZhbGlkIGNo YXJhY3RlciBpbiBjaGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0ZjhfY2hhci50b19ieXRlcyBj KSkpKSkpCgooKiBwaWNrcyB1cCByZWFkaW5nIGFuIGVudGl0eSByZWZlcmVuY2UgZnJvbSAmPHg+ LCB3aGVyZSA8eD4gaXMgbm90ICMKICAgKHJlYWRlciBzaG91bGQgcG9pbnQgdG8gPHg+KSAqKQps ZXQgcmVhZF9yZXN0X2VudGl0eV9yZWZlcmVuY2UgcmVhZGVyIGsgPQogIHJlYWRfbmFtZSByZWFk ZXIKICAgIChmdW4gbmFtZSAtPgogICAgICAgcmVhZGVyI3JlYWRfY2hhcgogICAgICAgKGZ1biBz ZW1pY29sb24gLT4KCSAgaWYgbm90IChzZW1pY29sb24gPSBVdGY4X2xpdC5zZW1pY29sb24pIHRo ZW4KCSAgICByYWlzZSAoTGV4X2Vycm9yICJTZW1pY29sb24gZXhwZWN0ZWQiKTsKCSAgayAoIiYi IF4gbmFtZSBeICI7IikpCSAgKQoKKCogcmVhZHMgYSByZWZlcmVuY2UuCiAgIChyZWFkZXIgc2hv dWxkIHBvaW50IHRvICYpCiAgIG5iOiByZWZlcmVuY2VzIGFyZSBvbmx5IGNoZWNrZWQgZm9yIHdl bGwtZm9ybWVkbmVzczsgdGhleSBhcmUgbm90IHJlc29sdmVkLgoqKQpsZXQgcmVhZF9yZWZlcmVu Y2UgKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazooc3RyaW5nLT51bml0KSkgPQogIHJlYWRlciNy ZWFkX2NoYXIKICAgIChmdW4gYW1wZXJzYW5kIC0+CiAgICAgICBpZiBub3QgKGFtcGVyc2FuZCA9 IFV0ZjhfbGl0LmFtcCkgdGhlbgoJIHJhaXNlIChMZXhfZXJyb3IgIicmJyBleHBlY3RlZCIpOwog ICAgICAgcmVhZGVyI3BlZWtfY2hhcgoJIChmdW4gbmV4dGMgLT4KCSAgICBpZiBuZXh0YyA9IFV0 ZjhfbGl0Lmhhc2ggdGhlbgoJICAgICAgcmVhZF9yZXN0X2NoYXJfcmVmZXJlbmNlIHJlYWRlciBr CgkgICAgZWxzZQoJICAgICAgcmVhZF9yZXN0X2VudGl0eV9yZWZlcmVuY2UgcmVhZGVyIGspKQoK bGV0IHJlYWRfY2hhcmRhdGEgKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazooc3RyaW5nLT51bml0 KSkgPQogIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpbgogIGxldCByZWMgaGVscGVyICgpID0K ICAgIHJlYWRlciNyZWFkX3doaWxlCiAgICAoZnVuIGMgLT4gbm90IChjID0gVXRmOF9saXQubHQg b3IgYyA9IFV0ZjhfbGl0LmFtcCkpCiAgICAoZnVuIHN0ciAtPgogICAgICAgQnVmZmVyLmFkZF9z dHJpbmcgYiBzdHI7CiAgICAgICByZWFkZXIjcGVla19jaGFyCgkgKGZ1biBjIC0+CgkgICAgaWYg YyA9IFV0ZjhfbGl0LmFtcCB0aGVuCgkgICAgICAocmVhZF9yZWZlcmVuY2UgcmVhZGVyCgkJIChm dW4gc3RyIC0+CgkJICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgc3RyOwoJCSAgICBoZWxwZXIoKSkp CgkgICAgZWxzZQoJICAgICAgayAoQnVmZmVyLmNvbnRlbnRzIGIpKSkgaW4KICAgIGhlbHBlciAo KQoKKCogVE9ETzogYXR0cmlidXRlIHZhbHVlIG5vcm1hbGl6YXRpb24gKikJCQpsZXQgcmVhZF9h dHR2YWx1ZSAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOihzdHJpbmctPnVuaXQpKSA9CiAgbGV0 IHF1b3RlID0gcmVmIFV0ZjhfbGl0LnF1b3QgaW4KICAgIHJlYWRlciNyZWFkX2NoYXIKICAgICAg KGZ1biBjIC0+CgkgaWYgYyA9IFV0ZjhfbGl0LnF1b3Qgb3IgYyA9IFV0ZjhfbGl0LmFwb3MgdGhl bgoJICAgcXVvdGUgOj0gYwoJIGVsc2UKCSAgIHJhaXNlIChMZXhfZXJyb3IgIkV4cGVjdGVkIFwi IG9yICciKTsKCSBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgOCBpbgoJIGxldCByZWMgaGVscGVyICgp ID0KCSAgIHJlYWRlciNyZWFkX3doaWxlCgkgICAgIChmdW4gYyAtPiBub3QgKGMgPSBVdGY4X2xp dC5sdCBvciBjID0gVXRmOF9saXQuYW1wIG9yIGMgPSAhcXVvdGUpKQoJICAgICAoZnVuIHN0ciAt PgoJCUJ1ZmZlci5hZGRfc3RyaW5nIGIgc3RyOwoJCXJlYWRlciNwZWVrX2NoYXIKCQkgIChmdW4g YyAtPgoJCSAgICAgaWYgYyA9IFV0ZjhfbGl0LmFtcCB0aGVuCgkJICAgICAgIChyZWFkX3JlZmVy ZW5jZSByZWFkZXIKCQkJICAoZnVuIHN0ciAtPgoJCQkgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIg c3RyOwoJCQkgICAgIGhlbHBlcigpKSkKCQkgICAgIGVsc2UgaWYgYyA9ICFxdW90ZSB0aGVuCgkJ ICAgICAgIChyZWFkZXIjcmVhZF9jaGFyIChmdW4gZW5kcXVvdGUgLT4gayAoQnVmZmVyLmNvbnRl bnRzIGIpKSkKCQkgICAgIGVsc2UKCQkgICAgICAgcmFpc2UgKExleF9lcnJvciAoIkludmFsaWQg Y2hhcmFjdGVyIGluIGF0dHJpYnV0ZSB2YWx1ZTogIiBeIChVdGY4X2NoYXIudG9fYnl0ZXMgYykp KSkpIGluCgkgICBoZWxwZXIoKSkKCigqIEJhc2ljIHBhcnNpbmcgcm91dGluZXMgKikKCnR5cGUg eG1sX3Rva2VuID0KICAgIFRva190ZXh0IG9mIHR4dAogIHwgVG9rX2NkYXRhIG9mIGNkYXRhCiAg fCBUb2tfc3RhcnRfdGFnIG9mIHFuYW1lKmF0dCBsaXN0CiAgfCBUb2tfZW1wdHlfZWxlIG9mIHFu YW1lKmF0dCBsaXN0CiAgfCBUb2tfZW5kX3RhZyBvZiBxbmFtZQogIHwgVG9rX2NvbW1lbnQgb2Yg dHh0CiAgfCBUb2tfcGkgb2YgdHh0KnR4dAoKZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHN0cmlu ZyAqIHhtbF90b2tlbiBvcHRpb24KCigqCnBhcnNlIGEgcW5hbWUKcHJlOiByZWFkZXIgcG9pbnRz IHRvIGZpcnN0IGNoYXJhY3RlciBvZiBxbmFtZS4KcG9zdDogcmVhZGVyIGlzIGxlZnQgb24gZmly c3QgY2hhcmFjdGVyIGZvbGxvd2luZyBxbmFtZS4KKikKCmxldCBwYXJzZV9xbmFtZSByZWFkZXIg KGs6KHFuYW1lLT51bml0KSkgPQogIHJlYWRfbmNuYW1lIHJlYWRlcgogIChmdW4gZmlyc3RwYXJ0 IC0+CiAgICAgcmVhZGVyI3BlZWtfY2hhcgogICAgIChmdW4gbmV4dGMgLT4KCWlmIG5leHRjID0g VXRmOF9saXQuY29sb24gdGhlbgoJICByZWFkZXIjcmVhZF9jaGFyCgkgICAgKGZ1biBjb2xvbiAt PgoJICAgICAgIHJlYWRfbmNuYW1lIHJlYWRlcgoJICAgICAgIChmdW4gc2Vjb25kcGFydCAtPiBr IHsgcGZ4PWZpcnN0cGFydDsgbG9jYWw9c2Vjb25kcGFydDsgfSkpCgllbHNlCgkgIGsgeyBwZng9 IiI7IGxvY2FsPWZpcnN0cGFydDsgfSkpCiAgCigqCnBhcnNlZXMgYW4gYXR0cmlidXRlCnByZTog cmVhZGVyIGlzIG9uIGZpcnN0IGNoYXJhY3RlciBvZiBhdHRyaWJ1dGUncyBxbmFtZS4KcG9zdDog cmVhZGVyIGlzIG9uIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGNsb3NlLXF1b3RlCiop CgpsZXQgcGFyc2VfYXR0IHJlYWRlciAoazooYXR0LT51bml0KSkgPQogIHBhcnNlX3FuYW1lIHJl YWRlcgogIChmdW4gbmFtZSAtPgogICAgIHNraXBfd3MgcmVhZGVyCiAgICAgKGZ1biAoKSAtPgoJ cmVhZGVyI3JlYWRfY2hhcgoJKGZ1biBlcSAtPgoJICAgaWYgbm90IChlcSA9IFV0ZjhfbGl0LmVx KSB0aGVuCgkgICAgIHJhaXNlIChMZXhfZXJyb3IgIkV4cGVjdGVkID0iKTsKCSAgIHNraXBfd3Mg cmVhZGVyCgkgICAgIChmdW4gKCkgLT4KCQlyZWFkX2F0dHZhbHVlIHJlYWRlcgoJCShmdW4gdmFs dWUgLT4KCQkgICBrIHsgYXR0X25hbWUgPSBuYW1lOyBhdHRfdmFsdWUgPSB2YWx1ZTsgfSkpKSkp CgooKgpwYXJzZXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMKcHJlOiBub25lCnBvc3Q6IHJlYWRlciBp cyBsZWZ0IG9uIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIG5vdCBwYXJ0IG9mIGFuIGF0dHJpYnV0 ZQoqKQoKbGV0IHJlYyBwYXJzZV9hdHRzIChyZWFkZXI6I0Nwc19yZWFkZXIudCkgaW5pdF9saXN0 IChrOihhdHQgbGlzdCAtPiB1bml0KSkgPQogIHJlYWRlciNwZWVrX2NoYXIKICAgIChmdW4gYyAt PgogICAgICAgbGV0IGNociA9IFV0ZjhfY2hhci50b19VX2NoYXIgYyBpbgoJIGlmICgoVV9jaGFy LmlzX2xldHRlciBjaHIpIHx8IGNociA9IFVfY2hhci5vZl9jaGFyICdfJykgdGhlbgoJICAgcGFy c2VfYXR0IHJlYWRlcgoJICAgICAoZnVuIG5leHRfYXR0IC0+CgkJKCogV0ZDOiB1bmlxdWUgYXR0 ICopCgkJTGlzdC5pdGVyIChmdW4gc29tZV9hdHQgLT4KCQkJICAgICBpZiBzb21lX2F0dC5hdHRf bmFtZSA9IG5leHRfYXR0LmF0dF9uYW1lIHRoZW4KCQkJICAgICAgIHJhaXNlIChQYXJzZV9lcnJv ciAoKCJBdHRyaWJ1dGUgIiBeIChzdHJpbmdfb2ZfcW5hbWUgbmV4dF9hdHQuYXR0X25hbWUpIF4K CQkJCQkJICAgIiBpcyBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiKSxOb25lKSk7CgkJCSAgICAg KCkpIGluaXRfbGlzdDsKCQlza2lwX3dzIHJlYWRlcgoJCShmdW4gKCkgLT4KCQkgICBwYXJzZV9h dHRzIHJlYWRlciAobmV4dF9hdHQgOjogaW5pdF9saXN0KSBrKSkKCSBlbHNlCgkgICBrIChMaXN0 LnJldiBpbml0X2xpc3QpKQoKdHlwZSB4bWxfdG9rZW5fa2luZCA9CiAgICBUb2tfa2luZF90ZXh0 CiAgfCBUb2tfa2luZF9jZGF0YQogIHwgVG9rX2tpbmRfc3RhcnRfdGFnICgqIGNvdWxkIGluZGlj YXRlIGVpdGhlciBzdGFydCB0YWcgb3IgZW1wdHkgZWxlICopCiAgfCBUb2tfa2luZF9lbmRfdGFn CiAgfCBUb2tfa2luZF9jb21tZW50CiAgfCBUb2tfa2luZF9waQoKKCoKcGFyc2VzIGV4YWN0bHkg ZmFyIGVub3VnaCB0byBkZXRlcm1pbmUgdGhlIGtpbmQgb2YgdGhlIG5leHQgdG9rZW4KcmVhZGVy IHBvc3Rjb25kaXRpb25zOgpUb2tfa2luZF90ZXh0IC0+IHJlYWRlciBpcyB1bmNoYW5nZWQKVG9r X2tpbmRfY2RhdGEgLT4gcmVhZGVyIHBvaW50cyB0byB0aGUgZmlyc3QgWyBpbiA8IVtDREFUQVsu Li4KVG9rX2tpbmRfc3RhcnRfdGFnIC0+IHJlYWRlciBwb2ludHMgdG8gZmlyc3QgY2hhcmFjdGVy IG9mIHFuYW1lClRva19raW5kX2VuZF90YWcgLT4gcmVhZGVyIHBvaW50cyB0byAvClRva19raW5k X2NvbW1lbnQgLT4gcmVhZGVyIHBvaW50cyB0byB0aGUgZmlyc3QgLSBpbiA8IS0tClRva19raW5k X3BpIC0+IHJlYWRlciBwb2ludHMgdG8gdGhlID8gaW4gPD8uLi4KKikKCmxldCBkZXRlcm1pbmVf bmV4dF90b2tlbl9raW5kIChyZWFkZXI6I0Nwc19yZWFkZXIudCkgKGs6KHhtbF90b2tlbl9raW5k LT51bml0KSkgPQogIHJlYWRlciNwZWVrX2NoYXIgCiAgICAoZnVuIGMgLT4KICAgICAgIGlmIGMg PSBVdGY4X2xpdC5sdCB0aGVuCgkgcmVhZGVyI3JlYWRfY2hhcgoJICAgKGZ1biBsdCAtPgoJICAg ICAgcmVhZGVyI3BlZWtfY2hhcgoJICAgICAgKGZ1biBuZXh0YyAtPgoJCSBpZiBuZXh0YyA9IFV0 ZjhfbGl0LnNsYXNoIHRoZW4gayBUb2tfa2luZF9lbmRfdGFnCgkJIGVsc2UgaWYgbmV4dGMgPSBV dGY4X2xpdC5xdWVzIHRoZW4gayBUb2tfa2luZF9waQoJCSBlbHNlIGlmIG5leHRjID0gVXRmOF9s aXQuZXhjbCB0aGVuCgkJICAgcmVhZGVyI3JlYWRfY2hhcgoJCSAgICAgKGZ1biBleGNsIC0+CgkJ CXJlYWRlciNwZWVrX2NoYXIKCQkJKGZ1biBuZXh0YyAtPgoJCQkgICBpZiBuZXh0YyA9IFV0Zjhf bGl0Lm9wZW5iciB0aGVuIGsgVG9rX2tpbmRfY2RhdGEKCQkJICAgZWxzZSBpZiBuZXh0YyA9IFV0 ZjhfbGl0LmRhc2ggdGhlbiBrIFRva19raW5kX2NvbW1lbnQKCQkJICAgZWxzZSByYWlzZSAoTGV4 X2Vycm9yICJleHBlY3RlZCBbIG9yIC0iKSkpCgkJIGVsc2UgaWYgVV9jaGFyLmlzX25jbmFtZWNo YXIgKFV0ZjhfY2hhci50b19VX2NoYXIgbmV4dGMpIHRoZW4gayBUb2tfa2luZF9zdGFydF90YWcK CQkgZWxzZSByYWlzZSAoTGV4X2Vycm9yICJJbnZhbGlkIDwgaW4gY29udGVudCIpKSkKICAgICAg IGVsc2UKCSBrIFRva19raW5kX3RleHQpCgooKgpwaWNrcyB1cCBwYXJzaW5nIGEgc3RhcnQgdGFn IHdoZXJlIGRldGVybWluZV9uZXh0X3Rva2VuIGxlZnQgb2ZmLgpwcmU6IHJlYWRlciBwb2ludHMg dG8gZmlyc3QgY2hhcmFjdGVyIG9mIHRhZyBxbmFtZQpwb3N0OiByZWFkZXIgcG9pbnRzIHRvIGZp cnN0IGNoYXJhY3RlciBhZnRlciA+LCBhbmQga29udCBpcyB0b2xkIHdoZXRoZXIgdGhpcwogICAg ICB3YXMgYSBzdGFydCB0YWcgb3IgYW4gZW1wdHkgZWxlbWVudC4KKikKbGV0IGZpbmlzaF9wYXJz ZV9zdGFydF90YWcgKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazooeG1sX3Rva2VuIC0+IHVuaXQp KSA9CiAgcGFyc2VfcW5hbWUgcmVhZGVyCiAgICAoZnVuIG5hbWUgLT4KICAgICAgIHNraXBfd3Mg cmVhZGVyCiAgICAgICAoZnVuICgpIC0+CgkgIHBhcnNlX2F0dHMgcmVhZGVyIFtdCgkgIChmdW4g YXR0cyAtPgoJICAgICByZWFkZXIjcmVhZF9jaGFyCgkgICAgIChmdW4gYyAtPgoJCWlmIGMgPSBV dGY4X2xpdC5zbGFzaCB0aGVuCgkJICByZWFkZXIjcmVhZF9jaGFyCgkJICAgIChmdW4gZ3QgLT4K CQkgICAgICAgaWYgbm90IChndCA9IFV0ZjhfbGl0Lmd0KSB0aGVuCgkJCSByYWlzZSAoTGV4X2Vy cm9yICJleHBlY3RlZCA+Iik7CgkJICAgICAgIGsgKFRva19lbXB0eV9lbGUgKG5hbWUsYXR0cykp KQoJCWVsc2UgaWYgYyA9IFV0ZjhfbGl0Lmd0IHRoZW4gayAoVG9rX3N0YXJ0X3RhZyAobmFtZSxh dHRzKSkKCQllbHNlIHJhaXNlIChMZXhfZXJyb3IgKCJleHBlY3RlZCAvIG9yID4sIGluc3RlYWQg Zm91bmQgIiBeIChVdGY4X2NoYXIudG9fYnl0ZXMgYykpKSkpKSkKCmxldCBmaW5pc2hfcGFyc2Vf ZW5kX3RhZyAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOih4bWxfdG9rZW4gLT4gdW5pdCkpID0K ICByZWFkZXIjcmVhZF9jaGFyCiAgKGZ1biBzbGFzaCAtPgogICAgIGlmIG5vdCAoc2xhc2ggPSBV dGY4X2xpdC5zbGFzaCkgdGhlbgogICAgICAgcmFpc2UgKExleF9lcnJvciAoImV4cGVjdGVkIC8i KSk7CiAgICAgcGFyc2VfcW5hbWUgcmVhZGVyCiAgICAgICAoZnVuIG5hbWUgLT4KCSAgc2tpcF93 cyByZWFkZXIKCSAgKGZ1biAoKSAtPgoJICAgICByZWFkZXIjcmVhZF9jaGFyCgkgICAgIChmdW4g Z3QgLT4KCQlpZiBub3QgKGd0ID0gVXRmOF9saXQuZ3QpIHRoZW4KCQkgIHJhaXNlIChMZXhfZXJy b3IgImV4cGVjdGVkID4iKTsKCQlrIChUb2tfZW5kX3RhZyBuYW1lKSkpKSkKCmxldCBmaW5pc2hf cGFyc2VfY29tbWVudCAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOih4bWxfdG9rZW4gLT4gdW5p dCkpID0KICByZWFkX24gcmVhZGVyIDIKICAgIChmdW4gdHdvZGFzaGVzIC0+CiAgICAgICBpZiBu b3QgKHR3b2Rhc2hlcyA9IFV0ZjhfbGl0LnR3b2Rhc2hlcykgdGhlbgoJIHJhaXNlIChMZXhfZXJy b3IgIm1hbGZvcm1lZCBjb21tZW50Iik7CiAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYg aW4KICAgICAgIGxldCByZWMgaGVscGVyICgpID0KCSByZWFkZXIjcmVhZF93aGlsZQoJICAgKGZ1 biBjIC0+CgkgICAgICBpZiBub3QgKFVfY2hhci5pc19jaGFyIChVdGY4X2NoYXIudG9fVV9jaGFy IGMpKSB0aGVuCgkJcmFpc2UgKExleF9lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKCSAgICAg IG5vdCAoYyA9IFV0ZjhfbGl0LmRhc2gpKQoJICAgKGZ1biBzIC0+CgkgICAgICBCdWZmZXIuYWRk X3N0cmluZyBiIHM7CgkgICAgICByZWFkX24gcmVhZGVyIDIKCQkoZnVuIHR3b2Rhc2hlcyAtPgoJ CSAgIGlmIHR3b2Rhc2hlcyA9IFV0ZjhfbGl0LnR3b2Rhc2hlcyB0aGVuCgkJICAgICByZWFkZXIj cmVhZF9jaGFyCgkJICAgICAgIChmdW4gZ3QgLT4KCQkJICBpZiBub3QgKGd0ID0gVXRmOF9saXQu Z3QpIHRoZW4KCQkJICAgIHJhaXNlIChMZXhfZXJyb3IgIm1hbGZvcm1lZCBjb21tZW50Iik7CgkJ CSAgayAoVG9rX2NvbW1lbnQgKEJ1ZmZlci5jb250ZW50cyBiKSkpCgkJICAgZWxzZQoJCSAgICAg KEJ1ZmZlci5hZGRfc3RyaW5nIGIgdHdvZGFzaGVzOwoJCSAgICAgIGhlbHBlcigpKSkpCiAgICAg ICBpbgoJIGhlbHBlcigpKQoKbGV0IGZpbmlzaF9wYXJzZV9waSAocmVhZGVyOiNDcHNfcmVhZGVy LnQpIChrOih4bWxfdG9rZW4tPnVuaXQpKSA9CiAgcmVhZGVyI3JlYWRfY2hhcgogICAgKGZ1biBx IC0+CiAgICAgICBpZiBub3QgKHEgPSBVdGY4X2xpdC5xdWVzKSB0aGVuCgkgcmFpc2UgKExleF9l cnJvciAibWFsZm9ybWVkIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iKTsKICAgICAgIHJlYWRfbmFt ZSByZWFkZXIKCSAoZnVuIHRhcmdldCAtPgoJICAgICgqIFRPRE86IGNoZWNrIHRoYXQgbmFtZSBk b2VzIG5vdCBjb250YWluICJ4bWwiICopCgkgICAgcmVhZGVyI3JlYWRfY2hhcgoJICAgIChmdW4g bmV4dGMgLT4KCSAgICAgICBpZiBVX2NoYXIuaXNfc3BhY2UgKFV0ZjhfY2hhci50b19VX2NoYXIg bmV4dGMpIHRoZW4KCQkgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluCgkJIGxldCByZWMgaGVs cGVyICgpID0KCQkgICByZWFkZXIjcmVhZF93aGlsZQoJCSAgICAgKGZ1biBjIC0+CgkJCWlmIG5v dCAoVV9jaGFyLmlzX2NoYXIgKFV0ZjhfY2hhci50b19VX2NoYXIgYykpIHRoZW4KCQkJICByYWlz ZSAoTGV4X2Vycm9yICJpbnZhbGlkIGNoYXJhY3RlciIpOwoJCQlub3QgKGMgPSBVdGY4X2xpdC5x dWVzKSkKCQkgICAgIChmdW4gcyAtPgoJCQlCdWZmZXIuYWRkX3N0cmluZyBiIHM7CgkJCXJlYWRl ciNyZWFkX2NoYXIKCQkJICAoZnVuIHEgLT4KCQkJICAgICBhc3NlcnQgKHEgPSBVdGY4X2xpdC5x dWVzKTsKCQkJICAgICByZWFkZXIjcGVla19jaGFyCgkJCSAgICAgICAoZnVuIGd0IC0+CgkJCQkg IGlmIGd0ID0gVXRmOF9saXQuZ3QgdGhlbgoJCQkJICAgIHJlYWRlciNyZWFkX2NoYXIKCQkJCSAg ICAgIChmdW4gZ3QgLT4KCQkJCQkgayAoVG9rX3BpICh0YXJnZXQsKEJ1ZmZlci5jb250ZW50cyBi KSkpKQoJCQkJICBlbHNlCgkJCQkgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFV0ZjhfY2hhci50 b19ieXRlcyBxKTsKCQkJCSAgICAgaGVscGVyKCkpKSkpCgkJIGluCgkJICAgaGVscGVyKCkKCSAg ICAgICBlbHNlCgkJIHJlYWRfbiByZWFkZXIgMgoJCSAgIChmdW4gcWd0IC0+CgkJICAgICAgaWYg cWd0ID0gVXRmOF9saXQucXVlc2d0IHRoZW4KCQkJayAoVG9rX3BpICh0YXJnZXQsIiIpKQoJCSAg ICAgIGVsc2UKCQkJcmFpc2UgKExleF9lcnJvciAibWFsZm9ybWVkIHByb2Nlc3NpbmcgaW5zdHJ1 Y3Rpb24iKSkpKSkKCmxldCBmaW5pc2hfcGFyc2VfY2RhdGEgKHJlYWRlcjojQ3BzX3JlYWRlci50 KSAoazooeG1sX3Rva2VuLT51bml0KSkgPQogIHJlYWRfbiByZWFkZXIgNwogICAgKGZ1biBvcGVu ZXIgLT4KICAgICAgIGlmIG5vdCAob3BlbmVyID0gVXRmOF9saXQub3BlbmJyX2NkYXRhX29wZW5i cikgdGhlbgoJIHJhaXNlIChMZXhfZXJyb3IgIm1hbGZvcm1lZCBDREFUQSBzZWN0aW9uIik7CiAg ICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW4KICAgICAgIGxldCByZWMgaGVscGVyICgp ID0KCSByZWFkZXIjcmVhZF93aGlsZQoJICAgKGZ1biBjIC0+CgkgICAgICBpZiBub3QgKFVfY2hh ci5pc19jaGFyIChVdGY4X2NoYXIudG9fVV9jaGFyIGMpKSB0aGVuCgkJcmFpc2UgKExleF9lcnJv ciAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKCSAgICAgIG5vdCAoYyA9IFV0ZjhfbGl0LmNsb3NlYnIp KQoJICAgKGZ1biBzdHIgLT4KCSAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgc3RyOwoJICAgICAg cmVhZGVyI3JlYWRfd2hpbGUKCQkoZnVuIHNvbWV0aGluZyAtPgoJCSAgIGlmIG5vdCAoVV9jaGFy LmlzX2NoYXIgKFV0ZjhfY2hhci50b19VX2NoYXIgc29tZXRoaW5nKSkgdGhlbgoJCSAgICAgcmFp c2UgKExleF9lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKCQkgICAoc29tZXRoaW5nID0gVXRm OF9saXQuY2xvc2VicikpCgkJKGZ1biBjbG9zZWJycyAtPgoJCSAgIGFzc2VydCAoKFN0cmluZy5s ZW5ndGggY2xvc2VicnMpID4gMCk7CgkJICAgaWYgKFN0cmluZy5sZW5ndGggY2xvc2VicnMpID49 IDIgdGhlbgoJCSAgICAgcmVhZGVyI3BlZWtfY2hhcgoJCSAgICAgICAoZnVuIHNvbWV0aGluZyAt PgoJCQkgIGlmIChzb21ldGhpbmcgPSBVdGY4X2xpdC5ndCkgdGhlbgoJCQkgICAgcmVhZGVyI3Jl YWRfY2hhcgoJCQkgICAgICAoZnVuIGd0IC0+CgkJCQkgYXNzZXJ0IChndCA9IFV0ZjhfbGl0Lmd0 KTsKCQkJCSBpZiAoU3RyaW5nLmxlbmd0aCBjbG9zZWJycykgPiAyIHRoZW4KCQkJCSAgIEJ1ZmZl ci5hZGRfc3RyaW5nIGIgKFN0cmluZy5tYWtlICgoU3RyaW5nLmxlbmd0aCBjbG9zZWJycykgLSAy KSAnXScpOwoJCQkJIGsgKFRva19jZGF0YSAoQnVmZmVyLmNvbnRlbnRzIGIpKSkKCQkJICBlbHNl CgkJCSAgICAoQnVmZmVyLmFkZF9zdHJpbmcgYiBjbG9zZWJyczsKCQkJICAgICBoZWxwZXIoKSkp CgkJICAgZWxzZQoJCSAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgY2xvc2VicnM7CgkJICAgICAg aGVscGVyKCkpKSkgaW4KCSBoZWxwZXIoKSkKCmxldCBwdWxsX25leHRfdG9rZW4gKHJlYWRlcjoj Q3BzX3JlYWRlci50KSAoazooeG1sX3Rva2VuLT51bml0KSkgPQogIHNraXBfd3MgcmVhZGVyCiAg ICAoZnVuICgpIC0+CiAgICAgICBkZXRlcm1pbmVfbmV4dF90b2tlbl9raW5kIHJlYWRlcgogICAg ICAgKGZ1bmN0aW9uCgkgICAgVG9rX2tpbmRfdGV4dCAtPiByZWFkX2NoYXJkYXRhIHJlYWRlciAo ZnVuIGRhdGEgLT4gayAoVG9rX3RleHQoZGF0YSkpKQoJICB8IFRva19raW5kX3N0YXJ0X3RhZyAt PiBmaW5pc2hfcGFyc2Vfc3RhcnRfdGFnIHJlYWRlciBrCgkgIHwgVG9rX2tpbmRfZW5kX3RhZyAt PiBmaW5pc2hfcGFyc2VfZW5kX3RhZyByZWFkZXIgawoJICB8IFRva19raW5kX2NvbW1lbnQgLT4g ZmluaXNoX3BhcnNlX2NvbW1lbnQgcmVhZGVyIGsKCSAgfCBUb2tfa2luZF9waSAtPiBmaW5pc2hf cGFyc2VfcGkgcmVhZGVyIGsKCSAgfCBUb2tfa2luZF9jZGF0YSAtPiBmaW5pc2hfcGFyc2VfY2Rh dGEgcmVhZGVyIGspKQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB5YXhwby95YXhwby5tbGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 NAAwMDQwMzQxADAwNDAzNDEAMDAwMDAwMDQ2MjcAMTAyMDAwNTQ2NzQAMDE1MTcwACAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAw MDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAACgqKiBQcm92aWRlcyBYTUwgbGV4aW5nIGFuZCBiYXNpYyBwYXJzaW5nIHRocm91Z2gg YSAicHVsbCIgaW50ZXJmYWNlLiBUaGlzIGlzIG1vc3RseSBqdXN0IGEgbGV4ZXI7IHNlZSB0aGUg W1lheHBvZG9tXSBhbmQgW1lheHBvc2F4XSBtb2R1bGVzIGZvciBtb3JlIGNvbnZlbnRpb25hbCBw YXJzZXJzLiAqKQoKKCoqIHtDIHtiIEJhc2ljIGRhdGF0eXBlc319ICopCgooKiogdGhyb3duIHdp dGggYSBkZXNjcmlwdGlvbiB3aGVuIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbGV4aWNhbCBhbmFs eXNpcy4gKikKZXhjZXB0aW9uIExleF9lcnJvciBvZiBzdHJpbmcKCigqKiB0aGUgdHlwZSBvZiBs aXRlcmFsIGNoYXJhY3RlciBkYXRhICopCnR5cGUgdHh0ID0gc3RyaW5nCgooKiogdGhlIHR5cGUg b2YgQ0RBVEEgc2VjdGlvbiBkYXRhICopCnR5cGUgY2RhdGEgPSBzdHJpbmcKCigqKiB0aGUgdHlw ZSBvZiBRTmFtZXMgKHByZWZpeDpsb2NhbCkuIHBmeCA9ICIiIG1lYW5zIG5vIHByZWZpeC4gKikK dHlwZSBxbmFtZSA9IHsgcGZ4OnR4dDsgbG9jYWw6dHh0IH0gKCogcGZ4ID0gIiIgLT4gbm8gcHJl Zml4ICopCgooKiogdGhlIHR5cGUgb2YgYXR0cmlidXRlcyAqKQp0eXBlIGF0dCA9IHsgYXR0X25h bWU6cW5hbWU7IG11dGFibGUgYXR0X3ZhbHVlOnR4dCB9CgoKKCoqIHtDIHtiIFNlcmlhbGl6ZXJz IC0gdXNlZnVsIGZvciBkZWJ1Z2dpbmd9fSAqKQoKdmFsIHN0cmluZ19vZl9xbmFtZSA6IChxbmFt ZSAtPiBzdHJpbmcpCgp2YWwgc3RyaW5nX29mX2F0dCA6IChhdHQgLT4gc3RyaW5nKQoKCigqKiB7 QyB7YiBQdWxsIEludGVyZmFjZX19ICopCgoKKCoqIFRoZSB0eXBlIG9mIFhNTCB0b2tlbnMuICop CnR5cGUgeG1sX3Rva2VuID0KICAgIFRva190ZXh0IG9mIHR4dAogIHwgVG9rX2NkYXRhIG9mIGNk YXRhCiAgfCBUb2tfc3RhcnRfdGFnIG9mIHFuYW1lKmF0dCBsaXN0CiAgfCBUb2tfZW1wdHlfZWxl IG9mIHFuYW1lKmF0dCBsaXN0CiAgfCBUb2tfZW5kX3RhZyBvZiBxbmFtZQogIHwgVG9rX2NvbW1l bnQgb2YgdHh0CiAgfCBUb2tfcGkgb2YgdHh0KnR4dAoKKCoqIHRocm93biB3aXRoIGEgZGVzY3Jp cHRpb24gd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGxleGljYWwgYW5hbHlzaXMuIE1heSBh bHNvIGluY2x1ZGUgdGhlIG9mZmVuZGluZyB0b2tlbiBpZiBhcHByb3ByaWF0ZS4KClRoZSBkaXN0 aW5jdGlvbiBiZXR3ZWVuIGEgcGFyc2UgZXJyb3IgYW5kIGEgbGV4IGVycm9yIGlzIG5vdCB0b28g d2VsbCBkZWZpbmVkLCBzbyB5b3Ugc2hvdWxkIHRha2UgaXQgbGlnaHRseS4gKikKZXhjZXB0aW9u IFBhcnNlX2Vycm9yIG9mIHN0cmluZyp4bWxfdG9rZW4gb3B0aW9uCgooKiogUHVsbHMgdGhlIG5l eHQgdG9rZW4gZnJvbSB0aGUgc3RyZWFtLiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEge2UgY29u dGludWF0aW9ufSwgd2hpY2ggaXMgYSBmdW5jdGlvbiB5b3Ugd3JpdGUuIFdoZW4gW3B1bGxfbmV4 dF90b2tlbl0gY29tcGxldGVzLCBpdCBpbnZva2VzIHlvdXIgY29udGludWF0aW9uIHdpdGggdGhl IG5ldyB0b2tlbiwgaW5zdGVhZCBvZiByZXR1cm5pbmcgY29udHJvbC4gRGVwZW5kaW5nIG9uIHdo YXQgcmVhZGVyIHlvdSB1c2UsIGl0IGlzIHBvc3NpYmxlIGZvciBbcHVsbF9uZXh0X3Rva2VuXSB0 byByZXR1cm4gY29udHJvbCB3aXRob3V0IGhhdmluZyBpbnZva2VkIHlvdXIgY29udGludWF0aW9u OyB0aGlzIG1heSBvY2N1ciBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgYXZhaWxhYmxlLgoK e2IgSW1wb3J0YW50On0gW3B1bGxfbmV4dF90b2tlbl0gb25seSBwZXJmb3JtcyBsb2NhbCBsZXhp Y2FsIGFuYWx5c2lzIG9uIHRoZSBuZXh0IHRva2VuIGluIHRoZSBzdHJlYW0uIEl0IG1haW50YWlu cyBubyBjYWxsLXRvLWNhbGwgc3RhdGUgYW5kIHdpbGwge2Igbm90fSByYWlzZSBlcnJvcnMgaWYg dG9rZW5zIGNvbWUgaW4gaW5jb3JyZWN0IG9yZGVyLCBzdWNoIGFzIGFuIHVubWF0Y2hlZCBlbmQg dGFnLiBBbHRob3VnaCBpdCBpcyBub3QgdmVyeSBkaWZmaWN1bHQgdG8gZG8gYXQgYWxsLCB0aGlz IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBoaWdoZXItbGV2ZWwgcGFyc2Vycy4KCkByYWlzZSBV X2NoYXIuQmFkX2NoYXIgaWYgYW4gaW52YWxpZCBjaGFyYWN0ZXIgaXMgZW5jb3VudGVyZWQuCkBy YWlzZSBVdGY4X2NoYXIuQmFkX2VuY29kaW5nIGlmIGEgVVRGLTggZGVjb2RpbmcgZXJyb3Igb2Nj dXJzLgpAcmFpc2UgTGV4X2Vycm9yIGlmIGEgbGV4aWNhbCBlcnJvciBpcyBlbmNvdW50ZXJlZC4K QHJhaXNlIFBhcnNlX2Vycm9yIGlmIGEgbG9jYWwgcGFyc2luZyBlcnJvciBpcyBlbmNvdW50ZXJl ZDsgZm9yIGV4YW1wbGUsIGFuIGF0dHJpYnV0ZSB2YWx1ZSB3aXRoIG5vIGVuZCBxdW90ZS4gKikg CnZhbCBwdWxsX25leHRfdG9rZW4gOiAoI0Nwc19yZWFkZXIudCAtPiAoeG1sX3Rva2VuLT51bml0 KSAtPiB1bml0KQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAB5YXhwby95YXhwb2RvbS5tbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQw MzQxADAwNDAzNDEAMDAwMDAwMzA1MzEAMTAyNTM0NTYzMDEAMDE1NTExACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAw MDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHR5cGUgdHh0ID0gc3RyaW5nCnR5cGUgY2RhdGEgPSBzdHJpbmcKdHlwZSBxbmFtZSA9CiAgICBR TmFtZSBvZiB0eHQqdHh0KnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKdHlwZSBh dHQgPQogICAgQXR0IG9mIHFuYW1lKnR4dCByZWYKdHlwZSBjb250ZW50ID0KICAgIFRleHQgb2Yg dHh0CiAgfCBDREFUQSBvZiBjZGF0YQogIHwgQ29tbWVudCBvZiB0eHQKICB8IFBJIG9mIHR4dCp0 eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqKiBbKHRhcmdldCx2YWx1 ZSldICopCiAgfCBTdWJlbGUgb2YgZWxlCmFuZCBlbGUgPQogICAgRWxlbWVudCBvZiBxbmFtZSph dHQgbGlzdCByZWYqY29udGVudCBsaXN0IHJlZiAgICAgKCoqIFsobmFtZSxhdHRzLGNoaWxkcmVu KV0gKikKCigqKiBBIGRvY3VtZW50IGlzIGEgbGlzdCBvZiBjb21tZW50cyBhbmQgUElzLCBhbmQg dGhlIGRvY3VtZW50IGVsZW1lbnQuICopCnR5cGUgZG9jID0gY29udGVudCBsaXN0IHJlZiplbGUg cmVmCgooKiBjb25zdHJ1Y3RvcnMsIGFjY2Vzc29ycyBhbmQgbXV0YXRvcnMgKikKCmxldCBxbmFt ZV9wZnggKFFOYW1lKHBmeCxsb2NhbCxuc1VSSSkpID0gcGZ4CmxldCBxbmFtZV9sb2NhbCAoUU5h bWUocGZ4LGxvY2FsLG5zVVJJKSkgPSBsb2NhbApsZXQgcW5hbWVfbnNVUkkgKFFOYW1lKHBmeCxs b2NhbCxuc1VSSSkpID0gbnNVUkkKCmxldCBxbmFtZV9lcSAoUU5hbWUocGZ4LGxvY2FsLF8pKSAo UU5hbWUocGZ4Jyxsb2NhbCcsXykpID0KICBwZnggPSBwZngnICYmIGxvY2FsID0gbG9jYWwnCgps ZXQgcW5hbWVfZXEnIChRTmFtZShfLGxvY2FsLG5zVVJJKSkgKFFOYW1lKF8sbG9jYWwnLG5zVVJJ JykpID0KICBsb2NhbCA9IGxvY2FsJyAmJiBuc1VSSSA9IG5zVVJJJwoKbGV0IGF0dF9uYW1lICgo QXR0KG5hbWUsdmFsdWUpKTphdHQpID0gbmFtZQpsZXQgYXR0X3ZhbHVlICgoQXR0KG5hbWUsdmFs dWUpKTphdHQpID0gIXZhbHVlCgpsZXQgZmluZF9hdHQgbmFtZSBhdHRzID0KICBMaXN0LmZpbmQg KGZ1biAoQXR0KG5hbWUnLF8pKSAtPiBxbmFtZV9lcSBuYW1lIG5hbWUnKSBhdHRzCgpsZXQgZmlu ZF9hdHQnIG5hbWUgYXR0cyA9CiAgTGlzdC5maW5kIChmdW4gKEF0dChuYW1lJyxfKSkgLT4gcW5h bWVfZXEnIG5hbWUgbmFtZScpIGF0dHMKCmxldCBtYWtlX2VsZSBuYW1lID0gKEVsZW1lbnQobmFt ZSxyZWYgW10sIHJlZltdKSkKCmxldCBlbGVfbmFtZSAoRWxlbWVudChuYW1lLGF0dHMsY2hpbGRy ZW4pKSA9IG5hbWUKCmxldCBlbGVfYXR0cyAoRWxlbWVudChuYW1lLGF0dHMsY2hpbGRyZW4pKSA9 ICFhdHRzCgpsZXQgc2V0X2VsZV9hdHRzIChFbGVtZW50KG5hbWUsYXR0cyxjaGlsZHJlbikpIGEg PSBhdHRzIDo9IGEKCmxldCBlbGVfY2hpbGRyZW4gKEVsZW1lbnQobmFtZSxhdHRzLGNoaWxkcmVu KSkgPSAhY2hpbGRyZW4KCmxldCBzZXRfZWxlX2NoaWxkcmVuIChFbGVtZW50KG5hbWUsYXR0cyxj aGlsZHJlbikpIGMgPSBjaGlsZHJlbiA6PSBjCgpsZXQgZWxlX3ByZXBlbmRfY2hpbGQgKEVsZW1l bnQobmFtZSxhdHRzLGNoaWxkcmVuKSkgYyA9IGNoaWxkcmVuIDo9IChjIDo6ICFjaGlsZHJlbikK bGV0IGVsZV9hcHBlbmRfY2hpbGQgKEVsZW1lbnQobmFtZSxhdHRzLGNoaWxkcmVuKSkgYyA9IGNo aWxkcmVuIDo9ICghY2hpbGRyZW4gQCAoYyA6OiBbXSkpCgpsZXQgZWxlX3NldF9hdHQgKChFbGVt ZW50KGVsZV9uYW1lLGF0dHMsY2hpbGRyZW4pKSBhcyB0aGVfZWxlKSBuYW1lIHZhbHVlID0KICB0 cnkgCiAgICAobGV0IChBdHQobmFtZScsdmFsdWUnKSkgPSBmaW5kX2F0dCBuYW1lICFhdHRzIGlu CiAgICAgICB2YWx1ZScgOj0gdmFsdWUpCiAgd2l0aAogICAgICBOb3RfZm91bmQgLT4gYXR0cyA6 PSAoQXR0KG5hbWUscmVmIHZhbHVlKSA6OiAhYXR0cykKCmxldCBlbGVfZ2V0X2F0dCAoRWxlbWVu dChlbGVfbmFtZSxhdHRzLGNoaWxkcmVuKSkgbmFtZSA9CiAgbWF0Y2ggKGZpbmRfYXR0IG5hbWUg IWF0dHMpIHdpdGgKICAgICAgIEF0dChuYW1lLHZhbHVlKSAtPiAhdmFsdWUKCmxldCBlbGVfZ2V0 X2F0dCcgKEVsZW1lbnQoZWxlX25hbWUsYXR0cyxjaGlsZHJlbikpIG5hbWUgPQogIG1hdGNoIChm aW5kX2F0dCcgbmFtZSAhYXR0cykgd2l0aAogICAgICBBdHQobmFtZSx2YWx1ZSkgLT4gIXZhbHVl CgpsZXQgZWxlX3JlbW92ZV9hdHQgKChFbGVtZW50KGVsZV9uYW1lLGF0dHMsY2hpbGRyZW4pKSBh cyB0aGVfZWxlKSBuYW1lID0KICBhdHRzIDo9IExpc3QuZmlsdGVyIChmdW4gKEF0dChuYW1lJyxf KSkgLT4gbm90IChxbmFtZV9lcSBuYW1lIG5hbWUnKSkgIWF0dHMKCmxldCBlbGVfcmVtb3ZlX2F0 dCcgKChFbGVtZW50KGVsZV9uYW1lLGF0dHMsY2hpbGRyZW4pKSBhcyB0aGVfZWxlKSBuYW1lID0K ICBhdHRzIDo9IExpc3QuZmlsdGVyIChmdW4gKEF0dChuYW1lJyxfKSkgLT4gbm90IChxbmFtZV9l cScgbmFtZSBuYW1lJykpICFhdHRzCgpsZXQgZWxlX2lubmVyX3RleHQgKEVsZW1lbnQoXyxfLGNo aWxkcmVuKSkgPQogIGxldCByZWMgaGVscGVyIGNoaWxkcmVuID0KICAgIChtYXRjaCBjaGlsZHJl biB3aXRoCgkgVGV4dChzKSA6OiByZXN0IC0+IHMKICAgICAgIHwgXyA6OiByZXN0IC0+IGhlbHBl ciByZXN0CiAgICAgICB8IFtdIC0+ICIiKSBpbgogICAgaGVscGVyICFjaGlsZHJlbgoKbGV0IGRv Y19wcm9sb2cgKChwcm9sb2csZWxlKTpkb2MpID0gIXByb2xvZwoKbGV0IGRvY19lbGUgKChwcm9s b2csZWxlKTpkb2MpID0gIWVsZQoKbGV0IGNsb25lX3FuYW1lIChRTmFtZShwZngsbG9jYWwsbnNV UkkpKSA9CiAgUU5hbWUoU3RyaW5nLmNvcHkgcGZ4LFN0cmluZy5jb3B5IGxvY2FsLFN0cmluZy5j b3B5IG5zVVJJKQoKbGV0IGNsb25lX2F0dCAoQXR0KG5hbWUsdmFsdWUpKSA9CiAgQXR0KGNsb25l X3FuYW1lIG5hbWUscmVmICF2YWx1ZSkKCmxldCByZWMKICBjbG9uZV9lbGUgKEVsZW1lbnQobmFt ZSxhdHRzLGNoaWxkcmVuKSkgPQogIEVsZW1lbnQoY2xvbmVfcW5hbWUgbmFtZSwKCSAgcmVmIChM aXN0Lm1hcCBjbG9uZV9hdHQgIWF0dHMpLAoJICByZWYgKExpc3QubWFwIGNsb25lX2NvbnRlbnQg IWNoaWxkcmVuKSkgYW5kCiAgY2xvbmVfY29udGVudCA9IGZ1bmN0aW9uCiAgICAgIFN1YmVsZShl bGUpIC0+IFN1YmVsZShjbG9uZV9lbGUgZWxlKQogICAgfCBUZXh0KHMpIC0+IFRleHQoU3RyaW5n LmNvcHkgcykKICAgIHwgQ0RBVEEocykgLT4gQ0RBVEEoU3RyaW5nLmNvcHkgcykKICAgIHwgQ29t bWVudChzKSAtPiBDb21tZW50KFN0cmluZy5jb3B5IHMpCiAgICB8IFBJKHQsdikgLT4gUEkoU3Ry aW5nLmNvcHkgdCxTdHJpbmcuY29weSB2KQoKKCogc2VyaWFsaXplcnMgKikKKCogVE9ETzogbWFr ZSB0aGVzZSBvdXRwdXQgdG8gYSBCdWZmZXIudCBmb3IgZWZmaWNpZW5jeSAqKQoKbGV0IHN0cmlu Z19vZl9xbmFtZSAoUU5hbWUocGZ4LGxvY2FsLG5zVVJJKSkgPSAKICBpZiAoU3RyaW5nLmxlbmd0 aCBwZngpID4gMCB0aGVuCiAgICBwZnggXiAiOiIgXiBsb2NhbAogIGVsc2UKICAgIGxvY2FsCmxl dCBzdHJpbmdfb2ZfYXR0IChBdHQobmFtZSx2YWx1ZSkpID0gKHN0cmluZ19vZl9xbmFtZSBuYW1l KSBeICI9XCIiIF4gIXZhbHVlIF4gIlwiIgpsZXQgc3RyaW5nX29mX2F0dHMgYXR0cyA9CiAgTGlz dC5mb2xkX2xlZnQgKGZ1biByZXN0IGF0dCAtPiByZXN0IF4gIiAiIF4gKHN0cmluZ19vZl9hdHQg YXR0KSkgIiIgYXR0cwoKbGV0IHJlYyAKICBzdHJpbmdfb2ZfZWxlIChFbGVtZW50KG5hbWUsYXR0 cyxjaGlsZHJlbikpID0KICAiPCIgXiAoc3RyaW5nX29mX3FuYW1lIG5hbWUpIF4gKHN0cmluZ19v Zl9hdHRzICFhdHRzKSBeCiAgKGlmIChMaXN0Lmxlbmd0aCAhY2hpbGRyZW4pID0gMCB0aGVuCiAg ICAgIi8+IgogICBlbHNlCiAgICAgIj4iIF4gKExpc3QuZm9sZF9sZWZ0IChmdW4gcmVzdCBjb250 ZW50IC0+IHJlc3QgXiAoc3RyaW5nX29mX2NvbnRlbnQgY29udGVudCkpICIiICFjaGlsZHJlbikg XiAiPC8iIF4gKHN0cmluZ19vZl9xbmFtZSBuYW1lKSBeICI+IikKYW5kCiAgc3RyaW5nX29mX2Nv bnRlbnQgY29udGVudCA9CiAgKG1hdGNoIGNvbnRlbnQgd2l0aAogICAgICAgVGV4dChzKSAtPiBz CiAgICAgfCBDREFUQShzKSAtPiAiPCFbQ0RBVEFbIiBeIHMgXiAiXV0+IgogICAgIHwgU3ViZWxl KGUpIC0+IHN0cmluZ19vZl9lbGUoZSkKICAgICB8IENvbW1lbnQocykgLT4gIjwhLS0iIF4gcyBe ICItLT4iCiAgICAgfCBQSSh0LHYpIC0+CgkgaWYgU3RyaW5nLmxlbmd0aCB2ID4gMCB0aGVuCgkg ICAiPD8iIF4gdCBeICIgIiBeIHYgXiAiPz4iCgkgZWxzZQoJICAgIjw/IiBeIHQgXiAiPz4iKQoK bGV0IHN0cmluZ19vZl9kb2MgKChwcm9sb2csZG9jX2VsZSk6ZG9jKSA9CiAgKExpc3QuZm9sZF9s ZWZ0IChmdW4gcmVzdCBjb250ZW50IC0+IHJlc3QgXiAoc3RyaW5nX29mX2NvbnRlbnQgY29udGVu dCkpICIiICFwcm9sb2cpIF4gKHN0cmluZ19vZl9lbGUgIWRvY19lbGUpCgooKiBOYW1lc3BhY2Ug cHJvY2Vzc2luZyB1dGlsaXRpZXMgKikKCmV4Y2VwdGlvbiBOYW1lc3BhY2VfZXJyb3IKCmxldCBp c194bWxuc19wcmVmaXhfZGVjbCB5YXhwb2F0dCA9CiAgeWF4cG9hdHQuWWF4cG8uYXR0X25hbWUu WWF4cG8ucGZ4ID0gInhtbG5zIgoKbGV0IGlzX3htbG5zX2RlZmF1bHRfZGVjbCB5YXhwb2F0dCA9 CiAgeWF4cG9hdHQuWWF4cG8uYXR0X25hbWUuWWF4cG8ucGZ4ID0gIiIgJiYgeWF4cG9hdHQuWWF4 cG8uYXR0X25hbWUuWWF4cG8ubG9jYWwgPSAieG1sbnMiCgpsZXQgaXNfeG1sbnNfZGVjbCB5YXhw b2F0dCA9CiAgaXNfeG1sbnNfcHJlZml4X2RlY2wgeWF4cG9hdHQgfHwgaXNfeG1sbnNfZGVmYXVs dF9kZWNsIHlheHBvYXR0CgpsZXQgZG9fbG9va3VwIHByZWQgZGVjbHMgPQogIGxldCByc2x0ID0g cmVmIChOb25lOllheHBvLmF0dCBvcHRpb24pIGluCiAgICBTdGFjay5pdGVyCiAgICAgIChmdW4g c29tZV9kZWNscyAtPgoJIChtYXRjaCAhcnNsdCB3aXRoCgkgICAgICBOb25lIC0+CgkJKHRyeQoJ CSAgIHJzbHQgOj0gU29tZShMaXN0LmZpbmQgcHJlZCBzb21lX2RlY2xzKQoJCSB3aXRoCgkJICAg ICBOb3RfZm91bmQgLT4gKCkpCgkgICAgfCBfIC0+ICgpKSkKICAgICAgZGVjbHM7CiAgICAobWF0 Y2ggIXJzbHQgd2l0aAoJIE5vbmUgLT4gcmFpc2UgTmFtZXNwYWNlX2Vycm9yCiAgICAgICB8IFNv bWUodGhlX2F0dCkgLT4gdGhlX2F0dC5ZYXhwby5hdHRfdmFsdWUpCgpsZXQgbG9va3VwX3ByZWZp eCBhX3BmeCBkZWNscyA9CiAgZG9fbG9va3VwCiAgICAoZnVuIGFuX2F0dCAtPgogICAgICAgYW5f YXR0LllheHBvLmF0dF9uYW1lLllheHBvLmxvY2FsID0gYV9wZngpCiAgICBkZWNscwoKbGV0IGxv b2t1cF9kZWZhdWx0IGRlY2xzID0KICB0cnkKICAgIGRvX2xvb2t1cCBpc194bWxuc19kZWZhdWx0 X2RlY2wgZGVjbHMKICB3aXRoCiAgICAgIE5hbWVzcGFjZV9lcnJvciAtPiAiIgoKbGV0IHFuYW1l X29mX1lheHBvIG5hbWUgdXJpID0KICBRTmFtZShuYW1lLllheHBvLnBmeCxuYW1lLllheHBvLmxv Y2FsLHVyaSkKCmxldCByZXNvbHZlX3lheHBvX3FuYW1lIG5hbWUgZGVjbHMgYWxsb3dfZGVmYXVs dCA9CiAgcW5hbWVfb2ZfWWF4cG8gbmFtZQogICAgKG1hdGNoIG5hbWUuWWF4cG8ucGZ4IHdpdGgK CSAiIiAtPiBpZiBhbGxvd19kZWZhdWx0IHRoZW4gbG9va3VwX2RlZmF1bHQgZGVjbHMgZWxzZSAi IgogICAgICAgfCBfIGFzIGFfcGZ4IC0+IGxvb2t1cF9wcmVmaXggYV9wZnggZGVjbHMpCgpsZXQg YXR0X29mX1lheHBvIGF0dCBkZWNscyA9CiAgQXR0KChpZiBpc194bWxuc19kZWNsIGF0dCB0aGVu IAoJIHFuYW1lX29mX1lheHBvIGF0dC5ZYXhwby5hdHRfbmFtZSAiIgogICAgICAgZWxzZQoJIHJl c29sdmVfeWF4cG9fcW5hbWUgYXR0LllheHBvLmF0dF9uYW1lIGRlY2xzIGZhbHNlOyksCiAgICAg IHJlZiBhdHQuWWF4cG8uYXR0X3ZhbHVlKQoKbGV0IHJlYyBjaGVja19hdHRzX3VuaXF1ZW5lc3Mg PSBmdW5jdGlvbgogICAgW10gLT4gKCkKICB8IChBdHQoUU5hbWUocGZ4MSxsb2NhbDEsdXJpMSks XykpIDo6IHJlc3QgLT4KICAgICAgTGlzdC5pdGVyCiAgICAgIChmdW4gKEF0dChRTmFtZShwZngy LGxvY2FsMix1cmkyKSxfKSkgLT4KCWlmIGxvY2FsMSA9IGxvY2FsMiAmJiB1cmkxID0gdXJpMiB0 aGVuCgkgIHJhaXNlIChZYXhwby5QYXJzZV9lcnJvciAoIkF0dHJpYnV0ZSBzcGVjaWZpZWQgbXVs dGlwbGUgdGltZXMiLE5vbmUpKSkKICAgICAgcmVzdDsKICAgICAgY2hlY2tfYXR0c191bmlxdWVu ZXNzIHJlc3QKCmxldCBwcm9jX3N0YXJ0X3RhZyBuYW1lIGF0dHMgZGVjbHMgPQogIGxldCBzb21l X2RlY2xzID0gTGlzdC5maWx0ZXIgaXNfeG1sbnNfZGVjbCBhdHRzIGluCiAgICBTdGFjay5wdXNo IHNvbWVfZGVjbHMgZGVjbHM7CiAgICBsZXQgbmV3X2VsZSA9IG1ha2VfZWxlIChyZXNvbHZlX3lh eHBvX3FuYW1lIG5hbWUgZGVjbHMgdHJ1ZSkgaW4KICAgIGxldCBuZXdfYXR0cyA9IChMaXN0Lm1h cCAoZnVuIGFuX2F0dCAtPiBhdHRfb2ZfWWF4cG8gYW5fYXR0IGRlY2xzKSBhdHRzKSBpbgogICAg Y2hlY2tfYXR0c191bmlxdWVuZXNzIG5ld19hdHRzOwogICAgc2V0X2VsZV9hdHRzIG5ld19lbGUg bmV3X2F0dHM7CiAgICBuZXdfZWxlCgpsZXQgcmVjIGNvbnRpbnVlX2J1aWxkX2VsZW1lbnRfdHJl ZSAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChuYW1lOllheHBvLnFuYW1lKSAodGhlX2VsZTplbGUp IChkZWNsczogWWF4cG8uYXR0IGxpc3QgU3RhY2sudCkgKGs6ZWxlLT51bml0KSA9CiAgbGV0IHJl YyBoZWxwZXIgKCkgPQogICAgWWF4cG8ucHVsbF9uZXh0X3Rva2VuIHJlYWRlcgogICAgICAoZnVu Y3Rpb24KCSAgIFlheHBvLlRva190ZXh0KHMpIC0+IGVsZV9wcmVwZW5kX2NoaWxkIHRoZV9lbGUg KFRleHQgcyk7IGhlbHBlciAoKQoJIHwgWWF4cG8uVG9rX2NkYXRhKHMpIC0+IGVsZV9wcmVwZW5k X2NoaWxkIHRoZV9lbGUgKENEQVRBIHMpOyBoZWxwZXIgKCkKCSB8IFlheHBvLlRva19zdGFydF90 YWcoY2hpbGRfbmFtZSxhdHRzKSAtPgoJICAgICBsZXQgY2hpbGQgPSBwcm9jX3N0YXJ0X3RhZyBj aGlsZF9uYW1lIGF0dHMgZGVjbHMgaW4KCSAgICAgICBjb250aW51ZV9idWlsZF9lbGVtZW50X3Ry ZWUgcmVhZGVyIGNoaWxkX25hbWUgY2hpbGQgZGVjbHMKCQkgKGZ1biBmaW5pc2hlZCAtPgoJCSAg ICBhc3NlcnQgKGNoaWxkID0gZmluaXNoZWQpOwoJCSAgICBlbGVfcHJlcGVuZF9jaGlsZCB0aGVf ZWxlIChTdWJlbGUgZmluaXNoZWQpOyBoZWxwZXIgKCkpCgkgfCBZYXhwby5Ub2tfZW1wdHlfZWxl KGNoaWxkX25hbWUsYXR0cykgLT4KCSAgICAgbGV0IGNoaWxkID0gcHJvY19zdGFydF90YWcgY2hp bGRfbmFtZSBhdHRzIGRlY2xzIGluCgkgICAgIGlnbm9yZSAoU3RhY2sucG9wIGRlY2xzKTsKCSAg ICAgZWxlX3ByZXBlbmRfY2hpbGQgdGhlX2VsZSAoU3ViZWxlIGNoaWxkKTsKCSAgICAgaGVscGVy ICgpCgkgfCBZYXhwby5Ub2tfZW5kX3RhZyhlbmRfbmFtZSkgYXMgdG9rIC0+CgkgICAgIGlmIG5h bWUgPSBlbmRfbmFtZSB0aGVuCgkgICAgICAgKHNldF9lbGVfY2hpbGRyZW4gdGhlX2VsZSAoTGlz dC5yZXYgKGVsZV9jaGlsZHJlbiB0aGVfZWxlKSk7CgkJaWdub3JlIChTdGFjay5wb3AgZGVjbHMp OwoJCWsgdGhlX2VsZSkKCSAgICAgZWxzZQoJICAgICAgIHJhaXNlIChZYXhwby5QYXJzZV9lcnJv ciAoIlVuZXhwZWN0ZWQgZW5kIHRhZyIsU29tZSB0b2spKQoJIHwgWWF4cG8uVG9rX2NvbW1lbnQo cykgLT4KCSAgICAgZWxlX3ByZXBlbmRfY2hpbGQgdGhlX2VsZSAoQ29tbWVudCBzKTsgaGVscGVy ICgpCgkgfCBZYXhwby5Ub2tfcGkodCx2KSAtPgoJICAgICBlbGVfcHJlcGVuZF9jaGlsZCB0aGVf ZWxlIChQSSAodCx2KSk7IGhlbHBlciAoKSkgaW4KICAgIGhlbHBlciAoKQoJICAgICAKCmxldCBi dWlsZF9lbGVtZW50X3RyZWVfY3BzIHJlYWRlciBkZWNscyBrID0KICBZYXhwby5wdWxsX25leHRf dG9rZW4gcmVhZGVyCiAgICAoZnVuY3Rpb24KCSBZYXhwby5Ub2tfc3RhcnRfdGFnKG5hbWUsYXR0 cykgLT4KCSAgIGxldCB0aGVfZWxlID0gcHJvY19zdGFydF90YWcgbmFtZSBhdHRzIGRlY2xzIGlu CgkgICAgIGNvbnRpbnVlX2J1aWxkX2VsZW1lbnRfdHJlZSByZWFkZXIgbmFtZSB0aGVfZWxlIGRl Y2xzCgkgICAgICAgKGZ1biBmaW5pc2hlZCAtPgoJCSAgYXNzZXJ0IChmaW5pc2hlZCA9IHRoZV9l bGUpOwoJCSAgayBmaW5pc2hlZCkKICAgICAgIHwgWWF4cG8uVG9rX2VtcHR5X2VsZShuYW1lLGF0 dHMpIC0+CgkgICBsZXQgdGhlX2VsZSA9IHByb2Nfc3RhcnRfdGFnIG5hbWUgYXR0cyBkZWNscyBp bgoJICAgaWdub3JlIChTdGFjay5wb3AgZGVjbHMpOwoJICAgayB0aGVfZWxlCiAgICAgICB8IF8g YXMgdG9rIC0+IHJhaXNlIChZYXhwby5QYXJzZV9lcnJvciAoInVuZXhwZWN0ZWQgdG9rZW47IGV4 cGVjdGVkIHN0YXJ0IHRhZyIsU29tZSB0b2spKSkKCmxldCBidWlsZF9lbGVtZW50X3RyZWUgcmVh ZGVyIGRlY2xzID0KICBsZXQgcnNsdCA9IHJlZiBOb25lIGluCiAgICBidWlsZF9lbGVtZW50X3Ry ZWVfY3BzIHJlYWRlciBkZWNscwogICAgICAoZnVuIHRoZV9lbGUgLT4gcnNsdCA6PSBTb21lKHRo ZV9lbGUpKTsKICAgIChtYXRjaCAhcnNsdCB3aXRoCgkgU29tZShlKSAtPiBlCiAgICAgICB8IF8g LT4gZmFpbHdpdGggIlJlYWRlciBwYXVzZWQgcGFyc2luZywgYnV0IHBhcnNlciBpcyBub3QgQ1BT IikKCmxldCBidWlsZF9kb2NfdHJlZV9jcHMgcmVhZGVyIGsgPSAKICBsZXQgcHJvbG9nID0gcmVm IFtdIGluCiAgbGV0IGRlY2xzID0gU3RhY2suY3JlYXRlICgpIGluCiAgbGV0IHJlYyBoZWxwZXIg KCkgPQogICAgWWF4cG8ucHVsbF9uZXh0X3Rva2VuIHJlYWRlcgogICAgICAoZnVuY3Rpb24KCSAg IFlheHBvLlRva19waSh0LHYpIC0+IHByb2xvZyA6PSAoUEkgKHQsdikpIDo6ICFwcm9sb2c7IGhl bHBlciAoKQoJIHwgWWF4cG8uVG9rX2NvbW1lbnQocykgLT4gcHJvbG9nIDo9IChDb21tZW50IHMp IDo6ICFwcm9sb2c7IGhlbHBlciAoKQoJIHwgWWF4cG8uVG9rX3N0YXJ0X3RhZyhuYW1lLGF0dHMp IC0+CgkgICAgIGxldCB0aGVfZWxlID0gcHJvY19zdGFydF90YWcgbmFtZSBhdHRzIGRlY2xzIGlu CgkgICAgICAgY29udGludWVfYnVpbGRfZWxlbWVudF90cmVlIHJlYWRlciBuYW1lIHRoZV9lbGUg ZGVjbHMKCQkgKGZ1biBmaW5pc2hlZCAtPgoJCSAgICBhc3NlcnQgKGZpbmlzaGVkID0gdGhlX2Vs ZSk7CgkJICAgIHByb2xvZyA6PSAoTGlzdC5yZXYgIXByb2xvZyk7CgkJICAgIGsgKChwcm9sb2cs IHJlZiBmaW5pc2hlZCk6ZG9jKSkKCSB8IFlheHBvLlRva19lbXB0eV9lbGUoY2hpbGRfbmFtZSxh dHRzKSAtPgoJICAgICBsZXQgdGhlX2VsZSA9IHByb2Nfc3RhcnRfdGFnIGNoaWxkX25hbWUgYXR0 cyBkZWNscyBpbgoJICAgICAgIHByb2xvZyA6PSAoTGlzdC5yZXYgIXByb2xvZyk7CgkgICAgICAg ayAoKHByb2xvZywgcmVmIHRoZV9lbGUpOmRvYykKCSB8IF8gYXMgdG9rLT4gcmFpc2UgKFlheHBv LlBhcnNlX2Vycm9yICgidW5leHBlY3RlZCB0b2tlbiIsU29tZSB0b2spKSkgaW4KICAgIGhlbHBl ciAoKQoKbGV0IGJ1aWxkX2RvY190cmVlIHJlYWRlciA9CiAgbGV0IHJzbHQgPSByZWYgTm9uZSBp bgogICAgYnVpbGRfZG9jX3RyZWVfY3BzIHJlYWRlcgogICAgICAoZnVuIHRoZV9kb2MgLT4KCSBy c2x0IDo9IFNvbWUodGhlX2RvYykpOwogICAgKG1hdGNoICFyc2x0IHdpdGgKCSBTb21lKHRoZV9k b2MpIC0+IHRoZV9kb2MKICAgICAgIHwgXyAtPiBmYWlsd2l0aCAiUmVhZGVyIHBhdXNlZCBwYXJz aW5nLCBidXQgcGFyc2VyIGlzIG5vdCBDUFMiKQoKbW9kdWxlIE5hbWVzcGFjZV91dGlscyA9CnN0 cnVjdAogIGxldCBpc194bWxuc19wcmVmaXhfZGVjbCA9IGZ1bmN0aW9uCiAgICAgIEF0dChRTmFt ZSgieG1sbnMiLF8sIiIpLF8pIC0+IHRydWUKICAgIHwgXyAtPiBmYWxzZQoKICBsZXQgaXNfeG1s bnNfZGVmYXVsdF9kZWNsID0gZnVuY3Rpb24KICAgICAgQXR0KFFOYW1lKCIiLCJ4bWxucyIsIiIp LF8pIC0+IHRydWUKICAgIHwgXyAtPiBmYWxzZQoKICBsZXQgaXNfeG1sbnNfZGVjbCBhdHQgPQog ICAgKGlzX3htbG5zX3ByZWZpeF9kZWNsIGF0dCkgfHwgKGlzX3htbG5zX2RlZmF1bHRfZGVjbCBh dHQpCgogIGxldCB4bWxuc19kZWNsX3BmeCBhdHQgPQogICAgaWYgaXNfeG1sbnNfcHJlZml4X2Rl Y2wgYXR0IHRoZW4KICAgICAgKHFuYW1lX2xvY2FsIChhdHRfbmFtZSBhdHQpKQogICAgZWxzZSBp ZiBpc194bWxuc19kZWZhdWx0X2RlY2wgYXR0IHRoZW4KICAgICAgIiIKICAgIGVsc2UKICAgICAg YXNzZXJ0IGZhbHNlCgogIGxldCB4bWxuc19kZWNsX3VyaSBhdHQgPQogICAgYXR0X3ZhbHVlIGF0 dAoKICBsZXQgcmVjIGxvb2t1cCBwcmVmaXggZGVjbHMgPQogICAgbGV0IHJlYyBsb29rdXBfaW4g ZGVjbHMgPQogICAgICAoYXR0X3ZhbHVlCgkgKExpc3QuZmluZAoJICAgIChmdW5jdGlvbgoJCSAo QXR0KFFOYW1lKCIiLCJ4bWxucyIsXyksdmFsdWUpKSB3aGVuIHByZWZpeCA9ICIiIC0+IHRydWUK CSAgICAgICB8IChBdHQoUU5hbWUoInhtbG5zIixwcmVmaXgnLCIiKSxfKSkgd2hlbiBwcmVmaXgg PSBwcmVmaXgnIC0+IHRydWUKCSAgICAgICB8IF8gLT4gZmFsc2UpCgkgICAgZGVjbHMpKSBpbgog ICAgICAobWF0Y2ggZGVjbHMgd2l0aAoJICAgW10gLT4gcmFpc2UgTm90X2ZvdW5kCgkgfCB0aGVz ZSA6OiByZXN0IC0+ICh0cnkgbG9va3VwX2luIHRoZXNlIHdpdGggTm90X2ZvdW5kIC0+IGxvb2t1 cCBwcmVmaXggcmVzdCkpCiAgICAgCiAgbGV0IG91dCA9IGZ1bmN0aW9uCiAgICAgIFNvbWUoeCkg LT4geAogICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZQoKICBsZXQgcmVjIHF1YWxpZnlfbmFtZXNw YWNlcyBlbGUgZGVjbHMgPQogICAgbGV0IHRvX2F0dCAocGZ4LG5zVVJJKSA9CiAgICAgIGlmIHBm eCA9ICIiIHRoZW4KCUF0dChRTmFtZSgiIiwieG1sbnMiLCIiKSxyZWYgbnNVUkkpCiAgICAgIGVs c2UKCUF0dChRTmFtZSgieG1sbnMiLHBmeCwiIikscmVmIG5zVVJJKSBpbgogICAgbGV0IGZyb21f bmFtZSBuYW1lIGRlY2xzID0KICAgICAgKG1hdGNoIG5hbWUgd2l0aAoJICAgUU5hbWUocGZ4LF8s bnNVUkkpIC0+CgkgICAgICh0cnkKCQlpZiBsb29rdXAgcGZ4IGRlY2xzID0gbnNVUkkgdGhlbgoJ CSAgTm9uZQoJCWVsc2UKCQkgIFNvbWUocGZ4LG5zVVJJKQoJICAgICAgd2l0aAoJCSAgTm90X2Zv dW5kIC0+IFNvbWUocGZ4LG5zVVJJKSkpIGluCiAgICBsZXQgcmVjIGZyb21fYXR0cyBhdHRzIGRl Y2xzID0KICAgICAgKG1hdGNoIGF0dHMgd2l0aAoJICAgW10gLT4gW10KCSB8IGhkIDo6IHRsIHdo ZW4gaXNfeG1sbnNfZGVjbCBoZCAtPiBmcm9tX2F0dHMgdGwgZGVjbHMKCSB8IEF0dChuYW1lLHZh bHVlKSA6OiB0bCAtPgoJICAgICBpZiAocW5hbWVfcGZ4IG5hbWUpID0gIiIgdGhlbgoJICAgICAg IGZyb21fYXR0cyB0bCBkZWNscwoJICAgICBlbHNlCgkgICAgICAgbGV0IGRlY2wgPSBmcm9tX25h bWUgbmFtZSBkZWNscyBpbgoJCSBpZiBkZWNsID0gTm9uZSB0aGVuCgkJICAgZnJvbV9hdHRzIHRs IGRlY2xzCgkJIGVsc2UKCQkgICBsZXQgZGVjbCcgPSBvdXQgZGVjbCBpbgoJCSAgICAgZGVjbCcg OjogKExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKHggPSBkZWNsJykpCgkJCQkgKGZyb21fYXR0 cyB0bCBkZWNscykpKSBpbgogICAgbGV0IHJlYyBjaGVja19jb25zaXN0ZW5jeSA9IGZ1bmN0aW9u CglbXSAtPiAoKQogICAgICB8IGFfZGVjbCA6OiB0bCAtPgoJICBMaXN0Lml0ZXIKCSAgKGZ1biBh bm90aGVyX2RlY2wgLT4KCSAgICAgaWYgKHhtbG5zX2RlY2xfcGZ4IGFfZGVjbCkgPSAoeG1sbnNf ZGVjbF9wZnggYW5vdGhlcl9kZWNsKSAmJgoJICAgICAgIG5vdCAoKHhtbG5zX2RlY2xfdXJpIGFf ZGVjbCkgPSAoeG1sbnNfZGVjbF91cmkgYW5vdGhlcl9kZWNsKSkgdGhlbgoJCSBmYWlsd2l0aCAi U2VsZi1jb250cmFkaWN0b3J5IG5zVVJJcyIpIHRsIGluCiAgICBsZXQgaW50ZXJuYWxfZGVjbHMg PSBMaXN0LmZpbHRlciBpc194bWxuc19kZWNsIChlbGVfYXR0cyBlbGUpIGluCiAgICBsZXQgbmFt ZV9kZWNsID0gKGZyb21fbmFtZSAoZWxlX25hbWUgZWxlKSAoaW50ZXJuYWxfZGVjbHMgOjogZGVj bHMpKSBpbgogICAgbGV0IG5lZWRlZF9kZWNscyA9IGlmIG5hbWVfZGVjbCA9IE5vbmUgdGhlbiBb XSBlbHNlIFsgdG9fYXR0IChvdXQgbmFtZV9kZWNsKSBdIGluCiAgICBsZXQgbmVlZGVkX2RlY2xz JyA9CiAgICAgIG5lZWRlZF9kZWNscyBAIChMaXN0Lm1hcCB0b19hdHQgKGZyb21fYXR0cyAoZWxl X2F0dHMgZWxlKSAobmVlZGVkX2RlY2xzIDo6IGludGVybmFsX2RlY2xzIDo6IGRlY2xzKSkpIGlu CiAgICAgIGNoZWNrX2NvbnNpc3RlbmN5IChuZWVkZWRfZGVjbHMnIEAgaW50ZXJuYWxfZGVjbHMp OwogICAgICBMaXN0Lml0ZXIgKGZ1biAoQXR0KG5hbWUsdmFsdWUpKSAtPiBlbGVfc2V0X2F0dCBl bGUgbmFtZSAhdmFsdWUpIG5lZWRlZF9kZWNscyc7CiAgICAgIExpc3QuaXRlciAoZnVuY3Rpb24g U3ViZWxlKGUpIC0+IHF1YWxpZnlfbmFtZXNwYWNlcyBlIChuZWVkZWRfZGVjbHMnIDo6IGRlY2xz KSB8IF8gLT4gKCkpCgkoZWxlX2NoaWxkcmVuIGVsZSkKZW5kCgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeWF4cG8veWF4cG9kb20ubWxpAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDA0MDM0MQAwMDQwMzQxADAwMDAwMDE1NTIxADEw MjAwMDU0Njc0ADAxNTY2MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAG1pa2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWlrZWxpbgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKioKRGVmaW5lcyBhbiBYTUwgMS4wICsg WE1MTlMgZGF0YSBtb2RlbCBhbmQgcHJvdmlkZXMgY29uc3RydWN0b3JzLCBhY2Nlc3NvcnMsIG11 dGF0b3JzLCBzZXJpYWxpemVycywgYW5kIHBhcnNlcnMgZm9yIHRoYXQgbW9kZWwuCiopCgooKiog e0Mge2IgRGF0YSBNb2RlbH19ICopCgooKiogVVRGLTggZW5jb2RlZCB0ZXh0ICopCnR5cGUgdHh0 ID0gc3RyaW5nCgooKiogVVRGLTggZW5jb2RlZCBDREFUQSBzZWN0aW9uICopCnR5cGUgY2RhdGEg PSBzdHJpbmcKCigqKiBBIFFOYW1lIGNvbnNpc3RzIG9mIFsocHJlZml4LGxvY2FsX3BhcnQsbnNV UkkpXS4gbnNVUkkgaXMgcHJvdmlkZWQgcHVyZWx5IGFzIGEgY29udmVuaWVuY2U7IHRoZSBwYXJz ZXIgd2lsbCByZXNvbHZlIHRoZSBwcmVmaXggaW50byB0aGUgY29ycmVzcG9uZGluZyBVUkkgZm9y IHlvdSwgYnV0IGV2ZXJ5dGhpbmcgZWxzZSBpZ25vcmVzIGl0LiAqKQp0eXBlIHFuYW1lID0KICAg IFFOYW1lIG9mIHR4dCp0eHQqdHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKKCoq IEFuIGF0dHJpYnV0ZSBpcyBbKG5hbWUsdmFsdWUpXS4gVGhlIHZhbHVlIGlzIGEgW3JlZl0gdG8g ZW5hYmxlIG11dGF0aW9uLiAqKQp0eXBlIGF0dCA9CiAgICBBdHQgb2YgcW5hbWUqdHh0IHJlZgoK KCoqIFRoZSB0eXBlIG9mIGFueSBYTUwgZWxlbWVudHM6IFsobmFtZSxhdHRzLGNoaWxkcmVuKV0u ICopCnR5cGUgZWxlID0KICAgIEVsZW1lbnQgb2YgcW5hbWUqYXR0IGxpc3QgcmVmKmNvbnRlbnQg bGlzdCByZWYKCigqKiBUaGUgdHlwZSBvZiBlbGVtZW50IGNvbnRlbnQuICopCmFuZCBjb250ZW50 ID0KICAgIFRleHQgb2YgdHh0CiAgfCBDREFUQSBvZiBjZGF0YQogIHwgQ29tbWVudCBvZiB0eHQK ICB8IFBJIG9mIHR4dCp0eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgq KiBbKHRhcmdldCx2YWx1ZSldICopCiAgfCBTdWJlbGUgb2YgZWxlCgooKiogQSBkb2N1bWVudCBp cyBhIGxpc3Qgb2YgY29tbWVudHMgYW5kIFBJcywgYW5kIHRoZSBkb2N1bWVudCBlbGVtZW50LiAq KQp0eXBlIGRvYyA9IGNvbnRlbnQgbGlzdCByZWYqZWxlIHJlZgoKKCoqClJhaXNlZCBpZiBzb21l IG5hbWVzcGFjZSBwcm9jZXNzaW5nIGVycm9yIG9jY3Vycy4gZXhhbXBsZXM6Ci0gdXNlIG9mIHVu ZGVjbGFyZWQgbmFtZXNwYWNlCi0gdHdvIGF0dHJpYnV0ZXMgb24gdGhlIHNhbWUgZWxlbWVudCB3 aXRoIHRoZSBzYW1lIGxvY2FsIHBhcnQgYW5kIGRpZmZlcmVudCBwcmVmaXhlcyB0aGF0CiAgcmVz b2x2ZSB0byB0aGUgc2FtZSBVUkkgKHVuaXF1ZSBhdHQuIHNwZWMpCiopCmV4Y2VwdGlvbiBOYW1l c3BhY2VfZXJyb3IKCgooKioge0Mge2IgQ29uc3RydWN0b3JzLCBBY2Nlc3NvcnMsIGFuZCBNdXRh dG9yc319ICopCgooKiogUmV0cmlldmUgdGhlIHByZWZpeCBvZiBhIFFOYW1lLiAqKQp2YWwgcW5h bWVfcGZ4IDogKHFuYW1lIC0+IHR4dCkKCigqKiBSZXRyaWV2ZSB0aGUgbG9jYWwtcGFydCBvZiBh IFFOYW1lLiAqKQp2YWwgcW5hbWVfbG9jYWwgOiAocW5hbWUgLT4gdHh0KQoKKCoqIFJldHJpZXZl IHRoZSBuc1VSSSBvZiBhIFFOYW1lLiAqKQp2YWwgcW5hbWVfbnNVUkkgOiAocW5hbWUgLT4gdHh0 KQoKKCoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHdvIFtxbmFtZV1zIGhhdmUgdGhlIHNhbWUgcHJl Zml4IGFuZCBsb2NhbCBwYXJ0LiAqKQp2YWwgcW5hbWVfZXEgOiAocW5hbWUgLT4gcW5hbWUgLT4g Ym9vbCkKCigqKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBbcW5hbWVdcyBoYXZlIHRoZSBzYW1l IGxvY2FsIHBhcnQgYW5kIG5zVVJJLiAoVXNlID0gdG8gZGV0ZXJtaW5lIGlmIFtxbmFtZV1zIGFy ZSBlcXVhbCBpbiBhbGwgcmVzcGVjdHMpICopCnZhbCBxbmFtZV9lcScgOiAocW5hbWUgLT4gcW5h bWUgLT4gYm9vbCkKCigqKiBSZXRyaWV2ZSB0aGUgUU5hbWUgb2YgYW4gYXR0cmlidXRlLiAqKQp2 YWwgYXR0X25hbWUgOiAoYXR0IC0+IHFuYW1lKQoKKCoqIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiBh biBhdHRyaWJ1dGUuICopCnZhbCBhdHRfdmFsdWUgOiAoYXR0IC0+IHR4dCkKCigqKiBGaW5kIGFu IGF0dHJpYnV0ZSBnaXZlbiBpdHMgUU5hbWUsIHVzaW5nIFtxbmFtZV9lcV0gdG8gZGV0ZXJtaW5l IFtxbmFtZV0gZXF1YWxpdHkuCiAgQHJhaXNlIE5vdF9mb3VuZCBpZiB0aGUgYXR0cmlidXRlIGlz bid0IGluIHRoZSBsaXN0LiAqKQp2YWwgZmluZF9hdHQgOiAocW5hbWUgLT4gYXR0IGxpc3QgLT4g YXR0KQoKKCoqIERpdHRvLCBleGNlcHQgdXNlIFtxbmFtZV9lcSddICopCnZhbCBmaW5kX2F0dCcg OiAocW5hbWUgLT4gYXR0IGxpc3QgLT4gYXR0KQoKKCoqIENyZWF0ZSBhbiBlbXB0eSBlbGVtZW50 LiAqKQp2YWwgbWFrZV9lbGUgOiAocW5hbWUgLT4gZWxlKQoKKCoqIFJldHJpZXZlIHRoZSBuYW1l IG9mIGFuIGVsZW1lbnQgKikKdmFsIGVsZV9uYW1lIDogKGVsZSAtPiBxbmFtZSkKCigqKiBSZXRy aWV2ZSB0aGUgYXR0cmlidXRlcyBvZiBhbiBlbGVtZW50ICopCnZhbCBlbGVfYXR0cyA6IChlbGUg LT4gYXR0IGxpc3QpCgooKiogUmVwbGFjZSB0aGUgYXR0cmlidXRlcyBvZiBhbiBlbGVtZW50LiAq KQp2YWwgc2V0X2VsZV9hdHRzIDogKGVsZSAtPiBhdHQgbGlzdCAtPiB1bml0KQoKKCoqIFJldHJp ZXZlIHRoZSBjaGlsZHJlbiBvZiBhbiBhdHRyaWJ1dGUgKikKdmFsIGVsZV9jaGlsZHJlbiA6IChl bGUgLT4gY29udGVudCBsaXN0KQoKKCoqIFJlcGxhY2UgdGhlIGNoaWxkcmVuIG9mIGFuIGVsZW1l bnQuICopCnZhbCBzZXRfZWxlX2NoaWxkcmVuIDogKGVsZSAtPiBjb250ZW50IGxpc3QgLT4gdW5p dCkKCigqKiBBcHBlbmQgYSBjaGlsZCBub2RlIHRvIGFuIGVsZW1lbnQuICopCnZhbCBlbGVfYXBw ZW5kX2NoaWxkIDogKGVsZSAtPiBjb250ZW50IC0+IHVuaXQpCgooKiogUHJlcGVuZCBhIGNoaWxk IG5vZGUgdG8gYW4gZWxlbWVudCdzIGV4aXN0aW5nIGNoaWxkcmVuLiAqKQp2YWwgZWxlX3ByZXBl bmRfY2hpbGQgOiAoZWxlIC0+IGNvbnRlbnQgLT4gdW5pdCkKCigqKiBHZXQgYW4gYXR0cmlidXRl IHZhbHVlLCB1c2luZyBbcW5hbWVfZXFdIHRvIGRldGVybWluZSBbcW5hbWVdIGVxdWFsaXR5LgpA cmFpc2UgTm90X2ZvdW5kIGlmIHRoZSBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdCAqKQp2YWwgZWxl X2dldF9hdHQgOiAoZWxlIC0+IHFuYW1lIC0+IHR4dCkKCigqKiBEaXR0bywgZXhjZXB0IHVzZSBb cW5hbWVfZXEnXSAqKQp2YWwgZWxlX2dldF9hdHQnIDogKGVsZSAtPiBxbmFtZSAtPiB0eHQpCgoo KiogU2V0IGFuIGF0dHJpYnV0ZSB2YWx1ZSwgb3IgYWRkIHRoZSBhdHRyaWJ1dGUgaWYgaXQgaXNu J3QgYWxyZWFkeSB0aGVyZS4gKikKdmFsIGVsZV9zZXRfYXR0IDogKGVsZSAtPiBxbmFtZSAtPiB0 eHQgLT4gdW5pdCkKCigqKiBSZW1vdmUgYW4gYXR0cmlidXRlLCB1c2luZyBbcW5hbWVfZXFdIHRv IGRldGVybWluZSBbcW5hbWVdIGVxdWFsaXR5LiAqKQp2YWwgZWxlX3JlbW92ZV9hdHQgOiAoZWxl IC0+IHFuYW1lIC0+IHVuaXQpCgooKiogRGl0dG8sIGV4Y2VwdCB1c2UgW3FuYW1lX2VxJ10gKikK dmFsIGVsZV9yZW1vdmVfYXR0JyA6IChlbGUgLT4gcW5hbWUgLT4gdW5pdCkKCigqKiBSZXR1cm5z IHRoZSB0ZXh0IGNvbnRhaW5lZCBpbiB0aGUgZmlyc3QgVGV4dCBjaGlsZCBvZiB0aGUgZWxlbWVu dC4gVXNlZnVsIGZvciBwcm9jZXNzaW5nIGVsZW1lbnRzIGV4cGVjdGVkIHRvIGJlIG9mIHRoZSBm b3JtIFs8ZWxlPnNvbWUtdGV4dDwvZWxlPl0gKikKdmFsIGVsZV9pbm5lcl90ZXh0IDogKGVsZSAt PiB0eHQpCgooKiogUmV0dXJucyB0aGUgcHJvbG9nIChjb21tZW50cyBhbmQgUElzKSBvZiBhIGRv Y3VtZW50ICopCnZhbCBkb2NfcHJvbG9nIDogKGRvYyAtPiBjb250ZW50IGxpc3QpCgooKiogUmV0 dXJucyB0aGUgZG9jdW1lbnQgZWxlbWVudCAqKQp2YWwgZG9jX2VsZSA6IChkb2MgLT4gZWxlKQoK dmFsIGNsb25lX3FuYW1lIDogKHFuYW1lIC0+IHFuYW1lKQp2YWwgY2xvbmVfYXR0IDogKGF0dCAt PiBhdHQpCnZhbCBjbG9uZV9lbGUgOiAoZWxlIC0+IGVsZSkKdmFsIGNsb25lX2NvbnRlbnQgOiAo Y29udGVudCAtPiBjb250ZW50KQooKiogRGVlcCBjb3B5ICopCgooKioge0Mge2IgUGFyc2Vyc319 ICopCgooKiogQ29uc3RydWN0IGFuIGVsZS4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgc3VwcG9z ZWQgdG8gYmUgYSBzdGFjayBvZiBsaXN0cyBvZiBZYXhwbyBhdHRyaWJ1dGVzIHJlcHJlc2VudGlu ZyBuYW1lc3BhY2UgZGVjbGFyYXRpb25zLCBzbyB0aGF0IHlvdSBjYW4gY2Fycnkgb3ZlciBuYW1l c3BhY2UgZGVjbHMgaWYgeW91IGFyZSBvbmx5IHBhcnNpbmcgYSBkb2N1bWVudCBmcmFnbWVudC4g Tm9ybWFsbHksIHlvdSBjYW4ganVzdCBwYXNzIFtTdGFjay5jcmVhdGUgKCldIC4KCkByYWlzZSBV X2NoYXIuQmFkX2NoYXIgaWYgYW4gaW52YWxpZCBjaGFyYWN0ZXIgaXMgZW5jb3VudGVyZWQuCkBy YWlzZSBVdGY4X2NoYXIuQmFkX2VuY29kaW5nIGlmIGEgVVRGLTggZGVjb2RpbmcgZXJyb3Igb2Nj dXJzLgpAcmFpc2UgWWF4cG8uTGV4X2Vycm9yIGlmIGEgbGV4aWNhbCBlcnJvciBpcyBlbmNvdW50 ZXJlZC4KQHJhaXNlIFlheHBvLlBhcnNlX2Vycm9yIGlmIGEgcGFyc2luZyBlcnJvciBpcyBlbmNv dW50ZXJlZC4KQHJhaXNlIE5hbWVzcGFjZV9lcnJvciBpZiBhIG5hbWVzcGFjZSBwcm9jZXNzaW5n IGVycm9yIGlzIGVuY291bnRlcmVkLgoKe2IgQ1BTIE5vdGU6fSBbYnVpbGRfZWxlbWVudF90cmVl XSB3aWxsIGZhaWwgaWYgdGhlIHVuZGVybHlpbmcgQ3BzX3JlYWRlci50IGF0dGVtcHRzIHRvIHBh dXNlIHBhcnNpbmcuIFRvIHVzZSBhIHBhdXNpbmcgcmVhZGVyLCB5b3Ugc2hvdWxkIHVzZSB0aGUg Q1BTIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBiZWxvdy4KKikKdmFsIGJ1aWxkX2VsZW1lbnRf dHJlZSA6ICgjQ3BzX3JlYWRlci50IC0+IFlheHBvLmF0dCBsaXN0IFN0YWNrLnQgLT4gZWxlKQoK KCoqIENvbnN0cnVjdCBhIGRvY3VtZW50LgoKQHJhaXNlIFVfY2hhci5CYWRfY2hhciBpZiBhbiBp bnZhbGlkIGNoYXJhY3RlciBpcyBlbmNvdW50ZXJlZC4KQHJhaXNlIFV0ZjhfY2hhci5CYWRfZW5j b2RpbmcgaWYgYSBVVEYtOCBkZWNvZGluZyBlcnJvciBvY2N1cnMuCkByYWlzZSBZYXhwby5MZXhf ZXJyb3IgaWYgYSBsZXhpY2FsIGVycm9yIGlzIGVuY291bnRlcmVkLgpAcmFpc2UgWWF4cG8uUGFy c2VfZXJyb3IgaWYgYSBwYXJzaW5nIGVycm9yIGlzIGVuY291bnRlcmVkLCBvciBpZiBjb250ZW50 IGNvbWVzIGluIHRoZSB3cm9uZyBvcmRlci4KQHJhaXNlIE5hbWVzcGFjZV9lcnJvciBpZiBhIG5h bWVzcGFjZSBwcm9jZXNzaW5nIGVycm9yIGlzIGVuY291bnRlcmVkLgoKe2IgQ1BTIE5vdGU6fSBb YnVpbGRfZG9jX3RyZWVdIHdpbGwgZmFpbCBpZiB0aGUgdW5kZXJseWluZyBDcHNfcmVhZGVyLnQg YXR0ZW1wdHMgdG8gcGF1c2UgcGFyc2luZy4gVG8gdXNlIGEgcGF1c2luZyByZWFkZXIsIHlvdSBz aG91bGQgdXNlIHRoZSBDUFMgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGJlbG93LgoqKQp2YWwg YnVpbGRfZG9jX3RyZWUgOiAoI0Nwc19yZWFkZXIudCAtPiBkb2MpCgooKiogQ1BTIHZlcnNpb24g b2YgW2J1aWxkX2VsZW1lbnRfdHJlZV0gKikKdmFsIGJ1aWxkX2VsZW1lbnRfdHJlZV9jcHMgOiAo I0Nwc19yZWFkZXIudCAtPiBZYXhwby5hdHQgbGlzdCBTdGFjay50IC0+IChlbGUtPnVuaXQpIC0+ IHVuaXQpCgooKiogQ1BTIHZlcnNpb24gb2YgW2J1aWxkX2RvY190cmVlXSAqKQp2YWwgYnVpbGRf ZG9jX3RyZWVfY3BzIDogKCNDcHNfcmVhZGVyLnQgLT4gKGRvYy0+dW5pdCkgLT4gdW5pdCkKCigq KiB7QyB7YiBTZXJpYWxpemVyc319ICopCgp2YWwgc3RyaW5nX29mX3FuYW1lIDogKHFuYW1lIC0+ IHN0cmluZykKdmFsIHN0cmluZ19vZl9hdHQgOiAoYXR0IC0+IHN0cmluZykKdmFsIHN0cmluZ19v Zl9hdHRzIDogKGF0dCBsaXN0IC0+IHN0cmluZykKdmFsIHN0cmluZ19vZl9lbGUgOiAoZWxlIC0+ IHN0cmluZykKdmFsIHN0cmluZ19vZl9kb2MgOiAoZG9jIC0+IHN0cmluZykKCigqKiB7YiBHZW5l cmFsIG5vdGU6fSB0aGUgcGFyc2VyIGlzIHByZXR0eSByaWdvcm91cyBhYm91dCB2ZXJpZnlpbmcg dGhlIHdlbGwtZm9ybWVkbmVzcyBvZiBpdHMgaW5wdXQuIGhvd2V2ZXIsIHRoZSBzYW1lIGlzIG5v dCB0cnVlIG9mIHRoZSBzZXJpYWxpemVycyEgeW91IGFyZSBleHBlY3RlZCB0byBwYXNzIHRoZSBz ZXJpYWxpemVycyBvbmx5IHZhbGlkIGRhdGEuIEVzcGVjaWFsbHkgbm90ZSB0aGF0IHRoZSBzZXJp YWxpemVycyBwYXkge2Igbm8gYXR0ZW50aW9ufSB0byB0aGUgW25zVVJJXSBwYXJ0cyBvZiBbcW5h bWVdczsgeW91IGFyZSBleHBlY3RlZCB0byBlbWl0IFt4bWxuc10gZGVjbGFyYXRpb25zIGluIHRo ZSByaWdodCBwbGFjZXMuIEhvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgbWF5IGJlIG9mIHVzZS4gKikK Cm1vZHVsZSBOYW1lc3BhY2VfdXRpbHMgOgpzaWcKICAoKioge2IgRXhwZXJpbWVudGFsLn0gV2Fs a3MgdGhlIHRyZWUgb2YgdGhlIGVsZW1lbnQsIGFuZCBhZGRzIG5hbWVzcGFjZSBkZWNsYXJhdGlv bnMgYXMgbmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IGluIHRoZSByZXN1bHRpbmcgdHJlZSwgYWxs IG5hbWVzcGFjZSBwcmVmaXhlcyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSBbbnNVUkldIHBhcnRz IG9mIHRoZSBbcW5hbWVdcy4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgc3VwcG9zZWQgdG8gYmUg YSBsaXN0IG9mIGxpc3RzIG9mIGF0dHJpYnV0ZXMgcmVwcmVzZW50aW5nIG5hbWVzcGFjZSBkZWNs YXJhdGlvbnMgdGhhdCBpdCB1c2VzIHRvIGV2YWx1YXRlIGFnYWluc3Q7IGl0IGlzIG5ldmVyIGhh cm1mdWwgdG8gcGFzcyBbXS4KClRoaXMgb3BlcmF0aW9uIGlzIHByZXR0eSBleHBlbnNpdmUgaW4g dGltZS4qKQogIHZhbCBxdWFsaWZ5X25hbWVzcGFjZXMgOiAoZWxlIC0+IGF0dCBsaXN0IGxpc3Qg LT4gdW5pdCkKZW5kCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAeWF4cG8veWF4cG9zYXgubWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAADAwMDA2NDQAMDA0MDM0MQAwMDQwMzQxADAwMDAwMDA0NDQwADEwMjAwMDU0Njc0ADAxNTUy NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1p a2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAwMDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABvcGVuIFlheHBvCgp0eXBlIHhtbF9jYWxsYmFja3MgPQogICAgewog ICAgICBzdGFydF9lbGVtZW50IDogKHFuYW1lIC0+IGF0dCBsaXN0IC0+ICh1bml0LT51bml0KSAt PiB1bml0KTsKICAgICAgY2hhcmFjdGVycyA6IChzdHJpbmcgLT4gKHVuaXQtPnVuaXQpIC0+IHVu aXQpOwogICAgICBjZGF0YSA6IChzdHJpbmcgLT4gKHVuaXQtPnVuaXQpIC0+IHVuaXQpOwogICAg ICBjb21tZW50IDogKHN0cmluZyAtPiAodW5pdC0+dW5pdCkgLT4gdW5pdCk7CiAgICAgIHBpIDog KHN0cmluZyAtPiBzdHJpbmcgLT4gKHVuaXQtPnVuaXQpIC0+IHVuaXQpOwogICAgICBlbmRfZWxl bWVudCA6IChxbmFtZSAtPiAodW5pdC0+dW5pdCkgLT4gdW5pdCk7CiAgICB9CgpsZXQgcmVjIHBh cnNlX2VsZW1lbnQgKHJlYWRlcjojQ3BzX3JlYWRlci50KSBjYWxsYmFja3MgKGs6KHVuaXQtPnVu aXQpKSA9CiAgcHVsbF9uZXh0X3Rva2VuIHJlYWRlcgogICAgKGZ1bmN0aW9uCgkgVG9rX3N0YXJ0 X3RhZyhuYW1lLGF0dHMpIC0+IAoJICAgY2FsbGJhY2tzLnN0YXJ0X2VsZW1lbnQgbmFtZSBhdHRz IChmdW4gKCkgLT4gcGFyc2VfcmVzdF9vZl9lbGVtZW50IHJlYWRlciBjYWxsYmFja3MgbmFtZSBr KQogICAgICAgfCBUb2tfZW1wdHlfZWxlKG5hbWUsYXR0cykgLT4KCSAgIGNhbGxiYWNrcy5zdGFy dF9lbGVtZW50IG5hbWUgYXR0cyAoZnVuICgpIC0+IGNhbGxiYWNrcy5lbmRfZWxlbWVudCBuYW1l IGspCiAgICAgICB8IF8gYXMgYm9ndXMgLT4gcmFpc2UgKFBhcnNlX2Vycm9yICgiVW5leHBlY3Rl ZCB0b2tlbiIsKFNvbWUgYm9ndXMpKSkpCmFuZCBwYXJzZV9yZXN0X29mX2VsZW1lbnQgcmVhZGVy IGNhbGxiYWNrcyBuYW1lIChrOih1bml0LT51bml0KSkgPQogIGxldCBrcmVjID0gKGZ1biAoKSAt PiBwYXJzZV9yZXN0X29mX2VsZW1lbnQgcmVhZGVyIGNhbGxiYWNrcyBuYW1lIGspIGluCiAgICBw dWxsX25leHRfdG9rZW4gcmVhZGVyCiAgICAgIChmdW5jdGlvbgoJICAgVG9rX3RleHQocykgLT4g Y2FsbGJhY2tzLmNoYXJhY3RlcnMgcyBrcmVjCgkgfCBUb2tfc3RhcnRfdGFnKHN1Yl9uYW1lLGF0 dHMpIC0+ICgqIHRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBDUFMgZGVzY2VudC4gKikKCSAgICAg Y2FsbGJhY2tzLnN0YXJ0X2VsZW1lbnQgc3ViX25hbWUgYXR0cwoJICAgICAoZnVuICgpIC0+IHBh cnNlX3Jlc3Rfb2ZfZWxlbWVudCByZWFkZXIgY2FsbGJhY2tzICgqKikgc3ViX25hbWUgKCoqKSBr cmVjKQoJIHwgVG9rX2VtcHR5X2VsZShuYW1lLGF0dHMpIC0+CgkgICAgIGNhbGxiYWNrcy5zdGFy dF9lbGVtZW50IG5hbWUgYXR0cyAoZnVuICgpIC0+IGNhbGxiYWNrcy5lbmRfZWxlbWVudCBuYW1l IGtyZWMpCgkgfCBUb2tfZW5kX3RhZyhlbmRfbmFtZSkgd2hlbiBlbmRfbmFtZSA9IG5hbWUgLT4g Y2FsbGJhY2tzLmVuZF9lbGVtZW50IG5hbWUgawoJIHwgVG9rX2VuZF90YWcoYm9ndXMpIGFzIHRv ayAtPiByYWlzZSAoUGFyc2VfZXJyb3IgKCgiRXhwZWN0ZWQgY2xvc2UgdGFnIGZvciAiIF4gKHN0 cmluZ19vZl9xbmFtZSBuYW1lKSksU29tZSB0b2spKQoJIHwgVG9rX2NvbW1lbnQocykgLT4gY2Fs bGJhY2tzLmNvbW1lbnQgcyBrcmVjCgkgfCBUb2tfcGkodGFyZ2V0LHMpIC0+IGNhbGxiYWNrcy5w aSB0YXJnZXQgcyBrcmVjCgkgfCBUb2tfY2RhdGEocykgLT4gY2FsbGJhY2tzLmNkYXRhIHMga3Jl YykKCmxldCByZWMgcGFyc2VfZG9jdW1lbnQgKHJlYWRlcjojQ3BzX3JlYWRlci50KSBjYWxsYmFj a3MgKGs6KHVuaXQtPnVuaXQpKSA9CmxldCBrcmVjID0gKGZ1biAoKSAtPiBwYXJzZV9kb2N1bWVu dCByZWFkZXIgY2FsbGJhY2tzIGspIGluCiAgcHVsbF9uZXh0X3Rva2VuIHJlYWRlcgogICAgKGZ1 bmN0aW9uCgkgVG9rX3BpKHRhcmdldCxzKSAtPiBjYWxsYmFja3MucGkgdGFyZ2V0IHMga3JlYwog ICAgICAgfCBUb2tfY29tbWVudChzKSAtPiBjYWxsYmFja3MuY29tbWVudCBzIGtyZWMKICAgICAg IHwgVG9rX3N0YXJ0X3RhZyhuYW1lLGF0dHMpIC0+ICgqIGRvY3VtZW50IGVsZW1lbnQgKikKCSAg IGNhbGxiYWNrcy5zdGFydF9lbGVtZW50IG5hbWUgYXR0cwoJICAgKGZ1biAoKSAtPiBwYXJzZV9y ZXN0X29mX2VsZW1lbnQgcmVhZGVyIGNhbGxiYWNrcyBuYW1lIGspCiAgICAgICB8IFRva19lbXB0 eV9lbGUobmFtZSxhdHRzKSAtPgoJICAgY2FsbGJhY2tzLnN0YXJ0X2VsZW1lbnQgbmFtZSBhdHRz CgkgICAoZnVuICgpIC0+CgkgICAgICBjYWxsYmFja3MuZW5kX2VsZW1lbnQgbmFtZSBrKQogICAg ICAgfCBfIGFzIGJvZ3VzIC0+IHJhaXNlIChQYXJzZV9lcnJvciAoInVuZXhwZWN0ZWQgdG9rZW4i LFNvbWUgYm9ndXMpKSkKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAeWF4cG8veWF4cG9zYXgubWxpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDA2NDQAMDA0MDM0MQAwMDQwMzQxADAwMDAwMDAzNzUwADEwMjAwMDU0Njc0ADAxNTcwMAAgMAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1pa2VsaW4A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw MDAwMDAwADAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAoKiogUHJvdmlkZXMgYSBTQVgtbGlrZSBpbnRlcmZhY2UsIHdoZXJlIHRoZSBw YXJzZXIgaW52b2tlcyB1c2VyIGNhbGxiYWNrcyBhcyBpdCBwcm9jZXNzZXMgYSBkb2N1bWVudC4g KikKCm9wZW4gWWF4cG8KCigqKiB7QyB7YiBEZWZpbml0aW9uIG9mIGNhbGxiYWNrc319ICopCgoo KiogRWFjaCBmaWVsZCBzaG91bGQgYmUgc2V0IHRvIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGlu dm9rZWQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpcyBwYXJzZWQgZnJvbSB0aGUgWE1M IGRhdGEuCgpUaGUgY2FsbGJhY2tzIGFyZSBpbnZva2VkIGluIHtlIGNvbnRpbnVhdGlvbi1wYXNz aW5nIHN0eWxlfSAoQ1BTKS4gVGhleSBhcmUgZWFjaCBwYXNzZWQgYW4gYWRkaXRpb25hbCBhcmd1 bWVudCBiZXNpZGVzIHdoYXQgeW91IGV4cGVjdCwgYSBwcm9jZWR1cmUgb2YgdHlwZSBbKHVuaXQt PnVuaXQpXS4gV2hlbiB5b3VyIGNhbGxiYWNrIGlzIGZpbmlzaGVkIHByb2Nlc3NpbmcsIGluc3Rl YWQgb2YgcmV0dXJuaW5nIGNvbnRyb2wsIGl0IHNob3VsZCBpc3N1ZSBhIHRhaWwtY2FsbCB0byB0 aGlzIHByb2NlZHVyZS4gKikKdHlwZSB4bWxfY2FsbGJhY2tzID0KICAgIHsKICAgICAgc3RhcnRf ZWxlbWVudCA6IChxbmFtZSAtPiBhdHQgbGlzdCAtPiAodW5pdC0+dW5pdCkgLT4gdW5pdCk7CiAg ICAgIGNoYXJhY3RlcnMgOiAoc3RyaW5nIC0+ICh1bml0LT51bml0KSAtPiB1bml0KTsKICAgICAg Y2RhdGEgOiAoc3RyaW5nIC0+ICh1bml0LT51bml0KSAtPiB1bml0KTsKICAgICAgY29tbWVudCA6 IChzdHJpbmcgLT4gKHVuaXQtPnVuaXQpIC0+IHVuaXQpOwogICAgICBwaSA6IChzdHJpbmcgLT4g c3RyaW5nIC0+ICh1bml0LT51bml0KSAtPiB1bml0KTsKICAgICAgZW5kX2VsZW1lbnQgOiAocW5h bWUgLT4gKHVuaXQtPnVuaXQpIC0+IHVuaXQpOwogICAgfQoKKCoqIHtDIHtiIFBhcnNpbmcgcm91 dGluZXN9fSAqKQoKKCoqIFBhcnNlIHRoZSBuZXh0IGVsZW1lbnQgZnJvbSB0aGUgcmVhZGVyLiBB Y2NlcHRzIGEgW0Nwc19yZWFkZXIudF0sIHlvdXIgY2FsbGJhY2tzLCBhbmQgYSBjb250aW51YXRp b24uIEluIG1vc3QgY2FzZXMsIHlvdSBjYW4gdXNlIFsoZnVuICgpIC0+ICgpKV0gZm9yIHRoZSBj b250aW51YXRpb24uCgpAcmFpc2UgVV9jaGFyLkJhZF9jaGFyIGlmIGFuIGludmFsaWQgY2hhcmFj dGVyIGlzIGVuY291bnRlcmVkLgpAcmFpc2UgVXRmOF9jaGFyLkJhZF9lbmNvZGluZyBpZiBhIFVU Ri04IGRlY29kaW5nIGVycm9yIG9jY3Vycy4KQHJhaXNlIExleF9lcnJvciBpZiBhIGxleGljYWwg ZXJyb3IgaXMgZW5jb3VudGVyZWQuCkByYWlzZSBQYXJzZV9lcnJvciBpZiBhIHBhcnNpbmcgZXJy b3IgaXMgZW5jb3VudGVyZWQuKikKdmFsIHBhcnNlX2VsZW1lbnQgOiAoI0Nwc19yZWFkZXIudCAt PiB4bWxfY2FsbGJhY2tzIC0+ICh1bml0LT51bml0KSAtPiB1bml0KQoKKCoqIFBhcnNlIGEgZG9j dW1lbnQgKGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21tZW50cyBhbmQgUElzIGZvbGxvd2VkIGJ5IGEg ZG9jdW1lbnQgZWxlbWVudCkKCkByYWlzZSBVX2NoYXIuQmFkX2NoYXIgaWYgYW4gaW52YWxpZCBj aGFyYWN0ZXIgaXMgZW5jb3VudGVyZWQuCkByYWlzZSBVdGY4X2NoYXIuQmFkX2VuY29kaW5nIGlm IGEgVVRGLTggZGVjb2RpbmcgZXJyb3Igb2NjdXJzLgpAcmFpc2UgTGV4X2Vycm9yIGlmIGEgbGV4 aWNhbCBlcnJvciBpcyBlbmNvdW50ZXJlZC4KQHJhaXNlIFBhcnNlX2Vycm9yIGlmIGEgcGFyc2lu ZyBlcnJvciBpcyBlbmNvdW50ZXJlZCwgb3IgaWYgY29udGVudCBjb21lcyBpbiB0aGUgd3Jvbmcg b3JkZXIuICopCnZhbCBwYXJzZV9kb2N1bWVudCA6ICgjQ3BzX3JlYWRlci50IC0+IHhtbF9jYWxs YmFja3MgLT4gKHVuaXQtPnVuaXQpIC0+IHVuaXQpCgooKiovKiopCgooKiBpbnRlcm5hbCB1c2Ug KikKdmFsIHBhcnNlX3Jlc3Rfb2ZfZWxlbWVudCA6ICgjQ3BzX3JlYWRlci50IC0+IHhtbF9jYWxs YmFja3MgLT4gcW5hbWUgLT4gKHVuaXQtPnVuaXQpIC0+IHVuaXQpCgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHlheHBvL3lheHBvdGVzdC5tbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0 ADAwNDAzNDEAMDA0MDM0MQAwMDAwMDAwNjQxMwAxMDIwMDA1NDY3NAAwMTU3MTIAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtaWtlbGluAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAG1pa2VsaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAw MAAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAbGV0IHRlc3RfeWF4cG9zYXggPQpmdW4gKGZuYW1lOnN0cmluZykgLT4KICBsZXQgciA9 IENwc19yZWFkZXIubWFrZV91dGY4X2ZpbGVfcmVhZGVyIGZuYW1lIGluCiAgbGV0IHRyYWNlIGlk IGRhdCA9IHByaW50X3N0cmluZyBpZDsgcHJpbnRfc3RyaW5nIGRhdDsgcHJpbnRfY2hhciAnXG4n IGluCiAgbGV0IGNhbGxiYWNrcyA9CiAgICB7CiAgICAgIFlheHBvc2F4LnN0YXJ0X2VsZW1lbnQg PQogICAgICAgKGZ1biBuYW1lIGF0dHMga29udCAtPgoJICB0cmFjZSAic3RhcnRfZWxlbWVudDog IiAoWWF4cG8uc3RyaW5nX29mX3FuYW1lIG5hbWUpOwoJICBMaXN0Lml0ZXIgKGZ1biBhdHQgLT4g dHJhY2UgIndpdGggYXR0OiAiIChZYXhwby5zdHJpbmdfb2ZfYXR0IGF0dCkpIGF0dHM7CgkgIGtv bnQgKCkpOwogICAgICBZYXhwb3NheC5lbmRfZWxlbWVudCA9CiAgICAgICAoZnVuIG5hbWUga29u dCAtPgoJICB0cmFjZSAiZW5kX2VsZW1lbnQ6ICIgKFlheHBvLnN0cmluZ19vZl9xbmFtZSBuYW1l KTsKCSAga29udCAoKSk7CiAgICAgIFlheHBvc2F4LmNoYXJhY3RlcnMgPQogICAgICAgKGZ1biBz dHIga29udCAtPgoJICB0cmFjZSAiY2hhcmFjdGVyczogIiBzdHI7CgkgIGtvbnQgKCkpOwogICAg ICBZYXhwb3NheC5jb21tZW50ID0KICAgICAgIChmdW4gc3RyIGtvbnQgLT4KCSAgdHJhY2UgImNv bW1lbnQ6ICIgc3RyOwoJICBrb250ICgpKTsKICAgICAgWWF4cG9zYXgucGkgPQogICAgICAgKGZ1 biB0YXJnZXQgdmFsdWUga29udCAtPgoJICB0cmFjZSAicHJvY2Vzc2luZyBpbnN0cnVjdGlvbiB0 YXJnZXQ6ICIgdGFyZ2V0OwoJICB0cmFjZSAicHJvY2Vzc2luZyBpbnN0cnVjdGlvbiB2YWx1ZTog IiB2YWx1ZTsKCSAga29udCAoKSk7CiAgICAgIFlheHBvc2F4LmNkYXRhID0KICAgICAgIChmdW4g ZGF0YSBrb250IC0+CgkgIHRyYWNlICJjZGF0YTogIiBkYXRhOwoJICBrb250ICgpKQogICAgfSBp bgogICAgWWF4cG9zYXgucGFyc2VfZG9jdW1lbnQgciBjYWxsYmFja3MgKGZ1biAoKSAtPiAoKSk7 OwoKb3BlbiBZYXhwb2RvbTs7CgpsZXQgdGVzdF95YXhwb2RvbSA9CmZ1biAoZm5hbWU6c3RyaW5n KSAtPgogIGxldCByID0gQ3BzX3JlYWRlci5tYWtlX3V0ZjhfZmlsZV9yZWFkZXIgZm5hbWUgaW4K ICBsZXQgdHJhY2UgaWQgZGF0ID0gcHJpbnRfc3RyaW5nIGlkOyBwcmludF9zdHJpbmcgZGF0OyBw cmludF9jaGFyICdcbicgaW4KICBsZXQgcmVjIHByaW50ZWxlIGFuX2VsZSA9CiAgICB0cmFjZSAi ZWxlbWVudDogIiAoc3RyaW5nX29mX3FuYW1lIChlbGVfbmFtZSBhbl9lbGUpKTsKICAgIHRyYWNl ICJ3aXRoIG5hbWVzcGFjZTogIiAocW5hbWVfbnNVUkkgKGVsZV9uYW1lIGFuX2VsZSkpOwogICAg TGlzdC5pdGVyIChmdW4gYXR0IC0+IHRyYWNlICJ3aXRoIGF0dDogIiAoc3RyaW5nX29mX2F0dCBh dHQpKSAoZWxlX2F0dHMgYW5fZWxlKTsKICAgIExpc3QuaXRlciBwcmludGNvbnRlbnQgKGVsZV9j aGlsZHJlbiBhbl9lbGUpOwogICAgdHJhY2UgImVuZCBlbGVtZW50OiAiIChzdHJpbmdfb2ZfcW5h bWUgKGVsZV9uYW1lIGFuX2VsZSkpIGFuZAogIHByaW50Y29udGVudCA9CiAgICAoZnVuY3Rpb24K CSBUZXh0KHMpIC0+IHRyYWNlICJ0ZXh0OiAiIHMKICAgICAgIHwgQ0RBVEEocykgLT4gdHJhY2Ug ImNkYXRhOiAiIHMKICAgICAgIHwgU3ViZWxlKGUpIC0+IHByaW50ZWxlIGUKICAgICAgIHwgQ29t bWVudChzKSAtPiB0cmFjZSAiY29tbWVudDogIiBzCiAgICAgICB8IFBJKHRhcmdldCx2YWx1ZSkg LT4gdHJhY2UgInBpIHRhcmdldDogIiB0YXJnZXQ7IHRyYWNlICJwaSB2YWx1ZTogIiB2YWx1ZSkK ICBpbgogIGxldCB0aGVfZG9jID0gYnVpbGRfZG9jX3RyZWUgciBpbgogICAgKG1hdGNoIHRoZV9k b2Mgd2l0aAoJIChwcm9sb2csZG9jX2VsZSkgLT4gTGlzdC5pdGVyIHByaW50Y29udGVudCAhcHJv bG9nOyBwcmludGVsZSAhZG9jX2VsZSk7OwoKcHJpbnRfc3RyaW5nICIqKioqKiogWUFYUE8gdGVz dCBzdWl0ZS4gRXhwZWN0cyBmaWxlcyB1dGY4dGVzdC50eHQgYW5kIHRlc3QueG1sIHRvIGNvbnRh aW4gdGVzdCBkYXRhLlxuIjs7CgpwcmludF9zdHJpbmcgIioqKioqKiBCZWdpbm5pbmcgVVRGLTgg dGVzdC4uLlxuIjsKbGV0IHIgPSBDcHNfcmVhZGVyLm1ha2VfdXRmOF9maWxlX3JlYWRlciAidXRm OHRlc3QudHh0IiBpbgpsZXQgZnJlcXVlbmNpZXMgPSBbfDA7IDA7IDA7IDA7IDA7IDB8XSBpbgog IHRyeQogICAgd2hpbGUgdHJ1ZSBkbwogICAgICByI3JlYWRfY2hhcgoJKGZ1biBjaHIgLT4KCSAg IGxldCBzaXplID0gVXRmOF9jaGFyLnNpemUgY2hyIGluCgkgICAgIGZyZXF1ZW5jaWVzLihzaXpl IC0gMSkgPC0gZnJlcXVlbmNpZXMuKHNpemUgLSAxKSArIDEpCiAgICBkb25lCiAgd2l0aAogICAg ICBFbmRfb2ZfZmlsZSAtPgoJcHJpbnRfc3RyaW5nICJcdFNpemVcdENvdW50XG4iOwoJZm9yIGkg PSAwIHRvIDUgZG8KCSAgcHJpbnRfY2hhciAnXHQnOwoJICBwcmludF9pbnQgKGkgKyAxKTsKCSAg cHJpbnRfY2hhciAnXHQnOwoJICBwcmludF9pbnQgZnJlcXVlbmNpZXMuKGkpOwoJICBwcmludF9j aGFyICdcbicKCWRvbmU7OwoKbGV0IHRlc3RfbnN1dGlscyAoKSA9CiAgbGV0IHNjcmV3ZWRfZWxl ID0KICAgIEVsZW1lbnQoUU5hbWUoInBmeCIsImhlbGxvIiwic29tZS1VUkkiKSwKCSAgICByZWYg WyBBdHQoUU5hbWUoInBmeCIsImFuX2F0dCIsInNvbWUtVVJJIikscmVmICJ2YWx1ZSIpOwoJCSAg QXR0KFFOYW1lKCJwZngyIiwiYW5vdGhlcl9hdHQiLCJvdGhlci1VUkkiKSxyZWYgInZhbHVlIikg XSwKCSAgICByZWYgWyBTdWJlbGUoCgkJICBFbGVtZW50KFFOYW1lKCJwZngyIiwid29ybGQiLCJz b21lLVVSSSIpLAoJCQkgcmVmIFsgQXR0KFFOYW1lKCJwZngiLCJhbl9hdHQiLCJhbm90aGVyLVVS SSIpLHJlZiAidmFsdWUiKSBdLAoJCQkgcmVmIFtdKSkgXSkgaW4KICAgIE5hbWVzcGFjZV91dGls cy5xdWFsaWZ5X25hbWVzcGFjZXMgc2NyZXdlZF9lbGUgW107CiAgICBwcmludF9zdHJpbmcgKHN0 cmluZ19vZl9lbGUgc2NyZXdlZF9lbGUpOwogICAgcHJpbnRfY2hhciAnXG4nOzsKCnByaW50X3N0 cmluZyAiKioqKioqIEJlZ2lubmluZyBZYXhwb3NheCB0ZXN0Li4uXG4iOwp0ZXN0X3lheHBvc2F4 ICJ0ZXN0LnhtbCI7CnByaW50X3N0cmluZyAiKioqKioqIEJlZ2lubmluZyBZYXhwb2RvbSB0ZXN0 Li4uXG4iOwp0ZXN0X3lheHBvZG9tICJ0ZXN0LnhtbCI7CnByaW50X3N0cmluZyAiKioqKioqIEJl Z2lubmluZyBOYW1lc3BhY2UgdXRpbHMgdGVzdC4uLlxuIjsKdGVzdF9uc3V0aWxzICgpOwpwcmlu dF9zdHJpbmcgIioqKioqKiBUZXN0cyBjb21wbGV0ZWQuXG4iOzsKAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5 YXhwby95YXhwby5tbH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQx ADAwNDAzNDEAMDAwMDAwMzQ0NDIAMTAyMDAwNTQ2NzQAMDE1MjEzACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAw MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgq CnlheHBvLm1sCk1pa2UgTGluCm1pa2VsaW5AbWl0LmVkdQoqKQoKKCogbGV4aW5nIHJvdXRpbmVz ICopCgpleGNlcHRpb24gTGV4X2Vycm9yIG9mIHN0cmluZwoKdHlwZSB0eHQgPSBzdHJpbmcKdHlw ZSBjZGF0YSA9IHN0cmluZwp0eXBlIHFuYW1lID0geyBwZng6dHh0OyBsb2NhbDp0eHQgfSAoKiBw ZnggPSAiIiAtPiBubyBwcmVmaXggKikKdHlwZSBhdHQgPSB7IGF0dF9uYW1lOnFuYW1lOyBtdXRh YmxlIGF0dF92YWx1ZTp0eHQgfQoKbGV0IHN0cmluZ19vZl9xbmFtZSBuYW1lID0gCiAgaWYgKFN0 cmluZy5sZW5ndGggbmFtZS5wZngpID4gMCB0aGVuCiAgICBuYW1lLnBmeCBeICI6IiBeIG5hbWUu bG9jYWwKICBlbHNlCiAgICBuYW1lLmxvY2FsCgpsZXQgc3RyaW5nX29mX2F0dCBhdHQgPSAoc3Ry aW5nX29mX3FuYW1lIGF0dC5hdHRfbmFtZSkgXiAiPVwiIiBeIGF0dC5hdHRfdmFsdWUgXiAiXCIi CgpsZXQgc2tpcF93cyAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOih1bml0LT51bml0KSkgPQog IHJlYWRlciNyZWFkX3doaWxlCiAgICAoZnVuIGMgLT4KICAgICAgIG1hdGNoIFV0ZjhfY2hhci50 b19ieXRlcyBjIHdpdGgKCSAgICIgIiB8ICJcbiIgfCAiXHIiIHwgIlx0IiAtPiB0cnVlCgkgfCBf IC0+IGZhbHNlKQogICAgKGZ1biB3aGl0ZXNwYWNlIC0+IGsgKCkpCgpsZXQgcmVhZF9uIChyZWFk ZXI6I0Nwc19yZWFkZXIudCkgbiAoazooc3RyaW5nLT51bml0KSkgPQogIGxldCBzb2ZhciA9IHJl ZiAoLTEpIGluCiAgICByZWFkZXIjcmVhZF93aGlsZQogICAgICAoZnVuIGMgLT4gc29mYXIgOj0g IXNvZmFyICsgMTsgIXNvZmFyIDwgbikKICAgICAgawoKKCogTmFtZSAgICA6Oj0gICAgKExldHRl ciB8ICdfJyB8ICc6JykgKE5hbWVDaGFyKSogKikKbGV0IHJlYWRfbmFtZSAocmVhZGVyOiNDcHNf cmVhZGVyLnQpIChrOihzdHJpbmctPnVuaXQpKSA9CiAgcmVhZGVyI3JlYWRfY2hhcgogICAgKGZ1 biBmaXJzdGMgLT4KICAgICAgIGxldCBjaHIgPSBVdGY4X2NoYXIudG9fVV9jaGFyIGZpcnN0YyBp bgoJIGlmIG5vdCAoKFVfY2hhci5pc19sZXR0ZXIgY2hyKSB8fCBjaHIgPSBVX2NoYXIub2ZfY2hh ciAnXycgfHwgY2hyID0gVV9jaGFyLm9mX2NoYXIgJzonKSB0aGVuCgkgICByYWlzZSAoTGV4X2Vy cm9yICgiSW52YWxpZCBjaGFyYWN0ZXIgaW4gbmFtZTogIiBeIChVdGY4X2NoYXIudG9fYnl0ZXMg Zmlyc3RjKSkpOwoJIHJlYWRlciNyZWFkX3doaWxlCgkgICAoZnVuIGMgLT4gVV9jaGFyLmlzX25h bWVjaGFyIChVdGY4X2NoYXIudG9fVV9jaGFyIGMpKQoJICAgKGZ1biByZXN0IC0+CgkgICAgICBr ICgoVXRmOF9jaGFyLnRvX2J5dGVzIGZpcnN0YykgXiByZXN0KSkpCgooKiBOQ05hbWUgIDo6PSAo TGV0dGVyIHwgJ18nKSAoTkNOYW1lQ2hhcikqICopCmxldCByZWFkX25jbmFtZSAocmVhZGVyOiND cHNfcmVhZGVyLnQpIChrOihzdHJpbmctPnVuaXQpKSA9CiAgcmVhZGVyI3JlYWRfY2hhcgogICAg KGZ1biBmaXJzdGMgLT4KICAgICAgIGxldCBjaHIgPSBVdGY4X2NoYXIudG9fVV9jaGFyIGZpcnN0 YyBpbgoJIGlmIG5vdCAoKFVfY2hhci5pc19sZXR0ZXIgY2hyKSB8fCBjaHIgPSBVX2NoYXIub2Zf Y2hhciAnXycpIHRoZW4KCSAgIHJhaXNlIChMZXhfZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBp biBuYW1lOiAiIF4gKFV0ZjhfY2hhci50b19ieXRlcyBmaXJzdGMpKSk7CgkgcmVhZGVyI3JlYWRf d2hpbGUKCSAgIChmdW4gYyAtPiBVX2NoYXIuaXNfbmNuYW1lY2hhciAoVXRmOF9jaGFyLnRvX1Vf Y2hhciBjKSkKCSAgIChmdW4gcmVzdCAtPgoJICAgICAgayAoKFV0ZjhfY2hhci50b19ieXRlcyBm aXJzdGMpIF4gcmVzdCkpKQoKKCogcGlja3MgdXAgcmVhZGluZyBhIGRlY2ltYWwgY2hhcmFjdGVy IHJlZmVyZW5jZSBmcm9tICYjCiAgIChyZWFkZXIgc2hvdWxkIHBvaW50IHRvIGZpcnN0IGRpZ2l0 KSAqKQpsZXQgcmVhZF9yZXN0X2RlY19jaGFyX3JlZmVyZW5jZSAocmVhZGVyOiNDcHNfcmVhZGVy LnQpIChrOihzdHJpbmctPnVuaXQpKSA9CiAgcmVhZGVyI3JlYWRfd2hpbGUKICAgIChmdW4gYyAt PgogICAgICAgaWYgKFV0ZjhfY2hhci5zaXplIGMpIDw+IDEgdGhlbgoJIHJhaXNlIChMZXhfZXJy b3IgKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0Zjhf Y2hhci50b19ieXRlcyBjKSkpOwogICAgICAgKG1hdGNoIChTdHJpbmcuZ2V0IChVdGY4X2NoYXIu dG9fYnl0ZXMgYykgMCkgd2l0aAoJICAgICcwJyAuLiAnOScgLT4gdHJ1ZQoJICB8ICc7JyAtPiBm YWxzZQoJICB8IF8gYXMgYnMgLT4gcmFpc2UgKExleF9lcnJvciAoIkludmFsaWQgY2hhcmFjdGVy IGluIGNoYXJhY3RlciByZWZlcmVuY2U6ICIgXiAoVXRmOF9jaGFyLnRvX2J5dGVzIGMpICkpKSkK ICAgIChmdW4gZGVjX2NoYXIgLT4KICAgICAgIHJlYWRlciNyZWFkX2NoYXIKICAgICAgIChmdW4g c2VtaWNvbG9uIC0+CgkgIGsgKCImIyIgXiBkZWNfY2hhciBeICI7IikpKSAoKiBUT0RPOiBjaGVj ayBudW1lcmljYWwgdmFsaWRpdHkhICopCgooKiBwaWNrcyB1cCByZWFkaW5nIGEgaGV4IGNoYXJh Y3RlciByZWZlcmVuY2UgZnJvbSAmIwogICAoYXNzdW1lcyB0aGUgeCBoYXMgYWxyZWFkeSBiZWVu IHBlZWtlZCAtIHJlYWRlciBzaG91bGQgcG9pbnQgdG8geCkgKikKbGV0IHJlYWRfcmVzdF9oZXhf Y2hhcl9yZWZlcmVuY2UgKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazooc3RyaW5nLT51bml0KSkg PQogIHJlYWRlciNyZWFkX2NoYXIKICAgIChmdW4geCAtPgogICAgICAgcmVhZGVyI3JlYWRfd2hp bGUKICAgICAgIChmdW4gYyAtPgoJICBpZiAoVXRmOF9jaGFyLnNpemUgYykgPD4gMSB0aGVuCgkg ICAgcmFpc2UgKExleF9lcnJvciAoIkludmFsaWQgY2hhcmFjdGVyIGluIGNoYXJhY3RlciByZWZl cmVuY2U6ICIgXiAoVXRmOF9jaGFyLnRvX2J5dGVzIGMpKSk7CgkgIChtYXRjaCAoU3RyaW5nLmdl dCAoVXRmOF9jaGFyLnRvX2J5dGVzIGMpIDApIHdpdGgKCSAgICAgICAnMCcgLi4gJzknIC0+IHRy dWUKCSAgICAgfCAnYScgLi4gJ2YnIC0+IHRydWUKCSAgICAgfCAnQScgLi4gJ0YnIC0+IHRydWUK CSAgICAgfCAnOycgLT4gZmFsc2UKCSAgICAgfCBfIC0+IHJhaXNlIChMZXhfZXJyb3IgKCJJbnZh bGlkIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0ZjhfY2hhci50b19i eXRlcyBjKSkpKSkKICAgICAgIChmdW4gaGV4X2NoYXIgLT4KCSAgcmVhZGVyI3JlYWRfY2hhcgoJ ICAoZnVuIHNlbWljb2xvbiAtPgoJICAgICBrICgiJiN4IiBeIGhleF9jaGFyIF4gIjsiKSkpKSAo KiBUT0RPOiBjaGVjayBudW1lcmljYWwgdmFsaWRpdHkhICopCgooKiBwaWNrcyB1cCByZWFkaW5n IGEgY2hhcmFjdGVyIHJlZmVyZW5jZSBmcm9tICYjCiAgIChhc3N1bWVzIHRoZSAjIGhhcyBhbHJl YWR5IGJlZW4gcGVla2VkIC0gcmVhZGVyIHNob3VsZCBwb2ludCB0byAjKSAqKQpsZXQgcmVhZF9y ZXN0X2NoYXJfcmVmZXJlbmNlIChyZWFkZXI6I0Nwc19yZWFkZXIudCkgKGs6KHN0cmluZy0+dW5p dCkpID0KICByZWFkZXIjcmVhZF9jaGFyCiAgICAoZnVuIG51bWJlcl9zaWduIC0+CiAgICAgICBh c3NlcnQgKG51bWJlcl9zaWduID0gVXRmOF9saXQuaGFzaCk7CiAgICAgICByZWFkZXIjcGVla19j aGFyCiAgICAgICAoZnVuIGMgLT4KCSAgaWYgKFV0ZjhfY2hhci5zaXplIGMpIDw+IDEgdGhlbgoJ ICAgIHJhaXNlIChMZXhfZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgcmVm ZXJlbmNlOiAiIF4gKFV0ZjhfY2hhci50b19ieXRlcyBjKSkpOwoJICAobWF0Y2ggKFN0cmluZy5n ZXQgKFV0ZjhfY2hhci50b19ieXRlcyBjKSAwKSB3aXRoCgkgICAgICAgJ3gnIC0+IHJlYWRfcmVz dF9oZXhfY2hhcl9yZWZlcmVuY2UgcmVhZGVyIGsKCSAgICAgfCAnMCcgLi4gJzknIC0+IHJlYWRf cmVzdF9kZWNfY2hhcl9yZWZlcmVuY2UgcmVhZGVyIGsKCSAgICAgfCBfIC0+IHJhaXNlIChMZXhf ZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgcmVmZXJlbmNlOiAiIF4gKFV0 ZjhfY2hhci50b19ieXRlcyBjKSkpKSkpCgooKiBwaWNrcyB1cCByZWFkaW5nIGFuIGVudGl0eSBy ZWZlcmVuY2UgZnJvbSAmPHg+LCB3aGVyZSA8eD4gaXMgbm90ICMKICAgKHJlYWRlciBzaG91bGQg cG9pbnQgdG8gPHg+KSAqKQpsZXQgcmVhZF9yZXN0X2VudGl0eV9yZWZlcmVuY2UgcmVhZGVyIGsg PQogIHJlYWRfbmFtZSByZWFkZXIKICAgIChmdW4gbmFtZSAtPgogICAgICAgcmVhZGVyI3JlYWRf Y2hhcgogICAgICAgKGZ1biBzZW1pY29sb24gLT4KCSAgaWYgbm90IChzZW1pY29sb24gPSBVdGY4 X2xpdC5zZW1pY29sb24pIHRoZW4KCSAgICByYWlzZSAoTGV4X2Vycm9yICJTZW1pY29sb24gZXhw ZWN0ZWQiKTsKCSAgayAoIiYiIF4gbmFtZSBeICI7IikpCSAgKQoKKCogcmVhZHMgYSByZWZlcmVu Y2UuCiAgIChyZWFkZXIgc2hvdWxkIHBvaW50IHRvICYpCiAgIG5iOiByZWZlcmVuY2VzIGFyZSBv bmx5IGNoZWNrZWQgZm9yIHdlbGwtZm9ybWVkbmVzczsgdGhleSBhcmUgbm90IHJlc29sdmVkLgoq KQpsZXQgcmVhZF9yZWZlcmVuY2UgKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazooc3RyaW5nLT51 bml0KSkgPQogIHJlYWRlciNyZWFkX2NoYXIKICAgIChmdW4gYW1wZXJzYW5kIC0+CiAgICAgICBp ZiBub3QgKGFtcGVyc2FuZCA9IFV0ZjhfbGl0LmFtcCkgdGhlbgoJIHJhaXNlIChMZXhfZXJyb3Ig IicmJyBleHBlY3RlZCIpOwogICAgICAgcmVhZGVyI3BlZWtfY2hhcgoJIChmdW4gbmV4dGMgLT4K CSAgICBpZiBuZXh0YyA9IFV0ZjhfbGl0Lmhhc2ggdGhlbgoJICAgICAgcmVhZF9yZXN0X2NoYXJf cmVmZXJlbmNlIHJlYWRlciBrCgkgICAgZWxzZQoJICAgICAgcmVhZF9yZXN0X2VudGl0eV9yZWZl cmVuY2UgcmVhZGVyIGspKQoKbGV0IHJlYWRfY2hhcmRhdGEgKHJlYWRlcjojQ3BzX3JlYWRlci50 KSAoazooc3RyaW5nLT51bml0KSkgPQogIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpbgogIGxl dCByZWMgaGVscGVyICgpID0KICAgIHJlYWRlciNyZWFkX3doaWxlCiAgICAoZnVuIGMgLT4gbm90 IChjID0gVXRmOF9saXQubHQgb3IgYyA9IFV0ZjhfbGl0LmFtcCkpCiAgICAoZnVuIHN0ciAtPgog ICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzdHI7CiAgICAgICByZWFkZXIjcGVla19jaGFyCgkg KGZ1biBjIC0+CgkgICAgaWYgYyA9IFV0ZjhfbGl0LmFtcCB0aGVuCgkgICAgICAocmVhZF9yZWZl cmVuY2UgcmVhZGVyCgkJIChmdW4gc3RyIC0+CgkJICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgc3Ry OwoJCSAgICBoZWxwZXIoKSkpCgkgICAgZWxzZQoJICAgICAgayAoQnVmZmVyLmNvbnRlbnRzIGIp KSkgaW4KICAgIGhlbHBlciAoKQoKKCogVE9ETzogYXR0cmlidXRlIHZhbHVlIG5vcm1hbGl6YXRp b24gKikJCQpsZXQgcmVhZF9hdHR2YWx1ZSAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOihzdHJp bmctPnVuaXQpKSA9CiAgbGV0IHF1b3RlID0gcmVmIFV0ZjhfbGl0LnF1b3QgaW4KICAgIHJlYWRl ciNyZWFkX2NoYXIKICAgICAgKGZ1biBjIC0+CgkgaWYgYyA9IFV0ZjhfbGl0LnF1b3Qgb3IgYyA9 IFV0ZjhfbGl0LmFwb3MgdGhlbgoJICAgcXVvdGUgOj0gYwoJIGVsc2UKCSAgIHJhaXNlIChMZXhf ZXJyb3IgIkV4cGVjdGVkIFwiIG9yICciKTsKCSBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgOCBpbgoJ IGxldCByZWMgaGVscGVyICgpID0KCSAgIHJlYWRlciNyZWFkX3doaWxlCgkgICAgIChmdW4gYyAt PiBub3QgKGMgPSBVdGY4X2xpdC5sdCBvciBjID0gVXRmOF9saXQuYW1wIG9yIGMgPSAhcXVvdGUp KQoJICAgICAoZnVuIHN0ciAtPgoJCUJ1ZmZlci5hZGRfc3RyaW5nIGIgc3RyOwoJCXJlYWRlciNw ZWVrX2NoYXIKCQkgIChmdW4gYyAtPgoJCSAgICAgaWYgYyA9IFV0ZjhfbGl0LmFtcCB0aGVuCgkJ ICAgICAgIChyZWFkX3JlZmVyZW5jZSByZWFkZXIKCQkJICAoZnVuIHN0ciAtPgoJCQkgICAgIEJ1 ZmZlci5hZGRfc3RyaW5nIGIgc3RyOwoJCQkgICAgIGhlbHBlcigpKSkKCQkgICAgIGVsc2UgaWYg YyA9ICFxdW90ZSB0aGVuCgkJICAgICAgIChyZWFkZXIjcmVhZF9jaGFyIChmdW4gZW5kcXVvdGUg LT4gayAoQnVmZmVyLmNvbnRlbnRzIGIpKSkKCQkgICAgIGVsc2UKCQkgICAgICAgcmFpc2UgKExl eF9lcnJvciAoIkludmFsaWQgY2hhcmFjdGVyIGluIGF0dHJpYnV0ZSB2YWx1ZTogIiBeIChVdGY4 X2NoYXIudG9fYnl0ZXMgYykpKSkpIGluCgkgICBoZWxwZXIoKSkKCigqIEJhc2ljIHBhcnNpbmcg cm91dGluZXMgKikKCnR5cGUgeG1sX3Rva2VuID0KICAgIFRva190ZXh0IG9mIHR4dAogIHwgVG9r X2NkYXRhIG9mIGNkYXRhCiAgfCBUb2tfc3RhcnRfdGFnIG9mIHFuYW1lKmF0dCBsaXN0CiAgfCBU b2tfZW1wdHlfZWxlIG9mIHFuYW1lKmF0dCBsaXN0CiAgfCBUb2tfZW5kX3RhZyBvZiBxbmFtZQog IHwgVG9rX2NvbW1lbnQgb2YgdHh0CiAgfCBUb2tfcGkgb2YgdHh0KnR4dAoKZXhjZXB0aW9uIFBh cnNlX2Vycm9yIG9mIHN0cmluZyAqIHhtbF90b2tlbiBvcHRpb24KCigqCnBhcnNlIGEgcW5hbWUK cHJlOiByZWFkZXIgcG9pbnRzIHRvIGZpcnN0IGNoYXJhY3RlciBvZiBxbmFtZS4KcG9zdDogcmVh ZGVyIGlzIGxlZnQgb24gZmlyc3QgY2hhcmFjdGVyIGZvbGxvd2luZyBxbmFtZS4KKikKCmxldCBw YXJzZV9xbmFtZSByZWFkZXIgKGs6KHFuYW1lLT51bml0KSkgPQogIHJlYWRfbmNuYW1lIHJlYWRl cgogIChmdW4gZmlyc3RwYXJ0IC0+CiAgICAgcmVhZGVyI3BlZWtfY2hhcgogICAgIChmdW4gbmV4 dGMgLT4KCWlmIG5leHRjID0gVXRmOF9saXQuY29sb24gdGhlbgoJICByZWFkZXIjcmVhZF9jaGFy CgkgICAgKGZ1biBjb2xvbiAtPgoJICAgICAgIHJlYWRfbmNuYW1lIHJlYWRlcgoJICAgICAgIChm dW4gc2Vjb25kcGFydCAtPiBrIHsgcGZ4PWZpcnN0cGFydDsgbG9jYWw9c2Vjb25kcGFydDsgfSkp CgllbHNlCgkgIGsgeyBwZng9IiI7IGxvY2FsPWZpcnN0cGFydDsgfSkpCiAgCigqCnBhcnNlZXMg YW4gYXR0cmlidXRlCnByZTogcmVhZGVyIGlzIG9uIGZpcnN0IGNoYXJhY3RlciBvZiBhdHRyaWJ1 dGUncyBxbmFtZS4KcG9zdDogcmVhZGVyIGlzIG9uIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcg dGhlIGNsb3NlLXF1b3RlCiopCgpsZXQgcGFyc2VfYXR0IHJlYWRlciAoazooYXR0LT51bml0KSkg PQogIHBhcnNlX3FuYW1lIHJlYWRlcgogIChmdW4gbmFtZSAtPgogICAgIHNraXBfd3MgcmVhZGVy CiAgICAgKGZ1biAoKSAtPgoJcmVhZGVyI3JlYWRfY2hhcgoJKGZ1biBlcSAtPgoJICAgaWYgbm90 IChlcSA9IFV0ZjhfbGl0LmVxKSB0aGVuCgkgICAgIHJhaXNlIChMZXhfZXJyb3IgIkV4cGVjdGVk ID0iKTsKCSAgIHNraXBfd3MgcmVhZGVyCgkgICAgIChmdW4gKCkgLT4KCQlyZWFkX2F0dHZhbHVl IHJlYWRlcgoJCShmdW4gdmFsdWUgLT4KCQkgICBrIHsgYXR0X25hbWUgPSBuYW1lOyBhdHRfdmFs dWUgPSB2YWx1ZTsgfSkpKSkpCgooKgpwYXJzZXMgYSBsaXN0IG9mIGF0dHJpYnV0ZXMKcHJlOiBu b25lCnBvc3Q6IHJlYWRlciBpcyBsZWZ0IG9uIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIG5vdCBw YXJ0IG9mIGFuIGF0dHJpYnV0ZQoqKQoKbGV0IHJlYyBwYXJzZV9hdHRzIChyZWFkZXI6I0Nwc19y ZWFkZXIudCkgaW5pdF9saXN0IChrOihhdHQgbGlzdCAtPiB1bml0KSkgPQogIHJlYWRlciNwZWVr X2NoYXIKICAgIChmdW4gYyAtPgogICAgICAgbGV0IGNociA9IFV0ZjhfY2hhci50b19VX2NoYXIg YyBpbgoJIGlmICgoVV9jaGFyLmlzX2xldHRlciBjaHIpIHx8IGNociA9IFVfY2hhci5vZl9jaGFy ICdfJykgdGhlbgoJICAgcGFyc2VfYXR0IHJlYWRlcgoJICAgICAoZnVuIG5leHRfYXR0IC0+CgkJ KCogV0ZDOiB1bmlxdWUgYXR0ICopCgkJTGlzdC5pdGVyIChmdW4gc29tZV9hdHQgLT4KCQkJICAg ICBpZiBzb21lX2F0dC5hdHRfbmFtZSA9IG5leHRfYXR0LmF0dF9uYW1lIHRoZW4KCQkJICAgICAg IHJhaXNlIChQYXJzZV9lcnJvciAoKCJBdHRyaWJ1dGUgIiBeIChzdHJpbmdfb2ZfcW5hbWUgbmV4 dF9hdHQuYXR0X25hbWUpIF4KCQkJCQkJICAgIiBpcyBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2Ui KSxOb25lKSk7CgkJCSAgICAgKCkpIGluaXRfbGlzdDsKCQlza2lwX3dzIHJlYWRlcgoJCShmdW4g KCkgLT4KCQkgICBwYXJzZV9hdHRzIHJlYWRlciAobmV4dF9hdHQgOjogaW5pdF9saXN0KSBrKSkK CSBlbHNlCgkgICBrIChMaXN0LnJldiBpbml0X2xpc3QpKQoKdHlwZSB4bWxfdG9rZW5fa2luZCA9 CiAgICBUb2tfa2luZF90ZXh0CiAgfCBUb2tfa2luZF9jZGF0YQogIHwgVG9rX2tpbmRfc3RhcnRf dGFnICgqIGNvdWxkIGluZGljYXRlIGVpdGhlciBzdGFydCB0YWcgb3IgZW1wdHkgZWxlICopCiAg fCBUb2tfa2luZF9lbmRfdGFnCiAgfCBUb2tfa2luZF9jb21tZW50CiAgfCBUb2tfa2luZF9waQoK KCoKcGFyc2VzIGV4YWN0bHkgZmFyIGVub3VnaCB0byBkZXRlcm1pbmUgdGhlIGtpbmQgb2YgdGhl IG5leHQgdG9rZW4KcmVhZGVyIHBvc3Rjb25kaXRpb25zOgpUb2tfa2luZF90ZXh0IC0+IHJlYWRl ciBpcyB1bmNoYW5nZWQKVG9rX2tpbmRfY2RhdGEgLT4gcmVhZGVyIHBvaW50cyB0byB0aGUgZmly c3QgWyBpbiA8IVtDREFUQVsuLi4KVG9rX2tpbmRfc3RhcnRfdGFnIC0+IHJlYWRlciBwb2ludHMg dG8gZmlyc3QgY2hhcmFjdGVyIG9mIHFuYW1lClRva19raW5kX2VuZF90YWcgLT4gcmVhZGVyIHBv aW50cyB0byAvClRva19raW5kX2NvbW1lbnQgLT4gcmVhZGVyIHBvaW50cyB0byB0aGUgZmlyc3Qg LSBpbiA8IS0tClRva19raW5kX3BpIC0+IHJlYWRlciBwb2ludHMgdG8gdGhlID8gaW4gPD8uLi4K KikKCmxldCBkZXRlcm1pbmVfbmV4dF90b2tlbl9raW5kIChyZWFkZXI6I0Nwc19yZWFkZXIudCkg KGs6KHhtbF90b2tlbl9raW5kLT51bml0KSkgPQogIHJlYWRlciNwZWVrX2NoYXIgCiAgICAoZnVu IGMgLT4KICAgICAgIGlmIGMgPSBVdGY4X2xpdC5sdCB0aGVuCgkgcmVhZGVyI3JlYWRfY2hhcgoJ ICAgKGZ1biBsdCAtPgoJICAgICAgcmVhZGVyI3BlZWtfY2hhcgoJICAgICAgKGZ1biBuZXh0YyAt PgoJCSBpZiBuZXh0YyA9IFV0ZjhfbGl0LnNsYXNoIHRoZW4gayBUb2tfa2luZF9lbmRfdGFnCgkJ IGVsc2UgaWYgbmV4dGMgPSBVdGY4X2xpdC5xdWVzIHRoZW4gayBUb2tfa2luZF9waQoJCSBlbHNl IGlmIG5leHRjID0gVXRmOF9saXQuZXhjbCB0aGVuCgkJICAgcmVhZGVyI3JlYWRfY2hhcgoJCSAg ICAgKGZ1biBleGNsIC0+CgkJCXJlYWRlciNwZWVrX2NoYXIKCQkJKGZ1biBuZXh0YyAtPgoJCQkg ICBpZiBuZXh0YyA9IFV0ZjhfbGl0Lm9wZW5iciB0aGVuIGsgVG9rX2tpbmRfY2RhdGEKCQkJICAg ZWxzZSBpZiBuZXh0YyA9IFV0ZjhfbGl0LmRhc2ggdGhlbiBrIFRva19raW5kX2NvbW1lbnQKCQkJ ICAgZWxzZSByYWlzZSAoTGV4X2Vycm9yICJleHBlY3RlZCBbIG9yIC0iKSkpCgkJIGVsc2UgaWYg VV9jaGFyLmlzX25jbmFtZWNoYXIgKFV0ZjhfY2hhci50b19VX2NoYXIgbmV4dGMpIHRoZW4gayBU b2tfa2luZF9zdGFydF90YWcKCQkgZWxzZSByYWlzZSAoTGV4X2Vycm9yICJJbnZhbGlkIDwgaW4g Y29udGVudCIpKSkKICAgICAgIGVsc2UKCSBrIFRva19raW5kX3RleHQpCgooKgpwaWNrcyB1cCBw YXJzaW5nIGEgc3RhcnQgdGFnIHdoZXJlIGRldGVybWluZV9uZXh0X3Rva2VuIGxlZnQgb2ZmLgpw cmU6IHJlYWRlciBwb2ludHMgdG8gZmlyc3QgY2hhcmFjdGVyIG9mIHRhZyBxbmFtZQpwb3N0OiBy ZWFkZXIgcG9pbnRzIHRvIGZpcnN0IGNoYXJhY3RlciBhZnRlciA+LCBhbmQga29udCBpcyB0b2xk IHdoZXRoZXIgdGhpcwogICAgICB3YXMgYSBzdGFydCB0YWcgb3IgYW4gZW1wdHkgZWxlbWVudC4K KikKbGV0IGZpbmlzaF9wYXJzZV9zdGFydF90YWcgKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazoo eG1sX3Rva2VuIC0+IHVuaXQpKSA9CiAgcGFyc2VfcW5hbWUgcmVhZGVyCiAgICAoZnVuIG5hbWUg LT4KICAgICAgIHNraXBfd3MgcmVhZGVyCiAgICAgICAoZnVuICgpIC0+CgkgIHBhcnNlX2F0dHMg cmVhZGVyIFtdCgkgIChmdW4gYXR0cyAtPgoJICAgICByZWFkZXIjcmVhZF9jaGFyCgkgICAgIChm dW4gYyAtPgoJCWlmIGMgPSBVdGY4X2xpdC5zbGFzaCB0aGVuCgkJICByZWFkZXIjcmVhZF9jaGFy CgkJICAgIChmdW4gZ3QgLT4KCQkgICAgICAgaWYgbm90IChndCA9IFV0ZjhfbGl0Lmd0KSB0aGVu CgkJCSByYWlzZSAoTGV4X2Vycm9yICJleHBlY3RlZCA+Iik7CgkJICAgICAgIGsgKFRva19lbXB0 eV9lbGUgKG5hbWUsYXR0cykpKQoJCWVsc2UgaWYgYyA9IFV0ZjhfbGl0Lmd0IHRoZW4gayAoVG9r X3N0YXJ0X3RhZyAobmFtZSxhdHRzKSkKCQllbHNlIHJhaXNlIChMZXhfZXJyb3IgKCJleHBlY3Rl ZCAvIG9yID4sIGluc3RlYWQgZm91bmQgIiBeIChVdGY4X2NoYXIudG9fYnl0ZXMgYykpKSkpKSkK CmxldCBmaW5pc2hfcGFyc2VfZW5kX3RhZyAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOih4bWxf dG9rZW4gLT4gdW5pdCkpID0KICByZWFkZXIjcmVhZF9jaGFyCiAgKGZ1biBzbGFzaCAtPgogICAg IGlmIG5vdCAoc2xhc2ggPSBVdGY4X2xpdC5zbGFzaCkgdGhlbgogICAgICAgcmFpc2UgKExleF9l cnJvciAoImV4cGVjdGVkIC8iKSk7CiAgICAgcGFyc2VfcW5hbWUgcmVhZGVyCiAgICAgICAoZnVu IG5hbWUgLT4KCSAgc2tpcF93cyByZWFkZXIKCSAgKGZ1biAoKSAtPgoJICAgICByZWFkZXIjcmVh ZF9jaGFyCgkgICAgIChmdW4gZ3QgLT4KCQlpZiBub3QgKGd0ID0gVXRmOF9saXQuZ3QpIHRoZW4K CQkgIHJhaXNlIChMZXhfZXJyb3IgImV4cGVjdGVkID4iKTsKCQlrIChUb2tfZW5kX3RhZyBuYW1l KSkpKSkKCmxldCBmaW5pc2hfcGFyc2VfY29tbWVudCAocmVhZGVyOiNDcHNfcmVhZGVyLnQpIChr Oih4bWxfdG9rZW4gLT4gdW5pdCkpID0KICByZWFkX24gcmVhZGVyIDIKICAgIChmdW4gdHdvZGFz aGVzIC0+CiAgICAgICBpZiBub3QgKHR3b2Rhc2hlcyA9IFV0ZjhfbGl0LnR3b2Rhc2hlcykgdGhl bgoJIHJhaXNlIChMZXhfZXJyb3IgIm1hbGZvcm1lZCBjb21tZW50Iik7CiAgICAgICBsZXQgYiA9 IEJ1ZmZlci5jcmVhdGUgMTYgaW4KICAgICAgIGxldCByZWMgaGVscGVyICgpID0KCSByZWFkZXIj cmVhZF93aGlsZQoJICAgKGZ1biBjIC0+CgkgICAgICBpZiBub3QgKFVfY2hhci5pc19jaGFyIChV dGY4X2NoYXIudG9fVV9jaGFyIGMpKSB0aGVuCgkJcmFpc2UgKExleF9lcnJvciAiaW52YWxpZCBj aGFyYWN0ZXIiKTsKCSAgICAgIG5vdCAoYyA9IFV0ZjhfbGl0LmRhc2gpKQoJICAgKGZ1biBzIC0+ CgkgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7CgkgICAgICByZWFkX24gcmVhZGVyIDIKCQko ZnVuIHR3b2Rhc2hlcyAtPgoJCSAgIGlmIHR3b2Rhc2hlcyA9IFV0ZjhfbGl0LnR3b2Rhc2hlcyB0 aGVuCgkJICAgICByZWFkZXIjcmVhZF9jaGFyCgkJICAgICAgIChmdW4gZ3QgLT4KCQkJICBpZiBu b3QgKGd0ID0gVXRmOF9saXQuZ3QpIHRoZW4KCQkJICAgIHJhaXNlIChMZXhfZXJyb3IgIm1hbGZv cm1lZCBjb21tZW50Iik7CgkJCSAgayAoVG9rX2NvbW1lbnQgKEJ1ZmZlci5jb250ZW50cyBiKSkp CgkJICAgZWxzZQoJCSAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgdHdvZGFzaGVzOwoJCSAgICAg IGhlbHBlcigpKSkpCiAgICAgICBpbgoJIGhlbHBlcigpKQoKbGV0IGZpbmlzaF9wYXJzZV9waSAo cmVhZGVyOiNDcHNfcmVhZGVyLnQpIChrOih4bWxfdG9rZW4tPnVuaXQpKSA9CiAgcmVhZGVyI3Jl YWRfY2hhcgogICAgKGZ1biBxIC0+CiAgICAgICBpZiBub3QgKHEgPSBVdGY4X2xpdC5xdWVzKSB0 aGVuCgkgcmFpc2UgKExleF9lcnJvciAibWFsZm9ybWVkIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24i KTsKICAgICAgIHJlYWRfbmFtZSByZWFkZXIKCSAoZnVuIHRhcmdldCAtPgoJICAgICgqIFRPRE86 IGNoZWNrIHRoYXQgbmFtZSBkb2VzIG5vdCBjb250YWluICJ4bWwiICopCgkgICAgcmVhZGVyI3Jl YWRfY2hhcgoJICAgIChmdW4gbmV4dGMgLT4KCSAgICAgICBpZiBVX2NoYXIuaXNfc3BhY2UgKFV0 ZjhfY2hhci50b19VX2NoYXIgbmV4dGMpIHRoZW4KCQkgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2 IGluCgkJIGxldCByZWMgaGVscGVyICgpID0KCQkgICByZWFkZXIjcmVhZF93aGlsZQoJCSAgICAg KGZ1biBjIC0+CgkJCWlmIG5vdCAoVV9jaGFyLmlzX2NoYXIgKFV0ZjhfY2hhci50b19VX2NoYXIg YykpIHRoZW4KCQkJICByYWlzZSAoTGV4X2Vycm9yICJpbnZhbGlkIGNoYXJhY3RlciIpOwoJCQlu b3QgKGMgPSBVdGY4X2xpdC5xdWVzKSkKCQkgICAgIChmdW4gcyAtPgoJCQlCdWZmZXIuYWRkX3N0 cmluZyBiIHM7CgkJCXJlYWRlciNyZWFkX2NoYXIKCQkJICAoZnVuIHEgLT4KCQkJICAgICBhc3Nl cnQgKHEgPSBVdGY4X2xpdC5xdWVzKTsKCQkJICAgICByZWFkZXIjcGVla19jaGFyCgkJCSAgICAg ICAoZnVuIGd0IC0+CgkJCQkgIGlmIGd0ID0gVXRmOF9saXQuZ3QgdGhlbgoJCQkJICAgIHJlYWRl ciNyZWFkX2NoYXIKCQkJCSAgICAgIChmdW4gZ3QgLT4KCQkJCQkgayAoVG9rX3BpICh0YXJnZXQs KEJ1ZmZlci5jb250ZW50cyBiKSkpKQoJCQkJICBlbHNlCgkJCQkgICAgKEJ1ZmZlci5hZGRfc3Ry aW5nIGIgKFV0ZjhfY2hhci50b19ieXRlcyBxKTsKCQkJCSAgICAgaGVscGVyKCkpKSkpCgkJIGlu CgkJICAgaGVscGVyKCkKCSAgICAgICBlbHNlCgkJIHJlYWRfbiByZWFkZXIgMgoJCSAgIChmdW4g cWd0IC0+CgkJICAgICAgaWYgcWd0ID0gVXRmOF9saXQucXVlc2d0IHRoZW4KCQkJayAoVG9rX3Bp ICh0YXJnZXQsIiIpKQoJCSAgICAgIGVsc2UKCQkJcmFpc2UgKExleF9lcnJvciAibWFsZm9ybWVk IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iKSkpKSkKCmxldCBmaW5pc2hfcGFyc2VfY2RhdGEgKHJl YWRlcjojQ3BzX3JlYWRlci50KSAoazooeG1sX3Rva2VuLT51bml0KSkgPQogIHJlYWRfbiByZWFk ZXIgNwogICAgKGZ1biBvcGVuZXIgLT4KICAgICAgIGlmIG5vdCAob3BlbmVyID0gVXRmOF9saXQu b3BlbmJyX2NkYXRhX29wZW5icikgdGhlbgoJIHJhaXNlIChMZXhfZXJyb3IgIm1hbGZvcm1lZCBD REFUQSBzZWN0aW9uIik7CiAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMzIgaW4KICAgICAg IGxldCByZWMgaGVscGVyICgpID0KCSByZWFkZXIjcmVhZF93aGlsZQoJICAgKGZ1biBjIC0+Cgkg ICAgICBpZiBub3QgKFVfY2hhci5pc19jaGFyIChVdGY4X2NoYXIudG9fVV9jaGFyIGMpKSB0aGVu CgkJcmFpc2UgKExleF9lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKCSAgICAgIG5vdCAoYyA9 IFV0ZjhfbGl0LmNsb3NlYnIpKQoJICAgKGZ1biBzdHIgLT4KCSAgICAgIEJ1ZmZlci5hZGRfc3Ry aW5nIGIgc3RyOwoJICAgICAgcmVhZGVyI3JlYWRfd2hpbGUKCQkoZnVuIHNvbWV0aGluZyAtPgoJ CSAgIGlmIG5vdCAoVV9jaGFyLmlzX2NoYXIgKFV0ZjhfY2hhci50b19VX2NoYXIgc29tZXRoaW5n KSkgdGhlbgoJCSAgICAgcmFpc2UgKExleF9lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKCQkg ICAoc29tZXRoaW5nID0gVXRmOF9saXQuY2xvc2VicikpCgkJKGZ1biBjbG9zZWJycyAtPgoJCSAg IGFzc2VydCAoKFN0cmluZy5sZW5ndGggY2xvc2VicnMpID4gMCk7CgkJICAgaWYgKFN0cmluZy5s ZW5ndGggY2xvc2VicnMpID49IDIgdGhlbgoJCSAgICAgcmVhZGVyI3BlZWtfY2hhcgoJCSAgICAg ICAoZnVuIHNvbWV0aGluZyAtPgoJCQkgIGlmIChzb21ldGhpbmcgPSBVdGY4X2xpdC5ndCkgdGhl bgoJCQkgICAgcmVhZGVyI3JlYWRfY2hhcgoJCQkgICAgICAoZnVuIGd0IC0+CgkJCQkgYXNzZXJ0 IChndCA9IFV0ZjhfbGl0Lmd0KTsKCQkJCSBpZiAoU3RyaW5nLmxlbmd0aCBjbG9zZWJycykgPiAy IHRoZW4KCQkJCSAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5tYWtlICgoU3RyaW5nLmxl bmd0aCBjbG9zZWJycykgLSAyKSAnXScpOwoJCQkJIGsgKFRva19jZGF0YSAoQnVmZmVyLmNvbnRl bnRzIGIpKSkKCQkJICBlbHNlCgkJCSAgICAoQnVmZmVyLmFkZF9zdHJpbmcgYiBjbG9zZWJyczsK CQkJICAgICBoZWxwZXIoKSkpCgkJICAgZWxzZQoJCSAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIg Y2xvc2VicnM7CgkJICAgICAgaGVscGVyKCkpKSkgaW4KCSBoZWxwZXIoKSkKCmxldCBwdWxsX25l eHRfdG9rZW4gKHJlYWRlcjojQ3BzX3JlYWRlci50KSAoazooeG1sX3Rva2VuLT51bml0KSkgPQog IHNraXBfd3MgcmVhZGVyCiAgICAoZnVuICgpIC0+CiAgICAgICBkZXRlcm1pbmVfbmV4dF90b2tl bl9raW5kIHJlYWRlcgogICAgICAgKGZ1bmN0aW9uCgkgICAgVG9rX2tpbmRfdGV4dCAtPiByZWFk X2NoYXJkYXRhIHJlYWRlciAoZnVuIGRhdGEgLT4gayAoVG9rX3RleHQoZGF0YSkpKQoJICB8IFRv a19raW5kX3N0YXJ0X3RhZyAtPiBmaW5pc2hfcGFyc2Vfc3RhcnRfdGFnIHJlYWRlciBrCgkgIHwg VG9rX2tpbmRfZW5kX3RhZyAtPiBmaW5pc2hfcGFyc2VfZW5kX3RhZyByZWFkZXIgawoJICB8IFRv a19raW5kX2NvbW1lbnQgLT4gZmluaXNoX3BhcnNlX2NvbW1lbnQgcmVhZGVyIGsKCSAgfCBUb2tf a2luZF9waSAtPiBmaW5pc2hfcGFyc2VfcGkgcmVhZGVyIGsKCSAgfCBUb2tfa2luZF9jZGF0YSAt PiBmaW5pc2hfcGFyc2VfY2RhdGEgcmVhZGVyIGspKQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5YXhwby95YXhwb2RvbS5tbH4AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDAwMDY0NAAwMDQwMzQxADAwNDAzNDEAMDAwMDAwMzA2MTQAMTAyMDAwNTQ2 NzQAMDE1NzEwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz dGFyICAAbWlrZWxpbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtaWtlbGluAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAADAwMDAwMDAAMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHR5cGUgdHh0ID0gc3RyaW5nCnR5cGUgY2RhdGEgPSBz dHJpbmcKdHlwZSBxbmFtZSA9CiAgICBRTmFtZSBvZiB0eHQqdHh0KnR4dCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKdHlwZSBhdHQgPQogICAgQXR0IG9mIHFuYW1lKnR4dCByZWYKdHlw ZSBjb250ZW50ID0KICAgIFRleHQgb2YgdHh0CiAgfCBDREFUQSBvZiBjZGF0YQogIHwgQ29tbWVu dCBvZiB0eHQKICB8IFBJIG9mIHR4dCp0eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgqKiBbKHRhcmdldCx2YWx1ZSldICopCiAgfCBTdWJlbGUgb2YgZWxlCmFuZCBlbGUg PQogICAgRWxlbWVudCBvZiBxbmFtZSphdHQgbGlzdCByZWYqY29udGVudCBsaXN0IHJlZiAgICAg KCoqIFsobmFtZSxhdHRzLGNoaWxkcmVuKV0gKikKCigqKiBBIGRvY3VtZW50IGlzIGEgbGlzdCBv ZiBjb21tZW50cyBhbmQgUElzLCBhbmQgdGhlIGRvY3VtZW50IGVsZW1lbnQuICopCnR5cGUgZG9j ID0gY29udGVudCBsaXN0IHJlZiplbGUgcmVmCgooKiBjb25zdHJ1Y3RvcnMsIGFjY2Vzc29ycyBh bmQgbXV0YXRvcnMgKikKCmxldCBxbmFtZV9wZnggKFFOYW1lKHBmeCxsb2NhbCxuc1VSSSkpID0g cGZ4CmxldCBxbmFtZV9sb2NhbCAoUU5hbWUocGZ4LGxvY2FsLG5zVVJJKSkgPSBsb2NhbApsZXQg cW5hbWVfbnNVUkkgKFFOYW1lKHBmeCxsb2NhbCxuc1VSSSkpID0gbnNVUkkKCmxldCBxbmFtZV9l cSAoUU5hbWUocGZ4LGxvY2FsLF8pKSAoUU5hbWUocGZ4Jyxsb2NhbCcsXykpID0KICBwZnggPSBw ZngnICYmIGxvY2FsID0gbG9jYWwnCgpsZXQgcW5hbWVfZXEnIChRTmFtZShfLGxvY2FsLG5zVVJJ KSkgKFFOYW1lKF8sbG9jYWwnLG5zVVJJJykpID0KICBsb2NhbCA9IGxvY2FsJyAmJiBuc1VSSSA9 IG5zVVJJJwoKbGV0IGF0dF9uYW1lICgoQXR0KG5hbWUsdmFsdWUpKTphdHQpID0gbmFtZQpsZXQg YXR0X3ZhbHVlICgoQXR0KG5hbWUsdmFsdWUpKTphdHQpID0gIXZhbHVlCgpsZXQgZmluZF9hdHQg bmFtZSBhdHRzID0KICBMaXN0LmZpbmQgKGZ1biAoQXR0KG5hbWUnLF8pKSAtPiBxbmFtZV9lcSBu YW1lIG5hbWUnKSBhdHRzCgpsZXQgZmluZF9hdHQnIG5hbWUgYXR0cyA9CiAgTGlzdC5maW5kIChm dW4gKEF0dChuYW1lJyxfKSkgLT4gcW5hbWVfZXEnIG5hbWUgbmFtZScpIGF0dHMKCmxldCBtYWtl X2VsZSBuYW1lID0gKEVsZW1lbnQobmFtZSxyZWYgW10sIHJlZltdKSkKCmxldCBlbGVfbmFtZSAo RWxlbWVudChuYW1lLGF0dHMsY2hpbGRyZW4pKSA9IG5hbWUKCmxldCBlbGVfYXR0cyAoRWxlbWVu dChuYW1lLGF0dHMsY2hpbGRyZW4pKSA9ICFhdHRzCgpsZXQgc2V0X2VsZV9hdHRzIChFbGVtZW50 KG5hbWUsYXR0cyxjaGlsZHJlbikpIGEgPSBhdHRzIDo9IGEKCmxldCBlbGVfY2hpbGRyZW4gKEVs ZW1lbnQobmFtZSxhdHRzLGNoaWxkcmVuKSkgPSAhY2hpbGRyZW4KCmxldCBzZXRfZWxlX2NoaWxk cmVuIChFbGVtZW50KG5hbWUsYXR0cyxjaGlsZHJlbikpIGMgPSBjaGlsZHJlbiA6PSBjCgpsZXQg ZWxlX3ByZXBlbmRfY2hpbGQgKEVsZW1lbnQobmFtZSxhdHRzLGNoaWxkcmVuKSkgYyA9IGNoaWxk cmVuIDo9IChjIDo6ICFjaGlsZHJlbikKbGV0IGVsZV9hcHBlbmRfY2hpbGQgKEVsZW1lbnQobmFt ZSxhdHRzLGNoaWxkcmVuKSkgYyA9IGNoaWxkcmVuIDo9ICghY2hpbGRyZW4gQCAoYyA6OiBbXSkp CgpsZXQgZWxlX3NldF9hdHQgKChFbGVtZW50KGVsZV9uYW1lLGF0dHMsY2hpbGRyZW4pKSBhcyB0 aGVfZWxlKSBuYW1lIHZhbHVlID0KICB0cnkgCiAgICAobGV0IChBdHQobmFtZScsdmFsdWUnKSkg PSBmaW5kX2F0dCBuYW1lICFhdHRzIGluCiAgICAgICB2YWx1ZScgOj0gdmFsdWUpCiAgd2l0aAog ICAgICBOb3RfZm91bmQgLT4gYXR0cyA6PSAoQXR0KG5hbWUscmVmIHZhbHVlKSA6OiAhYXR0cykK CmxldCBlbGVfZ2V0X2F0dCAoRWxlbWVudChlbGVfbmFtZSxhdHRzLGNoaWxkcmVuKSkgbmFtZSA9 CiAgbWF0Y2ggKGZpbmRfYXR0IG5hbWUgIWF0dHMpIHdpdGgKICAgICAgIEF0dChuYW1lLHZhbHVl KSAtPiAhdmFsdWUKCmxldCBlbGVfZ2V0X2F0dCcgKEVsZW1lbnQoZWxlX25hbWUsYXR0cyxjaGls ZHJlbikpIG5hbWUgPQogIG1hdGNoIChmaW5kX2F0dCcgbmFtZSAhYXR0cykgd2l0aAogICAgICBB dHQobmFtZSx2YWx1ZSkgLT4gIXZhbHVlCgpsZXQgZWxlX3JlbW92ZV9hdHQgKChFbGVtZW50KGVs ZV9uYW1lLGF0dHMsY2hpbGRyZW4pKSBhcyB0aGVfZWxlKSBuYW1lID0KICBhdHRzIDo9IExpc3Qu ZmlsdGVyIChmdW4gKEF0dChuYW1lJyxfKSkgLT4gbm90IChxbmFtZV9lcSBuYW1lIG5hbWUnKSkg IWF0dHMKCmxldCBlbGVfcmVtb3ZlX2F0dCcgKChFbGVtZW50KGVsZV9uYW1lLGF0dHMsY2hpbGRy ZW4pKSBhcyB0aGVfZWxlKSBuYW1lID0KICBhdHRzIDo9IExpc3QuZmlsdGVyIChmdW4gKEF0dChu YW1lJyxfKSkgLT4gbm90IChxbmFtZV9lcScgbmFtZSBuYW1lJykpICFhdHRzCgpsZXQgZWxlX2lu bmVyX3RleHQgKEVsZW1lbnQoXyxfLGNoaWxkcmVuKSkgPQogIGxldCByZWMgaGVscGVyIGNoaWxk cmVuID0KICAgIChtYXRjaCBjaGlsZHJlbiB3aXRoCgkgVGV4dChzKSA6OiByZXN0IC0+IHMKICAg ICAgIHwgXyA6OiByZXN0IC0+IGhlbHBlciByZXN0CiAgICAgICB8IFtdIC0+ICIiKSBpbgogICAg aGVscGVyICFjaGlsZHJlbgoKbGV0IGRvY19wcm9sb2cgKChwcm9sb2csZWxlKTpkb2MpID0gIXBy b2xvZwoKbGV0IGRvY19lbGUgKChwcm9sb2csZWxlKTpkb2MpID0gIWVsZQoKbGV0IGNsb25lX3Fu YW1lIChRTmFtZShwZngsbG9jYWwsbnNVUkkpKSA9CiAgUU5hbWUoU3RyaW5nLmNvcHkgcGZ4LFN0 cmluZy5jb3B5IGxvY2FsLFN0cmluZy5jb3B5IG5zVVJJKQoKbGV0IGNsb25lX2F0dCAoQXR0KG5h bWUsdmFsdWUpKSA9CiAgQXR0KGNsb25lX3FuYW1lIG5hbWUscmVmICF2YWx1ZSkKCmxldCByZWMK ICBjbG9uZV9lbGUgKEVsZW1lbnQobmFtZSxhdHRzLGNoaWxkcmVuKSkgPQogIEVsZW1lbnQoY2xv bmVfcW5hbWUgbmFtZSwKCSAgcmVmIChMaXN0Lm1hcCBjbG9uZV9hdHQgIWF0dHMpLAoJICByZWYg KExpc3QubWFwIGNsb25lX2NvbnRlbnQgIWNoaWxkcmVuKSkgYW5kCiAgY2xvbmVfY29udGVudCA9 IGZ1bmN0aW9uCiAgICAgIFN1YmVsZShlbGUpIC0+IFN1YmVsZShjbG9uZV9lbGUgZWxlKQogICAg fCBUZXh0KHMpIC0+IFRleHQoU3RyaW5nLmNvcHkgcykKICAgIHwgQ0RBVEEocykgLT4gQ0RBVEEo U3RyaW5nLmNvcHkgcykKICAgIHwgQ29tbWVudChzKSAtPiBDb21tZW50KFN0cmluZy5jb3B5IHMp CiAgICB8IFBJKHQsdikgLT4gUEkoU3RyaW5nLmNvcHkgdCxTdHJpbmcuY29weSB2KQoKKCogc2Vy aWFsaXplcnMgKikKKCogVE9ETzogbWFrZSB0aGVzZSBvdXRwdXQgdG8gYSBCdWZmZXIudCBmb3Ig ZWZmaWNpZW5jeSAqKQoKbGV0IHN0cmluZ19vZl9xbmFtZSAoUU5hbWUocGZ4LGxvY2FsLG5zVVJJ KSkgPSAKICBpZiAoU3RyaW5nLmxlbmd0aCBwZngpID4gMCB0aGVuCiAgICBwZnggXiAiOiIgXiBs b2NhbAogIGVsc2UKICAgIGxvY2FsCmxldCBzdHJpbmdfb2ZfYXR0IChBdHQobmFtZSx2YWx1ZSkp ID0gKHN0cmluZ19vZl9xbmFtZSBuYW1lKSBeICI9XCIiIF4gIXZhbHVlIF4gIlwiIgpsZXQgc3Ry aW5nX29mX2F0dHMgYXR0cyA9CiAgTGlzdC5mb2xkX2xlZnQgKGZ1biByZXN0IGF0dCAtPiByZXN0 IF4gIiAiIF4gKHN0cmluZ19vZl9hdHQgYXR0KSkgIiIgYXR0cwoKbGV0IHJlYyAKICBzdHJpbmdf b2ZfZWxlIChFbGVtZW50KG5hbWUsYXR0cyxjaGlsZHJlbikpID0KICAiPCIgXiAoc3RyaW5nX29m X3FuYW1lIG5hbWUpIF4gKHN0cmluZ19vZl9hdHRzICFhdHRzKSBeCiAgKGlmIChMaXN0Lmxlbmd0 aCAhY2hpbGRyZW4pID0gMCB0aGVuCiAgICAgIi8+IgogICBlbHNlCiAgICAgIj4iIF4gKExpc3Qu Zm9sZF9sZWZ0IChmdW4gcmVzdCBjb250ZW50IC0+IHJlc3QgXiAoc3RyaW5nX29mX2NvbnRlbnQg Y29udGVudCkpICIiICFjaGlsZHJlbikgXiAiPC8iIF4gKHN0cmluZ19vZl9xbmFtZSBuYW1lKSBe ICI+IikKYW5kCiAgc3RyaW5nX29mX2NvbnRlbnQgY29udGVudCA9CiAgKG1hdGNoIGNvbnRlbnQg d2l0aAogICAgICAgVGV4dChzKSAtPiBzCiAgICAgfCBDREFUQShzKSAtPiAiPCFbQ0RBVEFbIiBe IHMgXiAiXV0+IgogICAgIHwgU3ViZWxlKGUpIC0+IHN0cmluZ19vZl9lbGUoZSkKICAgICB8IENv bW1lbnQocykgLT4gIjwhLS0iIF4gcyBeICItLT4iCiAgICAgfCBQSSh0LHYpIC0+CgkgaWYgU3Ry aW5nLmxlbmd0aCB2ID4gMCB0aGVuCgkgICAiPD8iIF4gdCBeICIgIiBeIHYgXiAiPz4iCgkgZWxz ZQoJICAgIjw/IiBeIHQgXiAiPz4iKQoKbGV0IHN0cmluZ19vZl9kb2MgKChwcm9sb2csZG9jX2Vs ZSk6ZG9jKSA9CiAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcmVzdCBjb250ZW50IC0+IHJlc3QgXiAo c3RyaW5nX29mX2NvbnRlbnQgY29udGVudCkpICIiICFwcm9sb2cpIF4gKHN0cmluZ19vZl9lbGUg IWRvY19lbGUpCgooKiBOYW1lc3BhY2UgcHJvY2Vzc2luZyB1dGlsaXRpZXMgKikKCmV4Y2VwdGlv biBOYW1lc3BhY2VfZXJyb3IKCmxldCBpc194bWxuc19wcmVmaXhfZGVjbCB5YXhwb2F0dCA9CiAg eWF4cG9hdHQuWWF4cG8uYXR0X25hbWUuWWF4cG8ucGZ4ID0gInhtbG5zIgoKbGV0IGlzX3htbG5z X2RlZmF1bHRfZGVjbCB5YXhwb2F0dCA9CiAgeWF4cG9hdHQuWWF4cG8uYXR0X25hbWUuWWF4cG8u cGZ4ID0gIiIgJiYgeWF4cG9hdHQuWWF4cG8uYXR0X25hbWUuWWF4cG8ubG9jYWwgPSAieG1sbnMi CgpsZXQgaXNfeG1sbnNfZGVjbCB5YXhwb2F0dCA9CiAgaXNfeG1sbnNfcHJlZml4X2RlY2wgeWF4 cG9hdHQgfHwgaXNfeG1sbnNfZGVmYXVsdF9kZWNsIHlheHBvYXR0CgpsZXQgZG9fbG9va3VwIHBy ZWQgZGVjbHMgPQogIGxldCByc2x0ID0gcmVmIChOb25lOllheHBvLmF0dCBvcHRpb24pIGluCiAg ICBTdGFjay5pdGVyCiAgICAgIChmdW4gc29tZV9kZWNscyAtPgoJIChtYXRjaCAhcnNsdCB3aXRo CgkgICAgICBOb25lIC0+CgkJKHRyeQoJCSAgIHJzbHQgOj0gU29tZShMaXN0LmZpbmQgcHJlZCBz b21lX2RlY2xzKQoJCSB3aXRoCgkJICAgICBOb3RfZm91bmQgLT4gKCkpCgkgICAgfCBfIC0+ICgp KSkKICAgICAgZGVjbHM7CiAgICAobWF0Y2ggIXJzbHQgd2l0aAoJIE5vbmUgLT4gcmFpc2UgTmFt ZXNwYWNlX2Vycm9yCiAgICAgICB8IFNvbWUodGhlX2F0dCkgLT4gdGhlX2F0dC5ZYXhwby5hdHRf dmFsdWUpCgpsZXQgbG9va3VwX3ByZWZpeCBhX3BmeCBkZWNscyA9CiAgZG9fbG9va3VwCiAgICAo ZnVuIGFuX2F0dCAtPgogICAgICAgYW5fYXR0LllheHBvLmF0dF9uYW1lLllheHBvLmxvY2FsID0g YV9wZngpCiAgICBkZWNscwoKbGV0IGxvb2t1cF9kZWZhdWx0IGRlY2xzID0KICB0cnkKICAgIGRv X2xvb2t1cCBpc194bWxuc19kZWZhdWx0X2RlY2wgZGVjbHMKICB3aXRoCiAgICAgIE5hbWVzcGFj ZV9lcnJvciAtPiAiIgoKbGV0IHFuYW1lX29mX1lheHBvIG5hbWUgdXJpID0KICBRTmFtZShuYW1l LllheHBvLnBmeCxuYW1lLllheHBvLmxvY2FsLHVyaSkKCmxldCByZXNvbHZlX3lheHBvX3FuYW1l IG5hbWUgZGVjbHMgYWxsb3dfZGVmYXVsdCA9CiAgcW5hbWVfb2ZfWWF4cG8gbmFtZQogICAgKG1h dGNoIG5hbWUuWWF4cG8ucGZ4IHdpdGgKCSAiIiAtPiBpZiBhbGxvd19kZWZhdWx0IHRoZW4gbG9v a3VwX2RlZmF1bHQgZGVjbHMgZWxzZSAiIgogICAgICAgfCBfIGFzIGFfcGZ4IC0+IGxvb2t1cF9w cmVmaXggYV9wZnggZGVjbHMpCgpsZXQgYXR0X29mX1lheHBvIGF0dCBkZWNscyA9CiAgQXR0KChp ZiBpc194bWxuc19kZWNsIGF0dCB0aGVuIAoJIHFuYW1lX29mX1lheHBvIGF0dC5ZYXhwby5hdHRf bmFtZSAiIgogICAgICAgZWxzZQoJIHJlc29sdmVfeWF4cG9fcW5hbWUgYXR0LllheHBvLmF0dF9u YW1lIGRlY2xzIGZhbHNlOyksCiAgICAgIHJlZiBhdHQuWWF4cG8uYXR0X3ZhbHVlKQoKbGV0IHJl YyBjaGVja19hdHRzX3VuaXF1ZW5lc3MgPSBmdW5jdGlvbgogICAgW10gLT4gKCkKICB8IChBdHQo YW5fYXR0X25hbWUsXykpIDo6IHJlc3QgLT4KICAgICAgTGlzdC5pdGVyCiAgICAgIChmdW4gKEF0 dChhbm90aGVyX2F0dF9uYW1lLF8pKSAtPgoJIG1hdGNoIChhbl9hdHRfbmFtZSxhbm90aGVyX2F0 dF9uYW1lKSB3aXRoCgkgICAgIChRTmFtZShwZngxLGxvY2FsMSx1cmkxKSwoUU5hbWUocGZ4Mixs b2NhbDIsdXJpMikpKSB3aGVuIGxvY2FsMSA9IGxvY2FsMiAmJiB1cmkxID0gdXJpMiAtPgoJICAg ICAgIHJhaXNlIChZYXhwby5QYXJzZV9lcnJvciAoIkF0dHJpYnV0ZSBzcGVjaWZpZWQgbXVsdGlw bGUgdGltZXMiLE5vbmUpKQoJICAgfCBfIC0+ICgpKQogICAgICByZXN0OwogICAgICBjaGVja19h dHRzX3VuaXF1ZW5lc3MgcmVzdAoKbGV0IHByb2Nfc3RhcnRfdGFnIG5hbWUgYXR0cyBkZWNscyA9 CiAgbGV0IHNvbWVfZGVjbHMgPSBMaXN0LmZpbHRlciBpc194bWxuc19kZWNsIGF0dHMgaW4KICAg IFN0YWNrLnB1c2ggc29tZV9kZWNscyBkZWNsczsKICAgIGxldCBuZXdfZWxlID0gbWFrZV9lbGUg KHJlc29sdmVfeWF4cG9fcW5hbWUgbmFtZSBkZWNscyB0cnVlKSBpbgogICAgbGV0IG5ld19hdHRz ID0gKExpc3QubWFwIChmdW4gYW5fYXR0IC0+IGF0dF9vZl9ZYXhwbyBhbl9hdHQgZGVjbHMpIGF0 dHMpIGluCiAgICAgIGNoZWNrX2F0dHNfdW5pcXVlbmVzcyBuZXdfYXR0czsKICAgICAgc2V0X2Vs ZV9hdHRzIG5ld19lbGUgbmV3X2F0dHM7CiAgICAgIG5ld19lbGUKCmxldCByZWMgY29udGludWVf YnVpbGRfZWxlbWVudF90cmVlIChyZWFkZXI6I0Nwc19yZWFkZXIudCkgKG5hbWU6WWF4cG8ucW5h bWUpICh0aGVfZWxlOmVsZSkgKGRlY2xzOiBZYXhwby5hdHQgbGlzdCBTdGFjay50KSAoazplbGUt PnVuaXQpID0KICBsZXQgcmVjIGhlbHBlciAoKSA9CiAgICBZYXhwby5wdWxsX25leHRfdG9rZW4g cmVhZGVyCiAgICAgIChmdW5jdGlvbgoJICAgWWF4cG8uVG9rX3RleHQocykgLT4gZWxlX3ByZXBl bmRfY2hpbGQgdGhlX2VsZSAoVGV4dCBzKTsgaGVscGVyICgpCgkgfCBZYXhwby5Ub2tfY2RhdGEo cykgLT4gZWxlX3ByZXBlbmRfY2hpbGQgdGhlX2VsZSAoQ0RBVEEgcyk7IGhlbHBlciAoKQoJIHwg WWF4cG8uVG9rX3N0YXJ0X3RhZyhjaGlsZF9uYW1lLGF0dHMpIC0+CgkgICAgIGxldCBjaGlsZCA9 IHByb2Nfc3RhcnRfdGFnIGNoaWxkX25hbWUgYXR0cyBkZWNscyBpbgoJICAgICAgIGNvbnRpbnVl X2J1aWxkX2VsZW1lbnRfdHJlZSByZWFkZXIgY2hpbGRfbmFtZSBjaGlsZCBkZWNscwoJCSAoZnVu IGZpbmlzaGVkIC0+CgkJICAgIGFzc2VydCAoY2hpbGQgPSBmaW5pc2hlZCk7CgkJICAgIGVsZV9w cmVwZW5kX2NoaWxkIHRoZV9lbGUgKFN1YmVsZSBmaW5pc2hlZCk7IGhlbHBlciAoKSkKCSB8IFlh eHBvLlRva19lbXB0eV9lbGUoY2hpbGRfbmFtZSxhdHRzKSAtPgoJICAgICBsZXQgY2hpbGQgPSBw cm9jX3N0YXJ0X3RhZyBjaGlsZF9uYW1lIGF0dHMgZGVjbHMgaW4KCSAgICAgICBlbGVfcHJlcGVu ZF9jaGlsZCB0aGVfZWxlIChTdWJlbGUgY2hpbGQpOwoJICAgICAgIGhlbHBlciAoKQoJIHwgWWF4 cG8uVG9rX2VuZF90YWcoZW5kX25hbWUpIGFzIHRvayAtPgoJICAgICBpZiBuYW1lID0gZW5kX25h bWUgdGhlbgoJICAgICAgIChzZXRfZWxlX2NoaWxkcmVuIHRoZV9lbGUgKExpc3QucmV2IChlbGVf Y2hpbGRyZW4gdGhlX2VsZSkpOwoJCWlnbm9yZSAoU3RhY2sucG9wIGRlY2xzKTsKCQlrIHRoZV9l bGUpCgkgICAgIGVsc2UKCSAgICAgICByYWlzZSAoWWF4cG8uUGFyc2VfZXJyb3IgKCJVbmV4cGVj dGVkIGVuZCB0YWciLFNvbWUgdG9rKSkKCSB8IFlheHBvLlRva19jb21tZW50KHMpIC0+CgkgICAg IGVsZV9wcmVwZW5kX2NoaWxkIHRoZV9lbGUgKENvbW1lbnQgcyk7IGhlbHBlciAoKQoJIHwgWWF4 cG8uVG9rX3BpKHQsdikgLT4KCSAgICAgZWxlX3ByZXBlbmRfY2hpbGQgdGhlX2VsZSAoUEkgKHQs dikpOyBoZWxwZXIgKCkpIGluCiAgICBoZWxwZXIgKCkKCSAgICAgCgpsZXQgYnVpbGRfZWxlbWVu dF90cmVlX2NwcyByZWFkZXIgZGVjbHMgayA9CiAgWWF4cG8ucHVsbF9uZXh0X3Rva2VuIHJlYWRl cgogICAgKGZ1bmN0aW9uCgkgWWF4cG8uVG9rX3N0YXJ0X3RhZyhuYW1lLGF0dHMpIC0+CgkgICBs ZXQgdGhlX2VsZSA9IHByb2Nfc3RhcnRfdGFnIG5hbWUgYXR0cyBkZWNscyBpbgoJICAgICBjb250 aW51ZV9idWlsZF9lbGVtZW50X3RyZWUgcmVhZGVyIG5hbWUgdGhlX2VsZSBkZWNscwoJICAgICAg IChmdW4gZmluaXNoZWQgLT4KCQkgIGFzc2VydCAoZmluaXNoZWQgPSB0aGVfZWxlKTsKCQkgIGsg ZmluaXNoZWQpCiAgICAgICB8IFlheHBvLlRva19lbXB0eV9lbGUobmFtZSxhdHRzKSAtPgoJICAg bGV0IHRoZV9lbGUgPSBwcm9jX3N0YXJ0X3RhZyBuYW1lIGF0dHMgZGVjbHMgaW4KCSAgICAgayB0 aGVfZWxlCiAgICAgICB8IF8gYXMgdG9rIC0+IHJhaXNlIChZYXhwby5QYXJzZV9lcnJvciAoInVu ZXhwZWN0ZWQgdG9rZW47IGV4cGVjdGVkIHN0YXJ0IHRhZyIsU29tZSB0b2spKSkKCmxldCBidWls ZF9lbGVtZW50X3RyZWUgcmVhZGVyIGRlY2xzID0KICBsZXQgcnNsdCA9IHJlZiBOb25lIGluCiAg ICBidWlsZF9lbGVtZW50X3RyZWVfY3BzIHJlYWRlciBkZWNscwogICAgICAoZnVuIHRoZV9lbGUg LT4gcnNsdCA6PSBTb21lKHRoZV9lbGUpKTsKICAgIChtYXRjaCAhcnNsdCB3aXRoCgkgU29tZShl KSAtPiBlCiAgICAgICB8IF8gLT4gZmFpbHdpdGggIlJlYWRlciBwYXVzZWQgcGFyc2luZywgYnV0 IHBhcnNlciBpcyBub3QgQ1BTIikKCmxldCBidWlsZF9kb2NfdHJlZV9jcHMgcmVhZGVyIGsgPSAK ICBsZXQgcHJvbG9nID0gcmVmIFtdIGluCiAgbGV0IGRlY2xzID0gU3RhY2suY3JlYXRlICgpIGlu CiAgbGV0IHJlYyBoZWxwZXIgKCkgPQogICAgWWF4cG8ucHVsbF9uZXh0X3Rva2VuIHJlYWRlcgog ICAgICAoZnVuY3Rpb24KCSAgIFlheHBvLlRva19waSh0LHYpIC0+IHByb2xvZyA6PSAoUEkgKHQs dikpIDo6ICFwcm9sb2c7IGhlbHBlciAoKQoJIHwgWWF4cG8uVG9rX2NvbW1lbnQocykgLT4gcHJv bG9nIDo9IChDb21tZW50IHMpIDo6ICFwcm9sb2c7IGhlbHBlciAoKQoJIHwgWWF4cG8uVG9rX3N0 YXJ0X3RhZyhuYW1lLGF0dHMpIC0+CgkgICAgIGxldCB0aGVfZWxlID0gcHJvY19zdGFydF90YWcg bmFtZSBhdHRzIGRlY2xzIGluCgkgICAgICAgY29udGludWVfYnVpbGRfZWxlbWVudF90cmVlIHJl YWRlciBuYW1lIHRoZV9lbGUgZGVjbHMKCQkgKGZ1biBmaW5pc2hlZCAtPgoJCSAgICBhc3NlcnQg KGZpbmlzaGVkID0gdGhlX2VsZSk7CgkJICAgIHByb2xvZyA6PSAoTGlzdC5yZXYgIXByb2xvZyk7 CgkJICAgIGsgKChwcm9sb2csIHJlZiBmaW5pc2hlZCk6ZG9jKSkKCSB8IFlheHBvLlRva19lbXB0 eV9lbGUoY2hpbGRfbmFtZSxhdHRzKSAtPgoJICAgICBsZXQgdGhlX2VsZSA9IHByb2Nfc3RhcnRf dGFnIGNoaWxkX25hbWUgYXR0cyBkZWNscyBpbgoJICAgICAgIHByb2xvZyA6PSAoTGlzdC5yZXYg IXByb2xvZyk7CgkgICAgICAgayAoKHByb2xvZywgcmVmIHRoZV9lbGUpOmRvYykKCSB8IF8gYXMg dG9rLT4gcmFpc2UgKFlheHBvLlBhcnNlX2Vycm9yICgidW5leHBlY3RlZCB0b2tlbiIsU29tZSB0 b2spKSkgaW4KICAgIGhlbHBlciAoKQoKbGV0IGJ1aWxkX2RvY190cmVlIHJlYWRlciA9CiAgbGV0 IHJzbHQgPSByZWYgTm9uZSBpbgogICAgYnVpbGRfZG9jX3RyZWVfY3BzIHJlYWRlcgogICAgICAo ZnVuIHRoZV9kb2MgLT4KCSByc2x0IDo9IFNvbWUodGhlX2RvYykpOwogICAgKG1hdGNoICFyc2x0 IHdpdGgKCSBTb21lKHRoZV9kb2MpIC0+IHRoZV9kb2MKICAgICAgIHwgXyAtPiBmYWlsd2l0aCAi UmVhZGVyIHBhdXNlZCBwYXJzaW5nLCBidXQgcGFyc2VyIGlzIG5vdCBDUFMiKQoKbW9kdWxlIE5h bWVzcGFjZV91dGlscyA9CnN0cnVjdAogIGxldCBpc194bWxuc19wcmVmaXhfZGVjbCA9IGZ1bmN0 aW9uCiAgICAgIEF0dChRTmFtZSgieG1sbnMiLF8sIiIpLF8pIC0+IHRydWUKICAgIHwgXyAtPiBm YWxzZQoKICBsZXQgaXNfeG1sbnNfZGVmYXVsdF9kZWNsID0gZnVuY3Rpb24KICAgICAgQXR0KFFO YW1lKCIiLCJ4bWxucyIsIiIpLF8pIC0+IHRydWUKICAgIHwgXyAtPiBmYWxzZQoKICBsZXQgaXNf eG1sbnNfZGVjbCBhdHQgPQogICAgKGlzX3htbG5zX3ByZWZpeF9kZWNsIGF0dCkgfHwgKGlzX3ht bG5zX2RlZmF1bHRfZGVjbCBhdHQpCgogIGxldCB4bWxuc19kZWNsX3BmeCBhdHQgPQogICAgaWYg aXNfeG1sbnNfcHJlZml4X2RlY2wgYXR0IHRoZW4KICAgICAgKHFuYW1lX2xvY2FsIChhdHRfbmFt ZSBhdHQpKQogICAgZWxzZSBpZiBpc194bWxuc19kZWZhdWx0X2RlY2wgYXR0IHRoZW4KICAgICAg IiIKICAgIGVsc2UKICAgICAgYXNzZXJ0IGZhbHNlCgogIGxldCB4bWxuc19kZWNsX3VyaSBhdHQg PQogICAgYXR0X3ZhbHVlIGF0dAoKICBsZXQgcmVjIGxvb2t1cCBwcmVmaXggZGVjbHMgPQogICAg bGV0IHJlYyBsb29rdXBfaW4gZGVjbHMgPQogICAgICAoYXR0X3ZhbHVlCgkgKExpc3QuZmluZAoJ ICAgIChmdW5jdGlvbgoJCSAoQXR0KFFOYW1lKCIiLCJ4bWxucyIsXyksdmFsdWUpKSB3aGVuIHBy ZWZpeCA9ICIiIC0+IHRydWUKCSAgICAgICB8IChBdHQoUU5hbWUoInhtbG5zIixwcmVmaXgnLCIi KSxfKSkgd2hlbiBwcmVmaXggPSBwcmVmaXgnIC0+IHRydWUKCSAgICAgICB8IF8gLT4gZmFsc2Up CgkgICAgZGVjbHMpKSBpbgogICAgICAobWF0Y2ggZGVjbHMgd2l0aAoJICAgW10gLT4gcmFpc2Ug Tm90X2ZvdW5kCgkgfCB0aGVzZSA6OiByZXN0IC0+ICh0cnkgbG9va3VwX2luIHRoZXNlIHdpdGgg Tm90X2ZvdW5kIC0+IGxvb2t1cCBwcmVmaXggcmVzdCkpCiAgICAgCiAgbGV0IG91dCA9IGZ1bmN0 aW9uCiAgICAgIFNvbWUoeCkgLT4geAogICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZQoKICBsZXQg cmVjIHF1YWxpZnlfbmFtZXNwYWNlcyBlbGUgZGVjbHMgPQogICAgbGV0IHRvX2F0dCAocGZ4LG5z VVJJKSA9CiAgICAgIGlmIHBmeCA9ICIiIHRoZW4KCUF0dChRTmFtZSgiIiwieG1sbnMiLCIiKSxy ZWYgbnNVUkkpCiAgICAgIGVsc2UKCUF0dChRTmFtZSgieG1sbnMiLHBmeCwiIikscmVmIG5zVVJJ KSBpbgogICAgbGV0IGZyb21fbmFtZSBuYW1lIGRlY2xzID0KICAgICAgKG1hdGNoIG5hbWUgd2l0 aAoJICAgUU5hbWUocGZ4LF8sbnNVUkkpIC0+CgkgICAgICh0cnkKCQlpZiBsb29rdXAgcGZ4IGRl Y2xzID0gbnNVUkkgdGhlbgoJCSAgTm9uZQoJCWVsc2UKCQkgIFNvbWUocGZ4LG5zVVJJKQoJICAg ICAgd2l0aAoJCSAgTm90X2ZvdW5kIC0+IFNvbWUocGZ4LG5zVVJJKSkpIGluCiAgICBsZXQgcmVj IGZyb21fYXR0cyBhdHRzIGRlY2xzID0KICAgICAgKG1hdGNoIGF0dHMgd2l0aAoJICAgW10gLT4g W10KCSB8IGhkIDo6IHRsIHdoZW4gaXNfeG1sbnNfZGVjbCBoZCAtPiBmcm9tX2F0dHMgdGwgZGVj bHMKCSB8IEF0dChuYW1lLHZhbHVlKSA6OiB0bCAtPgoJICAgICBpZiAocW5hbWVfcGZ4IG5hbWUp ID0gIiIgdGhlbgoJICAgICAgIGZyb21fYXR0cyB0bCBkZWNscwoJICAgICBlbHNlCgkgICAgICAg bGV0IGRlY2wgPSBmcm9tX25hbWUgbmFtZSBkZWNscyBpbgoJCSBpZiBkZWNsID0gTm9uZSB0aGVu CgkJICAgZnJvbV9hdHRzIHRsIGRlY2xzCgkJIGVsc2UKCQkgICBsZXQgZGVjbCcgPSBvdXQgZGVj bCBpbgoJCSAgICAgZGVjbCcgOjogKExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKHggPSBkZWNs JykpCgkJCQkgKGZyb21fYXR0cyB0bCBkZWNscykpKSBpbgogICAgbGV0IHJlYyBjaGVja19jb25z aXN0ZW5jeSA9IGZ1bmN0aW9uCglbXSAtPiAoKQogICAgICB8IGFfZGVjbCA6OiB0bCAtPgoJICBM aXN0Lml0ZXIKCSAgKGZ1biBhbm90aGVyX2RlY2wgLT4KCSAgICAgaWYgKHhtbG5zX2RlY2xfcGZ4 IGFfZGVjbCkgPSAoeG1sbnNfZGVjbF9wZnggYW5vdGhlcl9kZWNsKSAmJgoJICAgICAgIG5vdCAo KHhtbG5zX2RlY2xfdXJpIGFfZGVjbCkgPSAoeG1sbnNfZGVjbF91cmkgYW5vdGhlcl9kZWNsKSkg dGhlbgoJCSBmYWlsd2l0aCAiU2VsZi1jb250cmFkaWN0b3J5IG5zVVJJcyIpIHRsIGluCiAgICBs ZXQgaW50ZXJuYWxfZGVjbHMgPSBMaXN0LmZpbHRlciBpc194bWxuc19kZWNsIChlbGVfYXR0cyBl bGUpIGluCiAgICBsZXQgbmFtZV9kZWNsID0gKGZyb21fbmFtZSAoZWxlX25hbWUgZWxlKSAoaW50 ZXJuYWxfZGVjbHMgOjogZGVjbHMpKSBpbgogICAgbGV0IG5lZWRlZF9kZWNscyA9IGlmIG5hbWVf ZGVjbCA9IE5vbmUgdGhlbiBbXSBlbHNlIFsgdG9fYXR0IChvdXQgbmFtZV9kZWNsKSBdIGluCiAg ICBsZXQgbmVlZGVkX2RlY2xzJyA9CiAgICAgIG5lZWRlZF9kZWNscyBAIChMaXN0Lm1hcCB0b19h dHQgKGZyb21fYXR0cyAoZWxlX2F0dHMgZWxlKSAobmVlZGVkX2RlY2xzIDo6IGludGVybmFsX2Rl Y2xzIDo6IGRlY2xzKSkpIGluCiAgICAgIGNoZWNrX2NvbnNpc3RlbmN5IChuZWVkZWRfZGVjbHMn IEAgaW50ZXJuYWxfZGVjbHMpOwogICAgICBMaXN0Lml0ZXIgKGZ1biAoQXR0KG5hbWUsdmFsdWUp KSAtPiBlbGVfc2V0X2F0dCBlbGUgbmFtZSAhdmFsdWUpIG5lZWRlZF9kZWNscyc7CiAgICAgIExp c3QuaXRlciAoZnVuY3Rpb24gU3ViZWxlKGUpIC0+IHF1YWxpZnlfbmFtZXNwYWNlcyBlIChuZWVk ZWRfZGVjbHMnIDo6IGRlY2xzKSB8IF8gLT4gKCkpCgkoZWxlX2NoaWxkcmVuIGVsZSkKZW5kCgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------=_Part_170323_20079352.1153421974095--