From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lists.gentoo.org ([140.105.134.102] helo=robin.gentoo.org) by nuthatch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1GQtP6-0000El-5I for garchives@archives.gentoo.org; Fri, 22 Sep 2006 22:21:53 +0000 Received: from robin.gentoo.org (localhost [127.0.0.1]) by robin.gentoo.org (8.13.8/8.13.6) with SMTP id k8MMKtZF025521; Fri, 22 Sep 2006 22:20:55 GMT Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.188]) by robin.gentoo.org (8.13.8/8.13.6) with ESMTP id k8MMKtJu012882 for ; Fri, 22 Sep 2006 22:20:55 GMT Received: by nf-out-0910.google.com with SMTP id p46so1469980nfa for ; Fri, 22 Sep 2006 15:20:55 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=hHTjZRYfu8VD4bHXyQqRpAVt+sPPl9tKCjzQHYgZQxn/hjACOq30bNfR0dcsKy20LHQFhUsaExosJ7YWiRqfC6UzdlLx+UMoM30h4vlOOSQY/o4kR7R00z3O3jOguAquH+A02IYrCiC3SXuGfMCIs0r1vBiZxkggHad6f3X43RI= Received: by 10.49.93.13 with SMTP id v13mr2606614nfl; Fri, 22 Sep 2006 15:20:54 -0700 (PDT) Received: by 10.49.17.13 with HTTP; Fri, 22 Sep 2006 15:20:54 -0700 (PDT) Message-ID: Date: Sat, 23 Sep 2006 06:20:54 +0800 From: "Siong-Ui Te" To: gentoo-embedded@lists.gentoo.org Subject: [gentoo-embedded] bash script for building toolchain and images using crossdev Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-embedded@gentoo.org Reply-to: gentoo-embedded@lists.gentoo.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_17582_28297189.1158963654514" X-Archives-Salt: 8bbe489d-df2f-4fd4-90c6-83f80141fe6b X-Archives-Hash: 51b56109e2997cf9faa622e7bb6d4648 ------=_Part_17582_28297189.1158963654514 Content-Type: multipart/alternative; boundary="----=_Part_17583_23904664.1158963654514" ------=_Part_17583_23904664.1158963654514 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, I really appreciate so much contribution done by Gentoo embedded guys. Several mouths ago I tried to use Gentoo environment to build single kernel+rootfs image successfully and crossdev is really a great utility for building cross-toolchains. As a result I wrote this script to automate the whole build procedures. The single kernel+rootfs image is made using initramfs, so only 2.6 kernel is usable now. This script is not quite mature and some implementation is really ugly so far. To run this dialog-based script, the following packages are needed: dev-util/dialog sys-devel/crossdev app-portage/mirrorselect Usage example: 1. Build toolchain i686-gentoo-linux-uclibc. In Main Menu: Choose Build->i686->gentoo->linux->uclibc->Choose version[Optional]->Select build stage ->Select Misc options->Confirm->Start to build-> Follow the steps to configure toolchain 2. Build rootfs In Main Menu: Choose Package->Select toolchain i686-gentoo-linux-uclibc->Select the packages you want to install (at least C library, baselayout-lite, and busybox are needed), then the script start to build packages and the rootfs is located in /usr/i686-gentoo-linux-uclibc/genroot/rootfs. 3. Build image: In Main Menu: Choose Kernel->Select toolchain i686-gentoo-linux-uclibc->Choose 1.InstallKernel->Install gentoo-sources ->Then Choose 2. Configure kernel. remember to enable initramfs and specify initramfs source as /usr/i686-gentoo-linux-uclibc/genroot/rootfs ->Choose 5. Build a single image (Kernel+Rootfs) Then you can get the image under /usr/src/linux/arch/i386/boot/bzImage I would like to make it GPL'ed and make it part of the gentoo-embedded project if Gentoo embedded guys feel the script really help and fit the goal of the project. Any suggestions and feedbacks are welcomed. Sorry for my poor English because I am not a native speaker. ------=_Part_17583_23904664.1158963654514 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello,
I really appreciate so much contribution done by Gentoo embedded guys.
Several mouths ago I tried to use Gentoo environment to build single kernel+rootfs image
successfully and crossdev is really a great utility for building cross-toolchains.
As a result I wrote this script to automate the whole build procedures.
The single kernel+rootfs image is made using initramfs, so only 2.6 kernel is usable now.
This script is not quite mature and some implementation is really ugly so far.
To run this dialog-based script, the following packages are needed:
dev-util/dialog
sys-devel/crossdev
app-portage/mirrorselect

Usage example:
1. Build toolchain i686-gentoo-linux-uclibc.
In Main Menu:
Choose Build->i686->gentoo->linux->uclibc->Choose version[Optional]->Select build stage
->Select Misc options->Confirm->Start to build-> Follow the steps to configure toolchain
2. Build rootfs
In Main Menu:
Choose Package->Select toolchain i686-gentoo-linux-uclibc->Select the packages you want to install
(at least C library, baselayout-lite, and busybox are needed), then the script start to build packages
and the rootfs is located in /usr/i686-gentoo-linux-uclibc/genroot/rootfs.
3. Build image:
In Main Menu:
Choose Kernel->Select toolchain i686-gentoo-linux-uclibc->Choose 1.Install Kernel->Install gentoo-sources
->Then Choose 2. Configure kernel. remember to enable initramfs and specify initramfs source as
/usr/i686-gentoo-linux-uclibc/genroot/rootfs ->Choose 5. Build a single image (Kernel+Rootfs)
Then you can get the image under /usr/src/linux/arch/i386/boot/bzImage

