------------8NMe1y7a3JWjW88kpgenSG Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-2022-jp Content-Transfer-Encoding: quoted-printable こんにちは。 LLDN のとき言っていた Yampa を GHC-6.4 で使う時の変更点は、 afrp-0.4 の方を持ってきて、AFRPUtilities の (^>>), (>>^), (^<<),(<<^) が Control.Arrows にも含まれているのでそれを 削ってやるということだけでした。 ただしサンプルを試してみたい場合は、拡張子が as になって いるものを hs に変えたり、SpaceInvaders に関しては HGL の 定義が変更されているので import を Graphics.HGL.Utils1B$B$+$i Graphics.HGL に変えてやる必要があります。 (ただし、Makefile を使わずに --make の方で試しているので Makefile を使う場合には変更が必要かもしれません。) wxfruit を試してみたい場合は、Control.Arrow をインポート するようにして paddle のエラーがでるところの size を sz に変えてやればコンパイルできます。 Yampa は以下の cabal でビルドしています。 afrp.cabal ----------------------- Name: afrp Version: 0.4 License: BSD3 License-File: LICENSE Copyright: Henrik Nilsson, Antony Courtney and Yale University, (c) 2003 Author: Antony Courtney, Paul Hudak, Henrik Nilsson, John Peterson Maintainer: Antony Courtney <antony / apocalypse.org>, Paul Hudak <paul.hudak / yale.edu>, Henrik Nilsson <nilsson / cs.yale.edu>, John Peterson <peterson-john / cs.yale.edu> Stability: provisional Homepage: http://www.haskell.org/yampa/ Synopsis: Arrowised Functional Reactive Programming Description: Category: Arrow Tested-With: GHC hs-source-dir: src ghc-options: -fglasgow-exts Build-Depends: base, lang, haskell98 Exposed-modules: AFRP, AFRPAffineSpace, AFRPDiagnostics, AFRPEvent, AFRPForceable, AFRPGeometry, AFRPInternals, AFRPMiscellany, AFRPMergeableRecord, AFRPPoint2, AFRPPoint3, AFRPTask, AFRPUtilities, AFRPVector2, AFRPVector3, AFRPVectorSpace ----------------------- Setup.hs はいつもの定義で。 ----------------------- module Main (main) where import Distribution.Simple main :: IO () main = defaultMain ----------------------- -- shelarcy <shelarcy capella.freemail.ne.jp> http://page.freett.com/shelarcy/ -- ML: haskell-jp / quickml.com 使い方: http://QuickML.com/ ------------8NMe1y7a3JWjW88kpgenSG Content-Disposition: attachment; filename=afrp.diff Content-Type: application/octet-stream; name=afrp.diff Content-Transfer-Encoding: Base64 QmluYXJ5IGZpbGVzIGFmcnAtMC40Lm9yaWcvLkRTX1N0b3JlIGFuZCBhZnJwLTAu NC8uRFNfU3RvcmUgZGlmZmVyCk9ubHkgaW4gYWZycC0wLjQvOiBTZXR1cC5ocwpP bmx5IGluIGFmcnAtMC40LzogYWZwci5jYWJhbApCaW5hcnkgZmlsZXMgYWZycC0w LjQub3JpZy9leGFtcGxlcy8uRFNfU3RvcmUgYW5kIGFmcnAtMC40L2V4YW1wbGVz Ly5EU19TdG9yZSBkaWZmZXIKT25seSBpbiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVz L1NwYWNlSW52YWRlcnM6IC5EU19TdG9yZQpCaW5hcnkgZmlsZXMgYWZycC0wLjQu b3JpZy9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy8uRFNfU3RvcmUgYW5kIGFm cnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjLy5EU19TdG9yZSBkaWZm ZXIKZGlmZiAtY3IgYWZycC0wLjQub3JpZy9leGFtcGxlcy9TcGFjZUludmFkZXJz L3NyYy9BbmltYXRlLmhzIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMv c3JjL0FuaW1hdGUuaHMKKioqIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJ bnZhZGVycy9zcmMvQW5pbWF0ZS5ocwkyMDA0LTAzLTIzIDA3OjQ4OjU1LjAwMDAw MDAwMCArMDkwMAotLS0gYWZycC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9z cmMvQW5pbWF0ZS5ocwkyMDA1LTA3LTMxIDEwOjM2OjQ2LjAwMDAwMDAwMCArMDkw MAoqKioqKioqKioqKioqKioKKioqIDQwLDQ2ICoqKioKICAtLSAgICAgICAgICAg ICAgIGdldFN5c1ZhciwgZ2V0UHJvY2Vzc1RpbWVzLCBlbGFwc2VkVGltZSkKICAt LSBpbXBvcnQgQ29uY3VycmVudCAoeWllbGQpCiAgaW1wb3J0IElPRXh0cyAoSU9S ZWYsIG5ld0lPUmVmLCByZWFkSU9SZWYsIHdyaXRlSU9SZWYpCiEgaW1wb3J0IHF1 YWxpZmllZCBHcmFwaGljcy5IR0wuVXRpbHMgYXMgSEdMCiAgCiAgaW1wb3J0IEFG UlAKICBpbXBvcnQgQUZSUEludGVybmFscwktLSBCcmVha2luZyB0aGUgRXZlbnQg YWJzdHJhY3Rpb24gYmFycmllciBoZXJlIQotLS0gNDAsNDYgLS0tLQogIC0tICAg ICAgICAgICAgICAgZ2V0U3lzVmFyLCBnZXRQcm9jZXNzVGltZXMsIGVsYXBzZWRU aW1lKQogIC0tIGltcG9ydCBDb25jdXJyZW50ICh5aWVsZCkKICBpbXBvcnQgSU9F eHRzIChJT1JlZiwgbmV3SU9SZWYsIHJlYWRJT1JlZiwgd3JpdGVJT1JlZikKISBp bXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTCBhcyBIR0wKICAKICBpbXBvcnQg QUZSUAogIGltcG9ydCBBRlJQSW50ZXJuYWxzCS0tIEJyZWFraW5nIHRoZSBFdmVu dCBhYnN0cmFjdGlvbiBiYXJyaWVyIGhlcmUhCmRpZmYgLWNyIGFmcnAtMC40Lm9y aWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvQ29sb3JzLmhzIGFmcnAtMC40 L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL0NvbG9ycy5ocwoqKiogYWZycC0w LjQub3JpZy9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9Db2xvcnMuaHMJMjAw NC0wMy0yMyAwNzo0ODo1NS4wMDAwMDAwMDAgKzA5MDAKLS0tIGFmcnAtMC40L2V4 YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL0NvbG9ycy5ocwkyMDA1LTA3LTMwIDE4 OjEwOjUwLjAwMDAwMDAwMCArMDkwMAoqKioqKioqKioqKioqKioKKioqIDE0LDIw ICoqKioKICBtb2R1bGUgQ29sb3JzIChDb2xvciguLiksIFJHQiwgY29sb3JUYWJs ZSkgd2hlcmUKICAKICBpbXBvcnQgQXJyYXkKISBpbXBvcnQgR3JhcGhpY3MuSEdM LlV0aWxzIChSR0IoLi4pKQogIAogIAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotLS0gMTQsMjAgLS0tLQogIG1vZHVsZSBDb2xvcnMgKENvbG9yKC4u KSwgUkdCLCBjb2xvclRhYmxlKSB3aGVyZQogIAogIGltcG9ydCBBcnJheQohIGlt cG9ydCBHcmFwaGljcy5IR0wuRHJhdy5UZXh0IChSR0IoLi4pKQogIAogIAogIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpPbmx5IGluIGFmcnAtMC40L2V4 YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjOiBNYWluLmhzCk9ubHkgaW4gYWZycC0w LjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmM6IE9iamVjdEJlaGF2aW9yLmhz CmRpZmYgLWNyIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9z cmMvUGFyc2VyLmhzIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3Jj L1BhcnNlci5ocwoqKiogYWZycC0wLjQub3JpZy9leGFtcGxlcy9TcGFjZUludmFk ZXJzL3NyYy9QYXJzZXIuaHMJMjAwNC0wMy0yMyAwNzo0ODo1NS4wMDAwMDAwMDAg KzA5MDAKLS0tIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL1Bh cnNlci5ocwkyMDA1LTA3LTMxIDEwOjM3OjU0LjAwMDAwMDAwMCArMDkwMAoqKioq KioqKioqKioqKioKKioqIDM1LDQxICoqKioKICApIHdoZXJlCiAgCiAgaW1wb3J0 IE1heWJlIChpc05vdGhpbmcsIGlzSnVzdCkKISBpbXBvcnQgcXVhbGlmaWVkIEdy YXBoaWNzLkhHTC5VdGlscyBhcyBIR0wgKEV2ZW50KC4uKSkKICBpbXBvcnQgQ2hh ciAob3JkLCBpc1NwYWNlLCBpc0RpZ2l0KQogIAogIGltcG9ydCBBRlJQCi0tLSAz NSw0MSAtLS0tCiAgKSB3aGVyZQogIAogIGltcG9ydCBNYXliZSAoaXNOb3RoaW5n LCBpc0p1c3QpCiEgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5IR0wgYXMgSEdM IChFdmVudCguLikpCiAgaW1wb3J0IENoYXIgKG9yZCwgaXNTcGFjZSwgaXNEaWdp dCkKICAKICBpbXBvcnQgQUZSUApkaWZmIC1jciBhZnJwLTAuNC5vcmlnL2V4YW1w bGVzL1NwYWNlSW52YWRlcnMvc3JjL1JlbmRlckxhbmRzY2FwZS5ocyBhZnJwLTAu NC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9SZW5kZXJMYW5kc2NhcGUuaHMK KioqIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvUmVu ZGVyTGFuZHNjYXBlLmhzCTIwMDQtMDMtMjMgMDc6NDg6NTUuMDAwMDAwMDAwICsw OTAwCi0tLSBhZnJwLTAuNC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9SZW5k ZXJMYW5kc2NhcGUuaHMJMjAwNS0wNy0zMSAxMDozODo0Ni4wMDAwMDAwMDAgKzA5 MDAKKioqKioqKioqKioqKioqCioqKiAxNiwyMiAqKioqCiAgKSB3aGVyZQogIAog IGltcG9ydCBBcnJheQohIGltcG9ydCBxdWFsaWZpZWQgR3JhcGhpY3MuSEdMLlV0 aWxzIGFzIEhHTAogIAogIGltcG9ydCBBRlJQUG9pbnQyIChQb2ludDIoLi4pKQog IAotLS0gMTYsMjIgLS0tLQogICkgd2hlcmUKICAKICBpbXBvcnQgQXJyYXkKISBp bXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTCBhcyBIR0wKICAKICBpbXBvcnQg QUZSUFBvaW50MiAoUG9pbnQyKC4uKSkKICAKZGlmZiAtY3IgYWZycC0wLjQub3Jp Zy9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9SZW5kZXJPYmplY3QuaHMgYWZy cC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvUmVuZGVyT2JqZWN0Lmhz CioqKiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL1Jl bmRlck9iamVjdC5ocwkyMDA0LTAzLTIzIDA3OjQ4OjU1LjAwMDAwMDAwMCArMDkw MAotLS0gYWZycC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvUmVuZGVy T2JqZWN0LmhzCTIwMDUtMDctMzEgMTA6Mzg6MjguMDAwMDAwMDAwICswOTAwCioq KioqKioqKioqKioqKgoqKiogMTYsMjIgKioqKgogICkgd2hlcmUKICAKICBpbXBv cnQgQXJyYXkKISBpbXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTC5VdGlscyBh cyBIR0wKICBpbXBvcnQgQUZSUEdlb21ldHJ5CiAgCiAgaW1wb3J0IFBoeXNpY2Fs RGltZW5zaW9ucwotLS0gMTYsMjIgLS0tLQogICkgd2hlcmUKICAKICBpbXBvcnQg QXJyYXkKISBpbXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTCBhcyBIR0wKICBp bXBvcnQgQUZSUEdlb21ldHJ5CiAgCiAgaW1wb3J0IFBoeXNpY2FsRGltZW5zaW9u cwpPbmx5IGluIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjOiBT aW1wbGVHdW4uaHMKZGlmZiAtY3IgYWZycC0wLjQub3JpZy9leGFtcGxlcy9TcGFj ZUludmFkZXJzL3NyYy9Xb3JsZEdlb21ldHJ5LmhzIGFmcnAtMC40L2V4YW1wbGVz L1NwYWNlSW52YWRlcnMvc3JjL1dvcmxkR2VvbWV0cnkuaHMKKioqIGFmcnAtMC40 Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvV29ybGRHZW9tZXRyeS5o cwkyMDA0LTAzLTIzIDA3OjQ4OjU1LjAwMDAwMDAwMCArMDkwMAotLS0gYWZycC0w LjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvV29ybGRHZW9tZXRyeS5ocwky MDA1LTA3LTMxIDEwOjM3OjI0LjAwMDAwMDAwMCArMDkwMAoqKioqKioqKioqKioq KioKKioqIDE2LDIyICoqKioKICAKICBpbXBvcnQgQUZSUFBvaW50MiAoUG9pbnQy KC4uKSkKICBpbXBvcnQgUGh5c2ljYWxEaW1lbnNpb25zCiEgaW1wb3J0IHF1YWxp ZmllZCBHcmFwaGljcy5IR0wuVXRpbHMgYXMgSEdMIChQb2ludCkKICAKICAKICAt LSBFdmVyeXRoaW5nIGluIHRoZSB3b3JsZCBpcyBtZWFzdXJlZCBpbiBtZXRlcnMu Ci0tLSAxNiwyMiAtLS0tCiAgCiAgaW1wb3J0IEFGUlBQb2ludDIgKFBvaW50Migu LikpCiAgaW1wb3J0IFBoeXNpY2FsRGltZW5zaW9ucwohIGltcG9ydCBxdWFsaWZp ZWQgR3JhcGhpY3MuSEdMIGFzIEhHTCAoUG9pbnQpCiAgCiAgCiAgLS0gRXZlcnl0 aGluZyBpbiB0aGUgd29ybGQgaXMgbWVhc3VyZWQgaW4gbWV0ZXJzLgpPbmx5IGlu IGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvVGFpbGdhdGluZ0RldGVjdG9yOiAuRFNf U3RvcmUKT25seSBpbiBhZnJwLTAuNC9leGFtcGxlcy9UYWlsZ2F0aW5nRGV0ZWN0 b3I6IFRhaWxnYXRpbmdEZXRlY3Rvci5ocwpPbmx5IGluIGFmcnAtMC40L2V4YW1w bGVzL1RhaWxnYXRpbmdEZXRlY3RvcjogVGVzdFRHTWFpbi5ocwpPbmx5IGluIGFm cnAtMC40L3NyYzogLkRTX1N0b3JlCmRpZmYgLWNyIGFmcnAtMC40Lm9yaWcvc3Jj L0FGUlBVdGlsaXRpZXMuaHMgYWZycC0wLjQvc3JjL0FGUlBVdGlsaXRpZXMuaHMK KioqIGFmcnAtMC40Lm9yaWcvc3JjL0FGUlBVdGlsaXRpZXMuaHMJMjAwNC0wMy0y MyAwNzo0ODo1NS4wMDAwMDAwMDAgKzA5MDAKLS0tIGFmcnAtMC40L3NyYy9BRlJQ VXRpbGl0aWVzLmhzCTIwMDUtMDktMDEgMTQ6NDY6MjcuMDAwMDAwMDAwICswOTAw CioqKioqKioqKioqKioqKgoqKiogMzIsNDIgKioqKgogIAogIAogIG1vZHVsZSBB RlJQVXRpbGl0aWVzICgKLSAtLSBHZW5lcmFsIGFycm93IHV0aWxpdGllcwotICAg ICAoXj4+KSwJCS0tIDo6IEFycm93IGEgPT4gKGIgLT4gYykgLT4gYSBjIGQgLT4g YSBiIGQKLSAgICAgKD4+XiksCQktLSA6OiBBcnJvdyBhID0+IGEgYiBjIC0+IChj IC0+IGQpIC0+IGEgYiBkCi0gICAgIChePDwpLAkJLS0gOjogQXJyb3cgYSA9PiAo YyAtPiBkKSAtPiBhIGIgYyAtPiBhIGIgZCAKLSAgICAgKDw8XiksCQktLSA6OiBB cnJvdyBhID0+IGEgYyBkIC0+IChiIC0+IGMpIC0+IGEgYiBkCiAgCiAgLS0gTGlm dGluZ3MKICAgICAgYXJyMiwJCS0tIDo6IEFycm93IGEgPT4gKGItPmMtPmQpIC0+ IGEgKGIsYykgZAotLS0gMzIsMzcgLS0tLQoqKioqKioqKioqKioqKioKKioqIDg5 LDExOCAqKioqCiAgaW1wb3J0IEFGUlBEaWFnbm9zdGljcwogIGltcG9ydCBBRlJQ CiAgCi0gCi0gaW5maXhyIDEgXjw8LCBePj4KLSBpbmZpeGwgMSA8PF4sID4+Xgog IGluZml4ciAwIGBmYnlgCiAgCiAgCi0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gLS0gR2VuZXJhbCBhcnJvdyB1dGlsaXRpZXMKLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSAoXj4+KSA6OiBBcnJvdyBhID0+IChi IC0+IGMpIC0+IGEgYyBkIC0+IGEgYiBkCi0gZiBePj4gYSA9IGFyciBmID4+PiBh Ci0gCi0gKD4+XikgOjogQXJyb3cgYSA9PiBhIGIgYyAtPiAoYyAtPiBkKSAtPiBh IGIgZAotIGEgPj5eIGYgPSBhID4+PiBhcnIgZgotIAotIAotIChePDwpIDo6IEFy cm93IGEgPT4gKGMgLT4gZCkgLT4gYSBiIGMgLT4gYSBiIGQgCi0gZiBePDwgYSA9 IGFyciBmIDw8PCBhCi0gCi0gCi0gKDw8XikgOjogQXJyb3cgYSA9PiBhIGMgZCAt PiAoYiAtPiBjKSAtPiBhIGIgZAotIGEgPDxeIGYgPSBhIDw8PCBhcnIgZgotIAog IAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC0tIExpZnRpbmdz Ci0tLSA4NCw5MiAtLS0tCg ------------8NMe1y7a3JWjW88kpgenSG Content-Disposition: attachment; filename=afrp.diff-complete Content-Type: application/octet-stream; name=afrp.diff-complete Content-Transfer-Encoding: Base64 QmluYXJ5IGZpbGVzIGFmcnAtMC40Lm9yaWcvLkRTX1N0b3JlIGFuZCBhZnJwLTAu NC8uRFNfU3RvcmUgZGlmZmVyCmRpZmYgLWNyTiBhZnJwLTAuNC5vcmlnL1NldHVw LmhzIGFmcnAtMC40L1NldHVwLmhzCioqKiBhZnJwLTAuNC5vcmlnL1NldHVwLmhz CTE5NzAtMDEtMDEgMDk6MDA6MDAuMDAwMDAwMDAwICswOTAwCi0tLSBhZnJwLTAu NC9TZXR1cC5ocwkyMDA1LTAyLTI3IDEwOjE1OjUzLjAwMDAwMDAwMCArMDkwMAoq KioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0gMSw4IC0tLS0KKyAKKyBtb2R1 bGUgTWFpbiAobWFpbikgd2hlcmUKKyAKKyBpbXBvcnQgRGlzdHJpYnV0aW9uLlNp bXBsZQorIAorIG1haW4gOjogSU8gKCkKKyBtYWluID0gZGVmYXVsdE1haW4KKyAK ZGlmZiAtY3JOIGFmcnAtMC40Lm9yaWcvYWZwci5jYWJhbCBhZnJwLTAuNC9hZnBy LmNhYmFsCioqKiBhZnJwLTAuNC5vcmlnL2FmcHIuY2FiYWwJMTk3MC0wMS0wMSAw OTowMDowMC4wMDAwMDAwMDAgKzA5MDAKLS0tIGFmcnAtMC40L2FmcHIuY2FiYWwJ MjAwNS0wNy0xOSAxMjozNzowNy4wMDAwMDAwMDAgKzA5MDAKKioqKioqKioqKioq KioqCioqKiAwICoqKioKLS0tIDEsMzUgLS0tLQorIE5hbWU6ICAgICAgICAgICAg ICAgYWZycAorIFZlcnNpb246ICAgICAgICAgICAgMC40CisgTGljZW5zZTogICAg ICAgICAgICBCU0QzCisgTGljZW5zZS1GaWxlOiAgICAgICBMSUNFTlNFCisgQ29w eXJpZ2h0OiAgICAgICAgICBIZW5yaWsgTmlsc3NvbiwgQW50b255IENvdXJ0bmV5 IGFuZCBZYWxlIFVuaXZlcnNpdHksIChjKSAyMDAzCisgQXV0aG9yOiAgICAgICAg ICAgICBBbnRvbnkgQ291cnRuZXksIFBhdWwgSHVkYWssIEhlbnJpayBOaWxzc29u LCBKb2huIFBldGVyc29uCisgTWFpbnRhaW5lcjogICAgICAgICBBbnRvbnkgQ291 cnRuZXkJPGFudG9ueUBhcG9jYWx5cHNlLm9yZz4sIFBhdWwgSHVkYWsJPHBhdWwu aHVkYWtAeWFsZS5lZHU+LCBIZW5yaWsgTmlsc3Nvbgk8bmlsc3NvbkBjcy55YWxl LmVkdT4sIEpvaG4gUGV0ZXJzb24JPHBldGVyc29uLWpvaG5AY3MueWFsZS5lZHU+ CisgU3RhYmlsaXR5OiAgICAgICAgICBwcm92aXNpb25hbAorIEhvbWVwYWdlOiAg ICAgICAgICAgaHR0cDovL3d3dy5oYXNrZWxsLm9yZy95YW1wYS8KKyBTeW5vcHNp czogICAgICAgICAgIEFycm93aXNlZCBGdW5jdGlvbmFsIFJlYWN0aXZlIFByb2dy YW1taW5nCisgRGVzY3JpcHRpb246CisgQ2F0ZWdvcnk6ICAgICAgICAgICBBcnJv dworIFRlc3RlZC1XaXRoOiAgICAgICAgR0hDCisgaHMtc291cmNlLWRpcjogc3Jj CisgZ2hjLW9wdGlvbnM6IC1mZ2xhc2dvdy1leHRzCisgQnVpbGQtRGVwZW5kczog ICAgICBiYXNlLCBsYW5nLCBoYXNrZWxsOTgKKyBFeHBvc2VkLW1vZHVsZXM6Cisg ICAgIEFGUlAsIAorICAgICBBRlJQQWZmaW5lU3BhY2UsIAorICAgICBBRlJQRGlh Z25vc3RpY3MsCisgICAgIEFGUlBFdmVudCwKKyAgICAgQUZSUEZvcmNlYWJsZSwK KyAgICAgQUZSUEdlb21ldHJ5LAorICAgICBBRlJQSW50ZXJuYWxzLAorICAgICBB RlJQTWlzY2VsbGFueSwKKyAgICAgQUZSUE1lcmdlYWJsZVJlY29yZCwKKyAgICAg QUZSUFBvaW50MiwKKyAgICAgQUZSUFBvaW50MywKKyAgICAgQUZSUFRhc2ssCisg ICAgIEFGUlBVdGlsaXRpZXMsCisgICAgIEFGUlBWZWN0b3IyLAorICAgICBBRlJQ VmVjdG9yMywKKyAgICAgQUZSUFZlY3RvclNwYWNlCisgCisgCkJpbmFyeSBmaWxl cyBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzLy5EU19TdG9yZSBhbmQgYWZycC0wLjQv ZXhhbXBsZXMvLkRTX1N0b3JlIGRpZmZlcgpCaW5hcnkgZmlsZXMgYWZycC0wLjQu b3JpZy9leGFtcGxlcy9TcGFjZUludmFkZXJzLy5EU19TdG9yZSBhbmQgYWZycC0w LjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy8uRFNfU3RvcmUgZGlmZmVyCkJpbmFy eSBmaWxlcyBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3Jj Ly5EU19TdG9yZSBhbmQgYWZycC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9z cmMvLkRTX1N0b3JlIGRpZmZlcgpkaWZmIC1jck4gYWZycC0wLjQub3JpZy9leGFt cGxlcy9TcGFjZUludmFkZXJzL3NyYy9BbmltYXRlLmhzIGFmcnAtMC40L2V4YW1w bGVzL1NwYWNlSW52YWRlcnMvc3JjL0FuaW1hdGUuaHMKKioqIGFmcnAtMC40Lm9y aWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvQW5pbWF0ZS5ocwkyMDA0LTAz LTIzIDA3OjQ4OjU1LjAwMDAwMDAwMCArMDkwMAotLS0gYWZycC0wLjQvZXhhbXBs ZXMvU3BhY2VJbnZhZGVycy9zcmMvQW5pbWF0ZS5ocwkyMDA1LTA3LTMxIDEwOjM2 OjQ2LjAwMDAwMDAwMCArMDkwMAoqKioqKioqKioqKioqKioKKioqIDQwLDQ2ICoq KioKICAtLSAgICAgICAgICAgICAgIGdldFN5c1ZhciwgZ2V0UHJvY2Vzc1RpbWVz LCBlbGFwc2VkVGltZSkKICAtLSBpbXBvcnQgQ29uY3VycmVudCAoeWllbGQpCiAg aW1wb3J0IElPRXh0cyAoSU9SZWYsIG5ld0lPUmVmLCByZWFkSU9SZWYsIHdyaXRl SU9SZWYpCiEgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5IR0wuVXRpbHMgYXMg SEdMCiAgCiAgaW1wb3J0IEFGUlAKICBpbXBvcnQgQUZSUEludGVybmFscwktLSBC cmVha2luZyB0aGUgRXZlbnQgYWJzdHJhY3Rpb24gYmFycmllciBoZXJlIQotLS0g NDAsNDYgLS0tLQogIC0tICAgICAgICAgICAgICAgZ2V0U3lzVmFyLCBnZXRQcm9j ZXNzVGltZXMsIGVsYXBzZWRUaW1lKQogIC0tIGltcG9ydCBDb25jdXJyZW50ICh5 aWVsZCkKICBpbXBvcnQgSU9FeHRzIChJT1JlZiwgbmV3SU9SZWYsIHJlYWRJT1Jl Ziwgd3JpdGVJT1JlZikKISBpbXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTCBh cyBIR0wKICAKICBpbXBvcnQgQUZSUAogIGltcG9ydCBBRlJQSW50ZXJuYWxzCS0t IEJyZWFraW5nIHRoZSBFdmVudCBhYnN0cmFjdGlvbiBiYXJyaWVyIGhlcmUhCmRp ZmYgLWNyTiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3Jj L0NvbG9ycy5ocyBhZnJwLTAuNC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9D b2xvcnMuaHMKKioqIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVy cy9zcmMvQ29sb3JzLmhzCTIwMDQtMDMtMjMgMDc6NDg6NTUuMDAwMDAwMDAwICsw OTAwCi0tLSBhZnJwLTAuNC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9Db2xv cnMuaHMJMjAwNS0wNy0zMCAxODoxMDo1MC4wMDAwMDAwMDAgKzA5MDAKKioqKioq KioqKioqKioqCioqKiAxNCwyMCAqKioqCiAgbW9kdWxlIENvbG9ycyAoQ29sb3Io Li4pLCBSR0IsIGNvbG9yVGFibGUpIHdoZXJlCiAgCiAgaW1wb3J0IEFycmF5CiEg aW1wb3J0IEdyYXBoaWNzLkhHTC5VdGlscyAoUkdCKC4uKSkKICAKICAKICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0tIDE0LDIwIC0tLS0KICBtb2R1 bGUgQ29sb3JzIChDb2xvciguLiksIFJHQiwgY29sb3JUYWJsZSkgd2hlcmUKICAK ICBpbXBvcnQgQXJyYXkKISBpbXBvcnQgR3JhcGhpY3MuSEdMLkRyYXcuVGV4dCAo UkdCKC4uKSkKICAKICAKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtY3JOIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9z cmMvTWFpbi5ocyBhZnJwLTAuNC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9N YWluLmhzCioqKiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1NwYWNlSW52YWRlcnMv c3JjL01haW4uaHMJMTk3MC0wMS0wMSAwOTowMDowMC4wMDAwMDAwMDAgKzA5MDAK LS0tIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL01haW4uaHMJ MjAwNS0wNy0zMSAxMDozOTozMy4wMDAwMDAwMDAgKzA5MDAKKioqKioqKioqKioq KioqCioqKiAwICoqKioKLS0tIDEsMjA3IC0tLS0KKyB7LSAkSWQ6IE1haW4uYXMs diAxLjMgMjAwMy8xMS8xMyAyMDoxMTowMCBoZW5yaWsgRXhwICQKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSSBOIFYgQSBEIEUgUiBTICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAg ICAgIE1vZHVsZToJCU1haW4JCQkJCQkgICAgICoKKyAqICAgICAgIFB1cnBvc2U6 CU1haW4gbW9kdWxlLgkJCQkJICAgICAqCisgKiAgICAgICBBdXRob3I6CQlIZW5y aWsgTmlsc3NvbgkJCQkJICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCisgKiAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIFlhbGUgVW5pdmVy c2l0eSwgMjAwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgLX0KKyAKKyBtb2R1bGUgTWFpbiB3aGVyZQorIAorIGltcG9y dCBSYW5kb20KKyAKKyBpbXBvcnQgTWF5YmUgKGlzSnVzdCkKKyBpbXBvcnQgQXJy YXkKKyAKKyBpbXBvcnQgQUZSUAorIGltcG9ydCBBRlJQSW50ZXJuYWxzIChFdmVu dCguLikpCisgaW1wb3J0IEFGUlBHZW9tZXRyeQorIGltcG9ydCBBRlJQVXRpbGl0 aWVzCisgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5IR0wgYXMgSEdMCisgCisg LS0gVGVtcG9yYXJ5LCBqdXN0IHRvIG1ha2Ugc3VyZSBhbGwgbW9kdWxlcyBjb21w aWxlLgorIGltcG9ydCBBbmltYXRlCisgaW1wb3J0IENvbG9yQmluZGluZ3MKKyBp bXBvcnQgQ29sb3JzCisgaW1wb3J0IENvbW1hbmQKKyBpbXBvcnQgRGlhZ25vc3Rp Y3MKKyBpbXBvcnQgSWRlbnRpdHlMaXN0CisgaW1wb3J0IE9iamVjdAorIGltcG9y dCBPYmplY3RCZWhhdmlvcgorIGltcG9ydCBQYXJzZXIKKyBpbXBvcnQgUGh5c2lj YWxEaW1lbnNpb25zCisgaW1wb3J0IFJlbmRlckxhbmRzY2FwZQorIGltcG9ydCBS ZW5kZXJPYmplY3QKKyBpbXBvcnQgV29ybGRHZW9tZXRyeQorIAorIHR5cGUgU2Nv cmUgPSBJbnQKKyAKKyBtYWluID0gZG8KKyAgICAgZyA8LSBuZXdTdGRHZW4KKyAg ICAgYW5pbWF0ZSAyMCAiUyBQIEEgQyBFICAgSSBOIFYgQSBEIEUgUiBTIiB3b3Js ZFNpemVYIHdvcmxkU2l6ZVkKKyAgICAgICAgICAgICAgICAoXChzY29yZSwgb29z cykgLT4KKyAJCSAgICByZW5kZXJTY29yZSBzY29yZQorIAkJICAgIGBIR0wub3Zl ckdyYXBoaWNgIHJlbmRlck9iamVjdHMgb29zcworIAkJICAgIGBIR0wub3Zlckdy YXBoaWNgIGxhbmRzY2FwZSkKKyAgICAgICAgICAgICAgICAoXF8gLT4gW10pCisg ICAgICAgICAgICAgICAgKHBhcnNlV2luSW5wdXQgPj4+IHJlc3RhcnRpbmdHYW1l IGcpCisgCisgCisgLS0gQ2hhbmdlIG5hbWUgdG8gImdhbWUiPyBXaGF0J3Mgbm93 ICJnYW1lIiB3b3VsZCBiZWNvbWUgImdhbWVSb3VuZCIuCisgLS0gV2hhdCBhYm91 dCAiZ2FtZSciPworIHJlc3RhcnRpbmdHYW1lIDo6IFJhbmRvbUdlbiBnID0+IGcg LT4gU0YgR2FtZUlucHV0IChJbnQsIFtPYnNPYmpTdGF0ZV0pCisgcmVzdGFydGlu Z0dhbWUgZyA9IHJnQXV4IGcgbkFsaWVuczAgdnlkQWxpZW4wIDAKKyAgICAgd2hl cmUKKyAJbkFsaWVuczAgPSAyCisgCXZ5ZEFsaWVuMCA9IC0xMAorIAorICAgICAg ICAgcmdBdXggZyBuQWxpZW5zIHZ5ZEFsaWVuIHNjb3JlID0KKyAgICAgICAgICAg ICBzd2l0Y2ggKGdhbWUgZycgbkFsaWVucyB2eWRBbGllbiBzY29yZSkgJCBcc3Rh dHVzIC0+CisgICAgICAgICAgICAgY2FzZSBzdGF0dXMgb2YKKyAJCUxlZnQgc2Nv cmUnIC0+IHJnQXV4IGcnJyAobkFsaWVucyArIDEpICh2eWRBbGllbiAtIDEwKSBz Y29yZScKKyAgICAgICAgICAgICAgICAgUmlnaHQgZmluYWxTY29yZSAtPiByZ0F1 eCBnJycgbkFsaWVuczAgdnlkQWxpZW4wIDAKKyAJICAgIHdoZXJlCisgCSAgICAg ICAgKGcnLCBnJycpID0gc3BsaXQgZworIAorIAorIC0tIEhvdyB0byBhcnJhbmdl IGZvciBzcGxpdHRpbmcgb2YgZyBpbiBnZW5lcmFsIGlmIHdlIGhhdmUgc3Bhd25p bmcgb2YgYWxpZW5zCisgLS0gImluc2lkZSIgdGhlIGdhbWU/IFRoZSBzcGF3bmVy IHNob3VsZAorIC0tIGtlZXAgY29udHJvbCBvdmVyIHRoZSBzdXBwbHkgb2YgcmFu ZG9tIGdlbmVyYXRvcnMuCisgCisgZ2FtZSA6OiBSYW5kb21HZW4gZyA9PiBnIC0+ IEludCAtPiBWZWxvY2l0eSAtPiBTY29yZSAtPgorIAlTRiBHYW1lSW5wdXQgKChJ bnQsIFtPYnNPYmpTdGF0ZV0pLCBFdmVudCAoRWl0aGVyIFNjb3JlIFNjb3JlKSkK KyBnYW1lIGcgbkFsaWVucyB2eWRBbGllbiBzY29yZTAgPSBwcm9jIGdpIC0+IGRv CisgICAgIC0tIE9uZSBjb3VsZCBhcmd1ZSB0aGF0IGZlZWRpbmcgYmFjayBvbmx5 IHRoZSBPYnNPYmpTdGF0ZSBwYXJ0IHdvdWxkCisgICAgIC0tIG1ha2UgdGhpbmdz IGEgbGl0dGxlIHNtb290aGVyLiBCdXQgcG9zc2libHkgc29tZXdoYXQgbGVzcyBn ZW5lcmFsLgorICAgICAtLSBpUHJlIG5vdCBuZWVkZWQgaW4gdGhlIGZlZWRiYWNr IHBhdGggYXMgbG9uZyBhcyBkcFN3aXRjaCBpcyB1c2VkLAorICAgICAtLSBidXQg dGhlcmUgYXJlIG1hbnkgc2lkZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gdGhlIGdh bWUuIEUuZy4KKyAgICAgLS0gdGhlIHBhcnRzIG9mIHRoZSBmZWQtYmFjayBvdXRw dXQgdXNlZCBmb3IgaGl0IGRldGVjdGlvbiBub3QgZGVwZW5kaW5nCisgICAgIC0t IG9uIHRoZSByZXN1bHQgb2YgdGhlIGhpdCBkZXRlY3Rpb24gYW5kIHNvIG9uLiBT byBmb3Igcm9idXN0bmVzcywKKyAgICAgLS0gbWF5YmUgc2FmZXN0IHRvIGxlYXZl IHRoZSBkZWxheSBpbi4KKyAgICAgLS0KKyAgICAgLS0gQlVUISBXZSBjYW5ub3Qg aGF2ZSBCT1RIIGRwU3dpdGNoIGFuZCBpUHJlISBUaGF0IHdpbGwgY2F1c2UgZS5n LgorICAgICAtLSBoaXR0aW5nIHNob3RzIHRvIGJlICJzZWVuIiB0d2ljZSwgZHVl IHRvIGEgImRvdWJsZSBkZWxheSIsIGFuZAorICAgICAtLSB0aGF0IGluIHR1cm4g d2lsbCBpbmZsaWN0IGRvdWJsZSBkYW1tYWdlLgorICAgICAtLQorICAgICAtLSBX ZSBjb3VsZCBkbyBzY29yZSBrZWVwaW5nICppbiB0aGlzIGNhc2UqIGJ5IHNpbXBs eSAqY29udGludXNvdWx5KgorICAgICAtLSBjb3VudGluZyB0aGUgbnVtYmVyIG9m IGFsaWVucy4gVGhpcyBjb3VudCBjYW4gYmUgdXNlZCBib3RoIHRvIGRldGVjdAor ICAgICAtLSBhIG5ldyByb3VuZCwgYW5kIGZvciBjb21wdXRpbmcgdGhlIHNjb3Jl IGFzIG5BbGllbnMgLSBhbGllbkNvdW50LgorICAgICAtLSBCdXQgdGhpcyBkb2Vz IG5vdCBleGFjdGx5IGludml0ZSB0byBtb3JlIGVsYWJvcmF0ZSBzY29yaW5nIHNj aGVtZXMuCisgICAgIC0tIGl0IHdvdWxkIGFsc28gYmUgZGlmZmljdWx0IHRvIGhh dmUgZGlmZmVyZW50IGtpbmRzIG9mIGFsaWVucyBvZgorICAgICAtLSB2YXJ5aW5n IHZhbHVlLCBzaW5jZSB0aGUgbmF0dXJhbCB3YXkgdG8gZG8gdGhhdCBpcyB0byBs b29rIGF0IHRoZQorICAgICAtLSBhY3R1YWwgb2JqZWN0IHRoYXQgaXMgYmVpbmcg cmVtb3ZlZCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGl0cyB2YWx1ZSwKKyAgICAg LS0gcmF0aGVyIHRoYW4gdHJ5aW5ndG8gZmlndXJlIG91dCBhIHNjb3JlIGluZGly ZWN0bHkgdGhyb3VnaCB0aGUKKyAgICAgLS0gYWJzZW5jZSBvZiBvYmplY3RzIQor ICAgICByZWMKKyAgICAgICAgIG9vcyAgPC0gZ2FtZScgb2JqczAgIC08IChnaSwg b29zIHstIG9vc3AgLX0pCisgICAgICAgICB7LSBvb3NwIDwtIGlQcmUgZW1wdHlJ TCAtPCBvb3MgLX0KKyAgICAgc2NvcmUgICAgPC0gYWNjdW1Ib2xkIHNjb3JlMCAt PCBhbGllbnNEaWVkIG9vcworICAgICBnYW1lT3ZlciA8LSBlZGdlICAgICAgICAg ICAgIC08IGFsaWVuTGFuZGVkIG9vcworICAgICBuZXdSb3VuZCA8LSBlZGdlICAg ICAgICAgICAgIC08IG5vQWxpZW5zTGVmdCBvb3MKKyAgICAgcmV0dXJuQSAtPCAo KHNjb3JlLCBtYXAgb29PYnNPYmpTdGF0ZSAoZWxlbXNJTCBvb3MpKSwKKyAJCShu ZXdSb3VuZCBgdGFnYCAoTGVmdCBzY29yZSkpCisgCSAgICAgICAgYGxNZXJnZWAg KGdhbWVPdmVyIGB0YWdgIChSaWdodCBzY29yZSkpKQorICAgICB3aGVyZQorIAlv YmpzMCA9IGxpc3RUb0lMIChndW4gKFBvaW50MiAwIDUwKQorIAkJCSAgOiBta0Fs aWVucyBnICh3b3JsZFhNaW4gKyBkKSA5MDAgbkFsaWVucykKKyAJZCAgICAgPSAo d29ybGRYTWF4IC0gd29ybGRYTWluKSAvIGZyb21JbnRlZ3JhbCAobkFsaWVucyAr IDEpCisgCQorIAlta0FsaWVucyBnIHggeSAwICAgICAgICAgPSBbXQorIAlta0Fs aWVucyBnIHggeSBuIHwgbiA+IDAgPSBhbGllbiBnJyAoUG9pbnQyIHggeSkgdnlk QWxpZW4KKyAJCQkJICAgOiBta0FsaWVucyBnJycgKHggKyBkKSB5IChuIC0gMSkK KyAJICAgIHdoZXJlCisgCQkoZycsIGcnJykgPSBzcGxpdCBnCisgCisgCWFsaWVu c0RpZWQgOjogSUwgT2JqT3V0cHV0IC0+IEV2ZW50IChTY29yZSAtPiBTY29yZSkK KyAJYWxpZW5zRGllZCBvb3MgPQorIAkgICAgZm1hcCAoXGVzIC0+ICgrbGVuZ3Ro IGVzKSkKKyAJICAgICAgICAgKGNhdEV2ZW50cyAobWFwIG9vS2lsbFJlcSAoZmlu ZEFsbElMIGlzQWxpZW4nIG9vcykpKQorIAkgICAgd2hlcmUKKyAJCWlzQWxpZW4n IChfLCBPYmpPdXRwdXQge29vT2JzT2JqU3RhdGUgPSBvb3N9KSA9IGlzQWxpZW4g b29zCisgCisgCWFsaWVuTGFuZGVkIDo6IElMIE9iak91dHB1dCAtPiBCb29sCisg CWFsaWVuTGFuZGVkIG9vcyA9IGlzSnVzdCAoZmluZElMIGlzTGFuZGVkIG9vcykK KyAJICAgIHdoZXJlCisgCQlpc0xhbmRlZCAoXywgT2JqT3V0cHV0IHtvb09ic09i alN0YXRlID0gb29zfSkgPQorIAkJICAgIGlzQWxpZW4gb29zICYmIHBvaW50Mlkg KG9vc1BvcyBvb3MpIDw9IDAKKyAKKyAJbm9BbGllbnNMZWZ0IDo6IElMIE9iak91 dHB1dCAtPiBCb29sCisgCW5vQWxpZW5zTGVmdCBvb3MgPSBudWxsIChmaW5kQWxs SUwgaXNBbGllbicgb29zKQorIAkgICAgd2hlcmUKKyAJCWlzQWxpZW4nIChfLCBP YmpPdXRwdXQge29vT2JzT2JqU3RhdGUgPSBvb3N9KSA9IGlzQWxpZW4gb29zCisg CisgCS0tIGRwU3dpdGNoIGZvciBub3cuIFRoaXMgbWFrZXMga2lsbC9zcGF3biBl dmVudHMgb2JzZXJ2YWJsZSwKKyAJLS0gYW5kIGFsbG93cyBmZWVkYmFjayB3aXRo b3V0IGlQcmUgKmluIHRoaXMgY2FzZSosIHNpbmNlIG9ubHkgdGhlCisgCS0tIHN3 aXRjaGluZyBkZXBlbmRzIG9uIHRoZSBmZWVkYmFjaywgYW5kIGhpdCBkZXRlY3Rp b24gZG9lcyBub3QKKyAJLS0gZGVwZW5kIG9uIGFueSBwYXJ0IG9mIHRoZSBmZWQt YmFjayBvdXRwdXQgdGhhdCBpbiB0dXJuIGRlcGVuZHMgb24KKyAJLS0gdGhlIGhp dCBkZXRlY3Rpb24uIEJ1dCB0aGlzIGlzIGEgcmVhbGx5IGZyYWdpbGUgcHJvcGVy dHkhCisgCS0tIE5vdCB0aGF0IG5vdFlldCBpcyBuZWVkZWQgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyIHBTd2ljdGNoIG9yCisgCS0tIGRwU3dpdGNoIGlzIHVzZWQuCisg ey0KKyAJZ2FtZScgOjogSUwgT2JqZWN0IC0+IFNGIChHYW1lSW5wdXQsIElMIE9i ak91dHB1dCkgKElMIE9iak91dHB1dCkKKyAJZ2FtZScgb2JqcyA9IGRwU3dpdGNo IHJvdXRlCisgCQkJICAgICAgb2JqcworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhcnIga2lsbE9yU3Bhd24gPj4+IG5vdFlldCkKKyAJCSAgICAgICAg ICAgICAgKFxzZnMnIGYgLT4gZ2FtZScgKGYgc2ZzJykpCisgLX0KKyAJLS0gU2xp Z2h0bHkgbW9yZSBlZmZpY2llbnQsIGFuZCBtYXliZSBjbGVhcmVyPworIAlnYW1l JyA6OiBJTCBPYmplY3QgLT4gU0YgKEdhbWVJbnB1dCwgSUwgT2JqT3V0cHV0KSAo SUwgT2JqT3V0cHV0KQorIAlnYW1lJyBvYmpzID0gZHBTd2l0Y2ggcm91dGUKKyAJ CQkgICAgICBvYmpzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v RXZlbnQgLS0+IGFyciBraWxsT3JTcGF3bikKKyAJCSAgICAgICAgICAgICAgKFxz ZnMnIGYgLT4gZ2FtZScgKGYgc2ZzJykpCisgCisgCisgICAgICAgICByb3V0ZSA6 OiAoR2FtZUlucHV0LCBJTCBPYmpPdXRwdXQpIC0+IElMIHNmIC0+IElMIChPYmpJ bnB1dCwgc2YpCisgCXJvdXRlIChnaSxvb3MpIG9ianMgPSBtYXBJTCByb3V0ZUF1 eCBvYmpzCisgCQorIAkgICAgd2hlcmUKKyAJCXJvdXRlQXV4IChrLCBvYmopID0K KyAJCSAgICAoT2JqSW5wdXQge29pSGl0ID0gaWYgayBgZWxlbWAgaHMKKyAJCQkJ ICAgICAgIHRoZW4gRXZlbnQgKCkKKyAJCQkJICAgICAgIGVsc2Ugbm9FdmVudCwK KyAJCQkgICAgICAgb2lHYW1lSW5wdXQgPSBnaX0sCisgCQkgICAgIG9iaikKKyAJ CWhzID0gaGl0cyAoYXNzb2NzSUwgKGZtYXAgb29PYnNPYmpTdGF0ZSBvb3MpKQor IAorIAorIAktLSBUaGlzIGNvdWxkIGJlIHJlZmluZWQgdG8gZnVsbC1mbGVkZ2Vk IGNvbGxpc2lvbiBkZXRlY3Rpb24gd2l0aAorIAktLSBjb21wdXRhdGlvbiBvZiBw cm9wZXIgaW1wdWxzZXMsIGFuZCBtZXJnaW5nIChhZGRpbmcpIG9mIG11bHRpcGxl CisgCS0tIGltcHVsc2VzIGluZmx1ZW5jaW5nIGEgc2lnbmxlIG9iamVjdC4KKyAJ aGl0cyA6OiBbKElMS2V5LCBPYnNPYmpTdGF0ZSldIC0+IFtJTEtleV0KKyAJaGl0 cyBrb29zcyA9IGNvbmNhdCAoaGl0c0F1eCBrb29zcykKKyAJICAgIHdoZXJlCisg CQloaXRzQXV4IFtdID0gW10KKyAJCWhpdHNBdXggKChrLG9vcyk6a29vc3MpID0K KyAJICAgICAgICAgICAgWyBbaywgayddIHwgKGsnLCBvb3MnKSA8LSBrb29zcywg b29zIGBoaXRgIG9vcycgXQorIAkJICAgICsrIGhpdHNBdXgga29vc3MKKyAJCisg CSAgICAgICAgb29zMSBgaGl0YCBvb3MyCisgCQkgICAgfCBpc01pc3NpbGUgb29z MSAmJiBpc0FsaWVuIG9vczIKKyAJICAgICAgICAgICAgICB8fCBpc0FsaWVuIG9v czEgJiYgaXNNaXNzaWxlIG9vczIgPSBvb3MxIGBjb2xsaWRpbmdgIG9vczIKKyAJ CSAgICB8IG90aGVyd2lzZSA9IEZhbHNlCisgCQorIAlraWxsT3JTcGF3biA6OiAo YSwgSUwgT2JqT3V0cHV0KSAtPiAoRXZlbnQgKElMIE9iamVjdCAtPiBJTCBPYmpl Y3QpKQorICAgICAgICAga2lsbE9yU3Bhd24gKF8sIG9vcykgPQorICAgICAgICAg ICAgIGZvbGRsIChtZXJnZUJ5ICguKSkgbm9FdmVudCBlcworICAgICAgICAgICAg IHdoZXJlCisgCSAgICAgICAgZXMgOjogW0V2ZW50IChJTCBPYmplY3QgLT4gSUwg T2JqZWN0KV0KKyAgICAgICAgICAgICAgICAgZXMgPSBbIG1lcmdlQnkgKC4pCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvb0tpbGxSZXEgb28gYHRh Z2AgKGRlbGV0ZUlMIGspKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZm1hcCAoZm9sZGwgKC4pIGlkIC4gbWFwIGluc2VydElMXykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9vU3Bhd25SZXEgb28pKQor ICAgICAgICAgICAgICAgICAgICAgIHwgKGssb28pIDwtIGFzc29jc0lMIG9vcyBd CisgCisgCisgcmVuZGVyU2NvcmUgOjogU2NvcmUgLT4gSEdMLkdyYXBoaWMKKyBy ZW5kZXJTY29yZSBzY29yZSA9IAorICAgICBIR0wud2l0aFRleHRDb2xvciAoY29s b3JUYWJsZSAhIFdoaXRlKSAkCisgICAgIEhHTC53aXRoVGV4dEFsaWdubWVudCAo SEdMLkxlZnQnLCBIR0wuVG9wKSAkCisgICAgIEhHTC50ZXh0IGdwIChzaG93IHNj b3JlKQorICAgICB3aGVyZQorIAlncCA9IHBvc2l0aW9uMlRvR1BvaW50IChQb2lu dDIgd29ybGRYTWluIHdvcmxkWU1heCkKZGlmZiAtY3JOIGFmcnAtMC40Lm9yaWcv ZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvT2JqZWN0QmVoYXZpb3IuaHMgYWZy cC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvT2JqZWN0QmVoYXZpb3Iu aHMKKioqIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMv T2JqZWN0QmVoYXZpb3IuaHMJMTk3MC0wMS0wMSAwOTowMDowMC4wMDAwMDAwMDAg KzA5MDAKLS0tIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL09i amVjdEJlaGF2aW9yLmhzCTIwMDQtMDMtMjMgMDc6NDg6NTUuMDAwMDAwMDAwICsw OTAwCioqKioqKioqKioqKioqKgoqKiogMCAqKioqCi0tLSAxLDI1NCAtLS0tCisg ey0gJElkOiBPYmplY3RCZWhhdmlvci5hcyx2IDEuMiAyMDAzLzExLzEwIDIxOjI4 OjU4IGFudG9ueSBFeHAgJAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJIE4gViBBIEQgRSBS IFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorICogICAgICAgTW9kdWxlOgkJT2JqZWN0QmVo YXZpb3IJCQkJCSAgICAgKgorICogICAgICAgUHVycG9zZToJQmVoYXZpb3Igb2Yg b2JqZWN0cy4JCQkJICAgICAqCisgKiAgICAgICBBdXRob3I6CQlIZW5yaWsgTmls c3NvbgkJCQkJICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CisgKiAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIFlhbGUgVW5pdmVyc2l0eSwg MjAwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgLX0KKyAKKyBtb2R1bGUgT2JqZWN0QmVoYXZpb3IgKAorICAgICBndW4s CS0tIDo6IFBvc2l0aW9uMiAtPiBPYmplY3QKKyAgICAgbWlzc2lsZSwgCS0tIDo6 IFBvc2l0aW9uMiAtPiBWZWxvY2l0eTIgLT4gT2JqZWN0CisgICAgIGFsaWVuIAkt LSA6OiBSYW5kb21HZW4gZyA9PiBnIC0+IFBvc2l0aW9uMiAtPiBPYmplY3QKKyAp IHdoZXJlCisgCisgaW1wb3J0IHF1YWxpZmllZCBSYW5kb20KKyAKKyBpbXBvcnQg QUZSUAorIGltcG9ydCBBRlJQVXRpbGl0aWVzCisgaW1wb3J0IEFGUlBHZW9tZXRy eQorIAorIGltcG9ydCBQaHlzaWNhbERpbWVuc2lvbnMKKyBpbXBvcnQgV29ybGRH ZW9tZXRyeQorIGltcG9ydCBQYXJzZXIKKyBpbXBvcnQgT2JqZWN0CisgCisgCisg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLS0gR3VuCisgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisgZ3VuIDo6IFBvc2l0aW9uMiAt PiBPYmplY3QKKyBndW4gKFBvaW50MiB4MCB5MCkgPSBwcm9jIChPYmpJbnB1dCB7 b2lHYW1lSW5wdXQgPSBnaX0pIC0+IGRvCisgICAgIC0tIFBvc2l0aW9uLgorICAg ICAoUG9pbnQyIHhkIF8pIDwtIHB0clBvcyAtPCBnaQkJLS0gRGVzaXJlZCBwb3Np dGlvbgorICAgICByZWMKKyAgICAgICAgIC0tIENvbnRyb2xsZXIuCisgICAgICAg ICBsZXQgYWQgPSAxMCAqICh4ZCAtIHgpIC0gNSAqIHYJCS0tIERlc2lyZWQgYWNj ZWxlcmF0aW9uCisgCisgICAgICAgICAtLSBQaHlzaWNzIHdpdGggaGFyZCBsaW1p dHMgb24gYWNjZWxlcmF0aW9uIGFuZCBzcGVlZC4KKyAgICAgICAgIHYgPC0gaW50 ZWdyYWwgLTwgbGV0IGEgPSBzeW1MaW1pdCBndW5BY2NNYXggYWQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgaW4KKyAJCQkgICAgIGlmICgtZ3VuU3BlZWRNYXgp IDw9IHYgJiYgdiA8PSBndW5TcGVlZE1heAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfHwgdiA8ICgtZ3VuU3BlZWRNYXgpICYmIGEgPiAwCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB2ID4gZ3VuU3BlZWRNYXgg JiYgYSA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gYQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAwCisgICAgICAgICB4 IDwtICh4MCspIF48PCBpbnRlZ3JhbCAtPCB2CisgCisgICAgIC0tIEZpcmUgbWVj aGFuaXNtIGFuZCBhbW11bml0aW9uIGxldmVsLgorICAgICB0cmlnZ2VyICAgICAg IDwtIGxicCAgICAgICAgICAgICAtPCBnaQorICAgICAobGV2ZWwsIGZpcmUpIDwt IG1hZ2F6aW5lIDIwIDAuNSAtPCB0cmlnZ2VyCisgCisgICAgIHJldHVybkEgLTwg T2JqT3V0cHV0IHsKKyAJICAgICAgICAgICBvb09ic09ialN0YXRlID0gb29zR3Vu IChQb2ludDIgeCB5MCkgKHZlY3RvcjIgdiAwKSBsZXZlbCwKKyAJCSAgIG9vS2ls bFJlcSAgICAgPSBub0V2ZW50LAorICAgICAgICAgICAgICAgICAgICBvb1NwYXdu UmVxICAgID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcmUgYHRhZ2AgW21p c3NpbGUgKFBvaW50MiB4ICh5MCArIChndW5IZWlnaHQvMikpKSAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlY3RvcjIgdiBt aXNzaWxlSW5pdGlhbFNwZWVkKV0KKyAgICAgICAgICAgICAgICB9CisgCisgCisg LS0gQW1tdW5pdGlvbiBtYWdhemluZS4gUmVsb2FkZWQgdXAgdG8gbWF4aW1hbAor IC0tIGNhcGFjaXR5IGF0IGNvbnN0YW50IHJhdGUuCisgLS0gbiAuLi4gTWF4aW1h bCBhbmQgaW5pdGlhbCBudW1iZXIgb2YgbWlzc2lsZXMuCisgLS0gZiAuLi4uLi4u Li4uCVJlbG9hZCByYXRlLgorIC0tIGlucHV0IC4uLi4uLglUcmlnZ2VyLgorIC0t IG91dHB1dCAuLi4uLglUdXBsZToKKyAtLSAgICMxOiBDdXJyZW50IG51bWJlciBv ZiBtaXNzaWxlcyBpbiBtYWdhemluZS4KKyAtLSAgICMyOiBNaXNzaWxlIGZpcmVk IGV2ZW50LgorIG1hZ2F6aW5lIDo6IAorICAgSW50IC0+IEZyZXF1ZW5jeSAKKyAg ICAgICAtPiBTRiAoRXZlbnQgKCkpIChJbnQsIEV2ZW50ICgpKQorIG1hZ2F6aW5l IG4gZiA9IHByb2MgdHJpZ2dlciAtPiBkbworICAgcmVsb2FkIDwtIHJlcGVhdGVk bHkgKDEvZikgKCkgLTwgKCkKKyAgIChsZXZlbCxjYW5GaXJlKSAKKyAgICAgICA8 LSBhY2N1bUhvbGQgKG4sVHJ1ZSkgLTwgCisgICAgICAgICAgICAgICh0cmlnZ2Vy IGB0YWdgIGRlYykKKyAgICAgICAgICAgICAgYGxNZXJnZWAgKHJlbG9hZCBgdGFn YCBpbmMpCisgICByZXR1cm5BIC08IChsZXZlbCwgCisgCSAgICAgIHRyaWdnZXIg YGdhdGVgIGNhbkZpcmUpCisgICB3aGVyZQorICAgICBpbmMgOjogKEludCxCb29s KSAtPiAoSW50LCBCb29sKQorICAgICBpbmMgKGwsXykgfCBsIDwgbiA9IChsICsg MSwgbCA+IDApCisgICAgICAgICAgICAgICB8IG90aGVyd2lzZSA9IChsLCBUcnVl KQorICAgICBkZWMgOjogKEludCxCb29sKSAtPiAoSW50LCBCb29sKQorICAgICBk ZWMgKGwsXykgfCBsID4gMCA9IChsIC0gMSwgVHJ1ZSkKKyAgICAgICAgICAgICAg IHwgb3RoZXJ3aXNlID0gKGwsIEZhbHNlKQorIAorIC0tIEFtbXVuaXRpb24gbWFn YXppbmUuIFJlbG9hZGVkIHVwIHRvIG1heGltYWwgY2FwYWNpdHkgYXQgY29uc3Rh bnQgcmF0ZS4KKyAtLSBuIC4uLi4uLi4uLi4JTWF4aW1hbCBhbmQgaW5pdGlhbCBu dW1iZXIgb2YgbWlzc2lsZXMuCisgLS0gZiAuLi4uLi4uLi4uCVJlbG9hZCByYXRl LgorIC0tIGlucHV0IC4uLi4uLglUcmlnZ2VyLgorIC0tIG91dHB1dCAuLi4uLglU dXBsZToKKyAtLQkJIzEgLi4uLglDdXJyZW50IG51bWJlciBvZiBtaXNzaWxlcyBp biBtYWdhemluZS4KKyAtLQkJIzIgLi4uLglNaXNzaWxlIGZpcmVkLgorIAorIHst CisgIEhlbnJpaydzIG9yaWdpbmFsIHZlcnNpb24sIGNvbW1lbnRlZCBvdXQgZm9y IG5vdzoKKyAKKyBtYWdhemluZSA6OiBJbnQgLT4gRnJlcXVlbmN5IC0+IFNGIChF dmVudCAoKSkgKEludCwgRXZlbnQgKCkpCisgbWFnYXppbmUgbiBmID0gcHJvYyB0 cmlnZ2VyIC0+IGRvCisgICAgIHJlbG9hZCAgICAgICA8LSByZXBlYXRlZGx5ICgx L2YpICgpICAgICAgLTwgKCkKKyAgICAgLS0gV2UgaGF2ZSBhIHJldmVyc2UgYXBw bGljYXRpb24gb3BlcmF0b3IgIywgYnV0IGZvciBzb21lIHJlYXNvbiBhcnJvd3AK KyAgICAgLS0gY2hva2VzIG9uICgjKS4KKyAgICAgbmV3TGV2ZWxGaXJlIDwtIGFj Y3VtRmlsdGVyIChmbGlwICgkKSkgbiAtPCAodHJpZ2dlciBgdGFnYCBkZWMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YGxNZXJnZWAgKHJlbG9hZCBgdGFnYCBpbmMpCisgICAgIGxldmVsICAgICAgICA8 LSBob2xkIG4gICAgICAgICAgICAgIC08IGZtYXAgZnN0IG5ld0xldmVsRmlyZQor ICAgICByZXR1cm5BIC08IChsZXZlbCwgZmlsdGVyRSBzbmQgbmV3TGV2ZWxGaXJl IGB0YWdgICgpKQorICAgICB3aGVyZQorIAktLSBpbmMsIGRlYyA6OiBJbnQgLT4g KEludCwgTWF5YmUgKEludCwgQm9vbCkpCisgCWluYyBsIHwgbCA8IG4gICAgID0g KGwgKyAxLCBKdXN0IChsICsgMSwgRmFsc2UpKQorICAgICAgICAgICAgICAgfCBv dGhlcndpc2UgPSAobCwgTm90aGluZykKKyAgICAgICAgIGRlYyBsIHwgbCA+IDAg ICAgID0gKGwgLSAxLCBKdXN0IChsIC0gMSwgVHJ1ZSkpCisgICAgICAgICAgICAg ICB8IG90aGVyd2lzZSA9IChsLCBOb3RoaW5nKQorIAorIC19CisgCisgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLS0gTWlzc2lsZQorIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorIC0tIE9mIGNvdXJzZSwgdGhpcyB3 b3VsZCBiZSBtdWNoIGJldHRlciBpZiB3ZSB1c2VkIHRoZSByZWFsIGltcHVsc2Ug c3R1ZmY6CisgLS0gTm8gYm9ndXMgaVByZSwgZm9yIGluc3RhbmNlLgorIG1pc3Np bGUgOjogUG9zaXRpb24yIC0+IFZlbG9jaXR5MiAtPiBPYmplY3QKKyBtaXNzaWxl IHAwIHYwID0gcHJvYyBvaSAtPiBkbworICAgICByZWMKKyAgICAgICAgIC0tIEJh c2ljIHBoeXNpY3MKKyAgICAgICAgIHZwICA8LSBpUHJlIHYwICAgICAgICAgICAg ICAgICAgICAgLTwgdgorICAgICAgICAgZmZpIDwtIGZvcmNlRmllbGQgICAgICAg ICAgICAgICAgICAtPCAocCwgdnApCisgICAgICAgICB2ICA8LSAodjAgXiteKSBe PDwgaW1wdWxzZUludGVncmFsIC08IChncmF2aXR5LCBmZmkpCisgCXAgIDwtIChw MCAuK14pIF48PCBpbnRlZ3JhbCAgICAgICAgLTwgdgorICAgICBkaWUgPC0gYWZ0 ZXIgbWlzc2lsZUxpZmVTcGFuICgpIC08ICgpCisgICAgIHJldHVybkEgLTwgT2Jq T3V0cHV0IHsKKyAJICAgICAgICAgICBvb09ic09ialN0YXRlID0gb29zTWlzc2ls ZSBwIHYsCisgCQkgICBvb0tpbGxSZXEgICAgID0gb2lIaXQgb2kgYGxNZXJnZWAg ZGllLAorICAgICAgICAgICAgICAgICAgICBvb1NwYXduUmVxICAgID0gbm9FdmVu dAorICAgICAgICAgICAgICAgIH0KKyAKKyAKKyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAtLSBBbGllbgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorIHR5cGUgU2hpZWxkTGV2ZWwgPSBEb3VibGUKKyAKKyAKKyAt LSBBbGllbiBiZWhhdmlvci4KKyAtLSBnIC4uLi4uLi4uLi4JUmFuZG9tIGdlbmVy YXRvci4KKyAtLSBwMCAuLi4uLi4uLi4JSW5pdGlhbCBwb3NpdGlvbi4KKyAtLSB2 eWQgLi4uLi4uLi4gRGVzaXJlZCB2ZXJ0aWNhbCBzcGVlZC4KKyAKKyBhbGllbiA6 OiBSYW5kb21HZW4gZyA9PiBnIC0+IFBvc2l0aW9uMiAtPiBWZWxvY2l0eSAtPiBP YmplY3QKKyBhbGllbiBnIHAwIHZ5ZCA9IHByb2Mgb2kgLT4gZG8KKyAgICAgcmVj CisgCS0tIFBpY2sgYSBkZXNpcmVkIGhvcml6b250YWwgcG9zaXRpb24uCisgICAg ICAgICByeCAgICAgPC0gbm9pc2VSICh3b3JsZFhNaW4sIHdvcmxkWE1heCkgZyAt PCAoKSAKKyAgICAgICAgIHNhbXBsZSA8LSBvY2Nhc2lvbmFsbHkgZyA1ICgpICAg ICAgICAgICAgIC08ICgpCisgICAgICAgICB4ZCAgICAgPC0gaG9sZCAocG9pbnQy WCBwMCkgICAgICAgICAgICAgICAtPCBzYW1wbGUgYHRhZ2AgcnggICAgCisgCQor ICAgICAgICAgLS0gQ29udHJvbGxlci4gQ29udHJvbCBjb25zdGFudHMgbm90IG9w dGltaXplZC4gV2hvIHNheXMgYWxpZW5zIGtub3cKKyAJLS0gYW55dGhpbmcgYWJv dXQgY29udHJvbCB0aGVvcnk/CisgICAgICAgICBsZXQgYXhkID0gNSAqICh4ZCAt IHBvaW50MlggcCkgLSAzICogKHZlY3RvcjJYIHYpCisgCSAgICBheWQgPSAyMCAq ICh2eWQgLSAodmVjdG9yMlkgdikpCisgCSAgICBhZCAgPSB2ZWN0b3IyIGF4ZCBh eWQKKyAJICAgIGggICA9IHZlY3RvcjJUaGV0YSBhZAorIAorIAktLSBQaHlzaWNz CisgCWxldCBhID0gdmVjdG9yMlBvbGFyIChtaW4gYWxpZW5BY2NNYXggKHZlY3Rv cjJSaG8gYWQpKSBoCisgICAgICAgICB2cCAgPC0gaVByZSB2MCAgICAgICAgICAg ICAgICAgICAgICAtPCB2CisgICAgICAgICBmZmkgPC0gZm9yY2VGaWVsZCAgICAg ICAgICAgICAgICAgICAtPCAocCwgdnApCisgICAgICAgICB2ICAgPC0gKHYwIF4r XikgXjw8IGltcHVsc2VJbnRlZ3JhbCAtPCAoZ3Jhdml0eSBeK14gYSwgZmZpKQor IAlwICAgPC0gKHAwIC4rXikgXjw8IGludGVncmFsICAgICAgICAtPCB2CisgCisg CS0tIFNoaWVsZHMKKyAJc2wgIDwtIHNoaWVsZCAtPCBvaUhpdCBvaQorIAlkaWUg PC0gZWRnZSAgIC08IHNsIDw9IDAKKyAKKyAgICAgcmV0dXJuQSAtPCBPYmpPdXRw dXQgeworIAkgICAgICAgICAgIG9vT2JzT2JqU3RhdGUgPSBvb3NBbGllbiBwIGgg diwKKyAJCSAgIG9vS2lsbFJlcSAgICAgPSBkaWUsCisgICAgICAgICAgICAgICAg ICAgIG9vU3Bhd25SZXEgICAgPSBub0V2ZW50CisgICAgICAgICAgICAgICAgfQor ICAgICB3aGVyZQorIAl2MCA9IHplcm9WZWN0b3IKKyAKKyAKKyBzaGllbGQgOjog U0YgKEV2ZW50ICgpKSBTaGllbGRMZXZlbAorIHNoaWVsZCA9IHByb2MgaGl0IC0+ IGRvCisgICAgIHJlYworIAlsZXQgcmVjaGFyZ2VSYXRlID0gaWYgc2wgPCBzbE1h eCB0aGVuIHNsTWF4IC8gMTAgZWxzZSAwCisgICAgICAgICBzbCA8LSAoc2xNYXgg KykgXjw8IGltcHVsc2VJbnRlZ3JhbCAtPCAocmVjaGFyZ2VSYXRlLCBoaXQgYHRh Z2AgZGFtYWdlKQorICAgICByZXR1cm5BIC08IHNsCisgICAgIHdoZXJlCisgICAg ICAgICBzbE1heCAgPSAxMDAKKyAgICAgICAgIGRhbWFnZSA9IC01MAorIAorIAor IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0tIEZvcmNlIGZpZWxk cyBhY3Rpbmcgb24gb2JqZWN0cworIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorIC0tIE9iamVjdCBhcmUgc3ViamVjdCB0byBncmF2aXR5IGFuZCBh IHN0cmFuZ2UgcmVwZWxsZW50IGZvcmNlZmllbGQgdGhhdAorIC0tIGRyaXZlcyBv YmplY3RzIGF3YXkgZnJvbSB0aGUgZWRnZXMsIGVmZmVjdGl2ZWx5IGNyZWF0aW5n IGEgY29ycmlkb3IuCisgLS0gVGhlIHN0cmFuZ2UgZmllbGQgaXMgaW52ZXJzZWx5 IHByb3BvcnRpb25hbCB0byB0aGUgY3ViZSBvZiB0aGUgZGlzdGFuY2UKKyAtLSBm cm9tIGVpdGhlciBlZGdlLiBJdCBpcyB0aG91Z2h0IHRoYXQgdGhlIGZpZWxkIGlz IGEgcmVtbmFudCBvZiBhIGRlZmVuY2UKKyAtLSBzeXN0ZW0gcHV0IGluIHBsYWNl IGJ5IHRoZSBteXRoaWNhbCBhbmQgdGVjaG5vbG9naWNhbGx5IGFkdmFuY2VkCisg LS0gIlByZWRlY2Vzc29ycyIgZW9ucyBhZ28uCisgCisgey0KKyBmaWVsZCA6OiBQ b3NpdGlvbjIgLT4gQWNjZWxlcmF0aW9uMgorIGZpZWxkIChQb2ludDIgeCBfKSA9 IHZlY3RvcjIgKGxlZnRBY2MgLSByaWdodEFjYykgMCBeK14gZ3Jhdml0eQorICAg ICB3aGVyZQorIAlsZWZ0QWNjICA9IG1pbiAoaWYgeCA+IHdvcmxkWE1pbgorICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZW4gayAvICh4IC0gd29ybGRYTWluKV4z CisgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtYXhBY2MpCisgICAgICAg ICAgICAgICAgICAgICAgICBtYXhBY2MKKyAJcmlnaHRBY2MgPSBtaW4gKGlmIHgg PCB3b3JsZFhNYXgKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGsgLyAo d29ybGRYTWF4IC0geCleMworICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug bWF4QWNjKQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4QWNjCisgICAgICAg ICBrICAgICAgICA9IDEwMDAwMDAwCisgICAgICAgICBtYXhBY2MgICA9IDEwMDAw CisgLX0KKyAKKyAtLSBOZXcgYXR0ZW1wdC4gRm9yY2UgZmllbGRzIGFjdCBsaWtl IGludmlzaWJsZSB3YWxscy4KKyAtLSBUaGUgZmFjdCB0aGF0IHRoaXMgaXMgYSBz dGF0ZWZ1bCAqc2lnbmFsKiBmdW5jdGlvbiAoRmllbGRzIGhhdmluZyBzdGF0ZT8K KyAtLSBDb21lIG9uIC4uLiksIGNhbiBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBmYWN0 IHRoYXQgd2UgYXJlIGNoZWF0aW5nIGluIHRoZQorIC0tIGZpcnN0IHBsYWNlIGJ5 IGFic3RyYWN0aW5nIGV2ZW50cyBvZiBzaG9ydCBkdXJhdGlvbiB0byBpbnN0YW50 YW5lb3VzCisgLS0gZXZlbnRzLiAiZmllbGQiIGJlaW5nIGEgc3RhdGVmdWwgc2ln bmFsIGZ1bmN0aW8gaXMgcGFydCBvZiB0aGUgcHJpY2UKKyAtLSBvbmUgaGF2ZSB0 byBwYXkgZm9yIHRoYXQgdG8gbWFrZSB0aGlzIHdvcmsgaW4gcHJhY3RpY2UuCisg CisgZm9yY2VGaWVsZCA6OiBTRiAoUG9zaXRpb24yLCBWZWxvY2l0eTIpIChFdmVu dCBBY2NlbGVyYXRpb24yKQorIGZvcmNlRmllbGQgPSBwcm9jIChwLCB2KSAtPiBk bworICAgICBsZmkgICAgPC0gZWRnZSAgICAtPCBwb2ludDJYIHAgPCB3b3JsZFhN aW4gJiYgdmVjdG9yMlggdiA8IDAKKyAgICAgcmZpICAgIDwtIGVkZ2UgICAgLTwg cG9pbnQyWCBwID4gd29ybGRYTWF4ICYmIHZlY3RvcjJYIHYgPiAwCisgICAgIHJl dHVybkEgLTwgKG1lcmdlQnkgKF4rXikgKGxmaSBgdGFnYCAodmVjdG9yMiAoLTIg KiB2ZWN0b3IyWCB2KSAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocmZpIGB0YWdgICh2ZWN0b3IyICgtMiAqIHZlY3RvcjJYIHYpIDApKSkKKyAK KyAKKyBncmF2aXR5ID0gdmVjdG9yMiAwICgtMjApCisgCisgCisgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLS0gU3VwcG9ydAorIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorIGxpbWl0IGxsIHVsIHggPSBpZiB4IDwg bGwgdGhlbiBsbCBlbHNlIGlmIHggPiB1bCB0aGVuIHVsIGVsc2UgeAorIAorIHN5 bUxpbWl0IGwgPSBsZXQgYWJzbCA9IGFicyBsIGluIGxpbWl0ICgtYWJzbCkgYWJz bApkaWZmIC1jck4gYWZycC0wLjQub3JpZy9leGFtcGxlcy9TcGFjZUludmFkZXJz L3NyYy9QYXJzZXIuaHMgYWZycC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9z cmMvUGFyc2VyLmhzCioqKiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1NwYWNlSW52 YWRlcnMvc3JjL1BhcnNlci5ocwkyMDA0LTAzLTIzIDA3OjQ4OjU1LjAwMDAwMDAw MCArMDkwMAotLS0gYWZycC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMv UGFyc2VyLmhzCTIwMDUtMDctMzEgMTA6Mzc6NTQuMDAwMDAwMDAwICswOTAwCioq KioqKioqKioqKioqKgoqKiogMzUsNDEgKioqKgogICkgd2hlcmUKICAKICBpbXBv cnQgTWF5YmUgKGlzTm90aGluZywgaXNKdXN0KQohIGltcG9ydCBxdWFsaWZpZWQg R3JhcGhpY3MuSEdMLlV0aWxzIGFzIEhHTCAoRXZlbnQoLi4pKQogIGltcG9ydCBD aGFyIChvcmQsIGlzU3BhY2UsIGlzRGlnaXQpCiAgCiAgaW1wb3J0IEFGUlAKLS0t IDM1LDQxIC0tLS0KICApIHdoZXJlCiAgCiAgaW1wb3J0IE1heWJlIChpc05vdGhp bmcsIGlzSnVzdCkKISBpbXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTCBhcyBI R0wgKEV2ZW50KC4uKSkKICBpbXBvcnQgQ2hhciAob3JkLCBpc1NwYWNlLCBpc0Rp Z2l0KQogIAogIGltcG9ydCBBRlJQCmRpZmYgLWNyTiBhZnJwLTAuNC5vcmlnL2V4 YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL1JlbmRlckxhbmRzY2FwZS5ocyBhZnJw LTAuNC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9SZW5kZXJMYW5kc2NhcGUu aHMKKioqIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMv UmVuZGVyTGFuZHNjYXBlLmhzCTIwMDQtMDMtMjMgMDc6NDg6NTUuMDAwMDAwMDAw ICswOTAwCi0tLSBhZnJwLTAuNC9leGFtcGxlcy9TcGFjZUludmFkZXJzL3NyYy9S ZW5kZXJMYW5kc2NhcGUuaHMJMjAwNS0wNy0zMSAxMDozODo0Ni4wMDAwMDAwMDAg KzA5MDAKKioqKioqKioqKioqKioqCioqKiAxNiwyMiAqKioqCiAgKSB3aGVyZQog IAogIGltcG9ydCBBcnJheQohIGltcG9ydCBxdWFsaWZpZWQgR3JhcGhpY3MuSEdM LlV0aWxzIGFzIEhHTAogIAogIGltcG9ydCBBRlJQUG9pbnQyIChQb2ludDIoLi4p KQogIAotLS0gMTYsMjIgLS0tLQogICkgd2hlcmUKICAKICBpbXBvcnQgQXJyYXkK ISBpbXBvcnQgcXVhbGlmaWVkIEdyYXBoaWNzLkhHTCBhcyBIR0wKICAKICBpbXBv cnQgQUZSUFBvaW50MiAoUG9pbnQyKC4uKSkKICAKZGlmZiAtY3JOIGFmcnAtMC40 Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZhZGVycy9zcmMvUmVuZGVyT2JqZWN0Lmhz IGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL1JlbmRlck9iamVj dC5ocwoqKiogYWZycC0wLjQub3JpZy9leGFtcGxlcy9TcGFjZUludmFkZXJzL3Ny Yy9SZW5kZXJPYmplY3QuaHMJMjAwNC0wMy0yMyAwNzo0ODo1NS4wMDAwMDAwMDAg KzA5MDAKLS0tIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52YWRlcnMvc3JjL1Jl bmRlck9iamVjdC5ocwkyMDA1LTA3LTMxIDEwOjM4OjI4LjAwMDAwMDAwMCArMDkw MAoqKioqKioqKioqKioqKioKKioqIDE2LDIyICoqKioKICApIHdoZXJlCiAgCiAg aW1wb3J0IEFycmF5CiEgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5IR0wuVXRp bHMgYXMgSEdMCiAgaW1wb3J0IEFGUlBHZW9tZXRyeQogIAogIGltcG9ydCBQaHlz aWNhbERpbWVuc2lvbnMKLS0tIDE2LDIyIC0tLS0KICApIHdoZXJlCiAgCiAgaW1w b3J0IEFycmF5CiEgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5IR0wgYXMgSEdM CiAgaW1wb3J0IEFGUlBHZW9tZXRyeQogIAogIGltcG9ydCBQaHlzaWNhbERpbWVu c2lvbnMKZGlmZiAtY3JOIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvU3BhY2VJbnZh ZGVycy9zcmMvU2ltcGxlR3VuLmhzIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNlSW52 YWRlcnMvc3JjL1NpbXBsZUd1bi5ocwoqKiogYWZycC0wLjQub3JpZy9leGFtcGxl cy9TcGFjZUludmFkZXJzL3NyYy9TaW1wbGVHdW4uaHMJMTk3MC0wMS0wMSAwOTow MDowMC4wMDAwMDAwMDAgKzA5MDAKLS0tIGFmcnAtMC40L2V4YW1wbGVzL1NwYWNl SW52YWRlcnMvc3JjL1NpbXBsZUd1bi5ocwkyMDA0LTAzLTIzIDA3OjQ4OjU1LjAw MDAwMDAwMCArMDkwMAoqKioqKioqKioqKioqKioKKioqIDAgKioqKgotLS0gMSwy MDggLS0tLQorIHstICRJZDogU2ltcGxlR3VuLmFzLHYgMS4yIDIwMDMvMTEvMTAg MjE6Mjg6NTggYW50b255IEV4cCAkCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgTiBWIEEg RCBFIFIgUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICBNb2R1bGU6CQlTaW1w bGVHdW4JCQkJCSAgICAgKgorICogICAgICAgUHVycG9zZToJQSBzaW1wbGUgZ3Vu IGFzIGEgc2lnbmFsIGZ1bmN0aW9uICAgICAgICAJICAgICAqCisgKiAgICAgICBB dXRob3I6CQlBbnRvbnkgQ291cnRuZXkJCQkJCSAgICAgKgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgQ29weXJpZ2h0IChj KSBZYWxlIFVuaXZlcnNpdHksIDIwMDMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorIC19CisgCisgbW9kdWxlIFNpbXBsZUd1 biAoCisgICAgIHNpbXBsZUd1bk9iamVjdCAtLSA6OiBPYmplY3QKKyApIHdoZXJl CisgCisgaW1wb3J0IHF1YWxpZmllZCBSYW5kb20KKyAKKyBpbXBvcnQgQUZSUAor IGltcG9ydCBBRlJQVXRpbGl0aWVzCisgaW1wb3J0IEFGUlBHZW9tZXRyeQorIAor IGltcG9ydCBQaHlzaWNhbERpbWVuc2lvbnMKKyBpbXBvcnQgV29ybGRHZW9tZXRy eQorIGltcG9ydCBQYXJzZXIKKyBpbXBvcnQgT2JqZWN0CisgCisgCisgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLS0gR3VuCisgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisgZGF0YSBTaW1wbGVHdW5TdGF0ZSA9IFNp bXBsZUd1blN0YXRlIHsKKyAgIHNnc1BvcyA6OiBQb3NpdGlvbjIsCisgICBzZ3NW ZWwgOjogVmVsb2NpdHkyLAorICAgc2dzRmlyZWQgOjogRXZlbnQgKCkKKyB9Cisg CisgdHlwZSBTaW1wbGVHdW4gPSBTRiBHYW1lSW5wdXQgU2ltcGxlR3VuU3RhdGUK KyAKKyBzaW1wbGVHdW4gOjogUG9zaXRpb24yIC0+IFNpbXBsZUd1bgorIHNpbXBs ZUd1biAoUG9pbnQyIHgwIHkwKSA9IHByb2MgZ2kgLT4gZG8KKyAgIC0tIERlc2ly ZWQgcG9zaXRpb246CisgICAoUG9pbnQyIHhkIF8pIDwtIHB0clBvcyAtPCBnaQor ICAgcmVjCisgICAgIC0tIENvbnRyb2xsZXIuCisgICAgIC0tIERlc2lyZWQgYWNj ZWxlcmF0aW9uOgorICAgICBsZXQgYWQgPSAxMCAqICh4ZCAtIHgpIC0gNSAqIHYK KyAKKyAgICAgLS0gYmFzaWMgcGh5c2ljczoKKyAgICAgdiA8LSBpbnRlZ3JhbCAt PCBjbGFtcEFjYyB2IGFkCisgICAgIHggPC0gKHgwKykgXjw8IGludGVncmFsIC08 IHYKKyAKKyAgIGZpcmUgPC0gbGJwIC08IGdpCisgICByZXR1cm5BIC08IFNpbXBs ZUd1blN0YXRlIHsKKyAgICAgICAgICAgICAgICBzZ3NQb3MgPSAoUG9pbnQyIHgg eTApLAorICAgICAgICAgICAgICAgIHNnc1ZlbCA9ICh2ZWN0b3IyIHYgMCksCisg ICAgICAgICAgICAgICAgc2dzRmlyZWQgPSBmaXJlCisgICAgICAgICAgICAgIH0g ICAgICAgICAgICAgICAgIAorIAorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIC0tIFN1cHBvcnQKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKyAtLSBDb21wdXRlIGFjdHVhbCBhY2NlbGVyYXRpb24gZnJvbQorIC0t IGRlc2lyZWQgYWNjZWxlcmF0aW9uIGJ5IHNldHRpbmcKKyAtLSBoYXJkIGxpbWl0 cyBvbiBhY2NlbGVyYXRpb24gYW5kIHZlbG9jaXR5OgorIGNsYW1wQWNjIHYgYWQg PSAKKyAgIGxldCBhID0gc3ltTGltaXQgZ3VuQWNjTWF4IGFkCisgICBpbiBpZiAo LWd1blNwZWVkTWF4KSA8PSB2ICYmIHYgPD0gZ3VuU3BlZWRNYXgKKyAgICAgICAg IHx8IHYgPCAoLWd1blNwZWVkTWF4KSAmJiBhID4gMAorICAgICAgICAgfHwgdiA+ IGd1blNwZWVkTWF4ICYmIGEgPCAwCisgICAgICB0aGVuIGEKKyAgICAgIGVsc2Ug MAorIAorIGxpbWl0IGxsIHVsIHggPSBpZiB4IDwgbGwgdGhlbiBsbCBlbHNlIGlm IHggPiB1bCB0aGVuIHVsIGVsc2UgeAorIAorIHN5bUxpbWl0IGwgPSBsZXQgYWJz bCA9IGFicyBsIGluIGxpbWl0ICgtYWJzbCkgYWJzbAorIAorIC0tIFdlIHJlYWxs eSBhdWdodCB0byB0ZXN0IHRoaXMsIGJ1dCB3ZSdsbCBqdXN0IHNldHRsZSBmb3Ig dHlwZSBjaGVja2luZworIC0tIGZvciBub3csIHNpbmNlIHdlIGtub3cgdGhlIGd1 biB3b3Jrcy4uLgorIHNpbXBsZUd1bk9iamVjdCA6OiBPYmplY3QKKyBzaW1wbGVH dW5PYmplY3QgPSB1bmRlZmluZWQKKyAKKyAtLSBTaW5jZSB0aGlzIGZpbGUgZG9l c24ndCBpbXBvcnQgT2JqZWN0QmVoYXZpb3IsIEknbSBnb2luZyB0byBwbGFjZSBh CisgLS0gY291cGxlIG9mIHZlcnNpb25zIG9mIHRoZSBjb2RlIGZvciBPYmplY3RC ZWhhdmlvci5ndW4gaGVyZS4gIFRoZXNlCisgLS0gY29ycmVzcG9uZCBleGFjdGx5 IHdpdGggd2hhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIHBhcGVyOyB0aGV5IGFyZQor IC0tIGNvcGllZCBoZXJlIGp1c3QgdG8gZW5zdXJlIHdlIGRvbid0IG1ha2UgYW55 IG9idmlvdXMgbWlzdGFrZXMKKyAtLSB0aGF0IGNvdWxkIGJlIGNhdWdodCBieSBw YXJzaW5nIC8gdHlwZWNoZWNraW5nLgorIAorIC0tICpzaWdoKi4gIFNvIG11Y2gg Zm9yIHR5cGVjaGVja2luZy4uLndlIGhhdmUgdG8gY29tbWVudCB0aGlzIG91dCBh bnl3YXksCisgLS0gYmVjYXVzZSBvb3NHdW4gaXMgdW5kZWZpbmVkLgorIHstCisg Z3VuIDo6IFBvc2l0aW9uMiAtPiBPYmplY3QKKyBndW4gKFBvaW50MiB4MCB5MCkg PSBwcm9jIG9iakluIC0+IGRvCisgICBsZXQgZ2kgPSBvaUdhbWVJbnB1dCBvYmpJ bgorICAgLS0gRGVzaXJlZCBwb3NpdGlvbjoKKyAgIChQb2ludDIgeGQgXykgPC0g cHRyUG9zIC08IGdpCisgICByZWMKKyAgICAgLS0gQ29udHJvbGxlci4KKyAgICAg LS0gRGVzaXJlZCBhY2NlbGVyYXRpb246CisgICAgIGxldCBhZCA9IDEwICogKHhk IC0geCkgLSA1ICogdgorIAorICAgICAtLSBiYXNpYyBwaHlzaWNzOgorICAgICB2 IDwtIGludGVncmFsIC08IGNsYW1wQWNjIHYgYWQKKyAgICAgeCA8LSAoeDArKSBe PDwgaW50ZWdyYWwgLTwgdgorIAorICAgZmlyZSA8LSBsYnAgLTwgZ2kKKyAgIHJl dHVybkEgLTwgCisgICAgIE9iak91dHB1dCB7CisgICAgICAgb29PYnNPYmpTdGF0 ZSA9IG9vc0d1biAoUG9pbnQyIHggeTApIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHZlY3RvcjIgdiAwKSwKKyAgICAgICBvb0tpbGxSZXEgICAgID0g bm9FdmVudCwKKyAgICAgICBvb1NwYXduUmVxICAgID0gCisgICAgICAgICBmaXJl IGB0YWdgIAorICAgICAgICAgICBbbWlzc2lsZSAoUG9pbnQyIHggKHkwICsgKGd1 bkhlaWdodC8yKSkpIAorICAgICAgICAgICAgICAgICAgICAodmVjdG9yMiB2IG1p c3NpbGVJbml0aWFsU3BlZWQpXQorICAgICB9CisgLX0KKyAKKyAtLSBBbW11bml0 aW9uIG1hZ2F6aW5lLiBSZWxvYWRlZCB1cCB0byBtYXhpbWFsCisgLS0gY2FwYWNp dHkgYXQgY29uc3RhbnQgcmF0ZS4KKyAtLSBuIC4uLiBNYXhpbWFsIGFuZCBpbml0 aWFsIG51bWJlciBvZiBtaXNzaWxlcy4KKyAtLSBmIC4uLi4uLi4uLi4JUmVsb2Fk IHJhdGUuCisgLS0gaW5wdXQgLi4uLi4uCVRyaWdnZXIuCisgLS0gb3V0cHV0IC4u Li4uCVR1cGxlOgorIC0tICAgIzE6IEN1cnJlbnQgbnVtYmVyIG9mIG1pc3NpbGVz IGluIG1hZ2F6aW5lLgorIC0tICAgIzI6IE1pc3NpbGUgZmlyZWQgZXZlbnQuCisg bWFnYXppbmUgOjogCisgICBJbnQgLT4gRnJlcXVlbmN5IAorICAgICAgIC0+IFNG IChFdmVudCAoKSkgKEludCwgRXZlbnQgKCkpCisgbWFnYXppbmUgbiBmID0gcHJv YyB0cmlnZ2VyIC0+IGRvCisgICByZWxvYWQgPC0gcmVwZWF0ZWRseSAoMS9mKSAo KSAtPCAoKQorICAgKGxldmVsLGNhbkZpcmUpIAorICAgICAgIDwtIGFjY3VtSG9s ZCAobixUcnVlKSAtPCAKKyAgICAgICAgICAgICAgKHRyaWdnZXIgYHRhZ2AgZGVj KQorICAgICAgICAgICAgICBgbE1lcmdlYCAocmVsb2FkIGB0YWdgIGluYykKKyAg IHJldHVybkEgLTwgKGxldmVsLCAKKyAJICAgICAgdHJpZ2dlciBgZ2F0ZWAgY2Fu RmlyZSkKKyAgIHdoZXJlCisgICAgIGluYyA6OiAoSW50LEJvb2wpIC0+IChJbnQs IEJvb2wpCisgICAgIGluYyAobCxfKSB8IGwgPCBuID0gKGwgKyAxLCBsID4gMCkK KyAgICAgICAgICAgICAgIHwgb3RoZXJ3aXNlID0gKGwsIFRydWUpCisgICAgIGRl YyA6OiAoSW50LEJvb2wpIC0+IChJbnQsIEJvb2wpCisgICAgIGRlYyAobCxfKSB8 IGwgPiAwID0gKGwgLSAxLCBUcnVlKQorICAgICAgICAgICAgICAgfCBvdGhlcndp c2UgPSAobCwgRmFsc2UpCisgCisgLS0gT2YgY291cnNlLCB0aGlzIHdvdWxkIGJl IG11Y2ggYmV0dGVyIGlmIHdlIHVzZWQgdGhlIHJlYWwgaW1wdWxzZSBzdHVmZjoK KyAtLSBObyBib2d1cyBpUHJlLCBmb3IgaW5zdGFuY2UuCisgbWlzc2lsZSA6OiBQ b3NpdGlvbjIgLT4gVmVsb2NpdHkyIC0+IE9iamVjdAorIG1pc3NpbGUgcDAgdjAg PSBwcm9jIG9pIC0+IGRvCisgICAgIHJlYworICAgICAgICAgLS0gQmFzaWMgcGh5 c2ljcworICAgICAgICAgdnAgIDwtIGlQcmUgdjAgICAgICAgICAgICAgICAgICAg ICAtPCB2CisgICAgICAgICBmZmkgPC0gZm9yY2VGaWVsZCAgICAgICAgICAgICAg ICAgIC08IChwLCB2cCkKKyAgICAgICAgIHYgIDwtICh2MCBeK14pIF48PCBpbXB1 bHNlSW50ZWdyYWwgLTwgKGdyYXZpdHksIGZmaSkKKyAJcCAgPC0gKHAwIC4rXikg Xjw8IGludGVncmFsICAgICAgICAtPCB2CisgICAgIGRpZSA8LSBhZnRlciBtaXNz aWxlTGlmZVNwYW4gKCkgLTwgKCkKKyAgICAgcmV0dXJuQSAtPCBPYmpPdXRwdXQg eworIAkgICAgICAgICAgIG9vT2JzT2JqU3RhdGUgPSBvb3NNaXNzaWxlIHAgdiwK KyAJCSAgIG9vS2lsbFJlcSAgICAgPSBvaUhpdCBvaSBgbE1lcmdlYCBkaWUsCisg ICAgICAgICAgICAgICAgICAgIG9vU3Bhd25SZXEgICAgPSBub0V2ZW50CisgICAg ICAgICAgICAgICAgfQorIAorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIC0tIEZvcmNlIGZpZWxkcyBhY3Rpbmcgb24gb2JqZWN0cworIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorIC0tIE9iamVjdCBhcmUgc3ViamVj dCB0byBncmF2aXR5IGFuZCBhIHN0cmFuZ2UgcmVwZWxsZW50IGZvcmNlZmllbGQg dGhhdAorIC0tIGRyaXZlcyBvYmplY3RzIGF3YXkgZnJvbSB0aGUgZWRnZXMsIGVm ZmVjdGl2ZWx5IGNyZWF0aW5nIGEgY29ycmlkb3IuCisgLS0gVGhlIHN0cmFuZ2Ug ZmllbGQgaXMgaW52ZXJzZWx5IHByb3BvcnRpb25hbCB0byB0aGUgY3ViZSBvZiB0 aGUgZGlzdGFuY2UKKyAtLSBmcm9tIGVpdGhlciBlZGdlLiBJdCBpcyB0aG91Z2h0 IHRoYXQgdGhlIGZpZWxkIGlzIGEgcmVtbmFudCBvZiBhIGRlZmVuY2UKKyAtLSBz eXN0ZW0gcHV0IGluIHBsYWNlIGJ5IHRoZSBteXRoaWNhbCBhbmQgdGVjaG5vbG9n aWNhbGx5IGFkdmFuY2VkCisgLS0gIlByZWRlY2Vzc29ycyIgZW9ucyBhZ28uCisg Cisgey0KKyBmaWVsZCA6OiBQb3NpdGlvbjIgLT4gQWNjZWxlcmF0aW9uMgorIGZp ZWxkIChQb2ludDIgeCBfKSA9IHZlY3RvcjIgKGxlZnRBY2MgLSByaWdodEFjYykg MCBeK14gZ3Jhdml0eQorICAgICB3aGVyZQorIAlsZWZ0QWNjICA9IG1pbiAoaWYg eCA+IHdvcmxkWE1pbgorICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gayAv ICh4IC0gd29ybGRYTWluKV4zCisgICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZSBtYXhBY2MpCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhBY2MKKyAJcmln aHRBY2MgPSBtaW4gKGlmIHggPCB3b3JsZFhNYXgKKyAgICAgICAgICAgICAgICAg ICAgICAgICB0aGVuIGsgLyAod29ybGRYTWF4IC0geCleMworICAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2UgbWF4QWNjKQorICAgICAgICAgICAgICAgICAgICAg ICAgbWF4QWNjCisgICAgICAgICBrICAgICAgICA9IDEwMDAwMDAwCisgICAgICAg ICBtYXhBY2MgICA9IDEwMDAwCisgLX0KKyAKKyAtLSBOZXcgYXR0ZW1wdC4gRm9y Y2UgZmllbGRzIGFjdCBsaWtlIGludmlzaWJsZSB3YWxscy4KKyAtLSBUaGUgZmFj dCB0aGF0IHRoaXMgaXMgYSBzdGF0ZWZ1bCAqc2lnbmFsKiBmdW5jdGlvbiAoRmll bGRzIGhhdmluZyBzdGF0ZT8KKyAtLSBDb21lIG9uIC4uLiksIGNhbiBiZSBhdHRy aWJ1dGVkIHRvIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGNoZWF0aW5nIGluIHRoZQor IC0tIGZpcnN0IHBsYWNlIGJ5IGFic3RyYWN0aW5nIGV2ZW50cyBvZiBzaG9ydCBk dXJhdGlvbiB0byBpbnN0YW50YW5lb3VzCisgLS0gZXZlbnRzLiAiZmllbGQiIGJl aW5nIGEgc3RhdGVmdWwgc2lnbmFsIGZ1bmN0aW8gaXMgcGFydCBvZiB0aGUgcHJp Y2UKKyAtLSBvbmUgaGF2ZSB0byBwYXkgZm9yIHRoYXQgdG8gbWFrZSB0aGlzIHdv cmsgaW4gcHJhY3RpY2UuCisgCisgZm9yY2VGaWVsZCA6OiBTRiAoUG9zaXRpb24y LCBWZWxvY2l0eTIpIChFdmVudCBBY2NlbGVyYXRpb24yKQorIGZvcmNlRmllbGQg PSBwcm9jIChwLCB2KSAtPiBkbworICAgICBsZmkgICAgPC0gZWRnZSAgICAtPCBw b2ludDJYIHAgPCB3b3JsZFhNaW4gJiYgdmVjdG9yMlggdiA8IDAKKyAgICAgcmZp ICAgIDwtIGVkZ2UgICAgLTwgcG9pbnQyWCBwID4gd29ybGRYTWF4ICYmIHZlY3Rv cjJYIHYgPiAwCisgICAgIHJldHVybkEgLTwgKG1lcmdlQnkgKF4rXikgKGxmaSBg dGFnYCAodmVjdG9yMiAoLTIgKiB2ZWN0b3IyWCB2KSAwKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocmZpIGB0YWdgICh2ZWN0b3IyICgtMiAqIHZl Y3RvcjJYIHYpIDApKSkKKyAKKyAKKyBncmF2aXR5ID0gdmVjdG9yMiAwICgtMjAp CmRpZmYgLWNyTiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1NwYWNlSW52YWRlcnMv c3JjL1dvcmxkR2VvbWV0cnkuaHMgYWZycC0wLjQvZXhhbXBsZXMvU3BhY2VJbnZh ZGVycy9zcmMvV29ybGRHZW9tZXRyeS5ocwoqKiogYWZycC0wLjQub3JpZy9leGFt cGxlcy9TcGFjZUludmFkZXJzL3NyYy9Xb3JsZEdlb21ldHJ5LmhzCTIwMDQtMDMt MjMgMDc6NDg6NTUuMDAwMDAwMDAwICswOTAwCi0tLSBhZnJwLTAuNC9leGFtcGxl cy9TcGFjZUludmFkZXJzL3NyYy9Xb3JsZEdlb21ldHJ5LmhzCTIwMDUtMDctMzEg MTA6Mzc6MjQuMDAwMDAwMDAwICswOTAwCioqKioqKioqKioqKioqKgoqKiogMTYs MjIgKioqKgogIAogIGltcG9ydCBBRlJQUG9pbnQyIChQb2ludDIoLi4pKQogIGlt cG9ydCBQaHlzaWNhbERpbWVuc2lvbnMKISBpbXBvcnQgcXVhbGlmaWVkIEdyYXBo aWNzLkhHTC5VdGlscyBhcyBIR0wgKFBvaW50KQogIAogIAogIC0tIEV2ZXJ5dGhp bmcgaW4gdGhlIHdvcmxkIGlzIG1lYXN1cmVkIGluIG1ldGVycy4KLS0tIDE2LDIy IC0tLS0KICAKICBpbXBvcnQgQUZSUFBvaW50MiAoUG9pbnQyKC4uKSkKICBpbXBv cnQgUGh5c2ljYWxEaW1lbnNpb25zCiEgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGlj cy5IR0wgYXMgSEdMIChQb2ludCkKICAKICAKICAtLSBFdmVyeXRoaW5nIGluIHRo ZSB3b3JsZCBpcyBtZWFzdXJlZCBpbiBtZXRlcnMuCkJpbmFyeSBmaWxlcyBhZnJw LTAuNC5vcmlnL2V4YW1wbGVzL1RhaWxnYXRpbmdEZXRlY3Rvci8uRFNfU3RvcmUg YW5kIGFmcnAtMC40L2V4YW1wbGVzL1RhaWxnYXRpbmdEZXRlY3Rvci8uRFNfU3Rv cmUgZGlmZmVyCmRpZmYgLWNyTiBhZnJwLTAuNC5vcmlnL2V4YW1wbGVzL1RhaWxn YXRpbmdEZXRlY3Rvci9UYWlsZ2F0aW5nRGV0ZWN0b3IuaHMgYWZycC0wLjQvZXhh bXBsZXMvVGFpbGdhdGluZ0RldGVjdG9yL1RhaWxnYXRpbmdEZXRlY3Rvci5ocwoq KiogYWZycC0wLjQub3JpZy9leGFtcGxlcy9UYWlsZ2F0aW5nRGV0ZWN0b3IvVGFp bGdhdGluZ0RldGVjdG9yLmhzCTE5NzAtMDEtMDEgMDk6MDA6MDAuMDAwMDAwMDAw ICswOTAwCi0tLSBhZnJwLTAuNC9leGFtcGxlcy9UYWlsZ2F0aW5nRGV0ZWN0b3Iv VGFpbGdhdGluZ0RldGVjdG9yLmhzCTIwMDUtMDctMzAgMTY6NDQ6MDguMDAwMDAw MDAwICswOTAwCioqKioqKioqKioqKioqKgoqKiogMCAqKioqCi0tLSAxLDMyMiAt LS0tCisgey0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgRiBSIFAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoKKyAqICAgICAgIE1vZHVsZTogICAgICAgICBUYWlsZ2F0aW5n RGV0ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAq ICAgICAgIFB1cnBvc2U6ICAgICAgICBBRlJQIEV4cHJlc3NpdGl2aXR5IFRlc3QJ CSAgICAgICAgICAgICAqCisgKglBdXRob3JzOglIZW5yaWsgTmlsc3NvbgkJCQkJ ICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAg ICAgICAgICBDb3B5cmlnaHQgKGMpIFlhbGUgVW5pdmVyc2l0eSwgMjAwMyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgLX0K KyAKKyAtLSBDb250ZXh0OiBhbiBhdXRvbm9tb3VzIGZseWluZyB2ZWhpY2xlIGNh cnJ5aW5nIG91dCB0cmFmZmljIHN1cnZlaWxsYW5jZQorIC0tIHRocm91Z2ggYW4g b24tYm9hcmQgdmlkZW8gY2FtZXJhLgorIC0tCisgLS0gT2JqZWN0aXZlOiBmaW5k aW5nIGEgdGFpbGdhdGVyIGFtb25nIGEgZ3JvdXAgb2YgdmVoaWNsZXMgdHJhdmVs aW5nIGFsb25nCisgLS0gYSBoaWdod2F5IGxhbmUuIFRoZSBncm91cCBpcyBkZWZp bmVkIGJ5IHRoZSBzZWN0aW9uIG9mIHRoZSBoaWdod2F5IGluCisgLS0gdmlldyBh bmQgdGh1cyBjaGFuZ2VzIGR5bmFtaWNhbGx5IGFzIGdyb3VuZCB2ZWhpY2xlcyB3 aXRoIG5vbi16ZXJvCisgLS0gcmVsYXRpdmUgc3BlZWQgdG8gdGhlIGZseWluZyB2 ZWhpY2xlcyBlbnRlcnMgb3IgbGVhdmVzIHRoZSBmaWVsZCBvZgorIC0tIHZpc2lv bi4KKyAtLQorIC0tIFNpbXBsaWZ5aW5nIGFzc3VtcHRpb25zOgorIC0tICogVGhl IHBvc2l0aXZlIHgtYXhpcyBvZiB0aGUgdmlkZW8gaW1hZ2VzIGlzIHN1cHBvc2Vk IHRvIGNvcnJlc3BvbmQgdG8gdGhlCisgLS0gICBkaXJlY3Rpb24gb2YgdHJhdmVs LgorIC0tICogVGhlIGZseWluZyB2ZWhpY2xlIGlzIGFzc3VtZWQgdG8gdHJhdmVs IGRpcmVjdGx5IG92ZXIgYW5kIGFsb25nIHRoZQorIC0tICAgaGlnaHdheSBsYW5l IHdoZW4gbG9va2luZyBmb3IgdGFpbGdhdGVycy4gVGhlIHktY29vcmRpbmF0ZSBv ZiB0aGUKKyAtLSAgIGhpZ2h3YXkgaXMgdGh1cyByb3VnaGx5IDAuCisgLS0gKiBJ dCBpcyBlbm91Z2ggdG8gY29uc2lkZXIgdGhlIHgtY29vcmRpbmF0ZSBvZiBncm91 bmQgdmVoaWNsZSBwb3NpdGlvbnMuCisgLS0gICBUaHVzIHRoZSBwb3NpdGlvbiBh bmQgdmVsb2NpdHkgdHlwZXMgYXJlIGJvdGgganVzdCAoc2lnbmVkKSBEb3VibGUK KyAtLSAgIGZvciBvdXIgcHVycG9zZXMuCisgLS0KKyAtLSBJIGZpbmQgdGhpcyBl eGFtcGxlIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgbWFrZXMgdXNlIG9mIFRXTyBD T0xMRUNUSU9OIG9mCisgLS0gc2lnbmFsIGZ1bmN0aW9ucywgdGhlc2UgY29sbGVj dGlvbnMgSEFWRSBUTyBCRSBEWU5BTUlDIGJ5IHRoZSB2ZXJ5CisgLS0gbmF0dXJl IG9mIHRoZSBwcm9ibGVtLCBhbmQgaXQgbWFrZXMgdXNlIG9mIHRoZSB0aGUgZmFj dCB0aGF0IENPTlRJTlVBVElPTlMKKyAtLSBBUkUgRklSU1QgQ0xBU1MgRU5USVRJ RVMgaW4gYSB3YXkgd2hpY2ggYXJndWFibHkgYWxzbyBpcyBqdXN0aWZpZWQKKyAt LSBieSB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtLgorIAorIG1vZHVsZSBUYWls Z2F0aW5nRGV0ZWN0b3Igd2hlcmUKKyAKKyBpbXBvcnQgTGlzdCAoc29ydEJ5LCAo XFwpKQorIAorIGltcG9ydCBBRlJQCisgaW1wb3J0IEFGUlBVdGlsaXRpZXMKKyAK KyAKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtLSBUZXN0aW5n IGZyYW1ld29yaworIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor IHR5cGUgUG9zaXRpb24gPSBEb3VibGUJLS0gW21dCisgdHlwZSBEaXN0YW5jZSA9 IERvdWJsZQktLSBbbV0KKyB0eXBlIFZlbG9jaXR5ID0gRG91YmxlCS0tIFttL3Nd CisgCisgLS0gV2UnbGwgY2FsbCBhbnkgZ3JvdW5kIHZlaGljbGUgImNhciIuIEZv ciBvdXIgcHVycG9zZXMsIGEgY2FyIGlzCisgLS0gcmVwcmVzZW50ZWQgYnkgaXRz IGdyb3VuZCBwb3NpdGlvbiBhbmQgZ3JvdW5kIHZlbG9jaXR5LgorIHR5cGUgQ2Fy ID0gKFBvc2l0aW9uLCBWZWxvY2l0eSkKKyAKKyAKKyAtLSBBIGhpZ2h3YXkgaXMg anVzdCBhIGxpc3Qgb2YgY2Fycy4gSW4gdGhpcyBzaW1wbGUgc2V0dGluZywgd2Ug YXNzdW1lIGFsbAorIC0tIGNhcnMgYXJlIHRoZXJlIGFsbCB0aGUgdGltZSAobm8g ZW50ZXIgb3IgZXhpdCByYW1wcyBldGMuKQorIHR5cGUgSGlnaHdheSA9IFtDYXJd CisgCisgCisgLS0gVHlwZSBvZiB0aGUgVmlkZW8gc2lnbmFsLiBIZXJlIGp1c3Qg YW4gYXNzb2NpYXRpb24gbGlzdCBvZiBjYXJzICppbiB2aWV3KgorIC0tIHdpdGgg KnJlbGF0aXZlKiBwb3NpdGlvbnMuCisgdHlwZSBWaWRlbyA9IFsoSW50LCBDYXIp XQorIAorIAorIC0tIFN5c3RlbSBpbmZvLCBzdWNoIGFzIGhlaWdodCBhbmQgZ3Jv dW5kIHNwZWVkLiBIZXJlLCBqdXN0IHRoZSBwb3NpdGlvbi4KKyB0eXBlIFVBVlN0 YXR1cyA9IFBvc2l0aW9uCisgCisgCisgLS0gVmFyaW91cyB3YXlzIG9mIG1ha2lu ZyBjYXJzLgorIHN3aXRjaEFmdGVyIDo6IFRpbWUgLT4gU0YgYSBiIC0+IChiIC0+ IFNGIGEgYikgLT4gU0YgYSBiCisgc3dpdGNoQWZ0ZXIgdCBzZiBrID0gc3dpdGNo IChzZiAmJiYgYWZ0ZXIgdCAoKSA+Pl4gXChiLGUpIC0+IChiLCBlIGB0YWdgIGIp KSBrCisgCisgCisgbWtDYXIxIDo6IFBvc2l0aW9uIC0+IFZlbG9jaXR5IC0+IFNG IGEgQ2FyCisgbWtDYXIxIHAwIHYgPSBjb25zdGFudCB2ID4+PiAoaW50ZWdyYWwg Pj5eICgrcDApKSAmJiYgaWRlbnRpdHkKKyAKKyBta0NhcjIgOjogUG9zaXRpb24g LT4gVmVsb2NpdHkgLT4gVGltZSAtPiBWZWxvY2l0eSAtPiBTRiBhIENhcgorIG1r Q2FyMiBwMCB2MCB0MCB2ID0gc3dpdGNoQWZ0ZXIgdDAgKG1rQ2FyMSBwMCB2MCkg KGZsaXAgbWtDYXIxIHYgLiBmc3QpCisgCisgCisgbWtDYXIzIDo6IFBvc2l0aW9u LT5WZWxvY2l0eS0+VGltZS0+VmVsb2NpdHktPlRpbWUtPlZlbG9jaXR5LT5TRiBh IENhcgorIG1rQ2FyMyBwMCB2MCB0MCB2MSB0MSB2ID0gc3dpdGNoQWZ0ZXIgdDAg KG1rQ2FyMSBwMCB2MCkgJCBcKHAxLCBfKSAtPgorIAkJCSAgc3dpdGNoQWZ0ZXIg dDEgKG1rQ2FyMSBwMSB2MSkgJCBcKHAyLCBfKSAtPgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWtDYXIxIHAyIHYKKyAKKyAKKyBoaWdod2F5IDo6IFNGIGEg SGlnaHdheQorIGhpZ2h3YXkgPSBwYXJCIFtta0NhcjEgKC02MDApIDMwLjksCisg ICAgICAgICAgICAgICAgIG1rQ2FyMSAwIDMwLAorICAgICAgICAgICAgICAgICBt a0NhcjMgKC0xMDAwKSA0MCA5NSAzMCAyMDAgMzAuOSwKKyAJCW1rQ2FyMSAoLTMw MDApIDQ1LAorICAgICAgICAgICAgICAgICBta0NhcjEgNzAwIDI4LAorICAgICAg ICAgICAgICAgICBta0NhcjEgODAwIDI5LjFdCisgCisgCisgLS0gVGhlIHN0YXR1 cyBvZiB0aGUgVUFWLiBGb3Igbm93LCBpdCdzIGp1c3QgZmx5aW5nIGF0IGNvbnN0 YW50IHNwZWVkLgorIHVhdlN0YXR1cyA6OiBTRiBhIFVBVlN0YXR1cworIHVhdlN0 YXR1cyA9IGNvbnN0YW50IDMwID4+PiBpbnRlZ3JhbAorIAorIAorIC0tIFRyYWNr cyBhIGNhciBpbiB0aGUgdmlkZW8gc3RyZWFtLiBBbiBldmVudCBpcyBnZW5lcmF0 ZWQgd2hlbiB0cmFja2luZyBpcworIC0tIGxvc3QsIHdoaWNoIHdlIGFzc3VtZSBv bmx5IGhhcHBlbnMgaWYgdGhlIGNhciBsZWF2ZXMgdGhlIGZpZWxkIG9mIHZpc2lv bi4KKyAtLSBXZSBkb24ndCBjb25jZXJuIG91cnNlbHZlcyB3aXRoIHJlYWxpc3Rp YyBjcmVhdGlvbiBvZiB0cmFja2Vycy4KKyAtLSBUaGUgVUFWU3RhdHVzIHNpZ25h bCBwcm92aWRlcyB0aGUgY3VycmVudCBmbHlpbmcgaGVpZ2h0IGFuZCBncm91bmQg c3BlZWQKKyAtLSB3aGljaCBhbGxvd3MgdGhlIHBlcmNlaXZlZCBwb3NpdGlvbiB0 byBiZSBzY2FsZWQgdG8gYSBwb3NpdGlvbiBpbiBtZXRlcnMKKyAtLSByZWxhdGl2 ZSB0byB0aGUgb3JpZ2luIGRpcmVjdGx5IHVuZGVyIHRoZSBmbHlpbmcgdmVoaWNs ZSwgYW5kIHRoZSBwZXJjZWl2ZWQKKyAtLSB2ZWxvY2l0eSB0byBiZSB0cmFuc2Zv cm1lZCB0byBncm91bmQgdmVsb2NpdHkuCisgdHlwZSBDYXJUcmFja2VyID0gU0Yg KFZpZGVvLCBVQVZTdGF0dXMpIChDYXIsIEV2ZW50ICgpKQorIAorIHJhbmdlID0g NTAwCisgCisgLS0gQ3JlYXRpb24gb2YgdmlkZW8gc3RyZWFtIHN1YmplY3QgdG8g ZmllbGQgb2YgdmlldyBhbmQgY2FyIHRyYWNrZXJzCisgLS0gYXMgY2FycyBlbnRl cnMgdGhlIGZpZWxkIG9mIHZpZXcuCisgbWtWaWRlb0FuZFRyYWNrZXJzIDo6IFNG IChIaWdod2F5LCBVQVZTdGF0dXMpIChWaWRlbywgRXZlbnQgQ2FyVHJhY2tlcikK KyBta1ZpZGVvQW5kVHJhY2tlcnMgPSBhcnIgbWtWaWRlbyA+Pj4gaWRlbnRpdHkg JiYmIGNhckVudHJ5CisgICAgIHdoZXJlCisgCW1rVmlkZW8gOjogKEhpZ2h3YXks IFBvc2l0aW9uKSAtPiBWaWRlbworIAlta1ZpZGVvIChjYXJzLCBwX3VhdikgPQor ICAgICAgICAgICAgIFsgKGksIChwX3JlbCwgdikpCisgICAgICAgICAgICAgfCAo aSwgKHAsIHYpKSA8LSB6aXAgWzAuLl0gY2FycywKKyAgICAgICAgICAgICAgIGxl dCBwX3JlbCA9IHAgLSBwX3VhdiwgYWJzIHBfcmVsIDw9IHJhbmdlXQorIAorIAlj YXJFbnRyeSA6OiBTRiBWaWRlbyAoRXZlbnQgQ2FyVHJhY2tlcikKKyAJY2FyRW50 cnkgPSBlZGdlQnkgbmV3Q2FyIFtdCisgCSAgICB3aGVyZQorIAkJbmV3Q2FyIHZf cHJldiB2ID0KKyAJCSAgICBjYXNlIChtYXAgZnN0IHYpIFxcIChtYXAgZnN0IHZf cHJldikgb2YKKyAJCQlbXSAgICAgIC0+IE5vdGhpbmcKKyAJCQkoaSA6IF8pIC0+ IEp1c3QgKG1rQ2FyVHJhY2tlciBpKQorIAorIAlta0NhclRyYWNrZXIgOjogSW50 IC0+IENhclRyYWNrZXIKKyAJbWtDYXJUcmFja2VyIGkgPSBhcnIgKGxvb2t1cCBp IC4gZnN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICA+Pj4gdHJhY2tBbmRI b2xkIHVuZGVmaW5lZAorIAkJCSAgICAgJiYmIGVkZ2VCeSBqdXN0VG9Ob3RoaW5n IChKdXN0IHVuZGVmaW5lZCkKKyAJICAgIHdoZXJlCisgCQlqdXN0VG9Ob3RoaW5n IE5vdGhpbmcgIE5vdGhpbmcgID0gTm90aGluZworIAkJanVzdFRvTm90aGluZyBO b3RoaW5nICAoSnVzdCBfKSA9IE5vdGhpbmcKKyAJCWp1c3RUb05vdGhpbmcgKEp1 c3QgXykgKEp1c3QgXykgPSBOb3RoaW5nCisgCQlqdXN0VG9Ob3RoaW5nIChKdXN0 IF8pIE5vdGhpbmcgID0gSnVzdCAoKQorIAorIAorIHZpZGVvQW5kVHJhY2tlcnMg OjogU0YgYSAoVmlkZW8sIEV2ZW50IENhclRyYWNrZXIpCisgdmlkZW9BbmRUcmFj a2VycyA9IGhpZ2h3YXkgJiYmIHVhdlN0YXR1cyA+Pj4gbWtWaWRlb0FuZFRyYWNr ZXJzCisgCisgCisgc21wbEZyZXEgPSAyLjAKKyBzbXBsUGVyID0gMS9zbXBsRnJl cQorIAorIAorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0tIFRh aWxnYXRpbmcgZGV0ZWN0b3IKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKyAtLSBMb29rcyBhdCB0aGUgcG9zaXRpb25zIG9mIHR3byBjYXJzIGFu ZCBkZXRlcm1pbmVzIGlmIHRoZSBmaXJzdCBpcworIC0tIHRhaWxnYXRpbmcgdGhl IHNlY29uZC4gVGFpbGdhdGluZyBpcyBhc3N1bWVkIHRvIGhhdmUgb2NjdXJyZWQg aWY6CisgLS0gKiB0aGUgZmlyc3QgY2FyIGlzIGJlaGluZCB0aGUgc2Vjb25kOwor IC0tICogdGhlIGFic29sdXRlIHNwZWVkIG9mIHRoZSBmaXJzdCBjYXIgaXMgZ3Jl YXRlciB0aGFuIDUgbS9zOworIC0tICogdGhlIHJlbGF0aXZlIHNwZWVkIG9mIHRo ZSBjYXJzIGlzIHdpdGhpbiAyMCAlIG9mIHRoZSBhYnNvbHV0ZSBzcGVlZDsKKyAt LSAqIHRoZSBmaXJzdCBjYXIgaXMgbm8gbW9yZSB0aGFuIDUgcyBiZWhpbmQgdGhl IHNlY29uZDsgYW5kCisgLS0gKiBhZnRlciAzMCBzLCB0aGUgYXZlcmFnZSBkaXN0 YW5jZSBiZXR3ZWVuIHRoZSBjYXJzIG5vcm1hbGl6ZWQgYnkKKyAtLSAgIHRoZSBh YnNvbHV0ZSBzcGVlZCBpcyBsZXNzIHRoYW4gYSBzZWNvbmQuCisgCisgdGFpbGdh dGluZyA6OiBTRiAoQ2FyLCBDYXIpIChFdmVudCAoKSkKKyB0YWlsZ2F0aW5nID0g cHJvdmlkZWQgZm9sbG93IHRvb0Nsb3NlIG5ldmVyCisgICAgIHdoZXJlCisgCWZv bGxvdyAoKHAxLCB2MSksIChwMiwgdjIpKSA9IHAxIDwgcDIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHYxID4gNS4wCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBhYnMgKCh2MiAtIHYx KS92MSkgPCAwLjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmIChwMiAtIHAxKSAvIHYxIDwgNS4wCisgCisgCS0tIFVuZGVyIHRoZSBh c3N1bXB0aW9uIHRoYXQgY2FyIGMxIGlzIGZvbGxvd2luZyBjYXIgYzIsIGdlbmVy YXRlIGFuCisgICAgICAgICAtLSBldmVudCBpZiBjYXIxIGhhcyBiZWVuIHRvbyBj bG9zZSB0byBjYXIyIG9uIGF2ZXJhZ2UgZHVyaW5nIHRoZQorIAktLSBsYXN0IDMw IHMuCisgCXRvb0Nsb3NlIDo6IFNGIChDYXIsIENhcikgKEV2ZW50ICgpKQorIAl0 b29DbG9zZSA9IHByb2MgKGMxLCBjMikgLT4gZG8KKyAJICAgIGVhZCA8LSByZWN1 ciAoc25hcEFmdGVyIDMwIDw8PCBhdmdEaXN0KSAtPCAoYzEsIGMyKQorIAkgICAg cmV0dXJuQSAtPCAoZmlsdGVyRSAoPDEuMCkgZWFkKSBgdGFnYCAoKQorIAorICAg ICAgICAgYXZnRGlzdCA9IHByb2MgKChwMSwgdjEpLCAocDIsIHYyKSkgLT4gZG8K KyAJICAgIGxldCBuZCA9IChwMiAtIHAxKSAvIHYxCisgCSAgICBpbmQgPC0gaW50 ZWdyYWwgIC08IG5kCisgCSAgICB0ICAgPC0gbG9jYWxUaW1lIC08ICgpCisgICAg ICAgICAgICAgcmV0dXJuQSAtPCBpZiB0ID4gMCB0aGVuIGluZCAvIHQgZWxzZSBu ZAorIAorIAorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0tIE11 bHRpLUNhciB0cmFja2VyCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisgLS0gQXV4aWxpYXJ5IGRlZmluaXRpb25zCisgCisgdHlwZSBJZCA9IElu dAorIAorIGRhdGEgTUNUQ29sIGEgPSBNQ1RDb2wgSWQgWyhJZCwgYSldCisgCisg CisgaW5zdGFuY2UgRnVuY3RvciBNQ1RDb2wgd2hlcmUKKyAgICAgZm1hcCBmIChN Q1RDb2wgbiBpYXMpID0gTUNUQ29sIG4gWyAoaSwgZiBhKSB8IChpLCBhKSA8LSBp YXMgXQorIAorIAorIC0tIFRyYWNraW5nIG9mIGluZGl2aWR1YWwgY2FycyBpbiBh IGdyb3VwLiBUaGUgYXJyaXZhbCBvZiBhIG5ldyBjYXIgaXMKKyAtLSBzaWduYWxs ZWQgYnkgYW4gZXh0ZXJuYWwgZXZlbnQsIHdoaWNoIGNhdXNlcyBhIG5ldyB0cmFj a2VyIHRvIGJlIGFkZGVkCisgLS0gdG8gaW50ZXJuYWwgY29sbGVjdGlvbiBvZiBj YXIgdHJhY2tlcnMuIEEgdHJhY2tlciBpcyByZW1vdmVkIGFzIHNvb24KKyAtLSBh cyBpdCBsb29zZXMgdHJhY2tpbmcuCisgLS0KKyAtLSBUaGUgb3V0cHV0IGNvbnNp c3RzIG9mIHRoZSBvdXRwdXQgZnJvbSB0aGUgaW5kaXZpZHVhbCB0cmFja2Vycywg dGFnZ2VkCisgLS0gd2l0aCBhbiBhc3NpZ25lZCBpZGVudGl0eSB1bmlxdWUgdG8g ZWFjaCB0cmFja2VyLgorIC0tCisgLS0gSSdNIEdJVklORyBVUCBPTiBUSElTIEJJ VCBGT1IgTk9XCisgLS0gVGhlIGV4dGVybmFsIGlkZW50aXR5IGV2ZW50IHNpZ25h bHMgdGhhdCB0aGUgY2FyIGJlaW5nIHRyYWNrZWQgYnkgdGhlCisgLS0gdHJhY2tl ciB0YWdnZWQgYnkgdGhlIGlkZW50aXR5IGNhcnJpZWQgYnkgdGhlIGV2ZW50IGlz IGd1aWx0eSBvZgorIC0tIHRhaWxnYXRpbmcuIFRoaXMgY2F1c2VzIGFuIGV2ZW50 IGNhcnJ5aW5nIHRoZSAqY29udGludWF0aW9uKiBvZiB0aGUKKyAtLSBjb3JyZXNw b25kaW5nIHRyYWNrZXIgdG8gYmUgZ2VuZXJhdGVkLCBlLmcuIGFsbG93aW5nIHRo ZSBvdmVyYWxsCisgLS0gY29udHJvbGwgc3lzdGVtIHRvIGZvY3VzIG9uIGZvbGx3 aW5nIHRoYXQgcGFydGljdWxhciBjYXIgd2l0aG91dCBmaXJzdAorIC0tIGhhdmlu ZyB0byBzdGFydCBhIG5ldyB0cmFja2VyIChyaXNraW5nIG1pc2lkZW50aWZpY2F0 aW9uKS4KKyAKKyBtY3QgOjogU0YgKFZpZGVvLCBVQVZTdGF0dXMsIEV2ZW50IENh clRyYWNrZXIpIFsoSWQsIENhcildCisgbWN0ID0gcFN3aXRjaCByb3V0ZSBjdHNf aW5pdCBhZGRPckRlbENUcyAoXGN0cycgZiAtPiBtY3RBdXggKGYgY3RzJykpCisg ICAgICAgPj5eIGdldENhcnMKKyAgICAgd2hlcmUKKyAJbWN0QXV4IGN0cyA9IHBT d2l0Y2ggcm91dGUKKyAJCQkgICAgIGN0cworIAkJCSAgICAgKG5vRXZlbnQgLS0+ IGFkZE9yRGVsQ1RzKQorIAkJCSAgICAgKFxjdHMnIGYgLT4gbWN0QXV4IChmIGN0 cycpKQorIAorIAlyb3V0ZSAodiwgcywgXykgPSBmbWFwIChcY3QgLT4gKCh2LCBz KSwgY3QpKQorIAorIAktLSBhZGRPckRlbENUcyA6OiBTRiBfIChFdmVudCAoTUNU Q29sIENhclRyYWNrZXIgLT4gTUNUQ29sIGNhclRyYWNrZXIpKQorIAlhZGRPckRl bENUcyA9IHByb2MgKChfLCBfLCBlY3QpLCBjZXMpIC0+IGRvCisgCSAgICBsZXQg ZUFkZCA9IGZtYXAgYWRkQ1QgZWN0CisgICAgICAgICAgICAgbGV0IGVEZWwgPSBm bWFwIGRlbENUcyAoY2F0RXZlbnRzIChnZXRFdmVudHMgY2VzKSkKKyAgICAgICAg ICAgICByZXR1cm5BIC08IG1lcmdlQnkgKC4pIGVBZGQgZURlbAorIAorIAljdHNf aW5pdCA6OiBNQ1RDb2wgQ2FyVHJhY2tlcgorIAljdHNfaW5pdCA9IE1DVENvbCAw IFtdCisgCisgCWFkZENUIDo6IENhclRyYWNrZXIgLT4gTUNUQ29sIENhclRyYWNr ZXIgLT4gTUNUQ29sIENhclRyYWNrZXIKKyAJYWRkQ1QgY3QgKE1DVENvbCBuIGlj dHMpID0gTUNUQ29sIChuKzEpICgobiwgY3QpIDogaWN0cykKKyAKKyAJZGVsQ1Rz IDo6IFtJZF0gLT4gTUNUQ29sIENhclRyYWNrZXIgLT4gTUNUQ29sIENhclRyYWNr ZXIKKyAJZGVsQ1RzIGlzIChNQ1RDb2wgbiBpY3RzKSA9CisgICAgICAgICAgICAg TUNUQ29sIG4gKGZpbHRlciAoZmxpcCBub3RFbGVtIGlzIC4gZnN0KSBpY3RzKQor IAorIAlnZXRDYXJzIDo6IE1DVENvbCAoQ2FyLCBFdmVudCAoKSkgLT4gWyhJZCwg Q2FyKV0KKyAJZ2V0Q2FycyAoTUNUQ29sIF8gaWNlcykgPSBbKGksIGMpIHwgKGks IChjLCBfKSkgPC0gaWNlcyBdCisgCisgCWdldEV2ZW50cyA6OiBNQ1RDb2wgKENh ciwgRXZlbnQgKCkpIC0+IFtFdmVudCBJZF0KKyAJZ2V0RXZlbnRzIChNQ1RDb2wg XyBpY2VzKSA9IFtlIGB0YWdgIGkgfCAoaSwoXyxlKSkgPC0gaWNlc10KKyAKKyAK KyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtLSBNdWx0aSB0YWls Z2F0aW5nIGRldGVjdG9yCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisgLS0gQXV4aWxpYXJ5IGRlZmluaXRpb25zCisgCisgbmV3dHlwZSBNVEdE Q29sIGEgPSBNVEdEQ29sIFsoKElkLElkKSwgYSldCisgCisgCisgaW5zdGFuY2Ug RnVuY3RvciBNVEdEQ29sIHdoZXJlCisgICAgIGZtYXAgZiAoTVRHRENvbCBpaWFz KSA9IE1UR0RDb2wgWyAoaWksIGYgYSkgfCAoaWksIGEpIDwtIGlpYXMgXQorIAor IAorIC0tIFJ1biB0YWlsZ2F0aW5nIGFib3ZlIGZvciBlYWNoIHBhaXIgb2YgdHJh Y2tlZCBjYXJzLiBBIHN0cnVjdHVyYWwgY2hhbmdlCisgLS0gdG8gdGhlIGxpc3Qg b2YgdHJhY2tlZCBjYXJzIGlzIHNpZ25hbGxlZCBieSBhbiBldmVudCwgYXQgd2hp Y2ggcG9pbnQKKyAtLSB0aGUgc2lnbmFsIGZ1bmN0aW9uIHdpbGwgZmlndXJlIHdo aWNoIG9sZCB0YWlsZ2F0aW5nIGRldGVjdG9ycyB0aGF0IGhhdmUKKyAtLSB0byBi ZSByZW1vdmVkIGFuZCB3aGljaCBuZXcgdGhhdCBoYXZlIHRvIGJlIHN0YXJ0ZWQg YmFzZWQgb24gYW4gaW5pdGlhbAorIC0tIHNhbXBsZSBvZiB0aGUgbmV3IGNvbmZp Z3VyYXRpb24uIEFuIGV2ZW50IGNhcnJ5aW5nIHRoZSBpZGVudGl0eSBvZgorIC0t IGEgdGFpbGdhdGVyIGFuZCB0aGUgb25lIGJlaW5nIHRhaWxnYXRlZCBpcyBnZW5l cmF0ZWQgd2hlbiBvbmUgb2YgdGhlCisgLS0gdGFpbGdhdGluZyBzaWduYWwgZnVu Y3Rpb25zIGdlbmVyYXRlcyBhbiBldmVudC4KKyAKKyBtdGdkIDo6IFNGIFsoSWQs IENhcildIChFdmVudCBbKElkLCBJZCldKQorIG10Z2QgPSBwcm9jIGljcyAtPiBk bworICAgICBsZXQgaWNzJyA9IHNvcnRCeSByZWxQb3MgaWNzCisgICAgIGVubyAg PC0gbmV3T3JkZXIgLTwgaWNzJworICAgICBldGdzIDwtIHJwU3dpdGNoIHJvdXRl IChNVEdEQ29sIFtdKSAtPCAoaWNzJywgZm1hcCB1cGRhdGVUR0RzIGVubykKKyAg ICAgcmV0dXJuQSAtPCB0YWlsZ2F0ZXJzIGV0Z3MKKyAgICAgd2hlcmUKKyAJcm91 dGUgaWNzIChNVEdEQ29sIGlpdGdzKSA9IE1UR0RDb2wgJAorIAkgICAgbGV0IGNz ID0gbWFwIHNuZCBpY3MKKyAJICAgIGluCisgCSAgICAgICAgWyAoaWksIChjYywg dGcpKQorIAkJfCAoY2MsIChpaSwgdGcpKSA8LSB6aXAgKHppcCBjcyAodGFpbCBj cykpIGlpdGdzIF0KKyAKKyAJcmVsUG9zIChfLCAocDEsIF8pKSAoXywgKHAyLCBf KSkgPSBjb21wYXJlIHAxIHAyCisgCisgCW5ld09yZGVyIDo6IFNGIFsoSWQsIENh cildIChFdmVudCBbSWRdKQorIAluZXdPcmRlciA9IGVkZ2VCeSAoXGljcyBpY3Mn IC0+IGlmIHNhbWVPcmRlciBpY3MgaWNzJyB0aGVuCisgCQkJCQkgICAgTm90aGlu ZworIAkJCQkJZWxzZQorIAkJCQkJICAgIEp1c3QgKG1hcCBmc3QgaWNzJykpCisg CQkJICBbXQorIAkgICAgd2hlcmUKKyAJCXNhbWVPcmRlciBbXSBbXSA9IFRydWUK KyAJCXNhbWVPcmRlciBbXSBfICA9IEZhbHNlCisgCQlzYW1lT3JkZXIgXyAgW10g PSBGYWxzZQorIAkJc2FtZU9yZGVyICgoaSxfKTppY3MpICgoaScsXyk6aWNzJykK KyAJCSAgICB8IGkgPT0gaScgICA9IHNhbWVPcmRlciBpY3MgaWNzJyAKKyAJCSAg ICB8IG90aGVyd2lzZSA9IEZhbHNlCisgCisgCXVwZGF0ZVRHRHMgaXMgKE1UR0RD b2wgaWl0Z3MpID0gTVRHRENvbCAkCisgCSAgICBbIChpaSwgbWF5YmUgdGFpbGdh dGluZyBpZCAobG9va3VwIGlpIGlpdGdzKSkKKyAJICAgIHwgaWkgPC0gemlwIGlz ICh0YWlsIGlzKSBdCisgCisgCXRhaWxnYXRlcnMgOjogTVRHRENvbCAoRXZlbnQg KCkpIC0+IEV2ZW50IFsoSWQsIElkKV0KKyAJdGFpbGdhdGVycyAoTVRHRENvbCBp aWVzKSA9IGNhdEV2ZW50cyBbIGUgYHRhZ2AgaWkgfCAoaWksIGUpIDwtIGlpZXMg XQorIAorIAorIC0tIEZpbmFsbHksIHdlIGNhbiB0aWUgdGhlIGluZGl2aWRhdWwg cGllY2VzIHRvZ2V0aGVyIGludG8gYSBzaWduYWwKKyAtLSBmdW5jdGlvbiB3aGlj aCBmaW5kcyB0YWlsZ2F0ZXJzOgorIAorIGZpbmRUYWlsZ2F0ZXJzIDo6CisgICAg IFNGIChWaWRlbywgVUFWU3RhdHVzLCBFdmVudCBDYXJUcmFja2VyKSAoWyhJZCwg Q2FyKV0sIEV2ZW50IFsoSWQsIElkKV0pCisgZmluZFRhaWxnYXRlcnMgPSBwcm9j ICh2LCBzLCBlY3QpIC0+IGRvCisgICAgIGljcyAgPC0gbWN0ICAtPCAodiwgcywg ZWN0KQorICAgICBldGdzIDwtIG10Z2QgLTwgaWNzCisgICAgIHJldHVybkEgLTwg KGljcywgZXRncykKZGlmZiAtY3JOIGFmcnAtMC40Lm9yaWcvZXhhbXBsZXMvVGFp bGdhdGluZ0RldGVjdG9yL1Rlc3RUR01haW4uaHMgYWZycC0wLjQvZXhhbXBsZXMv VGFpbGdhdGluZ0RldGVjdG9yL1Rlc3RUR01haW4uaHMKKioqIGFmcnAtMC40Lm9y aWcvZXhhbXBsZXMvVGFpbGdhdGluZ0RldGVjdG9yL1Rlc3RUR01haW4uaHMJMTk3 MC0wMS0wMSAwOTowMDowMC4wMDAwMDAwMDAgKzA5MDAKLS0tIGFmcnAtMC40L2V4 YW1wbGVzL1RhaWxnYXRpbmdEZXRlY3Rvci9UZXN0VEdNYWluLmhzCTIwMDUtMDct MzAgMTg6MDU6MjcuMDAwMDAwMDAwICswOTAwCioqKioqKioqKioqKioqKgoqKiog MCAqKioqCi0tLSAxLDEwMiAtLS0tCisgey0KKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEEgRiBSIFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgIEV4YW1wbGU6 ICAgICAgICBUZXN0IFRHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKyAqICAgICAgIFB1cnBvc2U6ICAgICAgICBUZXN0aW5n IG9mIHRoZSB0YWlsZ2F0aW5nIGRldGVjdG9yLgkgICAgICAgICAgICAgKgorICoJ QXV0aG9yczoJSGVucmlrIE5pbHNzb24JCQkJCSAgICAgKgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgQ29weXJpZ2h0IChj KSBZYWxlIFVuaXZlcnNpdHksIDIwMDMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorIC19CisgCisgbW9kdWxlIE1haW4gd2hl cmUKKyAKKyBpbXBvcnQgTGlzdCAoc29ydEJ5KQorIAorIGltcG9ydCBBRlJQCisg aW1wb3J0IEFGUlBVdGlsaXRpZXMKKyBpbXBvcnQgQUZSUEludGVybmFscwktLSBK dXN0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorIAorIGltcG9ydCBUYWlsZ2F0aW5n RGV0ZWN0b3IKKyAKKyAKKyAtLSBMb29rcyBmb3IgaW50ZXJlc3RpbmcgZXZlbnRz IGluIHRoZSB2aWRlbyBzdHJlYW0gKGNhcnMgZW50ZXJpbmcsCisgLS0gbGVhdmlu Zywgb3ZlcnRha2luZykgaW4gdGhlIGludGVydmFsIFswLCB0XS4KKyB0ZXN0Vmlk ZW8gOjogVGltZSAtPiBbKFRpbWUsIEV2ZW50IFZpZGVvKV0KKyB0ZXN0VmlkZW8g dF9tYXggPSBmaWx0ZXIgKGlzRXZlbnQgLiBzbmQpICQKKyAgICAgICAgICAgICAg ICAgICB0YWtlV2hpbGUgKFwodCwgXykgLT4gdCA8PSB0X21heCkgJAorICAgICAg ICAgICAgICAgICAgIGVtYmVkIChsb2NhbFRpbWUgJiYmICh2aWRlb0FuZFRyYWNr ZXJzID4+XiBmc3QpCisgCQkJID4+PiBmaWx0ZXJWaWRlbykKKyAJICAgICAgICAg IChkZWx0YUVuY29kZSBzbXBsUGVyIChyZXBlYXQgKCkpKQorICAgICB3aGVyZQor IAlmaWx0ZXJWaWRlbyA9IHNlY29uZCAoZWRnZUJ5IGNoYW5nZSBbXSkKKyAJICAg IHdoZXJlCisgCQljaGFuZ2Ugdl9wcmV2IHYgPQorIAkJICAgIGlmIChtYXAgZnN0 IChzb3J0QnkgY29tcGFyZVBvcyB2X3ByZXYpKQorICAgICAgICAgICAgICAgICAg ICAgICAgLz0gKG1hcCBmc3QgKHNvcnRCeSBjb21wYXJlUG9zIHYpKSB0aGVuCisg CQkJSnVzdCB2CisgCQkgICAgZWxzZQorIAkJCU5vdGhpbmcgCisgCisgCWNvbXBh cmVQb3MgKF8sIChwMSwgXykpIChfLCAocDIsIF8pKSA9IGNvbXBhcmUgcDEgcDIK KyAKKyAKKyBwcFRlc3RWaWRlbyB0ID0gbWFwTV8gKHB1dFN0ckxuIC4gc2hvdykg KHRlc3RWaWRlbyB0KQorIAorIAorIHRlc3RUYWlsZ2F0aW5nIHRfbWF4ID0gZmls dGVyIChpc0V2ZW50IC4gc25kKSAkCisgICAgICAgICAgICAgICAgICAgICAgICB0 YWtlV2hpbGUgKFwodCwgXykgLT4gdCA8PSB0X21heCkgJAorICAgICAgICAgICAg ICAgICAgICAgICAgZW1iZWQgKGxvY2FsVGltZQorIAkJCSAgICAgICYmJiAobWtD YXIzICgtMTAwMCkgNDAgOTUgMzAgMjAwIDMwLjkKKyAJCQkJICAgJiYmIG1rQ2Fy MSAwIDMwCisgCQkJCSAgID4+PiB0YWlsZ2F0aW5nKSkKKyAJICAgICAgICAgICAg ICAgKGRlbHRhRW5jb2RlIHNtcGxQZXIgKHJlcGVhdCAoKSkpCisgCisgCisgdGVz dE1DVCA6OiBUaW1lIC0+IFsoVGltZSwgRXZlbnQgWyhJZCwgQ2FyKV0pXQorIHRl c3RNQ1QgdF9tYXggPSBmaWx0ZXIgKGlzRXZlbnQgLiBzbmQpICQKKyAgICAgICAg ICAgICAgICAgdGFrZVdoaWxlIChcKHQsIF8pIC0+IHQgPD0gdF9tYXgpICQKKyAg ICAgICAgICAgICAgICAgZW1iZWQgKGxvY2FsVGltZQorICAgICAgICAgICAgICAg ICAgICAgICAgJiYmICh1YXZTdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPj4+IChoaWdod2F5ICYmJiBpZGVudGl0eSA+Pj4gbWtWaWRlb0FuZFRy YWNrZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYmIGlk ZW50aXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+PiBhcnIgKFwo KHYsIGVjdCksIHMpIC0+ICh2LCBzLCBlY3QpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA+Pj4gbWN0KQorIAkJICAgICAgID4+PiBmaWx0ZXJNQ1RPdXRw dXQpCisgCSAgICAgICAgKGRlbHRhRW5jb2RlIHNtcGxQZXIgKHJlcGVhdCAoKSkp CisgICAgIHdoZXJlCisgCWZpbHRlck1DVE91dHB1dCA9IHNlY29uZCAoZWRnZUJ5 IGNoYW5nZSBbXSkKKyAJICAgIHdoZXJlCisgCQljaGFuZ2Ugdl9wcmV2IHYgPQor IAkJICAgIGlmIChtYXAgZnN0IChzb3J0QnkgY29tcGFyZVBvcyB2X3ByZXYpKQor ICAgICAgICAgICAgICAgICAgICAgICAgLz0gKG1hcCBmc3QgKHNvcnRCeSBjb21w YXJlUG9zIHYpKSB0aGVuCisgCQkJSnVzdCB2CisgCQkgICAgZWxzZQorIAkJCU5v dGhpbmcgCisgCisgCWNvbXBhcmVQb3MgKF8sIChwMSwgXykpIChfLCAocDIsIF8p KSA9IGNvbXBhcmUgcDEgcDIKKyAKKyAKKyBwcFRlc3RNQ1QgdCA9IG1hcE1fIChw dXRTdHJMbiAuIHNob3cpICh0ZXN0TUNUIHQpCisgCisgCisgdGVzdE1UR0QgOjog VGltZSAtPiBbKFRpbWUsIChFdmVudCBbKElkLElkKV0sIFsoSWQsIENhcildKSld CisgdGVzdE1UR0QgdF9tYXggPSBmaWx0ZXIgKGlzRXZlbnQgLiBmc3QgLiBzbmQp ICQKKyAgICAgICAgICAgICAgICAgIHRha2VXaGlsZSAoXCh0LCBfKSAtPiB0IDw9 IHRfbWF4KSAkCisgICAgICAgICAgICAgICAgICBlbWJlZCAobG9jYWxUaW1lCisg ICAgICAgICAgICAgICAgICAgICAgICAgJiYmIChwcm9jIF8gLT4gZG8KKyAJCQkg ICAgICAgICBzICAgICAgICAgICA8LSB1YXZTdGF0dXMgICAgICAtPCAoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggICAgICAgICAgIDwtIGhp Z2h3YXkgICAgICAgIC08ICgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHYsIGVjdCkgICAgPC0gbWtWaWRlb0FuZFRyYWNrZXJzIC08IChoLCBz KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpY3MsIGV0Z3Mp IDwtIGZpbmRUYWlsZ2F0ZXJzIC08ICh2LHMsZWN0KSAKKyAJCQkJIGV0Z3MgICAg ICAgIDwtIG10Z2QgICAgICAgICAgIC08IGljcworIAkJCSAgICAgICAgIHJldHVy bkEgLTwgKGV0Z3MsIGljcykpKQorIAkgICAgICAgIChkZWx0YUVuY29kZSBzbXBs UGVyIChyZXBlYXQgKCkpKQorIAorIHBwVGVzdE1UR0QgdCA9IG1hcE1fIChwdXRT dHJMbiAuIHNob3cpICh0ZXN0TVRHRCB0KQorIAorIAorIC0tIFdlIGNvdWxkIHJl YWQgdGhlIGNhciBzcGVjaWZpY2F0aW9uIGZyb20gc3RhbmRhcmQgaW5wdXQuCisg bWFpbiA9IHBwVGVzdE1UR0QgMjAwMApCaW5hcnkgZmlsZXMgYWZycC0wLjQub3Jp Zy9zcmMvLkRTX1N0b3JlIGFuZCBhZnJwLTAuNC9zcmMvLkRTX1N0b3JlIGRpZmZl cgpkaWZmIC1jck4gYWZycC0wLjQub3JpZy9zcmMvQUZSUFV0aWxpdGllcy5ocyBh ZnJwLTAuNC9zcmMvQUZSUFV0aWxpdGllcy5ocwoqKiogYWZycC0wLjQub3JpZy9z cmMvQUZSUFV0aWxpdGllcy5ocwkyMDA0LTAzLTIzIDA3OjQ4OjU1LjAwMDAwMDAw MCArMDkwMAotLS0gYWZycC0wLjQvc3JjL0FGUlBVdGlsaXRpZXMuaHMJMjAwNS0w OS0wMSAxNDo0NjoyNy4wMDAwMDAwMDAgKzA5MDAKKioqKioqKioqKioqKioqCioq KiAzMiw0MiAqKioqCiAgCiAgCiAgbW9kdWxlIEFGUlBVdGlsaXRpZXMgKAotIC0t IEdlbmVyYWwgYXJyb3cgdXRpbGl0aWVzCi0gICAgIChePj4pLAkJLS0gOjogQXJy b3cgYSA9PiAoYiAtPiBjKSAtPiBhIGMgZCAtPiBhIGIgZAotICAgICAoPj5eKSwJ CS0tIDo6IEFycm93IGEgPT4gYSBiIGMgLT4gKGMgLT4gZCkgLT4gYSBiIGQKLSAg ICAgKF48PCksCQktLSA6OiBBcnJvdyBhID0+IChjIC0+IGQpIC0+IGEgYiBjIC0+ IGEgYiBkIAotICAgICAoPDxeKSwJCS0tIDo6IEFycm93IGEgPT4gYSBjIGQgLT4g KGIgLT4gYykgLT4gYSBiIGQKICAKICAtLSBMaWZ0aW5ncwogICAgICBhcnIyLAkJ LS0gOjogQXJyb3cgYSA9PiAoYi0+Yy0+ZCkgLT4gYSAoYixjKSBkCi0tLSAzMiwz NyAtLS0tCioqKioqKioqKioqKioqKgoqKiogODksMTE4ICoqKioKICBpbXBvcnQg QUZSUERpYWdub3N0aWNzCiAgaW1wb3J0IEFGUlAKICAKLSAKLSBpbmZpeHIgMSBe PDwsIF4+PgotIGluZml4bCAxIDw8XiwgPj5eCiAgaW5maXhyIDAgYGZieWAKICAK ICAKLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAtLSBHZW5lcmFs IGFycm93IHV0aWxpdGllcwotIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIAotIChePj4pIDo6IEFycm93IGEgPT4gKGIgLT4gYykgLT4gYSBjIGQgLT4g YSBiIGQKLSBmIF4+PiBhID0gYXJyIGYgPj4+IGEKLSAKLSAoPj5eKSA6OiBBcnJv dyBhID0+IGEgYiBjIC0+IChjIC0+IGQpIC0+IGEgYiBkCi0gYSA+Pl4gZiA9IGEg Pj4+IGFyciBmCi0gCi0gCi0gKF48PCkgOjogQXJyb3cgYSA9PiAoYyAtPiBkKSAt PiBhIGIgYyAtPiBhIGIgZCAKLSBmIF48PCBhID0gYXJyIGYgPDw8IGEKLSAKLSAK LSAoPDxeKSA6OiBBcnJvdyBhID0+IGEgYyBkIC0+IChiIC0+IGMpIC0+IGEgYiBk Ci0gYSA8PF4gZiA9IGEgPDw8IGFyciBmCi0gCiAgCiAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgLS0gTGlmdGluZ3MKLS0tIDg0LDkyIC0tLS0K ------------8NMe1y7a3JWjW88kpgenSG Content-Disposition: attachment; filename=wxfruit.diff Content-Type: application/octet-stream; name=wxfruit.diff Content-Transfer-Encoding: Base64 QmluYXJ5IGZpbGVzIHd4ZnJ1aXQtMC4xLm9yaWcvLkRTX1N0b3JlIGFuZCB3eGZy dWl0LTAuMS8uRFNfU3RvcmUgZGlmZmVyCmRpZmYgLWNyIHd4ZnJ1aXQtMC4xLm9y aWcvV1hGcnVpdC5ocyB3eGZydWl0LTAuMS9XWEZydWl0LmhzCioqKiB3eGZydWl0 LTAuMS5vcmlnL1dYRnJ1aXQuaHMJMjAwNC0wNC0zMCAxNTozMTo1Ni4wMDAwMDAw MDAgKzA5MDAKLS0tIHd4ZnJ1aXQtMC4xL1dYRnJ1aXQuaHMJMjAwNS0wNy0xOSAx Mjo0NTowMi4wMDAwMDAwMDAgKzA5MDAKKioqKioqKioqKioqKioqCioqKiAxMywy MCAqKioqCiAgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5VSS5XWENvcmUgYXMg V1hDb3JlDQogIGltcG9ydCBBRlJQDQogIGltcG9ydCBBRlJQVXRpbGl0aWVzDQog IA0KISBpbXBvcnQgSU9SZWYNCiAgaW1wb3J0IFN5c3RlbS5UaW1lDQogIA0KICAN Ci0tLSAxMywyMSAtLS0tCiAgaW1wb3J0IHF1YWxpZmllZCBHcmFwaGljcy5VSS5X WENvcmUgYXMgV1hDb3JlDQogIGltcG9ydCBBRlJQDQogIGltcG9ydCBBRlJQVXRp bGl0aWVzDQorIGltcG9ydCBDb250cm9sLkFycm93DQogIA0KISBpbXBvcnQgRGF0 YS5JT1JlZg0KICBpbXBvcnQgU3lzdGVtLlRpbWUNCiAgDQogIA0KZGlmZiAtY3Ig d3hmcnVpdC0wLjEub3JpZy9wYWRkbGUuaHMgd3hmcnVpdC0wLjEvcGFkZGxlLmhz CioqKiB3eGZydWl0LTAuMS5vcmlnL3BhZGRsZS5ocwkyMDA0LTA0LTMwIDE1OjMx OjU2LjAwMDAwMDAwMCArMDkwMAotLS0gd3hmcnVpdC0wLjEvcGFkZGxlLmhzCTIw MDUtMDEtMjAgMTM6NTM6MDcuMDAwMDAwMDAwICswOTAwCioqKioqKioqKioqKioq KgoqKiogMTksMzMgKioqKgogIGJnID0gd3hXaXRoQ29sb3IgV1gud2hpdGUgd3hm aWxsDQogIA0KICB3YWxscyA6OiBXWFBpY3R1cmUNCiEgd2FsbHMgPSBsZXQgdXBw ZXIgPSB3eFBpY0ZpbGwgKHd4cmVjdCAoV1gucmVjdCAoV1gucG9pbnQgMTAgMTAp IChXWC5zaXplIDIwMCAxMCkpKQ0KISAgICAgICAgICAgICBsZWZ0ID0gd3hQaWNG aWxsICh3eHJlY3QgKFdYLnJlY3QgKFdYLnBvaW50IDEwIDEwKSAoV1guc2l6ZSAx MCAyMDApKSkNCiEgICAgICAgICAgICAgcmlnaHQgPSB3eFBpY0ZpbGwgKHd4cmVj dCAoV1gucmVjdCAoV1gucG9pbnQgMjAwIDEwKSAoV1guc2l6ZSAxMCAyMDApKSkN CiAgICAgICAgICBpbiB3eFdpdGhDb2xvciBXWC5yZWQgKHVwcGVyIGB3eFBpY092 ZXJgIGxlZnQgYHd4UGljT3ZlcmAgcmlnaHQpDQogIA0KICBwYWRkbGUgOjogSW50 IC0+IFdYLlJlY3QNCiEgcGFkZGxlIHhwb3MgPSBXWC5yZWN0IChXWC5Qb2ludCAo eHBvcyAtIDI1KSAyMDApIChXWC5zaXplIDUwIDEwKQ0KICANCiEgZ2FtZUJveCA9 IFdYLnNpemUgMjE1IDIxNQ0KICANCiAgLS0gVGhlIGdhbWUgc2NyZWVuOiB0YWtl cyBzaWduYWxzIGZvciB0aGUgdmVsb2NpdHkgb2YgdGhlDQogIC0tIGJhbGwgYW5k IHRoZSBjdXJyZW50IG1vdXNlIHBvc2l0aW9uOyBvdXRwdXRzIGEgcGljdHVyZQ0K LS0tIDE5LDMzIC0tLS0KICBiZyA9IHd4V2l0aENvbG9yIFdYLndoaXRlIHd4Zmls bA0KICANCiAgd2FsbHMgOjogV1hQaWN0dXJlDQohIHdhbGxzID0gbGV0IHVwcGVy ID0gd3hQaWNGaWxsICh3eHJlY3QgKFdYLnJlY3QgKFdYLnBvaW50IDEwIDEwKSAo V1guc3ogMjAwIDEwKSkpDQohICAgICAgICAgICAgIGxlZnQgPSB3eFBpY0ZpbGwg KHd4cmVjdCAoV1gucmVjdCAoV1gucG9pbnQgMTAgMTApIChXWC5zeiAxMCAyMDAp KSkNCiEgICAgICAgICAgICAgcmlnaHQgPSB3eFBpY0ZpbGwgKHd4cmVjdCAoV1gu cmVjdCAoV1gucG9pbnQgMjAwIDEwKSAoV1guc3ogMTAgMjAwKSkpDQogICAgICAg ICAgaW4gd3hXaXRoQ29sb3IgV1gucmVkICh1cHBlciBgd3hQaWNPdmVyYCBsZWZ0 IGB3eFBpY092ZXJgIHJpZ2h0KQ0KICANCiAgcGFkZGxlIDo6IEludCAtPiBXWC5S ZWN0DQohIHBhZGRsZSB4cG9zID0gV1gucmVjdCAoV1guUG9pbnQgKHhwb3MgLSAy NSkgMjAwKSAoV1guc3ogNTAgMTApDQogIA0KISBnYW1lQm94ID0gV1guc3ogMjE1 IDIxNQ0KICANCiAgLS0gVGhlIGdhbWUgc2NyZWVuOiB0YWtlcyBzaWduYWxzIGZv ciB0aGUgdmVsb2NpdHkgb2YgdGhlDQogIC0tIGJhbGwgYW5kIHRoZSBjdXJyZW50 IG1vdXNlIHBvc2l0aW9uOyBvdXRwdXRzIGEgcGljdHVyZQ0KKioqKioqKioqKioq KioqCioqKiAzOSw0NSAqKioqCiAgICAgICAgbGV0IHhwb3MgPSAzMCArIHhpDQog ICAgICAgIGxldCB5cG9zID0gMzAgKyB5aQ0KICAgICAgICBsZXQgYmFsbFMgPSBX WC5yZWN0IChXWC5wb2ludCAocm91bmQgKHhwb3MgLSAxMi41KSkgKHJvdW5kICh5 cG9zIC0gMTIuNSkpKQ0KISAgICAgICAgICAgICAgICAgICAgICAgICAgIChXWC5z aXplIDI1IDI1KQ0KICAgICAgICBsZXQgYmFsbFBpY1MgPSB3eFdpdGhDb2xvciBX WC55ZWxsb3cgJCB3eFBpY0ZpbGwgJCB3eGVsbGlwc2UgYmFsbFMNCiAgICAgICAg eGJvdW5jZSA8LSBlZGdlIC08ICgoeHBvcyA+IDE3NSkgfHwgKHhwb3MgPCA0NSkp DQogICAgICAgIHlib3VuY2UgPC0gZWRnZSAtPCAoKHlwb3MgPCA0NSkgfHwgaGl0 UGFkZGxlKQ0KLS0tIDM5LDQ1IC0tLS0KICAgICAgICBsZXQgeHBvcyA9IDMwICsg eGkNCiAgICAgICAgbGV0IHlwb3MgPSAzMCArIHlpDQogICAgICAgIGxldCBiYWxs UyA9IFdYLnJlY3QgKFdYLnBvaW50IChyb3VuZCAoeHBvcyAtIDEyLjUpKSAocm91 bmQgKHlwb3MgLSAxMi41KSkpDQohICAgICAgICAgICAgICAgICAgICAgICAgICAg KFdYLnN6IDI1IDI1KQ0KICAgICAgICBsZXQgYmFsbFBpY1MgPSB3eFdpdGhDb2xv ciBXWC55ZWxsb3cgJCB3eFBpY0ZpbGwgJCB3eGVsbGlwc2UgYmFsbFMNCiAgICAg ICAgeGJvdW5jZSA8LSBlZGdlIC08ICgoeHBvcyA+IDE3NSkgfHwgKHhwb3MgPCA0 NSkpDQogICAgICAgIHlib3VuY2UgPC0gZWRnZSAtPCAoKHlwb3MgPCA0NSkgfHwg aGl0UGFkZGxlKQ0K ------------8NMe1y7a3JWjW88kpgenSG--