From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/116850 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pablo Rodriguez via ntg-context Newsgroups: gmane.comp.tex.context Subject: Re: question about multimedia renderings Date: Mon, 16 Jan 2023 17:48:00 +0100 Message-ID: <3e13e849-cf74-7ab3-fb50-3287eed80c10@gmx.es> References: <1d8f651a-dfa2-7fc1-815a-a6b564ee9908@gmx.es> Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------isWbZp6vFPufLbFK505kxwds" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24840"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Cc: Pablo Rodriguez To: =?UTF-8?Q?Michal_Vlas=c3=a1k_via_ntg-context?= Original-X-From: ntg-context-bounces@ntg.nl Mon Jan 16 17:48:44 2023 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pHSf5-0006Fq-SX for gctc-ntg-context-518@m.gmane-mx.org; Mon, 16 Jan 2023 17:48:43 +0100 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 3B3D0380719; Mon, 16 Jan 2023 17:48:11 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kQg7SngFg_6L; Mon, 16 Jan 2023 17:48:09 +0100 (CET) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id AEFDF380730; Mon, 16 Jan 2023 17:48:09 +0100 (CET) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 1FBDE380598 for ; Mon, 16 Jan 2023 17:48:08 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XGspJD-RO45G for ; Mon, 16 Jan 2023 17:48:05 +0100 (CET) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=212.227.15.19; helo=mout.gmx.net; envelope-from=oinos@gmx.es; receiver= Original-Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 5F8AC259 for ; Mon, 16 Jan 2023 17:48:05 +0100 (CET) Original-Received: from [192.168.1.101] ([90.166.54.9]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MbAcs-1okak80E1I-00baJ2 for ; Mon, 16 Jan 2023 17:48:04 +0100 Content-Language: en-US In-Reply-To: X-Provags-ID: V03:K1:y+OjbXdD/ifWFwe4aVcyQkQdLBNX0ahiqY7Y0qke9cnSEfEYnZn 1OSPvYXZrMJ9SYtwKgAgcksibtyQpoqSa4SS4yQI8LMy0sqpzjcMyt46qLPe171wrRJ5V/R ewCLkg/Bt+56ckjX7/j1m0R0GS8rj14PFzQAR34dO5VbjZAVCVnLpbQ+OPPrRJK2tQYDS5j WBLjxN3Z0xMmCNZD/Vb9w== UI-OutboundReport: notjunk:1;M01:P0:1m7tdTpb2/E=;oV9bst9tKEGNxLpsdy8LeUkKMJy ywZJ73c29X0O+Ct5uMXHbPrIxaKYZ3BGg4DGPRPe18LApKgOfT7aWgXtii4yffGhCy6CcEDV7 2tqADoQhuH77ySzw1DCh4dbJNk4wRpJ14M//ilDVre6zcwBMLVM12teyaUcicTrq2vLiB7vFj QGAqXomYwdrGcPVviUQgWCRDXSYO7GqcwHjnXtdrZFb6rgYN+zFCmoSBjOceE5pOTY1CrYx+h nIG/asfEgO6WG7POiUEiQIptlTrXsL5xBXZoklgUSzRbgcSSGG5o4jLq3E3AI0EzHzEqClN92 mkymfm70CuabzixOH6PXPZa8li4ESK6l/2VP5FAlR6MJlSSujh3FEgJr9rnwWpXgs+xbkxz0y 1ktz8JUIITCKVOn8ef5hnqvqNMX4yEmdU3wqK1oGEI2NzLOgIvTg67C9GpFAIYTuEgbZQmrdD ytQAe//r4xfhHOGkCYAw7zA5CI9dPXhnUgXXDhLdgC145Gu7+DJXhJ8g0CESr5sfFkD0z0olk WDIJ+qWPIprVMRycOPVkps9lFK2bmNf2Ygb4c5DxJwzS7gtuWW+57eU7fFb5/7Bg6W286jvVx Gq9sFkQiJW7CbAieTGgtDY66EWJu4kOd95xlZh7/VCabALx9A5UbLEmZWGJV9Ro9pahYsI800 JW6ZOZDYaW2U4xUp2hRQCoOFwQsl5d10ZBmg1XzWihMCBFNDF6UM+uvwxldDNpiMXI9HLWGwV VnaxwMeKiDkOSAgeKoB2O/6f9Mfi3Z0hqGjj9tFFcugk+aZv+SCrvMPJh5JkQbrH6TXsRPCj X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:116850 Archived-At: This is a multi-part message in MIME format. --------------isWbZp6vFPufLbFK505kxwds Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 1/16/23 02:42, Michal Vlasák via ntg-context wrote: > [...] > I would think that something like the attached could work. But in some > cases it fails on the TeX side with something I am not sure about. I > probably overlooked something. Anyways the idea is to just use the > Start/StopRendering actions with the correct label. Hi Michal, many thanks for your reply. Your code fixes the "auto" option. At least with the following sample: \setupinteraction[state=start] \unexpanded\def\IncludeVideo[#1] {\definerenderingwindow[#1] [width=\textwidth, height=\textwidth, framecolor=red] \userendering[#1][video/mp4][#1] [embed=yes, auto] \placerenderingwindow[#1][#1]} \starttext \null\page \startTEXpage[offset=1em, pagestate=start] \IncludeVideo[video-1.mp4] \stopTEXpage \null\page \startTEXpage[offset=1em, pagestate=start] \IncludeVideo[video-2.mp4] \stopTEXpage \null\page \stoptext I attach a diff and complete file with the the fix from today and the addition of controls, volume, repeat and opacity you sent me some days ago (already sent in https://mailman.ntg.nl/pipermail/dev-context/2022/003957.html). Just in case Hans may review your code and merge into ConTeXt. Many thanks for your help, Pablo --------------isWbZp6vFPufLbFK505kxwds Content-Type: text/x-patch; charset=UTF-8; name="lpdf-wid.diff" Content-Disposition: attachment; filename="lpdf-wid.diff" Content-Transfer-Encoding: base64 LS0tIC9ob21lL291c2lhL0Rlc2t0b3AvbHBkZi13aWQubG10CisrKyAvaG9tZS9vdXNpYS9t a3hsL2xwZGYtd2lkLmxtdApAQCAtNjQsNiArNjQsMTAgQEAKIGxvY2FsIHZfY29tcHJlc3Mg ICAgICAgICAgICAgICA9IHZhcmlhYmxlcy5jb21wcmVzcwogbG9jYWwgdl9saXN0ICAgICAg ICAgICAgICAgICAgID0gdmFyaWFibGVzLmxpc3QKIGxvY2FsIHZfdGl0bGUgICAgICAgICAg ICAgICAgICA9IHZhcmlhYmxlcy50aXRsZQorbG9jYWwgdl9jb250cm9scyAgICAgICAgICAg ICAgID0gdmFyaWFibGVzLmNvbnRyb2xzCitsb2NhbCB2X3ZvbHVtZSAgICAgICAgICAgICAg ICAgPSB2YXJpYWJsZXMudm9sdW1lCitsb2NhbCB2X3JlcGVhdCAgICAgICAgICAgICAgICAg PSB2YXJpYWJsZXNbInJlcGVhdCJdCitsb2NhbCB2X29wYWNpdHkgICAgICAgICAgICAgICAg PSB2YXJpYWJsZXMub3BhY2l0eQogCiBsb2NhbCBscGRmICAgICAgICAgICAgICAgICAgICAg PSBscGRmCiAKQEAgLTYxNSw3ICs2MTksNyBAQAogLS0gc291bmQgaXMgZGlmZmVyZW50LCBu byB3aW5kb3cgKG9yIHplcm8pIHNvIHdlIG5lZWQgdG8gY29sbGVjdCB0aGVtIGFuZAogLS0g Zm9yY2UgdGhlbSBpZiBub3Qgc2V0CiAKLWxvY2FsIG1zLCBtdSwgbWYgPSB7IH0sIHsgfSwg eyB9Citsb2NhbCBtdSwgbWYgPSB7IH0sIHsgfSwgeyB9CiAKIGxvY2FsIGZ1bmN0aW9uIGRl bGF5ZWQobGFiZWwpCiAgICAgbG9jYWwgcmVzZXJ2ZWQgPSBtdVtsYWJlbF0KQEAgLTYyMyw3 ICs2MjcsNyBAQAogICAgICAgICByZXNlcnZlZCA9IHBkZnJlc2VydmVvYmplY3QoKQogICAg ICAgICBtdVtsYWJlbF0gPSByZXNlcnZlZAogICAgIGVuZAotICAgIHJldHVybiBwZGZyZWZl cmVuY2UocmVzZXJ2ZWQpCisgICAgcmV0dXJuIHJlc2VydmVkCiBlbmQKIAogbG9jYWwgZnVu Y3Rpb24gY2hlY2tlZHJlZmVyZW5jZShyZWYpCkBAIC02MzksMTYgKzY0MywxNiBAQAogICAg IGxvY2FsIG9wZW5wYWdlICA9IHNwZWNpZmljYXRpb24ub3BlbnBhZ2UKICAgICBsb2NhbCBj bG9zZXBhZ2UgPSBzcGVjaWZpY2F0aW9uLmNsb3NlcGFnZQogICAgIGxvY2FsIG9wdGlvbiAg ICA9IHNldHRpbmdzX3RvX2hhc2goc3BlY2lmaWNhdGlvbi5vcHRpb24pCi0gICAgaWYgb3B0 aW9uW3ZfYXV0b10gdGhlbgotICAgICAgICBpZiBub3Qgb3BlbnBhZ2Ugb3Igb3BlbnBhZ2Ug PT0gIiIgdGhlbgotICAgICAgICAgICAgb3BlbnBhZ2UgPSB2YXJpYWJsZXMuU3RhcnRDdXJy ZW50UmVuZGVyaW5nCi0gICAgICAgIGVuZAotICAgICAgICBpZiBub3QgY2xvc2VwYWdlIG9y IGNsb3NlcGFnZSA9PSAiIiB0aGVuCi0gICAgICAgICAgICBjbG9zZXBhZ2UgPSB2YXJpYWJs ZXMuU3RvcEN1cnJlbnRSZW5kZXJpbmcKLSAgICAgICAgZW5kCi0gICAgZW5kCiAgICAgb3Bl bnBhZ2UgID0gY2hlY2tlZHJlZmVyZW5jZShvcGVucGFnZSkKICAgICBjbG9zZXBhZ2UgPSBj aGVja2VkcmVmZXJlbmNlKGNsb3NlcGFnZSkKKyAgICBpZiBvcHRpb25bdl9hdXRvXSB0aGVu CisgICAgICAgIGlmIG5vdCBvcGVucGFnZSB0aGVuCisgICAgICAgICAgICBvcGVucGFnZSA9 IGV4ZWN1dGVycy5zdGFydHJlbmRlcmluZyhsYWJlbCkKKyAgICAgICAgZW5kCisgICAgICAg IGlmIG5vdCBjbG9zZXBhZ2UgdGhlbgorICAgICAgICAgICAgY2xvc2VwYWdlID0gZXhlY3V0 ZXJzLnN0b3ByZW5kZXJpbmcobGFiZWwpCisgICAgICAgIGVuZAorICAgIGVuZAogICAgIGlm IG9wZW5wYWdlIG9yIGNsb3NlcGFnZSB0aGVuCiAgICAgICAgIGFjdGlvbnMgPSBwZGZkaWN0 aW9uYXJ5IHsKICAgICAgICAgICAgIFBPID0gb3BlbnBhZ2UsCkBAIC02NTYsMTMgKzY2MCw4 IEBACiAgICAgICAgIH0KICAgICBlbmQKICAgICBsb2NhbCBwYWdlID0gdG9udW1iZXIoc3Bl Y2lmaWNhdGlvbi5wYWdlKSBvciB0ZXhnZXRjb3VudCgicmVhbHBhZ2VubyIpIC0tIHRvZG8K LSAgICBsb2NhbCByID0gbXVbbGFiZWxdIG9yIHBkZnJlc2VydmVvYmplY3QoKSAtLSByZXNl cnZlLCBjaGlsZCByZWZlcnMgdG8gcGFyZW50Ci0gICAgbG9jYWwgYSA9IHBkZmRpY3Rpb25h cnkgewotICAgICAgICBTICA9IHBkZmNvbnN0YW50KCJSZW5kaXRpb24iKSwKLSAgICAgICAg UiAgPSBtZltsYWJlbF0sCi0gICAgICAgIE9QID0gMCwKLSAgICAgICAgQU4gPSBwZGZyZWZl cmVuY2UociksCi0gICAgfQorICAgIGxvY2FsIHIgPSBkZWxheWVkKGxhYmVsKSAtLSByZXNl cnZlLCBjaGlsZCByZWZlcnMgdG8gcGFyZW50CisgICAgbG9jYWwgYSA9IGV4ZWN1dGVycy5z dGFydHJlbmRlcmluZyhsYWJlbCkKICAgICBsb2NhbCBicywgYmMgPSBwZGZib3JkZXIoKQog ICAgIGxvY2FsIGQgPSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICAgU3VidHlwZSA9IHBkZmNv bnN0YW50KCJTY3JlZW4iKSwKQEAgLTY3Niw3ICs2NzUsNiBAQAogICAgIGxvY2FsIHdpZHRo ID0gc3BlY2lmaWNhdGlvbi53aWR0aCBvciAwCiAgICAgbG9jYWwgaGVpZ2h0ID0gc3BlY2lm aWNhdGlvbi5oZWlnaHQgb3IgMAogICAgIGNvbnRleHQobm9kZWluamVjdGlvbnMuYW5ub3Rh dGlvbih3aWR0aCxoZWlnaHQsMCxkKCkscikpIC0tIHNhdmUgcmVmCi0gICAgcmV0dXJuIHBk ZnJlZmVyZW5jZShyKQogZW5kCiAKIC0tIHNvbWUgZGljdGlvbmFyaWVzIGNhbiBoYXZlIGEg TUggKG11c3QgaG9ub3IpIG9yIEJFIChiZXN0IGVmZm9ydCkgY2Fwc3VsZQpAQCAtNzEzLDcg KzcxMSw3IEBACiAgICAgICAgICAtLSAgICAgICAgICBCID0gc3RhcnQsCiAgICAgICAgICAt LSAgICAgfQogICAgICAgICAgLS0gfQotICAgICAgICAgICAgbG9jYWwgcGFyYW1ldGVycyA9 IHBkZmRpY3Rpb25hcnkgeworICAgICAgICAgICAgbG9jYWwgcGVybWlzc2lvbnMgPSBwZGZk aWN0aW9uYXJ5IHsKICAgICAgICAgICAgICAgICBUeXBlID0gcGRmY29uc3RhbnQoIk1lZGlh UGVybWlzc2lvbnMiKSwKICAgICAgICAgICAgICAgICBURiAgID0gcGRmc3RyaW5nKCJURU1Q QUxXQVlTIiksIC0tIFRFTVBORVZFUiBURU1QRVhUUkFDVCBURU1QQUNDRVNTIFRFTVBBTFdB WVMgLyBuZWVkZWQgZm9yIGFjcm9iYXQvd21wCiAgICAgICAgICAgICB9CkBAIC03MzMsNiAr NzMxLDIwIEBACiAgICAgICAgICAgICAgICAgICAgIGZvcmNlcmVmZXJlbmNlID0gb3B0aW9u W3ZfbGlzdF0gfj0gdl9ubywKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmQK KyAgICAgICAgICAgIGxvY2FsIG1lZGlhX3BsYXlfcGFyYW1zID0gcGRmZGljdGlvbmFyeSB7 CisgICAgICAgICAgICAgICAgVHlwZSA9IHBkZmNvbnN0YW50KCJNZWRpYVBsYXlQYXJhbXMi KSwKKyAgICAgICAgICAgICAgICBCRSAgID0gcGRmZGljdGlvbmFyeSB7CisgICAgICAgICAg ICAgICAgICAgIEMgID0gb3B0aW9uW3ZfY29udHJvbHNdIGFuZCBvcHRpb25bdl9jb250cm9s c10gfj0gdl9ubyBvciBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgViAgPSB0b251bWJl cihvcHRpb25bdl92b2x1bWVdKSBvciAxMDAsCisgICAgICAgICAgICAgICAgICAgIFJDID0g dG9udW1iZXIob3B0aW9uW3ZfcmVwZWF0XSkgb3IgMSwKKyAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9jYWwgbWVkaWFfc2NyZWVuX3BhcmFtcyA9 IHBkZmRpY3Rpb25hcnkgeworICAgICAgICAgICAgICAgIFR5cGUgPSBwZGZjb25zdGFudCgi TWVkaWFTY3JlZW5QYXJhbXMiKSwKKyAgICAgICAgICAgICAgICBCRSAgID0gcGRmZGljdGlv bmFyeSB7CisgICAgICAgICAgICAgICAgICAgIE8gPSB0b251bWJlcihvcHRpb25bdl9vcGFj aXR5XSkgb3IgMS4wLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9CiAgICAg ICAgICAgICBsb2NhbCBjbGlwID0gcGRmZGljdGlvbmFyeSB7CiAgICAgICAgICAgICAgICAg VHlwZSA9IHBkZmNvbnN0YW50KCJNZWRpYUNsaXAiKSwKICAgICAgICAgICAgICAgICBTICAg ID0gcGRmY29uc3RhbnQoIk1DRCIpLApAQCAtNzQwLDEzICs3NTIsMTUgQEAKICAgICAgICAg ICAgICAgICBDVCAgID0gbWltZXR5cGUsCiAgICAgICAgICAgICAgICAgQWx0ICA9IHBkZmFy cmF5IHsgIiIsICJmaWxlIG5vdCBmb3VuZCIgfSwgLS0gbGFuZ3VhZ2UgaWQgKyBtZXNzYWdl CiAgICAgICAgICAgICAgICAgRCAgICA9IGRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAg UCAgICA9IHBkZnJlZmVyZW5jZShwZGZmbHVzaG9iamVjdChwYXJhbWV0ZXJzKSksCisgICAg ICAgICAgICAgICAgUCAgICA9IHBkZnJlZmVyZW5jZShwZGZmbHVzaG9iamVjdChwZXJtaXNz aW9ucykpLAogICAgICAgICAgICAgfQogICAgICAgICAgICAgbG9jYWwgcmVuZGl0aW9uID0g cGRmZGljdGlvbmFyeSB7CiAgICAgICAgICAgICAgICAgVHlwZSA9IHBkZmNvbnN0YW50KCJS ZW5kaXRpb24iKSwKICAgICAgICAgICAgICAgICBTICAgID0gcGRmY29uc3RhbnQoIk1SIiks CiAgICAgICAgICAgICAgICAgTiAgICA9IHBkZnVuaWNvZGUobGFiZWwpLAogICAgICAgICAg ICAgICAgIEMgICAgPSBwZGZyZWZlcmVuY2UocGRmZmx1c2hvYmplY3QoY2xpcCkpLAorICAg ICAgICAgICAgICAgIFAgICAgPSBtZWRpYV9wbGF5X3BhcmFtcywKKyAgICAgICAgICAgICAg ICBTUCAgID0gbWVkaWFfc2NyZWVuX3BhcmFtcywKICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIG1mW2xhYmVsXSA9IHBkZnJlZmVyZW5jZShwZGZmbHVzaG9iamVjdChyZW5kaXRpb24p KQogICAgICAgICBlbmQKQEAgLTc4MCwyMSArNzk0LDE3IEBACiBmdW5jdGlvbiBjb2RlaW5q ZWN0aW9ucy5pbnNlcnRyZW5kZXJpbmd3aW5kb3coc3BlY2lmaWNhdGlvbikKICAgICBsb2Nh bCBsYWJlbCA9IHNwZWNpZmljYXRpb24ubGFiZWwKICAgICBjb2RlaW5qZWN0aW9ucy5wcm9j ZXNzcmVuZGVyaW5nKGxhYmVsKQotICAgIG1zW2xhYmVsXSA9IGluc2VydHJlbmRlcmluZ3dp bmRvdyhzcGVjaWZpY2F0aW9uKQorICAgIGluc2VydHJlbmRlcmluZ3dpbmRvdyhzcGVjaWZp Y2F0aW9uKQogZW5kCiAKIGxvY2FsIGZ1bmN0aW9uIHNldChvcGVyYXRpb24sbGFiZWwpCi0g ICAgaWYgbm90IGxhYmVsIG9yIGxhYmVsID09ICIiIHRoZW4KLSAgICAgICAgLS0gVGhpcyBv bmUgaXMgbG9jYWwgdG8gdGhlIHdpbmRvdyBzbyB1bmxpa2VseSB0byBiZSBzZXQuCi0gICAg ICAgIGxhYmVsID0gZ2V0bWFjcm8oImN1cnJlbnRyZW5kZXJpbmciKQotICAgIGVuZAogICAg IGlmIGxhYmVsIGFuZCBsYWJlbCB+PSAiIiB0aGVuCiAgICAgICAgIGNvZGVpbmplY3Rpb25z LnByb2Nlc3NyZW5kZXJpbmcobGFiZWwpCiAgICAgICAgIHJldHVybiBwZGZkaWN0aW9uYXJ5 IHsKICAgICAgICAgICAgIFMgID0gcGRmY29uc3RhbnQoIlJlbmRpdGlvbiIpLAogICAgICAg ICAgICAgT1AgPSBvcGVyYXRpb24sCiAgICAgICAgICAgICBSICA9IG1mW2xhYmVsXSwKLSAg ICAgICAgICAgIEFOID0gbXNbbGFiZWxdIG9yIGRlbGF5ZWQobGFiZWwpLAorICAgICAgICAg ICAgQU4gPSBwZGZyZWZlcmVuY2UoZGVsYXllZChsYWJlbCkpLAogICAgICAgICB9CiAgICAg ZW5kCiBlbmQKCg== --------------isWbZp6vFPufLbFK505kxwds Content-Type: text/plain; charset=UTF-8; name="lpdf-wid.lmt" Content-Disposition: attachment; filename="lpdf-wid.lmt" Content-Transfer-Encoding: base64 aWYgbm90IG1vZHVsZXMgdGhlbiBtb2R1bGVzID0geyB9IGVuZCBtb2R1bGVzIFsnbHBkZi13 aWQnXSA9IHsKICAgIHZlcnNpb24gICA9IDEuMDAxLAogICAgY29tbWVudCAgID0gImNvbXBh bmlvbiB0byBscGRmLWluaS5ta2l2IiwKICAgIGF1dGhvciAgICA9ICJIYW5zIEhhZ2VuLCBQ UkFHTUEtQURFLCBIYXNzZWx0IE5MIiwKICAgIGNvcHlyaWdodCA9ICJQUkFHTUEgQURFIC8g Q29uVGVYdCBEZXZlbG9wbWVudCBUZWFtIiwKICAgIGxpY2Vuc2UgICA9ICJzZWUgY29udGV4 dCByZWxhdGVkIHJlYWRtZSBmaWxlcyIKfQoKLS0gSXQncyBhYm91dCB0aW1lIHRvIGdpdmUg dXAgb24gbWVkaWEgaW4gcGRmIGFuZCBhZG1pdCB0aGF0IHBkZiBsb3N0IGl0IHRvIGh0bWwu Ci0tIEZpcnN0IHdlIGhhZCBtb3ZpZXMgYW5kIHNvdW5kLCBxdWl0ZSBlYXN5IHRvIGRlYWwg d2l0aCwgYnV0IG9ic29sZXRlIG5vdy4gVGhlbiB3ZQotLSBoYWQgcmVuZGl0aW9ucyBidXQg dGhleSB0dXJuZWQgb3V0IHRvIGJlIHVucmVsaWFibGUgZnJvbSB0aGUgc3RhcnQgYW5kIGxv b2sKLS0gb2Jzb2xldGUgdG9vIG9yIGF0IGxlYXN0IHRoZXkgYXJlIGJvdW5kIHRvIHRoZSAo b2Jzb2xldGUpIGZsYXNoIHRlY2hub2xvZ3kgZm9yCi0tIHJlbmRlcmluZy4gVGhleSB3ZXJl IGFscmVhZHkgY29tcGxleCBjb25zdHJ1Y3RzLiBOb3cgd2UgaGF2ZSByaWNoIG1lZGlhIHdo aWNoCi0tIGluc3RlYWQgb2YgcHJvdmlkaW5nIGEgcm9idXN0IGZ1dHVyZSBwcm9vZiBmcmFt ZXdvcmsgZm9yIGdlbmVyYWwgbWVkaWEgdHlwZXMKLS0gYWdhaW4gc2VlbXMgdG8gZGVwZW5k IG9uIHZpZXdlcnMgYnVpbHQgaW4gKHllcywgYWxzbyBraW5kIG9mIG9ic29sZXRlKSBmbGFz aAotLSB0ZWNobm9sb2d5LCBhbmQgd2UgY2Fubm90IGV4cGVjdCB0aGlzIG5vbi1vcGVuIHRl Y2hub2xvZ3kgdG8gc2hvdyB1cCBpbiBvcGVuCi0tIGJyb3dzZXJzLiBTbywgaW4gdGhlIGVu ZCB3ZSBjYW4gYmVzdCBqdXN0IHVzZSBsaW5rcyB0byBleHRlcm5hbCByZXNvdXJjZXMgdG8g YmUKLS0gZnV0dXJlIHByb29mLiBKdXN0IGxvb2sgYXQgdGhlIHZpZXdlciBwcmVmZXJlbmNl cyBwYW5lIHRvIHNlZSBob3cgZnJhZ2lsZSBzdXBwb3J0Ci0tIGlzLiBJbnRlcmVzdGluZ2x5 IHUzZCBzdXBwb3J0IGlzIGtpbmQgb2YgYnVpbHQgaW4sIHdoaWxlIGUuZy4gbXA0IHN1cHBv cnQgcmVsaWVzCi0tIG9uIHdyYXBwaW5nIGluIHN3Zi4gV2UgdXNlZCB0byBzdGF5IGFoZWFk IG9mIHRoZSBwYWNrIHdpdGggc3VwcG9ydCBvZiB0aGUgZmFuY3kKLS0gcGRmIGZlYXR1cmVz IGJ1dCBpdCBiYWNrZmlyZXMgYW5kIGlzIG5vdCB3b3J0aCB0aGUgdHJvdWJsZS4gQW5kIHll cywgZm9yIGNvbnRyb2wKLS0gKGV2ZW4gc2ltcGxlIGxpa2Ugc3RhcnRpbmcgYW5kIHN0b3Bw aW5nIHZpZGVvcykgb25lIGhhcyB0byByZXZlcnQgdG8gSmF2YVNjcmlwdCwKLS0gdGhlIG90 aGVyIGZyYWdpbGUgYml0LiBBbmQsIG5vdyB0aGF0IGFkb2JlIHF1aXRzIGZsYXNoIGluIDIw MjAgd2UncmUgd2l0aG91dCBhbnkKLS0gdmlkZW8gYW55d2F5LiBBbHNvLCBpdCB3b24ndCBw bGF5IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGRldmljZXMgc28gbGV0J3Mgd2FpdCBmb3IKLS0g aHRtbDUgbWVkaWEgaW4gcGRmIHRoZW4uCi0tCi0tIFNlZSBtYWlsIGJ5IE1pY2hhbCBWbGFz w6FrIHRvIHRoZSBtYWlsaW5nIGxpc3QgdGhhdCBkaXNjdXNzZXMgY3VycmVudCBzdXBwb3J0 IGluCi0tIHZpZXdlcnMgYW5kIGFsc28gbWVudGlvbnMgKGFuZCBzdWJtaXR0ZWQpIGEgZmV3 IGZpeGVzIHdydCBlbWJlZGRpbmcgbWVkaWEuIFRoZQotLSBvbGQgc291bmQgYW5kIG1vdmll IGZlYXR1cmVzIGFyZSBnb25lLgoKbG9jYWwgdG9udW1iZXIsIG5leHQgPSB0b251bWJlciwg bmV4dApsb2NhbCBnbWF0Y2gsIGdzdWIsIGZpbmQsIGxvd2VyID0gc3RyaW5nLmdtYXRjaCwg c3RyaW5nLmdzdWIsIHN0cmluZy5maW5kLCBzdHJpbmcubG93ZXIKbG9jYWwgZmlsZW5hbWVv bmx5LCBiYXNlZmlsZW5hbWUsIGZpbGVzdWZmaXgsIGFkZGZpbGVzdWZmaXggPSBmaWxlLm5h bWVvbmx5LCBmaWxlLmJhc2VuYW1lLCBmaWxlLnN1ZmZpeCwgZmlsZS5hZGRzdWZmaXgKbG9j YWwgaXNmaWxlLCBtb2RpZmljYXRpb250aW1lID0gbGZzLmlzZmlsZSwgbGZzLm1vZGlmaWNh dGlvbgpsb2NhbCBzdHJpcHN0cmluZyA9IHN0cmluZy5zdHJpcApsb2NhbCBzZXR0aW5nc190 b19hcnJheSA9IHV0aWxpdGllcy5wYXJzZXJzLnNldHRpbmdzX3RvX2FycmF5CmxvY2FsIHNl dHRpbmdzX3RvX2hhc2ggPSB1dGlsaXRpZXMucGFyc2Vycy5zZXR0aW5nc190b19oYXNoCmxv Y2FsIHNvcnRlZGhhc2gsIHNvcnRlZGtleXMgPSB0YWJsZS5zb3J0ZWRoYXNoLCB0YWJsZS5z b3J0ZWRrZXlzCgpsb2NhbCByZXBvcnRfbWVkaWEgICAgICAgICAgICAgPSBsb2dzLnJlcG9y dGVyKCJiYWNrZW5kIiwibWVkaWEiKQpsb2NhbCByZXBvcnRfYXR0YWNobWVudCAgICAgICAg PSBsb2dzLnJlcG9ydGVyKCJiYWNrZW5kIiwiYXR0YWNobWVudCIpCgpsb2NhbCBjb250ZXh0 ICAgICAgICAgICAgICAgICAgPSBjb250ZXh0Cgpsb2NhbCB0ZXhnZXRjb3VudCAgICAgICAg ICAgICAgPSB0ZXguZ2V0Y291bnQKbG9jYWwgZ2V0bWFjcm8gICAgICAgICAgICAgICAgID0g dG9rZW5zLmdldHRlcnMubWFjcm8KCmxvY2FsIGhwYWNrbm9kZSAgICAgICAgICAgICAgICA9 IG5vZGVzLmhwYWNrCgpsb2NhbCBwZGZiYWNrZW5kICAgICAgICAgICAgICAgPSBiYWNrZW5k cy5yZWdpc3RlcmVkLnBkZgpsb2NhbCBub2RlaW5qZWN0aW9ucyAgICAgICAgICAgPSBwZGZi YWNrZW5kLm5vZGVpbmplY3Rpb25zCmxvY2FsIGNvZGVpbmplY3Rpb25zICAgICAgICAgICA9 IHBkZmJhY2tlbmQuY29kZWluamVjdGlvbnMKbG9jYWwgcmVnaXN0cmF0aW9ucyAgICAgICAg ICAgID0gcGRmYmFja2VuZC5yZWdpc3RyYXRpb25zCgpsb2NhbCBleGVjdXRlcnMgICAgICAg ICAgICAgICAgPSBzdHJ1Y3R1cmVzLnJlZmVyZW5jZXMuZXhlY3V0ZXJzCmxvY2FsIHZhcmlh YmxlcyAgICAgICAgICAgICAgICA9IGludGVyZmFjZXMudmFyaWFibGVzCgpsb2NhbCB2X2hp ZGRlbiAgICAgICAgICAgICAgICAgPSB2YXJpYWJsZXMuaGlkZGVuCmxvY2FsIHZfYXV0byAg ICAgICAgICAgICAgICAgICA9IHZhcmlhYmxlcy5hdXRvCmxvY2FsIHZfZW1iZWQgICAgICAg ICAgICAgICAgICA9IHZhcmlhYmxlcy5lbWJlZApsb2NhbCB2X21heCAgICAgICAgICAgICAg ICAgICAgPSB2YXJpYWJsZXMubWF4CmxvY2FsIHZfeWVzICAgICAgICAgICAgICAgICAgICA9 IHZhcmlhYmxlcy55ZXMKbG9jYWwgdl9ubyAgICAgICAgICAgICAgICAgICAgID0gdmFyaWFi bGVzLm5vCmxvY2FsIHZfY29tcHJlc3MgICAgICAgICAgICAgICA9IHZhcmlhYmxlcy5jb21w cmVzcwpsb2NhbCB2X2xpc3QgICAgICAgICAgICAgICAgICAgPSB2YXJpYWJsZXMubGlzdAps b2NhbCB2X3RpdGxlICAgICAgICAgICAgICAgICAgPSB2YXJpYWJsZXMudGl0bGUKbG9jYWwg dl9jb250cm9scyAgICAgICAgICAgICAgID0gdmFyaWFibGVzLmNvbnRyb2xzCmxvY2FsIHZf dm9sdW1lICAgICAgICAgICAgICAgICA9IHZhcmlhYmxlcy52b2x1bWUKbG9jYWwgdl9yZXBl YXQgICAgICAgICAgICAgICAgID0gdmFyaWFibGVzWyJyZXBlYXQiXQpsb2NhbCB2X29wYWNp dHkgICAgICAgICAgICAgICAgPSB2YXJpYWJsZXMub3BhY2l0eQoKbG9jYWwgbHBkZiAgICAg ICAgICAgICAgICAgICAgID0gbHBkZgoKbG9jYWwgcGRmY29uc3RhbnQgICAgICAgICAgICAg ID0gbHBkZi5jb25zdGFudApsb2NhbCBwZGZudWxsICAgICAgICAgICAgICAgICAgPSBscGRm Lm51bGwKbG9jYWwgcGRmZGljdGlvbmFyeSAgICAgICAgICAgID0gbHBkZi5kaWN0aW9uYXJ5 CmxvY2FsIHBkZmFycmF5ICAgICAgICAgICAgICAgICA9IGxwZGYuYXJyYXkKbG9jYWwgcGRm cmVmZXJlbmNlICAgICAgICAgICAgID0gbHBkZi5yZWZlcmVuY2UKbG9jYWwgcGRmdW5pY29k ZSAgICAgICAgICAgICAgID0gbHBkZi51bmljb2RlCmxvY2FsIHBkZnN0cmluZyAgICAgICAg ICAgICAgICA9IGxwZGYuc3RyaW5nCmxvY2FsIHBkZmJvb2xlYW4gICAgICAgICAgICAgICA9 IGxwZGYuYm9vbGVhbgpsb2NhbCBwZGZhY3Rpb24gICAgICAgICAgICAgICAgPSBscGRmLmFj dGlvbgpsb2NhbCBwZGZib3JkZXIgICAgICAgICAgICAgICAgPSBscGRmLmJvcmRlcgoKbG9j YWwgcGRmdHJhbnNwYXJlbmN5dmFsdWUgICAgID0gbHBkZi50cmFuc3BhcmVuY3l2YWx1ZQps b2NhbCBwZGZjb2xvcnZhbHVlcyAgICAgICAgICAgPSBscGRmLmNvbG9ydmFsdWVzCgpsb2Nh bCBwZGZmbHVzaG9iamVjdCAgICAgICAgICAgPSBscGRmLmZsdXNob2JqZWN0CmxvY2FsIHBk ZmZsdXNoc3RyZWFtb2JqZWN0ICAgICA9IGxwZGYuZmx1c2hzdHJlYW1vYmplY3QKbG9jYWwg cGRmZmx1c2hzdHJlYW1maWxlb2JqZWN0ID0gbHBkZi5mbHVzaHN0cmVhbWZpbGVvYmplY3QK bG9jYWwgcGRmcmVzZXJ2ZW9iamVjdCAgICAgICAgID0gbHBkZi5yZXNlcnZlb2JqZWN0Cmxv Y2FsIHBkZnBhZ2VyZWZlcmVuY2UgICAgICAgICA9IGxwZGYucGFnZXJlZmVyZW5jZQpsb2Nh bCBwZGZzaGFyZW9iamVjdHJlZmVyZW5jZSAgPSBscGRmLnNoYXJlb2JqZWN0cmVmZXJlbmNl CgotLSBzeW1ib2xzCgpsb2NhbCBwcmVzZXRzID0geyB9IC0tIHhmb3JtcwoKbG9jYWwgZnVu Y3Rpb24gcmVnaXN0ZXJzeW1ib2wobmFtZSxuKQogICAgcHJlc2V0c1tuYW1lXSA9IHBkZnJl ZmVyZW5jZShuKQplbmQKCmxvY2FsIGZ1bmN0aW9uIHJlZ2lzdGVyZWRzeW1ib2wobmFtZSkK ICAgIHJldHVybiBwcmVzZXRzW25hbWVdCmVuZAoKbG9jYWwgZnVuY3Rpb24gcHJlc2V0c3lt Ym9sKHN5bWJvbCkKICAgIGlmIG5vdCBwcmVzZXRzW3N5bWJvbF0gdGhlbgogICAgICAgIGNv bnRleHQucHJlZGVmaW5lc3ltYm9sIHsgc3ltYm9sIH0KICAgIGVuZAplbmQKCmxvY2FsIGZ1 bmN0aW9uIHByZXNldHN5bWJvbGxpc3QobGlzdCkKICAgIGlmIGxpc3QgdGhlbgogICAgICAg IGZvciBzeW1ib2wgaW4gZ21hdGNoKGxpc3QsIlteLCBdKyIpIGRvCiAgICAgICAgICAgIHBy ZXNldHN5bWJvbChzeW1ib2wpCiAgICAgICAgZW5kCiAgICBlbmQKZW5kCgpjb2RlaW5qZWN0 aW9ucy5yZWdpc3RlcnN5bWJvbCAgID0gcmVnaXN0ZXJzeW1ib2wKY29kZWluamVjdGlvbnMu cmVnaXN0ZXJlZHN5bWJvbCA9IHJlZ2lzdGVyZWRzeW1ib2wKY29kZWluamVjdGlvbnMucHJl c2V0c3ltYm9sICAgICA9IHByZXNldHN5bWJvbApjb2RlaW5qZWN0aW9ucy5wcmVzZXRzeW1i b2xsaXN0ID0gcHJlc2V0c3ltYm9sbGlzdAoKLS0gY29tbWVudHMKCi0tIGxvY2FsIHN5bWJv bHMgPSB7Ci0tICAgICBBZGRpdGlvbiAgICAgPSBwZGZjb25zdGFudCgiTmV3UGFyYWdyYXBo IiksCi0tICAgICBBdHRhY2htZW50ICAgPSBwZGZjb25zdGFudCgiQXR0YWNobWVudCIpLAot LSAgICAgQmFsbG9vbiAgICAgID0gcGRmY29uc3RhbnQoIkNvbW1lbnQiKSwKLS0gICAgIENo ZWNrICAgICAgICA9IHBkZmNvbnN0YW50KCJDaGVjayBNYXJrIiksCi0tICAgICBDaGVja01h cmsgICAgPSBwZGZjb25zdGFudCgiQ2hlY2sgTWFyayIpLAotLSAgICAgQ2lyY2xlICAgICAg ID0gcGRmY29uc3RhbnQoIkNpcmNsZSIpLAotLSAgICAgQ3Jvc3MgICAgICAgID0gcGRmY29u c3RhbnQoIkNyb3NzIiksCi0tICAgICBDcm9zc0hhaXJzICAgPSBwZGZjb25zdGFudCgiQ3Jv c3MgSGFpcnMiKSwKLS0gICAgIEdyYXBoICAgICAgICA9IHBkZmNvbnN0YW50KCJHcmFwaCIp LAotLSAgICAgSW5zZXJ0VGV4dCAgID0gcGRmY29uc3RhbnQoIkluc2VydCBUZXh0IiksCi0t ICAgICBOZXcgICAgICAgICAgPSBwZGZjb25zdGFudCgiSW5zZXJ0IiksCi0tICAgICBQYXBl cmNsaXAgICAgPSBwZGZjb25zdGFudCgiUGFwZXJjbGlwIiksCi0tICAgICBSaWdodEFycm93 ICAgPSBwZGZjb25zdGFudCgiUmlnaHQgQXJyb3ciKSwKLS0gICAgIFJpZ2h0UG9pbnRlciA9 IHBkZmNvbnN0YW50KCJSaWdodCBQb2ludGVyIiksCi0tICAgICBTdGFyICAgICAgICAgPSBw ZGZjb25zdGFudCgiU3RhciIpLAotLSAgICAgVGFnICAgICAgICAgID0gcGRmY29uc3RhbnQo IlRhZyIpLAotLSAgICAgVGV4dCAgICAgICAgID0gcGRmY29uc3RhbnQoIk5vdGUiKSwKLS0g ICAgIFRleHROb3RlICAgICA9IHBkZmNvbnN0YW50KCJUZXh0IE5vdGUiKSwKLS0gICAgIFVw QXJyb3cgICAgICA9IHBkZmNvbnN0YW50KCJVcCBBcnJvdyIpLAotLSAgICAgVXBMZWZ0QXJy b3cgID0gcGRmY29uc3RhbnQoIlVwLUxlZnQgQXJyb3ciKSwKLS0gfQoKbG9jYWwgYXR0YWNo bWVudF9zeW1ib2xzID0gewogICAgR3JhcGggICAgID0gcGRmY29uc3RhbnQoIkdyYXBoIiks CiAgICBQYXBlcmNsaXAgPSBwZGZjb25zdGFudCgiUGFwZXJjbGlwIiksCiAgICBQdXNocGlu ICAgPSBwZGZjb25zdGFudCgiUHVzaFBpbiIpLAp9CgphdHRhY2htZW50X3N5bWJvbHMuUHVz aFBpbiA9IGF0dGFjaG1lbnRfc3ltYm9scy5QdXNocGluCmF0dGFjaG1lbnRfc3ltYm9scy5E ZWZhdWx0ID0gYXR0YWNobWVudF9zeW1ib2xzLlB1c2hwaW4KCmZ1bmN0aW9uIGxwZGYuYXR0 YWNobWVudHN5bWJvbHMoKQogICAgcmV0dXJuIHNvcnRlZGtleXMoY29tbWVudF9zeW1ib2xz KQplbmQKCmxvY2FsIGNvbW1lbnRfc3ltYm9scyA9IHsKICAgIENvbW1lbnQgICAgICA9IHBk ZmNvbnN0YW50KCJDb21tZW50IiksCiAgICBIZWxwICAgICAgICAgPSBwZGZjb25zdGFudCgi SGVscCIpLAogICAgSW5zZXJ0ICAgICAgID0gcGRmY29uc3RhbnQoIkluc2VydCIpLAogICAg S2V5ICAgICAgICAgID0gcGRmY29uc3RhbnQoIktleSIpLAogICAgTmV3cGFyYWdyYXBoID0g cGRmY29uc3RhbnQoIk5ld1BhcmFncmFwaCIpLAogICAgTm90ZSAgICAgICAgID0gcGRmY29u c3RhbnQoIk5vdGUiKSwKICAgIFBhcmFncmFwaCAgICA9IHBkZmNvbnN0YW50KCJQYXJhZ3Jh cGgiKSwKfQoKY29tbWVudF9zeW1ib2xzLk5ld1BhcmFncmFwaCA9IE5ld3BhcmFncmFwaApj b21tZW50X3N5bWJvbHMuRGVmYXVsdCAgICAgID0gTm90ZQoKZnVuY3Rpb24gbHBkZi5jb21t ZW50c3ltYm9scygpCiAgICByZXR1cm4gc29ydGVka2V5cyhjb21tZW50X3N5bWJvbHMpCmVu ZAoKbG9jYWwgZnVuY3Rpb24gYW5hbHl6ZXN5bWJvbChzeW1ib2wsY29sbGVjdGlvbikKICAg IGlmIG5vdCBzeW1ib2wgb3Igc3ltYm9sID09ICIiIHRoZW4KICAgICAgICByZXR1cm4gY29s bGVjdGlvbiBhbmQgY29sbGVjdGlvbi5EZWZhdWx0LCBuaWwKICAgIGVsc2VpZiBjb2xsZWN0 aW9uIGFuZCBjb2xsZWN0aW9uW3N5bWJvbF0gdGhlbgogICAgICAgIHJldHVybiBjb2xsZWN0 aW9uW3N5bWJvbF0sIG5pbAogICAgZWxzZQogICAgICAgIGxvY2FsIHNldG4sIHNldHIsIHNl dGQKICAgICAgICBsb2NhbCBzZXQgPSBzZXR0aW5nc190b19hcnJheShzeW1ib2wpCiAgICAg ICAgaWYgI3NldCA9PSAxIHRoZW4KICAgICAgICAgICAgc2V0biwgc2V0ciwgc2V0ZCA9IHNl dFsxXSwgc2V0WzFdLCBzZXRbMV0KICAgICAgICBlbHNlaWYgI3NldCA9PSAyIHRoZW4KICAg ICAgICAgICAgc2V0biwgc2V0ciwgc2V0ZCA9IHNldFsxXSwgc2V0WzFdLCBzZXRbMl0KICAg ICAgICBlbHNlCiAgICAgICAgICAgIHNldG4sIHNldHIsIHNldGQgPSBzZXRbMV0sIHNldFsy XSwgc2V0WzNdCiAgICAgICAgZW5kCiAgICAgICAgbG9jYWwgYXBwZWFyYW5jZSA9IHBkZmRp Y3Rpb25hcnkgewogICAgICAgICAgICBOID0gc2V0biBhbmQgcmVnaXN0ZXJlZHN5bWJvbChz ZXRuKSwKICAgICAgICAgICAgUiA9IHNldHIgYW5kIHJlZ2lzdGVyZWRzeW1ib2woc2V0ciks CiAgICAgICAgICAgIEQgPSBzZXRkIGFuZCByZWdpc3RlcmVkc3ltYm9sKHNldGQpLAogICAg ICAgIH0KICAgICAgICBsb2NhbCBhcHBlYXJhbmNlcmVmID0gcGRmc2hhcmVvYmplY3RyZWZl cmVuY2UoYXBwZWFyYW5jZSkKICAgICAgICByZXR1cm4gbmlsLCBhcHBlYXJhbmNlcmVmCiAg ICBlbmQKZW5kCgpsb2NhbCBmdW5jdGlvbiBhbmFseXplbm9ybWFsc3ltYm9sKHN5bWJvbCkK ICAgIGxvY2FsIGFwcGVhcmFuY2UgPSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICBOID0gcmVn aXN0ZXJlZHN5bWJvbChzeW1ib2wpLAogICAgfQogICAgbG9jYWwgYXBwZWFyYW5jZXJlZiA9 IHBkZnNoYXJlb2JqZWN0cmVmZXJlbmNlKGFwcGVhcmFuY2UpCiAgICByZXR1cm4gYXBwZWFy YW5jZXJlZgplbmQKCmNvZGVpbmplY3Rpb25zLmFuYWx5emVzeW1ib2wgICAgICAgPSBhbmFs eXplc3ltYm9sCmNvZGVpbmplY3Rpb25zLmFuYWx5emVub3JtYWxzeW1ib2wgPSBhbmFseXpl bm9ybWFsc3ltYm9sCgpsb2NhbCBmdW5jdGlvbiBhbmFseXplbGF5ZXIobGF5ZXIpCiAgICAt LSB0b2RvOiAgKHNwZWNpZmljYXRpb24ubGF5ZXIgfj0gIiIgYW5kIHBkZnJlZmVyZW5jZShz cGVjaWZpY2F0aW9uLmxheWVyKSkgb3IgbmlsLCAtLSB0b2RvOiByZWYgdG8gbGF5ZXIKZW5k Cgpsb2NhbCBmdW5jdGlvbiBhbmFseXplY29sb3IoY29sb3J2YWx1ZSxjb2xvcm1vZGVsKQog ICAgbG9jYWwgY3ZhbHVlID0gY29sb3J2YWx1ZSBhbmQgdG9udW1iZXIoY29sb3J2YWx1ZSkK ICAgIGxvY2FsIGNtb2RlbCA9IGNvbG9ybW9kZWwgYW5kIHRvbnVtYmVyKGNvbG9ybW9kZWwp IG9yIDMKICAgIHJldHVybiBjdmFsdWUgYW5kIHBkZmFycmF5IHsgcGRmY29sb3J2YWx1ZXMo Y21vZGVsLGN2YWx1ZSkgfSBvciBuaWwKZW5kCgpsb2NhbCBmdW5jdGlvbiBhbmFseXpldHJh bnNwYXJlbmN5KHRyYW5zcGFyZW5jeXZhbHVlKQogICAgbG9jYWwgdHZhbHVlID0gdHJhbnNw YXJlbmN5dmFsdWUgYW5kIHRvbnVtYmVyKHRyYW5zcGFyZW5jeXZhbHVlKQogICAgcmV0dXJu IHR2YWx1ZSBhbmQgcGRmdHJhbnNwYXJlbmN5dmFsdWUodHZhbHVlKSBvciBuaWwKZW5kCgot LSBBdHRhY2htZW50cwoKbG9jYWwgbm9mYXR0YWNobWVudHMgICAgPSAwCmxvY2FsIGF0dGFj aG1lbnRzICAgICAgID0geyB9CmxvY2FsIGZpbGVzdHJlYW1zICAgICAgID0geyB9CmxvY2Fs IHJlZmVyZW5jZWQgICAgICAgID0geyB9CmxvY2FsIGlnbm9yZXJlZmVyZW5jZWQgID0gdHJ1 ZSAtLSBmdXp6eSBwZGYgc3BlYyAuLiB0d2ljZSBpbiBhdHRhY2htZW50IGxpc3QsIGNhbiBi ZWNvbWUgYW4gb3B0aW9uCmxvY2FsIHRvYmVzYXZlZG9ianJlZnMgID0gdXRpbGl0aWVzLnN0 b3JhZ2UuYWxsb2NhdGUoKQpsb2NhbCBjb2xsZWN0ZWRvYmpyZWZzICA9IHV0aWxpdGllcy5z dG9yYWdlLmFsbG9jYXRlKCkKbG9jYWwgcGVybWl0dGVkICAgICAgICAgPSB0cnVlCmxvY2Fs IGVuYWJsZWQgICAgICAgICAgID0gdHJ1ZQoKZnVuY3Rpb24gY29kZWluamVjdGlvbnMuc2V0 YXR0YWNobWVudHN1cHBvcnQob3B0aW9uKQogICAgaWYgb3B0aW9uID09IGZhbHNlIHRoZW4K ICAgICAgICBwZXJtaXR0ZWQgPSBmYWxzZQogICAgICAgIGVuYWJsZWQgICA9IGZhbHNlCiAg ICBlbmQKZW5kCgpsb2NhbCBmaWxlb2JqcmVmZXJlbmNlcyA9IHsKICAgIGNvbGxlY3RlZCA9 IGNvbGxlY3RlZG9ianJlZnMsCiAgICB0b2Jlc2F2ZWQgPSB0b2Jlc2F2ZWRvYmpyZWZzLAp9 Cgpqb2IuZmlsZW9ianJlZmVyZW5jZXMgPSBmaWxlb2JqcmVmZXJlbmNlcwoKbG9jYWwgZnVu Y3Rpb24gaW5pdGlhbGl6ZXIoKQogICAgY29sbGVjdGVkb2JqcmVmcyA9IGpvYi5maWxlb2Jq cmVmZXJlbmNlcy5jb2xsZWN0ZWQgb3IgeyB9CiAgICB0b2Jlc2F2ZWRvYmpyZWZzID0gam9i LmZpbGVvYmpyZWZlcmVuY2VzLnRvYmVzYXZlZCBvciB7IH0KZW5kCgpqb2IucmVnaXN0ZXIo J2pvYi5maWxlb2JqcmVmZXJlbmNlcy5jb2xsZWN0ZWQnLCB0b2Jlc2F2ZWRvYmpyZWZzLCBp bml0aWFsaXplcikKCmxvY2FsIGZ1bmN0aW9uIGZsdXNoZW1iZWRkZWRmaWxlcygpCiAgICBp ZiBlbmFibGVkIGFuZCBuZXh0KGZpbGVzdHJlYW1zKSB0aGVuCiAgICAgICAgbG9jYWwgZSA9 IHBkZmFycmF5KCkKICAgICAgICBsb2NhbCBmID0gcGRmYXJyYXkoKQogICAgICAgIGZvciB0 YWcsIHJlZmVyZW5jZSBpbiBzb3J0ZWRoYXNoKGZpbGVzdHJlYW1zKSBkbwogICAgICAgICAg ICBpZiBub3QgcmVmZXJlbmNlIHRoZW4KICAgICAgICAgICAgICAgIHJlcG9ydF9hdHRhY2ht ZW50KCJ1bnJlZmVyZW5jZWQgZmlsZSwgdGFnICVhIix0YWcpCiAgICAgICAgICAgIGVsc2Vp ZiByZWZlcmVuY2VkW3RhZ10gPT0gImhpZGRlbiIgb3IgcmVmZXJlbmNlZFt0YWddID09ICJm b3JjZWQiIHRoZW4KICAgICAgICAgICAgICAgIGVbI2UrMV0gPSBwZGZzdHJpbmcodGFnKQog ICAgICAgICAgICAgICAgZVsjZSsxXSA9IHJlZmVyZW5jZSAtLSBhbHJlYWR5IGEgcmVmZXJl bmNlCiAgICAgICAgICAgICAgICBmWyNmKzFdID0gcmVmZXJlbmNlIC0tIGNvbGxlY3QgYWxs IGZpbGUgZGVzY3JpcHRpb24gcmVmZXJlbmNlcwogICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICAtLSBtZXNzeSBzcGVjIC4uLiB3aGVuIGFubm90IG5vdCBpbiBuYW1lZCBlbHNl IHR3aWNlIGluIG1lbnUgbGlzdCBhY3JvYmF0CiAgICAgICAgICAgICAgICBmWyNmKzFdID0g cmVmZXJlbmNlCiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICAgIGlmICNlID4g MCB0aGVuCiAgICAgICAgICAgIGxwZGYuYWRkdG9uYW1lcygiRW1iZWRkZWRGaWxlcyIscGRm cmVmZXJlbmNlKHBkZmZsdXNob2JqZWN0KHBkZmRpY3Rpb25hcnl7IE5hbWVzID0gZSB9KSkp CiAgICAgICAgZW5kCiAgICAgICAgaWYgI2YgPiAwIHRoZW4gLS0gUERGL0EtMnwzOiBhbGwg YXNzb2NpYXRlZCBmaWxlcyBtdXN0IGhhdmUgYSByZWxhdGlvbnNoaXAgdG8gdGhlIFBERiBk b2N1bWVudCAoZ2xvYmFsIG9yIHBhcnQpCiAgICAgICAgICAgIGxwZGYuYWRkdG9jYXRhbG9n KCJBRiIsIHBkZnJlZmVyZW5jZShwZGZmbHVzaG9iamVjdChmKSkpIC0tIGdsb2JhbCAoQ2F0 YWxvZykKICAgICAgICBlbmQKICAgIGVuZAplbmQKCmxwZGYucmVnaXN0ZXJkb2N1bWVudGZp bmFsaXplcihmbHVzaGVtYmVkZGVkZmlsZXMsImVtYmVkZGVkZmlsZXMiKQoKZnVuY3Rpb24g Y29kZWluamVjdGlvbnMuZW1iZWRmaWxlKHNwZWNpZmljYXRpb24pCiAgICBpZiBlbmFibGVk IHRoZW4KICAgICAgICBsb2NhbCBkYXRhICAgICAgPSBzcGVjaWZpY2F0aW9uLmRhdGEKICAg ICAgICBsb2NhbCBmaWxlbmFtZSAgPSBzcGVjaWZpY2F0aW9uLmZpbGUKICAgICAgICBsb2Nh bCBuYW1lICAgICAgPSBzcGVjaWZpY2F0aW9uLm5hbWUgb3IgIiIKICAgICAgICBsb2NhbCB0 aXRsZSAgICAgPSBzcGVjaWZpY2F0aW9uLnRpdGxlIG9yICIiCiAgICAgICAgbG9jYWwgaGFz aCAgICAgID0gc3BlY2lmaWNhdGlvbi5oYXNoIG9yIGZpbGVuYW1lCiAgICAgICAgbG9jYWwg a2VlcGRpciAgID0gc3BlY2lmaWNhdGlvbi5rZWVwZGlyIC0tIGNhbiBjaGFuZ2UKICAgICAg ICBsb2NhbCB1c2VkbmFtZSAgPSBzcGVjaWZpY2F0aW9uLnVzZWRuYW1lCiAgICAgICAgbG9j YWwgZmlsZXR5cGUgID0gc3BlY2lmaWNhdGlvbi5maWxldHlwZQogICAgICAgIGxvY2FsIGNv bXByZXNzICA9IHNwZWNpZmljYXRpb24uY29tcHJlc3MKICAgICAgICBsb2NhbCBtaW1ldHlw ZSAgPSBzcGVjaWZpY2F0aW9uLm1pbWV0eXBlIG9yIHNwZWNpZmljYXRpb24ubWltZQogICAg ICAgIGlmIGZpbGVuYW1lID09ICIiIHRoZW4KICAgICAgICAgICAgZmlsZW5hbWUgPSBuaWwK ICAgICAgICBlbmQKICAgICAgICBpZiBjb21wcmVzcyA9PSBuaWwgdGhlbgogICAgICAgICAg ICBjb21wcmVzcyA9IHRydWUKICAgICAgICBlbmQKICAgICAgICBpZiBkYXRhIHRoZW4KICAg ICAgICAgICAgbG9jYWwgciA9IGZpbGVzdHJlYW1zW2hhc2hdCiAgICAgICAgICAgIGlmIHIg PT0gZmFsc2UgdGhlbgogICAgICAgICAgICAgICAgcmV0dXJuIG5pbAogICAgICAgICAgICBl bHNlaWYgciB0aGVuCiAgICAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICAgICBlbHNl aWYgbm90IGZpbGVuYW1lIHRoZW4KICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3BlY2lm aWNhdGlvbi50YWcKICAgICAgICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBmaWxlbmFt ZSA9PSAiIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzcGVjaWZpY2F0 aW9uLnJlZ2lzdGVyZWQKICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgaWYg bm90IGZpbGVuYW1lIG9yIGZpbGVuYW1lID09ICIiIHRoZW4KICAgICAgICAgICAgICAgICAg ICBmaWxlbmFtZSA9IGhhc2gKICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQK ICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZSB0aGVuCiAgICAgICAg ICAgICAgICByZXR1cm4gbmlsCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICBsb2NhbCBy ID0gZmlsZXN0cmVhbXNbaGFzaF0KICAgICAgICAgICAgaWYgciA9PSBmYWxzZSB0aGVuCiAg ICAgICAgICAgICAgICByZXR1cm4gbmlsCiAgICAgICAgICAgIGVsc2VpZiByIHRoZW4KICAg ICAgICAgICAgICAgIHJldHVybiByCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg IGxvY2FsIGZvdW5kbmFtZSA9IHJlc29sdmVycy5maW5kYmluZmlsZShmaWxlbmFtZSkgb3Ig IiIKICAgICAgICAgICAgICAgIGlmIGZvdW5kbmFtZSA9PSAiIiBvciBub3QgaXNmaWxlKGZv dW5kbmFtZSkgdGhlbgogICAgICAgICAgICAgICAgICAgIGZpbGVzdHJlYW1zW2ZpbGVuYW1l XSA9IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbAogICAgICAgICAgICAg ICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24uZm91bmRuYW1lID0g Zm91bmRuYW1lCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgZW5kCiAgICAgICAg ZW5kCiAgICAgICAgLS0gbmVlZHMgdG8gYmUgY2xlYW5lZCB1cDoKICAgICAgICB1c2VkbmFt ZSA9IHVzZWRuYW1lIH49ICIiIGFuZCB1c2VkbmFtZSBvciBmaWxlbmFtZSBvciBuYW1lCiAg ICAgICAgbG9jYWwgYmFzZW5hbWUgID0ga2VlcGRpciA9PSB0cnVlIGFuZCB1c2VkbmFtZSBv ciBiYXNlZmlsZW5hbWUodXNlZG5hbWUpCiAgICAgICAgbG9jYWwgYmFzZW5hbWUgID0gZ3N1 YihiYXNlbmFtZSwiJS4vIiwiIikKICAgICAgICBsb2NhbCBzYXZlbmFtZSAgPSBuYW1lIH49 ICIiIGFuZCBuYW1lIG9yIGJhc2VuYW1lCiAgICAgICAgbG9jYWwgZm91bmRuYW1lID0gc3Bl Y2lmaWNhdGlvbi5mb3VuZG5hbWUgb3IgZmlsZW5hbWUKICAgICAgICBpZiBub3QgZmlsZXR5 cGUgb3IgZmlsZXR5cGUgPT0gIiIgdGhlbgogICAgICAgICAgICBmaWxldHlwZSA9IG5hbWUg YW5kIChmaWxlbmFtZSBhbmQgZmlsZXN1ZmZpeChmaWxlbmFtZSkpIG9yICJ0eHQiCiAgICAg ICAgZW5kCiAgICAgICAgc2F2ZW5hbWUgPSBhZGRmaWxlc3VmZml4KHNhdmVuYW1lLGZpbGV0 eXBlKSAtLSB0eXBlIGlzIG1hbmRhdGUgZm9yIHByb3BlciB3b3JraW5nIGluIHZpZXdlcgog ICAgICAgIGxvY2FsIGEgPSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICAgICAgVHlwZSAgICA9 IHBkZmNvbnN0YW50KCJFbWJlZGRlZEZpbGUiKSwKICAgICAgICAgICAgU3VidHlwZSA9IG1p bWV0eXBlIGFuZCBtaW1ldHlwZSB+PSAiIiBhbmQgcGRmY29uc3RhbnQobWltZXR5cGUpIG9y IG5pbCwKICAgICAgICB9CiAgICAgICAgbG9jYWwgZgogICAgICAgIGlmIGRhdGEgdGhlbgog ICAgICAgICAgICBmID0gcGRmZmx1c2hzdHJlYW1vYmplY3QoZGF0YSxhKQogICAgICAgICAg ICBzcGVjaWZpY2F0aW9uLmRhdGEgPSB0cnVlIC0tIHNpZ25hbCB0aGF0IHN0aWxsIGRhdGEg YnV0IGFscmVhZHkgZmx1c2hlZAogICAgICAgIGVsc2UKICAgICAgICAgICAgbG9jYWwgYXR0 cmlidXRlcyAgID0gbGZzLmF0dHJpYnV0ZXMoZm91bmRuYW1lKQogICAgICAgICAgICBsb2Nh bCBtb2RpZmljYXRpb24gPSBtb2RpZmljYXRpb250aW1lKGZvdW5kbmFtZSkKICAgICAgICAg ICAgYS5QYXJhbXMgPSB7CiAgICAgICAgICAgICAgICBTaXplICAgID0gYXR0cmlidXRlcy5z aXplLAogICAgICAgICAgICAgICAgTW9kRGF0ZSA9IGxwZGYucGRmdGltZXN0YW1wKG1vZGlm aWNhdGlvbiksCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZiA9IHBkZmZsdXNoc3RyZWFt ZmlsZW9iamVjdChmb3VuZG5hbWUsYSxjb21wcmVzcykKICAgICAgICBlbmQKICAgICAgICBs b2NhbCBkID0gcGRmZGljdGlvbmFyeSB7CiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0g cGRmY29uc3RhbnQoIkZpbGVzcGVjIiksCiAgICAgICAgICAgIEYgICAgICAgICAgICAgID0g cGRmc3RyaW5nKHNhdmVuYW1lKSwKICAgICAgICAgLS0gVUYgICAgICAgICAgICAgPSBwZGZz dHJpbmcoc2F2ZW5hbWUpLAogICAgICAgICAgICBVRiAgICAgICAgICAgICA9IHBkZnVuaWNv ZGUoc2F2ZW5hbWUpLAogICAgICAgICAgICBFRiAgICAgICAgICAgICA9IHBkZmRpY3Rpb25h cnkgeyBGID0gcGRmcmVmZXJlbmNlKGYpIH0sCiAgICAgICAgICAgIERlc2MgICAgICAgICAg ID0gdGl0bGUgfj0gIiIgYW5kIHBkZnVuaWNvZGUodGl0bGUpIG9yIG5pbCwKICAgICAgICAg ICAgQUZSZWxhdGlvbnNoaXAgPSBwZGZjb25zdGFudCgiVW5zcGVjaWZpZWQiKSwgLS0gU3Vw cGxlbWVudCwgRGF0YSwgU291cmNlLCBBbHRlcm5hdGl2ZSwgRGF0YQogICAgICAgIH0KICAg ICAgICBsb2NhbCByID0gcGRmcmVmZXJlbmNlKHBkZmZsdXNob2JqZWN0KGQpKQogICAgICAg IGZpbGVzdHJlYW1zW2hhc2hdID0gcgogICAgICAgIGlmIHNwZWNpZmljYXRpb24uZm9yY2Vy ZWZlcmVuY2UgPT0gdHJ1ZSB0aGVuCiAgICAgICAgICAgIHJlZmVyZW5jZWRbaGFzaF0gPSAi Zm9yY2VkIgogICAgICAgIGVuZAogICAgICAgIHJldHVybiByCiAgICBlbmQKZW5kCgpmdW5j dGlvbiBub2RlaW5qZWN0aW9ucy5hdHRhY2hmaWxlKHNwZWNpZmljYXRpb24pCiAgICBpZiBl bmFibGVkIHRoZW4KICAgICAgICBsb2NhbCByZWdpc3RlcmVkID0gc3BlY2lmaWNhdGlvbi5y ZWdpc3RlcmVkIG9yICI8dW5zZXQ+IgogICAgICAgIGxvY2FsIGRhdGEgPSBzcGVjaWZpY2F0 aW9uLmRhdGEKICAgICAgICBsb2NhbCBoYXNoCiAgICAgICAgbG9jYWwgZmlsZW5hbWUKICAg ICAgICBpZiBkYXRhIHRoZW4KICAgICAgICAgICAgaGFzaCA9IG1kNS5IRVgoZGF0YSkKICAg ICAgICBlbHNlCiAgICAgICAgICAgIGZpbGVuYW1lID0gc3BlY2lmaWNhdGlvbi5maWxlCiAg ICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBmaWxlbmFtZSA9PSAiIiB0aGVuCiAgICAg ICAgICAgICAgICByZXBvcnRfYXR0YWNobWVudCgibm8gZmlsZSBzcGVjaWZpZWQsIHVzaW5n IHJlZ2lzdGVyZWQgJWEgaW5zdGVhZCIscmVnaXN0ZXJlZCkKICAgICAgICAgICAgICAgIGZp bGVuYW1lID0gcmVnaXN0ZXJlZAogICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbi5maWxl ID0gcmVnaXN0ZXJlZAogICAgICAgICAgICBlbmQKICAgICAgICAgICAgbG9jYWwgZm91bmRu YW1lID0gcmVzb2x2ZXJzLmZpbmRiaW5maWxlKGZpbGVuYW1lKSBvciAiIgogICAgICAgICAg ICBpZiBmb3VuZG5hbWUgPT0gIiIgb3Igbm90IGlzZmlsZShmb3VuZG5hbWUpIHRoZW4KICAg ICAgICAgICAgICAgIHJlcG9ydF9hdHRhY2htZW50KCJpbnZhbGlkIGZpbGVuYW1lICVhLCBp Z25vcmluZyByZWdpc3RlcmVkICVhIixmaWxlbmFtZSxyZWdpc3RlcmVkKQogICAgICAgICAg ICAgICAgcmV0dXJuIG5pbAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBzcGVj aWZpY2F0aW9uLmZvdW5kbmFtZSA9IGZvdW5kbmFtZQogICAgICAgICAgICBlbmQKICAgICAg ICAgICAgaGFzaCA9IGZpbGVuYW1lCiAgICAgICAgZW5kCiAgICAgICAgc3BlY2lmaWNhdGlv bi5oYXNoID0gaGFzaAogICAgICAgIG5vZmF0dGFjaG1lbnRzID0gbm9mYXR0YWNobWVudHMg KyAxCiAgICAgICAgbG9jYWwgcmVnaXN0ZXJlZCA9IHNwZWNpZmljYXRpb24ucmVnaXN0ZXJl ZCBvciAiIgogICAgICAgIGxvY2FsIHRpdGxlICAgICAgPSBzcGVjaWZpY2F0aW9uLnRpdGxl ICAgICAgb3IgIiIKICAgICAgICBsb2NhbCBzdWJ0aXRsZSAgID0gc3BlY2lmaWNhdGlvbi5z dWJ0aXRsZSAgIG9yICIiCiAgICAgICAgbG9jYWwgYXV0aG9yICAgICA9IHNwZWNpZmljYXRp b24uYXV0aG9yICAgICBvciAiIgogICAgICAgIGxvY2FsIG9ubHluYW1lICAgPSBmaWxlbmFt ZSBhbmQgZmlsZW5hbWVvbmx5KGZpbGVuYW1lKSBvciAiIgogICAgICAgIGlmIHJlZ2lzdGVy ZWQgPT0gIiIgdGhlbgogICAgICAgICAgICByZWdpc3RlcmVkID0gZmlsZW5hbWUKICAgICAg ICBlbmQKICAgICAgICBpZiBhdXRob3IgPT0gIiIgYW5kIHRpdGxlIH49ICIiIHRoZW4KICAg ICAgICAgICAgYXV0aG9yID0gdGl0bGUKICAgICAgICAgICAgdGl0bGUgID0gb25seW5hbWUg b3IgIiIKICAgICAgICBlbmQKICAgICAgICBpZiBhdXRob3IgPT0gIiIgdGhlbgogICAgICAg ICAgICBhdXRob3IgPSBvbmx5bmFtZSBvciAiPHVua25vd24+IgogICAgICAgIGVuZAogICAg ICAgIGlmIHRpdGxlID09ICIiIHRoZW4KICAgICAgICAgICAgdGl0bGUgPSByZWdpc3RlcmVk CiAgICAgICAgZW5kCiAgICAgICAgaWYgdGl0bGUgPT0gIiIgYW5kIGZpbGVuYW1lIHRoZW4K ICAgICAgICAgICAgdGl0bGUgPSBvbmx5bmFtZQogICAgICAgIGVuZAogICAgICAgIGxvY2Fs IGFyZWYgPSBhdHRhY2htZW50c1tyZWdpc3RlcmVkXQogICAgICAgIGlmIG5vdCBhcmVmIHRo ZW4KICAgICAgICAgICAgYXJlZiA9IGNvZGVpbmplY3Rpb25zLmVtYmVkZmlsZShzcGVjaWZp Y2F0aW9uKQogICAgICAgICAgICBhdHRhY2htZW50c1tyZWdpc3RlcmVkXSA9IGFyZWYKICAg ICAgICBlbmQKICAgICAgICBsb2NhbCByZWZlcmVuY2UgPSBzcGVjaWZpY2F0aW9uLnJlZmVy ZW5jZQogICAgICAgIGlmIHJlZmVyZW5jZSBhbmQgYXJlZiB0aGVuCiAgICAgICAgICAgIHRv YmVzYXZlZG9ianJlZnNbcmVmZXJlbmNlXSA9IGFyZWZbMV0KICAgICAgICBlbmQKICAgICAg ICBpZiBub3QgYXJlZiB0aGVuCiAgICAgICAgICAgIHJlcG9ydF9hdHRhY2htZW50KCJza2lw cGluZyBhdHRhY2htZW50LCByZWdpc3RlcmVkICVhIixyZWdpc3RlcmVkKQogICAgICAgICAg ICAtLSBhbHJlYWR5IHJlcG9ydGVkCiAgICAgICAgZWxzZWlmIHNwZWNpZmljYXRpb24ubWV0 aG9kID09IHZfaGlkZGVuIHRoZW4KICAgICAgICAgICAgcmVmZXJlbmNlZFtoYXNoXSA9ICJo aWRkZW4iCiAgICAgICAgZWxzZQogICAgICAgICAgICByZWZlcmVuY2VkW2hhc2hdID0gImFu bm90YXRpb24iCiAgICAgICAgICAgIGxvY2FsIG5hbWUsIGFwcGVhcmFuY2UgPSBhbmFseXpl c3ltYm9sKHNwZWNpZmljYXRpb24uc3ltYm9sLGF0dGFjaG1lbnRfc3ltYm9scykKICAgICAg ICAgICAgbG9jYWwgZmxhZ3MgPSBzcGVjaWZpY2F0aW9uLmZsYWdzIG9yIDAgLS0gdG8ga2Vl cCBpdCBleHBhbmRhYmxlCiAgICAgICAgICAgIGxvY2FsIGQgPSBwZGZkaWN0aW9uYXJ5IHsK ICAgICAgICAgICAgICAgIFN1YnR5cGUgID0gcGRmY29uc3RhbnQoIkZpbGVBdHRhY2htZW50 IiksCiAgICAgICAgICAgICAgICBGUyAgICAgICA9IGFyZWYsCiAgICAgICAgICAgICAgICBD b250ZW50cyA9IHBkZnVuaWNvZGUodGl0bGUpLAogICAgICAgICAgICAgICAgTmFtZSAgICAg PSBuYW1lLAogICAgICAgICAgICAgICAgTk0gICAgICAgPSBwZGZzdHJpbmcoImF0dGFjaG1l bnQ6Ii4ubm9mYXR0YWNobWVudHMpLAogICAgICAgICAgICAgICAgVCAgICAgICAgPSBhdXRo b3Igfj0gIiIgYW5kIHBkZnVuaWNvZGUoYXV0aG9yKSBvciBuaWwsCiAgICAgICAgICAgICAg ICBTdWJqICAgICA9IHN1YnRpdGxlIH49ICIiIGFuZCBwZGZ1bmljb2RlKHN1YnRpdGxlKSBv ciBuaWwsCiAgICAgICAgICAgICAgICBDICAgICAgICA9IGFuYWx5emVjb2xvcihzcGVjaWZp Y2F0aW9uLmNvbG9ydmFsdWUsc3BlY2lmaWNhdGlvbi5jb2xvcm1vZGVsKSwKICAgICAgICAg ICAgICAgIENBICAgICAgID0gYW5hbHl6ZXRyYW5zcGFyZW5jeShzcGVjaWZpY2F0aW9uLnRy YW5zcGFyZW5jeXZhbHVlKSwKICAgICAgICAgICAgICAgIEFQICAgICAgID0gYXBwZWFyYW5j ZSwKICAgICAgICAgICAgICAgIE9DICAgICAgID0gYW5hbHl6ZWxheWVyKHNwZWNpZmljYXRp b24ubGF5ZXIpLAogICAgICAgICAgICAgLS0gRiAgICAgICAgPSBwZGZudWxsKCksIC0tIGFu b3RoZXIgcmVkaWN1bG91cyBuZWVkIHRvIHNhdGlzZnkgdmFsaWRhdGlvbgogICAgICAgICAg ICAgICAgRiAgICAgICAgPSAoZmxhZ3MgfCA0KSAmICgxMDIzLTEtMi0zMi0yNTYpLCAtLSBz ZXQgMywgY2xlYXIgMSwyLDYsOTsgUERGIDMyMDAwLTEsIHAzODUKICAgICAgICAgICAgfQog ICAgICAgICAgICBsb2NhbCB3aWR0aCAgPSBzcGVjaWZpY2F0aW9uLndpZHRoICBvciAwCiAg ICAgICAgICAgIGxvY2FsIGhlaWdodCA9IHNwZWNpZmljYXRpb24uaGVpZ2h0IG9yIDAKICAg ICAgICAgICAgbG9jYWwgZGVwdGggID0gc3BlY2lmaWNhdGlvbi5kZXB0aCAgb3IgMAogICAg ICAgICAgICBsb2NhbCBib3ggICAgPSBocGFja25vZGUobm9kZWluamVjdGlvbnMuYW5ub3Rh dGlvbih3aWR0aCxoZWlnaHQsZGVwdGgsZCgpKSkKICAgICAgICAgICAgYm94LndpZHRoICAg ID0gd2lkdGgKICAgICAgICAgICAgYm94LmhlaWdodCAgID0gaGVpZ2h0CiAgICAgICAgICAg IGJveC5kZXB0aCAgICA9IGRlcHRoCiAgICAgICAgICAgIHJldHVybiBib3gKICAgICAgICBl bmQKICAgIGVuZAplbmQKCmZ1bmN0aW9uIGNvZGVpbmplY3Rpb25zLmF0dGFjaG1lbnRpZChm aWxlbmFtZSkgLS0gbm90IHVzZWQgaW4gY29udGV4dAogICAgcmV0dXJuIGZpbGVzdHJlYW1z W2ZpbGVuYW1lXQplbmQKCi0tIENvbW1lbnRzCgpsb2NhbCBub2Zjb21tZW50cyAgICAgID0g MApsb2NhbCB1c2Vwb3B1cGNvbW1lbnRzID0gZmFsc2UKCmxvY2FsIGRlZmF1bHRhdHRyaWJ1 dGVzID0gewogICAgWyJ4bWxucyJdICAgICAgICAgICA9ICJodHRwOi8vd3d3LnczLm9yZy8x OTk5L3hodG1sIiwKICAgIFsieG1sbnM6eGZhIl0gICAgICAgPSAiaHR0cDovL3d3dy54ZmEu b3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIiwKICAgIFsieGZhOmNvbnRlbnRUeXBlIl0gPSAi dGV4dC9odG1sIiwKICAgIFsieGZhOkFQSVZlcnNpb24iXSAgPSAiQWNyb2JhdDo4LjAuMCIs CiAgICBbInhmYTpzcGVjIl0gICAgICAgID0gIjIuNCIsCn0KCmxvY2FsIGZ1bmN0aW9uIGNo ZWNrY29udGVudCh0ZXh0LG9wdGlvbikKICAgIGlmIG9wdGlvbiBhbmQgb3B0aW9uLnhtbCB0 aGVuCiAgICAgICAgbG9jYWwgcm9vdCA9IHhtbC5jb252ZXJ0KHRleHQpCiAgICAgICAgaWYg cm9vdCBhbmQgbm90IHJvb3QuZXIgdGhlbgogICAgICAgICAgICB4bWwuY2hlY2tib20ocm9v dCkKICAgICAgICAgICAgbG9jYWwgYm9keSA9IHhtbC5maXJzdChyb290LCIvYm9keSIpCiAg ICAgICAgICAgIGlmIGJvZHkgdGhlbgogICAgICAgICAgICAgICAgbG9jYWwgYXQgPSBib2R5 LmF0CiAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBuZXh0LCBkZWZhdWx0YXR0cmlidXRl cyBkbwogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhdFtrXSB0aGVuCiAgICAgICAgICAg ICAgICAgICAgICAgIGF0W2tdID0gdgogICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAg ICAgICAgICAgZW5kCiAgICAgICAgICAgICAtLSBsb2NhbCBjb250ZW50ID0geG1sLnRleHRv bmx5KHJvb3QpCiAgICAgICAgICAgICAgICBsb2NhbCByaWNoY29udGVudCA9IHhtbC50b3N0 cmluZyhyb290KQogICAgICAgICAgICAgICAgcmV0dXJuIG5pbCwgcGRmdW5pY29kZShyaWNo Y29udGVudCkKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAgICBlbmQKICAgIHJldHVy biBwZGZ1bmljb2RlKHRleHQpCmVuZAoKZnVuY3Rpb24gbm9kZWluamVjdGlvbnMuY29tbWVu dChzcGVjaWZpY2F0aW9uKSAtLSBicnJyOiBzZWVtcyB0byBiZSBkb25lIHR3aWNlCiAgICBu b2Zjb21tZW50cyA9IG5vZmNvbW1lbnRzICsgMQogICAgbG9jYWwgdGV4dCA9IHNwZWNpZmlj YXRpb24uZGF0YSBvciAiIgogICAgaWYgc3BlY2lmaWNhdGlvbi5zcGFjZSB+PSB2X3llcyB0 aGVuCiAgICAgICAgdGV4dCA9IHN0cmlwc3RyaW5nKHRleHQpCiAgICAgICAgdGV4dCA9IGdz dWIodGV4dCwiW1xuXHJdICoiLCJcbiIpCiAgICBlbmQKICAgIHRleHQgPSBnc3ViKHRleHQs IlxyIiwiXG4iKQogICAgbG9jYWwgbmFtZSwgYXBwZWFyYW5jZSA9IGFuYWx5emVzeW1ib2wo c3BlY2lmaWNhdGlvbi5zeW1ib2wsY29tbWVudF9zeW1ib2xzKQogICAgbG9jYWwgdGFnICAg ICAgPSBzcGVjaWZpY2F0aW9uLnRhZyAgICAgIG9yICIiIC0tIHRoaXMgaXMgc29tZXdoYXQg bWVzc3kgYXMgcmVjZW50CiAgICBsb2NhbCB0aXRsZSAgICA9IHNwZWNpZmljYXRpb24udGl0 bGUgICAgb3IgIiIgLS0gdmVyc2lvbnMgb2YgYWNyb2JhdCBzZWUgdGhlIHRpdGxlCiAgICBs b2NhbCBzdWJ0aXRsZSA9IHNwZWNpZmljYXRpb24uc3VidGl0bGUgb3IgIiIgLS0gYXMgYXV0 aG9yCiAgICBsb2NhbCBhdXRob3IgICA9IHNwZWNpZmljYXRpb24uYXV0aG9yICAgb3IgIiIK ICAgIGxvY2FsIG9wdGlvbiAgID0gc2V0dGluZ3NfdG9faGFzaChzcGVjaWZpY2F0aW9uLm9w dGlvbiBvciAiIikKICAgIGlmIGF1dGhvciB+PSAiIiB0aGVuCiAgICAgICAgaWYgc3VidGl0 bGUgPT0gIiIgdGhlbgogICAgICAgICAgICBzdWJ0aXRsZSA9IHRpdGxlCiAgICAgICAgZWxz ZWlmIHRpdGxlIH49ICIiIHRoZW4KICAgICAgICAgICAgc3VidGl0bGUgPSBzdWJ0aXRsZSAu LiAiLCAiIC4uIHRpdGxlCiAgICAgICAgZW5kCiAgICAgICAgdGl0bGUgPSBhdXRob3IKICAg IGVuZAogICAgaWYgdGl0bGUgPT0gIiIgdGhlbgogICAgICAgIHRpdGxlID0gdGFnCiAgICBl bmQKICAgIGxvY2FsIGNvbnRlbnQsIHJpY2hjb250ZW50ID0gY2hlY2tjb250ZW50KHRleHQs b3B0aW9uKQogICAgbG9jYWwgZCA9IHBkZmRpY3Rpb25hcnkgewogICAgICAgIFN1YnR5cGUg ICA9IHBkZmNvbnN0YW50KCJUZXh0IiksCiAgICAgICAgT3BlbiAgICAgID0gb3B0aW9uW3Zf bWF4XSBhbmQgcGRmYm9vbGVhbih0cnVlKSBvciBuaWwsCiAgICAgICAgQ29udGVudHMgID0g Y29udGVudCwKICAgICAgICBSQyAgICAgICAgPSByaWNoY29udGVudCwKICAgICAgICBUICAg ICAgICAgPSB0aXRsZSB+PSAiIiBhbmQgcGRmdW5pY29kZSh0aXRsZSkgb3IgbmlsLAogICAg ICAgIFN1YmogICAgICA9IHN1YnRpdGxlIH49ICIiIGFuZCBwZGZ1bmljb2RlKHN1YnRpdGxl KSBvciBuaWwsCiAgICAgICAgQyAgICAgICAgID0gYW5hbHl6ZWNvbG9yKHNwZWNpZmljYXRp b24uY29sb3J2YWx1ZSxzcGVjaWZpY2F0aW9uLmNvbG9ybW9kZWwpLAogICAgICAgIENBICAg ICAgICA9IGFuYWx5emV0cmFuc3BhcmVuY3koc3BlY2lmaWNhdGlvbi50cmFuc3BhcmVuY3l2 YWx1ZSksCiAgICAgICAgT0MgICAgICAgID0gYW5hbHl6ZWxheWVyKHNwZWNpZmljYXRpb24u bGF5ZXIpLAogICAgICAgIE5hbWUgICAgICA9IG5hbWUsCiAgICAgICAgTk0gICAgICAgID0g cGRmc3RyaW5nKCJjb21tZW50OiIuLm5vZmNvbW1lbnRzKSwKICAgICAgICBBUCAgICAgICAg PSBhcHBlYXJhbmNlLAogICAgfQogICAgbG9jYWwgd2lkdGggID0gc3BlY2lmaWNhdGlvbi53 aWR0aCAgb3IgMAogICAgbG9jYWwgaGVpZ2h0ID0gc3BlY2lmaWNhdGlvbi5oZWlnaHQgb3Ig MAogICAgbG9jYWwgZGVwdGggID0gc3BlY2lmaWNhdGlvbi5kZXB0aCAgb3IgMAogICAgbG9j YWwgYm94CiAgICBpZiB1c2Vwb3B1cGNvbW1lbnRzIHRoZW4KICAgICAgICAtLSByYXRoZXIg dXNlbGVzcyBhcyB3ZSBjYW4gaGlkZS92aWRlCiAgICAgICAgbG9jYWwgbmQgPSBwZGZyZXNl cnZlb2JqZWN0KCkKICAgICAgICBsb2NhbCBuYyA9IHBkZnJlc2VydmVvYmplY3QoKQogICAg ICAgIGxvY2FsIGMgPSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICAgICAgU3VidHlwZSA9IHBk ZmNvbnN0YW50KCJQb3B1cCIpLAogICAgICAgICAgICBQYXJlbnQgID0gcGRmcmVmZXJlbmNl KG5kKSwKICAgICAgICB9CiAgICAgICAgZC5Qb3B1cCA9IHBkZnJlZmVyZW5jZShuYykKICAg ICAgICBib3ggPSBocGFja25vZGUoCiAgICAgICAgICAgIG5vZGVpbmplY3Rpb25zLmFubm90 YXRpb24oMCwwLDAsZCgpLG5kKSwKICAgICAgICAgICAgbm9kZWluamVjdGlvbnMuYW5ub3Rh dGlvbih3aWR0aCxoZWlnaHQsZGVwdGgsYygpLG5jKQogICAgICAgICkKICAgIGVsc2UKICAg ICAgICBib3ggPSBocGFja25vZGUobm9kZWluamVjdGlvbnMuYW5ub3RhdGlvbih3aWR0aCxo ZWlnaHQsZGVwdGgsZCgpKSkKICAgIGVuZAogICAgYm94LndpZHRoICA9IHdpZHRoICAtLSBy ZWR1bmRhbnQKICAgIGJveC5oZWlnaHQgPSBoZWlnaHQgLS0gcmVkdW5kYW50CiAgICBib3gu ZGVwdGggID0gZGVwdGggIC0tIHJlZHVuZGFudAogICAgcmV0dXJuIGJveAplbmQKCi0tIHJl bmRlcmluZyBzdHVmZgotLQotLSBvYmplY3RfMSAgLT4gPDwvVHlwZSAvUmVuZGl0aW9uIC9T IC9NUiAvQyA8PCAvVHlwZSAvTWVkaWFDbGlwIC4uLiA+PiA+PgotLSBvYmplY3RfMiAgLT4g PDwvVHlwZSAvUmVuZGl0aW9uIC9TIC9NUiAvQyA8PCAvVHlwZSAvTWVkaWFDbGlwIC4uLiA+ PiA+PgotLSByZW5kZXJpbmcgLT4gPDwvVHlwZSAvUmVuZGl0aW9uIC9TIC9NUyBbb2JqcmVm XzEgb2JqcmVmXzJdPj4KLS0KLS0gd2Ugb25seSB3b3JrIGZvcmV3YXJkIGhlcmUgKGN1cnJl bnRseSkKLS0gYW5ub3RhdGlvbiBpcyB0byBiZSBwYWNrZWQgYXQgdGhlIHRleCBlbmQKCi0t IGFpZmYgYXVkaW8vYWlmZgotLSBhdSAgIGF1ZGlvL2Jhc2ljCi0tIGF2aSAgdmlkZW8vYXZp Ci0tIG1pZCAgYXVkaW8vbWlkaQotLSBtb3YgIHZpZGVvL3F1aWNrdGltZQotLSBtcDMgIGF1 ZGlvL3gtbXAzIChtcGVnKQotLSBtcDQgIGF1ZGlvL21wNAotLSBtcDQgIHZpZGVvL21wNAot LSBtcGVnIHZpZGVvL21wZWcKLS0gc21pbCBhcHBsaWNhdGlvbi9zbWlsCi0tIHN3ZiAgYXBw bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gKCi0tIFAgIG1lZGlhIHBsYXkgcGFyYW1ldGVy cyAoZXZ0IC9CRSBmb3IgY29udHJvbHMgZXRjCi0tIEEgIGJvb2xlYW4gKGF1ZGlvKQotLSBD ICBib29sZWFuIChjYXB0aW9ucykKLS0gTyAgYm9vbGVhbiAob3ZlcmR1YnMpCi0tIFMgIGJv b2xlYW4gKHN1YnRpdGxlcykKLS0gUEwgcGRmY29uc3RhbnQoIkFEQkVfTUNJIiksCgotLSBG ICAgICAgICA9IGZsYWdzLAotLSBUICAgICAgICA9IHRpdGxlLAotLSBDb250ZW50cyA9IHJ1 YmlzaCwKLS0gQVAgICAgICAgPSBpcnJlbGV2YW50LAoKLS0gc291bmQgaXMgZGlmZmVyZW50 LCBubyB3aW5kb3cgKG9yIHplcm8pIHNvIHdlIG5lZWQgdG8gY29sbGVjdCB0aGVtIGFuZAot LSBmb3JjZSB0aGVtIGlmIG5vdCBzZXQKCmxvY2FsIG11LCBtZiA9IHsgfSwgeyB9LCB7IH0K CmxvY2FsIGZ1bmN0aW9uIGRlbGF5ZWQobGFiZWwpCiAgICBsb2NhbCByZXNlcnZlZCA9IG11 W2xhYmVsXQogICAgaWYgbm90IHJlc2VydmVkIHRoZW4KICAgICAgICByZXNlcnZlZCA9IHBk ZnJlc2VydmVvYmplY3QoKQogICAgICAgIG11W2xhYmVsXSA9IHJlc2VydmVkCiAgICBlbmQK ICAgIHJldHVybiByZXNlcnZlZAplbmQKCmxvY2FsIGZ1bmN0aW9uIGNoZWNrZWRyZWZlcmVu Y2UocmVmKQogICAgbG9jYWwgc2V0LCBidWcgPSBzdHJ1Y3R1cmVzLnJlZmVyZW5jZXMuaWRl bnRpZnkoIiIscmVmKQogICAgaWYgbm90IGJ1ZyBhbmQgI3NldCA+IDAgdGhlbgogICAgICAg IHJldHVybiBwZGZhY3Rpb24oc2V0KQogICAgZW5kCmVuZAoKbG9jYWwgZnVuY3Rpb24gaW5z ZXJ0cmVuZGVyaW5nd2luZG93KHNwZWNpZmljYXRpb24pCiAgICBsb2NhbCBhY3Rpb25zICAg PSBuaWwKICAgIGxvY2FsIGxhYmVsICAgICA9IHNwZWNpZmljYXRpb24ubGFiZWwKICAgIGxv Y2FsIG9wZW5wYWdlICA9IHNwZWNpZmljYXRpb24ub3BlbnBhZ2UKICAgIGxvY2FsIGNsb3Nl cGFnZSA9IHNwZWNpZmljYXRpb24uY2xvc2VwYWdlCiAgICBsb2NhbCBvcHRpb24gICAgPSBz ZXR0aW5nc190b19oYXNoKHNwZWNpZmljYXRpb24ub3B0aW9uKQogICAgb3BlbnBhZ2UgID0g Y2hlY2tlZHJlZmVyZW5jZShvcGVucGFnZSkKICAgIGNsb3NlcGFnZSA9IGNoZWNrZWRyZWZl cmVuY2UoY2xvc2VwYWdlKQogICAgaWYgb3B0aW9uW3ZfYXV0b10gdGhlbgogICAgICAgIGlm IG5vdCBvcGVucGFnZSB0aGVuCiAgICAgICAgICAgIG9wZW5wYWdlID0gZXhlY3V0ZXJzLnN0 YXJ0cmVuZGVyaW5nKGxhYmVsKQogICAgICAgIGVuZAogICAgICAgIGlmIG5vdCBjbG9zZXBh Z2UgdGhlbgogICAgICAgICAgICBjbG9zZXBhZ2UgPSBleGVjdXRlcnMuc3RvcHJlbmRlcmlu ZyhsYWJlbCkKICAgICAgICBlbmQKICAgIGVuZAogICAgaWYgb3BlbnBhZ2Ugb3IgY2xvc2Vw YWdlIHRoZW4KICAgICAgICBhY3Rpb25zID0gcGRmZGljdGlvbmFyeSB7CiAgICAgICAgICAg IFBPID0gb3BlbnBhZ2UsCiAgICAgICAgICAgIFBDID0gY2xvc2VwYWdlLAogICAgICAgIH0K ICAgIGVuZAogICAgbG9jYWwgcGFnZSA9IHRvbnVtYmVyKHNwZWNpZmljYXRpb24ucGFnZSkg b3IgdGV4Z2V0Y291bnQoInJlYWxwYWdlbm8iKSAtLSB0b2RvCiAgICBsb2NhbCByID0gZGVs YXllZChsYWJlbCkgLS0gcmVzZXJ2ZSwgY2hpbGQgcmVmZXJzIHRvIHBhcmVudAogICAgbG9j YWwgYSA9IGV4ZWN1dGVycy5zdGFydHJlbmRlcmluZyhsYWJlbCkKICAgIGxvY2FsIGJzLCBi YyA9IHBkZmJvcmRlcigpCiAgICBsb2NhbCBkID0gcGRmZGljdGlvbmFyeSB7CiAgICAgICAg U3VidHlwZSA9IHBkZmNvbnN0YW50KCJTY3JlZW4iKSwKICAgICAgICBQICAgICAgID0gcGRm cmVmZXJlbmNlKHBkZnBhZ2VyZWZlcmVuY2UocGFnZSkpLAogICAgICAgIEEgICAgICAgPSBh LCAtLSBuZWVkZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgYW5ub3RhdGlvbiBjbGlja2FibGUg KGkuZS4gZG9uJ3QgYmFyaykKICAgICAgICBUICAgICAgID0gcGRmdW5pY29kZShsYWJlbCks IC0tIGZvciBKUwogICAgICAgIEJvcmRlciAgPSBicywKICAgICAgICBDICAgICAgID0gYmMs CiAgICAgICAgQUEgICAgICA9IGFjdGlvbnMsCiAgICB9CiAgICBsb2NhbCB3aWR0aCA9IHNw ZWNpZmljYXRpb24ud2lkdGggb3IgMAogICAgbG9jYWwgaGVpZ2h0ID0gc3BlY2lmaWNhdGlv bi5oZWlnaHQgb3IgMAogICAgY29udGV4dChub2RlaW5qZWN0aW9ucy5hbm5vdGF0aW9uKHdp ZHRoLGhlaWdodCwwLGQoKSxyKSkgLS0gc2F2ZSByZWYKZW5kCgotLSBzb21lIGRpY3Rpb25h cmllcyBjYW4gaGF2ZSBhIE1IIChtdXN0IGhvbm9yKSBvciBCRSAoYmVzdCBlZmZvcnQpIGNh cHN1bGUKCmxvY2FsIGZ1bmN0aW9uIGluc2VydHJlbmRlcmluZyhzcGVjaWZpY2F0aW9uKQog ICAgbG9jYWwgbGFiZWwgID0gc3BlY2lmaWNhdGlvbi5sYWJlbAogICAgbG9jYWwgb3B0aW9u ID0gc2V0dGluZ3NfdG9faGFzaChzcGVjaWZpY2F0aW9uLm9wdGlvbikKICAgIGlmIG5vdCBt ZltsYWJlbF0gdGhlbgogICAgICAgIGxvY2FsIGZpbGVuYW1lID0gc3BlY2lmaWNhdGlvbi5m aWxlbmFtZQogICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZSB+PSAiIiB0aGVuCiAg ICAgICAgICAgIGxvY2FsIGlzdXJsICAgID0gZmluZChmaWxlbmFtZSwiOi8vIiwxLHRydWUp CiAgICAgICAgICAgIGxvY2FsIG1pbWV0eXBlID0gc3BlY2lmaWNhdGlvbi5taW1ldHlwZSBv ciBzcGVjaWZpY2F0aW9uLm1pbWUKICAgICAgICAgLS0gbG9jYWwgc3RhcnQgPSBwZGZkaWN0 aW9uYXJ5IHsKICAgICAgICAgLS0gICAgIFR5cGUgPSBwZGZjb25zdGFudCgiTWVkaWFPZmZz ZXQiKSwKICAgICAgICAgLS0gICAgIFMgPSBwZGZjb25zdGFudCgiVCIpLCAtLSB0aW1lCiAg ICAgICAgIC0tICAgICBUID0gcGRmZGljdGlvbmFyeSB7IC0tIHRpbWUKICAgICAgICAgLS0g ICAgICAgICBUeXBlID0gcGRmY29uc3RhbnQoIlRpbWVzcGFuIiksCiAgICAgICAgIC0tICAg ICAgICAgUyAgICA9IHBkZmNvbnN0YW50KCJTIiksCiAgICAgICAgIC0tICAgICAgICAgViAg ICA9IDMsIC0tIHRpbWUgaW4gc2Vjb25kcwogICAgICAgICAtLSAgICAgfSwKICAgICAgICAg LS0gfQogICAgICAgICAtLSBsb2NhbCBzdGFydCA9IHBkZmRpY3Rpb25hcnkgewogICAgICAg ICAtLSAgICAgVHlwZSA9IHBkZmNvbnN0YW50KCJNZWRpYU9mZnNldCIpLAogICAgICAgICAt LSAgICAgUyA9IHBkZmNvbnN0YW50KCJGIiksIC0tIGZyYW1lCiAgICAgICAgIC0tICAgICBG ID0gMTAwIC0tIGZyYW1lbnVtYmVyCiAgICAgICAgIC0tIH0KICAgICAgICAgLS0gbG9jYWwg c3RhcnQgPSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICAgLS0gICAgIFR5cGUgPSBwZGZjb25z dGFudCgiTWVkaWFPZmZzZXQiKSwKICAgICAgICAgLS0gICAgIFMgPSBwZGZjb25zdGFudCgi TSIpLCAtLSBtYXJrCiAgICAgICAgIC0tICAgICBNID0gInNvbWVtYXJrIiwKICAgICAgICAg LS0gfQogICAgICAgICAtLSBsb2NhbCBwYXJhbWV0ZXJzID0gcGRmZGljdGlvbmFyeSB7CiAg ICAgICAgIC0tICAgICBCRSA9IHBkZmRpY3Rpb25hcnkgewogICAgICAgICAtLSAgICAgICAg ICBCID0gc3RhcnQsCiAgICAgICAgIC0tICAgICB9CiAgICAgICAgIC0tIH0KICAgICAgICAg ICAgbG9jYWwgcGVybWlzc2lvbnMgPSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICAgICAgICAg IFR5cGUgPSBwZGZjb25zdGFudCgiTWVkaWFQZXJtaXNzaW9ucyIpLAogICAgICAgICAgICAg ICAgVEYgICA9IHBkZnN0cmluZygiVEVNUEFMV0FZUyIpLCAtLSBURU1QTkVWRVIgVEVNUEVY VFJBQ1QgVEVNUEFDQ0VTUyBURU1QQUxXQVlTIC8gbmVlZGVkIGZvciBhY3JvYmF0L3dtcAog ICAgICAgICAgICB9CiAgICAgICAgICAgIGxvY2FsIGRlc2NyaXB0b3IgPSBwZGZkaWN0aW9u YXJ5IHsKICAgICAgICAgICAgICAgIFR5cGUgPSBwZGZjb25zdGFudCgiRmlsZXNwZWMiKSwK ICAgICAgICAgICAgICAgIEYgICAgPSBmaWxlbmFtZSwKICAgICAgICAgICAgfQogICAgICAg ICAgICBpZiBpc3VybCB0aGVuCiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLkZTID0gcGRm Y29uc3RhbnQoIlVSTCIpCiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0gcGRmcmVmZXJl bmNlKHBkZmZsdXNob2JqZWN0KGRlc2NyaXB0b3IpKQogICAgICAgICAgICBlbHNlaWYgb3B0 aW9uW3ZfZW1iZWRdIHRoZW4KICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgPSBjb2RlaW5q ZWN0aW9ucy5lbWJlZGZpbGUgewogICAgICAgICAgICAgICAgICAgIGZpbGUgICAgICAgICAg ID0gZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgbWltZXR5cGUgICAgICAgPSBtaW1l dHlwZSwgLS0geWVzIG9yIG5vCiAgICAgICAgICAgICAgICAgICAgdGl0bGUgICAgICAgICAg PSBvcHRpb25bdl90aXRsZV0sCiAgICAgICAgICAgICAgICAgICAgY29tcHJlc3MgICAgICAg PSBvcHRpb25bdl9jb21wcmVzc10gb3IgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgZm9y Y2VyZWZlcmVuY2UgPSBvcHRpb25bdl9saXN0XSB+PSB2X25vLAogICAgICAgICAgICAgICAg fQogICAgICAgICAgICBlbmQKICAgICAgICAgICAgbG9jYWwgbWVkaWFfcGxheV9wYXJhbXMg PSBwZGZkaWN0aW9uYXJ5IHsKICAgICAgICAgICAgICAgIFR5cGUgPSBwZGZjb25zdGFudCgi TWVkaWFQbGF5UGFyYW1zIiksCiAgICAgICAgICAgICAgICBCRSAgID0gcGRmZGljdGlvbmFy eSB7CiAgICAgICAgICAgICAgICAgICAgQyAgPSBvcHRpb25bdl9jb250cm9sc10gYW5kIG9w dGlvblt2X2NvbnRyb2xzXSB+PSB2X25vIG9yIGZhbHNlLAogICAgICAgICAgICAgICAgICAg IFYgID0gdG9udW1iZXIob3B0aW9uW3Zfdm9sdW1lXSkgb3IgMTAwLAogICAgICAgICAgICAg ICAgICAgIFJDID0gdG9udW1iZXIob3B0aW9uW3ZfcmVwZWF0XSkgb3IgMSwKICAgICAgICAg ICAgICAgIH0sCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbG9jYWwgbWVkaWFfc2NyZWVu X3BhcmFtcyA9IHBkZmRpY3Rpb25hcnkgewogICAgICAgICAgICAgICAgVHlwZSA9IHBkZmNv bnN0YW50KCJNZWRpYVNjcmVlblBhcmFtcyIpLAogICAgICAgICAgICAgICAgQkUgICA9IHBk ZmRpY3Rpb25hcnkgewogICAgICAgICAgICAgICAgICAgIE8gPSB0b251bWJlcihvcHRpb25b dl9vcGFjaXR5XSkgb3IgMS4wLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfQog ICAgICAgICAgICBsb2NhbCBjbGlwID0gcGRmZGljdGlvbmFyeSB7CiAgICAgICAgICAgICAg ICBUeXBlID0gcGRmY29uc3RhbnQoIk1lZGlhQ2xpcCIpLAogICAgICAgICAgICAgICAgUyAg ICA9IHBkZmNvbnN0YW50KCJNQ0QiKSwKICAgICAgICAgICAgICAgIE4gICAgPSBsYWJlbCwK ICAgICAgICAgICAgICAgIENUICAgPSBtaW1ldHlwZSwKICAgICAgICAgICAgICAgIEFsdCAg PSBwZGZhcnJheSB7ICIiLCAiZmlsZSBub3QgZm91bmQiIH0sIC0tIGxhbmd1YWdlIGlkICsg bWVzc2FnZQogICAgICAgICAgICAgICAgRCAgICA9IGRlc2NyaXB0b3IsCiAgICAgICAgICAg ICAgICBQICAgID0gcGRmcmVmZXJlbmNlKHBkZmZsdXNob2JqZWN0KHBlcm1pc3Npb25zKSks CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbG9jYWwgcmVuZGl0aW9uID0gcGRmZGljdGlv bmFyeSB7CiAgICAgICAgICAgICAgICBUeXBlID0gcGRmY29uc3RhbnQoIlJlbmRpdGlvbiIp LAogICAgICAgICAgICAgICAgUyAgICA9IHBkZmNvbnN0YW50KCJNUiIpLAogICAgICAgICAg ICAgICAgTiAgICA9IHBkZnVuaWNvZGUobGFiZWwpLAogICAgICAgICAgICAgICAgQyAgICA9 IHBkZnJlZmVyZW5jZShwZGZmbHVzaG9iamVjdChjbGlwKSksCiAgICAgICAgICAgICAgICBQ ICAgID0gbWVkaWFfcGxheV9wYXJhbXMsCiAgICAgICAgICAgICAgICBTUCAgID0gbWVkaWFf c2NyZWVuX3BhcmFtcywKICAgICAgICAgICAgfQogICAgICAgICAgICBtZltsYWJlbF0gPSBw ZGZyZWZlcmVuY2UocGRmZmx1c2hvYmplY3QocmVuZGl0aW9uKSkKICAgICAgICBlbmQKICAg IGVuZAplbmQKCmZ1bmN0aW9uIGNvZGVpbmplY3Rpb25zLnByb2Nlc3NyZW5kZXJpbmcobGFi ZWwpCiAgICBsb2NhbCBzcGVjaWZpY2F0aW9uID0gaW50ZXJhY3Rpb25zLnJlbmRlcmluZ3Mu cmVuZGVyaW5nKGxhYmVsKQogICAgaWYgc3BlY2lmaWNhdGlvbiB0aGVuCiAgICAgICAgaW5z ZXJ0cmVuZGVyaW5nKHNwZWNpZmljYXRpb24pCiAgICBlbHNlCiAgICAgICAgLS0gZXJyb3IK ICAgIGVuZAplbmQKCi0tIG5lZWRlZCBtYXBwaW5nIGZvciBhY2Nlc3MgZnJvbSBKUwoKbG9j YWwgZnVuY3Rpb24gZmx1c2hyZW5kZXJpbmdzKCkKICAgIGlmIG5leHQobWYpIHRoZW4KICAg ICAgICBsb2NhbCByID0gcGRmYXJyYXkoKQogICAgICAgIGZvciBsYWJlbCwgcmVmZXJlbmNl IGluIHNvcnRlZGhhc2gobWYpIGRvCiAgICAgICAgICAgIHJbI3IrMV0gPSBwZGZ1bmljb2Rl KGxhYmVsKQogICAgICAgICAgICByWyNyKzFdID0gcmVmZXJlbmNlIC0tIGFscmVhZHkgYSBy ZWZlcmVuY2UKICAgICAgICBlbmQKICAgICAgICBscGRmLmFkZHRvbmFtZXMoIlJlbmRpdGlv bnMiLHBkZnJlZmVyZW5jZShwZGZmbHVzaG9iamVjdChwZGZkaWN0aW9uYXJ5eyBOYW1lcyA9 IHIgfSkpKQogICAgZW5kCmVuZAoKbHBkZi5yZWdpc3RlcmRvY3VtZW50ZmluYWxpemVyKGZs dXNocmVuZGVyaW5ncywicmVuZGVyaW5ncyIpCgpmdW5jdGlvbiBjb2RlaW5qZWN0aW9ucy5p bnNlcnRyZW5kZXJpbmd3aW5kb3coc3BlY2lmaWNhdGlvbikKICAgIGxvY2FsIGxhYmVsID0g c3BlY2lmaWNhdGlvbi5sYWJlbAogICAgY29kZWluamVjdGlvbnMucHJvY2Vzc3JlbmRlcmlu ZyhsYWJlbCkKICAgIGluc2VydHJlbmRlcmluZ3dpbmRvdyhzcGVjaWZpY2F0aW9uKQplbmQK CmxvY2FsIGZ1bmN0aW9uIHNldChvcGVyYXRpb24sbGFiZWwpCiAgICBpZiBsYWJlbCBhbmQg bGFiZWwgfj0gIiIgdGhlbgogICAgICAgIGNvZGVpbmplY3Rpb25zLnByb2Nlc3NyZW5kZXJp bmcobGFiZWwpCiAgICAgICAgcmV0dXJuIHBkZmRpY3Rpb25hcnkgewogICAgICAgICAgICBT ICA9IHBkZmNvbnN0YW50KCJSZW5kaXRpb24iKSwKICAgICAgICAgICAgT1AgPSBvcGVyYXRp b24sCiAgICAgICAgICAgIFIgID0gbWZbbGFiZWxdLAogICAgICAgICAgICBBTiA9IHBkZnJl ZmVyZW5jZShkZWxheWVkKGxhYmVsKSksCiAgICAgICAgfQogICAgZW5kCmVuZAoKZnVuY3Rp b24gZXhlY3V0ZXJzLnN0YXJ0cmVuZGVyaW5nIChsYWJlbCkgcmV0dXJuIHNldCgwLGxhYmVs KSBlbmQKZnVuY3Rpb24gZXhlY3V0ZXJzLnN0b3ByZW5kZXJpbmcgIChsYWJlbCkgcmV0dXJu IHNldCgxLGxhYmVsKSBlbmQKZnVuY3Rpb24gZXhlY3V0ZXJzLnBhdXNlcmVuZGVyaW5nIChs YWJlbCkgcmV0dXJuIHNldCgyLGxhYmVsKSBlbmQKZnVuY3Rpb24gZXhlY3V0ZXJzLnJlc3Vt ZXJlbmRlcmluZyhsYWJlbCkgcmV0dXJuIHNldCgzLGxhYmVsKSBlbmQK --------------isWbZp6vFPufLbFK505kxwds Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cHM6Ly93d3cubnRnLm5sL21haWxtYW4v bGlzdGluZm8vbnRnLWNvbnRleHQKd2VicGFnZSAgOiBodHRwczovL3d3dy5wcmFnbWEtYWRlLm5s IC8gaHR0cDovL2NvbnRleHQuYWFuaGV0Lm5ldAphcmNoaXZlICA6IGh0dHBzOi8vYml0YnVja2V0 Lm9yZy9waGcvY29udGV4dC1taXJyb3IvY29tbWl0cy8Kd2lraSAgICAgOiBodHRwczovL2NvbnRl eHRnYXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --------------isWbZp6vFPufLbFK505kxwds--