I would like to make it GPL'ed and make it part of the gentoo-embedded project if Gentoo embedded guys
feel the script really help and fit the goal of the project.
Any suggestions and feedbacks are welcomed.
Sorry for my poor English because I am not a native speaker.
------=_Part_17583_23904664.1158963654514-- ------=_Part_17582_28297189.1158963654514 Content-Type: application/x-sh; name=gencross.sh Content-Transfer-Encoding: base64 X-Attachment-Id: f_esf3ij9d Content-Disposition: attachment; filename="gencross.sh" IyEvYmluL2Jhc2gKCkdFTkNST1NTX1RNUERJUj0vdG1wL2dlbmNyb3NzCkRJQUxPR19DTUQ9JHtH RU5DUk9TU19UTVBESVJ9L2RpYWxvZwoKR0VOQ1JPU1M9JDAKVEFSQ0g9CkhBUkNIPSQodW5zZXQg QVJDSCA7IHBvcnRhZ2VxIGVudnZhciBBUkNIKQpDVEFSR0VUPQpCQ0FUPSJzeXMtZGV2ZWwiICA7 IEJQS0c9ImJpbnV0aWxzIiAgICAgIDsgQlZFUj0iW2xhdGVzdF0iCkdDQVQ9InN5cy1kZXZlbCIg IDsgR1BLRz0iZ2NjIiAgICAgICAgICAgOyBHVkVSPSJbbGF0ZXN0XSIKS0NBVD0ic3lzLWtlcm5l bCIgOyBLUEtHPSJsaW51eC1oZWFkZXJzIiA7IEtWRVI9IltsYXRlc3RdIgpMQ0FUPSIiICAgICAg ICAgICA7IExQS0c9IiIgICAgICAgICAgICAgIDsgTFZFUj0iW2xhdGVzdF0iClNUQUdFPSItczQi ClVPUFRTPSIiICMgT3B0aW9ucyBwYXNzZWQgdG8gZW1lcmdlIGJ5IGNyb3NzZGV2CkVYX0dDQz0i bm8iCkVYX0dEQj0ibm8iCgpLQVJDSD0KVE9PTENIQUlOPSAgIyBUb29sY2hhaW4gc2VsZWN0ZWQK U1lTUk9PVD0KUk9PVD0KUE9SVEFHRV9DT05GSUdST09UPQpHRU5NRVJHRT0KR0VOTUFLRT0KCiMg VXNhZ2U6ICQxID0gdGl0bGUKZGlhbG9nX2luaXQoKSB7IGVjaG8gImRpYWxvZyAtLWJhY2t0aXRs ZSBcImdlbmNyb3NzIHV0aWxpdHlcIiAtLXRpdGxlIFwiJDFcIiIgPiAke0RJQUxPR19DTUR9IDsg fQoKIyBVc2FnZTogJDEgPSBleHRyYSBvcHRzCmRpYWxvZ19leHRyYW9wdHMoKSB7Cglsb2NhbCBD TUQ9YGNhdCAke0RJQUxPR19DTUR9YAoJQ01EPSR7Q01EfScgJyQxCgllY2hvICR7Q01EfSA+ICR7 RElBTE9HX0NNRH0KfQoKIyBVc2FnZTogJDEgPSB0ZXh0LCAkMiA9IGhlaWdodCwgJDMgPSB3aWR0 aCwgJDQgPSBtZW51LWhlaWdodApkaWFsb2dfbWVudSgpIHsKCWxvY2FsIENNRD1gY2F0ICR7RElB TE9HX0NNRH1gCglDTUQ9JHtDTUR9IiAtLW1lbnUgXCIkMVwiICQyICQzICQ0IgoJZWNobyAke0NN RH0gPiAke0RJQUxPR19DTUR9Cn0KCiMgVXNhZ2U6ICQxID0gdGV4dCwgJDIgPSBoZWlnaHQsICQz ID0gd2lkdGgKZGlhbG9nX21zZ2JveCgpIHsKCWxvY2FsIENNRD1gY2F0ICR7RElBTE9HX0NNRH1g CglDTUQ9JHtDTUR9IiAtLW1zZ2JveCBcIiQxXCIgJDIgJDMiCgllY2hvICR7Q01EfSA+ICR7RElB TE9HX0NNRH0KfQoKIyBVc2FnZTogJDEgPSB0ZXh0LCAkMiA9IGhlaWdodCwgJDMgPSB3aWR0aCwg JDQgPSBsaXN0LWhlaWdodApkaWFsb2dfY2hlY2tsaXN0KCkgewoJbG9jYWwgQ01EPWBjYXQgJHtE SUFMT0dfQ01EfWAKCUNNRD0ke0NNRH0iIC0tY2hlY2tsaXN0IFwiJDFcIiAkMiAkMyAkNCIKCWVj aG8gJHtDTUR9ID4gJHtESUFMT0dfQ01EfQp9CgojIFVzYWdlOiAkMSA9IHRleHQsICQyID0gaGVp Z2h0LCAkMyA9IHdpZHRoCmRpYWxvZ195ZXNubygpIHsKCWxvY2FsIENNRD1gY2F0ICR7RElBTE9H X0NNRH1gCglDTUQ9JHtDTUR9IiAtLXllc25vIFwiJDFcIiAkMiAkMyIKCWVjaG8gJHtDTUR9ID4g JHtESUFMT0dfQ01EfQp9CgojIFVzYWdlOiAkMSA9IGZpbGUsICQyID0gaGVpZ2h0LCAkMyA9IHdp ZHRoCmRpYWxvZ190ZXh0Ym94KCkgewoJbG9jYWwgQ01EPWBjYXQgJHtESUFMT0dfQ01EfWAKCUNN RD0ke0NNRH0iIC0tdGV4dGJveCBcIiQxXCIgJDIgJDMiCgllY2hvICR7Q01EfSA+ICR7RElBTE9H X0NNRH0KfQoKIyBVc2FnZTogJDEgPSB0ZXh0LCAkMiA9IGhlaWdodCwgJDMgPSB3aWR0aCwgWyAk NCA9IGluaXQgXQpkaWFsb2dfaW5wdXRib3goKSB7Cglsb2NhbCBDTUQ9YGNhdCAke0RJQUxPR19D TUR9YAoJaWYgWyAteiAiJDQiIF0gOyB0aGVuCgkJQ01EPSR7Q01EfSIgLS1pbnB1dGJveCBcIiQx XCIgJDIgJDMgIgoJZWxzZQoJCUNNRD0ke0NNRH0iIC0taW5wdXRib3ggXCIkMVwiICQyICQzICQ0 ICIKCWZpCgllY2hvICR7Q01EfSA+ICR7RElBTE9HX0NNRH0KfQoKIyBVc2FnZTogJDEgPSB0YWdz K2l0ZW1zK1tzdGF0dXNdIApkaWFsb2dfdGFnX2l0ZW0oKSB7Cglsb2NhbCBDTUQ9YGNhdCAke0RJ QUxPR19DTUR9YAoJQ01EPSR7Q01EfSIgJDEiCgllY2hvICR7Q01EfSA+ICR7RElBTE9HX0NNRH0K fQoKIyBVc2FnZTogc2F2ZSB0aGUgb3V0cHV0IGluICR7R0VOQ1JPU1NfVE1QRElSfS8kMQpkaWFs b2dfc2F2ZV9vdXRwdXQoKSB7Cglsb2NhbCBDTUQ9YGNhdCAke0RJQUxPR19DTUR9YAoJQ01EPSR7 Q01EfSIgMj4ke0dFTkNST1NTX1RNUERJUn0vJDEiCgllY2hvICR7Q01EfSA+ICR7RElBTE9HX0NN RH0KfQoKZGlhbG9nX2xhdW5jaCgpIHsgc2ggLWMgImBjYXQgJHtESUFMT0dfQ01EfWAiIDsgfQoK Y2hlY2tfcG9ydGFnZV9vdmVybGF5KCkgewoJbG9jYWwgUE9MU1RET1VUX0ZJTEU9JHtHRU5DUk9T U19UTVBESVJ9L1BPTE9VVAoJbG9jYWwgUE9MU1RERVJSX0ZJTEU9JHtHRU5DUk9TU19UTVBESVJ9 L1BPTEVSUgoJcG9ydGFnZXEgZW52dmFyIFBPUlRESVJfT1ZFUkxBWSAxPiR7UE9MU1RET1VUX0ZJ TEV9IDI+JHtQT0xTVERFUlJfRklMRX0KCWxvY2FsIFBPTFNURE9VVD1gY2F0ICR7UE9MU1RET1VU X0ZJTEV9YAoJbG9jYWwgUE9MU1RERVJSPWBjYXQgJHtQT0xTVERFUlJfRklMRX1gCglQT0xTVERF UlI9JHtQT0xTVERFUlIjKlwnfQoJUE9MU1RERVJSPSR7UE9MU1RERVJSJVwnKn0KCWlmIFsgLXog JHtQT0xTVERPVVR9IF0gOyB0aGVuCgkJaWYgWyAteiAke1BPTFNUREVSUn0gXSA7IHRoZW4KCQkJ IyBQT1JURElSX09WRVJMQVkgaXMgbm90IHNldAoJCQllY2hvICJQT1JURElSX09WRVJMQVk9L3Vz ci9sb2NhbC9wb3J0YWdlIiA+PiAvZXRjL21ha2UuY29uZgoJCQlta2RpciAtcCAvdXNyL2xvY2Fs L3BvcnRhZ2UKCQkJZGlhbG9nX2luaXQgIlBvcnRhZ2UgT3ZlcmxheSIKCQkJZGlhbG9nX21zZ2Jv eCAiXG5QT1JURElSX09WRVJMQVkgaXMgbm90IHNldC5cblNldCBQT1JURElSX09WRVJMQVk9L3Vz ci9sb2NhbC9wb3J0YWdlIiA4IDQ1CgkJCWRpYWxvZ19sYXVuY2gKCQllbHNlCgkJCSMgUE9SVERJ Ul9PVkVSTEFZIGlzIHNldCwgYnV0IGRpciBpcyBub3QgdGhlcmUKCQkJbWtkaXIgLXAgJHtQT0xT VERFUlJ9CgkJCWRpYWxvZ19pbml0ICJQb3J0YWdlIE92ZXJsYXkiCgkJCWRpYWxvZ19tc2dib3gg IlxuUE9SVERJUl9PVkVSTEFZKCR7UE9MU1RERVJSfSkgZGlyIGRvZXNuJ3QgZXhpdCBvcmlnaW5h bGx5IGFuZCBoYXMgYmVlbiBjcmVhdGVkLiIgOSA0NQoJCQlkaWFsb2dfbGF1bmNoCgkJZmkKIwll bHNlCgkJIyBQT1JURElSX09WRVJMQVkgaXMgc2V0CiMJCWRpYWxvZ19pbml0ICJQb3J0YWdlIE92 ZXJsYXkiCiMJCWRpYWxvZ19tc2dib3ggIlxuVGhlIFBPUlRESVJfT1ZFUkxBWSBoYXMgYmVlbiBz ZXQgYXM6XG4ke1BPTFNURE9VVH0iIDggNDIKIwkJZGlhbG9nX2xhdW5jaAoJZmkKfQoKIyAkMSA9 IGFyY2ggb2YgImFyY2gtdmVuZG9yLU9TLWxpYmMiCiMgRGV0ZXJtaW5lIFRBUkNIKHRhcmdldCBh cmNoaXRlY3R1cmUpCiMgcmV0dWVuIHZhbHVlOiAke1RBUkNIfQpkZXRlcm1pbmVfdGFyY2goKSB7 CgljYXNlICQxIGluCgkJYWxwaGEqKSAgICAgVEFSQ0g9YWxwaGE7OwoJCWFybSopICAgICAgIFRB UkNIPWFybTs7CgkJaHBwYSopICAgICAgVEFSQ0g9aHBwYTs7CgkJcGFyaXNjKSAgICAgVEFSQ0g9 aHBwYTs7CgkJaWE2NCopICAgICAgVEFSQ0g9aWE2NDs7CgkJaT84NiopICAgICAgVEFSQ0g9eDg2 OzsKCQl4ODYpICAgICAgICBUQVJDSD14ODY7OwoJCW02OCopICAgICAgIFRBUkNIPW02OGs7OwoJ CW1pcHMqKSAgICAgIFRBUkNIPW1pcHM7OwoJCXBvd2VycGM2NCopIFRBUkNIPXBwYzY0OzsKCQlw cGM2NCkgICAgICBUQVJDSD1wcGM2NDs7CgkJcG93ZXJwYyopICAgVEFSQ0g9cHBjOzsKCQlwcGMp ICAgICAgICBUQVJDSD1wcGM7OwoJCXNwYXJjKikgICAgIFRBUkNIPXNwYXJjOzsKCQlzMzkwKikg ICAgICBUQVJDSD1zMzkwOzsKCQlzaCopICAgICAgICBUQVJDSD1zaDs7CgkJeDg2XzY0KikgICAg VEFSQ0g9YW1kNjQ7OwoJCWFtZDY0KSAgICAgIFRBUkNIPWFtZDY0OzsKCWVzYWMKfQoKIyAkMSA9 ICR7VEFSQ0h9CiMgcmV0dXJuIHZhbHVlIiAke0tBUkNIfQpkZXRlcm1pbmVfa2FyY2goKSB7Cglj YXNlICQxIGluCgkJYWxwaGEpICAgICBLQVJDSD1hbHBoYTs7CgkJYW1kNjQpICAgICBLQVJDSD14 ODZfNjQ7OwoJCWFybSkgICAgICAgS0FSQ0g9YXJtOzsKCQlocHBhKSAgICAgIEtBUkNIPXBhcmlz Yzs7CgkJaWE2NCkgICAgICBLQVJDSD1pYTY0OzsKCQltaXBzKSAgICAgIEtBUkNIPW1pcHM7OwoJ CXBwYykgICAgICAgS0FSQ0g9cHBjOzsKCQlwcGM2NCkgICAgIEtBUkNIPXBwYzs7CgkJczM5MCkg ICAgICBLQVJDSD1zMzkwOzsKCQlzaCkgICAgICAgIEtBUkNIPXNoOzsKCQlzcGFyYykgICAgIEtB UkNIPXNwYXJjOzsKCQl4ODYpICAgICAgIEtBUkNIPWkzODY7OwoJZXNhYwp9CgojIHJldHVlbiB2 YWx1ZTogJHtDVEFSR0VUfSwgJHtMQ0FUfSwgJHtMUEtHfSwgJHtUQVJDSH0KZGV0ZXJtaW5lX2N0 YXJnZXQoKSB7CgkjIFNlbGVjdCBhcmNoCglkaWFsb2dfaW5pdCAiQ1BVIEFyY2hpdGVjdHVyZSIK CWRpYWxvZ19leHRyYW9wdHMgIi0tbm8tY2FuY2VsIgoJZGlhbG9nX2V4dHJhb3B0cyAiLS1kZWZh dWx0LWl0ZW0gaTY4NiIKCWRpYWxvZ19tZW51ICJTZWxlY3QgYSB0YXJnZXQgYXJjaGl0ZWN0dXJl IiAxNiAzNSAxMAoJZGlhbG9nX3RhZ19pdGVtICJhbHBoYSBcIlwiIgoJZGlhbG9nX3RhZ19pdGVt ICJhcm0gXCJcIiIKCWRpYWxvZ190YWdfaXRlbSAiYXJtZWIgXCJcIiIKCWRpYWxvZ190YWdfaXRl bSAiaHBwYSBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJpMzg2IFwiXCIiCglkaWFsb2dfdGFnX2l0 ZW0gImk0ODYgXCJcIiIKCWRpYWxvZ190YWdfaXRlbSAiaTU4NiBcIlwiIgoJZGlhbG9nX3RhZ19p dGVtICJpNjg2IFwiXCIiCglkaWFsb2dfdGFnX2l0ZW0gImlhNjQgXCJcIiIKCWRpYWxvZ190YWdf aXRlbSAibTY4ayBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJtaXBzIFwiXCIiCglkaWFsb2dfdGFn X2l0ZW0gIm1pcHNlbCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJtaXBzNjQgXCJcIiIKCWRpYWxv Z190YWdfaXRlbSAibWlwczY0ZWwgXCJcIiIKCWRpYWxvZ190YWdfaXRlbSAicG93ZXJwYyBcIlwi IgoJZGlhbG9nX3RhZ19pdGVtICJwb3dlcnBjNjQgXCJcIiIKCWRpYWxvZ190YWdfaXRlbSAiczM5 MCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJzMzkweCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJz aCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJzaDQgXCJcIiIKCWRpYWxvZ190YWdfaXRlbSAic2g2 NCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJzcGFyYyBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJz cGFyYzY0IFwiXCIiCglkaWFsb2dfdGFnX2l0ZW0gIng4Nl82NCBcIlwiIgoJZGlhbG9nX3NhdmVf b3V0cHV0ICJBUkNIIgoJZGlhbG9nX2xhdW5jaAoKCSMgU2VsZWN0IHZlbmRvcgoJZGlhbG9nX2lu aXQgIkhhcmR3YXJlIFBsYXRmb3JtIG9yIFZlbmRvciIKCWRpYWxvZ19leHRyYW9wdHMgIi0tbm8t Y2FuY2VsIgoJZGlhbG9nX2V4dHJhb3B0cyAiLS1kZWZhdWx0LWl0ZW0gZ2VudG9vIgoJZGlhbG9n X21lbnUgIlNlbGVjdCBhIHZlbmRvclxuTm90ZTpzb2Z0ZmxvYXQgZm9yIG5vbi1GUFUgQ1BVIiAx MSAzNSA0CglkaWFsb2dfdGFnX2l0ZW0gImdlbnRvbyBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJw YyBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJzb2Z0ZmxvYXQgXCJcIiIKCWRpYWxvZ190YWdfaXRl bSAidW5rbm93biBcIlwiIgoJZGlhbG9nX3NhdmVfb3V0cHV0ICJWRU5ET1IiCglkaWFsb2dfbGF1 bmNoCgoJIyBTZWxlY3QgT1MKCWRpYWxvZ19pbml0ICJPcGVyYXRpbmcgU3lzdGVtIgoJZGlhbG9n X2V4dHJhb3B0cyAiLS1uby1jYW5jZWwiCglkaWFsb2dfZXh0cmFvcHRzICItLWRlZmF1bHQtaXRl bSBsaW51eCIKCWRpYWxvZ19tZW51ICJTZWxlY3QgYW4gT1MiIDggMjIgMgoJZGlhbG9nX3RhZ19p dGVtICJsaW51eCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJ1Y2xpbnV4IFwiXCIiCglkaWFsb2df c2F2ZV9vdXRwdXQgIk9TIgoJZGlhbG9nX2xhdW5jaAoKCSMgU2VsZWN0IGxpYmMKCWRpYWxvZ19p bml0ICJDIExpYnJhcnkiCglkaWFsb2dfZXh0cmFvcHRzICItLW5vLWNhbmNlbCIKCWRpYWxvZ19l eHRyYW9wdHMgIi0tZGVmYXVsdC1pdGVtIHVjbGliYyIKCWRpYWxvZ19tZW51ICJTZWxlY3QgYSBD IExpYnJhcnkiIDkgMjIgMwoJZGlhbG9nX3RhZ19pdGVtICJnbnUgXCJcIiIKCWRpYWxvZ190YWdf aXRlbSAia2xpYmMgXCJcIiIKCWRpYWxvZ190YWdfaXRlbSAidWNsaWJjIFwiXCIiCglkaWFsb2df c2F2ZV9vdXRwdXQgIkxJQkMiCglkaWFsb2dfbGF1bmNoCgoJIyBEZXRlcm1pbmUgQ1RBUkdFVCBm cm9tIHByZXZpb3VzIGlucHV0cwoJQ1RBUkdFVD1gY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9BUkNI YC1gY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9WRU5ET1JgLWBjYXQgJHtHRU5DUk9TU19UTVBESVJ9 L09TYC1gY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9MSUJDYAoKCSMgRGV0ZXJtaW5lIGNhdGFnb3J5 L25hbWUoTENBVC9MUEtHKSBmb3IgbGliYwoJY2FzZSBgY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9M SUJDYCBpbgoJCWdudSkgICAgTENBVD0ic3lzLWxpYnMiIDsgTFBLRz0iZ2xpYmMiICA7OwoJCWts aWJjKSAgTENBVD0iZGV2LWxpYnMiIDsgTFBLRz0ia2xpYmMiICA7OwoJCXVjbGliYykgTENBVD0i c3lzLWxpYnMiIDsgTFBLRz0idWNsaWJjIiA7OwoJZXNhYwoKCSMgRGV0ZXJtaW5lICR7VEFSQ0h9 ICh0YXJnZXQgYXJjaGl0ZWN0dXJlKQoJZGV0ZXJtaW5lX3RhcmNoIGBjYXQgJHtHRU5DUk9TU19U TVBESVJ9L0FSQ0hgCn0KCiMgQ2hhbmdlIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIGluIHRo ZSB0b29sY2hhaW4gdG8gYmUgYnVpbHQuCiMgJDEgPSBwYWNrYWdlIG5hbWUgKGJpbnV0aWxzLCBn Y2MsIGxpbnV4LWhlYWRlcnMsIG9yIGxpYmMpCiMgcmV0dXJuIHZhbHVlOiAke0JWRVJ9LCBvciAk e0dWRVJ9LCBvciAke0tWRVJ9LCBvciAke0xWRVJ9CnBhY2thZ2VfdmVyc2lvbigpIHsKCWxvY2Fs IFBPUlRESVI9YHBvcnRhZ2VxIGVudnZhciBQT1JURElSYAoJbG9jYWwgUEtHRElSPQoJbG9jYWwg VEFHU0lURU1TPQoJIyBEZXRlcm1pbmUgcGFja2FnZSBkaXIgZnJvbSAkMQoJIyBlLmcuIGlmICQx PXVjbGliYywgc2V0IFBLR0RJUj0vdXNyL3BvcnRhZ2Uvc3lzLWxpYnMvdWNsaWJjCgljYXNlICQx IGluCgkJJHtCUEtHfSkgUEtHRElSPSR7UE9SVERJUn0vJHtCQ0FUfS8ke0JQS0d9OzsKCQkke0dQ S0d9KSBQS0dESVI9JHtQT1JURElSfS8ke0dDQVR9LyR7R1BLR307OwoJCSR7S1BLR30pIFBLR0RJ Uj0ke1BPUlRESVJ9LyR7S0NBVH0vJHtLUEtHfTs7CgkJJHtMUEtHfSkgUEtHRElSPSR7UE9SVERJ Un0vJHtMQ0FUfS8ke0xQS0d9OzsKCWVzYWMKCSMgU2VhcmNoIGVidWlsZHMgaW4gdGhlIFBLR0RJ Ui4KCSMgSWYgdGhlIGVidWlkIGNvbnRhaW5zICR7VEFSQ0h9IG9yIH4ke1RBUkNIfSwgYWRkIHRv ICh0YWcgaXRlbSkgcGFpcnMuCglmb3IgZWJ1aWxkIGluICR7UEtHRElSfS8kezF9LSogOyBkbwoJ CWxvY2FsIFBLR01BU0s9eWVzCgkJbG9jYWwgUEtHVkVSPSR7ZWJ1aWxkIyMvKi99CgkJUEtHVkVS PSR7UEtHVkVSJS4qfQoJCWxvY2FsIEtFWVdPUkRTPWBncmVwIEtFWVdPUkRTICR7ZWJ1aWxkfWAK CQlLRVlXT1JEUz0ke0tFWVdPUkRTIypcIn0KCQlLRVlXT1JEUz0ke0tFWVdPUkRTJVwiKn0KCQlm b3IgayBpbiAke0tFWVdPUkRTfSA7IGRvCgkJCWlmIFsgJHtrfSA9ICR7VEFSQ0h9IF0gOyB0aGVu CgkJCQlUQUdTSVRFTVM9JHtUQUdTSVRFTVN9JHtQS0dWRVJ9JyAnJHtUQVJDSH0nICcKCQkJCVBL R01BU0s9bm8KCQkJZWxpZiBbICR7a30gPSAifiR7VEFSQ0h9IiBdIDsgdGhlbgoJCQkJVEFHU0lU RU1TPSR7VEFHU0lURU1TfSR7UEtHVkVSfScgJyJ+JHtUQVJDSH0iJyAnCgkJCQlQS0dNQVNLPW5v CgkJCWZpCgkJZG9uZQoJCVsgJHtQS0dNQVNLfSA9IHllcyBdICYmIFRBR1NJVEVNUz0ke1RBR1NJ VEVNU30ke1BLR1ZFUn0nICciLSInICcKCWRvbmUKCVRBR1NJVEVNUz0iW2xhdGVzdF0gTi9BICIk e1RBR1NJVEVNU30KCWRpYWxvZ19pbml0ICIkezF9IFZlcnNpb24iCglkaWFsb2dfZXh0cmFvcHRz ICItLW5vLWNhbmNlbCIKCWRpYWxvZ19tZW51ICJTZWxlY3QgYSB2ZXJzaW9uIGZvciAkMSIgMTYg NDUgMTAKCWRpYWxvZ190YWdfaXRlbSAiJHtUQUdTSVRFTVN9IgoJZGlhbG9nX3NhdmVfb3V0cHV0 ICJBTlMiCglkaWFsb2dfbGF1bmNoCgoJbG9jYWwgQU5TPWBjYXQgJHtHRU5DUk9TU19UTVBESVJ9 L0FOU2AKCWNhc2UgJHsxfSBpbgoJCSR7QlBLR30pIEJWRVI9JHtBTlMjKi19OzsKCQkke0dQS0d9 KSBHVkVSPSR7QU5TIyotfTs7CgkJJHtLUEtHfSkgS1ZFUj0ke0FOUyNsaW51eC1oZWFkZXJzLX07 OwoJCSR7TFBLR30pIExWRVI9JHtBTlMjKi19OzsKCWVzYWMKfQoKIyByZXR1cm4gdmFsdWU6ICR7 QlZFUn0sICR7R1ZFUn0sICR7S1ZFUn0sICR7TFZFUn0KZGV0ZXJtaW5lX3ZlcnNpb24oKSB7Cgls b2NhbCBPS1ZFUj1ubwoJbG9jYWwgQ0hHVkVSPW5vCglsb2NhbCBERlRJVEVNPSR7QlBLR30KCUJW RVI9IltsYXRlc3RdIgoJR1ZFUj0iW2xhdGVzdF0iCglLVkVSPSJbbGF0ZXN0XSIKCUxWRVI9Ilts YXRlc3RdIgoJd2hpbGUgWyAke09LVkVSfSA9IG5vIF0gOyBkbwoJCWRpYWxvZ19pbml0ICJUb29s Y2hhaW4gUGFja2FnZSBWZXJzaW9uIgoJCWRpYWxvZ19leHRyYW9wdHMgIi0tb2stbGFiZWwgXCJF bnRlclwiIgoJCWRpYWxvZ19leHRyYW9wdHMgIi0tY2FuY2VsLWxhYmVsIFwiT0tcIiIKCQlkaWFs b2dfZXh0cmFvcHRzICItLWRlZmF1bHQtaXRlbSAke0RGVElURU19IgoJCVsgJHtDSEdWRVJ9ID0g Im5vIiBdICYmIGRpYWxvZ19leHRyYW9wdHMgIi0tZGVmYXVsdG5vIgoJCWRpYWxvZ19tZW51ICJT ZWxlY3QgdGhlIHBhY2thZ2Ugb2Ygd2hpY2ggdGhlIHZlcnNpb24gaXMgdG8gYmUgY2hhbmdlZC4g UHJlc3MgPCBPSyAgPiB0byBsZWF2ZSBpZiBkb25lLiIgMTIgNTUgNAoJCWRpYWxvZ190YWdfaXRl bSAiJHtCUEtHfSBcIiR7QlZFUn1cIiIKCQlkaWFsb2dfdGFnX2l0ZW0gIiR7R1BLR30gXCIke0dW RVJ9XCIiCgkJZGlhbG9nX3RhZ19pdGVtICIke0tQS0d9IFwiJHtLVkVSfVwiIgoJCWRpYWxvZ190 YWdfaXRlbSAiJHtMUEtHfSBcIiR7TFZFUn1cIiIKCQlkaWFsb2dfc2F2ZV9vdXRwdXQgIkFOUyIK CQlkaWFsb2dfbGF1bmNoCgoJCWNhc2UgYGNhdCAke0dFTkNST1NTX1RNUERJUn0vQU5TYCBpbgoJ CQkke0JQS0d9KSBDSEdWRVI9eWVzO0RGVElURU09JHtCUEtHfTtwYWNrYWdlX3ZlcnNpb24gJHtC UEtHfTs7CgkJCSR7R1BLR30pIENIR1ZFUj15ZXM7REZUSVRFTT0ke0dQS0d9O3BhY2thZ2VfdmVy c2lvbiAke0dQS0d9OzsKCQkJJHtLUEtHfSkgQ0hHVkVSPXllcztERlRJVEVNPSR7S1BLR307cGFj a2FnZV92ZXJzaW9uICR7S1BLR307OwoJCQkke0xQS0d9KSBDSEdWRVI9eWVzO0RGVElURU09JHtM UEtHfTtwYWNrYWdlX3ZlcnNpb24gJHtMUEtHfTs7CgkJCSopIE9LVkVSPXllczs7CgkJZXNhYwoJ ZG9uZQp9CgojIHJldHVybiB2YWx1ZTogJHtVT1BUU30sICR7RVhfR0NDfSwgJHtFWF9HREJ9CnBh cnNlX21pc2Nfb3B0cygpIHsKIwlVT1BUUz0iIgojCUVYX0dDQz0ibm8iCiMJRVhfR0RCPSJubyIK CXdoaWxlIFsgJCMgLWd0IDAgXSA7IGRvCgkJY2FzZSAkMSBpbgoJCS1iKSBVT1BUUz0iJHtVT1BU U30kMSAiOzsKCQktZCkgVU9QVFM9IiR7VU9QVFN9JDEgIjs7CgkJLXApIFVPUFRTPSIke1VPUFRT fSQxICI7OwoJCS12KSBVT1BUUz0iJHtVT1BUU30kMSAiOzsKCQktcSkgVU9QVFM9IiR7VU9QVFN9 JDEgIjs7CgkJZXh0cmEtZ2NjKSBFWF9HQ0M9InllcyI7OwoJCWNyb3NzLWdkYikgRVhfR0RCPSJ5 ZXMiOzsKCQllc2FjCgkJc2hpZnQKCWRvbmUKfQoKIyByZXR1cm4gdmFsdWU6ICR7U1RBR0V9LCAk e1VPUFRTfSwgJHtFWF9HQ0N9LCAke0VYX0dEQn0KZGV0ZXJtaW5lX2V4dHJhb3B0cygpIHsKCVNU QUdFPSItczQiCglVT1BUUz0iIiAjIE9wdGlvbnMgcGFzc2VkIHRvIGVtZXJnZSBieSBjcm9zc2Rl dgoJRVhfR0NDPSJubyIKCUVYX0dEQj0ibm8iCgoJZGlhbG9nX2luaXQgIkJ1aWxkIFN0YWdlIgoJ ZGlhbG9nX2V4dHJhb3B0cyAiLS1uby1jYW5jZWwiCglkaWFsb2dfZXh0cmFvcHRzICItLWRlZmF1 bHQtaXRlbSAtczQiCglkaWFsb2dfbWVudSAiU2VsZWN0IGEgYnVpbGQgc3RhZ2UiIDEyIDU1IDUK CWRpYWxvZ190YWdfaXRlbSAiLXMwIFwiQnVpbGQganVzdCBiaW51dGlsc1wiIgoJZGlhbG9nX3Rh Z19pdGVtICItczEgXCJBbHNvIGJ1aWxkIGEgQyBjb21waWxlciAobm8gbGliYy9DKyspXCIiCglk aWFsb2dfdGFnX2l0ZW0gIi1zMiBcIkFsc28gYnVpbGQga2VybmVsIGhlYWRlcnNcIiIKCWRpYWxv Z190YWdfaXRlbSAiLXMzIFwiQWxzbyBidWlsZCB0aGUgQyBsaWJyYXJ5IChubyBDKyspXCIiCglk aWFsb2dfdGFnX2l0ZW0gIi1zNCBcIkFsc28gYnVpbGQgYSBDKysgY29tcGlsZXIgW2RlZmF1bHRd XCIiCglkaWFsb2dfc2F2ZV9vdXRwdXQgIlNUQUdFIgoJZGlhbG9nX2xhdW5jaAoJU1RBR0U9YGNh dCAke0dFTkNST1NTX1RNUERJUn0vU1RBR0VgCgoJZGlhbG9nX2luaXQgIk1pc2MgT3B0aW9ucyIK CWRpYWxvZ19leHRyYW9wdHMgIi0tbm8tY2FuY2VsIgoJZGlhbG9nX2V4dHJhb3B0cyAiLS1zZXBh cmF0ZS1vdXRwdXQiCglkaWFsb2dfY2hlY2tsaXN0ICJQcmVzcyA8c3BhY2U+IHRvIGNob29zZSBv cHRpb25zIFtNdWx0aXBsZSBDaG9pY2VzXSIgMTQgNzAgNwoJZGlhbG9nX3RhZ19pdGVtICItYiBc IltwYXNzZWQgdG8gZW1lcmdlXSBidWlsZCBiaW5hcnkgcGFja2FnZXNcIiBvZmYiCglkaWFsb2df dGFnX2l0ZW0gIi1kIFwiW3Bhc3NlZCB0byBlbWVyZ2VdIGRlYnVnIG1vZGVcIiBvZmYiCglkaWFs b2dfdGFnX2l0ZW0gIi1wIFwiW3Bhc3NlZCB0byBlbWVyZ2VdIHByZXRlbmQgdG8gaW5zdGFsbFwi IG9uIgoJZGlhbG9nX3RhZ19pdGVtICItdiBcIltwYXNzZWQgdG8gZW1lcmdlXSB2ZXJib3NlIG1v ZGVcIiBvZmYiCglkaWFsb2dfdGFnX2l0ZW0gIi1xIFwiW3Bhc3NlZCB0byBlbWVyZ2VdIHF1aWV0 IGRpc3BsYXlzXCIgb2ZmIgoJZGlhbG9nX3RhZ19pdGVtICJleHRyYS1nY2MgXCJCdWlsZCBleHRy YSBnY2MgdGFyZ2V0cyAoZ2NqL2FkYS9ldGMuLi4pXCIgb2ZmIgoJZGlhbG9nX3RhZ19pdGVtICJj cm9zcy1nZGIgXCJCdWlsZCBhIGNyb3NzIGdkYlwiIG9mZiIKCWRpYWxvZ19zYXZlX291dHB1dCAi Q1JPU1NERVZfRVhUUkFfT1BUUyIKCWRpYWxvZ19sYXVuY2gKCXBhcnNlX21pc2Nfb3B0cyBgY2F0 ICR7R0VOQ1JPU1NfVE1QRElSfS9DUk9TU0RFVl9FWFRSQV9PUFRTYAp9CgojIHJldHVybiB2YWx1 ZTogJHtUT09MQ0hBSU59CnNlbGVjdF90b29sY2hhaW4oKSB7CgkjIFNlYXJjaCBmb3IgZXhpc3Rp bmcgdG9vbGNoYWlucwoJbG9jYWwgVE9PTENIQUlOUz0KCVRPT0xDSEFJTj0KCWxvY2FsIFBPUlRE SVJfT1ZFUkxBWT1gcG9ydGFnZXEgZW52dmFyIFBPUlRESVJfT1ZFUkxBWWAKCWZvciB0IGluICR7 UE9SVERJUl9PVkVSTEFZfS9jcm9zcy0qIDsgZG8KCQlbICR7dH0gPSAiJHtQT1JURElSX09WRVJM QVl9L2Nyb3NzLSoiIF0gJiYgYnJlYWsKCQlUT09MQ0hBSU5TPSR7VE9PTENIQUlOU30ke3QjIy8q L2Nyb3NzLX0iIFwiXCIgIgoJZG9uZQoJaWYgWyAteiAke1RPT0xDSEFJTlN9IF0gOyB0aGVuCgkJ ZGlhbG9nX2luaXQgIk5vIFRvb2xjaGFpbiIKCQlkaWFsb2dfbXNnYm94ICJcbk5vIHRvb2xjaGFp biBmb3VuZCFcbiIgNyAyNQoJCWRpYWxvZ19sYXVuY2gKCWVsc2UKCQlkaWFsb2dfaW5pdCAiU2Vs ZWN0IFRvb2xjaGFpbiIKCQlkaWFsb2dfbWVudSAiUGxlYXNlIHNlbGVjdCBhIHRvb2xjaGFpbiIg MTIgNDUgNQoJCWRpYWxvZ190YWdfaXRlbSAiJHtUT09MQ0hBSU5TfSIKCQlkaWFsb2dfc2F2ZV9v dXRwdXQgIlRPT0xDSEFJTiIKCQlkaWFsb2dfbGF1bmNoCgkJIyBJZiB1c2VycyBzZWxlY3QgPENB TkNFTD4sIFRPT0xDSEFJTiB3aWxsIGJlIGVtcHR5IHN0cmluZy4KCQlUT09MQ0hBSU49YGNhdCAk e0dFTkNST1NTX1RNUERJUn0vVE9PTENIQUlOYAoJZmkKfQoKIyBVc2FnZTogJHsxfSA9IHllcyB8 fCBubyBbd2hldGhlciB0byBzZWxlY3RfdG9vbGNoYWluIGZpcnN0XQpjb25maWdfdG9vbGNoYWlu KCkgewoJaWYgWyAkezF9ID0gInllcyIgXSA7IHRoZW4KCQkjIFNlbGVjdCBhIHRvb2xjaGFpbiB0 byBjb25maWd1cmUuCgkJc2VsZWN0X3Rvb2xjaGFpbgoJCSMgIk5vIHRvb2xjaGFpbiBzZWxlY3Qi IHx8ICJObyBleGlzdGluZyB0b29sY2hhaW4iCgkJWyAteiAke1RPT0xDSEFJTn0gXSAmJiByZXR1 cm4KCWZpCgoJQ1RBUkdFVD0ke1RPT0xDSEFJTn0KCVNZU1JPT1Q9L3Vzci8ke0NUQVJHRVR9CglS T09UPSR7U1lTUk9PVH0vZ2Vucm9vdC9yb290ZnMKCVBPUlRBR0VfQ09ORklHUk9PVD0ke1NZU1JP T1R9CgoJZGV0ZXJtaW5lX3RhcmNoICR7Q1RBUkdFVCUlLSp9CglbIC1kICR7U1lTUk9PVH0vZ2Vu cm9vdCBdIHx8IG1rZGlyIC1wICR7U1lTUk9PVH0vZ2Vucm9vdAoJWyAtZCAke1JPT1R9IF0gfHwg bWtkaXIgLXAgJHtST09UfQoKCWlmIFsgLWYgJHtTWVNST09UfS9nZW5yb290L0dFTlJPT1RfQ09O RklHX09LIF0gOyB0aGVuCgkJZGlhbG9nX2luaXQgIkFscmVhZHkgQ29uZmlndXJlZCIKCQlkaWFs b2dfZXh0cmFvcHRzICItLWRlZmF1bHRubyIKCQlkaWFsb2dfeWVzbm8gIlxuVGhlIHRvb2xjaGFp bjogJHtUT09MQ0hBSU59XG5oYXMgYmVlbiBjb25maWd1cmVkLlxuXG5EbyB5b3Ugd2FudCB0byBw cm9jZWVkIGFueXdheT8iIDEwIDUwCgkJZGlhbG9nX2xhdW5jaAoJCWNhc2UgJD8gaW4KCQkJMSkg cmV0dXJuOzsKCQkJMjU1KSByZXR1cm47OwoJCWVzYWMKCQlybSAtcmYgJHtTWVNST09UfS9nZW5y b290L0dFTlJPT1RfQ09ORklHX09LCglmaQoKCSMgUHJlcGFyZSB0aGUgY29udGVudCBvZiAvdXNy LyR7Q1RBUkdFVH0vZXRjL21ha2UuY29uZiBpbiAvdXNyLyR7Q1RBUkdFVH0vZ2Vucm9vdC9tYWtl LmNvbmYKCWxvY2FsIE1BS0VDT05GPSR7U1lTUk9PVH0vZ2Vucm9vdC9tYWtlLmNvbmYKCWVjaG8g IkFDQ0VQVF9LRVlXT1JEUz1cIiR7VEFSQ0h9XCIiICAgICAgICAgID4gJHtNQUtFQ09ORn0KCWVj aG8gIkFSQ0g9XCIke1RBUkNIfVwiIiAgICAgICAgICAgICAgICAgICAgPj4gJHtNQUtFQ09ORn0K CWVjaG8gIkNIT1NUPVwiJHtDVEFSR0VUfVwiIiAgICAgICAgICAgICAgICAgPj4gJHtNQUtFQ09O Rn0KCWVjaG8gIkNCVUlMRD1cImBwb3J0YWdlcSBlbnZ2YXIgQ0hPU1RgXCIiICAgPj4gJHtNQUtF Q09ORn0KCWVjaG8gIkNUQVJHRVQ9XCIke0NUQVJHRVR9XCIiICAgICAgICAgICAgICAgPj4gJHtN QUtFQ09ORn0KCWVjaG8gIkNGTEFHUz1cIi1PcyAtcGlwZVwiIiAgICAgICAgICAgICAgICAgPj4g JHtNQUtFQ09ORn0KCWVjaG8gIkNYWEZMQUdTPVwiXCR7Q0ZMQUdTfVwiIiAgICAgICAgICAgICAg Pj4gJHtNQUtFQ09ORn0KCWVjaG8gIklOUFVUX0RFVklDRVM9XCJrZXlib2FyZFwiIiAgICAgICAg ICAgPj4gJHtNQUtFQ09ORn0KCWVjaG8gIk1BS0VPUFRTPVwiLWoyXCIiICAgICAgICAgICAgICAg ICAgICAgPj4gJHtNQUtFQ09ORn0KCWVjaG8gIlVTRT1cIiR7VEFSQ0h9IHN5bWxpbmtcIiIgICAg ICAgICAgICAgPj4gJHtNQUtFQ09ORn0KCW1pcnJvcnNlbGVjdCAtaSAtbyA+PiAke01BS0VDT05G fQoJIyBSZW1vdmUgYmxhbmsgbGluZShzKQoJc2VkIC1pIC1lICcvXiQvZCcgJHtNQUtFQ09ORn0K CgkjIEFzayB1c2VycyBpZiBkZWZhdWx0IG1ha2UuY29uZiBpcyBPSy4KCWxvY2FsIE1BS0VPSz0i bm8iCgl3aGlsZSBbICR7TUFLRU9LfSA9ICJubyIgXSA7IGRvCgkJIyBTaG93ICR7U1lTUk9PVH0v Z2Vucm9vdC9tYWtlLmNvbmYKCQlkaWFsb2dfaW5pdCAibWFrZS5jb25mIGZvciAke0NUQVJHRVR9 IgoJCWRpYWxvZ190ZXh0Ym94ICR7TUFLRUNPTkZ9IDE1IDUwCgkJZGlhbG9nX2xhdW5jaAoJCSMg QXNrIHVzZXJzIGlmIHRoZXkgd2FudCB0byBjaGFuZ2UgdmFyaWFibGVzIGluIG1ha2UuY29tCgkJ ZGlhbG9nX2luaXQgIm1ha2UuY29uZiBPSz8iCgkJZGlhbG9nX2V4dHJhb3B0cyAiLS1kZWZhdWx0 bm8iCgkJZGlhbG9nX3llc25vICJcbkRvIHlvdSB3YW50IHRvIGNoYW5nZSB0aGUgY29udGVudCBv ZiBtYWtlLmNvbmY/IiA3IDUxCgkJZGlhbG9nX2xhdW5jaAoJCWNhc2UgJD8gaW4KCQkJMCkKCQkJ IyBQYXJzZSB2YXJpYWJsZXMgaW4gbWFrZS5jb25mCgkJCWNwICR7TUFLRUNPTkZ9ICR7R0VOQ1JP U1NfVE1QRElSfS9NQUtFQ09ORgoJCQlzZWQgLWkgLW4gLWUgJ3MvPSIuKiIvICIiL3AnICR7R0VO Q1JPU1NfVE1QRElSfS9NQUtFQ09ORgoJCQlsb2NhbCBBTExNQUtWQVI9YGNhdCAke0dFTkNST1NT X1RNUERJUn0vTUFLRUNPTkZgCgkJCSMgU2VsZWN0IGEgdmFyaWFibGUgdG8gY2hhbmdlCgkJCWRp YWxvZ19pbml0ICJtYWtlLmNvbmYgVmFyaWFibGVzIgoJCQlkaWFsb2dfZXh0cmFvcHRzICItLW5v LWNhbmNlbCIKCQkJZGlhbG9nX21lbnUgIlBsZWFzZSBzZWxlY3QgYSB2YXJpYWJsZSIgMTQgMzUg NwoJCQlkaWFsb2dfdGFnX2l0ZW0gIiR7QUxMTUFLVkFSfSIKCQkJZGlhbG9nX3NhdmVfb3V0cHV0 ICJNQUtWQVIiCgkJCWRpYWxvZ19sYXVuY2gKCQkJbG9jYWwgQ0hHVkFSPWBjYXQgJHtHRU5DUk9T U19UTVBESVJ9L01BS1ZBUmAKCQkJbG9jYWwgQ0hHVkFSVkFMPWBncmVwICR7Q0hHVkFSfT0gJHtN QUtFQ09ORn1gCgkJCUNIR1ZBUlZBTD0ke0NIR1ZBUlZBTCMqPX0KCQkJQ0hHVkFSVkFMPSR7Q0hH VkFSVkFMLy9cJC9cXFwkfQoJCQkjIEFzayB1c2VycyB0byBpbnB1dCBuZXcgdmFsdWUgZm9yIHRo ZSB2YXJpYWJsZQoJCQlkaWFsb2dfaW5pdCAiQ2hhbmdlICR7Q0hHVkFSfSIKCQkJZGlhbG9nX2lu cHV0Ym94ICJpbnB1dCBjb250ZW50IGZvciAke0NIR1ZBUn0iIDggNjAgIiR7Q0hHVkFSVkFMfSIK CQkJZGlhbG9nX3NhdmVfb3V0cHV0ICJWQVJWQUwiCgkJCWRpYWxvZ19sYXVuY2gKCQkJbG9jYWwg Q0hHVkFSVkFMPWBjYXQgJHtHRU5DUk9TU19UTVBESVJ9L1ZBUlZBTGAKCQkJIyBFc2NhcGUgLwoJ CQlDSEdWQVJWQUw9JHtDSEdWQVJWQUwvL1wvL1xcXC99CgoJCQkjIENyZWF0ZSBhIG5ldyBtYWtl LmNvbmYKCQkJc2VkIC1pIC1lICJzLyR7Q0hHVkFSfT1cIi4qXCIvJHtDSEdWQVJ9PVwiJHtDSEdW QVJWQUx9XCIvIiAke01BS0VDT05GfQoJCQk7OwoJCQkxKSBNQUtFT0s9InllcyI7OwoJCQkyNTUp IDs7CgkJZXNhYwoJZG9uZQoJIyBjb3B5IC91c3IvJHtDVEFSR0VUfS9nZW5yb290L21ha2UuY29u ZiB0byAvdXNyLyR7Q1RBUkdFVH0vZXRjL21ha2UuY29uZgoJWyAtZCAke1NZU1JPT1R9L2V0YyBd IHx8IG1rZGlyIC1wICR7U1lTUk9PVH0vZXRjCgljcCAtZiAke01BS0VDT05GfSAke1NZU1JPT1R9 L2V0Yy9tYWtlLmNvbmYKCgkjIENyZWF0aW5nICR7U1lTUk9PVH0vZXRjL21ha2UuZ2xvYmFscwoJ Y3AgLWYgL2V0Yy9tYWtlLmdsb2JhbHMgIiR7U1lTUk9PVH0vZXRjIgoJIyBDcmVhdGUgdGhlIGRp cmVjdG9yeSBmb3IgbG9jYWwgcHJvZmlsZSBjb25maWd1cmF0aW9uIGZpbGVzCglta2RpciAtcCAi JHtTWVNST09UfS9ldGMvcG9ydGFnZS9wcm9maWxlIgoJIyBTZXR0aW5nIHRoZSBzeXNyb290IFBv cnRhZ2UgcHJvZmlsZQoJIyBGSVhNRTogdWdseSBpbXBsZW1lbnRhdGlvbgoJZGlhbG9nX2luaXQg IlNlbGVjdCBQcm9maWxlIgoJZGlhbG9nX2V4dHJhb3B0cyAiLS1uby1jYW5jZWwgLS1kZWZhdWx0 LWl0ZW0gdWNsaWJjL3g4NiIKCWRpYWxvZ19tZW51ICJQbGVhc2Ugc2VsZWN0IGEgcHJvZmlsZSIg MTUgNTUgOAoJZGlhbG9nX3RhZ19pdGVtICJ1Y2xpYmMvYW1kNjQgXCJcIiIKCWRpYWxvZ190YWdf aXRlbSAidWNsaWJjL2FybSBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJ1Y2xpYmMvbWlwcyBcIlwi IgoJZGlhbG9nX3RhZ19pdGVtICJ1Y2xpYmMvcHBjIFwiXCIiCglkaWFsb2dfdGFnX2l0ZW0gInVj bGliYy9zaCBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJ1Y2xpYmMveDg2IFwiXCIiCglkaWFsb2df dGFnX2l0ZW0gImRlZmF1bHQtbGludXgveDg2LzIwMDYuMSBcIlwiIgoJZGlhbG9nX3RhZ19pdGVt ICJkZWZhdWx0LWxpbnV4L3g4Ni9uby1ucHRsIFwiXCIiCglkaWFsb2dfdGFnX2l0ZW0gImRlZmF1 bHQtbGludXgveDg2L25vLW5wdGwvMi40IFwiXCIiCglkaWFsb2dfdGFnX2l0ZW0gImRlZmF1bHQt bGludXgveDg2LzIwMDYuMS9kZXNrdG9wIFwiXCIiCglkaWFsb2dfdGFnX2l0ZW0gImhhcmRlbmVk L3g4NiBcIlwiIgoJZGlhbG9nX3RhZ19pdGVtICJoYXJkZW5lZC94ODYvMi42IFwiXCIiCglkaWFs b2dfdGFnX2l0ZW0gImRlZmF1bHQtbGludXgvcHBjL3BwYzMyLzIwMDYuMSBcIlwiIgoJZGlhbG9n X3RhZ19pdGVtICJoYXJkZW5lZC9wcGMgXCJcIiIKCSNkaWFsb2dfdGFnX2l0ZW0gIiBcIlwiIgoJ ZGlhbG9nX3NhdmVfb3V0cHV0IFBST0ZJTEUKCWRpYWxvZ19sYXVuY2gKCWxvY2FsIFBST0ZJTEU9 YHBvcnRhZ2VxIGVudnZhciBQT1JURElSYC9wcm9maWxlcy9gY2F0ICR7R0VOQ1JPU1NfVE1QRElS fS9QUk9GSUxFYAoJbG4gLXNuZiAke1BST0ZJTEV9ICIke1NZU1JPT1R9L2V0Yy9tYWtlLnByb2Zp bGUiCgoJIyBDcmVhdGUgeG1lcmdlOiBBIHNpbXBsZSBjcm9zcyBlbWVyZ2Ugd3JhcHBlcgoJbG9j YWwgWE1FUkdFRklMRT0ke1NZU1JPT1R9L2dlbnJvb3QveG1lcmdlXyR7Q1RBUkdFVH0KCWVjaG8g IiMhL2Jpbi9iYXNoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAke1hNRVJH RUZJTEV9CgllY2hvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPj4gJHtYTUVSR0VGSUxFfQoJZWNobyAiU1lTUk9PVD1cIiR7U1lTUk9PVH1cIiIgICAgICAg ICAgICAgICAgICAgICAgID4+ICR7WE1FUkdFRklMRX0KCWVjaG8gIlBPUlRBR0VfQ09ORklHUk9P VD1cIiR7UE9SVEFHRV9DT05GSUdST09UfVwiIiA+PiAke1hNRVJHRUZJTEV9CgllY2hvICJST09U PVwiJHtST09UfVwiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJHtYTUVSR0VGSUxF fQoJZWNobyAiaWYgWyBcIlwkezF9XCIgPT0gXCItLXJvb3RcIiBdIDsgdGhlbiIgICAgICAgID4+ ICR7WE1FUkdFRklMRX0KCWVjaG8gIglST09UPVwiXCR7Mn1cIiIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID4+ICR7WE1FUkdFRklMRX0KCWVjaG8gIglzaGlmdCAyIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID4+ICR7WE1FUkdFRklMRX0KCWVjaG8gImZpIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAke1hNRVJHRUZJTEV9CgllY2hv ICJleHBvcnQgUE9SVEFHRV9DT05GSUdST09UIFJPT1QgU1lTUk9PVCIgICAgICAgPj4gJHtYTUVS R0VGSUxFfQoJZWNobyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID4+ICR7WE1FUkdFRklMRX0KCWVjaG8gImVtZXJnZSBcJCoiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA+PiAke1hNRVJHRUZJTEV9CgljaG1vZCAreCAke1hNRVJHRUZJTEV9 CgoJIyBDcmVhdGUgeGttYWtlOiBBIGNyb3NzIGtlcm5lbCBtYWtlIHdyYXBwZXIKCWRldGVybWlu ZV9rYXJjaCAke1RBUkNIfQoJbG9jYWwgWEtNQUtFRklMRT0ke1NZU1JPT1R9L2dlbnJvb3QveGtt YWtlXyR7Q1RBUkdFVH0KCWVjaG8gIiMhL2Jpbi9iYXNoIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPiAke1hLTUFLRUZJTEV9CgllY2hvICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPj4gJHtYS01BS0VGSUxFfQoJZWNobyAiU1lTUk9PVD1c IiR7U1lTUk9PVH1cIiIgICAgICAgICAgICAgICAgICAgICAgID4+ICR7WEtNQUtFRklMRX0KCWVj aG8gIlBPUlRBR0VfQ09ORklHUk9PVD1cIiR7UE9SVEFHRV9DT05GSUdST09UfVwiIiA+PiAke1hL TUFLRUZJTEV9CgllY2hvICJST09UPVwiJHtST09UfVwiIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPj4gJHtYS01BS0VGSUxFfQoJZWNobyAiaWYgWyBcIlwkezF9XCIgPT0gXCItLXJvb3Rc IiBdIDsgdGhlbiIgICAgICAgID4+ICR7WEtNQUtFRklMRX0KCWVjaG8gIglST09UPVwiXCR7Mn1c IiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICR7WEtNQUtFRklMRX0KCWVjaG8gIglz aGlmdCAyIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICR7WEtNQUtFRklM RX0KCWVjaG8gImZpIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ PiAke1hLTUFLRUZJTEV9CgllY2hvICJleHBvcnQgUE9SVEFHRV9DT05GSUdST09UIFNZU1JPT1Qi ICAgICAgICAgICAgPj4gJHtYS01BS0VGSUxFfQoJZWNobyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID4+ICR7WEtNQUtFRklMRX0KCWVjaG8gIm1ha2UgQVJD SD0ke0tBUkNIfSBDUk9TU19DT01QSUxFPSR7Q1RBUkdFVH0tIElOU1RBTExfTU9EX1BBVEg9XCR7 Uk9PVH0gXCQqIiA+PiAke1hLTUFLRUZJTEV9CgljaG1vZCAreCAke1hLTUFLRUZJTEV9CgoJdG91 Y2ggJHtTWVNST09UfS9nZW5yb290L0dFTlJPT1RfQ09ORklHX09LCn0KCmJ1aWxkX2FuZF9jb25m aWdfbm93KCkgewoJIyBQcmVwYXJlIGFyZ3VtZW50cyBmb3IgY3Jvc3NkZXYKCWxvY2FsIENST1NT REVWT1BUUz0ke1VPUFRTfQoJWyAke0VYX0dDQ30gPSAieWVzIiBdICYmIENST1NTREVWT1BUUz0k e0NST1NTREVWT1BUU30iLS1leC1nY2MgIgoJWyAke0VYX0dEQn0gPSAieWVzIiBdICYmIENST1NT REVWT1BUUz0ke0NST1NTREVWT1BUU30iLS1leC1nZGIgIgoJWyAke0JWRVJ9ICE9ICJbbGF0ZXN0 XSIgXSAmJiBDUk9TU0RFVk9QVFM9JHtDUk9TU0RFVk9QVFN9Ii0tYiAke0JWRVJ9ICIKCVsgJHtH VkVSfSAhPSAiW2xhdGVzdF0iIF0gJiYgQ1JPU1NERVZPUFRTPSR7Q1JPU1NERVZPUFRTfSItLWcg JHtHVkVSfSAiCglbICR7S1ZFUn0gIT0gIltsYXRlc3RdIiBdICYmIENST1NTREVWT1BUUz0ke0NS T1NTREVWT1BUU30iLS1rICR7S1ZFUn0gIgoJWyAke0xWRVJ9ICE9ICJbbGF0ZXN0XSIgXSAmJiBD Uk9TU0RFVk9QVFM9JHtDUk9TU0RFVk9QVFN9Ii0tbCAke0xWRVJ9ICIKCUNST1NTREVWT1BUUz0k e0NST1NTREVWT1BUU30iJHtTVEFHRX0gIgoJQ1JPU1NERVZPUFRTPSR7Q1JPU1NERVZPUFRTfSIt dCAke0NUQVJHRVR9IgoJIyBBc2sgdXNlcnMgdG8gY29uZmlybSBhZ2FpbgoJZGlhbG9nX2luaXQg IkZpbmFsIENvbmZpcm1hdGlvbiIKCWRpYWxvZ19leHRyYW9wdHMgIi0tZGVmYXVsdG5vIgoJZGlh bG9nX3llc25vIAkiXG5UYXJnZXQgQXJjaGl0ZWN0dXJlOiAke1RBUkNIfVxuSG9zdCAgIEFyY2hp dGVjdHVyZTogJHtIQVJDSH1cbkNUQVJHRVQ6ICR7Q1RBUkdFVH1cbmJpbnV0aWxzOiAke0JWRVJ9 XG5nY2M6ICR7R1ZFUn1cbmxpbnV4LWhlYWRlcnM6ICR7S1ZFUn1cbiR7TFBLR306ICR7TFZFUn1c blVPUFRTOiAke1VPUFRTfVxuRVhfR0NDOiAke0VYX0dDQ31cbkVYX0dEQjogJHtFWF9HREJ9IiAx NiA0NQoJZGlhbG9nX2xhdW5jaAoKCWlmIFsgJD8gPSAiMCIgXSA7IHRoZW4gIyBBbnN3ZXIgaXMg eWVzCgkJIyBTdGFydCB0byBidWlsZAoJCWNsZWFyCgkJY3Jvc3NkZXYgJHtDUk9TU0RFVk9QVFN9 CgoJCSMgQ2hlY2sgaWYgdGhlIGJ1aWxkIGlzIHN1Y2Nlc3NmdWwKCQlpZiBbICQ/IC1uZSAwIF0g OyB0aGVuCgkJCSMgQnVpbGQgZmFpbHVyZSwgcmVtb3ZlIGJ1aWx0IHBhY2thZ2VzCgkJCWVjaG87 IGVjaG8gIkJ1aWxkIGZhaWx1cmUhIjsgZWNobyAiUHJlc3MgPEVudGVyPiB0byBjb250aW51ZSI7 IHJlYWQKCQkJY3Jvc3NkZXYgLUMgJHtDVEFSR0VUfQoJCQlsb2NhbCBQT1JUX0xPR0RJUj1gcG9y dGFnZXEgZW52dmFyIFBPUlRfTE9HRElSYAoJCQlQT1JUX0xPR0RJUj0ke1BPUlRfTE9HRElSOi0v dmFyL2xvZy9wb3J0YWdlfQoJCQlkaWFsb2dfaW5pdCAiQnVpbGQgRmFpbHVyZSIKCQkJZGlhbG9n X21zZ2JveCAiXG5QbGVhc2UgY2hlY2sgbG9nIGZpbGVzIGluIHRoZSBmb2xsb3dpbmcgZGlyIGZv ciBtb3JlIGRldGFpbHM6XG4ke1BPUlRfTE9HRElSfS9jcm9zcy0ke0NUQVJHRVR9LSoiIDggNzAK CQkJZGlhbG9nX2xhdW5jaAoJCWVsc2UKCQkJIyBUaGUgYnVpbGQgaXMgb2suCgkJCWRpYWxvZ19p bml0ICJCdWlsZCBTdWNjZXNzIgoJCQlkaWFsb2dfbXNnYm94ICJcblRvb2xjaGFpbjogJHtDVEFS R0VUfVxuaGFzIGJlZW4gYnVpbHQgc3VjY2Vzc2Z1bGx5IVxuIiA4IDUwCgkJCWRpYWxvZ19sYXVu Y2gKCQkJIyBDb25maWcgdG9vbGNoaWFuIG5vdyEKCQkJZGlhbG9nX2luaXQgIkNvbmZpZyBUb29s Y2hhaW4iCgkJCWRpYWxvZ19tc2dib3ggIlxuQ29uZmlndXJpbmcgJHtDVEFSR0VUfSIgNyA0OAoJ CQlkaWFsb2dfbGF1bmNoCgkJCVRPT0xDSEFJTj0ke0NUQVJHRVR9CgkJCWNvbmZpZ190b29sY2hh aW4gIm5vIgoJCWZpCglmaQp9CgpidWlsZF90b29sY2hhaW4oKSB7CglkZXRlcm1pbmVfY3Rhcmdl dCAjIHJldHVlbiB2YWx1ZTogJHtDVEFSR0VUfSwgJHtMQ0FUfSwgJHtMUEtHfSwgJHtUQVJDSH0K CWRldGVybWluZV92ZXJzaW9uICMgcmV0dXJuIHZhbHVlOiAke0JWRVJ9LCAke0dWRVJ9LCAke0tW RVJ9LCAke0xWRVJ9CglkZXRlcm1pbmVfZXh0cmFvcHRzICMgcmV0dXJuIHZhbHVlOiAke1NUQUdF fSwgJHtVT1BUU30sICR7RVhfR0NDfSwgJHtFWF9HREJ9CglidWlsZF9hbmRfY29uZmlnX25vdwp9 CgpyZW1vdmVfdG9vbGNoYWluKCkgewoJIyBTZWxlY3QgYSB0b29sY2hhaW4gdG8gY29uZmlndXJl LgoJc2VsZWN0X3Rvb2xjaGFpbgoJIyAiTm8gdG9vbGNoYWluIHNlbGVjdCIgfHwgIk5vIGV4aXN0 aW5nIHRvb2xjaGFpbiIKCVsgLXogJHtUT09MQ0hBSU59IF0gJiYgcmV0dXJuCgoJQ1RBUkdFVD0k e1RPT0xDSEFJTn0KCVNZU1JPT1Q9L3Vzci8ke0NUQVJHRVR9CglST09UPSR7U1lTUk9PVH0vZ2Vu cm9vdC9yb290ZnMKCVBPUlRBR0VfQ09ORklHUk9PVD0ke1NZU1JPT1R9CglkaWFsb2dfaW5pdCAi RmluYWwgQ29uZmlybWF0aW9uIgoJZGlhbG9nX2V4dHJhb3B0cyAiLS1kZWZhdWx0bm8iCglkaWFs b2dfeWVzbm8gIlRoZSBmb2xsb3dpbmcgdG9vbGNoYWluIGlzIHRvIGJlIHJlbW92ZWQ6XG5cbiR7 Q1RBUkdFVH1cblxuQXJlIHlvdSBzdXJlIHRvIGRvIHRoaXM/IiA5IDQ1CglkaWFsb2dfbGF1bmNo CgljYXNlICQ/IGluCgkJMCkKCQkJY2xlYXIKCQkJcm0gLXJmICR7U1lTUk9PVH0vZ2Vucm9vdAoJ CQlybSAtcmYgJHtTWVNST09UfS9ldGMKCQkJY3Jvc3NkZXYgLUMgJHtDVEFSR0VUfTs7CgkJMjU1 KSA7OwoJZXNhYwp9CgojIEluc3RhbGwgcGFja2FnZXMgaW4gL3Vzci8ke0NUQVJHRVR9L2dlbnJv b3Qvcm9vdGZzIGJ5IGRlZmF1bHQKcGFyc2VfYW5kX2luc3RhbGwoKSB7Cglsb2NhbCBVU0VGTEFH Uz0KCWxvY2FsIFBLR1M9Cglsb2NhbCBOT1BLRz1ubwoJWyAkIyAtZXEgMCBdICYmIE5PUEtHPXll cwoKCXdoaWxlIFsgJCMgLWd0IDAgXSA7IGRvCgkJY2FzZSAkezF9IGluCgkJc3lzLWxpYnMvdWNs aWJjKQoJCQkjVVNFRkxBR1M9JHtVU0VGTEFHU30ibWluaW1hbCAiCgkJCVBLR1M9JHtQS0dTfSJz eXMtbGlicy91Y2xpYmMgIjs7CgkJc3lzLWFwcHMvYmFzZWxheW91dC1saXRlKQoJCQkjIENoZWNr IHdoZXRoZXIgYmFzZWxheW91dC1saXRlIGlzIG1hc2tlZC4KCQkJJHtHRU5NRVJHRX0gLXAgc3lz LWFwcHMvYmFzZWxheW91dC1saXRlIDE+L2Rldi9udWxsIDI+L2Rldi9udWxsCgkJCVsgJD8gIT0g IjAiIF0gJiYgZWNobyAic3lzLWFwcHMvYmFzZWxheW91dC1saXRlIC0qIiA+PiAke1BPUlRBR0Vf Q09ORklHUk9PVH0vZXRjL3BvcnRhZ2UvcGFja2FnZS5rZXl3b3JkcwoJCQlQS0dTPSR7UEtHU30i c3lzLWFwcHMvYmFzZWxheW91dC1saXRlICI7OwoJCXN5cy1hcHBzL2J1c3lib3gpCgkJCVVTRUZM QUdTPSR7VVNFRkxBR1N9Im1ha2Utc3ltbGlua3MgIgoJCQlQS0dTPSR7UEtHU30ic3lzLWFwcHMv YnVzeWJveCAiOzsKCQluZXQtbWlzYy91ZGhjcCkKCQkJUEtHUz0ke1BLR1N9Im5ldC1taXNjL3Vk aGNwICI7OwoJCW5ldC1taXNjL2Ryb3BiZWFyKQoJCSMgRklYTUU6Y2Fubm90IHVzZSAiemxpYiIs IG90aGVyd2lzZSBjYW5ub3QgY29uZmlndXJlZCBzdWNjZXNzZnVsbHkKCQkJVVNFRkxBR1M9JHtV U0VGTEFHU30iLXpsaWIgIgoJCQlQS0dTPSR7UEtHU30ibmV0LW1pc2MvZHJvcGJlYXIgIjs7CgkJ d3d3LWNsaWVudC9seW54KQoJCQlQS0dTPSR7UEtHU30id3d3LWNsaWVudC9seW54ICI7OwoJCW5l dC1pcmMvc2Nyb2xseikKCQkJUEtHUz0ke1BLR1N9Im5ldC1pcmMvc2Nyb2xseiAiOzsKCQlzeXMt YXBwcy9uZXQtdG9vbHMpCgkJCVBLR1M9JHtQS0dTfSJzeXMtYXBwcy9uZXQtdG9vbHMgIjs7CgkJ bmV0LW1pc2MvaXB1dGlscykKCQkJUEtHUz0ke1BLR1N9Im5ldC1taXNjL2lwdXRpbHMgIjs7CgkJ YXBwLW1pc2Mvc2NyZWVuKQoJCSMgRklYTUU6IGNhbm5vdCBjb25maWd1cmVkIHN1Y2Nlc3NmdWxs eQoJCQlQS0dTPSR7UEtHU30iYXBwLW1pc2Mvc2NyZWVuICI7OwoJCXN5cy1hcHBzL2NvcmV1dGls cykKCQkjIEZJWE1FOiBwdWxsIGluIHRvbyBtYW55IHBhY2thZ2VzCgkJCVBLR1M9JHtQS0dTfSJz eXMtYXBwcy9jb3JldXRpbHMgIjs7CgkJYXBwLXNoZWxscy9iYXNoKQoJCSMgRklYTUU6IGNhbm5v dCBjb25maWd1cmVkIHN1Y2Nlc3NmdWxseQoJCQlQS0dTPSR7UEtHU30iYXBwLXNoZWxscy9iYXNo ICI7OwoJCQkjZGlhbG9nX2luaXQgIkluc3RhbGwgJHsxfSIKCQkJI2RpYWxvZ19tc2dib3ggIlxu JHsxfVxuIiA3IDQwCgkJCSNkaWFsb2dfbGF1bmNoIDs7CgkJKikgOzsKCQllc2FjCgkJc2hpZnQK CWRvbmUKCglpZiBbICR7Tk9QS0d9ID0gInllcyIgXSA7IHRoZW4KCQlkaWFsb2dfaW5pdCAiTm8g UGFja2FnZXMiCgkJZGlhbG9nX21zZ2JveCAiXG5ObyBwYWNrYWdlcyBzZWxlY3RlZCEiIDcgMjcK CQlkaWFsb2dfbGF1bmNoCgllbHNlCgkJY2xlYXIKCQlVU0U9JHtVU0VGTEFHU30gJHtHRU5NRVJH RX0gLWF2dU4gJHtQS0dTfQoJCWVjaG87IGVjaG8gIlByZXNzIDxFbnRlcj4gdG8gY29udGludWUi OyByZWFkCglmaQp9Cgpjb25maWdfcm9vdGZzKCkgewoJIyBDb25maWd1cmluZyByb290ZnMKCWRp YWxvZ19pbml0ICJDb25maWcgUm9vdGZzPyIKIwlkaWFsb2dfZXh0cmFvcHRzICItLWRlZmF1bHRu byIKCWRpYWxvZ195ZXNubyAiXG5Db25maWd1cmluZyByb29mcyBpbmNsdWRlczpcblxuMS4gU2V0 IHVwIHJvb3QgcGFzc3dvcmRcbjIuIFNldCB0aGUgaG9zdG5hbWVcbjMuIFdyaXRlIGZzdGFiXG40 LiBXcml0ZSAvaW5pdChpbml0cmFtZnMpXG5cbkRvIHlvdSB3YW50IHRvIGRvIHRoZXNlPyIgMTQg NDUKCWRpYWxvZ19sYXVuY2gKCVsgJD8gPSAiMCIgXSB8fCByZXR1cm4KCgkjIFNldCB1cCByb290 IHBhc3N3b3JkCgkjIEZJWE1FOiBJcyB0aGVyZSBhbnkgd2F5IHRvIGVuY3J5cHQgdXNlcidzIHBh c3N3b3JkIGluIGJhc2ggc2hlbGwgc2NyaXB0PwoJIyByb290IHBhc3N3b3JkOiB0ZXN0CgllY2hv ICJyb290OlwkMVwkXCR3aHVNalpqLkhNRm9hVGFaUlJ0a08wOjA6MDpyb290Oi9yb290Oi9iaW4v YXNoIiA+ICR7Uk9PVH0vZXRjL3Bhc3N3ZAoJZWNobyAicm9vdDpcJDFcJFwkd2h1TWpaai5ITUZv YVRhWlJSdGtPMDowOjA6cm9vdDovcm9vdDovYmluL2FzaCIgPiAke1JPT1R9L2V0Yy9wYXNzd2Qt CglkaWFsb2dfaW5pdCAiRklYTUU6IFJvb3QgUGFzc3dvcmQiCglkaWFsb2dfbXNnYm94ICJcblJv b3QgcGFzc3dvcmQgY2Fubm90IGJlIHNldCBkeW5hbWljYWxseSBub3cuXG5JdCdzICd0ZXN0JyBi eSBmYXIuXG4iIDggNTAKCWRpYWxvZ19sYXVuY2gKCSMgU2V0IHRoZSBob3N0bmFtZQoJZGlhbG9n X2luaXQgIlNldCBIb3N0bmFtZSIKCWRpYWxvZ19pbnB1dGJveCAiUGxlYXNlIGlucHV0IGhvc3Ru YW1lIiA4IDYwICJnZW5yb290IgoJZGlhbG9nX3NhdmVfb3V0cHV0ICJIT1NUTkFNRSIKCWRpYWxv Z19sYXVuY2gKCWVjaG8gYGNhdCAke0dFTkNST1NTX1RNUERJUn0vSE9TVE5BTUVgID4gJHtST09U fS9ldGMvaG9zdG5hbWUKCSMgV3JpdGUgZnN0YWIKCWxvY2FsIFJPT1RGU1RBQj0ke1JPT1R9L2V0 Yy9mc3RhYgoJZWNobyAiIyBkZWZhdWx0IHJhbSBkaXNrIGFzIHJvb3QiID4gJHtST09URlNUQUJ9 CgllY2hvICIiID4+ICR7Uk9PVEZTVEFCfQoJZWNobyAiIy9kZXYvcmFtMAkJLwkJY3JhbWZzIAkJ ZGVmYXVsdHMgCTAgMCIgPj4gJHtST09URlNUQUJ9CgllY2hvICIjbm9uZQkJCS9wcm9jCQlwcm9j CQlkZWZhdWx0cyAgCTAgMCIgPj4gJHtST09URlNUQUJ9CgllY2hvICIiID4+ICR7Uk9PVEZTVEFC fQoJZWNobyAiIyBnbGliYyAyLjIgYW5kIGFib3ZlIGV4cGVjdHMgdG1wZnMgdG8gYmUgbW91bnRl ZCBhdCAvZGV2L3NobSBmb3IiID4+ICR7Uk9PVEZTVEFCfQoJZWNobyAiIyBQT1NJWCBzaGFyZWQg bWVtb3J5IChzaG1fb3Blbiwgc2htX3VubGluaykuICIgPj4gJHtST09URlNUQUJ9CgllY2hvICIj ICh0bXBmcyBpcyBhIGR5bmFtaWNhbGx5IGV4cGFuZGFibGUvc2hyaW5rYWJsZSByYW1kaXNrLCBh bmQgd2lsbCIgPj4gJHtST09URlNUQUJ9CgllY2hvICIjICB1c2UgYWxtb3N0IG5vIG1lbW9yeSBp ZiBub3QgcG9wdWxhdGVkIHdpdGggZmlsZXMpIiA+PiAke1JPT1RGU1RBQn0KCWVjaG8gIiMgQWRk aW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAvZXRjL2ZzdGFiIHNob3VsZCB0YWtlIGNhcmUgb2Yg dGhpczoiID4+ICR7Uk9PVEZTVEFCfQoJZWNobyAiIiA+PiAke1JPT1RGU1RBQn0KCWVjaG8gIiNu b25lCQkJL2Rldi9zaG0JdG1wZnMJCWRlZmF1bHRzCTAgMCIgPj4gJHtST09URlNUQUJ9CgllY2hv ICJub25lCQkJL3RtcAkJdG1wZnMJCWRlZmF1bHRzCTAgMCIgPj4gJHtST09URlNUQUJ9CgllY2hv ICJub25lCQkJL3Byb2MJCXByb2MJCWRlZmF1bHRzCTAgMCIgPj4gJHtST09URlNUQUJ9CglkaWFs b2dfaW5pdCAiL2V0Yy9mc3RhYiIKCWRpYWxvZ19tc2dib3ggIlxuV3JpdGUgL2V0Yy9mc3RhYiBP S1xuIiA3IDI1CglkaWFsb2dfbGF1bmNoCgkjIFdyaXRlIC9pbml0IChpbml0cmFtZnMpCglsb2Nh bCBST09USU5JVD0ke1JPT1R9L2luaXQKCWVjaG8gIiMhL2Jpbi9hc2giICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAke1JPT1RJTklUfQoJZWNobyAiZWNobyIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICR7Uk9P VElOSVR9CgllY2hvICJlY2hvIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPj4gJHtST09USU5JVH0KCWVjaG8gImVjaG8gXCIgV2VsY29tZSB0byBHZW5y b290XCIiICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAke1JPT1RJTklUfQoJZWNobyAiZWNo byIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICR7 Uk9PVElOSVR9CgllY2hvICJlY2hvIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPj4gJHtST09USU5JVH0KCWVjaG8gIiIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAke1JPT1RJTklUfQoJZWNobyAi ZWNobyBcIiAqIFNldHRpbmcgdW1hc2suLlwiIiAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ ICR7Uk9PVElOSVR9CgllY2hvICJ1bWFzayAwMjIiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPj4gJHtST09USU5JVH0KCWVjaG8gImVjaG8gXCIgKiBNb3VudGlu ZyAvcHJvYy4uXCIiICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAke1JPT1RJTklUfQoJZWNo byAibW91bnQgLXQgcHJvYyBub25lIC9wcm9jIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID4+ICR7Uk9PVElOSVR9CgllY2hvICJlY2hvIFwiICogU3RhcnRpbmcgaW5pdC4uXCIiICAgICAg ICAgICAgICAgICAgICAgICAgICAgPj4gJHtST09USU5JVH0KCWVjaG8gImV4ZWMgPGRldi9jb25z b2xlID5kZXYvY29uc29sZSAyPiYxIiAgICAgICAgICAgICAgICAgICA+PiAke1JPT1RJTklUfQoJ ZWNobyAiZXhlYyBjaHJvb3QgLiAvc2Jpbi9pbml0IiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID4+ICR7Uk9PVElOSVR9CgllY2hvICIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPj4gJHtST09USU5JVH0KCWVjaG8gImVjaG8gXCIgKioq IFN0YXJ0aW5nIGluaXQgZmFpbGVkISAqKipcIiIgICAgICAgICAgICAgICA+PiAke1JPT1RJTklU fQoJZWNobyAiZWNobyBcIiAqIFRyeWluZyB0byBzdGFydCBhIHNoZWxsLi5cIiIgICAgICAgICAg ICAgICAgID4+ICR7Uk9PVElOSVR9CgllY2hvICJleGVjIC9iaW4vYXNoIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJHtST09USU5JVH0KCWNobW9kICt4ICR7Uk9P VElOSVR9CglkaWFsb2dfaW5pdCAiL2luaXQiCglkaWFsb2dfbXNnYm94ICJcbldyaXRlIC9pbml0 IE9LXG4iIDcgMjAKCWRpYWxvZ19sYXVuY2gKCSMgQ2hhbmdlIC9ldGMvaW5pdHRhYj8KCSMgQ2hh bmdlIHRoZSB0aW1lem9uZT8KCgkjIENyZWF0ZSBpbml0cmFtZnMgaW1hZ2UKCWNkICR7Uk9PVH0g JiYgZmluZCAuIHwgY3BpbyAtSCBuZXdjIC1vIHwgZ3ppcCAtOSA+ICR7U1lTUk9PVH0vZ2Vucm9v dC9pbml0cmFtZnNfJHtDVEFSR0VUfS5pZ3oKCWRpYWxvZ19pbml0ICJpbml0cmFtZnMgSW1hZ2Ui CglkaWFsb2dfbXNnYm94ICJcbmluaXRyYW1mc18ke0NUQVJHRVR9LmlneiBub3cgaW5cbiR7U1lT Uk9PVH0vZ2Vucm9vdC9cbiIgOCA1NQoJZGlhbG9nX2xhdW5jaAp9CgojICQxID0gY2F0L3BrZywg JDIgPSBmaWxlIHdoaWNoIGNvbnRhaW5zIHRoZSBhbnN3ZXIgaW4gJHtHRU5DUk9TU19UTVBESVJ9 IGRpcgpjaGVja19pbnN0YWxsZWRfdmVyc2lvbigpIHsKCXBvcnRhZ2VxIG1hdGNoICR7Uk9PVH0g JHsxfSAxPiR7R0VOQ1JPU1NfVE1QRElSfS8kezJ9Cglsb2NhbCBWRVJTSU9OPWBjYXQgJHtHRU5D Uk9TU19UTVBESVJ9LyR7Mn1gCglWRVJTSU9OPSR7VkVSU0lPTiMkezF9LX0KCVsgLXogJHtWRVJT SU9OfSBdICYmIFZFUlNJT049Ti9BCgllY2hvICR7VkVSU0lPTn0gPiAke0dFTkNST1NTX1RNUERJ Un0vJHsyfQp9CgojIFVwZGF0ZWQgdmFsdWVzOiAke0NUQVJHRVR9LCAke1NZU1JPT1R9LCAke1JP T1R9LCAke1BPUlRBR0VfQ09ORklHUk9PVH0sICR7R0VOTUVSR0V9LCAke0dFTk1BS0V9CnRvb2xj aGFpbl9wYWNrYWdlKCkgewoJIyBTZWxlY3QgYSB0b29sY2hhaW4gdG8gY29uZmlndXJlLgoJc2Vs ZWN0X3Rvb2xjaGFpbgoJIyAiTm8gdG9vbGNoYWluIHNlbGVjdCIgfHwgIk5vIGV4aXN0aW5nIHRv b2xjaGFpbiIKCVsgLXogJHtUT09MQ0hBSU59IF0gJiYgcmV0dXJuCgoJQ1RBUkdFVD0ke1RPT0xD SEFJTn0KCVNZU1JPT1Q9L3Vzci8ke0NUQVJHRVR9CglST09UPSR7U1lTUk9PVH0vZ2Vucm9vdC9y b290ZnMKCVsgLWQgJHtST09UfSBdIHx8IG1rZGlyIC1wICR7Uk9PVH0KCVBPUlRBR0VfQ09ORklH Uk9PVD0ke1NZU1JPT1R9CglHRU5NRVJHRT0iL3Vzci8ke0NUQVJHRVR9L2dlbnJvb3QveG1lcmdl XyR7Q1RBUkdFVH0iCglHRU5NQUtFPSIvdXNyLyR7Q1RBUkdFVH0vZ2Vucm9vdC94a21ha2VfJHtD VEFSR0VUfSIKCgkjIFNlbGVjdCBhbmQgaW5zdGFsbCBwYWNrYWdlcwoJZGlhbG9nX2luaXQgIlNl bGVjdCBQYWNrYWdlcyIKCWRpYWxvZ19leHRyYW9wdHMgIi0tbm8tY2FuY2VsIC0tc2VwYXJhdGUt b3V0cHV0IgoJZGlhbG9nX2NoZWNrbGlzdCAiUGxlYXNlIHNlbGVjdHMgcGFja2FnZXMgdG8gYmUg aW5zdGFsbGVkIiAxNSA2MCA4CgljYXNlICR7Q1RBUkdFVCMjKi19IGluCgkJZ251KQoJCQljaGVj a19pbnN0YWxsZWRfdmVyc2lvbiAic3lzLWxpYnMvZ2xpYmMiICJWRVJTSU9OIgoJCQlkaWFsb2df dGFnX2l0ZW0gInN5cy1saWJzL2dsaWJjIFwiYGNhdCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lP TmBcIiBvbiI7OwoJCWtsaWJjKQoJCQljaGVja19pbnN0YWxsZWRfdmVyc2lvbiAiZGV2LWxpYnMv a2xpYmMiICJWRVJTSU9OIgoJCQlkaWFsb2dfdGFnX2l0ZW0gImRldi1saWJzL2tsaWJjIFwiYGNh dCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lPTmBcIiBvbiI7OwoJCXVjbGliYykKCQkJY2hlY2tf aW5zdGFsbGVkX3ZlcnNpb24gInN5cy1saWJzL3VjbGliYyIgIlZFUlNJT04iCgkJCWRpYWxvZ190 YWdfaXRlbSAic3lzLWxpYnMvdWNsaWJjIFwiYGNhdCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lP TmBcIiBvbiI7OwoJZXNhYwoJIyBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNhbiBiZSBjb21waWxl ZCBzdWNjZXNzZnVsbHkgaW4gdGhlIGZvbGxvd2luZyB0YXJnZXQ6CgkjIGkzODYtZ2VudG9vLWxp bnV4LXVjbGliYwoJY2hlY2tfaW5zdGFsbGVkX3ZlcnNpb24gInN5cy1hcHBzL2Jhc2VsYXlvdXQt bGl0ZSIgIlZFUlNJT04iCglkaWFsb2dfdGFnX2l0ZW0gInN5cy1hcHBzL2Jhc2VsYXlvdXQtbGl0 ZSBcImBjYXQgJHtHRU5DUk9TU19UTVBESVJ9L1ZFUlNJT05gXCIgb24iCgljaGVja19pbnN0YWxs ZWRfdmVyc2lvbiAic3lzLWFwcHMvYnVzeWJveCIgIlZFUlNJT04iCglkaWFsb2dfdGFnX2l0ZW0g InN5cy1hcHBzL2J1c3lib3ggXCJgY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9WRVJTSU9OYFwiIG9u IgoJY2hlY2tfaW5zdGFsbGVkX3ZlcnNpb24gIm5ldC1taXNjL3VkaGNwIiAiVkVSU0lPTiIKCWRp YWxvZ190YWdfaXRlbSAibmV0LW1pc2MvdWRoY3AgXCJgY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9W RVJTSU9OYFwiIG9mZiIKCWNoZWNrX2luc3RhbGxlZF92ZXJzaW9uICJuZXQtbWlzYy9kcm9wYmVh ciIgIlZFUlNJT04iCglkaWFsb2dfdGFnX2l0ZW0gIm5ldC1taXNjL2Ryb3BiZWFyIFwiYGNhdCAk e0dFTkNST1NTX1RNUERJUn0vVkVSU0lPTmBcIiBvZmYiCgljaGVja19pbnN0YWxsZWRfdmVyc2lv biAid3d3LWNsaWVudC9seW54IiAiVkVSU0lPTiIKCWRpYWxvZ190YWdfaXRlbSAid3d3LWNsaWVu dC9seW54IFwiYGNhdCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lPTmBcIiBvZmYiCgljaGVja19p bnN0YWxsZWRfdmVyc2lvbiAibmV0LWlyYy9zY3JvbGx6IiAiVkVSU0lPTiIKCWRpYWxvZ190YWdf aXRlbSAibmV0LWlyYy9zY3JvbGx6IFwiYGNhdCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lPTmBc IiBvZmYiCgljaGVja19pbnN0YWxsZWRfdmVyc2lvbiAic3lzLWFwcHMvbmV0LXRvb2xzIiAiVkVS U0lPTiIKCWRpYWxvZ190YWdfaXRlbSAic3lzLWFwcHMvbmV0LXRvb2xzIFwiYGNhdCAke0dFTkNS T1NTX1RNUERJUn0vVkVSU0lPTmBcIiBvZmYiCgljaGVja19pbnN0YWxsZWRfdmVyc2lvbiAibmV0 LW1pc2MvaXB1dGlscyIgIlZFUlNJT04iCglkaWFsb2dfdGFnX2l0ZW0gIm5ldC1taXNjL2lwdXRp bHMgXCJgY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9WRVJTSU9OYFwiIG9mZiIKIwljaGVja19pbnN0 YWxsZWRfdmVyc2lvbiAiYXBwLW1pc2Mvc2NyZWVuIiAiVkVSU0lPTiIKIwlkaWFsb2dfdGFnX2l0 ZW0gImFwcC1taXNjL3NjcmVlbiBcImBjYXQgJHtHRU5DUk9TU19UTVBESVJ9L1ZFUlNJT05gXCIg b2ZmIgojCWNoZWNrX2luc3RhbGxlZF92ZXJzaW9uICJzeXMtYXBwcy9jb3JldXRpbHMiICJWRVJT SU9OIgojCWRpYWxvZ190YWdfaXRlbSAic3lzLWFwcHMvY29yZXV0aWxzIFwiYGNhdCAke0dFTkNS T1NTX1RNUERJUn0vVkVSU0lPTmBcIiBvZmYiCiMJY2hlY2tfaW5zdGFsbGVkX3ZlcnNpb24gImFw cC1zaGVsbHMvYmFzaCIgIlZFUlNJT04iCiMJZGlhbG9nX3RhZ19pdGVtICJhcHAtc2hlbGxzL2Jh c2ggXCJgY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9WRVJTSU9OYFwiIG9mZiIKIwlkaWFsb2dfdGFn X2l0ZW0gInN5c3RlbSBcIlwiIG9mZiIKCSNjaGVja19pbnN0YWxsZWRfdmVyc2lvbiAic3lzLWxp YnMvZ2xpYmMiICJWRVJTSU9OIgoJI2RpYWxvZ190YWdfaXRlbSAiIFwiYGNhdCAke0dFTkNST1NT X1RNUERJUn0vVkVSU0lPTmBcIiBvZmYiCglkaWFsb2dfc2F2ZV9vdXRwdXQgIlBBQ0tBR0VTIgoJ ZGlhbG9nX2xhdW5jaAoKCXBhcnNlX2FuZF9pbnN0YWxsIGBjYXQgJHtHRU5DUk9TU19UTVBESVJ9 L1BBQ0tBR0VTYAoJY29uZmlnX3Jvb3Rmcwp9CgppbnN0YWxsX2tlcm5lbCgpIHsKCSMgSW5zdGFs bCBrZXJuZWwgd2l0aCByZXNwZWN0IHRvIC8KCVJPT1Q9LwoJZGlhbG9nX2luaXQgIlNlbGVjdCBL ZXJuZWwiCglkaWFsb2dfbWVudSAiUGxlYXNlIHNlbGVjdCBhIGtlcm5lbCBmb3JcbiR7Q1RBUkdF VH0iIDE0IDQ1IDYKCWNoZWNrX2luc3RhbGxlZF92ZXJzaW9uICJzeXMta2VybmVsL2dlbnRvby1z b3VyY2VzIiAiVkVSU0lPTiIKCWRpYWxvZ190YWdfaXRlbSAiZ2VudG9vLXNvdXJjZXMgXCJgY2F0 ICR7R0VOQ1JPU1NfVE1QRElSfS9WRVJTSU9OYFwiIgoJY2hlY2tfaW5zdGFsbGVkX3ZlcnNpb24g InN5cy1rZXJuZWwvaHBwYS1zb3VyY2VzIiAiVkVSU0lPTiIKCWRpYWxvZ190YWdfaXRlbSAiaHBw YS1zb3VyY2VzIFwiYGNhdCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lPTmBcIiIKCWNoZWNrX2lu c3RhbGxlZF92ZXJzaW9uICJzeXMta2VybmVsL21pcHMtc291cmNlcyIgIlZFUlNJT04iCglkaWFs b2dfdGFnX2l0ZW0gIm1pcHMtc291cmNlcyBcImBjYXQgJHtHRU5DUk9TU19UTVBESVJ9L1ZFUlNJ T05gXCIiCgljaGVja19pbnN0YWxsZWRfdmVyc2lvbiAic3lzLWtlcm5lbC9zaC1zb3VyY2VzIiAi VkVSU0lPTiIKCWRpYWxvZ190YWdfaXRlbSAic2gtc291cmNlcyBcImBjYXQgJHtHRU5DUk9TU19U TVBESVJ9L1ZFUlNJT05gXCIiCgljaGVja19pbnN0YWxsZWRfdmVyc2lvbiAic3lzLWtlcm5lbC9z cGFyYy1zb3VyY2VzIiAiVkVSU0lPTiIKCWRpYWxvZ190YWdfaXRlbSAic3BhcmMtc291cmNlcyBc ImBjYXQgJHtHRU5DUk9TU19UTVBESVJ9L1ZFUlNJT05gXCIiCgljaGVja19pbnN0YWxsZWRfdmVy c2lvbiAic3lzLWtlcm5lbC92YW5pbGxhLXNvdXJjZXMiICJWRVJTSU9OIgoJZGlhbG9nX3RhZ19p dGVtICJ2YW5pbGxhLXNvdXJjZXMgXCJgY2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9WRVJTSU9OYFwi IgoJZGlhbG9nX3NhdmVfb3V0cHV0ICJLRVJORUwiCglkaWFsb2dfbGF1bmNoCgkjIENoZWNrIHRo ZSB2ZXJzaW9uIG9mIHNlbGVjdGVkIGtlcm5lbCBzb3VyY2UKCWNoZWNrX2luc3RhbGxlZF92ZXJz aW9uICJzeXMta2VybmVsL2BjYXQgJHtHRU5DUk9TU19UTVBESVJ9L0tFUk5FTGAiICJWRVJTSU9O IgoJIyBSZWNvdmVyICR7Uk9PVH0KCVJPT1Q9JHtTWVNST09UfS9nZW5yb290L3Jvb3RmcwoKCWlm IFsgYGNhdCAke0dFTkNST1NTX1RNUERJUn0vVkVSU0lPTmAgIT0gIk4vQSIgXSA7IHRoZW4KCQkj IFRoZSBrZXJuZWwgaXMgaW5zdGFsbGVkCgkJIyBBc2sgdXNlcnMgd2hldGhlciB0byBpbnN0YWxs IGFueXdheQoJCWRpYWxvZ19pbml0ICJBbHJlYWR5IEluc3RhbGxlZCIKCQlkaWFsb2dfZXh0cmFv cHRzICItLWRlZmF1bHRubyIKCQlkaWFsb2dfeWVzbm8gIlxuU291cmNlczogc3lzLWtlcm5lbC9g Y2F0ICR7R0VOQ1JPU1NfVE1QRElSfS9LRVJORUxgXG5WZXJzaW9uOiBgY2F0ICR7R0VOQ1JPU1Nf VE1QRElSfS9WRVJTSU9OYFxuXG5EbyB5b3Ugd2FudCB0byBpbnN0YWxsIGFueXdheT8iIDEwIDQw CgkJZGlhbG9nX2xhdW5jaAoJCWlmIFsgJD8gPSAiMCIgXSA7IHRoZW4KCQkJIyBVc2VycyBjaG9v c2UgdG8gcmUtbWVyZ2UgdGhlIGtlcm5lbAoJCQljbGVhcgoJCQkjJHtHRU5NRVJHRX0gLS1yb290 IC8gLWF2IGBjYXQgJHtHRU5DUk9TU19UTVBESVJ9L0tFUk5FTGAKCQkJVVNFPSJzeW1saW5rIC1k b2MiIGVtZXJnZSAtYXYgYGNhdCAke0dFTkNST1NTX1RNUERJUn0vS0VSTkVMYAoJCWZpCgllbHNl CgkJIyBUaGUga2VybmVybCBpcyBub3QgaW5zdGFsbGVkCgkJIyBJbnN0YWxsIGl0IG5vdyEKCQlj bGVhcgoJCSMke0dFTk1FUkdFfSAtLXJvb3QgLyAtYXYgYGNhdCAke0dFTkNST1NTX1RNUERJUn0v S0VSTkVMYAoJCVVTRT0ic3ltbGluayAtZG9jIiBlbWVyZ2UgLWF2IGBjYXQgJHtHRU5DUk9TU19U TVBESVJ9L0tFUk5FTGAKCWZpCn0KCm1hbmlwdWxhdGVfa2VybmVsKCkgewoJUk9PVD0ke1NZU1JP T1R9L2dlbnJvb3Qvcm9vdGZzCgljZCAvdXNyL3NyYy9saW51eAoJaWYgWyAkPyAhPSAiMCIgXSA7 IHRoZW4KCQlkaWFsb2dfaW5pdCAiQ2Fubm90IEVudGVyIEtlcm5lbCBEaXIiCgkJZGlhbG9nX21z Z2JveCAiXG5DYW5ub3QgRW50ZXIgS2VybmVsIERpcmVjdG9yeVxuL3Vzci9zcmMvbGludXhcbiIg OCAzNQoJCWRpYWxvZ19sYXVuY2gKCWZpCgljYXNlICR7MX0gaW4KCQljb25maWcpCgkJCWlmIFsg LWYgJHtTWVNST09UfS9nZW5yb290L2NvbmZpZ18ke0NUQVJHRVR9IF0gOyB0aGVuCgkJCQlpZiBb ICEgLWYgL3Vzci9zcmMvbGludXgvLmNvbmZpZyBdIDsgdGhlbgoJCQkJCWRpYWxvZ19pbml0ICJS ZXN0b3JlIENvbmZpZ3VyYXRpb24iCgkJCQkJZGlhbG9nX2V4dHJhb3B0cyAiLS1kZWZhdWx0bm8i CgkJCQkJZGlhbG9nX3llc25vICJcbkRvIHlvdSB3YW50IHRvIHJlc3RvcmUga2VybmVsIGNvbmZp Z3VyYXRpb24gZnJvbVxuJHtTWVNST09UfS9nZW5yb290PyIgOCA1MgoJCQkJCWRpYWxvZ19sYXVu Y2gKCQkJCQlbICQ/ID0gIjAiIF0gJiYgY3AgJHtTWVNST09UfS9nZW5yb290L2NvbmZpZ18ke0NU QVJHRVR9IC91c3Ivc3JjL2xpbnV4Ly5jb25maWcKCQkJCWZpCgkJCWZpCgkJCSR7R0VOTUFLRX0g bWVudWNvbmZpZwoJCQlpZiBbIC1mICIvdXNyL3NyYy9saW51eC8uY29uZmlnIiBdIDsgdGhlbgoJ CQkJZGlhbG9nX2luaXQgIkJhY2t1cCBDb25maWd1cmF0aW9uIgoJCQkJZGlhbG9nX2V4dHJhb3B0 cyAiLS1kZWZhdWx0bm8iCgkJCQlkaWFsb2dfeWVzbm8gIlxuRG8geW91IHdhbnQgdG8gY29weSBr ZXJuZWwgY29uZmlndXJhdGlvbiB0b1xuJHtTWVNST09UfS9nZW5yb290PyIgOCA0OAoJCQkJZGlh bG9nX2xhdW5jaAoJCQkJWyAkPyA9ICIwIiBdICYmIGNwIC91c3Ivc3JjL2xpbnV4Ly5jb25maWcg JHtTWVNST09UfS9nZW5yb290L2NvbmZpZ18ke0NUQVJHRVR9CgkJCWZpCgkJCTs7CgkJY29tcGls ZSkKCQkJcm0gLWYgL3Vzci9zcmMvbGludXgvdXNyLy5pbml0cmFtZnNfKgoJCQlybSAtZiAuYnVp bHQtaW4uby5jbWQgLmdlbl9pbml0X2NwaW8uY21kCgkJCXJtIC1mIGJ1aWx0LWluLm8gZ2VuX2lu aXRfY3BpbyBpbml0cmFtZnNfZGF0YS5jcGlvLmd6IGluaXRyYW1mc19kYXRhLm8KCQkJJHtHRU5N QUtFfQoJCQllY2hvOyBlY2hvICJCdWlsZCBFbmQiOyBlY2hvICJQcmVzcyA8RW50ZXI+IHRvIGNv bnRpbnVlIjsgcmVhZAoJCQk7OwoJCWluc21vZCkKCQkJWyAtZCAiJHtST09UfS9saWIvbW9kdWxl cyIgXSAmJiBybSAtcmYgJHtST09UfS9saWIvbW9kdWxlcwoJCQkke0dFTk1BS0V9IG1vZHVsZXNf aW5zdGFsbAoJCQllY2hvOyBlY2hvICJJbnN0YWxsYXRpb24gRW5kIjsgZWNobyAiUHJlc3MgPEVu dGVyPiB0byBjb250aW51ZSI7IHJlYWQKCQkJOzsKCQlpbWFnZSkKCQkJZGlhbG9nX2luaXQgIkJ1 aWxkIEltYWdlIgoJCQlkaWFsb2dfZXh0cmFvcHRzICItLWRlZmF1bHRubyIKCQkJZGlhbG9nX3ll c25vICJQbGVhc2UgZW5hYmxlIGluaXRyYW1mcyAoRGV2aWNlIERyaXZlcnMtPkJsb2NrIERldmlj ZXMpIGFuZCBcblNwZWNpZnkgcm9vdGZzIGRpcmVjdG9yeSAoR2VuZXJhbCBzZXR1cCwgZGVmYXVs dCByb290ZnM6IFxuJHtTWVNST09UfS9nZW5yb290L3Jvb3RmcylcblBTOiBvbmx5IDIuNiBrZXJu ZWwgc3VwcG9ydCBpbml0cmFtZnNcblxuRG8geW91IHdhbnQgdG8gcHJvY2VlZCB0byBidWlsZCB0 aGUgaW1hZ2U/IiAxMCA2NQoJCQlkaWFsb2dfbGF1bmNoCgkJCVsgJD8gIT0gIjAiIF0gJiYgcmV0 dXJuCgkJCXJtIC1mIC91c3Ivc3JjL2xpbnV4L3Vzci8uaW5pdHJhbWZzXyoKCQkJcm0gLWYgLmJ1 aWx0LWluLm8uY21kIC5nZW5faW5pdF9jcGlvLmNtZAoJCQlybSAtZiBidWlsdC1pbi5vIGdlbl9p bml0X2NwaW8gaW5pdHJhbWZzX2RhdGEuY3Bpby5neiBpbml0cmFtZnNfZGF0YS5vCgkJCSR7R0VO TUFLRX0KCQkJWyAtZCAiJHtST09UfS9saWIvbW9kdWxlcyIgXSAmJiBybSAtcmYgJHtST09UfS9s aWIvbW9kdWxlcwoJCQkke0dFTk1BS0V9IG1vZHVsZXNfaW5zdGFsbAoJCQlybSAtZiAvdXNyL3Ny Yy9saW51eC91c3IvLmluaXRyYW1mc18qCgkJCXJtIC1mIC5idWlsdC1pbi5vLmNtZCAuZ2VuX2lu aXRfY3Bpby5jbWQKCQkJcm0gLWYgYnVpbHQtaW4ubyBnZW5faW5pdF9jcGlvIGluaXRyYW1mc19k YXRhLmNwaW8uZ3ogaW5pdHJhbWZzX2RhdGEubwoJCQkke0dFTk1BS0V9CgkJCWVjaG87IGVjaG8g IkJ1aWxkIEVuZCI7IGVjaG8gIlByZXNzIDxFbnRlcj4gdG8gY29udGludWUiOyByZWFkCgkJCTs7 Cgllc2FjCn0KCnRvb2xjaGFpbl9rZXJuZWwoKSB7CgkjIFNlbGVjdCBhIHRvb2xjaGFpbiB0byBj b25maWd1cmUuCglzZWxlY3RfdG9vbGNoYWluCgkjICJObyB0b29sY2hhaW4gc2VsZWN0IiB8fCAi Tm8gZXhpc3RpbmcgdG9vbGNoYWluIgoJWyAteiAke1RPT0xDSEFJTn0gXSAmJiByZXR1cm4KCglD VEFSR0VUPSR7VE9PTENIQUlOfQoJU1lTUk9PVD0vdXNyLyR7Q1RBUkdFVH0KCVJPT1Q9JHtTWVNS T09UfS9nZW5yb290L3Jvb3RmcwoJWyAtZCAke1JPT1R9IF0gfHwgbWtkaXIgLXAgJHtST09UfQoJ UE9SVEFHRV9DT05GSUdST09UPSR7U1lTUk9PVH0KCUdFTk1FUkdFPSIvdXNyLyR7Q1RBUkdFVH0v Z2Vucm9vdC94bWVyZ2VfJHtDVEFSR0VUfSIKCUdFTk1BS0U9Ii91c3IvJHtDVEFSR0VUfS9nZW5y b290L3hrbWFrZV8ke0NUQVJHRVR9IgoKCWxvY2FsIERFRkFVTFRJVEVNPSIyIgoJd2hpbGUgWyAx IF0gOyBkbwoJCWRpYWxvZ19pbml0ICJPcGVyYXRpb24gb24gS2VybmVsIgoJCWRpYWxvZ19leHRy YW9wdHMgIi0tZGVmYXVsdC1pdGVtICR7REVGQVVMVElURU19IgoJCWRpYWxvZ19tZW51ICJXaGF0 IGRvIHlvdSB3YW50IHRvIGRvPyIgMTIgNTAgNQoJCWRpYWxvZ190YWdfaXRlbSAiMSBcIkluc3Rh bGwgS2VybmVsXCIiCgkJZGlhbG9nX3RhZ19pdGVtICIyIFwiQ29uZmlndXJlIEtlcm5lbFwiIgoJ CWRpYWxvZ190YWdfaXRlbSAiMyBcIkNvbXBpbGUgS2VybmVsIGFuZCBNb2R1bGVzXCIiCgkJZGlh bG9nX3RhZ19pdGVtICI0IFwiSW5zdGFsbCBNb2R1bGVzIHRvIFJvb3Rmc1wiIgoJCWRpYWxvZ190 YWdfaXRlbSAiNSBcIkJ1aWxkIGEgc2luZ2xlIGltYWdlIChLZXJuZWwrUm9vdGZzKVwiIgoJCWRp YWxvZ19zYXZlX291dHB1dCAiQU5TIgoJCWRpYWxvZ19sYXVuY2gKCgkJY2FzZSBgY2F0ICR7R0VO Q1JPU1NfVE1QRElSfS9BTlNgIGluCgkJCTEpIERFRkFVTFRJVEVNPSIxIjsgaW5zdGFsbF9rZXJu ZWw7OwoJCQkyKSBERUZBVUxUSVRFTT0iMiI7IG1hbmlwdWxhdGVfa2VybmVsICJjb25maWciIDs7 CgkJCTMpIERFRkFVTFRJVEVNPSIzIjsgbWFuaXB1bGF0ZV9rZXJuZWwgImNvbXBpbGUiOzsKCQkJ NCkgREVGQVVMVElURU09IjQiOyBtYW5pcHVsYXRlX2tlcm5lbCAiaW5zbW9kIiA7OwoJCQk1KSBE RUZBVUxUSVRFTT0iNSI7IG1hbmlwdWxhdGVfa2VybmVsICJpbWFnZSIgIDs7CgkJCSopIHJldHVy bjs7CgkJZXNhYwoJZG9uZQp9CgptYWluX21lbnUoKSB7CgljaGVja19wb3J0YWdlX292ZXJsYXkK CWxvY2FsIERGVElURU09QnVpbGQKCXdoaWxlIFsgMSBdIDsgZG8KCQkjIExhdW5jaCBtYWluIG1l bnUgKG1haW4gYm94KQoJCWRpYWxvZ19pbml0ICJNYWluIE1lbnUiCgkJZGlhbG9nX2V4dHJhb3B0 cyAiLS1jYW5jZWwtbGFiZWwgXCJFeGl0XCIgLS1kZWZhdWx0LWl0ZW0gXCIke0RGVElURU19XCIi CgkJZGlhbG9nX21lbnUgIldoYXQgZG8geW91IHdhbnQgdG8gZG8/IiAxMiA1NSA1CgkJZGlhbG9n X3RhZ19pdGVtICJCdWlsZCBcIkJ1aWxkIGEgdG9vbGNoYWluXCIiCgkJZGlhbG9nX3RhZ19pdGVt ICJSZW1vdmUgXCJSZW1vdmUgYSB0b29sY2hhaW5cIiIKCQlkaWFsb2dfdGFnX2l0ZW0gIkNvbmZp ZyBcIkNvbmZpZyBhIHRvb2xjaGFpblwiIgoJCWRpYWxvZ190YWdfaXRlbSAiUGFja2FnZSBcInNl bGVjdCBhIHRvb2xjaGFpbiB0byBidWlsZCBwYWNrYWdlXCIiCgkJZGlhbG9nX3RhZ19pdGVtICJL ZXJuZWwgXCJzZWxlY3QgYSB0b29sY2hhaW4gdG8gYnVpbGQga2VybmVsXCIiCgkJZGlhbG9nX3Nh dmVfb3V0cHV0ICJBTlMiCgkJZGlhbG9nX2xhdW5jaAoKCQlsb2NhbCBBTlM9YGNhdCAke0dFTkNS T1NTX1RNUERJUn0vQU5TYAoJCWNhc2UgJHtBTlN9IGluCgkJCUJ1aWxkKSAgIERGVElURU09QnVp bGQgICA7IGJ1aWxkX3Rvb2xjaGFpbiAgICAgICAgOzsKCQkJUmVtb3ZlKSAgREZUSVRFTT1SZW1v dmUgIDsgcmVtb3ZlX3Rvb2xjaGFpbiAgICAgICA7OwoJCQlDb25maWcpICBERlRJVEVNPUNvbmZp ZyAgOyBjb25maWdfdG9vbGNoYWluICJ5ZXMiIDs7CgkJCVBhY2thZ2UpIERGVElURU09UGFja2Fn ZSA7IHRvb2xjaGFpbl9wYWNrYWdlICAgICAgOzsKCQkJS2VybmVsKSAgREZUSVRFTT1LZXJuZWwg IDsgdG9vbGNoYWluX2tlcm5lbCAgICAgICA7OwoJCQkqKSBleGl0IDAgOzsKCQllc2FjCglkb25l Cn0KClsgLWQgJHtHRU5DUk9TU19UTVBESVJ9IF0gJiYgcm0gLXJmICR7R0VOQ1JPU1NfVE1QRElS fQpta2RpciAtcCAke0dFTkNST1NTX1RNUERJUn0KCm1haW5fbWVudQo= ------=_Part_17582_28297189.1158963654514-- -- gentoo-embedded@gentoo.org mailing list